Merge "Scroll-down after click accessiblity button" into main
diff --git a/aconfig/Android.bp b/aconfig/Android.bp
index f485869..eb9a6b4 100644
--- a/aconfig/Android.bp
+++ b/aconfig/Android.bp
@@ -6,17 +6,7 @@
name: "aconfig_settings_flags",
package: "com.android.settings.flags",
srcs: [
- "settings_accessibility_flag_declarations.aconfig",
- "settings_connecteddevice_flag_declarations.aconfig",
- "settings_development_flag_declarations.aconfig",
- "settings_globalintl_flag_declarations.aconfig",
- "settings_experience_flag_declarations.aconfig",
- "settings_notification_flag_declarations.aconfig",
- "settings_onboarding_experience_flag_declarations.aconfig",
- "settings_telephony_flag_declarations.aconfig",
- "settings_biometrics_integration_declarations.aconfig",
- "settings_voice_activation_apps_flag_declarations.aconfig",
- "settings_biometrics_framework_flag_declarations.aconfig",
+ "*.aconfig",
],
}
diff --git a/aconfig/settings_panel_flag_declarations.aconfig b/aconfig/settings_panel_flag_declarations.aconfig
new file mode 100644
index 0000000..10eb655
--- /dev/null
+++ b/aconfig/settings_panel_flag_declarations.aconfig
@@ -0,0 +1,8 @@
+package: "com.android.settings.flags"
+
+flag {
+ name: "enable_volume_plus_quick_settings"
+ namespace: "pixel_cross_device_control"
+ description: "Gates whether to enable VolumePlus quick settings panel."
+ bug: "309052662"
+}
diff --git a/res/drawable/ic_settings_force_stop.xml b/res/drawable/ic_settings_force_stop.xml
index eda6079..4385b3e 100644
--- a/res/drawable/ic_settings_force_stop.xml
+++ b/res/drawable/ic_settings_force_stop.xml
@@ -1,5 +1,5 @@
<!--
- Copyright (C) 2018 The Android Open Source Project
+ 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.
@@ -17,15 +17,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
- android:viewportWidth="24"
- android:viewportHeight="24">
+ android:viewportWidth="960"
+ android:viewportHeight="960">
<path
android:fillColor="#FF000000"
- android:pathData="M12,5.99L19.53,19H4.47L12,5.99M12,2L1,21h22L12,2L12,2z"/>
- <path
- android:fillColor="#FF000000"
- android:pathData="M13,16l-2,0l0,2l2,0l0,-2z"/>
- <path
- android:fillColor="#FF000000"
- android:pathData="M13,10l-2,0l0,4l2,0l0,-4z"/>
+ android:pathData="M480,680Q497,680 508.5,668.5Q520,657 520,640Q520,623 508.5,611.5Q497,600 480,600Q463,600 451.5,611.5Q440,623 440,640Q440,657 451.5,668.5Q463,680 480,680ZM440,520L520,520L520,280L440,280L440,520ZM330,840L120,630L120,330L330,120L630,120L840,330L840,630L630,840L330,840ZM364,760L596,760L760,596L760,364L596,200L364,200L200,364L200,596L364,760ZM480,480L480,480L480,480L480,480L480,480L480,480L480,480L480,480L480,480Z" />
</vector>
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
index 075c0bd..4212a8c 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -135,7 +135,14 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"Stilus"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"Oudiodeling"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"Deel oudio"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"Oproepe en alarms"</string>
+ <!-- no translation found for audio_sharing_streams_category_title (862958129650324581) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_pref_title (4636293245167657721) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_title (8269455097512153101) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_qr_code_summary (4231875597377863735) -->
<skip />
<string name="date_and_time" msgid="1788358029823431692">"Datum en tyd"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"Instaanbediener"</string>
@@ -540,24 +547,15 @@
<string name="private_space_title" msgid="7078627930195569767">"Privaat ruimte"</string>
<string name="private_space_summary" msgid="8237652417163408001">"Versteek apps in ’n privaat vouer"</string>
<string name="private_space_one_lock_title" msgid="7306547190751832568">"Ontsluit met skermslot"</string>
- <!-- no translation found for private_space_hide_title (8687034008994037610) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_title (972581369094289386) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_summary (1052569521186403642) -->
- <skip />
- <!-- no translation found for privatespace_access_header (982809349769470185) -->
- <skip />
- <!-- no translation found for privatespace_search_description (983837656432484282) -->
- <skip />
- <!-- no translation found for privatespace_tap_tile_description (4146608898639668340) -->
- <skip />
- <!-- no translation found for privatespace_unlock_description (4132755357482447360) -->
- <skip />
- <!-- no translation found for privatespace_hide_off_summary (7227778747159633671) -->
- <skip />
- <!-- no translation found for privatespace_hide_on_summary (6136704537527640183) -->
- <skip />
+ <string name="private_space_hide_title" msgid="8687034008994037610">"Versteek as dit gesluit is"</string>
+ <string name="privatespace_hide_page_title" msgid="972581369094289386">"Versteek Privaat Ruimte as dit gesluit is"</string>
+ <string name="privatespace_hide_page_summary" msgid="1052569521186403642">"Jy kan Privaat Ruimte op jou appslys versteek as jy nie wil hê ander mense moet weet dis op jou toestel nie"</string>
+ <string name="privatespace_access_header" msgid="982809349769470185">"Kry toegang tot Privaat Ruimte wanneer dit versteek is"</string>
+ <string name="privatespace_search_description" msgid="983837656432484282">"Soek na “Privaat Ruimte” in die soekbalk"</string>
+ <string name="privatespace_tap_tile_description" msgid="4146608898639668340">"Tik op die Privaat Ruimte-teël"</string>
+ <string name="privatespace_unlock_description" msgid="4132755357482447360">"Ontsluit jou Privaat Ruimte"</string>
+ <string name="privatespace_hide_off_summary" msgid="7227778747159633671">"Af"</string>
+ <string name="privatespace_hide_on_summary" msgid="6136704537527640183">"Aan"</string>
<string name="private_space_category_system" msgid="1286843321867285700">"Stelsel"</string>
<string name="private_space_create_title" msgid="47273568884806726">"Skep privaat ruimte"</string>
<string name="private_space_delete_title" msgid="3075645119800272800">"Vee privaat ruimte uit"</string>
@@ -570,54 +568,30 @@
<string name="no_device_lock_summary" msgid="7653477413589207824">"Stel ’n skermslot op dié toestel om Privaat Ruimte te gebruik."</string>
<string name="no_device_lock_action_label" msgid="2640487005629001288">"Stel skermslot"</string>
<string name="no_device_lock_cancel" msgid="4412602160321228863">"Kanselleer"</string>
- <!-- no translation found for privatespace_cancel_label (362351004019511784) -->
- <skip />
- <!-- no translation found for privatespace_setup_button_label (3696372546231047258) -->
- <skip />
- <!-- no translation found for privatespace_setup_title (177623114624330394) -->
- <skip />
- <!-- no translation found for privatespace_hide_apps_summary (4016518749055602268) -->
- <skip />
- <!-- no translation found for privatespace_how_title (8794102046435526065) -->
- <skip />
- <!-- no translation found for privatespace_access_bottom_text (1075244097441349030) -->
- <skip />
- <!-- no translation found for privatespace_protected_lock_text (7320604832432017423) -->
- <skip />
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_cancel_label" msgid="362351004019511784">"Kanselleer"</string>
+ <string name="privatespace_setup_button_label" msgid="3696372546231047258">"Stel op"</string>
+ <string name="privatespace_setup_title" msgid="177623114624330394">"Stel Privaat Ruimte op"</string>
+ <string name="privatespace_hide_apps_summary" msgid="4016518749055602268">"Versteek privaat apps in ’n veilige ruimte waartoe net jy toegang het"</string>
+ <string name="privatespace_how_title" msgid="8794102046435526065">"Hoe dit werk"</string>
+ <string name="privatespace_access_bottom_text" msgid="1075244097441349030">"Jy kan van die onderkant van jou appslys af toegang tot Privaat Ruimte kry"</string>
+ <string name="privatespace_protected_lock_text" msgid="7320604832432017423">"Apps in Privaat Ruimte word deur ’n slot beskerm"</string>
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"Kennisgewings vanaf apps in Privaat Ruimte word versteek as dit gesluit is"</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"Privaat Ruimte-apps sal nie in toestemmingbestuurder, privaatheidkontroleskerm en ander instellings verskyn wanneer Privaat Ruimte gesluit is nie"</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"Stel tans Privaat Ruimte op …"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"Privaat Ruimte word deur ’n slot beskerm"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"Gebruiksinligting vir Privaat Ruimte-apps is versteek wanneer dit gesluit is"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"Verkry toegang tot Privaat Ruimte vanaf jou applysinskrywing"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"Kon nie Privaat Ruimte opstel nie"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"Probeer nou weer, of kom later terug"</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"Probeer weer"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"Wil jy skermslot gebruik om te ontsluit?"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"Jy kan Privaat Ruimte ontsluit net soos jy jou toestel ontsluit, of ’n ander slot kies"</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"Gebruik skermslot"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"Kies nuwe slot"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"Gereed!"</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"Swiep van die onderkant van jou tuisskerm af op, en rollees dan af om toegang tot Privaat Ruimte te kry"</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"Klaar"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"Rollees af om toegang to Privaat Ruimte te kry"</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"Jy kan tot <xliff:g id="COUNT">%d</xliff:g> vingerafdrukke byvoeg"</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"Jy het die maksimum aantal vingerafdrukke bygevoeg"</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"Kan nie nog vingerafdrukke byvoeg nie"</string>
@@ -1135,8 +1109,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"Hou aan om apps te gebruik wanneer gevou"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"Gladde Vertoning"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"Verhoog die herlaaitempo vir sommige inhoud outomaties na <xliff:g id="ID_1">%1$d</xliff:g> Hz. Verhoog batterygebruik."</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"Dwing na hoogste herlaaikoers"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"Hoogste herlaaikoers vir verbeterde raaksensitiwiteit en animasiegehalte. Verhoog batterygebruik."</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"Skermaandag"</string>
@@ -1372,6 +1345,8 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"Gemeenskaplike instellings"</string>
<string name="apn_settings" msgid="4295467389400441299">"Toegangspuntname"</string>
<string name="apn_edit" msgid="2003683641840248741">"Redigeer toegangspunt"</string>
+ <!-- no translation found for apn_add (9069613192201630934) -->
+ <skip />
<string name="apn_not_set" msgid="8246646433109750293">"Nie gestel nie"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"Nie gestel nie"</string>
<string name="apn_name" msgid="6677695784108157953">"Naam"</string>
@@ -2006,12 +1981,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"Gebruik toeganklikheidknoppie om oop te maak"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"Hou volumesleutels om oop te maak"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"Tripeltik op skerm om oop te maak"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"Tweevinger- tripeltik op skerm om oop te maak"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"Gebruik gebaar om oop te maak"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"Gebruik toeganklikheidsgebaar"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"Tik op die toeganklikheidknoppie <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> onderaan jou skerm om hierdie kenmerk te gebruik.\n\nRaak en hou die toeganklikheidknoppie om tussen kenmerke te wissel."</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"Tik op die toeganklikheidknoppie op jou skerm om hierdie kenmerke te gebruik."</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"Druk en hou albei volumesleutels om hierdie kenmerk te gebruik."</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"Tripeltik enige plek op jou skerm om vergroting te begin en te stop."</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"Tripeltik met twee vingers enige plek op jou skerm om vergroting te begin en te stop."</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"Swiep met 2 vingers van die onderkant van die skerm af op om hierdie kenmerk te gebruik.\n\nSwiep met 2 vingers op en hou om tussen kenmerke te wissel."</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"Swiep met 3 vingers van die onderkant van die skerm af op om hierdie kenmerk te gebruik.\n\nSwiep met 3 vingers op en hou om tussen kenmerke te wissel."</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"Swiep met 2 vingers van die onderkant van die skerm af op om \'n toeganklikheidkenmerk te gebruik.\n\nSwiep met 2 vingers op en hou om tussen kenmerke te wissel."</string>
@@ -2033,12 +2010,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"Hou volumesleutels in"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"hou volumesleutels"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"Druk en hou albei volumesleutels"</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"Tweevinger- tripeltik op skerm"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"tweevinger- tripeltik op skerm"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"Tik vinnig {0,number,integer} keer op die skerm met twee vingers"</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"Tik 3 keer op skerm"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"tripeltik op skerm"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"Tik {0,number,integer} keer vinnig op skerm. Hierdie kortpad kan jou toestel stadiger maak"</string>
@@ -2336,6 +2310,10 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"As jy agtergrondaktiwiteit vir \'n program beperk, kan dit verkeerd werk"</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"Hierdie program is nie gestel om batterykrag te optimeer nie en daarom kan jy dit nie beperk nie.\n\nOm die program te beperk, moet jy eers batterykrag-optimering aanskakel."</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"Bestuur batterygebruik"</string>
+ <!-- no translation found for manager_battery_usage_allow_background_usage_title (6294649996820358852) -->
+ <skip />
+ <!-- no translation found for manager_battery_usage_allow_background_usage_summary (8021153755201340819) -->
+ <skip />
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"Onbeperk"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"Geoptimeer"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"Beperk"</string>
@@ -3846,6 +3824,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"Laat toegang toe om alle lêers te bestuur"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"Laat hierdie program toe om alle lêers op hierdie toestel of enige gekoppelde bergingvolumes te lees, te wysig en uit te vee. Indien toestemming verleen word, kan die program sonder jou uitdruklike medewete by lêers ingaan."</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"Kan by alle lêers ingaan"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"Volskermkennisgewings"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"Laat volskermkennisgewings van hierdie app af toe"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"Laat hierdie app toe om kennisgewings te wys wat die volle skerm beslaan wanneer die toestel gesluit is. Apps kan dit gebruik om wekkers, inkomende oproepe en ander dringende kennisgewings uit te lig."</string>
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
index 131b95a..a28293c 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -135,8 +135,11 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"ብሮስፌ"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"ኦዲዮ ማጋራት"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"ኦዲዮ ያጋሩ"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
- <skip />
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"ጥሪዎች እና ማንቂያ ደወሎች"</string>
+ <string name="audio_sharing_streams_category_title" msgid="862958129650324581">"ከLE ኦዲዮ ዥረት ጋር ያገናኙ"</string>
+ <string name="audio_sharing_streams_pref_title" msgid="4636293245167657721">"በአቅራቢያ ያሉ ኦዲዮ ዥረቶች"</string>
+ <string name="audio_sharing_streams_title" msgid="8269455097512153101">"ኦዲዮ ዥረቶች"</string>
+ <string name="audio_sharing_streams_qr_code_summary" msgid="4231875597377863735">"QR ኮድ በመጠቀም ከኦዲዮ ዥረት ጋር ያገናኙ"</string>
<string name="date_and_time" msgid="1788358029823431692">"ቀን እና ሰዓት"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"ተኪ"</string>
<string name="proxy_clear_text" msgid="6529658759984031149">"አጽዳ"</string>
@@ -540,24 +543,15 @@
<string name="private_space_title" msgid="7078627930195569767">"የግል ቦታ"</string>
<string name="private_space_summary" msgid="8237652417163408001">"በግል አቃፊ ውስጥ መተግበሪያዎችን ይደብቁ"</string>
<string name="private_space_one_lock_title" msgid="7306547190751832568">"ማያ ገጽ መቆለፊያን በመጠቀም ክፈት"</string>
- <!-- no translation found for private_space_hide_title (8687034008994037610) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_title (972581369094289386) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_summary (1052569521186403642) -->
- <skip />
- <!-- no translation found for privatespace_access_header (982809349769470185) -->
- <skip />
- <!-- no translation found for privatespace_search_description (983837656432484282) -->
- <skip />
- <!-- no translation found for privatespace_tap_tile_description (4146608898639668340) -->
- <skip />
- <!-- no translation found for privatespace_unlock_description (4132755357482447360) -->
- <skip />
- <!-- no translation found for privatespace_hide_off_summary (7227778747159633671) -->
- <skip />
- <!-- no translation found for privatespace_hide_on_summary (6136704537527640183) -->
- <skip />
+ <string name="private_space_hide_title" msgid="8687034008994037610">"በሚቆለፍበት ጊዜ ደብቅ"</string>
+ <string name="privatespace_hide_page_title" msgid="972581369094289386">"በሚቆለፍበት ጊዜ የግል ቦታን ይደብቁ"</string>
+ <string name="privatespace_hide_page_summary" msgid="1052569521186403642">"ሌሎች ሰዎች የግል ቦታ መሣሪያዎ ላይ እንደበራ ማወቃቸውን ለማቆም ከመተግበሪያዎ ዝርዝር ሊደብቁት ይችላሉ"</string>
+ <string name="privatespace_access_header" msgid="982809349769470185">"በሚደበቅበት ጊዜ የግል ቦታን ይድረሱ"</string>
+ <string name="privatespace_search_description" msgid="983837656432484282">"በፍለጋ አሞሌው ውስጥ «የግል ቦታ» ብለው ይፈልጉ"</string>
+ <string name="privatespace_tap_tile_description" msgid="4146608898639668340">"የግል ቦታ ሰቁን መታ ያድርጉ"</string>
+ <string name="privatespace_unlock_description" msgid="4132755357482447360">"የግል ቦታዎን ይክፈቱ"</string>
+ <string name="privatespace_hide_off_summary" msgid="7227778747159633671">"ጠፍቷል"</string>
+ <string name="privatespace_hide_on_summary" msgid="6136704537527640183">"በርቷል"</string>
<string name="private_space_category_system" msgid="1286843321867285700">"ሥርዓት"</string>
<string name="private_space_create_title" msgid="47273568884806726">"የግል ቦታን ፍጠር"</string>
<string name="private_space_delete_title" msgid="3075645119800272800">"የግል ቦታን ሰርዝ"</string>
@@ -570,54 +564,30 @@
<string name="no_device_lock_summary" msgid="7653477413589207824">"የግል ቦታን ለመጠቀም በዚህ መሣሪያ ላይ ማያ ገፅ መቆለፊያን ያቀናብሩ።"</string>
<string name="no_device_lock_action_label" msgid="2640487005629001288">"ማያ ገፅ መቆለፊያን አቀናብር"</string>
<string name="no_device_lock_cancel" msgid="4412602160321228863">"ይቅር"</string>
- <!-- no translation found for privatespace_cancel_label (362351004019511784) -->
- <skip />
- <!-- no translation found for privatespace_setup_button_label (3696372546231047258) -->
- <skip />
- <!-- no translation found for privatespace_setup_title (177623114624330394) -->
- <skip />
- <!-- no translation found for privatespace_hide_apps_summary (4016518749055602268) -->
- <skip />
- <!-- no translation found for privatespace_how_title (8794102046435526065) -->
- <skip />
- <!-- no translation found for privatespace_access_bottom_text (1075244097441349030) -->
- <skip />
- <!-- no translation found for privatespace_protected_lock_text (7320604832432017423) -->
- <skip />
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_cancel_label" msgid="362351004019511784">"ይቅር"</string>
+ <string name="privatespace_setup_button_label" msgid="3696372546231047258">"አዋቅር"</string>
+ <string name="privatespace_setup_title" msgid="177623114624330394">"የግል ቦታን ያዋቅሩ"</string>
+ <string name="privatespace_hide_apps_summary" msgid="4016518749055602268">"የግል መተግበሪያዎችን እርስዎ ብቻ መደረስ የሚችሉበት ደህንነቱ የተጠበቀ ቦታ ውስጥ ይደብቁ"</string>
+ <string name="privatespace_how_title" msgid="8794102046435526065">"እንዴት እንደሚሠራ"</string>
+ <string name="privatespace_access_bottom_text" msgid="1075244097441349030">"ከመተግበሪያዎ ዝርዝር የታችኛው ክፍል ላይ የግል ቦታን መድረስ ይችላሉ"</string>
+ <string name="privatespace_protected_lock_text" msgid="7320604832432017423">"በግል ቦታ ውስጥ ያሉ መተግበሪያዎች በቁልፍ ጥበቃ ይደረግላቸዋል"</string>
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"በሚቆለፍበት ጊዜ የግል ቦታ ውስጥ ካሉ መተግበሪያዎች የሚመጡ ማሳወቂያዎች ይደበቃሉ"</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"የግል ቦታ በሚቆለፍበት ጊዜ የግል ቦታ መተግበሪያዎች በፈቃድ አስተዳዳሪ፣ የግላዊነት ዳሽቦርድ እና ሌሎች ቅንብሮች ውስጥ አይታዩም"</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"የግል ቦታን በማዋቀር ላይ…"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"የግል ቦታ በቁልፍ ይጠበቃል"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"ሲቆለፍ የአጠቃቀም መረጃ ለግል ቦታ መተግበሪያዎች የተደበቀ ነው"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"ከእርስዎ የመተግበሪያዎች ዝርዝር የግል ቦታን ይድረሱ"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"የግል ቦታን ማዋቀር አልተቻለም"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"አሁን እንደገና ይሞክሩ ወይም በኋላ ተመልሰው ይምጡ"</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"እንደገና ይሞክሩ"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"ለመክፈት ማያ ገፅ መቆለፊያን ይጠቀሙ?"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"የግል ቦታ መሣሪያዎን በሚቆልፉበት ተመሳሳይ መንገድ መክፈት ወይም የተለየ ቁልፍ መምረጥ ይችላሉ"</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"ማያ ገፅ መቆለፊያን ይጠቀሙ"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"አዲስ ቁልፍ ይምረጡ"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"ሁሉም ዝግጁ!"</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"የግል ቦታን ለመድረስ ከመነሻ ማያ ገፅዎ ግርጌ ወደላይ ያንሸራትቱ፣ ከዚያም ወደታች ያሸብልሉ"</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"ተከናውኗል"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"የግል ቦታን ለመድረስ ወደ ታች ያሸብልሉ"</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"እስከ <xliff:g id="COUNT">%d</xliff:g> የሚደርሱ የጣት አሻራዎችን ማከል ይችላሉ"</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"የሚፈቀደውን ከፍተኛ የጣት አሻራ ብዛት አክለዋል"</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"ተጨማሪ የጣት አሻራዎችን ማከል አይቻልም"</string>
@@ -1135,8 +1105,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"መተግበሪያዎችን በእጠፍ ላይ መጠቀም ቀጥል"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"ለስላሳ ማሳያ"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"ለአንዳንድ ይዘት የዕድሳት ፍጥነቱን በራስ-ሰር እስከ <xliff:g id="ID_1">%1$d</xliff:g> ኸርዝ ድረስ ያሳድገዋል። የባትሪ አጠቃቀምን ይጨምራል።"</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"ከፍተኛ የእድሳት ፍጥነትን አስገድድ"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"ለተሻሻለ የንክኪ አጸፋ እና የእነማ ጥራት በጣም ከፍተኛው ዕድሳት ፍጥነት የባትሪ ፍጆታን ይጨምራል።"</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"የማያ ገፅ ትኩረት"</string>
@@ -1372,6 +1341,7 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"የጋራ ቅንብሮች"</string>
<string name="apn_settings" msgid="4295467389400441299">"APNs"</string>
<string name="apn_edit" msgid="2003683641840248741">"የመዳረሻ ነጥብ አርትዕ"</string>
+ <string name="apn_add" msgid="9069613192201630934">"የመዳረሻ ነጥብ ያክሉ"</string>
<string name="apn_not_set" msgid="8246646433109750293">"አልተዘጋጀም"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"አልተቀናበረም"</string>
<string name="apn_name" msgid="6677695784108157953">"ስም"</string>
@@ -2006,12 +1976,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"ለመክፈት የተደራሽነት አዝራር ይጠቀሙ"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"ለመክፈት የድምጽ ቁልፎችን ይያዙ"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"ለመክፈት ማያ ገጹን ሦስት ጊዜ መታ ያድርጉ"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"ለመክፈት ማያ ገፅን በሁለት ጣት ሦስት ጊዜ መታ ያድርጉ"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"ለመክፈት የጣት ምልክትን ይጠቀሙ"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"የተደራሽነት እጅ ምልክትን ይጠቀሙ"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"ይህን ባህሪ ለመጠቀም በማያ ገጽዎ ግርጌ ላይ ያለውን የተደራሽነት አዝራሩን <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> መታ ያድርጉ።\n\nባህሪያት መካከል ለመቀያየር የተደራሽነት አዝራሩን ነክተው ይያዙ።"</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"ይህን ባህሪ ለመጠቀም በማያ ገጽዎ ላይ ያለውን የተደራሽነት አዝራር መታ ያድርጉ።"</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"ይህን ባህሪ ለመጠቀም ሁለቱንም የድምጽ ቁልፎች ተጭነው ይያዙ።"</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"ማጉላትን ለመጀመር እና ለማቆም በማያ ገጽዎ ላይ ማንኛውም ቦታ ላይ ሦስት ጊዜ መታ ያድርጉ።"</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"ማጉላት ለመጀመር እና ለማቆም በማያ ገፅዎ ማንኛውም ቦታ ላይ በሁለት ጣቶች ሦስት ጊዜ መታ ያድርጉ።"</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"ይህን ባህሪ ለመጠቀም በ2 ጣቶች ከማያ ገጹ ግርጌ ወደ ላይ ይጥረጉ።\n\nበባሕሪያት መካከል ለመቀያየር በ2 ጣቶች ወደ ላይ ጠርገው ይያዙ።"</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"ይህን ባህሪ ለመጠቀም በ3 ጣቶች ከማያ ገጹ ግርጌ ወደ ላይ ይጥረጉ።\n\nበባሕሪያት መካከል ለመቀያየር በ3 ጣቶች ወደ ላይ ጠርገው ይያዙ።"</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"የተደራሽነት ባሕሪን ለመጠቀም በ2 ጣቶች ከማያ ገጹ ግርጌ ወደ ላይ ይጥረጉ።\n\nበባሕሪያት መካከል ለመቀያየር በ2 ጣቶች ወደ ላይ ጠርገው ይያዙ።"</string>
@@ -2033,12 +2005,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"የድምፅ አዝራሮችን ይያዙ"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"የድምጽ አዝራሮችን ይያዙ"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"ሁለቱንም የድምፅ ቁልፎች ተጭነው ይያዙ"</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"ማያ ገፅን በሁለት ጣት ሦስት ጊዜ መታ ያድርጉ"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"ማያ ገፅን በሁለት ጣት ሦስት ጊዜ መታ ያድርጉ"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"ማያ ገፅን {0፣ቁጥር፣ኢንቲጀር} ጊዜያት በሁለት ጣቶች በፍጥነት መታ ያድርጉ"</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"ማያ ገጽን ሦስቴ መታ ያድርጉ"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"ማያ ገጽን ሦስቴ መታ ያድርጉ"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"ማያ ገጹን በፍጥነት {0,number,integer} ጊዜዎችን መታ ያድርጉ። ይህ አቋራጭ መሣሪያዎን ሊያንቀራፍፈው ይችላል።"</string>
@@ -2336,6 +2305,8 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"የአንድ መተግበሪያ የጀርባ እንቅስቃሴን ከገደቡ ያልተገባ ባህሪ ሊያሳይ ይችላል"</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"ይህ መተግበሪያ ባትሪን ለማላቅ አልተቀናበረም፣ ሊገድቡት አይችሉም።\n\nመተግበሪያውን ለመገደብ፣ የባትሪ ማላቅን በመጀመሪያ ያብሩ።"</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"የባትሪ አጠቃቀምን ያስተዳድሩ"</string>
+ <string name="manager_battery_usage_allow_background_usage_title" msgid="6294649996820358852">"የዳራ አጠቃቀምን ይፍቀዱ"</string>
+ <string name="manager_battery_usage_allow_background_usage_summary" msgid="8021153755201340819">"ለእውነተኛ ጊዜ ዝማኔዎች ያንቁ፣ ባትሪን ለመቆጠብ ያሰናክሉ"</string>
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"ያልተገደበ"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"እንዲተባ ተደርጓል"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"ተገድቧል"</string>
@@ -3846,6 +3817,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"ሁሉንም ፋይሎች ለማስተዳደር መዳረሻ ፍቀድ"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"ይህ መተግበሪያ በዚህ መሣሪያ ላይ ወይም በማናቸውም የተገናኙ የማከማቻ መጠኖች ላይ ሁሉንም ፋይሎች እንዲያነብ፣ እንዲያሻሽል እና እንዲሰርዝ ይፍቀዱ። ፈቃድ ከተሰጠ፣ መተግበሪያ ያለ የእርስዎ ግልፅ የሆነ ዕውቀት ፋይሎችን መድረስ ይችላል።"</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"ሁሉንም ፋይሎች መድረስ ይችላል"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"የሙሉ ገጽ ዕይታ ማሳወቂያዎች"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"ከዚህ መተግበሪያ የሙሉ ገጽ ዕይታ ማሳወቂያዎችን ይፍቀዱ"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"ይህ መተግበሪያ መሣሪያው በሚቆለፍበት ጊዜ ሙሉ ገጽ ዕይታውን የሚይዙ ማሳወቂያዎችን እንዲያሳይ ይፍቀዱለት። መተግበሪያዎች ማንቂያዎችን፣ ገቢ ጥሪዎችን ወይም ሌሎች አስቸኳይ ማሳወቂያዎችን ለማድመቅ እነዚህን ሊጠቀሙ ይችላሉ።"</string>
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index 86a955f..655dcdd 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -135,7 +135,14 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"قلم الشاشة"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"مشاركة الصوت"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"مشاركة الصوت"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"المكالمات والمنبّهات"</string>
+ <!-- no translation found for audio_sharing_streams_category_title (862958129650324581) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_pref_title (4636293245167657721) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_title (8269455097512153101) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_qr_code_summary (4231875597377863735) -->
<skip />
<string name="date_and_time" msgid="1788358029823431692">"التاريخ والوقت"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"الخادم الوكيل"</string>
@@ -540,24 +547,15 @@
<string name="private_space_title" msgid="7078627930195569767">"مساحة خاصة"</string>
<string name="private_space_summary" msgid="8237652417163408001">"إخفاء التطبيقات في مجلّد خاص"</string>
<string name="private_space_one_lock_title" msgid="7306547190751832568">"فتح القفل باستخدام قفل الشاشة"</string>
- <!-- no translation found for private_space_hide_title (8687034008994037610) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_title (972581369094289386) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_summary (1052569521186403642) -->
- <skip />
- <!-- no translation found for privatespace_access_header (982809349769470185) -->
- <skip />
- <!-- no translation found for privatespace_search_description (983837656432484282) -->
- <skip />
- <!-- no translation found for privatespace_tap_tile_description (4146608898639668340) -->
- <skip />
- <!-- no translation found for privatespace_unlock_description (4132755357482447360) -->
- <skip />
- <!-- no translation found for privatespace_hide_off_summary (7227778747159633671) -->
- <skip />
- <!-- no translation found for privatespace_hide_on_summary (6136704537527640183) -->
- <skip />
+ <string name="private_space_hide_title" msgid="8687034008994037610">"الإخفاء بعد القفل"</string>
+ <string name="privatespace_hide_page_title" msgid="972581369094289386">"إخفاء المساحة الخاصة إذا كانت مقفلة"</string>
+ <string name="privatespace_hide_page_summary" msgid="1052569521186403642">"يمكنك إخفاء المساحة الخاصة من قائمة التطبيقات على جهازك لمنع وصول الآخرين إليها."</string>
+ <string name="privatespace_access_header" msgid="982809349769470185">"الوصول إلى المساحة الخاصة بعد إخفائها"</string>
+ <string name="privatespace_search_description" msgid="983837656432484282">"ابحث عن \"المساحة الخاصة\" في شريط البحث."</string>
+ <string name="privatespace_tap_tile_description" msgid="4146608898639668340">"انقر على مربّع \"المساحة الخاصة\"."</string>
+ <string name="privatespace_unlock_description" msgid="4132755357482447360">"افتح قفل المساحة الخاصة."</string>
+ <string name="privatespace_hide_off_summary" msgid="7227778747159633671">"غير مفعَّل"</string>
+ <string name="privatespace_hide_on_summary" msgid="6136704537527640183">"مفعَّل"</string>
<string name="private_space_category_system" msgid="1286843321867285700">"النظام"</string>
<string name="private_space_create_title" msgid="47273568884806726">"إنشاء مساحة خاصة"</string>
<string name="private_space_delete_title" msgid="3075645119800272800">"حذف المساحة الخاصة"</string>
@@ -570,54 +568,30 @@
<string name="no_device_lock_summary" msgid="7653477413589207824">"لاستخدام \"مساحة خاصة\"، يجب ضبط قفل شاشة على هذا الجهاز."</string>
<string name="no_device_lock_action_label" msgid="2640487005629001288">"ضبط قفل الشاشة"</string>
<string name="no_device_lock_cancel" msgid="4412602160321228863">"إلغاء"</string>
- <!-- no translation found for privatespace_cancel_label (362351004019511784) -->
- <skip />
- <!-- no translation found for privatespace_setup_button_label (3696372546231047258) -->
- <skip />
- <!-- no translation found for privatespace_setup_title (177623114624330394) -->
- <skip />
- <!-- no translation found for privatespace_hide_apps_summary (4016518749055602268) -->
- <skip />
- <!-- no translation found for privatespace_how_title (8794102046435526065) -->
- <skip />
- <!-- no translation found for privatespace_access_bottom_text (1075244097441349030) -->
- <skip />
- <!-- no translation found for privatespace_protected_lock_text (7320604832432017423) -->
- <skip />
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_cancel_label" msgid="362351004019511784">"إلغاء"</string>
+ <string name="privatespace_setup_button_label" msgid="3696372546231047258">"إعداد"</string>
+ <string name="privatespace_setup_title" msgid="177623114624330394">"بدء إعداد المساحة الخاصة"</string>
+ <string name="privatespace_hide_apps_summary" msgid="4016518749055602268">"يمكنك إخفاء التطبيقات الخاصة في مكان آمن لا يمكن لأحد غيرك الوصول إليه."</string>
+ <string name="privatespace_how_title" msgid="8794102046435526065">"طريقة العمل"</string>
+ <string name="privatespace_access_bottom_text" msgid="1075244097441349030">"يمكنك الوصول إلى المساحة الخاصة من أسفل قائمة التطبيقات."</string>
+ <string name="privatespace_protected_lock_text" msgid="7320604832432017423">"تتم حماية التطبيقات في المساحة الخاصة بقفل."</string>
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"يتم إخفاء الإشعارات الواردة من تطبيقات المساحة الخاصة إذا كانت المساحة مقفلة."</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"لن تظهر تطبيقات المساحة الخاصة في \"إدارة الأذونات\" أو \"لوحة بيانات الخصوصية\" أو الإعدادات الأخرى إذا كانت المساحة الخاصة مقفلة."</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"جارٍ إعداد المساحة الخاصة…"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"المساحة الخاصة محمية بقفل"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"معلومات الاستخدام المتعلّقة بتطبيقات المساحة الخاصة لا تظهر عندما تكون المساحة مقفلة"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"الوصول إلى المساحة الخاصة من قائمة التطبيقات"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"تعذُّر إعداد المساحة الخاصة"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"يُرجى إعادة المحاولة الآن أو إعدادها لاحقًا."</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"إعادة المحاولة"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"أتريد استخدام قفل الشاشة لفتح قفل المساحة الخاصة؟"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"يمكنك فتح قفل المساحة الخاصة بالطريقة نفسها المستخدَمة لفتح قفل هاتفك، أو اختيار طريقة أخرى."</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"استخدام قفل الشاشة"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"اختيار قفل جديد"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"اكتملت عملية الإعداد"</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"للوصول إلى المساحة الخاصة، مرِّر سريعًا من أسفل الشاشة الرئيسية إلى أعلاها ثم انتقِل للأسفل."</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"تم"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"انتقِل للأسفل للوصول إلى المساحة الخاصة."</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"يمكنك إضافة ما يصل إلى <xliff:g id="COUNT">%d</xliff:g> بصمات إصبع"</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"لقد أضفت الحد الأقصى لعدد بصمات الإصبع"</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"يتعذر إضافة مزيد من بصمات الإصبع"</string>
@@ -1047,9 +1021,9 @@
<string name="wifi_hotspot_speed_2g_summary" msgid="6930273933810520155">"السرعات الأبطأ: متوافقة مع معظم الأجهزة"</string>
<string name="wifi_hotspot_speed_5g" msgid="4058116867148848395">"5 غيغاهرتز"</string>
<string name="wifi_hotspot_speed_5g_summary" msgid="562987935924535694">"السرعات العالية: متوافقة مع أجهزة كثرة"</string>
- <string name="wifi_hotspot_speed_2g_5g" msgid="9192756255938408285">"2.4 و5 غيغاهرتز"</string>
+ <string name="wifi_hotspot_speed_2g_5g" msgid="9192756255938408285">"٢.٤ و٥ غيغاهرتز"</string>
<string name="wifi_hotspot_speed_2g_5g_summary" msgid="8104575293617700173">"السرعات العالية: نقطة الاتصال المزدوجة النطاق هذه متوافقة مع معظم الأجهزة."</string>
- <string name="wifi_hotspot_speed_6g" msgid="3787697484862730500">"6 غيغاهرتز"</string>
+ <string name="wifi_hotspot_speed_6g" msgid="3787697484862730500">"٦ غيغاهرتز"</string>
<string name="wifi_hotspot_speed_6g_summary" msgid="8675262219242174548">"السرعات الأعلى: متوافقة مع أجهزة قليلة"</string>
<string name="wifi_hotspot_speed_summary_unavailable" msgid="7276080644693388756">"لا تتوفّر هذه السرعة في بلدك أو منطقتك."</string>
<string name="wifi_hotspot_speed_footer" msgid="8846939503916795002">"إذا كان معدّل التردد المفضّل لديك غير متاح، قد تستخدم نقطة الاتصال معدّل تردد مختلف. قد تتغير إعدادات أمان نقطة الاتصال في حال تغيير معدّل التردد."</string>
@@ -1135,8 +1109,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"مواصلة استخدام التطبيقات أثناء طيّ الهاتف"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"العرض السلس"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"تعمل هذه الميزة على رفع معدّل التحديث في الشاشة إلى <xliff:g id="ID_1">%1$d</xliff:g> هرتز لبعض أنواع المحتوى، علمًا بأنّ ذلك يؤدي زيادة استخدام البطارية."</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"فرض معدل إعادة التحميل الأقصى"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"أعلى معدل إعادة تحميل لتحسين استجابة اللمس وجودة الصور المتحركة. يؤدي هذا إلى زيادة استخدام البطارية."</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"استعراض الشاشة"</string>
@@ -1372,6 +1345,8 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"الإعدادات المشتركة"</string>
<string name="apn_settings" msgid="4295467389400441299">"أسماء نقاط الوصول"</string>
<string name="apn_edit" msgid="2003683641840248741">"تعديل نقطة الوصول"</string>
+ <!-- no translation found for apn_add (9069613192201630934) -->
+ <skip />
<string name="apn_not_set" msgid="8246646433109750293">"لم يتم الضبط."</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"لم يتم ضبط أي قيمة."</string>
<string name="apn_name" msgid="6677695784108157953">"الاسم"</string>
@@ -2006,12 +1981,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"الفتح باستخدام زر \"أدوات تسهيل الاستخدام\""</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"اضغط مع الاستمرار على مفتاحَي مستوى الصوت لتفعيل الميزة"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"انقر على الشاشة ثلاث مرات لتفعيل الميزة"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"النقر ثلاث مرّات بإصبعين لفتح الشاشة"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"استخدام إيماءة للفتح"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"استخدام إيماءة تسهيل الاستخدام"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"لاستخدام هذه الميزة، انقر على زر أدوات تمكين الوصول <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> في أسفل الشاشة.\n\nللتبديل بين الميزات، انقر مع الاستمرار على زر أدوات تمكين الوصول."</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"لاستخدام هذه الميزة، انقر على زر أدوات تسهيل الاستخدام في شاشتك."</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"لاستخدام هذه الميزة، اضغط مع الاستمرار على كلا مفتاحَي مستوى الصوت."</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"لبدء استخدام ميزة التكبير أو إيقافها، انقر ثلاث مرات في أي مكان على الشاشة."</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"لبدء استخدام ميزة التكبير أو إيقافها، انقر ثلاث مرّات في أي مكان على الشاشة باستخدام إصبعين."</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"لاستخدام هذه الميزة، مرِّر سريعًا من أسفل الشاشة للأعلى بإصبعين.\n\nللتبديل بين الميزات، مرِّر سريعًا للأعلى بإصبعين مع تثبيتهما."</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"لاستخدام إحدى ميزات إمكانية الوصول، مرّر سريعًا من أسفل الشاشة للأعلى بثلاثة أصابع.\n\nللتبديل بين الميزات، مرّر سريعًا للأعلى بثلاثة أصابع مع تثبيتها."</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"لاستخدام إحدى ميزات إمكانية الوصول، مرّر سريعًا من أسفل الشاشة للأعلى بإصبعين.\n\nللتبديل بين الميزات، مرّر سريعًا للأعلى بإصبعين مع تثبيتهما."</string>
@@ -2033,12 +2010,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"الضغط مع الاستمرار على مفتاحَي التحكم في مستوى الصوت"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"الضغط مع الاستمرار على مفتاحَي التحكّم في مستوى الصوت"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"اضغط مع الاستمرار على مفتاحَي مستوى الصوت."</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"النقر ثلاث مرّات على الشاشة بإصبعين"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"النقر ثلاث مرّات على الشاشة بإصبعين"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"انقر سريعًا على الشاشة {0,number,integer} مرّات باستخدام إصبعين."</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"النقر ثلاث مرات على الشاشة"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"النقر ثلاث مرات على الشاشة"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"انقر على الشاشة {0,number,integer} مرة. يمكن أن يؤدي استخدام هذا الاختصار إلى إبطاء الجهاز."</string>
@@ -2336,6 +2310,10 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"قد يتأثر أداء أحد التطبيقات سلبًا في حالة وضع حد لنشاطه في الخلفية"</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"نظرًا لعدم تعيين هذا التطبيق للعمل على تحسين البطارية، فلا يمكنك تقييده.\n\nلتقييد التطبيق، فعِّل ميزة تحسين البطارية أولاً."</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"إدارة استخدام البطارية"</string>
+ <!-- no translation found for manager_battery_usage_allow_background_usage_title (6294649996820358852) -->
+ <skip />
+ <!-- no translation found for manager_battery_usage_allow_background_usage_summary (8021153755201340819) -->
+ <skip />
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"الاستخدام غير المحدّد بقيود"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"الاستخدام المحسَّن"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"الاستخدام المحدّد بقيود"</string>
@@ -3846,6 +3824,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"السماح بالوصول إلى كل الملفات لإدارتها"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"يسمح هذا الإعداد لهذا التطبيق بقراءة كل الملفات وتعديلها وحذفها من هذا الجهاز أو أي وحدات تخزين متصلة. في حال تفعيله، يمكن أن يصل التطبيق إلى الملفات بدون إعلامك بذلك."</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"يمكن الوصول إلى كل الملفات"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"الإشعارات بملء الشاشة"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"السماح بعرض الإشعارات من هذا التطبيق بملء الشاشة"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"يتم السماح لهذا التطبيق بعرض إشعارات بملء الشاشة عندما يكون الجهاز مُقفَلاً. قد تستخدم التطبيقات هذا الإذن لإبراز المنبّهات أو المكالمات الواردة أو غيرها من الإشعارات العاجلة."</string>
diff --git a/res/values-as/strings.xml b/res/values-as/strings.xml
index f0d20db..74222d1 100644
--- a/res/values-as/strings.xml
+++ b/res/values-as/strings.xml
@@ -25,8 +25,8 @@
<string name="device_info_default" msgid="1406619232867343310">"অজ্ঞাত"</string>
<string name="device_info_protected_single_press" msgid="3810785480060743677">"তথ্য দেখুৱাবলৈ টিপক"</string>
<string name="show_dev_countdown" msgid="2936506773086395069">"{count,plural, =1{আপুনি এতিয়া এগৰাকী বিকাশকৰ্তা হোৱাৰ পৰা # টা পদক্ষেপ দূৰত আছে।}one{আপুনি এতিয়া এগৰাকী বিকাশকৰ্তা হোৱাৰ পৰা # টা পদক্ষেপ দূৰত আছে।}other{আপুনি এতিয়া এগৰাকী বিকাশকৰ্তা হোৱাৰ পৰা # টা পদক্ষেপ দূৰত আছে।}}"</string>
- <string name="show_dev_on" msgid="2840850085134853754">"এতিয়া আপুনি এজন বিকাশকৰ্তা!"</string>
- <string name="show_dev_already" msgid="7041756429707644630">"কোনো প্ৰয়োজন নাই, আপুনি ইতিমধ্যে এজন ডেভেলপাৰ।"</string>
+ <string name="show_dev_on" msgid="2840850085134853754">"এতিয়া আপুনি এগৰাকী বিকাশকৰ্তা!"</string>
+ <string name="show_dev_already" msgid="7041756429707644630">"কোনো প্ৰয়োজন নাই, আপুনি ইতিমধ্যে এগৰাকী ডেভেলপাৰ।"</string>
<string name="dev_settings_disabled_warning" msgid="6971867026249671244">"অনুগ্ৰহ কৰি প্ৰথমে বিকাশকৰ্তাৰ বিকল্পসমূহ সক্ষম কৰক।"</string>
<string name="header_category_system" msgid="1665516346845259058">"ছিষ্টেম"</string>
<string name="radioInfo_service_in" msgid="9088637745836646271">"সেৱাত আছে"</string>
@@ -135,7 +135,14 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"ষ্টাইলাছ"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"অডিঅ’ শ্বেয়াৰ কৰা"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"অডিঅ’ শ্বেয়াৰ কৰক"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"কল আৰু এলাৰ্ম"</string>
+ <!-- no translation found for audio_sharing_streams_category_title (862958129650324581) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_pref_title (4636293245167657721) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_title (8269455097512153101) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_qr_code_summary (4231875597377863735) -->
<skip />
<string name="date_and_time" msgid="1788358029823431692">"তাৰিখ আৰু সময়"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"প্ৰক্সি"</string>
@@ -540,24 +547,15 @@
<string name="private_space_title" msgid="7078627930195569767">"ব্যক্তিগত স্পে’চ"</string>
<string name="private_space_summary" msgid="8237652417163408001">"এপ্সমূহ এটা ব্যক্তিগত ফ’ল্ডাৰত লুকুৱাওক"</string>
<string name="private_space_one_lock_title" msgid="7306547190751832568">"স্ক্ৰীন লক ব্যৱহাৰ কৰি আনলক কৰক"</string>
- <!-- no translation found for private_space_hide_title (8687034008994037610) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_title (972581369094289386) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_summary (1052569521186403642) -->
- <skip />
- <!-- no translation found for privatespace_access_header (982809349769470185) -->
- <skip />
- <!-- no translation found for privatespace_search_description (983837656432484282) -->
- <skip />
- <!-- no translation found for privatespace_tap_tile_description (4146608898639668340) -->
- <skip />
- <!-- no translation found for privatespace_unlock_description (4132755357482447360) -->
- <skip />
- <!-- no translation found for privatespace_hide_off_summary (7227778747159633671) -->
- <skip />
- <!-- no translation found for privatespace_hide_on_summary (6136704537527640183) -->
- <skip />
+ <string name="private_space_hide_title" msgid="8687034008994037610">"লক হৈ থকাৰ সময়ত লুকুৱাওক"</string>
+ <string name="privatespace_hide_page_title" msgid="972581369094289386">"লক কৰি থোৱা অৱস্থাত ব্যক্তিগত স্পে’চ লুকুৱাওক"</string>
+ <string name="privatespace_hide_page_summary" msgid="1052569521186403642">"আপোনাৰ ডিভাইচত ব্যক্তিগত স্পে’চ অন হৈ থকাৰ বিষয়ে অন্য লোকে জনাটো বন্ধ কৰিবলৈ, আপুনি এইটো আপোনাৰ এপৰ সূচীৰ পৰা লুকুৱাব পাৰে"</string>
+ <string name="privatespace_access_header" msgid="982809349769470185">"লুকুৱাই ৰখা অৱস্থাত ব্যক্তিগত স্পে’চ এক্সেছ কৰক"</string>
+ <string name="privatespace_search_description" msgid="983837656432484282">"সন্ধানৰ বাৰত \'ব্যক্তিগত স্পে’চ\' সন্ধান কৰক"</string>
+ <string name="privatespace_tap_tile_description" msgid="4146608898639668340">"ব্যক্তিগত স্পে’চ টাইলত টিপক"</string>
+ <string name="privatespace_unlock_description" msgid="4132755357482447360">"ব্যক্তিগত স্পে’চ আনলক কৰক"</string>
+ <string name="privatespace_hide_off_summary" msgid="7227778747159633671">"অফ আছে"</string>
+ <string name="privatespace_hide_on_summary" msgid="6136704537527640183">"অন আছে"</string>
<string name="private_space_category_system" msgid="1286843321867285700">"ছিষ্টেম"</string>
<string name="private_space_create_title" msgid="47273568884806726">"ব্যক্তিগত স্পে’চ সৃষ্টি কৰক"</string>
<string name="private_space_delete_title" msgid="3075645119800272800">"ব্যক্তিগত স্পে’চ মচক"</string>
@@ -570,54 +568,30 @@
<string name="no_device_lock_summary" msgid="7653477413589207824">"ব্যক্তিগত স্পে’চ ব্যৱহাৰ কৰিবলৈ ডিভাইচত স্ক্ৰীন লক ছেট কৰক।"</string>
<string name="no_device_lock_action_label" msgid="2640487005629001288">"স্ক্ৰীন লক ছেট কৰক"</string>
<string name="no_device_lock_cancel" msgid="4412602160321228863">"বাতিল কৰক"</string>
- <!-- no translation found for privatespace_cancel_label (362351004019511784) -->
- <skip />
- <!-- no translation found for privatespace_setup_button_label (3696372546231047258) -->
- <skip />
- <!-- no translation found for privatespace_setup_title (177623114624330394) -->
- <skip />
- <!-- no translation found for privatespace_hide_apps_summary (4016518749055602268) -->
- <skip />
- <!-- no translation found for privatespace_how_title (8794102046435526065) -->
- <skip />
- <!-- no translation found for privatespace_access_bottom_text (1075244097441349030) -->
- <skip />
- <!-- no translation found for privatespace_protected_lock_text (7320604832432017423) -->
- <skip />
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_cancel_label" msgid="362351004019511784">"বাতিল কৰক"</string>
+ <string name="privatespace_setup_button_label" msgid="3696372546231047258">"ছেট আপ কৰক"</string>
+ <string name="privatespace_setup_title" msgid="177623114624330394">"ব্যক্তিগত স্পে’চ ছেট আপ কৰক"</string>
+ <string name="privatespace_hide_apps_summary" msgid="4016518749055602268">"কেৱল আপুনি এক্সেছ কৰিব পৰা এটা সুৰক্ষিত স্পে\'চত ব্যক্তিগত এপ্ লুকুৱাওক"</string>
+ <string name="privatespace_how_title" msgid="8794102046435526065">"এইটোৱে কেনেকৈ কাম কৰে"</string>
+ <string name="privatespace_access_bottom_text" msgid="1075244097441349030">"আপুনি আপোনাৰ এপৰ সূচীখনৰ একেবাৰে তলৰ পৰা ব্যক্তিগত স্পে’চ এক্সেছ কৰিব পাৰে"</string>
+ <string name="privatespace_protected_lock_text" msgid="7320604832432017423">"ব্যক্তিগত স্পে’চত থকা এপ্ এটা লকেৰে সুৰক্ষিত কৰা হয়"</string>
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"ব্যক্তিগত স্পে’চ লক হৈ থাকিলে তাত থকা এপৰ জাননী লুকুওৱা হয়"</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"ব্যক্তিগত স্পে’চ লক হৈ থাকিলে ব্যক্তিগত স্পে’চত থকা এপ্সমূহ অনুমতিৰ পৰিচালক, গোপনীয়তাৰ ডেশ্বব’ৰ্ড আৰু অন্য ছেটিঙত প্ৰদৰ্শিত নহ’ব"</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"ব্যক্তিগত স্পে’চ ছেট আপ কৰি থকা হৈছে…"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"ব্যক্তিগত স্পে’চ এটা লকৰ দ্বাৰা সুৰক্ষিত কৰা হয়"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"ব্যক্তিগত স্পে’চত থকা এপৰ ব্যৱহাৰৰ তথ্য লুকুওৱা হয়, যদিহে এইটো লক হৈ থাকে"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"আপোনাৰ এপৰ সূচীৰ পৰা ব্যক্তিগত স্পে’চ এক্সেছ কৰক"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"ব্যক্তিগত স্পে’চ ছেট আপ কৰিব পৰা নগ’ল"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"এতিয়াই পুনৰ চেষ্টা কৰক অথবা পাছত উভতি আহক"</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"পুনৰ চেষ্টা কৰক"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"আনলক কৰিবলৈ স্ক্ৰীন লক ব্যৱহাৰ কৰিবনে?"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"আপুনি আপোনাৰ ডিভাইচটো আনলক কৰিবলৈ ব্যৱহাৰ কৰা একেটা পদ্ধতি ব্যৱহাৰ কৰি ব্যক্তিগত স্পে’চ আনলক কৰিব পাৰে অথবা অন্য কোনো লক বাছনি কৰিব পাৰে"</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"স্ক্ৰীন লক ব্যৱহাৰ কৰক"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"নতুন লক বাছনি কৰক"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"সকলো সাজু!"</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"ব্যক্তিগত স্পে’চ এক্সেছ কৰিবলৈ, আপোনাৰ গৃহ স্ক্ৰীনৰ একেবাৰে তলৰ পৰা ওপৰলৈ ছোৱাইপ কৰক, তাৰ পাছত তললৈ স্ক্ৰ’ল কৰক"</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"কৰা হ’ল"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"ব্যক্তিগত স্পে’চ এক্সেছ কৰিবলৈ তললৈ স্ক্ৰ’ল কৰক"</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"আপুনি <xliff:g id="COUNT">%d</xliff:g> টালৈকে ফিংগাৰপ্ৰিণ্ট যোগ কৰিব পাৰে"</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"আপুনি সৰ্বাধিক সংখ্যক ফিংগাৰপ্ৰিণ্টবোৰ যোগ কৰিছে"</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"আৰু অধিক ফিংগাৰপ্ৰিণ্ট যোগ কৰিব নোৱাৰি"</string>
@@ -1135,8 +1109,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"জপাই থোৱা অৱস্থাত এপ্ ব্যৱহাৰ কৰি থাকক"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"মসৃণ ডিছপ্লে’"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"কিছুমান সমলৰ বাবে ৰিফ্ৰেশ্বৰ হাৰ স্বয়ংক্ৰিয়ভাৱে <xliff:g id="ID_1">%1$d</xliff:g> হাৰ্টজলৈ বঢ়ায়। বেটাৰীৰ ব্যৱহাৰ বৃদ্ধি কৰে।"</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"সৰ্বাধিক ৰিফ্ৰেশ্বৰ হাৰ বলপূৰ্বকভাৱে প্ৰয়োগ কৰক"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"স্পৰ্শৰ উন্নত সংবেদনশীলতা আৰু এনিমেশ্বনৰ গুণগত মানৰ বাবে সৰ্বোচ্চ ৰিফ্ৰেশ্বৰ হাৰ। বেটাৰীৰ ব্যৱহাৰ বৃদ্ধি কৰে।"</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"স্ক্ৰীনৰ সতর্কতা"</string>
@@ -1372,6 +1345,8 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"সম্প্ৰদায়ৰ সৈতে জড়িত ছেটিং"</string>
<string name="apn_settings" msgid="4295467389400441299">"এপিএনসমূহ"</string>
<string name="apn_edit" msgid="2003683641840248741">"এক্সেছ পইণ্ট সম্পাদনা কৰক"</string>
+ <!-- no translation found for apn_add (9069613192201630934) -->
+ <skip />
<string name="apn_not_set" msgid="8246646433109750293">"ছেট কৰা হোৱা নাই"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"ছেট কৰা হোৱা নাই"</string>
<string name="apn_name" msgid="6677695784108157953">"নাম"</string>
@@ -2006,12 +1981,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"খুলিবলৈ সাধ্য সুবিধাৰ বুটাম ব্যৱহাৰ কৰক"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"খুলিবলৈ ভলিউম কীসমূহ টিপি ধৰি থাকক"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"খুলিবলৈ স্ক্ৰীনখনত তিনিবাৰ টিপক"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"খুলিবলৈ দুটা আঙুলিৰে স্ক্ৰীনত তিনিবাৰ টিপা"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"খুলিবলৈ ভংগিমা ব্যৱহাৰ কৰক"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"সাধ্য সুবিধাৰ নিৰ্দেশ ব্যৱহাৰ কৰক"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"এই সুবিধাটো ব্যৱহাৰ কৰিবলৈ, আপোনাৰ স্ক্রীনখনৰ একেবাৰে তলৰ অংশত থকা সাধ্য-সুবিধাৰ বুটামটোত <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> টিপক।\n\nসুবিধাসমূহ সালসলনিকৈ ব্যৱহাৰ কৰিবলৈ সাধ্য-সুবিধাৰ বুটামটো স্পৰ্শ কৰি ধৰি ৰাখক।"</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"এই সুবিধাটো ব্যৱহাৰ কৰিবলৈ আপোনাৰ স্ক্ৰীনত থকা সাধ্য-সুবিধাৰ বুটামটোত টিপক।"</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"এই সুবিধাটো ব্যৱহাৰ কৰিবলৈ, দুয়োটা ভলিউম কী টিপি ধৰি ৰাখক।"</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"বিবৰ্ধন আৰম্ভ কৰিবলৈ আৰু বন্ধ কৰিবলৈ আপোনাৰ স্ক্ৰীনখনৰ যিকোনো অংশত তিনিবাৰ টিপক।"</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"বিবৰ্ধন আৰম্ভ কৰিবলৈ আৰু বন্ধ কৰিবলৈ আপোনাৰ স্ক্ৰীনখনৰ যিকোনো অংশত দুটা আঙুলিৰে তিনিবাৰ টিপক।"</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"এই সুবিধাটো ব্যৱহাৰ কৰিবলৈ, স্ক্রীনখনৰ একেবাৰে তলৰ পৰা ওপৰলৈ ২ টা আঙুলিৰে ছোৱাইপ কৰক।\n\nসুবিধাসমূহ সালসলনিকৈ ব্যৱহাৰ কৰিবলৈ ২ টা আঙুলিৰে ওপৰলৈ ছোৱাইপ কৰি ধৰি ৰাখক।"</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"এই সুবিধাটো ব্যৱহাৰ কৰিবলৈ, স্ক্রীনখনৰ একেবাৰে তলৰ পৰা ওপৰলৈ ৩ টা আঙুলিৰে ছোৱাইপ কৰক।\n\nসুবিধাসমূহ সালসলনিকৈ ব্যৱহাৰ কৰিবলৈ ৩ টা আঙুলিৰে ওপৰলৈ ছোৱাইপ কৰি ধৰি ৰাখক।"</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"কোনো এটা সাধ্য-সুবিধা ব্যৱহাৰ কৰিবলৈ, স্ক্রীনখনৰ একেবাৰে তলৰ পৰা ওপৰলৈ ২ টা আঙুলিৰে ছোৱাইপ কৰক।\n\nসুবিধাসমূহ সালসলনিকৈ ব্যৱহাৰ কৰিবলৈ ২ টা আঙুলিৰে ওপৰলৈ ছোৱাইপ কৰি ধৰি ৰাখক।"</string>
@@ -2033,12 +2010,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"ভলিউম কীসমূহ ধৰি ৰাখক"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"ভলিউম কীসমূহ হেঁচি ধৰি ৰাখক"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"দুয়োটা ভলিউম কী টিপক আৰু হেঁচি ৰাখক"</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"দুটা আঙুলিৰে স্ক্ৰীনত তিনিবাৰ টিপা"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"দুটা আঙুলিৰে স্ক্ৰীনত তিনিবাৰ টিপা"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"দুটা আঙুলিৰে স্ক্ৰীনখনত খৰতকীয়াকৈ {0,number,integer} বাৰ টিপক"</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"স্ক্রীনখনত তিনিবাৰ টিপক"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"স্ক্রীনখনত তিনিবাৰ টিপক"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"স্ক্ৰীনখনত ক্ষিপ্ৰতাৰে {0,number,integer} বাৰ টিপক। এই শ্বৰ্টকাটটোৱে আপোনাৰ ডিভাইচটো লেহেমীয়া কৰিব পাৰে"</string>
@@ -2336,6 +2310,10 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"আপুনি এটা এপৰ নেপথ্য কাৰ্যকলাপ সীমিত কৰিলে ই অস্বাভাৱিক আচৰণ কৰিব পাৰে"</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"যিহেতু এই এপ্টো বেটাৰী অপ্টিমাইজ কৰিবলৈ ছেট কৰি থোৱা হোৱা নাই, সেয়ে ইয়াক আপুনি সীমিত কৰিব নোৱাৰে।\n\nএপ্টো সীমিত কৰিবলৈ প্ৰথমে বেটাৰী অপ্টিমাইজেশ্বন অন কৰক।"</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"বেটাৰীৰ ব্যৱহাৰ পৰিচালনা কৰক"</string>
+ <!-- no translation found for manager_battery_usage_allow_background_usage_title (6294649996820358852) -->
+ <skip />
+ <!-- no translation found for manager_battery_usage_allow_background_usage_summary (8021153755201340819) -->
+ <skip />
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"বাধাহীন"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"অপ্টিমাইজ কৰা"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"সীমিত"</string>
@@ -3846,6 +3824,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"আটাইবোৰ ফাইল পৰিচালনা কৰিবলৈ এক্সেছ দিয়ক"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"এই এপ্টোক এই ডিভাইচটোত অথবা অন্য যিকোনো সংযুক্ত ষ্ট’ৰেজৰ ভলিউমসমূহত আটাইবোৰ ফাইল পঢ়িবলৈ, সংশোধন কৰিবলৈ আৰু মচিবলৈ অনুমতি দিয়ক। যদি অনুমতি দিয়ে, আপোনাৰ নিশ্চিত জ্ঞানৰ অবিহনে এপে ফাইলবোৰ এক্সেছ কৰিব পাৰে।"</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"আটাইবোৰ ফাইল এক্সেছ কৰিব পাৰে"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"সম্পূৰ্ণ স্ক্ৰীনৰ জাননী"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"এই এপ্টোৰ পৰা সম্পূৰ্ণ স্ক্ৰীনৰ জাননীৰ অনুমতি দিয়ক"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"এই এপ্টোক ডিভাইচ লক হৈ থাকোঁতে পূৰ্ণ স্ক্ৰীনত ওলোৱা জাননীসমূহ দেখুওৱাৰ অনুমতি দিয়ক। এপ্সমূহে এইবোৰ এলাৰ্ম, অন্তৰ্গামী কল অথবা অন্য জৰুৰী জাননীসমূহ হাইলাইট কৰিবলৈ ব্যৱহাৰ কৰিব পাৰে।"</string>
diff --git a/res/values-az/strings.xml b/res/values-az/strings.xml
index 068479a..0a9ceb0 100644
--- a/res/values-az/strings.xml
+++ b/res/values-az/strings.xml
@@ -135,7 +135,14 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"Qələm"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"Audio paylaşımı"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"Audio paylaşın"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"Zəng və zəngli saatlar"</string>
+ <!-- no translation found for audio_sharing_streams_category_title (862958129650324581) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_pref_title (4636293245167657721) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_title (8269455097512153101) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_qr_code_summary (4231875597377863735) -->
<skip />
<string name="date_and_time" msgid="1788358029823431692">"Vaxt və tarix"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"Proksi"</string>
@@ -540,24 +547,15 @@
<string name="private_space_title" msgid="7078627930195569767">"Şəxsi yer"</string>
<string name="private_space_summary" msgid="8237652417163408001">"Tətbiqləri şəxsi qovluqda gizlədin"</string>
<string name="private_space_one_lock_title" msgid="7306547190751832568">"Ekran kilidi ilə kiliddən çıxarın"</string>
- <!-- no translation found for private_space_hide_title (8687034008994037610) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_title (972581369094289386) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_summary (1052569521186403642) -->
- <skip />
- <!-- no translation found for privatespace_access_header (982809349769470185) -->
- <skip />
- <!-- no translation found for privatespace_search_description (983837656432484282) -->
- <skip />
- <!-- no translation found for privatespace_tap_tile_description (4146608898639668340) -->
- <skip />
- <!-- no translation found for privatespace_unlock_description (4132755357482447360) -->
- <skip />
- <!-- no translation found for privatespace_hide_off_summary (7227778747159633671) -->
- <skip />
- <!-- no translation found for privatespace_hide_on_summary (6136704537527640183) -->
- <skip />
+ <string name="private_space_hide_title" msgid="8687034008994037610">"Kilidli olduqda gizlədin"</string>
+ <string name="privatespace_hide_page_title" msgid="972581369094289386">"Kilidli olduqda Private Space-i gizlədin"</string>
+ <string name="privatespace_hide_page_summary" msgid="1052569521186403642">"Tətbiqlər siyahısında Private Space-i digərlərindən gizlədin"</string>
+ <string name="privatespace_access_header" msgid="982809349769470185">"Gizli olduqda Private Space-ə giriş"</string>
+ <string name="privatespace_search_description" msgid="983837656432484282">"Axtarış panelində \"Private Space\" axtarın"</string>
+ <string name="privatespace_tap_tile_description" msgid="4146608898639668340">"Private Space mozaikinə toxunun"</string>
+ <string name="privatespace_unlock_description" msgid="4132755357482447360">"Private Space-i kiliddən çıxarın"</string>
+ <string name="privatespace_hide_off_summary" msgid="7227778747159633671">"Deaktiv"</string>
+ <string name="privatespace_hide_on_summary" msgid="6136704537527640183">"Aktiv"</string>
<string name="private_space_category_system" msgid="1286843321867285700">"Sistem"</string>
<string name="private_space_create_title" msgid="47273568884806726">"Şəxsi yer yaradın"</string>
<string name="private_space_delete_title" msgid="3075645119800272800">"Şəxsi yeri silin"</string>
@@ -570,54 +568,30 @@
<string name="no_device_lock_summary" msgid="7653477413589207824">"Cihazda ekran kilidi quraşdırmaqla Məxfi Yeri istifadə edin."</string>
<string name="no_device_lock_action_label" msgid="2640487005629001288">"Ekran kilidi quraşdırın"</string>
<string name="no_device_lock_cancel" msgid="4412602160321228863">"Ləğv edin"</string>
- <!-- no translation found for privatespace_cancel_label (362351004019511784) -->
- <skip />
- <!-- no translation found for privatespace_setup_button_label (3696372546231047258) -->
- <skip />
- <!-- no translation found for privatespace_setup_title (177623114624330394) -->
- <skip />
- <!-- no translation found for privatespace_hide_apps_summary (4016518749055602268) -->
- <skip />
- <!-- no translation found for privatespace_how_title (8794102046435526065) -->
- <skip />
- <!-- no translation found for privatespace_access_bottom_text (1075244097441349030) -->
- <skip />
- <!-- no translation found for privatespace_protected_lock_text (7320604832432017423) -->
- <skip />
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_cancel_label" msgid="362351004019511784">"Ləğv edin"</string>
+ <string name="privatespace_setup_button_label" msgid="3696372546231047258">"Ayarlayın"</string>
+ <string name="privatespace_setup_title" msgid="177623114624330394">"Private Space ayarlayın"</string>
+ <string name="privatespace_hide_apps_summary" msgid="4016518749055602268">"Şəxsi tətbiqləri yalnız sizin daxil ola biləcəyiniz təhlükəsiz yerdə gizlədin"</string>
+ <string name="privatespace_how_title" msgid="8794102046435526065">"Haqqında"</string>
+ <string name="privatespace_access_bottom_text" msgid="1075244097441349030">"Tətbiq siyahısının aşağısından Private Space-ə daxil ola bilərsiniz"</string>
+ <string name="privatespace_protected_lock_text" msgid="7320604832432017423">"Private Space-də tətbiqlər kilid ilə qorunur"</string>
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"Şəxsi məkan kilidlənəndə tətbiq bildirişləri gizlədilir"</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"Şəxsi məkan kilidlənəndə Şəxsi məkan tətbiqləri icazə meneceri, məxfilik paneli və digər ayarlarda görünməyəcək"</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"Şəxsi məkan ayarlanır…"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"Şəxsi məkan kilid ilə qorunur"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"Şəxsi məkan kilidlənəndə tətbiq istifadəsi məlumatları gizlədilir"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"Şəxsi məkana tətbiq siyahınızdan daxil olun"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"Şəxsi məkanı ayarlamaq olmadı"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"Yenidən cəhd edin, yaxud sonra qayıdın"</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"Yenidən sınayın"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"Kilidi açmaq üçün ekran kilidi istifadə edilsin?"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"Şəxsi məkanı cihaz kilidi ilə kiliddən çıxara və ya fərqli kilid seçə bilərsiniz"</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"Ekran kilidi istifadə edin"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"Yeni kilid seçin"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"Hər şey hazırdır!"</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"Şəxsi məkana daxil olmaq üçün əsas ekranın aşağısından yuxarı sürüşdürüb, sonra aşağı sürüşdürün"</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"Hazırdır"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"Şəxsi məkana giriş üçün aşağı sürüşdürün"</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"<xliff:g id="COUNT">%d</xliff:g> ədədə qədər barmaq izi əlavə edə bilərsiniz"</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"Maksimum sayda barmaq izi əlavə etmisiniz"</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"Daha artıq barmaq izi əlavə edilə bilməz"</string>
@@ -1135,8 +1109,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"Qatlandıqda tətbiqlərdən istifadəyə davam edin"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"Rahat Displey"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"Bəzi kontentlər üçün yeniləmə dərəcəsini <xliff:g id="ID_1">%1$d</xliff:g> Hs-ə qədər avtomatik yüksəldir. Batareya istifadəsini artırır."</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"Pik yeniləmə dərəcəsini məcburi tətbiq edin"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"Təzələnmə tezliyini artıraraq sensor həssaslığını və animasiya axıcılığını artırır. Enerji sərfiyyatını artırır."</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"Ekran həssaslığı"</string>
@@ -1372,6 +1345,8 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"Kommunal ayarlar"</string>
<string name="apn_settings" msgid="4295467389400441299">"APN-lər"</string>
<string name="apn_edit" msgid="2003683641840248741">"Giriş nöqtəsinə düzəliş edin"</string>
+ <!-- no translation found for apn_add (9069613192201630934) -->
+ <skip />
<string name="apn_not_set" msgid="8246646433109750293">"Təyin edilməyib"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"Ayarlanmayıb"</string>
<string name="apn_name" msgid="6677695784108157953">"Ad"</string>
@@ -2006,12 +1981,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"Xüsusi imkanlar düyməsini istifadə edin"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"Açmaq üçün səs düymələrini basıb saxlayın"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"Açmaq üçün ekrana üç dəfə toxunun"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"Açmaq üçün ekrana iki barmaqla üç dəfə toxunma"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"Açmaq üçün jestdən istifadə edin"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"Əlçatımlılıq jestindən istifadə edin"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"Bu funksiyanı işlətmək üçün ekranın altındakı xüsusi imkanlar düyməsinə <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> toxunun.\n\nFunksiyadan funksiyaya keçmək üçün xüsusi imkanlar düyməsinə toxunub saxlayın."</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"Bu funksiyanı işlətmək üçün xüsusi imkanlar düyməsinə toxunun."</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"Bu funksiyanı istifadə etmək üçün hər iki səs düyməsini basıb saxlayın."</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"Böyütməni başlatmaq və dayandırmaq üçün ekranda istənilən yerə üç dəfə toxunun."</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"Böyütməni başlatmaq və dayandırmaq üçün ekrana iki barmaqla üç dəfə toxunun."</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"Bu funksiyanı istifadə etmək üçün 2 barmaq ilə ekranın aşağısından yuxarıya doğru sürüşdürün.\n\nFunksiyalar arasında keçid etmək üçün 2 barmaq ilə yuxarıya sürüşdürüb saxlayın."</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"Bu funksiyanı istifadə etmək üçün 3 barmaq ilə ekranın aşağısından yuxarıya doğru sürüşdürün.\n\nFunksiyalar arasında keçid etmək üçün 3 barmaq ilə yuxarıya sürüşdürüb saxlayın."</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"Əlçatımlılıq funksiyasını istifadə etmək üçün 2 barmaq ilə ekranın aşağısından yuxarıya doğru sürüşdürün.\n\nFunksiyalar arasında keçid etmək üçün 2 barmaq ilə yuxarıya sürüşdürüb saxlayın."</string>
@@ -2033,12 +2010,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"Səs düymələrinə basıb saxlayın"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"səs düymələrinə basıb saxlayın"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"Hər iki səs düyməsini basıb saxlayın"</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"İki barmaqla ekrana üç dəfə toxunma"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"iki barmaqla ekrana üç dəfə toxunma"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"Ekrana iki barmaqla {0,number,integer} dəfə cəld toxunun"</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"Ekrana üç dəfə toxunun"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"ekrana üç dəfə toxunun"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"Ekrana {0,number,integer} dəfə cəld toxunun. Bu qısayol cihazınızı yavaşlada bilər"</string>
@@ -2336,6 +2310,10 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"Tətbiqin arxa fon fəaliyyətini məhdudlaşdırsanız, o səhv işləyə bilər"</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"Bu tətbiq üçün enerji qənaəti aktiv deyil.\n\nMəhdudiyyət tətbiq etmək üçün onu aktivləşdirin."</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"Batareya istifadəsini idarə edin"</string>
+ <!-- no translation found for manager_battery_usage_allow_background_usage_title (6294649996820358852) -->
+ <skip />
+ <!-- no translation found for manager_battery_usage_allow_background_usage_summary (8021153755201340819) -->
+ <skip />
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"Məhdudiyyətsiz"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"Optimal"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"Məhdud"</string>
@@ -3846,6 +3824,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"Bütün faylları idarə etmək üçün giriş icazəsi verin"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"Bu tətbiqə bu cihazda və ya qoşulmuş cihazların yaddaşındakı bütün faylları oxumaq, dəyişmək və silmək icazəsi verin. İcazə verilsə, tətbiq xəbəriniz olmadan fayllara daxil ola bilər."</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"Bütün fayllara daxil ola bilər"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"Tam ekran bildirişləri"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"Bu tətbiqin tam ekran bildirişlərinə icazə verin"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"Bu tətbiqə cihaz kilidli olduqda tam ekranı tutan bildirişlər göstərmək icazəsi verin. Bunlar zəngli saat, gələn zəng və ya digər təcili bildirişlər üçündür."</string>
diff --git a/res/values-b+sr+Latn/strings.xml b/res/values-b+sr+Latn/strings.xml
index e81da68..8b50ca1 100644
--- a/res/values-b+sr+Latn/strings.xml
+++ b/res/values-b+sr+Latn/strings.xml
@@ -135,8 +135,11 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"Pisaljka"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"Deljenje zvuka"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"Deli zvuk"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
- <skip />
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"Pozivi i alarmi"</string>
+ <string name="audio_sharing_streams_category_title" msgid="862958129650324581">"Povežite se sa LE audio strimom"</string>
+ <string name="audio_sharing_streams_pref_title" msgid="4636293245167657721">"Audio strimovi u blizini"</string>
+ <string name="audio_sharing_streams_title" msgid="8269455097512153101">"Audio strimovi"</string>
+ <string name="audio_sharing_streams_qr_code_summary" msgid="4231875597377863735">"Povežite se sa audio strimom pomoću QR koda"</string>
<string name="date_and_time" msgid="1788358029823431692">"Datum i vreme"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"Proksi"</string>
<string name="proxy_clear_text" msgid="6529658759984031149">"Obriši"</string>
@@ -540,24 +543,15 @@
<string name="private_space_title" msgid="7078627930195569767">"Privatni prostor"</string>
<string name="private_space_summary" msgid="8237652417163408001">"Sakrij aplikacije u privatnom folderu"</string>
<string name="private_space_one_lock_title" msgid="7306547190751832568">"Otključaj pomoću otključavanja ekrana"</string>
- <!-- no translation found for private_space_hide_title (8687034008994037610) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_title (972581369094289386) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_summary (1052569521186403642) -->
- <skip />
- <!-- no translation found for privatespace_access_header (982809349769470185) -->
- <skip />
- <!-- no translation found for privatespace_search_description (983837656432484282) -->
- <skip />
- <!-- no translation found for privatespace_tap_tile_description (4146608898639668340) -->
- <skip />
- <!-- no translation found for privatespace_unlock_description (4132755357482447360) -->
- <skip />
- <!-- no translation found for privatespace_hide_off_summary (7227778747159633671) -->
- <skip />
- <!-- no translation found for privatespace_hide_on_summary (6136704537527640183) -->
- <skip />
+ <string name="private_space_hide_title" msgid="8687034008994037610">"Sakrij kad je zaključan"</string>
+ <string name="privatespace_hide_page_title" msgid="972581369094289386">"Sakrijte privatni prostor kad je zaključan"</string>
+ <string name="privatespace_hide_page_summary" msgid="1052569521186403642">"Privatni prostor možete da sakrijete sa liste aplikacija"</string>
+ <string name="privatespace_access_header" msgid="982809349769470185">"Pristupite privatnom prostoru kad je sakriven"</string>
+ <string name="privatespace_search_description" msgid="983837656432484282">"Potražite Privatni prostor na traci za pretragu"</string>
+ <string name="privatespace_tap_tile_description" msgid="4146608898639668340">"Dodirnite pločicu Privatni prostor"</string>
+ <string name="privatespace_unlock_description" msgid="4132755357482447360">"Otključajte privatni prostor"</string>
+ <string name="privatespace_hide_off_summary" msgid="7227778747159633671">"Isključeno"</string>
+ <string name="privatespace_hide_on_summary" msgid="6136704537527640183">"Uključeno"</string>
<string name="private_space_category_system" msgid="1286843321867285700">"Sistem"</string>
<string name="private_space_create_title" msgid="47273568884806726">"Napravi privatni prostor"</string>
<string name="private_space_delete_title" msgid="3075645119800272800">"Izbriši privatni prostor"</string>
@@ -570,54 +564,30 @@
<string name="no_device_lock_summary" msgid="7653477413589207824">"Za privatni prostor podesite zaključavanje ekrana na uređaju."</string>
<string name="no_device_lock_action_label" msgid="2640487005629001288">"Podesi zaključavanje ekrana"</string>
<string name="no_device_lock_cancel" msgid="4412602160321228863">"Otkaži"</string>
- <!-- no translation found for privatespace_cancel_label (362351004019511784) -->
- <skip />
- <!-- no translation found for privatespace_setup_button_label (3696372546231047258) -->
- <skip />
- <!-- no translation found for privatespace_setup_title (177623114624330394) -->
- <skip />
- <!-- no translation found for privatespace_hide_apps_summary (4016518749055602268) -->
- <skip />
- <!-- no translation found for privatespace_how_title (8794102046435526065) -->
- <skip />
- <!-- no translation found for privatespace_access_bottom_text (1075244097441349030) -->
- <skip />
- <!-- no translation found for privatespace_protected_lock_text (7320604832432017423) -->
- <skip />
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_cancel_label" msgid="362351004019511784">"Otkaži"</string>
+ <string name="privatespace_setup_button_label" msgid="3696372546231047258">"Podesi"</string>
+ <string name="privatespace_setup_title" msgid="177623114624330394">"Podesite privatni prostor"</string>
+ <string name="privatespace_hide_apps_summary" msgid="4016518749055602268">"Sakrijte privatne aplikacije u bezbednom prostoru kom samo vi možete da pristupite"</string>
+ <string name="privatespace_how_title" msgid="8794102046435526065">"Princip rada"</string>
+ <string name="privatespace_access_bottom_text" msgid="1075244097441349030">"Privatnom prostoru možete da pristupite sa dna liste aplikacija"</string>
+ <string name="privatespace_protected_lock_text" msgid="7320604832432017423">"Aplikacije u privatnom prostoru su zaključane"</string>
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"Obaveštenja iz aplikacija privatnog prostora su skrivena kad je on zaključan"</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"Aplikacije privatnog prostora neće se pojaviti u menadžeru dozvola, na kontrolnoj tabli za privatnost i u drugim podešavanjima kad je privatni prostor zaključan"</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"Podešava se privatni prostor…"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"Privatni prostor je zaštićen zaključavanjem"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"Informacije o korišćenju za aplikacije iz privatnog prostora su skrivene kada je zaključan"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"Pristupajte privatnom prostoru sa liste aplikacija"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"Podešavanje privatnog prostora nije uspelo"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"Probajte ponovo sada ili se vratite kasnije"</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"Probaj ponovo"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"Želite da otključate pomoću otključavanja ekrana?"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"Možete da otključavate privatni prostor isto kao što otključavate uređaj ili da odaberete drugačiji tip otključavanja"</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"Koristi otključavanje ekrana"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"Odaberi novi tip zaključavanja"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"Gotovo!"</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"Da biste pristupali privatnom prostoru, prevucite nagore od dna početnog ekrana, pa skrolujte nadole"</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"Gotovo"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"Skrolujte nadole da biste pristupali privatnom prostoru"</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"Možete da ih dodate do <xliff:g id="COUNT">%d</xliff:g>"</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"Dodali ste maksimalan broj otisaka prstiju"</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"Ne možete da dodate još otisaka prstiju"</string>
@@ -1135,8 +1105,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"Nastavi sa korišćenjem aplikacija pri preklapanju"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"Tečan prikaz"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"Automatski podiže učestalost osvežavanja do <xliff:g id="ID_1">%1$d</xliff:g> Hz za određeni sadržaj. Povećava potrošnju baterije."</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"Nametni maksimalnu učestalost osvežavanja"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"Najveća učestalost osvežavanja za poboljšan odziv na dodir i kvalitet animacije. Povećava potrošnju baterije."</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"Pažnja ekrana"</string>
@@ -1372,6 +1341,7 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"Zajednička podešavanja"</string>
<string name="apn_settings" msgid="4295467389400441299">"Nazivi pristupnih tačaka"</string>
<string name="apn_edit" msgid="2003683641840248741">"Izmena pristupne tačke"</string>
+ <string name="apn_add" msgid="9069613192201630934">"Dodajte pristupnu tačku"</string>
<string name="apn_not_set" msgid="8246646433109750293">"Nije podešeno"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"Nije podešeno"</string>
<string name="apn_name" msgid="6677695784108157953">"Naziv"</string>
@@ -2006,12 +1976,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"Otvarajte pomoću dugmeta za pristupačnost"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"Zadržite tastere za jačinu zvuka da biste otvorili"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"Triput dodirnite ekran da biste otvorili"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"Dodirnite ekran tri puta pomoću dva prsta da biste otvorili"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"Otvarajte pomoću pokreta"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"Koristite pokret za pristupačnost"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"Da biste koristili ovu funkciju, dodirnite dugme Pristupačnost <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> u dnu ekrana.\n\nDa biste prelazili sa jedne funkcije na drugu, dodirnite i zadržite dugme Pristupačnost."</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"Da biste koristili ovu funkciju, dodirnite dugme Pristupačnost na ekranu."</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"Da biste koristili ovu funkciju, pritisnite i zadržite oba tastera za jačinu zvuka."</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"Da biste pokrenuli i zaustavili uvećanje, triput dodirnite bilo gde na ekranu."</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"Da biste pokrenuli i zaustavili uvećanje, dodirnite tri puta bilo gde na ekranu pomoću dva prsta."</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"Da biste koristili ovu funkciju, prevucite nagore od dna ekrana pomoću 2 prsta.\n\nDa biste prelazili sa jedne funkcije na drugu, prevucite nagore pomoću 2 prsta i zadržite."</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"Da biste koristili ovu funkciju, prevucite nagore od dna ekrana pomoću 3 prsta.\n\nDa biste prelazili sa jedne funkcije na drugu, prevucite nagore pomoću 3 prsta i zadržite."</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"Da biste koristili funkciju pristupačnosti, prevucite nagore od dna ekrana pomoću 2 prsta.\n\nDa biste prelazili sa jedne funkcije na drugu, prevucite nagore pomoću 2 prsta i zadržite."</string>
@@ -2033,12 +2005,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"Zadržite tastere za jačinu zvuka"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"zadržite tastere za jačinu zvuka"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"Pritisnite i zadržite oba tastera za jačinu zvuka"</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"Dodirnite ekran tri puta pomoću dva prsta"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"dodirnite ekran tri puta pomoću dva prsta"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"Brzo dodirnite ekran {0,number,integer} puta pomoću dva prsta"</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"Dodirnite ekran triput"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"dodirnite ekran triput"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"Brzo dodirnite ekran {0,number,integer} puta. Ova prečica može da uspori uređaj"</string>
@@ -2336,6 +2305,8 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"Ako ograničite aktivnosti aplikacije u pozadini, možda će se ponašati neočekivano."</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"Apl. nije podešena za optimizaciju baterije, pa ne možete da je ograničite. \n\nZa ogr. apl. uključite optimizaciju baterije."</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"Upravljajte potrošnjom baterije"</string>
+ <string name="manager_battery_usage_allow_background_usage_title" msgid="6294649996820358852">"Dozvoli korišćenje u pozadini"</string>
+ <string name="manager_battery_usage_allow_background_usage_summary" msgid="8021153755201340819">"Omogućite za ažuriranja u realnom vremenu, onemogućite da biste uštedeli bateriju"</string>
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"Neograničeno"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"Optimizovano"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"Ograničeno"</string>
@@ -3846,6 +3817,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"Dozvoli pristup za upravljanje svim datotekama"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"Dozvolite da ova aplikacija čita, menja i briše sve datoteke na ovom uređaju ili svim povezanim uređajima za skladištenje. Ako to dozvolite, aplikacija može da pristupa datotekama bez vašeg znanja."</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"Može da pristupa svim datotekama"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"Obaveštenja preko celog ekrana"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"Dozvolite obaveštenja preko celog ekrana od ove aplikacije"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"Dozvolite ovoj aplikaciji da prikazuje obaveštenja preko celog ekrana kada je uređaj zaključan. Aplikacije mogu da ih koriste radi isticanja alarma, dolaznih poziva ili drugih hitnih obaveštenja."</string>
diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml
index 8a05f3a..e736769 100644
--- a/res/values-be/strings.xml
+++ b/res/values-be/strings.xml
@@ -135,7 +135,14 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"Стылус"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"Абагульванне аўдыя"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"Абагульваць аўдыя"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"Выклікі і будзільнікі"</string>
+ <!-- no translation found for audio_sharing_streams_category_title (862958129650324581) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_pref_title (4636293245167657721) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_title (8269455097512153101) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_qr_code_summary (4231875597377863735) -->
<skip />
<string name="date_and_time" msgid="1788358029823431692">"Дата і час"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"Проксі-сервер"</string>
@@ -540,24 +547,15 @@
<string name="private_space_title" msgid="7078627930195569767">"Прыватная вобласць"</string>
<string name="private_space_summary" msgid="8237652417163408001">"Праграмы можна хаваць у прыватнай папцы"</string>
<string name="private_space_one_lock_title" msgid="7306547190751832568">"Атрымліваць доступ з дапамогай сродку разблакіроўкі экрана"</string>
- <!-- no translation found for private_space_hide_title (8687034008994037610) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_title (972581369094289386) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_summary (1052569521186403642) -->
- <skip />
- <!-- no translation found for privatespace_access_header (982809349769470185) -->
- <skip />
- <!-- no translation found for privatespace_search_description (983837656432484282) -->
- <skip />
- <!-- no translation found for privatespace_tap_tile_description (4146608898639668340) -->
- <skip />
- <!-- no translation found for privatespace_unlock_description (4132755357482447360) -->
- <skip />
- <!-- no translation found for privatespace_hide_off_summary (7227778747159633671) -->
- <skip />
- <!-- no translation found for privatespace_hide_on_summary (6136704537527640183) -->
- <skip />
+ <string name="private_space_hide_title" msgid="8687034008994037610">"Хаваць, калі доступ заблакіраваны"</string>
+ <string name="privatespace_hide_page_title" msgid="972581369094289386">"Хаваць прыватную вобласць, калі доступ да яе заблакіраваны"</string>
+ <string name="privatespace_hide_page_summary" msgid="1052569521186403642">"Прыватную вобласць можна не паказваць у спісе праграм"</string>
+ <string name="privatespace_access_header" msgid="982809349769470185">"Доступ да прыватнай вобласці, калі яна схавана"</string>
+ <string name="privatespace_search_description" msgid="983837656432484282">"У радку пошуку набярыце \"Прыватная вобласць\""</string>
+ <string name="privatespace_tap_tile_description" msgid="4146608898639668340">"Націсніце на плітку \"Прыватная вобласць\""</string>
+ <string name="privatespace_unlock_description" msgid="4132755357482447360">"Разблакіраваць прыватную вобласць"</string>
+ <string name="privatespace_hide_off_summary" msgid="7227778747159633671">"Выключана"</string>
+ <string name="privatespace_hide_on_summary" msgid="6136704537527640183">"Уключана"</string>
<string name="private_space_category_system" msgid="1286843321867285700">"Сістэма"</string>
<string name="private_space_create_title" msgid="47273568884806726">"Стварыць прыватную вобласць"</string>
<string name="private_space_delete_title" msgid="3075645119800272800">"Выдаліць прыватную вобласць"</string>
@@ -570,54 +568,30 @@
<string name="no_device_lock_summary" msgid="7653477413589207824">"Каб выкарыстоўваць прыватную вобласць, на прыладзе неабходна наладзіць блакіроўку экрана."</string>
<string name="no_device_lock_action_label" msgid="2640487005629001288">"Наладзіць блакіроўку экрана"</string>
<string name="no_device_lock_cancel" msgid="4412602160321228863">"Скасаваць"</string>
- <!-- no translation found for privatespace_cancel_label (362351004019511784) -->
- <skip />
- <!-- no translation found for privatespace_setup_button_label (3696372546231047258) -->
- <skip />
- <!-- no translation found for privatespace_setup_title (177623114624330394) -->
- <skip />
- <!-- no translation found for privatespace_hide_apps_summary (4016518749055602268) -->
- <skip />
- <!-- no translation found for privatespace_how_title (8794102046435526065) -->
- <skip />
- <!-- no translation found for privatespace_access_bottom_text (1075244097441349030) -->
- <skip />
- <!-- no translation found for privatespace_protected_lock_text (7320604832432017423) -->
- <skip />
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_cancel_label" msgid="362351004019511784">"Скасаваць"</string>
+ <string name="privatespace_setup_button_label" msgid="3696372546231047258">"Наладзіць"</string>
+ <string name="privatespace_setup_title" msgid="177623114624330394">"Наладжванне прыватнай вобласці"</string>
+ <string name="privatespace_hide_apps_summary" msgid="4016518749055602268">"Калі вы хочаце, каб некаторыя праграмы былі прыватнымі, схавайце іх, дадаўшы ў прыватную вобласць, да якой маеце доступ толькі вы"</string>
+ <string name="privatespace_how_title" msgid="8794102046435526065">"Як гэта працуе"</string>
+ <string name="privatespace_access_bottom_text" msgid="1075244097441349030">"Вы можаце атрымаць доступ да прыватнай вобласці ў ніжняй частцы спіса праграм"</string>
+ <string name="privatespace_protected_lock_text" msgid="7320604832432017423">"Доступ да праграм у прыватнай вобласці можна заблакіраваць"</string>
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"Калі доступ да прыватнай вобласці заблакіраваны, апавяшчэнні з дададзеных у яе праграм не паказваюцца"</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"Калі доступ да прыватнай вобласці заблакіраваны, праграмы з яе не паказваюцца ў менеджары дазволаў і на панэлі кіравання доступам, а таксама ў іншых наладах"</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"Наладжваецца прыватная вобласць…"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"Прыватную вобласць можна заблакіраваць"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"Звесткі аб выкарыстанні прыватнай вобласці схаваны, калі яна заблакіравана"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"Уваходзьце ў прыватную вобласць са спіса праграм"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"Не ўдаецца наладзіць прыватную вобласць"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"Паўтарыце спробу зараз або вярніцеся пазней"</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"Паўтарыць спробу"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"Ужываць блакіроўку экрана для разблакіроўкі?"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"Прыватную вобласць можна разблакіраваць тым жа спосабам, што і пры блакіроўцы прылады, або выбраць іншы спосаб блакіроўкі"</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"Выкарыстоўваць блакіроўку экрана"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"Выбраць новы спосаб блакіроўкі"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"Гатова!"</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"Каб увайсці ў прыватную вобласць, правядзіце знізу галоўнага экрана ўверх, а потым прагартайце ўніз"</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"Гатова"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"Каб увайсці ў прыватную вобласць, прагартайце ўніз"</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"Вы можаце дадаць да <xliff:g id="COUNT">%d</xliff:g> адбіткаў пальца"</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"Вы дадалі максімальную колькасць адбіткаў пальцаў"</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"Немагчыма дадаць больш адбіткаў пальцаў"</string>
@@ -1135,8 +1109,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"Працягваць выкарыстоўваць праграмы, калі прылада складзена"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"Плаўны паказ"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"Аўтаматычна павялічвае частату абнаўлення пэўнага змесціва да <xliff:g id="ID_1">%1$d</xliff:g> Гц. Павышае выкарыстанне зараду акумулятара."</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"Прымусовая пікавая частата абнаўлення"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"Найвышэйшая частата абнаўлення для лепшага рэагавання на дотыкі і вышэйшай якасці анімацыі. Павышае выкарыстанне зараду акумулятара."</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"Адаптыўны рэжым"</string>
@@ -1372,6 +1345,8 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"Супольныя налады"</string>
<string name="apn_settings" msgid="4295467389400441299">"APN"</string>
<string name="apn_edit" msgid="2003683641840248741">"Змяніць пункт доступу"</string>
+ <!-- no translation found for apn_add (9069613192201630934) -->
+ <skip />
<string name="apn_not_set" msgid="8246646433109750293">"Не зададзена"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"Не зададзена"</string>
<string name="apn_name" msgid="6677695784108157953">"Назва"</string>
@@ -2006,12 +1981,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"Адкрывайце кнопкай спецыяльных магчымасцей"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"Каб адкрыць, утрымлівайце клавішы гучнасці"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"Каб адкрыць, тройчы націсніце на экран"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"Каб адкрыць, тройчы націсніце на экран двума пальцамі"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"Адкрывайце жэстам"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"Скарыстаць жэст спецыяльных магчымасцей"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"Каб скарыстаць гэту функцыю, націсніце кнопку спецыяльных магчымасцей <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> унізе экрана.\n\nКаб пераключыцца на іншую функцыю, утрымлівайце кнопку спецыяльных магчымасцей націснутай."</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"Каб выкарыстоўваць гэту функцыю, націсніце на экране кнопку спецыяльных магчымасцей."</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"Каб скарыстаць гэту функцыю, націсніце і ўтрымлівайце абедзве клавішы гучнасці."</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"Каб запусціць і спыніць функцыю павелічэння, тройчы націсніце ў любым месцы экрана."</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"Каб запусціць і спыніць функцыю павелічэння, тройчы націсніце ў любым месцы экрана двума пальцамі."</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"Каб скарыстаць гэту функцыю, правядзіце па экране двума пальцамі знізу ўверх.\n\nКаб пераключыцца на іншую функцыю, правядзіце двума пальцамі ўверх і ўтрымлівайце іх на экране."</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"Каб скарыстаць гэту функцыю, правядзіце па экране трыма пальцамі знізу ўверх.\n\nКаб пераключыцца на іншую функцыю, правядзіце трыма пальцамі ўверх і ўтрымлівайце іх на экране."</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"Каб скарыстаць спецыяльную магчымасць, правядзіце па экране двума пальцамі знізу ўверх.\n\nКаб пераключыцца на іншую функцыю, правядзіце двума пальцамі ўверх і ўтрымлівайце іх на экране."</string>
@@ -2033,12 +2010,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"Утрымліваць клавішы гучнасці націснутымі"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"утрыманне клавіш гучнасці націснутымі"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"Націсніце і ўтрымлівайце абедзве клавішы гучнасці"</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"Тройчы націсніце на экран двума пальцамі"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"тройчы націсніце на экран двума пальцамі"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"Хутка націсніце на экран {0,number,integer} разы двума пальцамі"</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"Тройчы націснуць на экран"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"трайное націсканне на экран"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"Хутка націсніце на экран некалькі разоў ({0,number,integer}). Выкарыстанне гэтай каманды можа запаволіць працу прылады"</string>
@@ -2336,6 +2310,10 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"Абмежаванне фонавай дзейнасці праграмы можа прывесці да збояў"</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"Паколькі ў гэтай праграме не наладжана аптымізацыя выкарыстання зараду акумулятара, вы не можаце абмежаваць яе працу. \n\n Для гэтага спачатку ўключыце аптымізацыю акумулятара."</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"Кіраваць выкарыстаннем зараду"</string>
+ <!-- no translation found for manager_battery_usage_allow_background_usage_title (6294649996820358852) -->
+ <skip />
+ <!-- no translation found for manager_battery_usage_allow_background_usage_summary (8021153755201340819) -->
+ <skip />
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"Без абмежаванняў"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"Аптымізавана"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"З абмежаваннямі"</string>
@@ -3846,6 +3824,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"Дазволіць доступ да кіравання ўсімі файламі"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"Дазвольце гэтай праграме чытаць, змяняць і выдаляць усе файлы на гэтай прыладзе ці ў падключаных сховішчах. З такім дазволам праграма зможа атрымліваць доступ да файлаў без вашага ведама."</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"Магчымы доступ да ўсіх файлаў"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"Поўнаэкранныя апавяшчэнні"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"Дазволіць поўнаэкранныя апавяшчэнні ад гэтай праграмы"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"Гэта праграма зможа паказваць поўнаэкранныя апавяшчэнні, калі прылада заблакіравана. Дзякуючы гэтаму дазволу праграмы могуць паказваць сігналы будзільнікаў, уваходныя выклікі і іншыя тэрміновыя апавяшчэнні."</string>
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index 1b53842..9910cff 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -135,7 +135,14 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"Писалка"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"Споделяне на аудио"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"Споделяне на аудио"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"Обаждания и будилници"</string>
+ <!-- no translation found for audio_sharing_streams_category_title (862958129650324581) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_pref_title (4636293245167657721) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_title (8269455097512153101) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_qr_code_summary (4231875597377863735) -->
<skip />
<string name="date_and_time" msgid="1788358029823431692">"Дата и час"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"Прокси сървър"</string>
@@ -540,24 +547,15 @@
<string name="private_space_title" msgid="7078627930195569767">"Лично пространство"</string>
<string name="private_space_summary" msgid="8237652417163408001">"Скриване на приложенията в лична папка"</string>
<string name="private_space_one_lock_title" msgid="7306547190751832568">"Отключване с опцията за заключване на екрана"</string>
- <!-- no translation found for private_space_hide_title (8687034008994037610) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_title (972581369094289386) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_summary (1052569521186403642) -->
- <skip />
- <!-- no translation found for privatespace_access_header (982809349769470185) -->
- <skip />
- <!-- no translation found for privatespace_search_description (983837656432484282) -->
- <skip />
- <!-- no translation found for privatespace_tap_tile_description (4146608898639668340) -->
- <skip />
- <!-- no translation found for privatespace_unlock_description (4132755357482447360) -->
- <skip />
- <!-- no translation found for privatespace_hide_off_summary (7227778747159633671) -->
- <skip />
- <!-- no translation found for privatespace_hide_on_summary (6136704537527640183) -->
- <skip />
+ <string name="private_space_hide_title" msgid="8687034008994037610">"Скриване, когато е заключено"</string>
+ <string name="privatespace_hide_page_title" msgid="972581369094289386">"Скриване на личното пространство, когато е заключено"</string>
+ <string name="privatespace_hide_page_summary" msgid="1052569521186403642">"За да бъде тайно личното пространство на у-вото ви, можете да го скриете от списъка с приложения"</string>
+ <string name="privatespace_access_header" msgid="982809349769470185">"Достъп до личното пространство, когато е скрито"</string>
+ <string name="privatespace_search_description" msgid="983837656432484282">"Потърсете „лично пространство“ в лентата за търсене"</string>
+ <string name="privatespace_tap_tile_description" msgid="4146608898639668340">"Докоснете панела за личното пространство"</string>
+ <string name="privatespace_unlock_description" msgid="4132755357482447360">"Отключване на личното ви пространство"</string>
+ <string name="privatespace_hide_off_summary" msgid="7227778747159633671">"Изкл."</string>
+ <string name="privatespace_hide_on_summary" msgid="6136704537527640183">"Вкл."</string>
<string name="private_space_category_system" msgid="1286843321867285700">"Система"</string>
<string name="private_space_create_title" msgid="47273568884806726">"Създаване на лично пространство"</string>
<string name="private_space_delete_title" msgid="3075645119800272800">"Изтриване на личното пространство"</string>
@@ -570,54 +568,30 @@
<string name="no_device_lock_summary" msgid="7653477413589207824">"За да ползвате личното пространство, настройте заключване на екрана."</string>
<string name="no_device_lock_action_label" msgid="2640487005629001288">"Настройване на закл. на екрана"</string>
<string name="no_device_lock_cancel" msgid="4412602160321228863">"Отказ"</string>
- <!-- no translation found for privatespace_cancel_label (362351004019511784) -->
- <skip />
- <!-- no translation found for privatespace_setup_button_label (3696372546231047258) -->
- <skip />
- <!-- no translation found for privatespace_setup_title (177623114624330394) -->
- <skip />
- <!-- no translation found for privatespace_hide_apps_summary (4016518749055602268) -->
- <skip />
- <!-- no translation found for privatespace_how_title (8794102046435526065) -->
- <skip />
- <!-- no translation found for privatespace_access_bottom_text (1075244097441349030) -->
- <skip />
- <!-- no translation found for privatespace_protected_lock_text (7320604832432017423) -->
- <skip />
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_cancel_label" msgid="362351004019511784">"Отказ"</string>
+ <string name="privatespace_setup_button_label" msgid="3696372546231047258">"Настройване"</string>
+ <string name="privatespace_setup_title" msgid="177623114624330394">"Настройване на личното пространство"</string>
+ <string name="privatespace_hide_apps_summary" msgid="4016518749055602268">"Скрийте частните приложения в сигурна среда, до която само вие имате достъп"</string>
+ <string name="privatespace_how_title" msgid="8794102046435526065">"Начин на работа"</string>
+ <string name="privatespace_access_bottom_text" msgid="1075244097441349030">"Можете да осъществите достъп до личното пространство от долната част на списъка с приложения"</string>
+ <string name="privatespace_protected_lock_text" msgid="7320604832432017423">"Приложенията в личното пространство са защитени чрез опция за заключване"</string>
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"Известията от приложенията в личното пространство са скрити, когато то е заключено"</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"Когато личното пространство е заключено, приложенията в него няма да се показват в мениджъра на разрешенията, таблото за управление на поверителността и други настройки"</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"Личното пространство се настройва…"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"Личното пространство е защитено чрез опция за заключване"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"Информацията за използването на приложенията в личното пространство е скрита, когато то е заключено"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"Достъп до личното пространство от списъка ви с приложения"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"Настройването на личното пространство не бе успешно"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"Опитайте отново сега или се върнете по-късно"</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"Нов опит"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"Да се отключва ли чрез опцията за закл. на екрана?"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"Можете да отключвате личното пространство по същия начин, по който отключвате устройството си, или да изберете друга опция за заключване"</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"Използване на опцията за заключване на екрана"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"Избиране на нова опция за заключване"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"Готово!"</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"За достъп до личното пространство прекарайте пръст нагоре от долната част на началния екран, след което превъртете надолу"</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"Готово"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"Превъртете надолу за достъп до личното пространство"</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"Можете да добавите до <xliff:g id="COUNT">%d</xliff:g> отпечатъка"</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"Добавихте максималния брой отпечатъци"</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"Не могат да се добавят още отпечатъци"</string>
@@ -1135,8 +1109,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"Продължаване на използването на приложенията при сгъване"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"Плавно показване"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"Автоматично увеличава честотата на опресняване до <xliff:g id="ID_1">%1$d</xliff:g> Hz за част от съдържанието. По-интензивно използване на батерията."</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"Принудителна най-висока честота на опресняване"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"Най-висока честота на опресняване за по-добро реагиране при докосване и качество на анимациите. По-интензивно използване на батерията."</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"Внимание към екрана"</string>
@@ -1372,6 +1345,8 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"Общи настройки"</string>
<string name="apn_settings" msgid="4295467389400441299">"APN"</string>
<string name="apn_edit" msgid="2003683641840248741">"Редакт. на точка за достъп"</string>
+ <!-- no translation found for apn_add (9069613192201630934) -->
+ <skip />
<string name="apn_not_set" msgid="8246646433109750293">"Не е зададено"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"Не е зададено"</string>
<string name="apn_name" msgid="6677695784108157953">"Име"</string>
@@ -2006,12 +1981,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"Отваряне с бутона за достъпност"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"За отваряне натиснете и задръжте бутоните за силата на звука"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"Трикратно докосване на екрана с цел отваряне"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"Отваряне с трикратно докосване на екрана с два пръста"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"Отваряне с жест"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"Използване на жеста за достъпност"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"За да използвате тази функция, докоснете бутона за достъпност <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> в долната част на екрана.\n\nДокоснете и задръжте този бутон и за превключване между функциите."</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"За да използвате тази функция, докоснете бутона за достъпност на екрана."</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"За да използвате тази функция, натиснете и задръжте двата бутона за силата на звука."</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"За стартиране и спиране на увеличението докоснете три пъти където и да е на екрана."</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"За стартиране и спиране на увеличението докоснете три пъти с два пръста където и да е на екрана."</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"За да използвате тази функция, прекарайте два пръста нагоре от долната част на екрана.\n\nЗа превключване между функциите прекарайте два пръста нагоре и задръжте."</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"За да използвате тази функция, прекарайте три пръста нагоре от долната част на екрана.\n\nЗа превключване между функциите прекарайте три пръста нагоре и задръжте."</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"За да използвате функцията за достъпност, прекарайте два пръста нагоре от долната част на екрана.\n\nЗа превключване между функциите прекарайте два пръста нагоре и задръжте."</string>
@@ -2033,12 +2010,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"Задържане на бутоните за силата на звука"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"задържане на бутоните за силата на звука"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"Натиснете и задръжте двата бутона за силата на звука"</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"Трикратно докосване на екрана с два пръста"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"трикратно докосване на екрана с два пръста"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"Бързо докоснете екрана {0,number,integer} пъти с два пръста"</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"Трикратно докосване на екрана"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"трикратно докосване на екрана"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"Бързо докоснете екрана {0,number,integer} пъти. Този пряк път може да забави работата на устройството ви."</string>
@@ -2336,6 +2310,10 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"Ако ограничите активността на заден за дадено приложение, то може да не функционира правилно"</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"Тъй като прил. не е зададено да оптимизира батерията, можете да го ограничите.\n\nЗа тази цел първо включете оптим. на батерията."</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"Управление на използването на батерията"</string>
+ <!-- no translation found for manager_battery_usage_allow_background_usage_title (6294649996820358852) -->
+ <skip />
+ <!-- no translation found for manager_battery_usage_allow_background_usage_summary (8021153755201340819) -->
+ <skip />
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"Неограничено"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"Оптимизирано"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"Ограничено"</string>
@@ -3846,6 +3824,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"Разрешаване на достъп за управл. на всички файлове"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"Разрешете на това приложение да чете, променя и изтрива всички файлове на устройството или обемите на свързаните хранилища. Ако то получи разрешението, може да осъществява достъп до файловете без изричното ви знание."</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"Може да осъществява достъп до всички файлове"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"Известия на цял екран"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"Разрешаване на известията на цял екран от това приложение"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"Разрешаване на това приложение да показва известия, които заемат целия екран, когато устройството е заключено. Приложенията могат да ги използват, за да открояват будилници, входящи обаждания или други спешни известия."</string>
diff --git a/res/values-bn/strings.xml b/res/values-bn/strings.xml
index 94c83b6..607f8da 100644
--- a/res/values-bn/strings.xml
+++ b/res/values-bn/strings.xml
@@ -135,7 +135,14 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"স্টাইলাস"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"অডিও শেয়ার করা"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"অডিও শেয়ার করুন"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"কল ও অ্যালার্ম"</string>
+ <!-- no translation found for audio_sharing_streams_category_title (862958129650324581) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_pref_title (4636293245167657721) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_title (8269455097512153101) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_qr_code_summary (4231875597377863735) -->
<skip />
<string name="date_and_time" msgid="1788358029823431692">"দিন ও তারিখ"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"প্রক্সী"</string>
@@ -540,24 +547,15 @@
<string name="private_space_title" msgid="7078627930195569767">"ব্যক্তিগত স্পেস"</string>
<string name="private_space_summary" msgid="8237652417163408001">"ব্যক্তিগত ফোল্ডারে অ্যাপ লুকান"</string>
<string name="private_space_one_lock_title" msgid="7306547190751832568">"\'স্ক্রিন লক\' ব্যবহার করে আনলক করুন"</string>
- <!-- no translation found for private_space_hide_title (8687034008994037610) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_title (972581369094289386) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_summary (1052569521186403642) -->
- <skip />
- <!-- no translation found for privatespace_access_header (982809349769470185) -->
- <skip />
- <!-- no translation found for privatespace_search_description (983837656432484282) -->
- <skip />
- <!-- no translation found for privatespace_tap_tile_description (4146608898639668340) -->
- <skip />
- <!-- no translation found for privatespace_unlock_description (4132755357482447360) -->
- <skip />
- <!-- no translation found for privatespace_hide_off_summary (7227778747159633671) -->
- <skip />
- <!-- no translation found for privatespace_hide_on_summary (6136704537527640183) -->
- <skip />
+ <string name="private_space_hide_title" msgid="8687034008994037610">"লক থাকাকালীন লুকান"</string>
+ <string name="privatespace_hide_page_title" msgid="972581369094289386">"লক থাকাকালীন \'ব্যক্তিগত\' স্পেস লুকিয়ে রাখুন"</string>
+ <string name="privatespace_hide_page_summary" msgid="1052569521186403642">"আপনার ডিভাইসে \'ব্যক্তিগত\' স্পেস থাকার বিষয়টি যাতে অন্যান্য লোকজন না জানতে পারেন, তার জন্য সেটি অ্যাপ তালিকা থেকে লুকিয়ে রাখুন"</string>
+ <string name="privatespace_access_header" msgid="982809349769470185">"লুকানো থাকাকালীন \'ব্যক্তিগত\' স্পেস অ্যাক্সেস করুন"</string>
+ <string name="privatespace_search_description" msgid="983837656432484282">"সার্চ বারে \'ব্যক্তিগত\' স্পেস সম্পর্কিত সার্চ"</string>
+ <string name="privatespace_tap_tile_description" msgid="4146608898639668340">"\'ব্যক্তিগত\' স্পেসের টাইলে ট্যাপ করুন"</string>
+ <string name="privatespace_unlock_description" msgid="4132755357482447360">"আপনার \'ব্যক্তিগত\' স্পেস আনলক করুন"</string>
+ <string name="privatespace_hide_off_summary" msgid="7227778747159633671">"বন্ধ আছে"</string>
+ <string name="privatespace_hide_on_summary" msgid="6136704537527640183">"চালু আছে"</string>
<string name="private_space_category_system" msgid="1286843321867285700">"সিস্টেম"</string>
<string name="private_space_create_title" msgid="47273568884806726">"\'ব্যক্তিগত স্পেস\' তৈরি করুন"</string>
<string name="private_space_delete_title" msgid="3075645119800272800">"\'ব্যক্তিগত স্পেস\' মুছুন"</string>
@@ -570,54 +568,30 @@
<string name="no_device_lock_summary" msgid="7653477413589207824">"\'ব্যক্তিগত স্পেস\' ব্যবহার করতে, এই ডিভাইসে \'স্ক্রিন লক\' সেট করুন।"</string>
<string name="no_device_lock_action_label" msgid="2640487005629001288">"\'স্ক্রিন লক\' সেট করুন"</string>
<string name="no_device_lock_cancel" msgid="4412602160321228863">"বাতিল করুন"</string>
- <!-- no translation found for privatespace_cancel_label (362351004019511784) -->
- <skip />
- <!-- no translation found for privatespace_setup_button_label (3696372546231047258) -->
- <skip />
- <!-- no translation found for privatespace_setup_title (177623114624330394) -->
- <skip />
- <!-- no translation found for privatespace_hide_apps_summary (4016518749055602268) -->
- <skip />
- <!-- no translation found for privatespace_how_title (8794102046435526065) -->
- <skip />
- <!-- no translation found for privatespace_access_bottom_text (1075244097441349030) -->
- <skip />
- <!-- no translation found for privatespace_protected_lock_text (7320604832432017423) -->
- <skip />
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_cancel_label" msgid="362351004019511784">"বাতিল করুন"</string>
+ <string name="privatespace_setup_button_label" msgid="3696372546231047258">"সেট-আপ করুন"</string>
+ <string name="privatespace_setup_title" msgid="177623114624330394">"\'ব্যক্তিগত\' স্পেস সেট-আপ করুন"</string>
+ <string name="privatespace_hide_apps_summary" msgid="4016518749055602268">"ব্যক্তিগত অ্যাপ সুরক্ষিত জায়গাতে লুকিয়ে রাখুন যাতে শুধুমাত্র আপনিই তা অ্যাক্সেস করতে পারেন"</string>
+ <string name="privatespace_how_title" msgid="8794102046435526065">"এটি কীভাবে কাজ করে"</string>
+ <string name="privatespace_access_bottom_text" msgid="1075244097441349030">"আপনার অ্যাপ তালিকার নিচে থকে \'ব্যক্তিগত\' স্পেস অ্যাক্সেস করতে পারবেন"</string>
+ <string name="privatespace_protected_lock_text" msgid="7320604832432017423">"\'ব্যক্তিগত\' স্পেসে অ্যাপ লকের মাধ্যমে সুরক্ষিত থাকে"</string>
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"\'ব্যক্তিগত স্পেস\' লক থাকলে সেখানে থাকা অ্যাপের বিজ্ঞপ্তি লুকানো থাকে"</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"\'ব্যক্তিগত স্পেস\' লক করা থাকলে পার্মিশন ম্যানেজার, প্রাইভেসি ড্যাশবোর্ড এবং অন্যান্য সেটিংসে \'ব্যক্তিগত স্পেসের\' অ্যাপ দেখা যাবে না"</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"\'ব্যক্তিগত স্পেস\' সেট-আপ করা হচ্ছে…"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"\'ব্যক্তিগত স্পেসে\' অ্যাপ লক করে সুরক্ষিত অবস্থায় থাকে"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"\'ব্যক্তিগত স্পেস\' লক করা থাকলে এখানে থাকা অ্যাপ ব্যবহারের তথ্য লুকানো থাকবে"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"আপনার অ্যাপ তালিকা থেকে \'ব্যক্তিগত স্পেস\' অ্যাক্সেস করুন"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"\'ব্যক্তিগত স্পেস\' সেট-আপ করা যায়নি"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"এখনই আবার চেষ্টা করুন বা পরে আবার চেষ্টা করে দেখুন"</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"আবার চেষ্টা করুন"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"আনলক করতে স্ক্রিন লক ব্যবহার করতে চান?"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"যেভাবে আপনার ডিভাইস আনলক করেন একইভাবে নিজের \'ব্যক্তিগত স্পেস\' আনলক করতে পারেন বা অন্য কোনও লক বেছে নিতে পারেন"</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"স্ক্রিন লক ব্যবহার করুন"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"নতুন লক বেছে নিন"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"হয়ে গেছে!"</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"\'ব্যক্তিগত স্পেস\' অ্যাক্সেস করতে, হোম স্ক্রিনের নিচের দিক থেকে উপরের দিকে সোয়াইপ করুন ও তারপর নিচের দিকে স্ক্রল করুন"</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"হয়ে গেছে"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"\'ব্যক্তিগত স্পেস\' অ্যাক্সেস করতে নিচের দিকে স্ক্রল করুন"</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"আপনি সর্বাধিক <xliff:g id="COUNT">%d</xliff:g>টি ফিঙ্গারপ্রিন্ট যোগ করতে পারবেন"</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"আপনি অনুমোদিত সর্বোচ্চ সংখ্যক আঙ্গুলের ছাপ যোগ করেছেন"</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"এর বেশি আঙ্গুলের ছাপ যোগ করা যাবে না"</string>
@@ -1135,8 +1109,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"ফোল্ডে থাকা অ্যাপ ব্যবহার করা চালিয়ে যান"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"স্মুথ ডিসপ্লে"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"কিছু কন্টেন্টের রিফ্রেশ রেট অটোমেটিক <xliff:g id="ID_1">%1$d</xliff:g> Hz পর্যন্ত বেড়ে যায়। ব্যাটারি বেশি খরচ হয়।"</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"সবচেয়ে বেশি রিফ্রেশ রেটে সেট করা হয়েছে"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"সর্বাধিক রিফ্রেশ রেট সেট করে টাচ রেসপন্সিভনেস এবং অ্যানিমেশন কোয়ালিটি উন্নত করুন। ব্যাটারির খরচ বেড়ে যায়।"</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"স্ক্রিন অ্যাটেনশন"</string>
@@ -1372,6 +1345,8 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"\'কমিউনাল\' সেটিংস"</string>
<string name="apn_settings" msgid="4295467389400441299">"APN"</string>
<string name="apn_edit" msgid="2003683641840248741">"অ্যাক্সেস পয়েন্ট এডিট করুন"</string>
+ <!-- no translation found for apn_add (9069613192201630934) -->
+ <skip />
<string name="apn_not_set" msgid="8246646433109750293">"সেট করা নেই"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"সেট করা নেই"</string>
<string name="apn_name" msgid="6677695784108157953">"নাম"</string>
@@ -2006,12 +1981,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"অ্যাক্সেসিবিলিটি বোতাম ব্যবহার করে খোলা"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"খোলার জন্য ভলিউম কী প্রেস করে ধরে থাকুন"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"খুলতে স্ক্রিনে ট্রিপল ট্যাপ করুন"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"স্ক্রিনে দুই আঙুল দিয়ে তিনবার ট্যাপ করে খুলুন"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"ইঙ্গিতের মাধ্যমে খোলা"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"\'অ্যাক্সেসিবিলিটি\' জেসচার ব্যবহার করুন"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"এই ফিচারটি ব্যবহার করার জন্য, স্ক্রিনের নিচের দিকের অ্যাক্সেসিবিলিটি বোতামে <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> ট্যাপ করুন।\n\nএকটি ফিচার থেকে অন্যটিতে যেতে, অ্যাক্সেসিবিলিটি বোতাম টাচ করে ধরে থাকুন।"</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"এই ফিচার ব্যবহার করতে, আপনার স্ক্রিনে অ্যাক্সেসিবিলিটি বোতামে ট্যাপ করুন।"</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"এই ফিচার ব্যবহার করার জন্য, উভয় ভলিউম কী প্রেস করে ধরে থাকুন।"</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"ম্যাগনিফিকেশন চালু বা বন্ধ করতে, স্ক্রিনের যেকোনও জায়গায় ট্রিপল ট্যাপ করুন।"</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"ম্যাগনিফিকেশন চালু বা বন্ধ করতে, স্ক্রিনের যেকোনও জায়গায় দুই আঙুল দিয়ে তিনবার ট্যাপ করুন।"</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"এই ফিচার ব্যবহার করার জন্য, স্ক্রিনের নিচ থেকে উপরের দিকে ২টি আঙ্গুল দিয়ে সোয়াইপ করুন।\n\nএকটি ফিচার থেকে অন্যটিতে যেতে, ২টি আঙ্গুল দিয়ে নিচের থেকে উপরের দিকে সোয়াইপ করে ধরে থাকুন।"</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"এই ফিচার ব্যবহার করার জন্য, স্ক্রিনের নিচ থেকে উপরের দিকে ৩টি আঙ্গুল দিয়ে সোয়াইপ করুন।\n\nএকটি ফিচার থেকে অন্যটিতে যেতে, ৩টি আঙ্গুল দিয়ে নিচের থেকে উপরের দিকে সোয়াইপ করে ধরে থাকুন।"</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"অ্যাক্সেসিবিলিটি ফিচার ব্যবহার করার জন্য, স্ক্রিনের নিচ থেকে উপরের দিকে ২টি আঙ্গুল দিয়ে সোয়াইপ করুন।\n\nএকটি ফিচার থেকে অন্যটিতে যেতে, ২টি আঙ্গুল দিয়ে নিচের থেকে উপরের দিকে সোয়াইপ করে ধরে থাকুন।"</string>
@@ -2033,12 +2010,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"ভলিউম কী কিছু সময় প্রেস করে রাখুন"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"ভলিউম কী প্রেস করে রাখুন"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"উভয় ভলিউম কী প্রেস করে ধরে থাকুন"</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"দুই আঙুল দিয়ে স্ক্রিনে তিনবার ট্যাপ"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"দুই আঙুল দিয়ে স্ক্রিনে তিনবার ট্যাপ"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"দুই আঙুল দিয়ে স্ক্রিনে দ্রুত {0,number,integer} বার ট্যাপ করুন"</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"ট্রিপল-ট্যাপ স্ক্রিন"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"স্ক্রিনে ট্রিপল-ট্যাপ করা"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"স্ক্রিনে ঝটপট {0,number,integer} বার ট্যাপ করুন। এই শর্টকাট ব্যবহারের ফলে আপনার ডিভাইসের স্পিড কমে যেতে পারে"</string>
@@ -2336,6 +2310,10 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"কোনও অ্যাপের ব্যাকগ্রাউন্ড অ্যাক্টিভিটি সীমিত করলে তা সঠিক ভাবে কাজ নাও করতে পারে"</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"যেহেতু এই অ্যাপটিকে ব্যাটারি অপ্টিমাইজ করার জন্য সেট করা হয়নি, তাই আপনি এটির অ্যাক্টিভিটি সীমিত করতে পারবেন না।\n\nঅ্যাপের অ্যাক্টিভিটি সীমিত করতে আগে ব্যাটারি অপ্টিমাইজেশন চালু করুন।"</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"ব্যাটারির ব্যবহার ম্যানেজ করুন"</string>
+ <!-- no translation found for manager_battery_usage_allow_background_usage_title (6294649996820358852) -->
+ <skip />
+ <!-- no translation found for manager_battery_usage_allow_background_usage_summary (8021153755201340819) -->
+ <skip />
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"সীমিত নয়"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"অপ্টিমাইজ করা আছে"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"সীমিত"</string>
@@ -3846,6 +3824,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"সব ফাইল ম্যানেজ করতে অ্যাক্সেস দিন"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"এই ডিভাইস অথবা এতে কানেক্ট রয়েছে এমন যেকোনও স্টোরেজে থাকা সব ফাইল পড়তে, পরিবর্তন করতে এবং মুছতে এই অ্যাপকে অনুমতি দিন। অনুমতি দিলে এই অ্যাপ আপনাকে না জানিয়েই ফাইলগুলি অ্যাক্সেস করতে পারবে।"</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"সব ফাইল অ্যাক্সেস করতে পারে"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"ফুল স্ক্রিন বিজ্ঞপ্তি"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"এই অ্যাপকে ফুল স্ক্রিন জুড়ে বিজ্ঞপ্তি দেখানোর অনুমতি দিন"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"ডিভাইস লক থাকার সময় এই অ্যাপকে ফুল স্ক্রিন জুড়ে বিজ্ঞপ্তি দেখানোর অনুমতি দিন। অ্যালার্ম, ইনকামিং কল অথবা অন্যান্য জরুরি বিজ্ঞপ্তি হাইলাইট করতে, অ্যাপ এগুলি ব্যবহার করতে পারে।"</string>
diff --git a/res/values-bs/strings.xml b/res/values-bs/strings.xml
index ba6ba16..070b305 100644
--- a/res/values-bs/strings.xml
+++ b/res/values-bs/strings.xml
@@ -135,8 +135,11 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"Pisaljka"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"Dijeljenje zvuka"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"Dijeli zvuk"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
- <skip />
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"Pozivi i alarmi"</string>
+ <string name="audio_sharing_streams_category_title" msgid="862958129650324581">"Povežite se s audiostreamom LE Audio"</string>
+ <string name="audio_sharing_streams_pref_title" msgid="4636293245167657721">"Audiostreamovi u blizini"</string>
+ <string name="audio_sharing_streams_title" msgid="8269455097512153101">"Audiostreamovi"</string>
+ <string name="audio_sharing_streams_qr_code_summary" msgid="4231875597377863735">"Povežite se s audiostreamom pomoću QR koda"</string>
<string name="date_and_time" msgid="1788358029823431692">"Datum i vrijeme"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"Proksi server"</string>
<string name="proxy_clear_text" msgid="6529658759984031149">"Obriši"</string>
@@ -540,24 +543,15 @@
<string name="private_space_title" msgid="7078627930195569767">"Privatni prostor"</string>
<string name="private_space_summary" msgid="8237652417163408001">"Sakrijte aplikacije u privatnom folderu"</string>
<string name="private_space_one_lock_title" msgid="7306547190751832568">"Otključajte pomoću zaključavanja ekrana"</string>
- <!-- no translation found for private_space_hide_title (8687034008994037610) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_title (972581369094289386) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_summary (1052569521186403642) -->
- <skip />
- <!-- no translation found for privatespace_access_header (982809349769470185) -->
- <skip />
- <!-- no translation found for privatespace_search_description (983837656432484282) -->
- <skip />
- <!-- no translation found for privatespace_tap_tile_description (4146608898639668340) -->
- <skip />
- <!-- no translation found for privatespace_unlock_description (4132755357482447360) -->
- <skip />
- <!-- no translation found for privatespace_hide_off_summary (7227778747159633671) -->
- <skip />
- <!-- no translation found for privatespace_hide_on_summary (6136704537527640183) -->
- <skip />
+ <string name="private_space_hide_title" msgid="8687034008994037610">"Sakrij kada je zaključano"</string>
+ <string name="privatespace_hide_page_title" msgid="972581369094289386">"Sakrij privatan prostor kada je zaključan"</string>
+ <string name="privatespace_hide_page_summary" msgid="1052569521186403642">"Kako drugi ne bi saznali da je privatan prostor na vašem uređaju, sakrijte ga s liste aplikacija"</string>
+ <string name="privatespace_access_header" msgid="982809349769470185">"Pristupite privatnom prostoru kada je sakriven"</string>
+ <string name="privatespace_search_description" msgid="983837656432484282">"Pretražite \"Privatan prostor\" u traci za pretraživanje"</string>
+ <string name="privatespace_tap_tile_description" msgid="4146608898639668340">"Dodirnite karticu privatnog prostora"</string>
+ <string name="privatespace_unlock_description" msgid="4132755357482447360">"Otključajte privatan prostor"</string>
+ <string name="privatespace_hide_off_summary" msgid="7227778747159633671">"Isključeno"</string>
+ <string name="privatespace_hide_on_summary" msgid="6136704537527640183">"Uključeno"</string>
<string name="private_space_category_system" msgid="1286843321867285700">"Sistem"</string>
<string name="private_space_create_title" msgid="47273568884806726">"Kreiraj privatni prostor"</string>
<string name="private_space_delete_title" msgid="3075645119800272800">"Izbriši privatni prostor"</string>
@@ -570,54 +564,30 @@
<string name="no_device_lock_summary" msgid="7653477413589207824">"Da koristite privat. prostor, postavite zaklj. ekr. na uređ."</string>
<string name="no_device_lock_action_label" msgid="2640487005629001288">"Postavite zaključavanje ekrana"</string>
<string name="no_device_lock_cancel" msgid="4412602160321228863">"Otkaži"</string>
- <!-- no translation found for privatespace_cancel_label (362351004019511784) -->
- <skip />
- <!-- no translation found for privatespace_setup_button_label (3696372546231047258) -->
- <skip />
- <!-- no translation found for privatespace_setup_title (177623114624330394) -->
- <skip />
- <!-- no translation found for privatespace_hide_apps_summary (4016518749055602268) -->
- <skip />
- <!-- no translation found for privatespace_how_title (8794102046435526065) -->
- <skip />
- <!-- no translation found for privatespace_access_bottom_text (1075244097441349030) -->
- <skip />
- <!-- no translation found for privatespace_protected_lock_text (7320604832432017423) -->
- <skip />
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_cancel_label" msgid="362351004019511784">"Otkaži"</string>
+ <string name="privatespace_setup_button_label" msgid="3696372546231047258">"Postavi"</string>
+ <string name="privatespace_setup_title" msgid="177623114624330394">"Postavite privatan prostor"</string>
+ <string name="privatespace_hide_apps_summary" msgid="4016518749055602268">"Sakrijte privatne aplikacije u zaštićeni prostor kojem samo vi možete pristupiti"</string>
+ <string name="privatespace_how_title" msgid="8794102046435526065">"Kako ovo funkcionira"</string>
+ <string name="privatespace_access_bottom_text" msgid="1075244097441349030">"Možete pristupiti privatnom prostoru s dna liste aplikacija"</string>
+ <string name="privatespace_protected_lock_text" msgid="7320604832432017423">"Aplikacije u privatnom prostoru su zaštićene zaključavanjem"</string>
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"Obavještenja iz aplikacija u privatnom prostoru su sakrivena kada je prostor zaključan"</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"Aplikacije iz privatnog prostora se neće pojavljivati u upravitelju odobrenja, na kontrolnoj tabli za privatnost i u drugim postavkama kada je privatni prostor zaključan"</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"Postavljanje privatnog prostora…"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"Privatni prostor je zaštićen zaključavanjem"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"Informacije o korištenju aplikacija iz privatnog prostora su sakrivene kada je prostor zaključan"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"Pristupite privatnom prostoru s liste aplikacija"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"Postavljanje privatnog prostora nije uspjelo"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"Pokušajte ponovo sada ili se vratite kasnije"</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"Pokušaj ponovo"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"Koristiti zaključavanje ekrana za otključavanje?"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"Privatni prostor možete otključati na isti način kao što otključavate uređaj ili odaberite drugi način zaključavanja"</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"Koristi zaključavanje ekrana"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"Odaberite novi način zaključavanja"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"Sve je spremno!"</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"Da pristupite privatnom prostoru, prevucite nagore s dna početnog ekrana, a zatim kliznite nadolje"</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"Gotovo"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"Kliznite nadolje da pristupite privatnom prostoru"</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"Broj otisaka prstiju koje možete dodati: <xliff:g id="COUNT">%d</xliff:g>"</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"Dodali ste maksimalan broj otisaka prstiju"</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"Nije moguće dodati još otisaka prstiju"</string>
@@ -1135,8 +1105,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"Nastavak korištenja aplikacija nakon sklapanja"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"Glatki prikaz"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"Automatski podiže učestalost osvježavanja do <xliff:g id="ID_1">%1$d</xliff:g> Hz za određeni sadržaj. Povećava potrošnju baterije."</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"Nametni maksimalnu brzinu osvježavanja"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"Najveća brzina osvježavanja za poboljšanu reakciju na dodir i kvalitet animacije. Povećava potrošnju baterije."</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"Svjesni ekran"</string>
@@ -1372,6 +1341,7 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"Opće postavke"</string>
<string name="apn_settings" msgid="4295467389400441299">"APN-ovi"</string>
<string name="apn_edit" msgid="2003683641840248741">"Uredi pristupnu tačku"</string>
+ <string name="apn_add" msgid="9069613192201630934">"Dodajte pristupnu točku"</string>
<string name="apn_not_set" msgid="8246646433109750293">"Nije postavljeno"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"Nije postavljeno"</string>
<string name="apn_name" msgid="6677695784108157953">"Naziv"</string>
@@ -2006,12 +1976,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"Otvorite pomoću dugmeta za pristupačnost"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"Držite tipke za jačinu zvuka da otvorite"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"Triput dodirnite ekran da otvorite"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"Otvaranje trostrukim dodirom ekrana s dva prsta"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"Otvorite pokretom"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"Korištenje pokreta za pristupačnost"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"Da koristite ovu funkciju, dodirnite dugme Pristupačnost <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> na dnu ekrana.\n\nDa prebacujete između funkcija, dodirnite i zadržite dugme Pristupačnost."</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"Da koristite ovu funkciju, dodirnite dugme za pristupačnost na ekranu."</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"Da koristite ovu funkciju, pritisnite i držite obje tipke za jačinu zvuka."</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"Da pokrenete i zaustavite uvećavanje, triput dodirnite bilo gdje na ekranu."</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"Da pokrenete i zaustavite uvećavanje, triput dodirnite bilo gdje na ekranu s dva prsta."</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"Da koristite ovu funkciju, prevucite s 2 prsta nagore s dna ekrana.\n\nDa prebacujete između funkcija, prevucite s 2 prsta nagore i zadržite."</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"Da koristite ovu funkciju, prevucite s 3 prsta nagore s dna ekrana.\n\nDa prebacujete između funkcija, prevucite s 3 prsta nagore i zadržite."</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"Da koristite funkciju pristupačnosti, prevucite s 2 prsta nagore s dna ekrana.\n\nDa prebacujete između funkcija, prevucite s 2 prsta nagore i zadržite."</string>
@@ -2033,12 +2005,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"Držite tipke za jačinu zvuka"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"držite tipke za jačinu zvuka"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"Pritisnite i zadržite obje tipke za jačinu zvuka"</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"Trostruki dodir ekrana s dva prsta"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"trostruki dodir ekrana s dva prsta"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"Brzo dodirnite ekran {0,number,integer} put(a) s dva prsta"</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"Dodirnite ekran triput"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"dodirnite ekran triput"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"Brzo dodirnite ekran sljedeći broj puta: {0,number,integer}. Ova prečica može usporiti uređaj"</string>
@@ -2336,6 +2305,8 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"Ako aplikaciji ograničite aktivnost u pozadini, može raditi nepravilno"</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"Aplikaciju ne možete ograničiti jer nije postavljena optimizacija baterije.\n\nDa je ograničite prvo uključite optimizaciju."</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"Upravljajte potrošnjom baterije"</string>
+ <string name="manager_battery_usage_allow_background_usage_title" msgid="6294649996820358852">"Omogućivanje upotrebe u pozadini"</string>
+ <string name="manager_battery_usage_allow_background_usage_summary" msgid="8021153755201340819">"Omogućite za ažuriranja u stvarnom vremenu, onemogućite za uštedu baterije"</string>
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"Neograničeno"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"Optimizirano"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"Ograničeno"</string>
@@ -3846,6 +3817,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"Dozvoli pristup za upravljanje svim fajlovima"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"Dozvolite ovoj aplikaciji da čita, mijenja i briše sve fajlove na ovom uređaju ili svim povezanim uređajima za pohranu. Ako to dozvolite, aplikacija može pristupati fajlovima bez vašeg znanja."</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"Može da pristupa svim fajlovima"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"Obavještenja preko cijelog ekrana"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"Dozvoli obavještenja ove aplikacije preko cijelog ekrana"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"Dozvolite aplikaciji da prikazuje obavještenja koja zauzimaju cijeli ekran kada je uređaj zaključan. Aplikacije ih mogu koristiti da istaknu alarme, dolazne pozive ili druga hitna obavještenja."</string>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index 1cf9ccc..c36b7c0 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -135,8 +135,11 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"Llapis òptic"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"Ús compartit d\'àudio"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"Comparteix l\'àudio"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
- <skip />
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"Trucades i alarmes"</string>
+ <string name="audio_sharing_streams_category_title" msgid="862958129650324581">"Connecta\'t a un flux d\'LE Audio"</string>
+ <string name="audio_sharing_streams_pref_title" msgid="4636293245167657721">"Fluxos d\'àudio a prop"</string>
+ <string name="audio_sharing_streams_title" msgid="8269455097512153101">"Fluxos d\'àudio"</string>
+ <string name="audio_sharing_streams_qr_code_summary" msgid="4231875597377863735">"Connecta\'t a un flux d\'àudio fent servir un codi QR"</string>
<string name="date_and_time" msgid="1788358029823431692">"Data i hora"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"Servidor intermediari"</string>
<string name="proxy_clear_text" msgid="6529658759984031149">"Esborra"</string>
@@ -540,24 +543,15 @@
<string name="private_space_title" msgid="7078627930195569767">"Espai privat"</string>
<string name="private_space_summary" msgid="8237652417163408001">"Amaga les aplicacions en una carpeta privada"</string>
<string name="private_space_one_lock_title" msgid="7306547190751832568">"Desbloqueja amb el bloqueig de pantalla"</string>
- <!-- no translation found for private_space_hide_title (8687034008994037610) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_title (972581369094289386) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_summary (1052569521186403642) -->
- <skip />
- <!-- no translation found for privatespace_access_header (982809349769470185) -->
- <skip />
- <!-- no translation found for privatespace_search_description (983837656432484282) -->
- <skip />
- <!-- no translation found for privatespace_tap_tile_description (4146608898639668340) -->
- <skip />
- <!-- no translation found for privatespace_unlock_description (4132755357482447360) -->
- <skip />
- <!-- no translation found for privatespace_hide_off_summary (7227778747159633671) -->
- <skip />
- <!-- no translation found for privatespace_hide_on_summary (6136704537527640183) -->
- <skip />
+ <string name="private_space_hide_title" msgid="8687034008994037610">"Amaga quan estigui bloquejat"</string>
+ <string name="privatespace_hide_page_title" msgid="972581369094289386">"Amaga Espai privat quan estigui bloquejat"</string>
+ <string name="privatespace_hide_page_summary" msgid="1052569521186403642">"Per evitar que altres persones sàpiguen que tens Espai privat, pots amagar-lo de la llista d\'apps"</string>
+ <string name="privatespace_access_header" msgid="982809349769470185">"Accedeix a Espai privat quan està amagat"</string>
+ <string name="privatespace_search_description" msgid="983837656432484282">"Cerca \"Espai privat\" a la barra de cerca"</string>
+ <string name="privatespace_tap_tile_description" msgid="4146608898639668340">"Toca la icona d\'Espai privat"</string>
+ <string name="privatespace_unlock_description" msgid="4132755357482447360">"Desbloqueja Espai privat"</string>
+ <string name="privatespace_hide_off_summary" msgid="7227778747159633671">"Desactivat"</string>
+ <string name="privatespace_hide_on_summary" msgid="6136704537527640183">"Activat"</string>
<string name="private_space_category_system" msgid="1286843321867285700">"Sistema"</string>
<string name="private_space_create_title" msgid="47273568884806726">"Crea un espai privat"</string>
<string name="private_space_delete_title" msgid="3075645119800272800">"Suprimeix l\'espai privat"</string>
@@ -570,54 +564,30 @@
<string name="no_device_lock_summary" msgid="7653477413589207824">"Per utilitzar l\'espai privat, defineix un bloqueig de pantalla."</string>
<string name="no_device_lock_action_label" msgid="2640487005629001288">"Defineix un bloqueig de pantalla"</string>
<string name="no_device_lock_cancel" msgid="4412602160321228863">"Cancel·la"</string>
- <!-- no translation found for privatespace_cancel_label (362351004019511784) -->
- <skip />
- <!-- no translation found for privatespace_setup_button_label (3696372546231047258) -->
- <skip />
- <!-- no translation found for privatespace_setup_title (177623114624330394) -->
- <skip />
- <!-- no translation found for privatespace_hide_apps_summary (4016518749055602268) -->
- <skip />
- <!-- no translation found for privatespace_how_title (8794102046435526065) -->
- <skip />
- <!-- no translation found for privatespace_access_bottom_text (1075244097441349030) -->
- <skip />
- <!-- no translation found for privatespace_protected_lock_text (7320604832432017423) -->
- <skip />
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_cancel_label" msgid="362351004019511784">"Cancel·la"</string>
+ <string name="privatespace_setup_button_label" msgid="3696372546231047258">"Configura"</string>
+ <string name="privatespace_setup_title" msgid="177623114624330394">"Configura Espai privat"</string>
+ <string name="privatespace_hide_apps_summary" msgid="4016518749055602268">"Amaga aplicacions privades en un espai segur a què només pots accedir tu"</string>
+ <string name="privatespace_how_title" msgid="8794102046435526065">"Com funciona"</string>
+ <string name="privatespace_access_bottom_text" msgid="1075244097441349030">"Pots accedir a Espai privat des del final de la llista d\'aplicacions"</string>
+ <string name="privatespace_protected_lock_text" msgid="7320604832432017423">"Les aplicacions que hi ha a Espai privat estan protegides amb un bloqueig"</string>
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"Quan està bloquejat, les notificacions de les aplicacions d\'Espai privat s\'amaguen"</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"Les aplicacions d\'Espai privat no es mostraran al gestor de permisos, al tauler de privadesa ni en altres opcions de configuració quan Espai privat estigui bloquejat"</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"S\'està configurant Espai privat…"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"Espai privat està protegit amb un bloqueig"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"La informació d\'ús de les aplicacions d\'Espai privat s\'amaga quan està bloquejat"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"Accedeix a Espai privat des de la llista d\'aplicacions"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"No s\'ha pogut configurar Espai privat"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"Torna-ho a provar ara o torna més tard"</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"Torna-ho a provar"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"Vols desbloquejar amb el bloqueig de pantalla?"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"Pots desbloquejar Espai privat de la mateixa manera que desbloqueges el dispositiu, o triar un altre bloqueig"</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"Utilitza el bloqueig de pantalla"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"Tria un bloqueig nou"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"Tot a punt!"</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"Per accedir a Espai privat, llisca cap amunt des de la part interior de la pantalla d\'inici i, a continuació, desplaça\'t cap avall"</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"Fet"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"Desplaça\'t cap avall per accedir a Espai privat"</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"Pots afegir un màxim de <xliff:g id="COUNT">%d</xliff:g> empremtes digitals"</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"Has afegit el nombre màxim d\'empremtes digitals"</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"No es poden afegir més empremtes digitals"</string>
@@ -1135,8 +1105,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"Continua utilitzant les aplicacions amb el dispositiu plegat"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"Smooth Display"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"Augmenta automàticament la freqüència d\'actualització fins a <xliff:g id="ID_1">%1$d</xliff:g> Hz en alguns continguts. Augmenta l\'ús de la bateria."</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"Força la freqüència d\'actualització màxima"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"La freqüència d\'actualització més alta millora la resposta tàctil i la qualitat de les animacions. Augmenta l\'ús de la bateria."</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"Atenció a la pantalla"</string>
@@ -1372,6 +1341,7 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"Configuració comuna"</string>
<string name="apn_settings" msgid="4295467389400441299">"APN"</string>
<string name="apn_edit" msgid="2003683641840248741">"Edita el punt d\'accés"</string>
+ <string name="apn_add" msgid="9069613192201630934">"Afegeix un punt d\'accés"</string>
<string name="apn_not_set" msgid="8246646433109750293">"No definit"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"No definit"</string>
<string name="apn_name" msgid="6677695784108157953">"Nom"</string>
@@ -2006,12 +1976,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"Utilitza el botó d\'accessibilitat per obrir"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"Per obrir, mantén premudes les tecles de volum"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"Per obrir, fes triple toc a la pantalla"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"Fes triple toc a la pantalla amb dos dits per obrir"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"Utilitza un gest per obrir"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"Utilitza el gest d\'accessibilitat"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"Per utilitzar aquesta funció, toca el botó d\'accessibilitat <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> a la part inferior de la pantalla.\n\nPer canviar entre funcions, mantén premut el botó d\'accessibilitat."</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"Per utilitzar aquesta funció, toca el botó d\'accessibilitat de la pantalla."</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"Per utilitzar aquesta funció, mantén premudes les dues tecles de volum."</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"Per iniciar o aturar l\'ampliació, fes triple toc en qualsevol punt de la pantalla."</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"Per iniciar o aturar l\'ampliació, fes triple toc en qualsevol punt de la pantalla amb dos dits."</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"Per utilitzar aquesta funció, llisca cap amunt amb 2 dits des de la part inferior de la pantalla.\n\nPer canviar entre funcions, llisca cap amunt amb 2 dits i mantén premut."</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"Per utilitzar aquesta funció, llisca cap amunt amb 3 dits des de la part inferior de la pantalla.\n\nPer canviar entre funcions, llisca cap amunt amb 3 dits i mantén premut."</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"Per utilitzar una funció d\'accessibilitat, llisca cap amunt amb 2 dits des de la part inferior de la pantalla.\n\nPer canviar entre funcions, llisca cap amunt amb 2 dits i mantén premut."</string>
@@ -2033,12 +2005,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"Mantén premudes les tecles de volum"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"mantén premudes les tecles de volum"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"Mantén premudes les dues tecles de volum"</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"Fes triple toc a la pantalla amb dos dits"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"fes triple toc a la pantalla amb dos dits"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"Toca ràpidament la pantalla {0,number,integer} vegades amb dos dits"</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"Fes tres tocs a la pantalla"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"fes tres tocs a la pantalla"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"Toca ràpidament la pantalla {0,number,integer} vegades. És possible que aquesta drecera alenteixi el dispositiu."</string>
@@ -2336,6 +2305,8 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"Si limites l\'activitat en segon pla d\'una aplicació, és possible que no funcioni correctament"</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"Com que aquesta aplicació no s\'ha configurat per optimitzar la bateria, no pots restringir-la.\n\nPer restringir l\'aplicació, activa l\'optimització de la bateria."</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"Gestiona l\'ús de la bateria"</string>
+ <string name="manager_battery_usage_allow_background_usage_title" msgid="6294649996820358852">"Permet l\'ús en segon pla"</string>
+ <string name="manager_battery_usage_allow_background_usage_summary" msgid="8021153755201340819">"Activa per a actualitzacions en temps real; desactiva per estalviar bateria"</string>
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"Sense restriccions"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"Optimitzat"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"Restringit"</string>
@@ -3846,6 +3817,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"Permet l\'accés per gestionar tots els fitxers"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"Permet que aquesta aplicació llegeixi, modifiqui i suprimeixi tots els fitxers d\'aquest dispositiu o de qualsevol volum d\'emmagatzematge connectat. L\'aplicació podrà accedir als fitxers sense el teu coneixement explícit."</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"Pot accedir a tots els fitxers"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"Notificacions de pantalla completa"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"Permet les notificacions de pantalla completa d\'aquesta aplicació"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"Permet que aquesta aplicació mostri notificacions que ocupen tota la pantalla quan el dispositiu està bloquejat. Les aplicacions poden utilitzar aquesta opció per destacar alarmes, trucades entrants o altres notificacions urgents."</string>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index 2e49d69..d6f16c9 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -135,8 +135,11 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"Dotykové pero"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"Sdílení zvuku"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"Sdílet zvuk"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
- <skip />
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"Hovory a budíky"</string>
+ <string name="audio_sharing_streams_category_title" msgid="862958129650324581">"Připojení ke zvukovému streamu LE Audio"</string>
+ <string name="audio_sharing_streams_pref_title" msgid="4636293245167657721">"Okolní zvukové streamy"</string>
+ <string name="audio_sharing_streams_title" msgid="8269455097512153101">"Zvukové streamy"</string>
+ <string name="audio_sharing_streams_qr_code_summary" msgid="4231875597377863735">"Připojení ke zvukovému streamu pomocí QR kódu"</string>
<string name="date_and_time" msgid="1788358029823431692">"Datum a čas"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"Proxy server"</string>
<string name="proxy_clear_text" msgid="6529658759984031149">"Vymazat"</string>
@@ -540,24 +543,15 @@
<string name="private_space_title" msgid="7078627930195569767">"Soukromý prostor"</string>
<string name="private_space_summary" msgid="8237652417163408001">"Skrýt aplikace v soukromé složce"</string>
<string name="private_space_one_lock_title" msgid="7306547190751832568">"Odemknout pomocí zámku obrazovky"</string>
- <!-- no translation found for private_space_hide_title (8687034008994037610) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_title (972581369094289386) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_summary (1052569521186403642) -->
- <skip />
- <!-- no translation found for privatespace_access_header (982809349769470185) -->
- <skip />
- <!-- no translation found for privatespace_search_description (983837656432484282) -->
- <skip />
- <!-- no translation found for privatespace_tap_tile_description (4146608898639668340) -->
- <skip />
- <!-- no translation found for privatespace_unlock_description (4132755357482447360) -->
- <skip />
- <!-- no translation found for privatespace_hide_off_summary (7227778747159633671) -->
- <skip />
- <!-- no translation found for privatespace_hide_on_summary (6136704537527640183) -->
- <skip />
+ <string name="private_space_hide_title" msgid="8687034008994037610">"Při uzamčení skrýt"</string>
+ <string name="privatespace_hide_page_title" msgid="972581369094289386">"Při uzamčení soukromý prostor skrýt"</string>
+ <string name="privatespace_hide_page_summary" msgid="1052569521186403642">"Pokud chcete, aby o soukromém prostoru ve vašem zařízení nikdo nevěděl, můžete ho skrýt ze seznamu aplikací"</string>
+ <string name="privatespace_access_header" msgid="982809349769470185">"Přístup do soukromého prostoru, když je skrytý"</string>
+ <string name="privatespace_search_description" msgid="983837656432484282">"Ve vyhledávacím poli vyhledejte text „soukromý prostor“."</string>
+ <string name="privatespace_tap_tile_description" msgid="4146608898639668340">"Klepněte na dlaždici Soukromý prostor"</string>
+ <string name="privatespace_unlock_description" msgid="4132755357482447360">"Odemknutí soukromého prostoru"</string>
+ <string name="privatespace_hide_off_summary" msgid="7227778747159633671">"Vypnuto"</string>
+ <string name="privatespace_hide_on_summary" msgid="6136704537527640183">"Zapnuto"</string>
<string name="private_space_category_system" msgid="1286843321867285700">"Systém"</string>
<string name="private_space_create_title" msgid="47273568884806726">"Vytvořit soukromý prostor"</string>
<string name="private_space_delete_title" msgid="3075645119800272800">"Smazat soukromý prostor"</string>
@@ -570,54 +564,30 @@
<string name="no_device_lock_summary" msgid="7653477413589207824">"Pokud chcete používat soukromý prostor, nastavte na tomto zařízení zámek obrazovky."</string>
<string name="no_device_lock_action_label" msgid="2640487005629001288">"Nastavit zámek obrazovky"</string>
<string name="no_device_lock_cancel" msgid="4412602160321228863">"Zrušit"</string>
- <!-- no translation found for privatespace_cancel_label (362351004019511784) -->
- <skip />
- <!-- no translation found for privatespace_setup_button_label (3696372546231047258) -->
- <skip />
- <!-- no translation found for privatespace_setup_title (177623114624330394) -->
- <skip />
- <!-- no translation found for privatespace_hide_apps_summary (4016518749055602268) -->
- <skip />
- <!-- no translation found for privatespace_how_title (8794102046435526065) -->
- <skip />
- <!-- no translation found for privatespace_access_bottom_text (1075244097441349030) -->
- <skip />
- <!-- no translation found for privatespace_protected_lock_text (7320604832432017423) -->
- <skip />
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_cancel_label" msgid="362351004019511784">"Zrušit"</string>
+ <string name="privatespace_setup_button_label" msgid="3696372546231047258">"Nastavit"</string>
+ <string name="privatespace_setup_title" msgid="177623114624330394">"Nastavení soukromého prostoru"</string>
+ <string name="privatespace_hide_apps_summary" msgid="4016518749055602268">"Skryjte soukromé aplikace do zabezpečeného prostoru přístupného pouze pro vás"</string>
+ <string name="privatespace_how_title" msgid="8794102046435526065">"Jak to funguje"</string>
+ <string name="privatespace_access_bottom_text" msgid="1075244097441349030">"Soukromý prostor můžete otevřít ze spodní části seznamu aplikací"</string>
+ <string name="privatespace_protected_lock_text" msgid="7320604832432017423">"Aplikace v soukromém prostoru jsou chráněny zámkem"</string>
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"Když je soukromý prostor uzamčen, jsou oznámení aplikací v soukromém prostoru skryta"</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"Když je soukromý prostor uzamčen, aplikace v soukromém prostoru se nezobrazují ve správci oprávnění, na panelu ochrany soukromí ani v dalších nastaveních"</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"Nastavování soukromého prostoru…"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"Soukromý prostor je chráněn zámkem"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"Když je soukromý prostor uzamčen, informace o využití aplikací v soukromém prostoru jsou skryty"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"Přístup k soukromému prostoru ze seznamu aplikací"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"Soukromý prostor se nepodařilo nastavit"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"Zkuste to teď znovu nebo se vraťte později"</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"Zkusit znovu"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"Použít k odemknutí zámek obrazovky?"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"Soukromý prostor můžete odemykat stejně, jako odemykáte své zařízení, nebo můžete zvolit jiný zámek"</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"Použít zámek obrazovky"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"Zvolit nový zámek"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"Hotovo!"</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"Pokud chcete získat přístup k soukromému prostoru, přejeďte prstem ze spodní části plochy nahoru a poté přejděte dolů"</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"Hotovo"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"Pokud chcete otevřít soukromý prostor, přejděte dolů"</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"Maximální počet otisků prstů, které lze přidat: <xliff:g id="COUNT">%d</xliff:g>"</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"Přidali jste maximální počet otisků prstů"</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"Další otisky prstů nelze přidat"</string>
@@ -1135,8 +1105,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"Při složení pokračovat v používání aplikací"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"Plynulé zobrazení"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"U některého obsahu automaticky zvýší obnovovací frekvenci až na <xliff:g id="ID_1">%1$d</xliff:g> Hz. Zvyšuje využití baterie."</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"Vynutit nejvyšší obnovovací frekvenci"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"Vyšší obnovovací frekvence za účelem vylepšení responzivity klepnutí a kvality animace. Zvyšuje využití baterie."</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"Vnímavá obrazovka"</string>
@@ -1372,6 +1341,7 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"Komunální nastavení"</string>
<string name="apn_settings" msgid="4295467389400441299">"Přístupové body"</string>
<string name="apn_edit" msgid="2003683641840248741">"Upravit přístupový bod"</string>
+ <string name="apn_add" msgid="9069613192201630934">"Přidání přístupového bodu"</string>
<string name="apn_not_set" msgid="8246646433109750293">"Nenastaveno"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"Nenastaveno"</string>
<string name="apn_name" msgid="6677695784108157953">"Název"</string>
@@ -2006,12 +1976,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"Otevření pomocí tlačítka přístupnosti"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"Otevřete podržením tlačítek hlasitosti"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"Otevřete trojitým klepnutím na obrazovku"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"Otevření provedete trojitým klepnutím dvěma prsty na obrazovku"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"Otevření gestem"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"Použití gesta přístupnosti"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"Tuto funkci použijete klepnutím na tlačítko Přístupnost <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> v dolní části obrazovky.\n\nChcete-li přepnout mezi funkcemi, tlačítko Přístupnost podržte."</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"Pokud chcete použít tuto funkci, klepněte na tlačítko přístupnosti."</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"Tuto funkci použijete tak, že stisknete a podržíte obě tlačítka hlasitosti."</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"Zvětšení aktivujete nebo deaktivujete trojitým klepnutím kamkoliv na obrazovce."</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"Zvětšení aktivujete nebo deaktivujete trojitým klepnutím dvěma prsty kamkoliv na obrazovku."</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"Tuto funkci použijete tak, že přejedete dvěma prsty z dolního okraje obrazovky nahoru.\n\nPokud chcete přepnout mezi funkcemi, přejeďte dvěma prsty nahoru a podržte je."</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"Tuto funkci použijete tak, že přejedete třemi prsty z dolního okraje obrazovky nahoru.\n\nChcete-li přepnout mezi funkcemi, přejeďte třemi prsty nahoru a podržte je."</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"Funkce pro usnadnění přístupu použijete tak, že přejedete dvěma prsty z dolního okraje obrazovky nahoru.\n\nPokud chcete přepnout mezi funkcemi, přejeďte dvěma prsty nahoru a podržte je."</string>
@@ -2033,12 +2005,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"Podržení tlačítek hlasitosti"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"podržení tlačítek hlasitosti"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"Podržte obě tlačítka hlasitosti"</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"Tojité klepnutí na obrazovku dvěma prsty"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"trojité klepnutí na obrazovku dvěma prsty"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"Rychle {0,number,integer}krát klepnout na obrazovku dvěma prsty"</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"Trojité klepnutí na obrazovku"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"trojité klepnutí na obrazovku"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"Rychle {0,number,integer}krát klepněte na obrazovku. Tato zkratka může zařízení zpomalit."</string>
@@ -2336,6 +2305,8 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"Pokud u aplikace omezíte aktivitu na pozadí, může dojít k nepředvídatelnému chování"</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"Aplikace není nastavena k optimalizaci baterie, nelze ji tedy omezit.\n\nChcete-li ji omezit, nejprve zapněte optimalizaci."</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"Správa využití baterie"</string>
+ <string name="manager_battery_usage_allow_background_usage_title" msgid="6294649996820358852">"Povolení použití na pozadí"</string>
+ <string name="manager_battery_usage_allow_background_usage_summary" msgid="8021153755201340819">"Aktivujte, pokud máte zájem o aktualizace v reálném čase, deaktivujte, pokud chcete šetřit baterii"</string>
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"Neomezeno"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"Optimalizováno"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"Omezeno"</string>
@@ -3846,6 +3817,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"Povolit přístup ke správě všech souborů"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"Když tuto možnost povolíte, aplikace bude moci načítat, upravovat a mazat soubory v tomto zařízení a v připojených úložištích. Aplikace bude mít přístup k souborům i bez vašeho vědomí."</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"Mají přístup ke všem souborům"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"Oznámení na celou obrazovku"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"Povolte oznámení z této aplikace na celou obrazovku"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"Povolte této aplikaci zobrazovat oznámení na celou obrazovku, když bude zařízení zamknuté. Aplikace tak mohou zvýraznit budíky, příchozí hovory a další důležitá oznámení."</string>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index bee6042..07c9b11 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -135,7 +135,14 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"Styluspen"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"Deling af lyd"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"Del lyd"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"Opkald og alarmer"</string>
+ <!-- no translation found for audio_sharing_streams_category_title (862958129650324581) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_pref_title (4636293245167657721) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_title (8269455097512153101) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_qr_code_summary (4231875597377863735) -->
<skip />
<string name="date_and_time" msgid="1788358029823431692">"Dato og klokkeslæt"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"Proxy"</string>
@@ -540,24 +547,15 @@
<string name="private_space_title" msgid="7078627930195569767">"Privat rum"</string>
<string name="private_space_summary" msgid="8237652417163408001">"Skjul apps i en privat mappe"</string>
<string name="private_space_one_lock_title" msgid="7306547190751832568">"Lås op ved hjælp af en skærmlås"</string>
- <!-- no translation found for private_space_hide_title (8687034008994037610) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_title (972581369094289386) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_summary (1052569521186403642) -->
- <skip />
- <!-- no translation found for privatespace_access_header (982809349769470185) -->
- <skip />
- <!-- no translation found for privatespace_search_description (983837656432484282) -->
- <skip />
- <!-- no translation found for privatespace_tap_tile_description (4146608898639668340) -->
- <skip />
- <!-- no translation found for privatespace_unlock_description (4132755357482447360) -->
- <skip />
- <!-- no translation found for privatespace_hide_off_summary (7227778747159633671) -->
- <skip />
- <!-- no translation found for privatespace_hide_on_summary (6136704537527640183) -->
- <skip />
+ <string name="private_space_hide_title" msgid="8687034008994037610">"Skjul, når det er låst"</string>
+ <string name="privatespace_hide_page_title" msgid="972581369094289386">"Skjul det private rum, når det er låst"</string>
+ <string name="privatespace_hide_page_summary" msgid="1052569521186403642">"Hvis andre ikke må kende til det private rum på din enhed, kan du skjule det på listen over apps"</string>
+ <string name="privatespace_access_header" msgid="982809349769470185">"Åbn dit private rum, når det er skjult"</string>
+ <string name="privatespace_search_description" msgid="983837656432484282">"Søg efter \"privat rum\" i søgefeltet"</string>
+ <string name="privatespace_tap_tile_description" msgid="4146608898639668340">"Tryk på handlingsfeltet Privat rum"</string>
+ <string name="privatespace_unlock_description" msgid="4132755357482447360">"Lås dit private rum op"</string>
+ <string name="privatespace_hide_off_summary" msgid="7227778747159633671">"Fra"</string>
+ <string name="privatespace_hide_on_summary" msgid="6136704537527640183">"Til"</string>
<string name="private_space_category_system" msgid="1286843321867285700">"System"</string>
<string name="private_space_create_title" msgid="47273568884806726">"Opret et privat rum"</string>
<string name="private_space_delete_title" msgid="3075645119800272800">"Slet det private rum"</string>
@@ -570,54 +568,30 @@
<string name="no_device_lock_summary" msgid="7653477413589207824">"Konfigurer en skærmlås på enheden for at bruge private rum"</string>
<string name="no_device_lock_action_label" msgid="2640487005629001288">"Konfigurer skærmlås"</string>
<string name="no_device_lock_cancel" msgid="4412602160321228863">"Annuller"</string>
- <!-- no translation found for privatespace_cancel_label (362351004019511784) -->
- <skip />
- <!-- no translation found for privatespace_setup_button_label (3696372546231047258) -->
- <skip />
- <!-- no translation found for privatespace_setup_title (177623114624330394) -->
- <skip />
- <!-- no translation found for privatespace_hide_apps_summary (4016518749055602268) -->
- <skip />
- <!-- no translation found for privatespace_how_title (8794102046435526065) -->
- <skip />
- <!-- no translation found for privatespace_access_bottom_text (1075244097441349030) -->
- <skip />
- <!-- no translation found for privatespace_protected_lock_text (7320604832432017423) -->
- <skip />
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_cancel_label" msgid="362351004019511784">"Annuller"</string>
+ <string name="privatespace_setup_button_label" msgid="3696372546231047258">"Konfigurer"</string>
+ <string name="privatespace_setup_title" msgid="177623114624330394">"Konfigurer et privat rum"</string>
+ <string name="privatespace_hide_apps_summary" msgid="4016518749055602268">"Skjul private apps et sikkert sted, som kun du har adgang til"</string>
+ <string name="privatespace_how_title" msgid="8794102046435526065">"Sådan fungerer det"</string>
+ <string name="privatespace_access_bottom_text" msgid="1075244097441349030">"Du få adgang til det private rum nederst på din liste over apps"</string>
+ <string name="privatespace_protected_lock_text" msgid="7320604832432017423">"Apps i et privat rum er beskyttet af en lås"</string>
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"Notifikationer fra apps i det private rum er skjult, når det private rum er låst"</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"Apps i et privat rum vises ikke i tilladelsesmanager, privatlivspanelet eller andre indstillinger, når det private rum er låst"</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"Konfigurerer et privat rum…"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"Det private rum er beskyttet af en lås"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"Oplysninger om brug for apps i et privat rum er skjult, når det private rum er låst"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"Få adgang til dit private rum via din liste over apps"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"Det private rum kunne ikke konfigureres"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"Prøv igen nu, eller vend tilbage senere"</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"Prøv igen"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"Vil du bruge skærmlås til at låse op?"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"Du kan låse op for det private rum på samme måde, som du låser din enhed op, eller ved at vælge en anden lås"</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"Brug skærmlås"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"Vælg en ny lås"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"Det var det hele."</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"Stryg opad fra bunden af startskærmen, og rul ned for at få adgang til dit private rum"</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"Udfør"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"Rul ned for at få adgang til det private rum"</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"Du kan tilføje op til <xliff:g id="COUNT">%d</xliff:g> fingeraftryk"</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"Du har tilføjet det maksimale antal fingeraftryk"</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"Du kan ikke tilføje flere fingeraftryk"</string>
@@ -1135,8 +1109,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"Fortsæt med at bruge apps på Fold"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"Smooth Display"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"Øger automatisk opdateringshastigheden op til <xliff:g id="ID_1">%1$d</xliff:g> Hz for noget indhold. Medfører højere batteriforbrug."</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"Gennemtving højeste opdateringshastighed"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"Den højeste opdateringshastighed, som giver forbedret animationskvalitet og reaktionsevne ved berøring. Medfører højere batteriforbrug."</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"Opmærksom skærm"</string>
@@ -1372,6 +1345,8 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"Fælles indstillinger"</string>
<string name="apn_settings" msgid="4295467389400441299">"Adgangspunkter"</string>
<string name="apn_edit" msgid="2003683641840248741">"Rediger adgangspunkt"</string>
+ <!-- no translation found for apn_add (9069613192201630934) -->
+ <skip />
<string name="apn_not_set" msgid="8246646433109750293">"Ikke angivet"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"Ikke angivet"</string>
<string name="apn_name" msgid="6677695784108157953">"Navn"</string>
@@ -2006,12 +1981,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"Brug knappen til hjælpefunktioner til at åbne"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"Hold lydstyrkeknapperne nede for at åbne"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"Tryk tre gange på skærmen for at åbne"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"Tryk tre gange på skærmen med to fingre for at åbne"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"Brug en bevægelse til at åbne"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"Brug bevægelsen for hjælpefunktioner"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"Tryk på knappen til hjælpefunktioner <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> nederst på skærmen for at bruge denne funktion.\n\nDu kan skifte mellem funktioner ved at holde knappen til hjælpefunktioner nede."</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"Tryk på knappen til hjælpefunktioner på din skærm for at bruge denne funktion."</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"Hold begge lydstyrkeknapper nede for at bruge denne funktion."</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"Du kan starte og stoppe forstørrelse ved at trykke tre gange på skærmen."</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"Du kan starte og stoppe forstørrelse ved at trykke tre gange på skærmen med to fingre."</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"Stryg opad fra bunden af skærmen med to fingre for at bruge denne funktion.\n\nDu kan skifte mellem funktioner ved at stryge opad med to fingre og holde dem nede."</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"Stryg opad fra bunden af skærmen med tre fingre for at bruge denne funktion.\n\nDu kan skifte mellem funktioner ved at stryge opad med tre fingre og holde dem nede."</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"Stryg opad fra bunden af skærmen med to fingre for at bruge en hjælpefunktion.\n\nDu kan skifte mellem funktioner ved at stryge opad med to fingre og holde dem nede."</string>
@@ -2033,12 +2010,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"Hold lydstyrkeknapperne nede"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"hold lydstyrkeknapperne nede"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"Hold begge lydstyrkeknapper nede"</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"Tryk tre gange på skærmen med to fingre"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"tryk tre gange på skærmen med to fingre"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"Tryk hurtigt på skærmen {0,number,integer} gange med to fingre"</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"Tryk tre gange på skærmen"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"tryk tre gange på skærmen"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"Tryk hurtigt på skærmen {0,number,integer} gange. Denne genvej kan gøre din enhed langsommere"</string>
@@ -2336,6 +2310,10 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"Hvis du begrænser en apps baggrundsaktivitet, kan det medføre, at den ikke fungerer korrekt"</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"Appen kan ikke begrænses, da batterioptimering er deaktiveret.\n\nAktivér batterioptimering for at begrænse appen."</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"Administrer batteriforbrug"</string>
+ <!-- no translation found for manager_battery_usage_allow_background_usage_title (6294649996820358852) -->
+ <skip />
+ <!-- no translation found for manager_battery_usage_allow_background_usage_summary (8021153755201340819) -->
+ <skip />
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"Ubegrænset"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"Optimeret"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"Begrænset"</string>
@@ -3846,6 +3824,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"Tillad administrationsadgang til alle filer"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"Giv denne app tilladelse til at læse, ændre og slette alle filer på denne enhed eller andre tilsluttede lagringsløsninger. Hvis du giver tilladelse til dette, kan appen få adgang til dine filer, uden du specifikt bliver gjort opmærksom på det."</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"Kan få adgang til alle filer"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"Notifikationer i fuld skærm"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"Tillad notifikationer i fuld skærm fra denne app"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"Tillad appen at vise notifikationer, der fylder hele skærmen, når enheden er låst. Apps kan benytte denne mulighed til at fremhæve alarmer, indgående opkald og andre presserende notifikationer."</string>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index 047db86..d09edb4 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -135,7 +135,14 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"Eingabestift"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"Audiofreigabe"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"Audioinhalte freigeben"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"Anrufe und Wecker"</string>
+ <!-- no translation found for audio_sharing_streams_category_title (862958129650324581) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_pref_title (4636293245167657721) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_title (8269455097512153101) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_qr_code_summary (4231875597377863735) -->
<skip />
<string name="date_and_time" msgid="1788358029823431692">"Datum & Uhrzeit"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"Proxy"</string>
@@ -584,40 +591,23 @@
<skip />
<!-- no translation found for privatespace_protected_lock_text (7320604832432017423) -->
<skip />
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"Benachrichtigungen von Apps im privaten Bereich werden nicht angezeigt, wenn dieser gesperrt ist"</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"Apps im privaten Bereich werden nicht im Berechtigungsmanager, im Privatsphäredashboard und in anderen Einstellungen angezeigt, wenn der private Bereich gesperrt ist"</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"Der private Bereich wird eingerichtet…"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"Der private Bereich ist durch eine Sperre geschützt"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"Informationen zur Nutzung von Apps im privaten Bereich sind verborgen, wenn dieser gesperrt ist"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"Über die App-Liste auf den privaten Bereich zugreifen"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"Der private Bereich konnte nicht eingerichtet werden"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"Du kannst es jetzt oder später noch einmal versuchen"</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"Wiederholen"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"Displaysperre zum Entsperren verwenden?"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"Du kannst den privaten Bereich auf dieselbe Weise entsperren wie dein Gerät oder eine andere Sperre auswählen"</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"Displaysperre verwenden"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"Neue Sperre auswählen"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"Fertig!"</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"Wische vom unteren Rand deines Startbildschirms nach oben und scrolle dann nach unten, um auf den privaten Bereich zuzugreifen"</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"Fertig"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"Scrolle nach unten, um auf den privaten Bereich zuzugreifen"</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"Du kannst bis zu <xliff:g id="COUNT">%d</xliff:g> Fingerabdrücke hinzufügen."</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"Du hast die maximale Anzahl an Fingerabdrücken hinzugefügt"</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"Es können keine Fingerabdrücke mehr hinzugefügt werden"</string>
@@ -1135,8 +1125,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"Apps weiterhin verwenden, wenn das Gerät zusammengeklappt ist"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"Smooth Display"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"Setzt die Aktualisierungsrate für einige Inhalte automatisch auf <xliff:g id="ID_1">%1$d</xliff:g> Hz herauf. Dadurch wird die Akkunutzung erhöht."</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"Maximale Aktualisierungsrate erzwingen"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"Höchste Aktualisierungsrate für bessere Touchscreen-Reaktion und flüssigere Animationen. Erhöhter Akkuverbrauch."</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"Aufmerksamkeitserkennung"</string>
@@ -1372,6 +1361,8 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"Gemeinschaftliche Einstellungen"</string>
<string name="apn_settings" msgid="4295467389400441299">"APNs"</string>
<string name="apn_edit" msgid="2003683641840248741">"Zugangspunkt bearbeiten"</string>
+ <!-- no translation found for apn_add (9069613192201630934) -->
+ <skip />
<string name="apn_not_set" msgid="8246646433109750293">"Nicht definiert"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"Nicht festgelegt"</string>
<string name="apn_name" msgid="6677695784108157953">"Name"</string>
@@ -2006,12 +1997,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"Zum Öffnen Schaltfläche „Bedienungshilfen“ nutzen"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"Zum Öffnen die Lautstärketasten gedrückt halten"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"Zum Öffnen dreimal auf das Display tippen"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"Zum Öffnen mit zwei Fingern dreimal auf das Display tippen"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"Zum Öffnen Touch-Geste verwenden"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"Touch-Geste für Bedienungshilfen verwenden"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"Wenn du diese Funktion verwenden möchtest, tippe unten auf dem Display auf die Schaltfläche \"Bedienungshilfen\" <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g>.\n\nWenn du zwischen den Funktionen wechseln möchtest, halte diese Schaltfläche gedrückt."</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"Tippe zum Verwenden dieser Funktion auf dem Display auf die Schaltfläche „Bedienungshilfen“."</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"Wenn du diese Funktion verwenden möchtest, halte beide Lautstärketasten gedrückt."</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"Tippe dreimal auf das Display, um die Vergrößerung zu starten oder zu beenden."</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"Tippe zum Starten oder Beenden der Vergrößerung mit zwei Fingern dreimal auf eine beliebige Stelle des Displays."</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"Wenn du diese Funktion verwenden möchtest, wische vom unteren Displayrand mit zwei Fingern nach oben.\n\nWenn du zwischen den Funktionen wechseln möchtest, wische mit zwei Fingern über das Display nach oben und halte."</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"Wenn du diese Funktion verwenden möchtest, wische vom unteren Displayrand mit drei Fingern nach oben.\n\nWenn du zwischen den Funktionen wechseln möchtest, wische mit drei Fingern über das Display nach oben und halte."</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"Wenn du eine Bedienungshilfe verwenden möchtest, wische vom unteren Displayrand mit zwei Fingern nach oben.\n\nWenn du zwischen den Funktionen wechseln möchtest, wische mit zwei Fingern über das Display nach oben und halte."</string>
@@ -2033,12 +2026,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"Lautstärketasten gedrückt halten"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"Lautstärketasten gedrückt halten"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"Halte beide Lautstärketasten gedrückt"</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"Mit zwei Fingern dreimal auf das Display tippen"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"mit zwei Fingern dreimal auf das Display tippen"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"Tippe {0,number,integer}-Mal schnell mit zwei Fingern auf das Display"</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"Dreimal auf den Bildschirm tippen"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"dreimal auf den Bildschirm tippen"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"Tippe {0,number,integer}-mal schnell auf das Display. Durch diesen Kurzbefehl kann dein Gerät langsamer werden."</string>
@@ -2336,6 +2326,10 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"Wenn du die Hintergrundaktivität einer App einschränkst, kann dies zu unerwünschtem Verhalten führen"</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"Da bei dieser App die Akkunutzung nicht optimiert wird, kannst du sie nicht einschränken.\n\nDu musst du zunächst die Akkuoptimierung aktivieren."</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"Akkunutzung verwalten"</string>
+ <!-- no translation found for manager_battery_usage_allow_background_usage_title (6294649996820358852) -->
+ <skip />
+ <!-- no translation found for manager_battery_usage_allow_background_usage_summary (8021153755201340819) -->
+ <skip />
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"Uneingeschränkt"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"Optimiert"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"Eingeschränkt"</string>
@@ -3846,6 +3840,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"Zugriff zum Verwalten aller Dateien zulassen"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"Du kannst dieser App erlauben, alle Dateien auf diesem Gerät und auf allen verbundenen Laufwerken zu lesen, zu ändern und zu löschen. Sie kann dann ohne deine explizite Zustimmung auf Dateien zugreifen."</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"Auf alle Dateien zugreifen"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"Vollbildbenachrichtigungen"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"Vollbildbenachrichtigungen von dieser App erlauben"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"Diese App darf Benachrichtigungen anzeigen, die das gesamte Display ausfüllen, wenn das Gerät gesperrt ist. Apps können diese verwenden, um Wecker, eingehende Anrufe oder andere dringende Benachrichtigungen hervorzuheben."</string>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index 0e913dd..a0d4bf6 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -135,8 +135,11 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"Γραφίδα"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"Κοινή χρήση ήχου"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"Κοινή χρήση ήχου"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
- <skip />
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"Κλήσεις και ξυπνητήρια"</string>
+ <string name="audio_sharing_streams_category_title" msgid="862958129650324581">"Σύνδεση σε ροή LE Audio"</string>
+ <string name="audio_sharing_streams_pref_title" msgid="4636293245167657721">"Κοντινές ροές ήχου"</string>
+ <string name="audio_sharing_streams_title" msgid="8269455097512153101">"Ροές ήχου"</string>
+ <string name="audio_sharing_streams_qr_code_summary" msgid="4231875597377863735">"Συνδεθείτε σε μια ροή ήχου χρησιμοποιώντας τον κωδικό QR"</string>
<string name="date_and_time" msgid="1788358029823431692">"Ημερομηνία & ώρα"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"Διακομιστής μεσολάβησης"</string>
<string name="proxy_clear_text" msgid="6529658759984031149">"Διαγραφή"</string>
@@ -540,24 +543,15 @@
<string name="private_space_title" msgid="7078627930195569767">"Ιδιωτικός χώρος"</string>
<string name="private_space_summary" msgid="8237652417163408001">"Απόκρυψη εφαρμογών σε ιδιωτικό φάκελο"</string>
<string name="private_space_one_lock_title" msgid="7306547190751832568">"Ξεκλείδωμα με χρήση κλειδώματος οθόνης"</string>
- <!-- no translation found for private_space_hide_title (8687034008994037610) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_title (972581369094289386) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_summary (1052569521186403642) -->
- <skip />
- <!-- no translation found for privatespace_access_header (982809349769470185) -->
- <skip />
- <!-- no translation found for privatespace_search_description (983837656432484282) -->
- <skip />
- <!-- no translation found for privatespace_tap_tile_description (4146608898639668340) -->
- <skip />
- <!-- no translation found for privatespace_unlock_description (4132755357482447360) -->
- <skip />
- <!-- no translation found for privatespace_hide_off_summary (7227778747159633671) -->
- <skip />
- <!-- no translation found for privatespace_hide_on_summary (6136704537527640183) -->
- <skip />
+ <string name="private_space_hide_title" msgid="8687034008994037610">"Απόκρυψη κατά το κλείδωμα"</string>
+ <string name="privatespace_hide_page_title" msgid="972581369094289386">"Απόκρυψη Ιδιωτικού χώρου κατά το κλείδωμα"</string>
+ <string name="privatespace_hide_page_summary" msgid="1052569521186403642">"Για να μην γνωρίζουν άλλοι τον Ιδιωτικό χώρο στη συσκευή σας, μπορείτε να τον κρύψετε από τη λίστα εφαρμογών"</string>
+ <string name="privatespace_access_header" msgid="982809349769470185">"Πρόσβαση στον Ιδιωτικό χώρο κατά την απόκρυψη"</string>
+ <string name="privatespace_search_description" msgid="983837656432484282">"Αναζητήστε τον Ιδιωτικό χώρο στη γραμμή αναζήτησης"</string>
+ <string name="privatespace_tap_tile_description" msgid="4146608898639668340">"Πατήστε το πλακάκι Ιδιωτικός χώρος"</string>
+ <string name="privatespace_unlock_description" msgid="4132755357482447360">"Ξεκλείδωμα του Ιδιωτικού χώρου"</string>
+ <string name="privatespace_hide_off_summary" msgid="7227778747159633671">"Ανενεργός"</string>
+ <string name="privatespace_hide_on_summary" msgid="6136704537527640183">"Ενεργός"</string>
<string name="private_space_category_system" msgid="1286843321867285700">"Σύστημα"</string>
<string name="private_space_create_title" msgid="47273568884806726">"Δημιουργία Ιδιωτικού χώρου"</string>
<string name="private_space_delete_title" msgid="3075645119800272800">"Διαγραφή Ιδιωτικού χώρου"</string>
@@ -570,54 +564,30 @@
<string name="no_device_lock_summary" msgid="7653477413589207824">"Για χρήση ιδιωτικού χώρου, ορίστε κλείδ. οθόνης στη συσκευή."</string>
<string name="no_device_lock_action_label" msgid="2640487005629001288">"Ρύθμιση κλειδώματος οθόνης"</string>
<string name="no_device_lock_cancel" msgid="4412602160321228863">"Ακύρωση"</string>
- <!-- no translation found for privatespace_cancel_label (362351004019511784) -->
- <skip />
- <!-- no translation found for privatespace_setup_button_label (3696372546231047258) -->
- <skip />
- <!-- no translation found for privatespace_setup_title (177623114624330394) -->
- <skip />
- <!-- no translation found for privatespace_hide_apps_summary (4016518749055602268) -->
- <skip />
- <!-- no translation found for privatespace_how_title (8794102046435526065) -->
- <skip />
- <!-- no translation found for privatespace_access_bottom_text (1075244097441349030) -->
- <skip />
- <!-- no translation found for privatespace_protected_lock_text (7320604832432017423) -->
- <skip />
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_cancel_label" msgid="362351004019511784">"Ακύρωση"</string>
+ <string name="privatespace_setup_button_label" msgid="3696372546231047258">"Ρύθμιση"</string>
+ <string name="privatespace_setup_title" msgid="177623114624330394">"Ρύθμιση Ιδιωτικού χώρου"</string>
+ <string name="privatespace_hide_apps_summary" msgid="4016518749055602268">"Κρύψτε τις ιδιωτικές εφαρμογές σε έναν ασφαλή χώρο στον οποίο μόνο εσείς έχετε πρόσβαση"</string>
+ <string name="privatespace_how_title" msgid="8794102046435526065">"Πώς λειτουργεί"</string>
+ <string name="privatespace_access_bottom_text" msgid="1075244097441349030">"Μπορείτε να αποκτήσετε πρόσβαση στον Ιδιωτικό χώρο από το κάτω μέρος της λίστας εφαρμογών"</string>
+ <string name="privatespace_protected_lock_text" msgid="7320604832432017423">"Οι εφαρμογές στον Ιδιωτικό χώρο προστατεύονται με κλείδωμα"</string>
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"Οι ειδοποιήσεις από εφαρμογές στον Ιδιωτικό χώρο είναι κρυφές όταν είναι κλειδωμένος"</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"Οι εφαρμογές στον Ιδιωτικό χώρο δεν θα εμφανίζονται στη Διαχείριση αδειών, στον πίνακα ελέγχου απορρήτου και σε άλλες ρυθμίσεις όταν ο Ιδιωτικός χώρος είναι κλειδωμένος"</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"Ρύθμιση Ιδιωτικού χώρου…"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"Ο Ιδιωτικός χώρος προστατεύεται με κλείδωμα"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"Οι πληροφορίες χρήσης για τις εφαρμογές στον Ιδιωτικό χώρο είναι κρυφές όταν είναι κλειδωμένος"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"Πρόσβαση στον Ιδιωτικό χώρο από τη λίστα εφαρμογών σας"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"Δεν είναι δυνατή η ρύθμιση του Ιδιωτικού χώρου"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"Δοκιμάστε ξανά τώρα ή επιστρέψτε αργότερα"</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"Επανάληψη"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"Χρήση κλειδώματος οθόνης για ξεκλείδωμα;"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"Μπορείτε να ξεκλειδώσετε τον Ιδιωτικό χώρο όπως ξεκλειδώνετε τη συσκευή σας ή να επιλέξετε διαφορετικό κλείδωμα"</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"Χρήση κλειδώματος οθόνης"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"Επιλογή νέου κλειδώματος"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"Όλα έτοιμα!"</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"Για να αποκτήσετε πρόσβαση στον Ιδιωτικό χώρο, σύρετε προς τα επάνω από το κάτω μέρος της αρχικής οθόνης και έπειτα κάντε κύλιση προς τα κάτω"</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"Τέλος"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"Κάντε κύλιση προς τα κάτω για πρόσβαση στον Ιδιωτικό χώρο"</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"Μπορείτε να προσθέσετε έως <xliff:g id="COUNT">%d</xliff:g> δακτυλικά αποτυπώματα"</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"Έχετε προσθέσει τον μέγιστο αριθμό δακτυλικών αποτυπωμάτων"</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"Δεν είναι δυνατή η προσθήκη περισσότερων δακτυλικών αποτυπωμάτων"</string>
@@ -1135,8 +1105,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"Συνέχιση χρήσης εφαρμογών κατά την αναδίπλωση"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"Smooth Display"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"Αυξάνει αυτόματα τον ρυθμό ανανέωσης έως και <xliff:g id="ID_1">%1$d</xliff:g> Hz για ορισμένο περιεχόμενο. Αυξάνει τη χρήση μπαταρίας."</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"Επιβολή μέγιστου ρυθμού ανανέωσης"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"Ο υψηλότερος δυνατός ρυθμός ανανέωσης για βελτιωμένη απόκριση αφής και ποιότητα κινούμενων εικόνων. Αυξάνει τη χρήση της μπαταρίας."</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"Παρακολούθηση οθόνης"</string>
@@ -1372,6 +1341,7 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"Κοινόχρηστες ρυθμίσεις"</string>
<string name="apn_settings" msgid="4295467389400441299">"APN"</string>
<string name="apn_edit" msgid="2003683641840248741">"Επεξ/σία σημ. πρόσβ."</string>
+ <string name="apn_add" msgid="9069613192201630934">"Προσθήκη σημείου πρόσβασης"</string>
<string name="apn_not_set" msgid="8246646433109750293">"Δεν έχει ρυθμιστεί"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"Δεν ορίστηκε"</string>
<string name="apn_name" msgid="6677695784108157953">"Όνομα"</string>
@@ -2006,12 +1976,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"Χρήση κουμπιού προσβασιμότητας για άνοιγμα"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"Παρατεταμένο πάτημα πλήκτρων έντασης για άνοιγμα"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"Πατήστε τρεις φορές για να ανοίξει η οθόνη"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"Τριπλό πάτημα οθόνης με δύο δάχτυλα για άνοιγμα"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"Χρήση κίνησης για άνοιγμα"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"Χρήση κίνησης προσβασιμότητας"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"Για να χρησιμοποιήσετε αυτήν τη λειτουργία, πατήστε το κουμπί προσβασιμότητας <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> στο κάτω μέρος της οθόνης.\n\nΓια εναλλαγή μεταξύ λειτουργιών, αγγίξτε παρατεταμένα το κουμπί προσβασιμότητας."</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"Για να χρησιμοποιήσετε αυτήν τη λειτουργία, πατήστε το κουμπί προσβασιμότητας στην οθόνη σας."</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"Για να χρησιμοποιήσετε αυτήν τη λειτουργία, πιέστε παρατεταμένα και τα δύο πλήκτρα έντασης ήχου."</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"Για έναρξη και διακοπή της μεγιστοποίησης, πατήστε τρεις φορές οπουδήποτε στην οθόνη σας."</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"Για έναρξη και διακοπή της μεγιστοποίησης, πατήστε τρεις φορές οπουδήποτε στην οθόνη με δύο δάχτυλα."</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"Για να χρησιμοποιήσετε αυτήν τη λειτουργία, σύρετε προς τα επάνω από το κάτω μέρος της οθόνης χρησιμοποιώντας 2 δάχτυλα.\n\nΓια εναλλαγή μεταξύ λειτουργιών, σύρετε προς τα επάνω με 2 και κρατήστε τα δάχτυλά σας στην οθόνη."</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"Για να χρησιμοποιήσετε αυτήν τη λειτουργία, σύρετε προς τα επάνω από το κάτω μέρος της οθόνης χρησιμοποιώντας 3 δάχτυλα.\n\nΓια εναλλαγή μεταξύ λειτουργιών, σύρετε προς τα επάνω με 3 και κρατήστε τα δάχτυλά σας στην οθόνη."</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"Για να χρησιμοποιήσετε μια λειτουργία προσβασιμότητας, σύρετε προς τα επάνω από το κάτω μέρος της οθόνης χρησιμοποιώντας 2 δάχτυλα.\n\nΓια εναλλαγή μεταξύ λειτουργιών, σύρετε προς τα επάνω με 2 δάχτυλα και κρατήστε τα δάχτυλά σας στην οθόνη."</string>
@@ -2033,12 +2005,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"Πατήστε παρατεταμένα τα πλήκτρα έντασης"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"παρατεταμένο πάτημα πλήκτρων έντασης"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"Πατήστε παρατεταμένα και τα δύο πλήκτρα έντασης ήχου."</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"Τριπλό πάτημα οθόνης με δύο δάχτυλα"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"τριπλό πάτημα οθόνης με δύο δάχτυλα"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"Πατήστε γρήγορα την οθόνη {0,number,integer} φορές με δύο δάχτυλα"</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"Τριπλό πάτημα οθόνης"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"τριπλό πάτημα οθόνης"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"Πατήστε γρήγορα στην οθόνη {0,number,integer} φορές. Αυτή η συντόμευση μπορεί να μειώσει την ταχύτητα της συσκευής σας."</string>
@@ -2336,6 +2305,8 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"Εάν περιορίσετε τη δραστηριότητα στο παρασκήνιο για μια εφαρμογή, μπορεί να μην λειτουργήσει σωστά"</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"Εφόσον δεν έχει οριστεί βελτιστοποίηση μπαταρίας, δεν είναι δυνατός ο περιορισμός της εφαρμογής.\n\nΓια περιορισμό, ενεργοποιήστε τη βελτιστοποίηση."</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"Διαχείριση χρήσης μπαταρίας"</string>
+ <string name="manager_battery_usage_allow_background_usage_title" msgid="6294649996820358852">"Επιτρέψτε τη χρήση στο παρασκήνιο"</string>
+ <string name="manager_battery_usage_allow_background_usage_summary" msgid="8021153755201340819">"Ενεργοποιήστε για ενημερώσεις σε πραγματικό χρόνο, απενεργοποιήστε για εξοικονόμηση μπαταρίας"</string>
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"Απεριόριστη"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"Βελτιστοποιημένη"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"Περιορισμένη"</string>
@@ -3846,6 +3817,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"Να επιτρέπεται η πρόσβαση για τη διαχείριση όλων των αρχείων"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"Να επιτρέπεται σε αυτή την εφαρμογή η ανάγνωση, η τροποποίηση και η διαγραφή όλων των αρχείων σε αυτήν τη συσκευή και σε κάθε συνδεδεμένη μονάδα αποθήκευσης. Εάν εκχωρηθούν σχετικά δικαιώματα, η εφαρμογή μπορεί να έχει πρόσβαση σε αρχεία χωρίς να έχετε ενημερωθεί ρητά."</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"Με πρόσβαση σε όλα τα αρχεία"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"Ειδοποιήσεις σε πλήρη οθόνη"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"Να επιτρέπονται οι ειδοποιήσεις σε πλήρη οθόνη από αυτή την εφαρμογή"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"Να επιτρέπεται στην εφαρμογή η εμφάνιση ειδοποιήσεων σε πλήρη οθόνη όταν η συσκευή είναι κλειδωμένη. Οι εφαρμογές ενδέχεται να χρησιμοποιούν αυτήν τη λειτουργία για επισήμανση ξυπνητηριών, εισερχόμενων κλήσεων ή άλλων επειγουσών ειδοποιήσεων."</string>
diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml
index 46068c4..80ca54f 100644
--- a/res/values-en-rAU/strings.xml
+++ b/res/values-en-rAU/strings.xml
@@ -135,7 +135,14 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"Stylus"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"Audio sharing"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"Share audio"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"Calls and alarms"</string>
+ <!-- no translation found for audio_sharing_streams_category_title (862958129650324581) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_pref_title (4636293245167657721) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_title (8269455097512153101) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_qr_code_summary (4231875597377863735) -->
<skip />
<string name="date_and_time" msgid="1788358029823431692">"Date and time"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"Proxy"</string>
@@ -540,24 +547,15 @@
<string name="private_space_title" msgid="7078627930195569767">"Private Space"</string>
<string name="private_space_summary" msgid="8237652417163408001">"Hide apps in a private folder"</string>
<string name="private_space_one_lock_title" msgid="7306547190751832568">"Unlock using screen lock"</string>
- <!-- no translation found for private_space_hide_title (8687034008994037610) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_title (972581369094289386) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_summary (1052569521186403642) -->
- <skip />
- <!-- no translation found for privatespace_access_header (982809349769470185) -->
- <skip />
- <!-- no translation found for privatespace_search_description (983837656432484282) -->
- <skip />
- <!-- no translation found for privatespace_tap_tile_description (4146608898639668340) -->
- <skip />
- <!-- no translation found for privatespace_unlock_description (4132755357482447360) -->
- <skip />
- <!-- no translation found for privatespace_hide_off_summary (7227778747159633671) -->
- <skip />
- <!-- no translation found for privatespace_hide_on_summary (6136704537527640183) -->
- <skip />
+ <string name="private_space_hide_title" msgid="8687034008994037610">"Hide when locked"</string>
+ <string name="privatespace_hide_page_title" msgid="972581369094289386">"Hide Private Space when locked"</string>
+ <string name="privatespace_hide_page_summary" msgid="1052569521186403642">"To stop other people knowing Private Space is on your device, you can hide it from your apps list"</string>
+ <string name="privatespace_access_header" msgid="982809349769470185">"Access Private Space when hidden"</string>
+ <string name="privatespace_search_description" msgid="983837656432484282">"Search for \'Private Space\' in the search bar"</string>
+ <string name="privatespace_tap_tile_description" msgid="4146608898639668340">"Tap the Private Space tile"</string>
+ <string name="privatespace_unlock_description" msgid="4132755357482447360">"Unlock your Private Space"</string>
+ <string name="privatespace_hide_off_summary" msgid="7227778747159633671">"Off"</string>
+ <string name="privatespace_hide_on_summary" msgid="6136704537527640183">"On"</string>
<string name="private_space_category_system" msgid="1286843321867285700">"System"</string>
<string name="private_space_create_title" msgid="47273568884806726">"Create Private Space"</string>
<string name="private_space_delete_title" msgid="3075645119800272800">"Delete Private Space"</string>
@@ -570,54 +568,30 @@
<string name="no_device_lock_summary" msgid="7653477413589207824">"To use Private Space, set a screen lock on this device."</string>
<string name="no_device_lock_action_label" msgid="2640487005629001288">"Set screen lock"</string>
<string name="no_device_lock_cancel" msgid="4412602160321228863">"Cancel"</string>
- <!-- no translation found for privatespace_cancel_label (362351004019511784) -->
- <skip />
- <!-- no translation found for privatespace_setup_button_label (3696372546231047258) -->
- <skip />
- <!-- no translation found for privatespace_setup_title (177623114624330394) -->
- <skip />
- <!-- no translation found for privatespace_hide_apps_summary (4016518749055602268) -->
- <skip />
- <!-- no translation found for privatespace_how_title (8794102046435526065) -->
- <skip />
- <!-- no translation found for privatespace_access_bottom_text (1075244097441349030) -->
- <skip />
- <!-- no translation found for privatespace_protected_lock_text (7320604832432017423) -->
- <skip />
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_cancel_label" msgid="362351004019511784">"Cancel"</string>
+ <string name="privatespace_setup_button_label" msgid="3696372546231047258">"Set up"</string>
+ <string name="privatespace_setup_title" msgid="177623114624330394">"Set up Private Space"</string>
+ <string name="privatespace_hide_apps_summary" msgid="4016518749055602268">"Hide private apps in a secure space that only you can access"</string>
+ <string name="privatespace_how_title" msgid="8794102046435526065">"How it works"</string>
+ <string name="privatespace_access_bottom_text" msgid="1075244097441349030">"You can access Private Space from the bottom of your apps list"</string>
+ <string name="privatespace_protected_lock_text" msgid="7320604832432017423">"Apps in Private Space are protected by a lock"</string>
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"Notifications from apps in Private Space are hidden when it’s locked"</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"Private Space apps won’t appear in permission manager, privacy dashboard and other settings when Private Space is locked"</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"Setting up Private Space…"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"Private Space is protected by a lock"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"Usage info for Private Space apps is hidden when it’s locked"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"Access Private Space from your apps list"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"Couldn’t set up Private Space"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"Try again now, or come back later"</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"Try again"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"Use screen lock to unlock?"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"You can unlock Private Space the same way you unlock your device, or choose a different lock"</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"Use screen lock"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"Choose new lock"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"All set!"</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"To access Private Space, swipe up from the bottom of your home screen, then scroll down"</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"Done"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"Scroll down to access Private Space"</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"You can add up to <xliff:g id="COUNT">%d</xliff:g> fingerprints"</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"You’ve added the maximum number of fingerprints"</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"Can’t add more fingerprints"</string>
@@ -1135,8 +1109,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"Continue using apps on fold"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"Smooth display"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"Automatically raises the refresh rate up to <xliff:g id="ID_1">%1$d</xliff:g> Hz for some content. Increases battery usage."</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"Force peak refresh rate"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"Highest refresh rate for improved touch responsiveness and animation quality. Increases battery usage."</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"Screen attention"</string>
@@ -1372,6 +1345,8 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"Communal settings"</string>
<string name="apn_settings" msgid="4295467389400441299">"APNs"</string>
<string name="apn_edit" msgid="2003683641840248741">"Edit access point"</string>
+ <!-- no translation found for apn_add (9069613192201630934) -->
+ <skip />
<string name="apn_not_set" msgid="8246646433109750293">"Not set"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"Not set"</string>
<string name="apn_name" msgid="6677695784108157953">"Name"</string>
@@ -2006,12 +1981,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"Use Accessibility button to open"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"Hold volume keys to open"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"Triple-tap screen to open"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"Two-finger triple tap screen to open"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"Use gesture to open"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"Use accessibility gesture"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"To use this feature, tap the accessibility button <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> on the bottom of your screen.\n\nTo switch between features, touch and hold the accessibility button."</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"To use this feature, tap the Accessibility button on your screen."</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"To use this feature, press and hold both volume keys."</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"To start and stop magnification, triple-tap anywhere on your screen."</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"To start and stop magnification, triple tap anywhere on your screen with two fingers."</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"To use this feature, swipe up from the bottom of the screen with two fingers.\n\nTo switch between features, swipe up with two fingers and hold."</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"To use this feature, swipe up from the bottom of the screen with three fingers.\n\nTo switch between features, swipe up with three fingers and hold."</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"To use an accessibility feature, swipe up from the bottom of the screen with two fingers.\n\nTo switch between features, swipe up with two fingers and hold."</string>
@@ -2033,12 +2010,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"Hold volume keys"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"hold volume keys"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"Press and hold both volume keys"</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"Two-finger triple tap screen"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"two-finger triple tap screen"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"Quickly tap screen {0,number,integer} times with two fingers"</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"Triple-tap screen"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"triple-tap screen"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"Quickly tap screen {0,number,integer} times. This shortcut may slow down your device"</string>
@@ -2336,6 +2310,10 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"If you limit background activity for an app, it may misbehave"</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"Since this app is not set to optimise battery, you can’t restrict it.\n\nTo restrict the app, first turn on battery optimisation."</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"Manage battery usage"</string>
+ <!-- no translation found for manager_battery_usage_allow_background_usage_title (6294649996820358852) -->
+ <skip />
+ <!-- no translation found for manager_battery_usage_allow_background_usage_summary (8021153755201340819) -->
+ <skip />
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"Unrestricted"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"Optimised"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"Restricted"</string>
@@ -3846,6 +3824,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"Allow access to manage all files"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"Allow this app to read, modify and delete all files on this device or any connected storage volumes. If granted, app may access files without your explicit knowledge."</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"Can access all files"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"Full-screen notifications"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"Allow full-screen notifications from this app"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"Allow this app to show notifications that take up the full screen when the device is locked. Apps may use these to highlight alarms, incoming calls or other urgent notifications."</string>
diff --git a/res/values-en-rCA/strings.xml b/res/values-en-rCA/strings.xml
index 1ac9204..90b3ce4 100644
--- a/res/values-en-rCA/strings.xml
+++ b/res/values-en-rCA/strings.xml
@@ -135,8 +135,11 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"Stylus"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"Audio sharing"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"Share audio"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
- <skip />
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"Calls and alarms"</string>
+ <string name="audio_sharing_streams_category_title" msgid="862958129650324581">"Connect to a LE audio stream"</string>
+ <string name="audio_sharing_streams_pref_title" msgid="4636293245167657721">"Nearby audio streams"</string>
+ <string name="audio_sharing_streams_title" msgid="8269455097512153101">"Audio streams"</string>
+ <string name="audio_sharing_streams_qr_code_summary" msgid="4231875597377863735">"Connect to an audio stream using QR code"</string>
<string name="date_and_time" msgid="1788358029823431692">"Date and time"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"Proxy"</string>
<string name="proxy_clear_text" msgid="6529658759984031149">"Clear"</string>
@@ -568,40 +571,23 @@
<string name="privatespace_how_title" msgid="8794102046435526065">"How it works"</string>
<string name="privatespace_access_bottom_text" msgid="1075244097441349030">"You can access Private Space from the bottom of your apps list"</string>
<string name="privatespace_protected_lock_text" msgid="7320604832432017423">"Apps in Private Space are protected by a lock"</string>
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"Notifications from apps in Private Space are hidden when it’s locked"</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"Private Space apps won’t appear in permission manager, privacy dashboard, and other settings when Private Space is locked"</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"Setting up Private Space…"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"Private Space is protected by a lock"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"Usage info for Private Space apps is hidden when it’s locked"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"Access Private Space from your apps list"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"Couldn’t set up Private Space"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"Try again now, or come back later"</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"Try Again"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"Use screen lock to unlock?"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"You can unlock Private Space the same way you unlock your device, or choose a different lock"</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"Use screen lock"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"Choose new lock"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"All set!"</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"To access Private Space, swipe up from the bottom of your home screen, then scroll down"</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"Done"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"Scroll down to access Private Space"</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"You can add up to <xliff:g id="COUNT">%d</xliff:g> fingerprints"</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"You’ve added the maximum number of fingerprints"</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"Can’t add more fingerprints"</string>
@@ -1119,8 +1105,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"Continue using apps on fold"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"Smooth Display"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"Automatically raises the refresh rate up to <xliff:g id="ID_1">%1$d</xliff:g> Hz for some content. Increases battery usage."</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"Force peak refresh rate"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"Highest refresh rate for improved touch responsiveness & animation quality. Increases battery usage."</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"Screen attention"</string>
@@ -1356,6 +1341,7 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"Communal settings"</string>
<string name="apn_settings" msgid="4295467389400441299">"APNs"</string>
<string name="apn_edit" msgid="2003683641840248741">"Edit access point"</string>
+ <string name="apn_add" msgid="9069613192201630934">"Add access point"</string>
<string name="apn_not_set" msgid="8246646433109750293">"Not set"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"Not set"</string>
<string name="apn_name" msgid="6677695784108157953">"Name"</string>
@@ -1990,12 +1976,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"Use accessibility button to open"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"Hold volume keys to open"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"Triple-tap screen to open"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"Two finger triple tap screen to open"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"Use gesture to open"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"Use accessibility gesture"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"To use this feature, tap the accessibility button <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> on the bottom of your screen.\n\nTo switch between features, touch and hold the accessibility button."</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"To use this feature, tap the accessibility button on your screen."</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"To use this feature, press and hold both volume keys."</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"To start and stop magnification, triple-tap anywhere on your screen."</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"To start and stop magnification, triple-tap anywhere on your screen with two fingers."</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"To use this feature, swipe up from the bottom of the screen with 2 fingers.\n\nTo switch between features, swipe up with 2 fingers and hold."</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"To use this feature, swipe up from the bottom of the screen with 3 fingers.\n\nTo switch between features, swipe up with 3 fingers and hold."</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"To use an accessibility feature, swipe up from the bottom of the screen with 2 fingers.\n\nTo switch between features, swipe up with 2 fingers and hold."</string>
@@ -2017,12 +2005,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"Hold volume keys"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"hold volume keys"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"Press and hold both volume keys"</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"Two-finger triple-tap screen"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"two-finger triple-tap screen"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"Quickly tap screen {0,number,integer} times with two fingers"</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"Triple-tap screen"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"triple-tap screen"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"Quickly tap screen {0,number,integer} times. This shortcut may slow down your device"</string>
@@ -2320,6 +2305,8 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"If you limit background activity for an app, it may misbehave"</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"Since this app is not set to optimize battery, you can\'t restrict it.\n\nTo restrict the app, first turn on battery optimization."</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"Manage battery usage"</string>
+ <string name="manager_battery_usage_allow_background_usage_title" msgid="6294649996820358852">"Allow background usage"</string>
+ <string name="manager_battery_usage_allow_background_usage_summary" msgid="8021153755201340819">"Enable for real-time updates, disable to save battery"</string>
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"Unrestricted"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"Optimized"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"Restricted"</string>
@@ -3830,6 +3817,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"Allow access to manage all files"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"Allow this app to read, modify and delete all files on this device or any connected storage volumes. If granted, app may access files without your explicit knowledge."</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"Can access all files"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"Full screen notifications"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"Allow full screen notifications from this app"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"Allow this app to show notifications that take up the full screen when the device is locked. Apps may use these to highlight alarms, incoming calls, or other urgent notifications."</string>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index a79cdb3..3ff500a 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -135,7 +135,14 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"Stylus"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"Audio sharing"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"Share audio"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"Calls and alarms"</string>
+ <!-- no translation found for audio_sharing_streams_category_title (862958129650324581) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_pref_title (4636293245167657721) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_title (8269455097512153101) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_qr_code_summary (4231875597377863735) -->
<skip />
<string name="date_and_time" msgid="1788358029823431692">"Date and time"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"Proxy"</string>
@@ -540,24 +547,15 @@
<string name="private_space_title" msgid="7078627930195569767">"Private Space"</string>
<string name="private_space_summary" msgid="8237652417163408001">"Hide apps in a private folder"</string>
<string name="private_space_one_lock_title" msgid="7306547190751832568">"Unlock using screen lock"</string>
- <!-- no translation found for private_space_hide_title (8687034008994037610) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_title (972581369094289386) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_summary (1052569521186403642) -->
- <skip />
- <!-- no translation found for privatespace_access_header (982809349769470185) -->
- <skip />
- <!-- no translation found for privatespace_search_description (983837656432484282) -->
- <skip />
- <!-- no translation found for privatespace_tap_tile_description (4146608898639668340) -->
- <skip />
- <!-- no translation found for privatespace_unlock_description (4132755357482447360) -->
- <skip />
- <!-- no translation found for privatespace_hide_off_summary (7227778747159633671) -->
- <skip />
- <!-- no translation found for privatespace_hide_on_summary (6136704537527640183) -->
- <skip />
+ <string name="private_space_hide_title" msgid="8687034008994037610">"Hide when locked"</string>
+ <string name="privatespace_hide_page_title" msgid="972581369094289386">"Hide Private Space when locked"</string>
+ <string name="privatespace_hide_page_summary" msgid="1052569521186403642">"To stop other people knowing Private Space is on your device, you can hide it from your apps list"</string>
+ <string name="privatespace_access_header" msgid="982809349769470185">"Access Private Space when hidden"</string>
+ <string name="privatespace_search_description" msgid="983837656432484282">"Search for \'Private Space\' in the search bar"</string>
+ <string name="privatespace_tap_tile_description" msgid="4146608898639668340">"Tap the Private Space tile"</string>
+ <string name="privatespace_unlock_description" msgid="4132755357482447360">"Unlock your Private Space"</string>
+ <string name="privatespace_hide_off_summary" msgid="7227778747159633671">"Off"</string>
+ <string name="privatespace_hide_on_summary" msgid="6136704537527640183">"On"</string>
<string name="private_space_category_system" msgid="1286843321867285700">"System"</string>
<string name="private_space_create_title" msgid="47273568884806726">"Create Private Space"</string>
<string name="private_space_delete_title" msgid="3075645119800272800">"Delete Private Space"</string>
@@ -570,54 +568,30 @@
<string name="no_device_lock_summary" msgid="7653477413589207824">"To use Private Space, set a screen lock on this device."</string>
<string name="no_device_lock_action_label" msgid="2640487005629001288">"Set screen lock"</string>
<string name="no_device_lock_cancel" msgid="4412602160321228863">"Cancel"</string>
- <!-- no translation found for privatespace_cancel_label (362351004019511784) -->
- <skip />
- <!-- no translation found for privatespace_setup_button_label (3696372546231047258) -->
- <skip />
- <!-- no translation found for privatespace_setup_title (177623114624330394) -->
- <skip />
- <!-- no translation found for privatespace_hide_apps_summary (4016518749055602268) -->
- <skip />
- <!-- no translation found for privatespace_how_title (8794102046435526065) -->
- <skip />
- <!-- no translation found for privatespace_access_bottom_text (1075244097441349030) -->
- <skip />
- <!-- no translation found for privatespace_protected_lock_text (7320604832432017423) -->
- <skip />
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_cancel_label" msgid="362351004019511784">"Cancel"</string>
+ <string name="privatespace_setup_button_label" msgid="3696372546231047258">"Set up"</string>
+ <string name="privatespace_setup_title" msgid="177623114624330394">"Set up Private Space"</string>
+ <string name="privatespace_hide_apps_summary" msgid="4016518749055602268">"Hide private apps in a secure space that only you can access"</string>
+ <string name="privatespace_how_title" msgid="8794102046435526065">"How it works"</string>
+ <string name="privatespace_access_bottom_text" msgid="1075244097441349030">"You can access Private Space from the bottom of your apps list"</string>
+ <string name="privatespace_protected_lock_text" msgid="7320604832432017423">"Apps in Private Space are protected by a lock"</string>
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"Notifications from apps in Private Space are hidden when it’s locked"</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"Private Space apps won’t appear in permission manager, privacy dashboard and other settings when Private Space is locked"</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"Setting up Private Space…"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"Private Space is protected by a lock"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"Usage info for Private Space apps is hidden when it’s locked"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"Access Private Space from your apps list"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"Couldn’t set up Private Space"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"Try again now, or come back later"</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"Try again"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"Use screen lock to unlock?"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"You can unlock Private Space the same way you unlock your device, or choose a different lock"</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"Use screen lock"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"Choose new lock"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"All set!"</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"To access Private Space, swipe up from the bottom of your home screen, then scroll down"</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"Done"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"Scroll down to access Private Space"</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"You can add up to <xliff:g id="COUNT">%d</xliff:g> fingerprints"</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"You’ve added the maximum number of fingerprints"</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"Can’t add more fingerprints"</string>
@@ -1135,8 +1109,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"Continue using apps on fold"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"Smooth display"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"Automatically raises the refresh rate up to <xliff:g id="ID_1">%1$d</xliff:g> Hz for some content. Increases battery usage."</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"Force peak refresh rate"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"Highest refresh rate for improved touch responsiveness and animation quality. Increases battery usage."</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"Screen attention"</string>
@@ -1372,6 +1345,8 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"Communal settings"</string>
<string name="apn_settings" msgid="4295467389400441299">"APNs"</string>
<string name="apn_edit" msgid="2003683641840248741">"Edit access point"</string>
+ <!-- no translation found for apn_add (9069613192201630934) -->
+ <skip />
<string name="apn_not_set" msgid="8246646433109750293">"Not set"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"Not set"</string>
<string name="apn_name" msgid="6677695784108157953">"Name"</string>
@@ -2006,12 +1981,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"Use Accessibility button to open"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"Hold volume keys to open"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"Triple-tap screen to open"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"Two-finger triple tap screen to open"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"Use gesture to open"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"Use accessibility gesture"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"To use this feature, tap the accessibility button <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> on the bottom of your screen.\n\nTo switch between features, touch and hold the accessibility button."</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"To use this feature, tap the Accessibility button on your screen."</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"To use this feature, press and hold both volume keys."</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"To start and stop magnification, triple-tap anywhere on your screen."</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"To start and stop magnification, triple tap anywhere on your screen with two fingers."</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"To use this feature, swipe up from the bottom of the screen with two fingers.\n\nTo switch between features, swipe up with two fingers and hold."</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"To use this feature, swipe up from the bottom of the screen with three fingers.\n\nTo switch between features, swipe up with three fingers and hold."</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"To use an accessibility feature, swipe up from the bottom of the screen with two fingers.\n\nTo switch between features, swipe up with two fingers and hold."</string>
@@ -2033,12 +2010,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"Hold volume keys"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"hold volume keys"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"Press and hold both volume keys"</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"Two-finger triple tap screen"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"two-finger triple tap screen"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"Quickly tap screen {0,number,integer} times with two fingers"</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"Triple-tap screen"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"triple-tap screen"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"Quickly tap screen {0,number,integer} times. This shortcut may slow down your device"</string>
@@ -2336,6 +2310,10 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"If you limit background activity for an app, it may misbehave"</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"Since this app is not set to optimise battery, you can’t restrict it.\n\nTo restrict the app, first turn on battery optimisation."</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"Manage battery usage"</string>
+ <!-- no translation found for manager_battery_usage_allow_background_usage_title (6294649996820358852) -->
+ <skip />
+ <!-- no translation found for manager_battery_usage_allow_background_usage_summary (8021153755201340819) -->
+ <skip />
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"Unrestricted"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"Optimised"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"Restricted"</string>
@@ -3846,6 +3824,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"Allow access to manage all files"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"Allow this app to read, modify and delete all files on this device or any connected storage volumes. If granted, app may access files without your explicit knowledge."</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"Can access all files"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"Full-screen notifications"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"Allow full-screen notifications from this app"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"Allow this app to show notifications that take up the full screen when the device is locked. Apps may use these to highlight alarms, incoming calls or other urgent notifications."</string>
diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml
index 33a8227..43185a0 100644
--- a/res/values-en-rIN/strings.xml
+++ b/res/values-en-rIN/strings.xml
@@ -135,7 +135,14 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"Stylus"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"Audio sharing"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"Share audio"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"Calls and alarms"</string>
+ <!-- no translation found for audio_sharing_streams_category_title (862958129650324581) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_pref_title (4636293245167657721) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_title (8269455097512153101) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_qr_code_summary (4231875597377863735) -->
<skip />
<string name="date_and_time" msgid="1788358029823431692">"Date and time"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"Proxy"</string>
@@ -540,24 +547,15 @@
<string name="private_space_title" msgid="7078627930195569767">"Private Space"</string>
<string name="private_space_summary" msgid="8237652417163408001">"Hide apps in a private folder"</string>
<string name="private_space_one_lock_title" msgid="7306547190751832568">"Unlock using screen lock"</string>
- <!-- no translation found for private_space_hide_title (8687034008994037610) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_title (972581369094289386) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_summary (1052569521186403642) -->
- <skip />
- <!-- no translation found for privatespace_access_header (982809349769470185) -->
- <skip />
- <!-- no translation found for privatespace_search_description (983837656432484282) -->
- <skip />
- <!-- no translation found for privatespace_tap_tile_description (4146608898639668340) -->
- <skip />
- <!-- no translation found for privatespace_unlock_description (4132755357482447360) -->
- <skip />
- <!-- no translation found for privatespace_hide_off_summary (7227778747159633671) -->
- <skip />
- <!-- no translation found for privatespace_hide_on_summary (6136704537527640183) -->
- <skip />
+ <string name="private_space_hide_title" msgid="8687034008994037610">"Hide when locked"</string>
+ <string name="privatespace_hide_page_title" msgid="972581369094289386">"Hide Private Space when locked"</string>
+ <string name="privatespace_hide_page_summary" msgid="1052569521186403642">"To stop other people knowing Private Space is on your device, you can hide it from your apps list"</string>
+ <string name="privatespace_access_header" msgid="982809349769470185">"Access Private Space when hidden"</string>
+ <string name="privatespace_search_description" msgid="983837656432484282">"Search for \'Private Space\' in the search bar"</string>
+ <string name="privatespace_tap_tile_description" msgid="4146608898639668340">"Tap the Private Space tile"</string>
+ <string name="privatespace_unlock_description" msgid="4132755357482447360">"Unlock your Private Space"</string>
+ <string name="privatespace_hide_off_summary" msgid="7227778747159633671">"Off"</string>
+ <string name="privatespace_hide_on_summary" msgid="6136704537527640183">"On"</string>
<string name="private_space_category_system" msgid="1286843321867285700">"System"</string>
<string name="private_space_create_title" msgid="47273568884806726">"Create Private Space"</string>
<string name="private_space_delete_title" msgid="3075645119800272800">"Delete Private Space"</string>
@@ -570,54 +568,30 @@
<string name="no_device_lock_summary" msgid="7653477413589207824">"To use Private Space, set a screen lock on this device."</string>
<string name="no_device_lock_action_label" msgid="2640487005629001288">"Set screen lock"</string>
<string name="no_device_lock_cancel" msgid="4412602160321228863">"Cancel"</string>
- <!-- no translation found for privatespace_cancel_label (362351004019511784) -->
- <skip />
- <!-- no translation found for privatespace_setup_button_label (3696372546231047258) -->
- <skip />
- <!-- no translation found for privatespace_setup_title (177623114624330394) -->
- <skip />
- <!-- no translation found for privatespace_hide_apps_summary (4016518749055602268) -->
- <skip />
- <!-- no translation found for privatespace_how_title (8794102046435526065) -->
- <skip />
- <!-- no translation found for privatespace_access_bottom_text (1075244097441349030) -->
- <skip />
- <!-- no translation found for privatespace_protected_lock_text (7320604832432017423) -->
- <skip />
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_cancel_label" msgid="362351004019511784">"Cancel"</string>
+ <string name="privatespace_setup_button_label" msgid="3696372546231047258">"Set up"</string>
+ <string name="privatespace_setup_title" msgid="177623114624330394">"Set up Private Space"</string>
+ <string name="privatespace_hide_apps_summary" msgid="4016518749055602268">"Hide private apps in a secure space that only you can access"</string>
+ <string name="privatespace_how_title" msgid="8794102046435526065">"How it works"</string>
+ <string name="privatespace_access_bottom_text" msgid="1075244097441349030">"You can access Private Space from the bottom of your apps list"</string>
+ <string name="privatespace_protected_lock_text" msgid="7320604832432017423">"Apps in Private Space are protected by a lock"</string>
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"Notifications from apps in Private Space are hidden when it’s locked"</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"Private Space apps won’t appear in permission manager, privacy dashboard and other settings when Private Space is locked"</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"Setting up Private Space…"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"Private Space is protected by a lock"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"Usage info for Private Space apps is hidden when it’s locked"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"Access Private Space from your apps list"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"Couldn’t set up Private Space"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"Try again now, or come back later"</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"Try again"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"Use screen lock to unlock?"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"You can unlock Private Space the same way you unlock your device, or choose a different lock"</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"Use screen lock"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"Choose new lock"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"All set!"</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"To access Private Space, swipe up from the bottom of your home screen, then scroll down"</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"Done"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"Scroll down to access Private Space"</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"You can add up to <xliff:g id="COUNT">%d</xliff:g> fingerprints"</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"You’ve added the maximum number of fingerprints"</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"Can’t add more fingerprints"</string>
@@ -1135,8 +1109,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"Continue using apps on fold"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"Smooth display"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"Automatically raises the refresh rate up to <xliff:g id="ID_1">%1$d</xliff:g> Hz for some content. Increases battery usage."</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"Force peak refresh rate"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"Highest refresh rate for improved touch responsiveness and animation quality. Increases battery usage."</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"Screen attention"</string>
@@ -1372,6 +1345,8 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"Communal settings"</string>
<string name="apn_settings" msgid="4295467389400441299">"APNs"</string>
<string name="apn_edit" msgid="2003683641840248741">"Edit access point"</string>
+ <!-- no translation found for apn_add (9069613192201630934) -->
+ <skip />
<string name="apn_not_set" msgid="8246646433109750293">"Not set"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"Not set"</string>
<string name="apn_name" msgid="6677695784108157953">"Name"</string>
@@ -2006,12 +1981,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"Use Accessibility button to open"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"Hold volume keys to open"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"Triple-tap screen to open"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"Two-finger triple tap screen to open"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"Use gesture to open"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"Use accessibility gesture"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"To use this feature, tap the accessibility button <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> on the bottom of your screen.\n\nTo switch between features, touch and hold the accessibility button."</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"To use this feature, tap the Accessibility button on your screen."</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"To use this feature, press and hold both volume keys."</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"To start and stop magnification, triple-tap anywhere on your screen."</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"To start and stop magnification, triple tap anywhere on your screen with two fingers."</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"To use this feature, swipe up from the bottom of the screen with two fingers.\n\nTo switch between features, swipe up with two fingers and hold."</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"To use this feature, swipe up from the bottom of the screen with three fingers.\n\nTo switch between features, swipe up with three fingers and hold."</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"To use an accessibility feature, swipe up from the bottom of the screen with two fingers.\n\nTo switch between features, swipe up with two fingers and hold."</string>
@@ -2033,12 +2010,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"Hold volume keys"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"hold volume keys"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"Press and hold both volume keys"</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"Two-finger triple tap screen"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"two-finger triple tap screen"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"Quickly tap screen {0,number,integer} times with two fingers"</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"Triple-tap screen"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"triple-tap screen"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"Quickly tap screen {0,number,integer} times. This shortcut may slow down your device"</string>
@@ -2336,6 +2310,10 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"If you limit background activity for an app, it may misbehave"</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"Since this app is not set to optimise battery, you can’t restrict it.\n\nTo restrict the app, first turn on battery optimisation."</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"Manage battery usage"</string>
+ <!-- no translation found for manager_battery_usage_allow_background_usage_title (6294649996820358852) -->
+ <skip />
+ <!-- no translation found for manager_battery_usage_allow_background_usage_summary (8021153755201340819) -->
+ <skip />
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"Unrestricted"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"Optimised"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"Restricted"</string>
@@ -3846,6 +3824,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"Allow access to manage all files"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"Allow this app to read, modify and delete all files on this device or any connected storage volumes. If granted, app may access files without your explicit knowledge."</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"Can access all files"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"Full-screen notifications"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"Allow full-screen notifications from this app"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"Allow this app to show notifications that take up the full screen when the device is locked. Apps may use these to highlight alarms, incoming calls or other urgent notifications."</string>
diff --git a/res/values-en-rXC/strings.xml b/res/values-en-rXC/strings.xml
index 0c48892..bf52509 100644
--- a/res/values-en-rXC/strings.xml
+++ b/res/values-en-rXC/strings.xml
@@ -135,8 +135,11 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"Stylus"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"Audio sharing"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"Share audio"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
- <skip />
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"Calls and alarms"</string>
+ <string name="audio_sharing_streams_category_title" msgid="862958129650324581">"Connect to a LE audio stream"</string>
+ <string name="audio_sharing_streams_pref_title" msgid="4636293245167657721">"Nearby audio streams"</string>
+ <string name="audio_sharing_streams_title" msgid="8269455097512153101">"Audio streams"</string>
+ <string name="audio_sharing_streams_qr_code_summary" msgid="4231875597377863735">"Connect to an audio stream using QR code"</string>
<string name="date_and_time" msgid="1788358029823431692">"Date & time"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"Proxy"</string>
<string name="proxy_clear_text" msgid="6529658759984031149">"Clear"</string>
@@ -568,40 +571,23 @@
<string name="privatespace_how_title" msgid="8794102046435526065">"How it works"</string>
<string name="privatespace_access_bottom_text" msgid="1075244097441349030">"You can access Private Space from the bottom of your apps list"</string>
<string name="privatespace_protected_lock_text" msgid="7320604832432017423">"Apps in Private Space are protected by a lock"</string>
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"Notifications from apps in Private Space are hidden when it’s locked"</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"Private Space apps won’t appear in permission manager, privacy dashboard, and other settings when Private Space is locked"</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"Setting up Private Space…"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"Private Space is protected by a lock"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"Usage info for Private Space apps is hidden when it’s locked"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"Access Private Space from your apps list"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"Couldn’t set up Private Space"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"Try again now, or come back later"</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"Try Again"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"Use screen lock to unlock?"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"You can unlock Private Space the same way you unlock your device, or choose a different lock"</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"Use screen lock"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"Choose new lock"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"All set!"</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"To access Private Space, swipe up from the bottom of your home screen, then scroll down"</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"Done"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"Scroll down to access Private Space"</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"You can add up to <xliff:g id="COUNT">%d</xliff:g> fingerprints"</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"You’ve added the maximum number of fingerprints"</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"Can’t add more fingerprints"</string>
@@ -1119,8 +1105,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"Continue using apps on fold"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"Smooth Display"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"Automatically raises the refresh rate up to <xliff:g id="ID_1">%1$d</xliff:g> Hz for some content. Increases battery usage."</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"Force peak refresh rate"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"Highest refresh rate for improved touch responsiveness & animation quality. Increases battery usage."</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"Screen attention"</string>
@@ -1356,6 +1341,7 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"Communal settings"</string>
<string name="apn_settings" msgid="4295467389400441299">"APNs"</string>
<string name="apn_edit" msgid="2003683641840248741">"Edit access point"</string>
+ <string name="apn_add" msgid="9069613192201630934">"Add access point"</string>
<string name="apn_not_set" msgid="8246646433109750293">"Not set"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"Not set"</string>
<string name="apn_name" msgid="6677695784108157953">"Name"</string>
@@ -1990,12 +1976,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"Use accessibility button to open"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"Hold volume keys to open"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"Triple tap screen to open"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"Two finger triple tap screen to open"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"Use gesture to open"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"Use accessibility gesture"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"To use this feature, tap the accessibility button <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> on the bottom of your screen.\n\nTo switch between features, touch & hold the accessibility button."</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"To use this feature, tap the accessibility button on your screen."</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"To use this feature, press & hold both volume keys."</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"To start and stop magnification, triple-tap anywhere on your screen."</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"To start and stop magnification, triple-tap anywhere on your screen with two fingers."</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"To use this feature, swipe up from the bottom of the screen with 2 fingers.\n\nTo switch between features, swipe up with 2 fingers and hold."</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"To use this feature, swipe up from the bottom of the screen with 3 fingers.\n\nTo switch between features, swipe up with 3 fingers and hold."</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"To use an accessibility feature, swipe up from the bottom of the screen with 2 fingers.\n\nTo switch between features, swipe up with 2 fingers and hold."</string>
@@ -2017,12 +2005,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"Hold volume keys"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"hold volume keys"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"Press & hold both volume keys"</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"Two-finger triple-tap screen"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"two-finger triple-tap screen"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"Quickly tap screen {0,number,integer} times with two fingers"</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"Triple-tap screen"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"triple-tap screen"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"Quickly tap screen {0,number,integer} times. This shortcut may slow down your device"</string>
@@ -2320,6 +2305,8 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"If you limit background activity for an app, it may misbehave"</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"Since this app is not set to optimize battery, you can’t restrict it.\n\nTo restrict the app, first turn on battery optimization."</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"Manage battery usage"</string>
+ <string name="manager_battery_usage_allow_background_usage_title" msgid="6294649996820358852">"Allow background usage"</string>
+ <string name="manager_battery_usage_allow_background_usage_summary" msgid="8021153755201340819">"Enable for real-time updates, disable to save battery"</string>
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"Unrestricted"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"Optimized"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"Restricted"</string>
@@ -3830,6 +3817,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"Allow access to manage all files"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"Allow this app to read, modify and delete all files on this device or any connected storage volumes. If granted, app may access files without your explicit knowledge."</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"Can access all files"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"Full screen notifications"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"Allow full screen notifications from this app"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"Allow this app to show notifications that take up the full screen when the device is locked. Apps may use these to highlight alarms, incoming calls, or other urgent notifications."</string>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index c774242..a290e21 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -135,8 +135,11 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"Pluma stylus"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"Uso compartido de audio"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"Comparte audio"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
- <skip />
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"Llamadas y alarmas"</string>
+ <string name="audio_sharing_streams_category_title" msgid="862958129650324581">"Conectarse a reproducción de LE Audio"</string>
+ <string name="audio_sharing_streams_pref_title" msgid="4636293245167657721">"Reproducciones de audio cercanas"</string>
+ <string name="audio_sharing_streams_title" msgid="8269455097512153101">"Reproducciones de audio"</string>
+ <string name="audio_sharing_streams_qr_code_summary" msgid="4231875597377863735">"Conectarse a una reproducción de audio usando un código QR"</string>
<string name="date_and_time" msgid="1788358029823431692">"Fecha y hora"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"Proxy"</string>
<string name="proxy_clear_text" msgid="6529658759984031149">"Eliminar"</string>
@@ -540,24 +543,15 @@
<string name="private_space_title" msgid="7078627930195569767">"Espacio privado"</string>
<string name="private_space_summary" msgid="8237652417163408001">"Esconde las apps en una carpeta privada"</string>
<string name="private_space_one_lock_title" msgid="7306547190751832568">"Desbloquea con el bloqueo de pantalla"</string>
- <!-- no translation found for private_space_hide_title (8687034008994037610) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_title (972581369094289386) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_summary (1052569521186403642) -->
- <skip />
- <!-- no translation found for privatespace_access_header (982809349769470185) -->
- <skip />
- <!-- no translation found for privatespace_search_description (983837656432484282) -->
- <skip />
- <!-- no translation found for privatespace_tap_tile_description (4146608898639668340) -->
- <skip />
- <!-- no translation found for privatespace_unlock_description (4132755357482447360) -->
- <skip />
- <!-- no translation found for privatespace_hide_off_summary (7227778747159633671) -->
- <skip />
- <!-- no translation found for privatespace_hide_on_summary (6136704537527640183) -->
- <skip />
+ <string name="private_space_hide_title" msgid="8687034008994037610">"Se oculta con el dispositivo bloqueado"</string>
+ <string name="privatespace_hide_page_title" msgid="972581369094289386">"Oculta Espacio privado con el dispositivo bloqueado"</string>
+ <string name="privatespace_hide_page_summary" msgid="1052569521186403642">"Oculta Espacio privado de tu lista para que no puedan verlo"</string>
+ <string name="privatespace_access_header" msgid="982809349769470185">"Accede a Espacio privado cuando está oculto"</string>
+ <string name="privatespace_search_description" msgid="983837656432484282">"Busca \"Espacio privado\" en la barra de búsqueda"</string>
+ <string name="privatespace_tap_tile_description" msgid="4146608898639668340">"Presiona la tarjeta de Espacio privado"</string>
+ <string name="privatespace_unlock_description" msgid="4132755357482447360">"Desbloquea tu Espacio privado"</string>
+ <string name="privatespace_hide_off_summary" msgid="7227778747159633671">"Desactivado"</string>
+ <string name="privatespace_hide_on_summary" msgid="6136704537527640183">"Activado"</string>
<string name="private_space_category_system" msgid="1286843321867285700">"Sistema"</string>
<string name="private_space_create_title" msgid="47273568884806726">"Crea un Espacio privado"</string>
<string name="private_space_delete_title" msgid="3075645119800272800">"Borra un Espacio privado"</string>
@@ -570,54 +564,30 @@
<string name="no_device_lock_summary" msgid="7653477413589207824">"Para usar Espacio privado, configura un bloqueo de pantalla."</string>
<string name="no_device_lock_action_label" msgid="2640487005629001288">"Configurar bloqueo de pantalla"</string>
<string name="no_device_lock_cancel" msgid="4412602160321228863">"Cancelar"</string>
- <!-- no translation found for privatespace_cancel_label (362351004019511784) -->
- <skip />
- <!-- no translation found for privatespace_setup_button_label (3696372546231047258) -->
- <skip />
- <!-- no translation found for privatespace_setup_title (177623114624330394) -->
- <skip />
- <!-- no translation found for privatespace_hide_apps_summary (4016518749055602268) -->
- <skip />
- <!-- no translation found for privatespace_how_title (8794102046435526065) -->
- <skip />
- <!-- no translation found for privatespace_access_bottom_text (1075244097441349030) -->
- <skip />
- <!-- no translation found for privatespace_protected_lock_text (7320604832432017423) -->
- <skip />
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_cancel_label" msgid="362351004019511784">"Cancelar"</string>
+ <string name="privatespace_setup_button_label" msgid="3696372546231047258">"Configuración"</string>
+ <string name="privatespace_setup_title" msgid="177623114624330394">"Configura Espacio privado"</string>
+ <string name="privatespace_hide_apps_summary" msgid="4016518749055602268">"Esconde las apps privadas en un espacio seguro que solo tú puedes acceder"</string>
+ <string name="privatespace_how_title" msgid="8794102046435526065">"Cómo funciona"</string>
+ <string name="privatespace_access_bottom_text" msgid="1075244097441349030">"Puedes acceder a Espacio privado desde el final de tu lista de apps"</string>
+ <string name="privatespace_protected_lock_text" msgid="7320604832432017423">"Las apps en Espacio privado están protegidas con un bloqueo"</string>
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"Las notificaciones de las apps en Espacio privado se ocultan cuando está bloqueado"</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"Las apps de Espacio privado no se mostrarán en el Administrador de permisos, el panel de privacidad ni en ninguna otra configuración cuando Espacio privado esté bloqueado"</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"Configurando Espacio privado…"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"Espacio privado está protegido por un bloqueo"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"Espacio privado no muestra la información de uso de las apps cuando está bloqueado"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"Accede a Espacio privado desde la lista de apps"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"No se pudo configurar Espacio privado"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"Vuelve a intentarlo ahora o regresa más tarde"</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"Reintentar"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"¿Usar bloqueo de pantalla para desbloquear?"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"Puedes desbloquear Espacio privado de la misma manera que desbloqueas el dispositivo o elegir un bloqueo diferente"</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"Usar bloqueo de pantalla"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"Elegir nuevo bloqueo"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"Todo listo"</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"Para acceder a Espacio privado, desliza el dedo hacia arriba desde la parte inferior de la pantalla principal y, luego, desplázate hacia abajo"</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"Listo"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"Desplázate hacia abajo para acceder a Espacio privado"</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"Puedes agregar hasta <xliff:g id="COUNT">%d</xliff:g> huellas dactilares"</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"Agregaste la cantidad máxima permitida de huellas digitales"</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"No se pueden agregar más huellas digitales"</string>
@@ -1135,8 +1105,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"Continuar usando apps con el dispositivo plegado"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"Smooth Display"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"Aumenta automáticamente la frecuencia de actualización a <xliff:g id="ID_1">%1$d</xliff:g> Hz para cierto contenido. Incrementa el uso de batería."</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"Forzar frecuencia de actualización máxima"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"La máxima frecuencia de actualización mejora la respuesta táctil y la calidad de las animaciones. Incrementa el uso de batería."</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"Atención a la pantalla"</string>
@@ -1372,6 +1341,7 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"Configuraciones compartidas"</string>
<string name="apn_settings" msgid="4295467389400441299">"APN"</string>
<string name="apn_edit" msgid="2003683641840248741">"Editar punto de acceso"</string>
+ <string name="apn_add" msgid="9069613192201630934">"Agregar punto de acceso"</string>
<string name="apn_not_set" msgid="8246646433109750293">"Sin establecer"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"Sin definir"</string>
<string name="apn_name" msgid="6677695784108157953">"Nombre"</string>
@@ -2006,12 +1976,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"Usa el botón de accesibilidad para abrir"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"Mantén presionadas las teclas de volumen para abrir"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"Presiona tres veces para abrir el servicio"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"Presiona tres veces la pantalla con dos dedos para abrir"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"Usa el gesto para abrir"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"Usa los gestos de accesibilidad"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"Para usar esta función, presiona el botón de accesibilidad <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> ubicado en la parte inferior de la pantalla.\n\nSi quieres cambiar de función, mantén presionado el botón de accesibilidad."</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"Para usar esta función, presiona el botón de accesibilidad en la pantalla."</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"Para usar esta función, mantén presionadas las teclas de volumen."</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"Para iniciar y detener la ampliación, presiona tres veces en cualquier parte de la pantalla."</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"Para iniciar y detener la amplificación, presiona tres veces la pantalla con dos dedos."</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"Para usar esta función, desliza 2 dedos hacia arriba desde la parte inferior de la pantalla.\n\nSi quieres cambiar de función, desliza 2 dedos hacia arriba y mantén presionada la pantalla."</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"Para usar esta función, desliza 3 dedos hacia arriba desde la parte inferior de la pantalla.\n\nSi quieres cambiar de función, desliza 3 dedos hacia arriba y mantén presionada la pantalla."</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"Para usar una función de accesibilidad, desliza 2 dedos hacia arriba desde la parte inferior de la pantalla.\n\nSi quieres cambiar de función, desliza 2 dedos hacia arriba y mantén presionada la pantalla."</string>
@@ -2033,12 +2005,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"Mantener presionadas las teclas de volumen"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"mantener presionadas las teclas de volumen"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"Mantén presionadas ambas teclas de volumen."</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"Presiona la pantalla tres veces con dos dedos"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"presiona la pantalla tres veces con dos dedos"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"Presiona la pantalla rápidamente {0,number,integer} veces con dos dedos"</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"Presionar tres veces la pantalla"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"presionar tres veces la pantalla"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"Presiona rápidamente la pantalla {0,number,integer} veces. Esta combinación de teclas podría hacer que tu dispositivo funcione más lento."</string>
@@ -2336,6 +2305,8 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"Si limitas la actividad en segundo plano de una app, es posible que no funcione correctamente"</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"Como no se configuró la app para optimizar la batería, no puedes restringirla.\n\nPrimero, activa optimización de batería."</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"Administrar uso de batería"</string>
+ <string name="manager_battery_usage_allow_background_usage_title" msgid="6294649996820358852">"Permitir uso en segundo plano"</string>
+ <string name="manager_battery_usage_allow_background_usage_summary" msgid="8021153755201340819">"Habilitar para actualizaciones en tiempo real; inhabilitar para ahorrar batería"</string>
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"Sin restricciones"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"Optimizado"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"Restringido"</string>
@@ -3846,6 +3817,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"Permitir administrar todos los archivos"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"Permite que esta app lea, modifique y borre todos los archivos en el dispositivo o cualquier volumen de almacenamiento conectado. Si habilitas el permiso, es posible que la app acceda a archivos sin tu conocimiento explícito."</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"Pueden acceder a todos los archivos"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"Notificaciones de pantalla completa"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"Permitir notificaciones de pantalla completa de esta app"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"Permite que esta app muestre notificaciones que ocupan toda la pantalla cuando el dispositivo está bloqueado. Las apps pueden usarlas para destacar alarmas, llamadas entrantes y otras notificaciones urgentes."</string>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index c0b0e1a..b01215b 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -135,7 +135,14 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"Lápiz óptico"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"Uso compartido de audio"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"Compartir audio"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"Llamadas y alarmas"</string>
+ <!-- no translation found for audio_sharing_streams_category_title (862958129650324581) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_pref_title (4636293245167657721) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_title (8269455097512153101) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_qr_code_summary (4231875597377863735) -->
<skip />
<string name="date_and_time" msgid="1788358029823431692">"Fecha y hora"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"Proxy"</string>
@@ -540,24 +547,15 @@
<string name="private_space_title" msgid="7078627930195569767">"Espacio privado"</string>
<string name="private_space_summary" msgid="8237652417163408001">"Oculta aplicaciones en una carpeta privada"</string>
<string name="private_space_one_lock_title" msgid="7306547190751832568">"Desbloquear con el bloqueo de pantalla"</string>
- <!-- no translation found for private_space_hide_title (8687034008994037610) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_title (972581369094289386) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_summary (1052569521186403642) -->
- <skip />
- <!-- no translation found for privatespace_access_header (982809349769470185) -->
- <skip />
- <!-- no translation found for privatespace_search_description (983837656432484282) -->
- <skip />
- <!-- no translation found for privatespace_tap_tile_description (4146608898639668340) -->
- <skip />
- <!-- no translation found for privatespace_unlock_description (4132755357482447360) -->
- <skip />
- <!-- no translation found for privatespace_hide_off_summary (7227778747159633671) -->
- <skip />
- <!-- no translation found for privatespace_hide_on_summary (6136704537527640183) -->
- <skip />
+ <string name="private_space_hide_title" msgid="8687034008994037610">"Ocultar cuando esté bloqueado"</string>
+ <string name="privatespace_hide_page_title" msgid="972581369094289386">"Ocultar espacio privado si está bloqueado"</string>
+ <string name="privatespace_hide_page_summary" msgid="1052569521186403642">"Para evitar que se sepa que usas espacio privado, puedes ocultarlo desde tu lista de aplicaciones"</string>
+ <string name="privatespace_access_header" msgid="982809349769470185">"Acceder al espacio privado cuando está oculto"</string>
+ <string name="privatespace_search_description" msgid="983837656432484282">"Busca espacio privado en la barra de búsqueda"</string>
+ <string name="privatespace_tap_tile_description" msgid="4146608898639668340">"Toca el recuadro de espacio privado"</string>
+ <string name="privatespace_unlock_description" msgid="4132755357482447360">"Desbloquea tu espacio privado"</string>
+ <string name="privatespace_hide_off_summary" msgid="7227778747159633671">"Desactivado"</string>
+ <string name="privatespace_hide_on_summary" msgid="6136704537527640183">"Activado"</string>
<string name="private_space_category_system" msgid="1286843321867285700">"Sistema"</string>
<string name="private_space_create_title" msgid="47273568884806726">"Crear espacio privado"</string>
<string name="private_space_delete_title" msgid="3075645119800272800">"Eliminar espacio privado"</string>
@@ -570,54 +568,30 @@
<string name="no_device_lock_summary" msgid="7653477413589207824">"Para usar el espacio privado, define un bloqueo de pantalla."</string>
<string name="no_device_lock_action_label" msgid="2640487005629001288">"Define un bloqueo de pantalla"</string>
<string name="no_device_lock_cancel" msgid="4412602160321228863">"Cancelar"</string>
- <!-- no translation found for privatespace_cancel_label (362351004019511784) -->
- <skip />
- <!-- no translation found for privatespace_setup_button_label (3696372546231047258) -->
- <skip />
- <!-- no translation found for privatespace_setup_title (177623114624330394) -->
- <skip />
- <!-- no translation found for privatespace_hide_apps_summary (4016518749055602268) -->
- <skip />
- <!-- no translation found for privatespace_how_title (8794102046435526065) -->
- <skip />
- <!-- no translation found for privatespace_access_bottom_text (1075244097441349030) -->
- <skip />
- <!-- no translation found for privatespace_protected_lock_text (7320604832432017423) -->
- <skip />
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_cancel_label" msgid="362351004019511784">"Cancelar"</string>
+ <string name="privatespace_setup_button_label" msgid="3696372546231047258">"Configurar"</string>
+ <string name="privatespace_setup_title" msgid="177623114624330394">"Configurar espacio privado"</string>
+ <string name="privatespace_hide_apps_summary" msgid="4016518749055602268">"Oculta las aplicaciones privadas en un espacio seguro al que solo tú tengas acceso"</string>
+ <string name="privatespace_how_title" msgid="8794102046435526065">"Cómo funciona"</string>
+ <string name="privatespace_access_bottom_text" msgid="1075244097441349030">"Puedes acceder al espacio privado desde la parte inferior de tu lista de aplicaciones"</string>
+ <string name="privatespace_protected_lock_text" msgid="7320604832432017423">"Las aplicaciones del espacio privado están protegidas con un bloqueo"</string>
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"Las notificaciones de las aplicaciones del espacio privado se ocultan si está bloqueado"</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"Las aplicaciones del espacio privado no se mostrarán en Gestor de permisos, el panel de privacidad o en otros ajustes si el espacio privado está bloqueado"</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"Configurando espacio privado…"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"El espacio privado está protegido con un bloqueo"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"La información de uso de las aplicaciones del espacio privado se oculta cuando está bloqueado"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"Acceder al espacio privado desde la lista de aplicaciones"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"No se ha podido configurar el espacio privado"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"Inténtalo de nuevo ahora o vuelve más tarde"</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"Reintentar"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"¿Usar bloqueo de pantalla para desbloquear?"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"Puedes desbloquear el espacio privado de la misma forma que desbloqueas tu dispositivo, o bien con un bloqueo diferente"</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"Usar bloqueo de pantalla"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"Elegir nuevo aspecto"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"¡Todo listo!"</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"Para acceder al espacio privado, desliza hacia arriba desde la parte inferior de la pantalla de inicio y, a continuación, desliza hacia abajo"</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"Hecho"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"Desplázate hacia abajo para acceder al espacio privado"</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"Puedes añadir hasta <xliff:g id="COUNT">%d</xliff:g> huellas digitales"</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"Has añadido el número máximo de huellas digitales"</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"No se pueden añadir más huellas digitales"</string>
@@ -1135,8 +1109,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"Seguir usando aplicaciones con el dispositivo plegado"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"Pantalla fluida"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"Incrementa automáticamente la frecuencia de actualización a <xliff:g id="ID_1">%1$d</xliff:g> Hz en determinados tipos de contenido. Aumenta el uso de la batería."</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"Forzar tasa de refresco máxima"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"Se usa la tasa de refresco más alta posible para mejorar la capacidad de respuesta táctil y la calidad de las animaciones. Aumenta el uso de la batería."</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"Pantalla atenta"</string>
@@ -1372,6 +1345,8 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"Ajustes comunes"</string>
<string name="apn_settings" msgid="4295467389400441299">"APNs"</string>
<string name="apn_edit" msgid="2003683641840248741">"Editar punto de acceso"</string>
+ <!-- no translation found for apn_add (9069613192201630934) -->
+ <skip />
<string name="apn_not_set" msgid="8246646433109750293">"Sin establecer"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"Sin configurar"</string>
<string name="apn_name" msgid="6677695784108157953">"Nombre"</string>
@@ -2006,12 +1981,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"Usa el botón de accesibilidad para abrir"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"Mantén pulsadas las teclas de volumen para abrir"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"Toca tres veces la pantalla para abrir"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"Toca tres veces la pantalla para abrir"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"Usar gesto para abrir"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"Usar gesto de accesibilidad"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"Para usar esta función, toca el botón de accesibilidad <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g>, situado en la parte inferior de la pantalla.\n\nPara pasar de una función a otra, mantén pulsado el botón de accesibilidad."</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"Para usar esta función, toca el botón de accesibilidad de la pantalla."</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"Para usar esta función, mantén pulsadas las dos teclas de volumen."</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"Para iniciar o detener la ampliación, toca tres veces en cualquier parte de la pantalla."</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"Para iniciar o detener la ampliación, toca 3 veces en cualquier parte de la pantalla con dos dedos."</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"Para usar esta función, desliza hacia arriba con dos dedos desde la parte inferior de la pantalla.\n\nPara pasar de una función a otra, desliza hacia arriba con dos dedos y mantén pulsada la pantalla."</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"Para usar esta función, desliza hacia arriba con tres dedos desde la parte inferior de la pantalla.\n\nPara pasar de una función a otra, desliza hacia arriba con tres dedos y mantén pulsada la pantalla."</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"Para usar una función de accesibilidad, desliza hacia arriba con dos dedos desde la parte inferior de la pantalla.\n\nPara pasar de una función a otra, desliza hacia arriba con dos dedos y mantén pulsada la pantalla."</string>
@@ -2033,12 +2010,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"Mantener teclas de volumen"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"mantener pulsadas las teclas de volumen"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"Mantén pulsadas las dos teclas de volumen"</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"Toca tres veces la pantalla con dos dedos"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"tocar tres veces la pantalla con dos dedos"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"Toca la pantalla {0,number,integer} veces rápidamente con dos dedos"</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"Triple toque en la pantalla"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"tocar tres veces la pantalla"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"Toca la pantalla {0,number,integer} veces rápidamente. Esta acción puede hacer que tu dispositivo funcione más lento."</string>
@@ -2336,6 +2310,10 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"Si limitas la actividad en segundo plano de una aplicación, puede que no funcione correctamente"</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"Esta aplicación no optimiza la batería, por lo que no puedes restringirla.\n\nPara hacerlo, activa antes la optimización."</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"Gestionar el uso de batería"</string>
+ <!-- no translation found for manager_battery_usage_allow_background_usage_title (6294649996820358852) -->
+ <skip />
+ <!-- no translation found for manager_battery_usage_allow_background_usage_summary (8021153755201340819) -->
+ <skip />
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"Sin restricciones"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"Optimizado"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"Restringido"</string>
@@ -3846,6 +3824,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"Dar acceso para gestionar todos los archivos"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"Permite que esta aplicación lea, modifique y elimine todos los archivos de este dispositivo o de cualquier volumen de almacenamiento conectado. Si le das permiso, podrá acceder a archivos sin avisarte expresamente."</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"Puede acceder a todos los archivos"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"Notificaciones a pantalla completa"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"Permitir notificaciones a pantalla completa de esta aplicación"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"Permite que esta aplicación muestre notificaciones que ocupan toda la pantalla cuando el dispositivo está bloqueado. La aplicación puede usar esta opción para resaltar alarmas, llamadas entrantes u otras notificaciones urgentes."</string>
diff --git a/res/values-et/strings.xml b/res/values-et/strings.xml
index ffc09c2..d587459 100644
--- a/res/values-et/strings.xml
+++ b/res/values-et/strings.xml
@@ -135,7 +135,14 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"Elektronpliiats"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"Heli jagamine"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"Heli jagamine"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"Kõned ja äratused"</string>
+ <!-- no translation found for audio_sharing_streams_category_title (862958129650324581) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_pref_title (4636293245167657721) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_title (8269455097512153101) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_qr_code_summary (4231875597377863735) -->
<skip />
<string name="date_and_time" msgid="1788358029823431692">"Kuupäev ja kellaaeg"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"Puhverserver"</string>
@@ -540,24 +547,15 @@
<string name="private_space_title" msgid="7078627930195569767">"Privaatne ruum"</string>
<string name="private_space_summary" msgid="8237652417163408001">"Peida privaatses kaustas olevad rakendused"</string>
<string name="private_space_one_lock_title" msgid="7306547190751832568">"Avamine ekraaniluku abil"</string>
- <!-- no translation found for private_space_hide_title (8687034008994037610) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_title (972581369094289386) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_summary (1052569521186403642) -->
- <skip />
- <!-- no translation found for privatespace_access_header (982809349769470185) -->
- <skip />
- <!-- no translation found for privatespace_search_description (983837656432484282) -->
- <skip />
- <!-- no translation found for privatespace_tap_tile_description (4146608898639668340) -->
- <skip />
- <!-- no translation found for privatespace_unlock_description (4132755357482447360) -->
- <skip />
- <!-- no translation found for privatespace_hide_off_summary (7227778747159633671) -->
- <skip />
- <!-- no translation found for privatespace_hide_on_summary (6136704537527640183) -->
- <skip />
+ <string name="private_space_hide_title" msgid="8687034008994037610">"Peida lukustatuna"</string>
+ <string name="privatespace_hide_page_title" msgid="972581369094289386">"Privaatse ruumi peitmine, kui see on lukustatud"</string>
+ <string name="privatespace_hide_page_summary" msgid="1052569521186403642">"Privaatse ruumi saate oma rakenduste loendis peita, et teised ei teaks selle olemasolust teie seadmes"</string>
+ <string name="privatespace_access_header" msgid="982809349769470185">"Juurdepääs privaatsele ruumile, kui see on peidetud"</string>
+ <string name="privatespace_search_description" msgid="983837656432484282">"Sisestage otsinguribale tekst „Privaatne ruum”"</string>
+ <string name="privatespace_tap_tile_description" msgid="4146608898639668340">"Puudutage privaatse ruumi paani"</string>
+ <string name="privatespace_unlock_description" msgid="4132755357482447360">"Avage oma privaatne ruum"</string>
+ <string name="privatespace_hide_off_summary" msgid="7227778747159633671">"Väljas"</string>
+ <string name="privatespace_hide_on_summary" msgid="6136704537527640183">"Sees"</string>
<string name="private_space_category_system" msgid="1286843321867285700">"Süsteem"</string>
<string name="private_space_create_title" msgid="47273568884806726">"Privaatse ruumi loomine"</string>
<string name="private_space_delete_title" msgid="3075645119800272800">"Privaatse ruumi kustutamine"</string>
@@ -570,54 +568,30 @@
<string name="no_device_lock_summary" msgid="7653477413589207824">"Seadistage privaatse ruumi jaoks seadmele ekraanilukk."</string>
<string name="no_device_lock_action_label" msgid="2640487005629001288">"Seadistage ekraanilukk"</string>
<string name="no_device_lock_cancel" msgid="4412602160321228863">"Tühista"</string>
- <!-- no translation found for privatespace_cancel_label (362351004019511784) -->
- <skip />
- <!-- no translation found for privatespace_setup_button_label (3696372546231047258) -->
- <skip />
- <!-- no translation found for privatespace_setup_title (177623114624330394) -->
- <skip />
- <!-- no translation found for privatespace_hide_apps_summary (4016518749055602268) -->
- <skip />
- <!-- no translation found for privatespace_how_title (8794102046435526065) -->
- <skip />
- <!-- no translation found for privatespace_access_bottom_text (1075244097441349030) -->
- <skip />
- <!-- no translation found for privatespace_protected_lock_text (7320604832432017423) -->
- <skip />
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_cancel_label" msgid="362351004019511784">"Tühista"</string>
+ <string name="privatespace_setup_button_label" msgid="3696372546231047258">"Seadistamine"</string>
+ <string name="privatespace_setup_title" msgid="177623114624330394">"Privaatse ruumi seadistamine"</string>
+ <string name="privatespace_hide_apps_summary" msgid="4016518749055602268">"Privaatsete rakenduste peitmine turvalises ruumis, millele pääsete juurde ainult teie"</string>
+ <string name="privatespace_how_title" msgid="8794102046435526065">"Tööpõhimõtted"</string>
+ <string name="privatespace_access_bottom_text" msgid="1075244097441349030">"Privaatsele ruumile pääsete juurde oma rakenduste loendi allosas"</string>
+ <string name="privatespace_protected_lock_text" msgid="7320604832432017423">"Privaatse ruumi rakendused on lukuga kaitstud"</string>
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"Kui privaatne ruum on lukustatud, siis on privaatse ruumi rakenduste märguanded peidetud"</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"Kui privaatne ruum on lukustatud, ei kuvata privaatse ruumi rakendusi lubade halduris, privaatsuse juhtpaneelil ega muudes seadetes"</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"Privaatse ruumi seadistamine…"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"Privaatne ruum on lukuga kaitstud"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"Kui privaatne ruum on lukustatud, siis on privaatse ruumi rakenduste kasutusteave peidetud"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"Juurdepääs privaatsele ruumile rakenduste loendist"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"Privaatset ruumi ei saanud seadistada"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"Proovige kohe uuesti või tulge hiljem tagasi"</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"Proovi uuesti"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"Kas kasutada lukust avamiseks ekraanilukku?"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"Privaatse ruumi saate lukust avada samal moel seadme lukust avamisega või valida erineva luku"</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"Kasuta ekraanilukku"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"Uue luku valimine"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"Valmis!"</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"Juurdepääsuks privaatsele ruumile pühkige avakuva allosast üles ja seejärel kerige alla"</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"Valmis"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"Juurdepääsuks privaatsele ruumile kerige alla"</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"Saate lisada kuni <xliff:g id="COUNT">%d</xliff:g> sõrmejälge"</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"Olete lisanud maksimaalse arvu sõrmejälgi"</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"Rohkem sõrmejälgi ei saa lisada"</string>
@@ -1135,8 +1109,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"Jätka rakenduste kasutamist voldituna"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"Smooth Display"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"Suurendab teatud sisu puhul värskendamissagedust automaatselt kuni <xliff:g id="ID_1">%1$d</xliff:g> hertsini. Akukasutus suureneb."</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"Jõusta kõrgeim värskendamissagedus"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"Kõrgeim värskendamissagedus täiustab puutetundlikkust ja pakub sujuvamaid animatsioone. Akukasutus suureneb."</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"Ekraanivaatamise tuvastus"</string>
@@ -1372,6 +1345,8 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"Ühised seaded"</string>
<string name="apn_settings" msgid="4295467389400441299">"Pääsupunktid (APN-id)"</string>
<string name="apn_edit" msgid="2003683641840248741">"Pääsupunkti muutmine"</string>
+ <!-- no translation found for apn_add (9069613192201630934) -->
+ <skip />
<string name="apn_not_set" msgid="8246646433109750293">"Määramata"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"Määramata"</string>
<string name="apn_name" msgid="6677695784108157953">"Nimi"</string>
@@ -2006,12 +1981,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"Avamiseks juurdepääsetavuse nupu kasutamine"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"Avamiseks hoidke helitugevuse klahve all"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"Avamiseks puudutage ekraani kolm korda"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"Avamiseks ekraani kahe sõrmega kolmekordne puudutamine"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"Kasutage avamiseks liigutust"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"Juurdepääsuliigutuse kasutamine"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"Selle funktsiooni kasutamiseks puudutage ekraanikuva allosas juurdepääsetavuse nuppu <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g>.\n\nFunktsioonide vahel vahetamiseks puudutage juurdepääsetavuse nuppu pikalt."</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"Selle funktsiooni kasutamiseks puudutage ekraanikuval juurdepääsetavuse nuppu."</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"Selle funktsiooni kasutamiseks vajutage pikalt mõlemat helitugevuse klahvi."</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"Suurenduse käivitamiseks ja peatamiseks puudutage ekraani kolm korda."</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"Suurenduse käivitamiseks ja peatamiseks puudutage ekraani kahe sõrmega kolm korda."</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"Selle funktsiooni kasutamiseks pühkige ekraanikuva allosast kahe sõrmega üles.\n\nFunktsioonide vahel vahetamiseks pühkige kahe sõrmega üles ja hoidke sõrmi ekraanil."</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"Selle funktsiooni kasutamiseks pühkige ekraanikuva allosast kolme sõrmega üles.\n\nFunktsioonide vahel vahetamiseks pühkige kolme sõrmega üles ja hoidke sõrmi ekraanil."</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"Juurdepääsufunktsiooni kasutamiseks pühkige ekraanikuva allosast kahe sõrmega üles.\n\nFunktsioonide vahel vahetamiseks pühkige kahe sõrmega üles ja hoidke sõrmi ekraanil."</string>
@@ -2033,12 +2010,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"Helitugevuse klahvide allhoidmine"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"helitugevuse klahvide allhoidmine"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"Hoidke all mõlemat helitugevuse klahvi"</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"Ekraani kahe sõrmega kolmekordne puudutamine"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"ekraani kahe sõrmega kolmekordne puudutamine"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"Puudutage kahe sõrmega hetkeks ekraani {0,number,integer} korda"</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"Ekraani kolmikpuudutamine"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"ekraani kolmikpuudutamine"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"Puudutage ekraani kiiresti {0,number,integer} korda. See otsetee võib teie seadme tööd aeglustada."</string>
@@ -2336,6 +2310,10 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"Kui piirate rakenduse tegevust taustal, võib rakendus toimida valesti."</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"Kuna rak. pole aku optimeerimine seadistatud, ei saa te seda piirata.\n\nRak. piiramiseks lülit. esmalt sisse aku optimeerimine."</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"Akukasutuse haldamine"</string>
+ <!-- no translation found for manager_battery_usage_allow_background_usage_title (6294649996820358852) -->
+ <skip />
+ <!-- no translation found for manager_battery_usage_allow_background_usage_summary (8021153755201340819) -->
+ <skip />
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"Piiranguteta"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"Optimeeritud"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"Piiratud"</string>
@@ -3846,6 +3824,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"Luba juurdepääs kõikide failide haldamisele"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"Sellel rakendusel lubatakse lugeda, muuta ja kustutada kõiki selles seadmes ning ühendatud andmekandjatel olevaid faile. Loa andmisel võib rakendus failidele juurde pääseda ilma teie teadmata."</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"Pääseb failidele juurde"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"Kogu ekraani katvad märguanded"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"Luba selle rakenduse kogu ekraani katvad märguanded"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"Lubage sellel rakendusel kuvada kogu ekraani katvaid märguandeid, kui seade on lukustatud. Rakendused võivad selle abil tõsta esile alarme, sissetulevaid kõnesid või muid pakilisi märguandeid."</string>
diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml
index 8d5ba3c..359f96d 100644
--- a/res/values-eu/strings.xml
+++ b/res/values-eu/strings.xml
@@ -112,7 +112,7 @@
<string name="bluetooth_disable_hw_offload_dialog_cancel" msgid="3663690305043973720">"Utzi"</string>
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"Desgaitu Kontsumo txikiko Bluetooth bidezko audioa"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"Kontsumo txikiko Bluetooth bidezko audioa darabilten hardware-gaitasunak gailuarekin bateragarriak badira, Kontsumo txikiko Bluetooth bidezko audioa eginbidea desgaitzen du."</string>
- <string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"Erakutsi kontsumo txikiko Bluetooth bidezko audioaren etengailua gailuaren xehetasunetan"</string>
+ <string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"Erakutsi kontsumo txikiko audioaren etengailua gailuaren xehetasunetan"</string>
<string name="bluetooth_bypass_leaudio_allowlist" msgid="7392319491894565552">"Ez aplikatu kontsumo txikiko Bluetooth bidezko audioaren baimendutakoen zerrenda"</string>
<string name="bluetooth_bypass_leaudio_allowlist_summary" msgid="8999245286359656738">"Erabili kontsumo txikiko audioa modu lehenetsian, hura darabilen gailu periferikoak baimendutakoen zerrendako irizpideak betetzen dituen egiaztatu ez bada ere."</string>
<string name="connected_device_media_device_title" msgid="3783388247594566734">"Multimedia-gailuak"</string>
@@ -135,8 +135,11 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"Arkatza"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"Audioa partekatzea"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"Partekatu audioa"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
- <skip />
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"Deiak eta alarmak"</string>
+ <string name="audio_sharing_streams_category_title" msgid="862958129650324581">"Konektatu kontsumo txikiko zuzeneko audio-igorpen batera"</string>
+ <string name="audio_sharing_streams_pref_title" msgid="4636293245167657721">"Inguruko zuzeneko audio-igorpenak"</string>
+ <string name="audio_sharing_streams_title" msgid="8269455097512153101">"Zuzeneko audio-igorpenak"</string>
+ <string name="audio_sharing_streams_qr_code_summary" msgid="4231875597377863735">"Konektatu zuzeneko audio-igorpen batera QR kodea erabilita"</string>
<string name="date_and_time" msgid="1788358029823431692">"Data eta ordua"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"Proxya"</string>
<string name="proxy_clear_text" msgid="6529658759984031149">"Garbitu"</string>
@@ -540,24 +543,15 @@
<string name="private_space_title" msgid="7078627930195569767">"Eremu pribatua"</string>
<string name="private_space_summary" msgid="8237652417163408001">"Ezkutatu aplikazioak karpeta pribatu batean"</string>
<string name="private_space_one_lock_title" msgid="7306547190751832568">"Desblokeatu pantailaren blokeoaren bidez"</string>
- <!-- no translation found for private_space_hide_title (8687034008994037610) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_title (972581369094289386) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_summary (1052569521186403642) -->
- <skip />
- <!-- no translation found for privatespace_access_header (982809349769470185) -->
- <skip />
- <!-- no translation found for privatespace_search_description (983837656432484282) -->
- <skip />
- <!-- no translation found for privatespace_tap_tile_description (4146608898639668340) -->
- <skip />
- <!-- no translation found for privatespace_unlock_description (4132755357482447360) -->
- <skip />
- <!-- no translation found for privatespace_hide_off_summary (7227778747159633671) -->
- <skip />
- <!-- no translation found for privatespace_hide_on_summary (6136704537527640183) -->
- <skip />
+ <string name="private_space_hide_title" msgid="8687034008994037610">"Ezkutatu blokeatuta dagoenean"</string>
+ <string name="privatespace_hide_page_title" msgid="972581369094289386">"Ezkutatu Eremu pribatua blokeatuta dagoenean"</string>
+ <string name="privatespace_hide_page_summary" msgid="1052569521186403642">"Inork jakin ez dezan gailuan Eremu pribatua daukazula, aplikazio-zerrendatik ezkuta dezakezu"</string>
+ <string name="privatespace_access_header" msgid="982809349769470185">"Atzitu Eremu pribatua ezkutatuta dagoenean ere"</string>
+ <string name="privatespace_search_description" msgid="983837656432484282">"Bilatu \"Eremu pribatua\" bilaketa-barran"</string>
+ <string name="privatespace_tap_tile_description" msgid="4146608898639668340">"Sakatu eremu pribatuaren lauza"</string>
+ <string name="privatespace_unlock_description" msgid="4132755357482447360">"Desblokeatu Eremu pribatua"</string>
+ <string name="privatespace_hide_off_summary" msgid="7227778747159633671">"Desaktibatuta"</string>
+ <string name="privatespace_hide_on_summary" msgid="6136704537527640183">"Aktibatuta"</string>
<string name="private_space_category_system" msgid="1286843321867285700">"Sistema"</string>
<string name="private_space_create_title" msgid="47273568884806726">"Sortu eremu pribatua"</string>
<string name="private_space_delete_title" msgid="3075645119800272800">"Ezabatu eremu pribatua"</string>
@@ -570,54 +564,30 @@
<string name="no_device_lock_summary" msgid="7653477413589207824">"Eremu pribatua erabiltzeko, ezarri pantaila blokeatzeko aukera bat gailuan."</string>
<string name="no_device_lock_action_label" msgid="2640487005629001288">"Ezarri pantailaren blokeoa"</string>
<string name="no_device_lock_cancel" msgid="4412602160321228863">"Utzi"</string>
- <!-- no translation found for privatespace_cancel_label (362351004019511784) -->
- <skip />
- <!-- no translation found for privatespace_setup_button_label (3696372546231047258) -->
- <skip />
- <!-- no translation found for privatespace_setup_title (177623114624330394) -->
- <skip />
- <!-- no translation found for privatespace_hide_apps_summary (4016518749055602268) -->
- <skip />
- <!-- no translation found for privatespace_how_title (8794102046435526065) -->
- <skip />
- <!-- no translation found for privatespace_access_bottom_text (1075244097441349030) -->
- <skip />
- <!-- no translation found for privatespace_protected_lock_text (7320604832432017423) -->
- <skip />
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_cancel_label" msgid="362351004019511784">"Utzi"</string>
+ <string name="privatespace_setup_button_label" msgid="3696372546231047258">"Konfiguratu"</string>
+ <string name="privatespace_setup_title" msgid="177623114624330394">"Konfiguratu Eremu pribatua"</string>
+ <string name="privatespace_hide_apps_summary" msgid="4016518749055602268">"Ezkutatu aplikazio pribatuak eremu seguru batean, zuk soilik atzitu ahal izateko"</string>
+ <string name="privatespace_how_title" msgid="8794102046435526065">"Nola funtzionatzen du?"</string>
+ <string name="privatespace_access_bottom_text" msgid="1075244097441349030">"Eremu pribatua aplikazio-zerrendaren behealdetik atzi dezakezu"</string>
+ <string name="privatespace_protected_lock_text" msgid="7320604832432017423">"Eremu pribatuko aplikazioak blokeo bidez babesten dira"</string>
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"Eremu pribatua blokeatuta badago, hango aplikazioen jakinarazpenak ezkutatzen dira"</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"Eremu pribatua blokeatuta badago, hango aplikazioak ez dira agertuko baimenen kudeatzailean, pribatutasun-panelean eta beste ezarpenetan"</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"Eremu pribatua konfiguratzen…"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"Eremu pribatua blokeo bidez babestuta dago"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"Eremu pribatuko aplikazioei buruzko erabilera-informazioa ezkutatuta dago eremu pribatua blokeatuta dagoenean"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"Atzitu eremu pribatua aplikazioen zerrendatik"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"Ezin izan da konfiguratu eremu pribatua"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"Saiatu berriro edo itzuli geroago"</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"Saiatu berriro"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"Pantailaren blokeoa erabili desblokeatzeko?"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"Gailua desblokeatzeko darabilzun modu berarekin desblokea dezakezu eremu pribatua. Bestela, aukeratu beste blokeo bat."</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"Erabili pantailaren blokeoa"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"Aukeratu beste blokeo bat"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"Dena prest!"</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"Eremu pribatua atzitzeko, pasatu hatza hasierako pantailaren behealdetik gora eta egin behera"</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"Eginda"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"Egin behera eremu pribatua atzitzeko"</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"<xliff:g id="COUNT">%d</xliff:g> hartz-marka gehi ditzakezu gehienez"</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"Iritsi zara onartzen den gehieneko hatz-marka kopurura"</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"Ezin duzu gehitu beste hatz-markarik"</string>
@@ -1135,8 +1105,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"Jarraitu aplikazioak erabiltzen gailua tolestuta egon bitartean"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"Smooth Display"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"Zenbait edukiren freskatze-abiadura <xliff:g id="ID_1">%1$d</xliff:g> Hz-eraino igotzen du automatikoki. Bateria gehiago erabiltzen du."</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"Erabili gehieneko freskatze-abiadura"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"Freskatze-abiadura handiena, ukipenei erantzuteko gaitasuna eta animazioen kalitatea hobetzeko. Bateria gehiago erabiltzen du."</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"Pantaila kontzientea"</string>
@@ -1372,6 +1341,7 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"Ezarpen komunak"</string>
<string name="apn_settings" msgid="4295467389400441299">"APNak"</string>
<string name="apn_edit" msgid="2003683641840248741">"Editatu sarbide-puntua"</string>
+ <string name="apn_add" msgid="9069613192201630934">"Gehitu sarbide-puntu bat"</string>
<string name="apn_not_set" msgid="8246646433109750293">"Ezarri gabe"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"Ez da ezarri"</string>
<string name="apn_name" msgid="6677695784108157953">"Izena"</string>
@@ -2006,12 +1976,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"Erabili Erabilerraztasuna botoia irekitzeko"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"Irekitzeko, eduki sakatuta bolumen-botoiak"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"Irekitzeko, sakatu pantaila hiru aldiz"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"Irekitzeko, sakatu pantaila 3 aldiz 2 hatzekin"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"Erabili keinua irekitzeko"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"Erabili erabilerraztasun-keinua"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"Eginbide hau erabiltzeko, sakatu pantailaren behealdeko <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> Erabilerraztasuna botoia.\n\nEginbide batetik bestera aldatzeko, eduki sakatuta Erabilerraztasuna botoia."</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"Eginbide hau erabiltzeko, sakatu pantailako Erabilerraztasuna botoia."</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"Eginbide hau erabiltzeko, eduki sakatuta bi bolumen-botoiak."</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"Luparen eginbidea abiarazteko eta gelditzeko, sakatu hiru aldiz pantailako edozein puntu."</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"Luparen eginbidea abiarazteko eta gelditzeko, sakatu 3 aldiz pantailako edozein puntu 2 hatzekin."</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"Eginbide hau erabiltzeko, pasatu bi hatz pantailaren behealdetik gorantz.\n\nEginbide batetik bestera aldatzeko, pasatu bi hatz gorantz eta eduki pantaila sakatuta."</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"Eginbide hau erabiltzeko, pasatu hiru hatz pantailaren behealdetik gorantz.\n\nEginbide batetik bestera aldatzeko, pasatu hiru hatz gorantz eta eduki pantaila sakatuta."</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"Erabilerraztasun-eginbide bat erabiltzeko, pasatu bi hatz pantailaren behealdetik gorantz.\n\nEginbide batetik bestera aldatzeko, pasatu bi hatz gorantz eta eduki pantaila sakatuta."</string>
@@ -2033,12 +2005,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"Eduki sakatuta bolumen-botoiak"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"eduki sakatuta bolumen-botoiak"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"Eduki sakatuta bolumen-botoiak"</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"Sakatu pantaila 3 aldiz 2 hatzekin"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"sakatu pantaila 3 aldiz 2 hatzekin"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"Sakatu bizkor pantaila {0,number,integer} aldiz 2 hatzekin"</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"Sakatu pantaila hiru aldiz"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"sakatu pantaila hiru aldiz"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"Sakatu pantaila bizkor {0,number,integer} aldiz. Baliteke lasterbide honek gailua moteltzea."</string>
@@ -2336,6 +2305,8 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"Aplikazio baten atzeko planoko jarduerak mugatzen badituzu, baliteke aplikazioak behar bezala ez funtzionatzea"</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"Aplikazio hau bateria optimizatzeko konfiguratuta ez dagoenez, ezin duzu mugatu.\n\nMugatzeko, aktibatu bateriaren optimizazioa."</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"Kudeatu bateria-erabilera"</string>
+ <string name="manager_battery_usage_allow_background_usage_title" msgid="6294649996820358852">"Eman atzeko planoan erabiltzeko baimena"</string>
+ <string name="manager_battery_usage_allow_background_usage_summary" msgid="8021153755201340819">"Gaitu denbora errealeko berritasunak jasotzeko eta desgaitu bateria aurrezteko"</string>
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"Mugagabea"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"Optimizatua"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"Mugatua"</string>
@@ -3846,6 +3817,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"Eman fitxategi guztiak kudeatzeko baimena"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"Eman gailuko edo konektatutako biltegiratze-unitateetako fitxategiak irakurtzeko, aldatzeko eta ezabatzeko baimena aplikazioari. Baimena emanez gero, baliteke aplikazioak fitxategiak atzitzea zuk jakin ez arren."</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"Fitxategi guztiak atzi ditzake"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"Pantaila osoko jakinarazpenak"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"Eman pantaila osoko jakinarazpenak erakusteko baimena aplikazioari"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"Eman gailua blokeatuta dagoenean pantaila osoa hartzen duten jakinarazpenak erakusteko baimena aplikazioari. Alarmen, sarrerako deien edo bestelako premiazko jakinarazpenen berri emateko erabil dezakete aplikazioek."</string>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index 9195019..375f19e 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -135,7 +135,14 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"قلم"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"همرسانی صدا"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"همرسانی صدا"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"تماسها و زنگهای هشدار"</string>
+ <!-- no translation found for audio_sharing_streams_category_title (862958129650324581) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_pref_title (4636293245167657721) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_title (8269455097512153101) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_qr_code_summary (4231875597377863735) -->
<skip />
<string name="date_and_time" msgid="1788358029823431692">"تاریخ و زمان"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"پروکسی"</string>
@@ -540,24 +547,15 @@
<string name="private_space_title" msgid="7078627930195569767">"فضای خصوصی"</string>
<string name="private_space_summary" msgid="8237652417163408001">"پنهان کردن برنامهها در پوشه خصوصی"</string>
<string name="private_space_one_lock_title" msgid="7306547190751832568">"باز کردن قفل بااستفاده از قفل صفحه"</string>
- <!-- no translation found for private_space_hide_title (8687034008994037610) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_title (972581369094289386) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_summary (1052569521186403642) -->
- <skip />
- <!-- no translation found for privatespace_access_header (982809349769470185) -->
- <skip />
- <!-- no translation found for privatespace_search_description (983837656432484282) -->
- <skip />
- <!-- no translation found for privatespace_tap_tile_description (4146608898639668340) -->
- <skip />
- <!-- no translation found for privatespace_unlock_description (4132755357482447360) -->
- <skip />
- <!-- no translation found for privatespace_hide_off_summary (7227778747159633671) -->
- <skip />
- <!-- no translation found for privatespace_hide_on_summary (6136704537527640183) -->
- <skip />
+ <string name="private_space_hide_title" msgid="8687034008994037610">"پنهان کردن هنگام قفل بودن"</string>
+ <string name="privatespace_hide_page_title" msgid="972581369094289386">"پنهان کردن «فضای خصوصی» هنگام قفل بودن"</string>
+ <string name="privatespace_hide_page_summary" msgid="1052569521186403642">"برای اینکه دیگران متوجه نشوند «فضای خصوصی» در دستگاهتان روشن است، میتوانید آن را از فهرست برنامهها پنهان کنید"</string>
+ <string name="privatespace_access_header" msgid="982809349769470185">"دسترسی به «فضای خصوصی» هنگام پنهان بودن"</string>
+ <string name="privatespace_search_description" msgid="983837656432484282">"در نوار جستجو، «فضای خصوصی» را جستجو کنید"</string>
+ <string name="privatespace_tap_tile_description" msgid="4146608898639668340">"روی کاشی «فضای خصوصی» ضربه بزنید"</string>
+ <string name="privatespace_unlock_description" msgid="4132755357482447360">"قفل «فضای خصوصی» را باز کنید"</string>
+ <string name="privatespace_hide_off_summary" msgid="7227778747159633671">"خاموش"</string>
+ <string name="privatespace_hide_on_summary" msgid="6136704537527640183">"روشن"</string>
<string name="private_space_category_system" msgid="1286843321867285700">"سیستم"</string>
<string name="private_space_create_title" msgid="47273568884806726">"ایجاد «فضای خصوصی»"</string>
<string name="private_space_delete_title" msgid="3075645119800272800">"حذف «فضای خصوصی»"</string>
@@ -570,54 +568,30 @@
<string name="no_device_lock_summary" msgid="7653477413589207824">"برای استفاده از «فضای خصوصی»، قفل صفحه در این دستگاه تنظیم کنید."</string>
<string name="no_device_lock_action_label" msgid="2640487005629001288">"تنظیم قفل صفحه"</string>
<string name="no_device_lock_cancel" msgid="4412602160321228863">"لغو کردن"</string>
- <!-- no translation found for privatespace_cancel_label (362351004019511784) -->
- <skip />
- <!-- no translation found for privatespace_setup_button_label (3696372546231047258) -->
- <skip />
- <!-- no translation found for privatespace_setup_title (177623114624330394) -->
- <skip />
- <!-- no translation found for privatespace_hide_apps_summary (4016518749055602268) -->
- <skip />
- <!-- no translation found for privatespace_how_title (8794102046435526065) -->
- <skip />
- <!-- no translation found for privatespace_access_bottom_text (1075244097441349030) -->
- <skip />
- <!-- no translation found for privatespace_protected_lock_text (7320604832432017423) -->
- <skip />
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_cancel_label" msgid="362351004019511784">"لغو کردن"</string>
+ <string name="privatespace_setup_button_label" msgid="3696372546231047258">"راهاندازی"</string>
+ <string name="privatespace_setup_title" msgid="177623114624330394">"راهاندازی «فضای خصوصی»"</string>
+ <string name="privatespace_hide_apps_summary" msgid="4016518749055602268">"برنامههای خصوصی را در فضای امنی که فقط خودتان میتوانید به آن دسترسی داشته باشید پنهان کنید"</string>
+ <string name="privatespace_how_title" msgid="8794102046435526065">"سازوکار عمل"</string>
+ <string name="privatespace_access_bottom_text" msgid="1075244097441349030">"میتوانید از پایین فهرست برنامهها به «فضای خصوصی» دسترسی پیدا کنید"</string>
+ <string name="privatespace_protected_lock_text" msgid="7320604832432017423">"از برنامههای موجود در «فضای خصوصی» با یک قفل محافظت میشود"</string>
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"اعلان برنامههای موجود در «فضای خصوصی» هنگام قفل بودن آن پنهان میشوند"</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"درصورت قفل بودن «فضای خصوصی»، برنامههای «فضای خصوصی» در مدیر اجازهها، داشبورد حریم خصوصی، و دیگر تنظیمات نشان داده نخواهد شد"</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"درحال راهاندازی «فضای خصوصی»…"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"«فضای خصوصی» با قفل محافظت میشود"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"اطلاعات استفاده برای برنامههای «فضای خصوصی» هنگام قفل بودن آن پنهان میشود"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"دسترسی به «فضای خصوصی» از فهرست برنامهها"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"«فضای خصوصی» راهاندازی نشد"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"اکنون دوباره امتحان کنید یا بعداً برگردید"</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"امتحان مجدد"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"از قفل صفحه برای باز کردن قفل استفاده شود؟"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"میتوانید با همان روشی که قفل دستگاهتان را باز میکنید قفل «فضای خصوصی» را باز کنید یا قفل دیگری انتخاب کنید"</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"استفاده از قفل صفحه"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"انتخاب قفل جدید"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"همه چیز آماده است!"</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"برای دسترسی به «فضای خصوصی»، از پایین صفحه اصلی به بالا بکشید، سپس به پایین پیمایش کنید"</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"تمام"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"برای دسترسی به «فضای خصوصی»، به پایین پیمایش کنید"</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"میتوانید حداکثر <xliff:g id="COUNT">%d</xliff:g> اثرانگشت اضافه کنید"</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"حداکثر تعداد اثرانگشت را اضافه کردهاید"</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"نمیتوانید اثرانگشتهای بیشتری اضافه کنید"</string>
@@ -1135,8 +1109,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"ادامه دادن به استفاده از برنامهها درحالت تاخوردگی"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"نمایشگر روان"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"بهطور خودکار نرخ بازآوری را برای بعضی محتوا تا <xliff:g id="ID_1">%1$d</xliff:g> هرتز بالا میبرد. مصرف باتری را افزایش میدهد."</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"اعمال بالاترین نرخ بازآوری"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"بالاترین نرخ بازآوری برای پاسخگویی بهبودیافته لمس و کیفیت پویانمایی. مصرف باتری را افزایش میدهد."</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"توجه به صفحه"</string>
@@ -1372,6 +1345,8 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"تنظیمات عمومی"</string>
<string name="apn_settings" msgid="4295467389400441299">"نامهای نقاط دستیابی"</string>
<string name="apn_edit" msgid="2003683641840248741">"ویرایش نقطه دستیابی"</string>
+ <!-- no translation found for apn_add (9069613192201630934) -->
+ <skip />
<string name="apn_not_set" msgid="8246646433109750293">"تنظیم نشده است"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"تنظیمنشده"</string>
<string name="apn_name" msgid="6677695784108157953">"نام"</string>
@@ -2006,12 +1981,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"استفاده از دکمه دسترسپذیری برای باز کردن"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"نگهداشتن کلیدهای میزان صدا برای باز کردن"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"برای باز کردن، روی صفحهنمایش سه ضربه سریع بزنید"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"برای باز شدن، سه ضربه با دو انگشت رو صفحهنمایش بزنید"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"استفاده از اشاره برای باز کردن"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"استفاده از اشاره دسترسپذیری"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"برای استفاده از این ویژگی، روی دکمه دسترسپذیری <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> در پایین صفحه ضربه بزنید.\n\nبرای جابهجایی بین ویژگیها، دکمه دسترسپذیری را لمس کنید و نگه دارید."</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"برای استفاده از این ویژگی، روی دکمه دسترسپذیری در صفحهنمایش ضربه بزنید."</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"برای استفاده از این ویژگی، هر دو کلید میزان صدا را فشار دهید و نگه دارید."</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"برای راهاندازی یا متوقف کردن درشتنمایی، روی جایی از صفحهنمایش سه ضربه بزنید."</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"برای راهاندازی یا متوقف کردن درشتنمایی، روی جایی از صفحهنمایش با دو انگشت سه ضربه بزنید."</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"برای استفاده از این ویژگی، با ۲ انگشت از پایین صفحه تند بهبالا بکشید.\n\nبرای جابهجایی بین ویژگیها، با ۲ انگشت تند بهبالا بکشید و نگه دارید."</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"برای استفاده از این ویژگی، با ۳ انگشت از پایین صفحه تند بهبالا بکشید.\n\nبرای جابهجایی بین ویژگیها، با ۳ انگشت تند بهبالا بکشید و نگه دارید."</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"برای استفاده از ویژگی دسترسپذیری، با ۲ انگشت از پایین صفحه تند بهبالا بکشید.\n\nبرای جابهجایی بین ویژگیها، با ۲ انگشت تند بهبالا بکشید و نگه دارید."</string>
@@ -2033,12 +2010,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"نگهداشتن کلیدهای میزان صدا"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"نگه داشتن کلیدهای میزان صدا"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"هردو کلید میزان صدا را فشار دهید و نگه دارید"</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"سه ضربه با دو انگشت روی صفحه"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"سه ضربه با دو انگشت روی صفحه"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"با دو انگشت {0,number,integer} بار بهسرعت روی صفحه ضربه بزنید"</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"روی صفحهنمایش سه ضربه سریع بزنید"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"سه ضربه سریع روی صفحه"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"سریع روی صفحهنمایش {0,number,integer} بار ضربه بزنید. ممکن است این میانبر سرعت دستگاه را کاهش دهد"</string>
@@ -2336,6 +2310,10 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"محدود کردن فعالیت پسزمینه برای برنامه ممکن است باعث عملکرد نادرست آن شود."</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"از آنجا که این برنامه برای بهینه کردن باتری تنظیم نشده است، نمیتوانید آن را محدود کنید.\n\nبرای محدود کردن برنامه، ابتدا بهینهسازی باتری را روشن کنید."</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"مدیریت مصرف باتری"</string>
+ <!-- no translation found for manager_battery_usage_allow_background_usage_title (6294649996820358852) -->
+ <skip />
+ <!-- no translation found for manager_battery_usage_allow_background_usage_summary (8021153755201340819) -->
+ <skip />
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"نامحدود"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"بهینهسازیشده"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"محدودشده"</string>
@@ -3846,6 +3824,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"دسترسی دادن برای مدیریت همه فایلها"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"به این برنامه اجازه میدهد همه فایلهای موجود در این دستگاه یا فضاهای ذخیرهسازی متصلشده به آن را بخواند، تغییر دهد، و حذف کند. اگر این مجوز به برنامه داده شود، ممکن است بدون اطلاع صریح شما به فایلها دسترسی یابد."</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"میتوانند به همه فایلها دسترسی داشته باشند"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"اعلانهای تمامصفحه"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"اجازه دادن به اعلانهای تمامصفحه از این برنامه"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"به این برنامه اجازه میدهد وقتی دستگاه قفل است، اعلانها را روی کل صفحه نشان دهد. برنامهها ممکن است از این قابلیت برای برجسته کردن هشدارها، تماس ورودی، یا دیگر اعلانهای فوری استفاده کنند."</string>
@@ -4056,7 +4040,7 @@
<string name="keywords_long_background_tasks" msgid="5788956269136054574">"کارهای طولانی، انتقال داده، کارهای پسزمینه"</string>
<string name="reset_shortcut_manager_throttling" msgid="2183940254903144298">"بازنشانی محدودکننده سرعت ShortcutManager"</string>
<string name="reset_shortcut_manager_throttling_complete" msgid="8949943009096885470">"محدودکننده سرعت ShortcutManager بازنشانی شد"</string>
- <string name="notification_suggestion_title" msgid="6309263655965785411">"کنترل اطلاعات روی صفحه قفل"</string>
+ <string name="notification_suggestion_title" msgid="6309263655965785411">"کنترل بافت صفحه قفل"</string>
<string name="notification_suggestion_summary" msgid="7615611244249276113">"نمایش یا پنهان کردن محتوای اعلان"</string>
<string name="page_tab_title_support" msgid="3235725053332345773">"نکتهها و پشتیبانی"</string>
<string name="developer_smallest_width" msgid="632354817870920911">"کوچکترین عرض"</string>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index c29ff7d..bfe4d40 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -135,7 +135,14 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"Näyttökynä"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"Audion jakaminen"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"Audion jakaminen"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"Puhelut ja hälytykset"</string>
+ <!-- no translation found for audio_sharing_streams_category_title (862958129650324581) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_pref_title (4636293245167657721) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_title (8269455097512153101) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_qr_code_summary (4231875597377863735) -->
<skip />
<string name="date_and_time" msgid="1788358029823431692">"Päivämäärä ja aika"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"Välityspalvelin"</string>
@@ -540,24 +547,15 @@
<string name="private_space_title" msgid="7078627930195569767">"Yksityinen tila"</string>
<string name="private_space_summary" msgid="8237652417163408001">"Piilota sovellukset yksityiseen kansioon"</string>
<string name="private_space_one_lock_title" msgid="7306547190751832568">"Avaaminen näytön lukituksella"</string>
- <!-- no translation found for private_space_hide_title (8687034008994037610) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_title (972581369094289386) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_summary (1052569521186403642) -->
- <skip />
- <!-- no translation found for privatespace_access_header (982809349769470185) -->
- <skip />
- <!-- no translation found for privatespace_search_description (983837656432484282) -->
- <skip />
- <!-- no translation found for privatespace_tap_tile_description (4146608898639668340) -->
- <skip />
- <!-- no translation found for privatespace_unlock_description (4132755357482447360) -->
- <skip />
- <!-- no translation found for privatespace_hide_off_summary (7227778747159633671) -->
- <skip />
- <!-- no translation found for privatespace_hide_on_summary (6136704537527640183) -->
- <skip />
+ <string name="private_space_hide_title" msgid="8687034008994037610">"Piilottaminen lukittuna"</string>
+ <string name="privatespace_hide_page_title" msgid="972581369094289386">"Yksityisen tilan piilottaminen, kun se on lukittuna"</string>
+ <string name="privatespace_hide_page_summary" msgid="1052569521186403642">"Piilota yksityinen tila piilottamalla se sovelluslistalta"</string>
+ <string name="privatespace_access_header" msgid="982809349769470185">"Pääsy yksityiseen tilaan, kun se on piilotettuna"</string>
+ <string name="privatespace_search_description" msgid="983837656432484282">"Hae hakukentästä \"Yksityinen tila\""</string>
+ <string name="privatespace_tap_tile_description" msgid="4146608898639668340">"Napauta Yksityinen tila ‑laattaa"</string>
+ <string name="privatespace_unlock_description" msgid="4132755357482447360">"Avaa yksityisen tilan lukitus"</string>
+ <string name="privatespace_hide_off_summary" msgid="7227778747159633671">"Pois päältä"</string>
+ <string name="privatespace_hide_on_summary" msgid="6136704537527640183">"Päällä"</string>
<string name="private_space_category_system" msgid="1286843321867285700">"Järjestelmä"</string>
<string name="private_space_create_title" msgid="47273568884806726">"Yksityisen tilan luominen"</string>
<string name="private_space_delete_title" msgid="3075645119800272800">"Yksityisen tilan poistaminen"</string>
@@ -570,54 +568,30 @@
<string name="no_device_lock_summary" msgid="7653477413589207824">"Jos haluat käyttää yksityistä tilaa, aseta näytön lukitus."</string>
<string name="no_device_lock_action_label" msgid="2640487005629001288">"Aseta näytön lukitus"</string>
<string name="no_device_lock_cancel" msgid="4412602160321228863">"Peruuta"</string>
- <!-- no translation found for privatespace_cancel_label (362351004019511784) -->
- <skip />
- <!-- no translation found for privatespace_setup_button_label (3696372546231047258) -->
- <skip />
- <!-- no translation found for privatespace_setup_title (177623114624330394) -->
- <skip />
- <!-- no translation found for privatespace_hide_apps_summary (4016518749055602268) -->
- <skip />
- <!-- no translation found for privatespace_how_title (8794102046435526065) -->
- <skip />
- <!-- no translation found for privatespace_access_bottom_text (1075244097441349030) -->
- <skip />
- <!-- no translation found for privatespace_protected_lock_text (7320604832432017423) -->
- <skip />
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_cancel_label" msgid="362351004019511784">"Peruuta"</string>
+ <string name="privatespace_setup_button_label" msgid="3696372546231047258">"Ota käyttöön"</string>
+ <string name="privatespace_setup_title" msgid="177623114624330394">"Yksityisen tilan ottaminen käyttöön"</string>
+ <string name="privatespace_hide_apps_summary" msgid="4016518749055602268">"Piilota suojatun tilan yksityiset sovellukset, joihin vain sinulla on pääsy"</string>
+ <string name="privatespace_how_title" msgid="8794102046435526065">"Näin se toimii"</string>
+ <string name="privatespace_access_bottom_text" msgid="1075244097441349030">"Saat pääsyn yksityiseen tilaan sovelluslistan alareunasta"</string>
+ <string name="privatespace_protected_lock_text" msgid="7320604832432017423">"Yksityisen tilan sovelluksia suojataan lukolla"</string>
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"Ilmoitukset yksityisen tilan sovelluksista ovat piilotettuina, kun se on lukittu"</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"Yksityisen tilan sovellukset eivät näy lupienhallinnassa, yksityisyydenhallintapaneelissa tai muissa asetuksissa, kun yksityinen tila on lukittuna"</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"Yksityistä tilaa otetaan käyttöön…"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"Yksityinen tila suojataan lukolla"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"Yksityisen tilan sovellusten käyttötiedot piilotetaan, kun se on lukittu"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"Yksityisen tilan käyttö sovelluslistalta"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"Yksityisen tilan käyttöönotto epäonnistui"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"Yritä uudelleen nyt tai palaa myöhemmin"</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"Yritä uudelleen"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"Käytetäänkö avaamiseen näytön lukitusta?"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"Voit avata yksityisen tilan lukituksen samaan tapaan kuin avaat laitteen lukituksen tai voit valita eri lukon"</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"Käytä näytön lukitusta"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"Valitse uusi lukko"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"Valmis"</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"Voit käyttää yksityistä tilaa pyyhkäisemällä ylös aloitusnäytön alareunasta ja vierittämällä alas"</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"Valmis"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"Vieritä alas käyttääksesi yksityistä tilaa"</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"Voit lisätä korkeintaan <xliff:g id="COUNT">%d</xliff:g> sormenjälkeä"</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"Et voi lisätä useampia sormenjälkiä."</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"Enempää sormenjälkiä ei voi lisätä."</string>
@@ -1135,8 +1109,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"Jatka sovellusten käyttöä taitetussa tilassa"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"Smooth Display"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"Nostaa tietyn sisällön päivittymistiheyden automaattisesti <xliff:g id="ID_1">%1$d</xliff:g> hertsiin. Lisää akun käyttöä."</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"Pakota suurin mahdollinen päivitysväli"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"Korkein päivitysväli parantaa kosketukseen vastaamista ja animaatioiden laatua. Lisää akun käyttöä."</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"Huomionäyttö"</string>
@@ -1372,6 +1345,8 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"Yhteiskäytön asetukset"</string>
<string name="apn_settings" msgid="4295467389400441299">"APN:t"</string>
<string name="apn_edit" msgid="2003683641840248741">"Muokkaa tukiasemaa"</string>
+ <!-- no translation found for apn_add (9069613192201630934) -->
+ <skip />
<string name="apn_not_set" msgid="8246646433109750293">"Ei asetettu"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"Ei valittu"</string>
<string name="apn_name" msgid="6677695784108157953">"Nimi"</string>
@@ -2006,12 +1981,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"Avaa saavutettavuuspainikkeella"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"Avaa painamalla äänenvoimakkuuspainikkeita"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"Avaa kolmoisnapauttamalla näyttöä"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"Avaa napauttamalla näyttöä kolmesti kahdella sormella"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"Avaa eleellä"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"Käytä esteettömyyselettä"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"Laita ominaisuus päälle napauttamalla näytön alareunassa olevaa esteettömyyspainiketta <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g>.\n\nVaihda ominaisuudesta toiseen painamalla esteettömyyspainiketta pitkään."</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"Ota ominaisuus käyttöön napauttamalla näytöllä näkyvää saavutettavuuspainiketta."</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"Laita tämä ominaisuus päälle painamalla pitkään molempia äänenvoimakkuuspainikkeita."</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"Aloita tai lopeta suurennus kolmoisnapauttamalla missä vain näytöllä."</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"Aloita tai lopeta suurennus kolmoisnapauttamalla kahdella sormella missä tahansa näytöllä."</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"Laita ominaisuus päälle pyyhkäisemällä näytön alalaidasta ylös kahdella sormella.\n\nVaihda ominaisuudesta toiseen pyyhkäisemällä ylös kahdella sormella ja koskettamalla pitkään."</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"Laita ominaisuus päälle pyyhkäisemällä näytön alalaidasta ylös kolmella sormella.\n\nVaihda ominaisuudesta toiseen pyyhkäisemällä ylös kolmella sormella ja koskettamalla pitkään."</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"Laita esteettömyysominaisuus päälle pyyhkäisemällä näytön alalaidasta ylös kahdella sormella.\n\nVaihda ominaisuudesta toiseen pyyhkäisemällä ylös kahdella sormella ja koskettamalla pitkään."</string>
@@ -2033,12 +2010,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"Paina äänenvoimakkuuspainikkeita pitkään"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"paina äänenvoimakkuuspainikkeita pitkään"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"Paina molempia äänenvoimakkuuspainikkeita pitkään"</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"Kolmoisnapauta näyttöä kahdella sormella"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"kolmoisnapauta näyttöä kahdella sormella"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"Napauta näyttöä {0,number,integer} kertaa nopeasti kahdella sormella"</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"Kolmoisnapauta näyttöä"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"kolmoisnapauta näyttöä"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"Napauta näyttöä nopeasti {0,number,integer} kertaa. Tämän pikanäppäimen käyttö voi hidastaa laitettasi."</string>
@@ -2336,6 +2310,10 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"Jos rajoitat sovelluksen toimintaa taustalla, se voi alkaa toimia virheellisesti."</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"Sovellusta ei voi rajoittaa, koska akun optimointi ei ole käytössä.\n\nOta optimointi käyttöön rajoittamista varten."</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"Rajaa akunkäyttöä"</string>
+ <!-- no translation found for manager_battery_usage_allow_background_usage_title (6294649996820358852) -->
+ <skip />
+ <!-- no translation found for manager_battery_usage_allow_background_usage_summary (8021153755201340819) -->
+ <skip />
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"Ei rajoituksia"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"Optimoitu"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"Rajoitettu"</string>
@@ -3846,6 +3824,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"Salli pääsy tiedostojen ylläpitoa varten"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"Salli sovelluksen lukea, muokata ja poistaa kaikkia tiedostoja tällä laitteella ja yhdistetyillä tallennuslaitteilla. Jos sallit tämän, sovelluksella on pääsy tiedostoihin ilman, että sinulle ilmoitetaan asiasta erikseen."</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"Voi päästä kaikkiin tiedostoihin"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"Koko näytön ilmoitukset"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"Salli sovelluksen lähettää koko näytön ilmoituksia"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"Salli sovelluksen näyttää koko näytön ilmoituksia, kun laite on lukittu. Sovellukset voivat käyttää tällaisia ilmoituksia hälytyksistä, saapuvista puheluista tai muista tärkeistä asioista ilmoittamiseen."</string>
diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml
index 97b5ca7..107ae4d 100644
--- a/res/values-fr-rCA/strings.xml
+++ b/res/values-fr-rCA/strings.xml
@@ -135,7 +135,14 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"Stylet"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"Partage du son"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"Partager le son"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"Appels et alarmes"</string>
+ <!-- no translation found for audio_sharing_streams_category_title (862958129650324581) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_pref_title (4636293245167657721) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_title (8269455097512153101) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_qr_code_summary (4231875597377863735) -->
<skip />
<string name="date_and_time" msgid="1788358029823431692">"Date et heure"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"Serveur mandataire"</string>
@@ -540,24 +547,15 @@
<string name="private_space_title" msgid="7078627930195569767">"Espace privé"</string>
<string name="private_space_summary" msgid="8237652417163408001">"Masquer des applications dans un dossier privé"</string>
<string name="private_space_one_lock_title" msgid="7306547190751832568">"Déverrouiller avec le Verrouillage de l\'écran"</string>
- <!-- no translation found for private_space_hide_title (8687034008994037610) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_title (972581369094289386) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_summary (1052569521186403642) -->
- <skip />
- <!-- no translation found for privatespace_access_header (982809349769470185) -->
- <skip />
- <!-- no translation found for privatespace_search_description (983837656432484282) -->
- <skip />
- <!-- no translation found for privatespace_tap_tile_description (4146608898639668340) -->
- <skip />
- <!-- no translation found for privatespace_unlock_description (4132755357482447360) -->
- <skip />
- <!-- no translation found for privatespace_hide_off_summary (7227778747159633671) -->
- <skip />
- <!-- no translation found for privatespace_hide_on_summary (6136704537527640183) -->
- <skip />
+ <string name="private_space_hide_title" msgid="8687034008994037610">"Masquer lorsque verrouillé"</string>
+ <string name="privatespace_hide_page_title" msgid="972581369094289386">"Masquer l\'Espace privé lorsqu\'il est verrouillé"</string>
+ <string name="privatespace_hide_page_summary" msgid="1052569521186403642">"Masquez l\'Espace privé dans votre liste d\'applications pour préserver votre confidentialité"</string>
+ <string name="privatespace_access_header" msgid="982809349769470185">"Accéder à l\'Espace privé lorsqu\'il est masqué"</string>
+ <string name="privatespace_search_description" msgid="983837656432484282">"Recherchez « Espace privé » dans la barre de recherche"</string>
+ <string name="privatespace_tap_tile_description" msgid="4146608898639668340">"Touchez la tuile Espace privé"</string>
+ <string name="privatespace_unlock_description" msgid="4132755357482447360">"Déverrouillez votre Espace privé"</string>
+ <string name="privatespace_hide_off_summary" msgid="7227778747159633671">"Désactivé"</string>
+ <string name="privatespace_hide_on_summary" msgid="6136704537527640183">"Activé"</string>
<string name="private_space_category_system" msgid="1286843321867285700">"Système"</string>
<string name="private_space_create_title" msgid="47273568884806726">"Créer un espace privé"</string>
<string name="private_space_delete_title" msgid="3075645119800272800">"Supprimer l\'espace privé"</string>
@@ -570,54 +568,30 @@
<string name="no_device_lock_summary" msgid="7653477413589207824">"Réglez le Verrouillage d\'écran pour utiliser l\'espace privé."</string>
<string name="no_device_lock_action_label" msgid="2640487005629001288">"Définir Verrouillage d\'écran"</string>
<string name="no_device_lock_cancel" msgid="4412602160321228863">"Annuler"</string>
- <!-- no translation found for privatespace_cancel_label (362351004019511784) -->
- <skip />
- <!-- no translation found for privatespace_setup_button_label (3696372546231047258) -->
- <skip />
- <!-- no translation found for privatespace_setup_title (177623114624330394) -->
- <skip />
- <!-- no translation found for privatespace_hide_apps_summary (4016518749055602268) -->
- <skip />
- <!-- no translation found for privatespace_how_title (8794102046435526065) -->
- <skip />
- <!-- no translation found for privatespace_access_bottom_text (1075244097441349030) -->
- <skip />
- <!-- no translation found for privatespace_protected_lock_text (7320604832432017423) -->
- <skip />
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_cancel_label" msgid="362351004019511784">"Annuler"</string>
+ <string name="privatespace_setup_button_label" msgid="3696372546231047258">"Configuration"</string>
+ <string name="privatespace_setup_title" msgid="177623114624330394">"Configurer l\'Espace privé"</string>
+ <string name="privatespace_hide_apps_summary" msgid="4016518749055602268">"Masquez les applications privées dans un espace sécurisé dont l\'accès vous est réservé"</string>
+ <string name="privatespace_how_title" msgid="8794102046435526065">"Fonctionnement"</string>
+ <string name="privatespace_access_bottom_text" msgid="1075244097441349030">"Vous pouvez accéder à l\'Espace privé en bas de votre liste d\'applications"</string>
+ <string name="privatespace_protected_lock_text" msgid="7320604832432017423">"Les applications de l\'Espace privé sont protégées par un verrou"</string>
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"Les notifications des applications de l\'Espace privé sont masquées lorsqu\'il est verrouillé"</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"Les applications de l\'Espace privé ne figureront pas dans le gestionnaire des autorisations, dans le Tableau de bord de confidentialité ni dans d\'autres paramètres lorsque l\'Espace privé est verrouillé"</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"Configuration de l\'Espace privé en cours…"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"L\'Espace privé est protégé par un verrou"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"Les informations d\'utilisation des applications de l\'Espace privé sont masquées lorsque celui-ci est verrouillé"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"Accéder à l\'Espace privé à partir de votre liste d\'applis"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"Impossible de configurer l\'Espace privé"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"Réessayez maintenant ou revenez plus tard"</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"Réessayer"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"Utiliser Verrouillage d\'écran pour déverrouiller?"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"Vous pouvez déverrouiller l\'Espace privé de la même manière que votre appareil ou choisir un autre type de verrou"</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"Utiliser le Verrouillage d\'écran"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"Sélectionner un nouveau verrou"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"Tout est prêt!"</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"Pour accéder à l\'Espace privé, balayez votre écran d\'accueil du bas vers le haut, puis faites défiler l\'écran vers le bas"</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"Terminé"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"Faire défiler vers le bas pour accéder à l\'Espace privé"</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"Vous pouvez ajouter jusqu\'à <xliff:g id="COUNT">%d</xliff:g> empreintes digitales"</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"Vous avez ajouté le nombre maximal d\'empreintes digitales"</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"Impossible d\'ajouter des empreintes digitales"</string>
@@ -1135,8 +1109,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"Continuer à utiliser les applications lorsque l\'appareil est plié"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"Affichage fluide"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"Augmente automatiquement la fréquence d\'actualisation jusqu\'à <xliff:g id="ID_1">%1$d</xliff:g> Hz pour certains contenus. Augmente l\'utilisation de la pile."</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"Forcer la fréquence d\'actualisation de pointe"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"Taux d\'actualisation supérieur pour une amélioration de la réactivité tactile et de la fluidité des animations. Cette fonction sollicite davantage la pile de l\'appareil."</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"Écran attentif"</string>
@@ -1372,6 +1345,8 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"Paramètres communs"</string>
<string name="apn_settings" msgid="4295467389400441299">"Noms des points d\'accès"</string>
<string name="apn_edit" msgid="2003683641840248741">"Modifier le point d\'accès"</string>
+ <!-- no translation found for apn_add (9069613192201630934) -->
+ <skip />
<string name="apn_not_set" msgid="8246646433109750293">"Non défini"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"Non configuré"</string>
<string name="apn_name" msgid="6677695784108157953">"Nom"</string>
@@ -2006,12 +1981,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"Utiliser le bouton d\'accessibilité pour ouvrir"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"Maintenez les touches de volume enfoncées pour l\'ouvrir"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"Touchez l\'écran trois fois pour l\'ouvrir"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"Ouvrir en touchant l\'écran trois fois avec deux doigts"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"Utiliser un geste pour activer le service"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"Utiliser le geste d\'accessibilité"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"Pour utiliser cette fonctionnalité, touchez le bouton d\'accessibilité <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> dans le bas de l\'écran.\n\nPour basculer entre les fonctionnalités, maintenez le doigt sur le bouton d\'accessibilité."</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"Pour utiliser cette fonctionnalité, touchez le bouton d\'accessibilité sur votre écran."</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"Pour utiliser cette fonctionnalité, maintenez les deux touches de volume enfoncées."</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"Pour démarrer et arrêter l\'agrandissement, touchez l\'écran trois fois n\'importe où."</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"Pour démarrer et arrêter l\'Agrandissement, touchez l\'écran trois fois avec deux doigts."</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"Pour utiliser cette fonctionnalité, balayez l\'écran de bas en haut avec deux doigts.\n\nPour basculer entre les fonctionnalités, balayez l\'écran vers le haut avec deux doigts et maintenez la pression."</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"Pour utiliser cette fonctionnalité, balayez l\'écran de bas en haut avec trois doigts.\n\nPour basculer entre les fonctionnalités, balayez l\'écran vers le haut avec trois doigts et maintenez-les-y."</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"Pour utiliser une fonctionnalité d\'accessibilité, balayez l\'écran de bas en haut avec deux doigts.\n\nPour basculer entre les fonctionnalités, balayez l\'écran vers le haut avec deux doigts et maintenez-la pression."</string>
@@ -2033,12 +2010,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"Maintenir enfoncées les touches de volume"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"maintenir enfoncées les touches de volume"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"Maintenez enfoncées les deux touches de volume"</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"Toucher l\'écran trois fois avec deux doigts"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"toucher l\'écran trois fois avec deux doigts"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"Touchez rapidement l\'écran {0,number,integer} fois avec deux doigts"</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"Toucher l\'écran trois fois"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"toucher l\'écran trois fois"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"Touchez rapidement l\'écran {0,number,integer} fois. Ce raccourci peut ralentir votre appareil"</string>
@@ -2336,6 +2310,10 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"Si vous limitez l\'activité en arrière-plan d\'une application, cela peut provoquer un fonctionnement instable"</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"Comme cette appli n\'est pas config. pour optim. la pile, vous ne pouvez pas la restr.\n\nPour la restr., activez l\'optim. de pile."</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"Gérer l\'utilisation de la pile"</string>
+ <!-- no translation found for manager_battery_usage_allow_background_usage_title (6294649996820358852) -->
+ <skip />
+ <!-- no translation found for manager_battery_usage_allow_background_usage_summary (8021153755201340819) -->
+ <skip />
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"Aucune restriction"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"Optimisée"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"Limitée"</string>
@@ -3846,6 +3824,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"Autorisez l\'accès pour gérer tous les fichiers"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"Autoriser cette application à lire, à modifier et à supprimer tous les fichiers qui se trouvent sur cet appareil ou sur des volumes de stockage connectés. Si vous accordez cette autorisation, l\'application pourra accéder à des fichiers sans que vous le sachiez."</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"Peuvent accéder à tous les fichiers"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"Notifications en plein écran"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"Autoriser les notifications en plein écran de cette application"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"Autoriser cette application à afficher des notifications en plein écran lorsque l\'appareil est verrouillé. Les applications peuvent s\'en servir pour mettre en évidence des alarmes, des appels entrants ou d\'autres notifications urgentes."</string>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index 3ff2cb9..1d2a375 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -135,7 +135,14 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"Stylet"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"Partage du contenu audio"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"Partager le contenu audio"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"Appels et alarmes"</string>
+ <!-- no translation found for audio_sharing_streams_category_title (862958129650324581) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_pref_title (4636293245167657721) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_title (8269455097512153101) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_qr_code_summary (4231875597377863735) -->
<skip />
<string name="date_and_time" msgid="1788358029823431692">"Date et heure"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"Proxy"</string>
@@ -540,24 +547,15 @@
<string name="private_space_title" msgid="7078627930195569767">"Espace privé"</string>
<string name="private_space_summary" msgid="8237652417163408001">"Cachez vos applications dans un dossier privé"</string>
<string name="private_space_one_lock_title" msgid="7306547190751832568">"Déverrouiller avec le verrouillage de l\'écran"</string>
- <!-- no translation found for private_space_hide_title (8687034008994037610) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_title (972581369094289386) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_summary (1052569521186403642) -->
- <skip />
- <!-- no translation found for privatespace_access_header (982809349769470185) -->
- <skip />
- <!-- no translation found for privatespace_search_description (983837656432484282) -->
- <skip />
- <!-- no translation found for privatespace_tap_tile_description (4146608898639668340) -->
- <skip />
- <!-- no translation found for privatespace_unlock_description (4132755357482447360) -->
- <skip />
- <!-- no translation found for privatespace_hide_off_summary (7227778747159633671) -->
- <skip />
- <!-- no translation found for privatespace_hide_on_summary (6136704537527640183) -->
- <skip />
+ <string name="private_space_hide_title" msgid="8687034008994037610">"Masquer lorsque l\'application est verrouillée"</string>
+ <string name="privatespace_hide_page_title" msgid="972581369094289386">"Masquer Espace privé lorsque l\'application est verrouillée"</string>
+ <string name="privatespace_hide_page_summary" msgid="1052569521186403642">"Vous pouvez masquer Espace privé de votre liste d\'applis pour éviter les regards indiscrets"</string>
+ <string name="privatespace_access_header" msgid="982809349769470185">"Accéder à Espace privé lorsque l\'application est masquée"</string>
+ <string name="privatespace_search_description" msgid="983837656432484282">"Rechercher \"Private Space\" dans la barre de recherche"</string>
+ <string name="privatespace_tap_tile_description" msgid="4146608898639668340">"Appuyer sur le bloc Espace privé"</string>
+ <string name="privatespace_unlock_description" msgid="4132755357482447360">"Déverrouiller votre Espace privé"</string>
+ <string name="privatespace_hide_off_summary" msgid="7227778747159633671">"Désactivé"</string>
+ <string name="privatespace_hide_on_summary" msgid="6136704537527640183">"Activé"</string>
<string name="private_space_category_system" msgid="1286843321867285700">"Système"</string>
<string name="private_space_create_title" msgid="47273568884806726">"Créer un espace privé"</string>
<string name="private_space_delete_title" msgid="3075645119800272800">"Supprimer l\'espace privé"</string>
@@ -570,54 +568,30 @@
<string name="no_device_lock_summary" msgid="7653477413589207824">"Pour utiliser Espace privé, définissez un verrouillage de l\'écran sur cet appareil."</string>
<string name="no_device_lock_action_label" msgid="2640487005629001288">"Activer le verrouillage de l\'écran"</string>
<string name="no_device_lock_cancel" msgid="4412602160321228863">"Annuler"</string>
- <!-- no translation found for privatespace_cancel_label (362351004019511784) -->
- <skip />
- <!-- no translation found for privatespace_setup_button_label (3696372546231047258) -->
- <skip />
- <!-- no translation found for privatespace_setup_title (177623114624330394) -->
- <skip />
- <!-- no translation found for privatespace_hide_apps_summary (4016518749055602268) -->
- <skip />
- <!-- no translation found for privatespace_how_title (8794102046435526065) -->
- <skip />
- <!-- no translation found for privatespace_access_bottom_text (1075244097441349030) -->
- <skip />
- <!-- no translation found for privatespace_protected_lock_text (7320604832432017423) -->
- <skip />
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_cancel_label" msgid="362351004019511784">"Annuler"</string>
+ <string name="privatespace_setup_button_label" msgid="3696372546231047258">"Configuration"</string>
+ <string name="privatespace_setup_title" msgid="177623114624330394">"Configurer Espace privé"</string>
+ <string name="privatespace_hide_apps_summary" msgid="4016518749055602268">"Masquez les applications privées dans un espace sécurisé qui n\'est accessible que par vous"</string>
+ <string name="privatespace_how_title" msgid="8794102046435526065">"Comment ça marche"</string>
+ <string name="privatespace_access_bottom_text" msgid="1075244097441349030">"Vous pouvez accéder à Espace privé à partir du bas de votre liste d\'applications"</string>
+ <string name="privatespace_protected_lock_text" msgid="7320604832432017423">"Les applis dans Espace privé sont protégées par un verrou"</string>
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"Les notifications des applis dans Espace privé sont masquées lorsque cette application est verrouillée"</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"Les applis contenues dans Espace privé n\'apparaîtront pas dans le gestionnaire d\'autorisations, dans le tableau de bord Confidentialité ni dans d\'autres paramètres lorsque l\'application Espace privé est verrouillée"</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"Configuration d\'Espace privé…"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"L\'application Espace privé est protégée par un verrouillage"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"Les informations d\'utilisation des applis contenues dans Espace privé sont masquées lorsque l\'application est verrouillée"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"Accéder à Espace privé depuis votre liste d\'applications"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"Impossible de configurer Espace privé"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"Réessayer maintenant ou revenir plus tard"</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"Réessayer"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"Déverrouiller avec le verrouillage de l\'écran ?"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"Vous pouvez déverrouiller Espace privé de la même manière que vous déverrouillez votre appareil ou bien choisir un verrouillage différent"</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"Utiliser le verrouillage de l\'écran"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"Choisir un nouveau verrouillage"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"Tout est prêt !"</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"Pour accéder à Espace privé, balayez votre écran d\'accueil de bas en haut, puis faites défiler vers le bas"</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"OK"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"Faites défiler vers le bas pour accéder à Espace privé"</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"Vous pouvez ajouter jusqu\'à <xliff:g id="COUNT">%d</xliff:g> empreintes digitales"</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"Vous avez ajouté le nombre maximal autorisé d\'empreintes digitales"</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"Impossible d\'ajouter d\'autres empreintes digitales"</string>
@@ -1135,8 +1109,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"Continuer à utiliser les applis sur Fold"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"Affichage fluide"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"Augmente automatiquement la fréquence d\'actualisation jusqu\'à <xliff:g id="ID_1">%1$d</xliff:g> Hz pour certains contenus. Sollicite davantage la batterie."</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"Forcer la fréquence d\'actualisation crête"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"Fréquence d\'actualisation la plus élevée pour améliorer la réactivité au toucher et la qualité d\'animation. La batterie est davantage sollicitée."</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"Regard sur écran"</string>
@@ -1372,6 +1345,8 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"Paramètres communs"</string>
<string name="apn_settings" msgid="4295467389400441299">"APN"</string>
<string name="apn_edit" msgid="2003683641840248741">"Modifier le point d\'accès"</string>
+ <!-- no translation found for apn_add (9069613192201630934) -->
+ <skip />
<string name="apn_not_set" msgid="8246646433109750293">"Non défini"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"Non défini"</string>
<string name="apn_name" msgid="6677695784108157953">"Nom"</string>
@@ -2006,12 +1981,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"Utiliser le bouton Accessibilité pour ouvrir"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"Maintenir enfoncés les boutons de volume pour ouvrir"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"Appuyez trois fois sur l\'écran pour ouvrir"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"Appuyer trois fois sur l\'écran avec deux doigts pour ouvrir"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"Utiliser un geste pour ouvrir"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"Utiliser le geste d\'accessibilité"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"Pour utiliser cette fonctionnalité, appuyez sur le bouton Accessibilité <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> en bas de l\'écran.\n\nPour changer de fonctionnalité, appuyez dessus de manière prolongée."</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"Pour utiliser cette fonctionnalité, appuyez sur le bouton Accessibilité sur l\'écran."</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"Pour utiliser cette fonctionnalité, appuyez de manière prolongée sur les deux boutons de volume."</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"Pour lancer ou arrêter l\'agrandissement, appuyez trois fois n\'importe où sur l\'écran."</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"Pour commencer et arrêter l\'agrandissement, appuyez trois fois sur votre écran avec deux doigts."</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"Pour utiliser cette fonctionnalité, balayez l\'écran vers le haut avec deux doigts.\n\nPour changer de fonctionnalité, balayez l\'écran vers le haut avec deux doigts et appuyez de manière prolongée."</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"Pour utiliser cette fonctionnalité, balayez l\'écran vers le haut avec trois doigts.\n\nPour changer de fonctionnalité, balayez l\'écran vers le haut avec trois doigts et appuyez de manière prolongée."</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"Pour utiliser une fonctionnalité d\'accessibilité, balayez l\'écran vers le haut avec deux doigts.\n\nPour changer de fonctionnalité, balayez l\'écran vers le haut avec deux doigts et appuyez de manière prolongée."</string>
@@ -2033,12 +2010,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"Maintenir enfoncés les boutons de volume"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"maintenir enfoncés les boutons de volume"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"Appuyer de manière prolongée sur les deux boutons de volume"</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"Appuyer trois fois sur l\'écran avec deux doigts"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"appuyer trois fois sur l\'écran avec deux doigts"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"Appuyer rapidement sur l\'écran {0,number,integer} fois avec deux doigts"</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"Appuyer trois fois sur l\'écran"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"appuyer trois fois sur l\'écran"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"Appuyer rapidement {0,number,integer} fois sur l\'écran. Ce raccourci peut ralentir votre appareil."</string>
@@ -2336,6 +2310,10 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"Si vous limitez l\'activité en arrière-plan d\'une application, cela peut provoquer son dysfonctionnement"</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"Cette appli n\'étant pas configurée pour optimiser batterie, vous ne pouvez pas la limiter.\n\nActivez optimisation batterie."</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"Gérer l\'utilisation de la batterie"</string>
+ <!-- no translation found for manager_battery_usage_allow_background_usage_title (6294649996820358852) -->
+ <skip />
+ <!-- no translation found for manager_battery_usage_allow_background_usage_summary (8021153755201340819) -->
+ <skip />
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"Sans restriction"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"Optimisée"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"Limitée"</string>
@@ -3846,6 +3824,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"Autoriser l\'accès pour gérer tous les fichiers"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"Autoriser cette appli à lire, modifier et supprimer tous les fichiers sur cet appareil ou sur n\'importe quel volume de stockage connecté. Si cette option est activée, l\'appli pourra accéder à des fichiers à votre insu."</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"Peut peut accéder à tous les fichiers"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"Notifications en plein écran"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"Autoriser l\'appli à afficher les notifications en plein écran"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"Autoriser cette appli à afficher des notifications occupant tout l\'écran lorsque l\'appareil est verrouillé. Les applis peuvent les utiliser pour mettre en avant les alarmes, les appels entrants ou d\'autres notifications urgentes."</string>
diff --git a/res/values-gl/strings.xml b/res/values-gl/strings.xml
index 13b9861..2da0b81 100644
--- a/res/values-gl/strings.xml
+++ b/res/values-gl/strings.xml
@@ -135,7 +135,14 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"Lapis óptico"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"Uso compartido do audio"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"Compartir audio"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"Chamadas e alarmas"</string>
+ <!-- no translation found for audio_sharing_streams_category_title (862958129650324581) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_pref_title (4636293245167657721) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_title (8269455097512153101) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_qr_code_summary (4231875597377863735) -->
<skip />
<string name="date_and_time" msgid="1788358029823431692">"Data e hora"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"Proxy"</string>
@@ -540,24 +547,15 @@
<string name="private_space_title" msgid="7078627930195569767">"Espazo privado"</string>
<string name="private_space_summary" msgid="8237652417163408001">"Oculta as aplicacións nun cartafol privado"</string>
<string name="private_space_one_lock_title" msgid="7306547190751832568">"Desbloquear mediante o bloqueo de pantalla"</string>
- <!-- no translation found for private_space_hide_title (8687034008994037610) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_title (972581369094289386) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_summary (1052569521186403642) -->
- <skip />
- <!-- no translation found for privatespace_access_header (982809349769470185) -->
- <skip />
- <!-- no translation found for privatespace_search_description (983837656432484282) -->
- <skip />
- <!-- no translation found for privatespace_tap_tile_description (4146608898639668340) -->
- <skip />
- <!-- no translation found for privatespace_unlock_description (4132755357482447360) -->
- <skip />
- <!-- no translation found for privatespace_hide_off_summary (7227778747159633671) -->
- <skip />
- <!-- no translation found for privatespace_hide_on_summary (6136704537527640183) -->
- <skip />
+ <string name="private_space_hide_title" msgid="8687034008994037610">"Ocultar cando estea bloqueado"</string>
+ <string name="privatespace_hide_page_title" msgid="972581369094289386">"Ocultar o espazo privado cando estea bloqueado"</string>
+ <string name="privatespace_hide_page_summary" msgid="1052569521186403642">"Para que non saiban que o espazo privado está no teu dispositivo, ocúltao na lista de aplicacións"</string>
+ <string name="privatespace_access_header" msgid="982809349769470185">"Acceso ao espazo privado cando está oculto"</string>
+ <string name="privatespace_search_description" msgid="983837656432484282">"Escribe \"espazo privado\" na barra de busca"</string>
+ <string name="privatespace_tap_tile_description" msgid="4146608898639668340">"Toca o atallo do espazo privado"</string>
+ <string name="privatespace_unlock_description" msgid="4132755357482447360">"Desbloquea o espazo privado"</string>
+ <string name="privatespace_hide_off_summary" msgid="7227778747159633671">"Opción desactivada"</string>
+ <string name="privatespace_hide_on_summary" msgid="6136704537527640183">"Opción activada"</string>
<string name="private_space_category_system" msgid="1286843321867285700">"Sistema"</string>
<string name="private_space_create_title" msgid="47273568884806726">"Crear espazo privado"</string>
<string name="private_space_delete_title" msgid="3075645119800272800">"Eliminar espazo privado"</string>
@@ -570,54 +568,30 @@
<string name="no_device_lock_summary" msgid="7653477413589207824">"Para usar o espazo privado, define un bloqueo de pantalla."</string>
<string name="no_device_lock_action_label" msgid="2640487005629001288">"Definir bloqueo de pantalla"</string>
<string name="no_device_lock_cancel" msgid="4412602160321228863">"Cancelar"</string>
- <!-- no translation found for privatespace_cancel_label (362351004019511784) -->
- <skip />
- <!-- no translation found for privatespace_setup_button_label (3696372546231047258) -->
- <skip />
- <!-- no translation found for privatespace_setup_title (177623114624330394) -->
- <skip />
- <!-- no translation found for privatespace_hide_apps_summary (4016518749055602268) -->
- <skip />
- <!-- no translation found for privatespace_how_title (8794102046435526065) -->
- <skip />
- <!-- no translation found for privatespace_access_bottom_text (1075244097441349030) -->
- <skip />
- <!-- no translation found for privatespace_protected_lock_text (7320604832432017423) -->
- <skip />
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_cancel_label" msgid="362351004019511784">"Cancelar"</string>
+ <string name="privatespace_setup_button_label" msgid="3696372546231047258">"Configurar"</string>
+ <string name="privatespace_setup_title" msgid="177623114624330394">"Configurar o espazo privado"</string>
+ <string name="privatespace_hide_apps_summary" msgid="4016518749055602268">"Oculta as aplicacións privadas nun espazo seguro ao que só ti poidas acceder"</string>
+ <string name="privatespace_how_title" msgid="8794102046435526065">"Como funciona?"</string>
+ <string name="privatespace_access_bottom_text" msgid="1075244097441349030">"Podes acceder ao espazo privado desde a parte inferior da túa lista de aplicacións"</string>
+ <string name="privatespace_protected_lock_text" msgid="7320604832432017423">"As aplicacións do espazo privado están protexidas cun bloqueo"</string>
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"Cando o espazo privado está bloqueado, ocúltanse as notificacións das súas aplicacións"</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"As aplicacións do espazo privado non aparecerán no xestor de permisos, no panel de privacidade nin noutras opcións de configuración cando o espazo privado estea bloqueado"</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"Configurando espazo privado…"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"O espazo privado está protexido por un bloqueo"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"A información de uso das aplicacións do espazo privado ocúltase cando está bloqueado"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"Accede ao espazo privado desde a lista de aplicacións"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"Produciuse un erro ao configurar o espazo privado"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"Téntao de novo agora ou volve máis tarde"</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"Tentar de novo"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"Queres usar bloqueo de pantalla para desbloquear?"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"Podes desbloquear o espazo privado do mesmo xeito que fas co teu dispositivo ou elixir outro bloqueo"</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"Usar bloqueo de pantalla"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"Elixir outro bloqueo"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"Todo listo"</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"Para acceder ao espazo privado, pasa o dedo cara arriba desde a parte inferior da pantalla de inicio e desprázate cara abaixo"</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"Feito"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"Desprázate cara abaixo para acceder ao espazo privado"</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"Podes engadir ata <xliff:g id="COUNT">%d</xliff:g> impresións dixitais"</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"Engadiches o número máximo de impresións dixitais"</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"Non se poden engadir máis impresións dixitais"</string>
@@ -1135,8 +1109,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"Seguir usando aplicacións co dispositivo pregado"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"Pantalla fluída"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"Incrementa automaticamente a frecuencia de actualización ata <xliff:g id="ID_1">%1$d</xliff:g> Hz en determinados tipos de contido. Aumenta o uso da batería."</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"Forzar taxa de actualización máxima"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"A taxa de actualización máis alta para mellorar a resposta táctil e a calidade das animacións. Aumenta o uso da batería."</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"Atención á pantalla"</string>
@@ -1372,6 +1345,8 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"Opcións de configuración comúns"</string>
<string name="apn_settings" msgid="4295467389400441299">"APN"</string>
<string name="apn_edit" msgid="2003683641840248741">"Editar punto de acceso"</string>
+ <!-- no translation found for apn_add (9069613192201630934) -->
+ <skip />
<string name="apn_not_set" msgid="8246646433109750293">"Sen configurar"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"Sen configurar"</string>
<string name="apn_name" msgid="6677695784108157953">"Nome"</string>
@@ -2006,12 +1981,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"Utilizar o botón de accesibilidade para abrir"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"Mantén premidas as teclas de volume para abrir"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"Toca tres veces a pantalla para abrir"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"Toca a pantalla tres veces con dous dedos para abrir"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"Utilizar un xesto para abrir"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"Usa o xesto de accesibilidade"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"Toca o botón Accesibilidade <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> na parte inferior da pantalla para utilizar esta función.\n\nPara cambiar de función, mantén premido o botón Accesibilidade."</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"Para utilizar esta función, toca na pantalla o botón Accesibilidade."</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"Mantén premidas as dúas teclas de volume para utilizar esta función."</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"Para iniciar e deter a ampliación, toca tres veces en calquera parte da pantalla."</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"Para iniciar e deter a ampliación, toca tres veces en calquera parte da pantalla con dous dedos."</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"Pasa 2 dedos cara arriba desde a parte inferior da pantalla para utilizar esta función.\n\nPara cambiar de función, pasa 2 dedos cara arriba e mantén premida a pantalla."</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"Pasa 3 dedos cara arriba desde a parte inferior da pantalla para utilizar esta función.\n\nPara cambiar de función, pasa 3 dedos cara arriba e mantén premida a pantalla."</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"Pasa 2 dedos cara arriba desde a parte inferior da pantalla para utilizar unha función de accesibilidade.\n\nPara cambiar de función, pasa 2 dedos cara arriba e mantén premida a pantalla."</string>
@@ -2033,12 +2010,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"Manter premidas as teclas de volume"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"manter premidas as teclas de volume"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"Mantén premidas as dúas teclas de volume."</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"Toque triplo na pantalla con dous dedos"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"toque triplo na pantalla con dous dedos"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"Toca a pantalla rapidamente {0,number,integer} veces con dous dedos"</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"Tres toques na pantalla"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"tocar tres veces a pantalla"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"Toca a pantalla {0,number,integer} veces rapidamente. Este atallo pode reducir a velocidade do dispositivo"</string>
@@ -2336,6 +2310,10 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"Si limitas a actividade en segundo plano para unha aplicación, é posible que non funcione correctamente"</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"Non podes limitar a aplicación porque non se configurou para optimizar a batería.\n\nPrimeiro activa a optimización da batería."</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"Xestionar o uso da batería"</string>
+ <!-- no translation found for manager_battery_usage_allow_background_usage_title (6294649996820358852) -->
+ <skip />
+ <!-- no translation found for manager_battery_usage_allow_background_usage_summary (8021153755201340819) -->
+ <skip />
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"Sen restricións"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"Optimizado"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"Restrinxido"</string>
@@ -3846,6 +3824,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"Permitir xestionar todos os ficheiros"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"Permite que esta aplicación lea, modifique e elimine todos os ficheiros deste dispositivo ou de calquera unidade de almacenamento conectada. Se lle dás permiso, a aplicación poderá acceder aos ficheiros sen que se che notifique explicitamente."</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"Poden acceder a todos os ficheiros"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"Notificacións en pantalla completa"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"Permitir notificacións en pantalla completa procedentes desta aplicación"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"Permite que esta aplicación amose notificacións en pantalla completa cando o dispositivo estea bloqueado. A aplicación pode usar esta opción para destacar alarmas, chamadas entrantes ou outras notificacións urxentes."</string>
diff --git a/res/values-gu/strings.xml b/res/values-gu/strings.xml
index 3469748..336205b 100644
--- a/res/values-gu/strings.xml
+++ b/res/values-gu/strings.xml
@@ -135,8 +135,11 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"સ્ટાઇલસ"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"ઑડિયો શેરિંગ"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"ઑડિયો શેર કરો"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
- <skip />
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"કૉલ અને અલાર્મ"</string>
+ <string name="audio_sharing_streams_category_title" msgid="862958129650324581">"LE ઑડિયો સ્ટ્રીમ સાથે કનેક્ટ કરો"</string>
+ <string name="audio_sharing_streams_pref_title" msgid="4636293245167657721">"નજીકના ઑડિયો સ્ટ્રીમ"</string>
+ <string name="audio_sharing_streams_title" msgid="8269455097512153101">"ઑડિયો સ્ટ્રીમ"</string>
+ <string name="audio_sharing_streams_qr_code_summary" msgid="4231875597377863735">"QR કોડનો ઉપયોગ કરીને કોઈ ઑડિયો સ્ટ્રીમ સાથે કનેક્ટ કરો"</string>
<string name="date_and_time" msgid="1788358029823431692">"તારીખ અને સમય"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"પ્રૉક્સી"</string>
<string name="proxy_clear_text" msgid="6529658759984031149">"સાફ કરો"</string>
@@ -540,24 +543,15 @@
<string name="private_space_title" msgid="7078627930195569767">"ખાનગી સ્પેસ"</string>
<string name="private_space_summary" msgid="8237652417163408001">"ખાનગી ફોલ્ડરમાં ઍપ છુપાવો"</string>
<string name="private_space_one_lock_title" msgid="7306547190751832568">"સ્ક્રીન લૉકનો ઉપયોગ કરીને અનલૉક કરો"</string>
- <!-- no translation found for private_space_hide_title (8687034008994037610) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_title (972581369094289386) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_summary (1052569521186403642) -->
- <skip />
- <!-- no translation found for privatespace_access_header (982809349769470185) -->
- <skip />
- <!-- no translation found for privatespace_search_description (983837656432484282) -->
- <skip />
- <!-- no translation found for privatespace_tap_tile_description (4146608898639668340) -->
- <skip />
- <!-- no translation found for privatespace_unlock_description (4132755357482447360) -->
- <skip />
- <!-- no translation found for privatespace_hide_off_summary (7227778747159633671) -->
- <skip />
- <!-- no translation found for privatespace_hide_on_summary (6136704537527640183) -->
- <skip />
+ <string name="private_space_hide_title" msgid="8687034008994037610">"લૉક કરેલી હોય, ત્યારે છુપાવો"</string>
+ <string name="privatespace_hide_page_title" msgid="972581369094289386">"ખાનગી સ્પેસ લૉક કરેલી હોય, ત્યારે છુપાવો"</string>
+ <string name="privatespace_hide_page_summary" msgid="1052569521186403642">"ડિવાઇસની ખાનગી સ્પેસ અન્યોથી છુપાવવા તેને ઍપની સૂચિથી છુપાવો"</string>
+ <string name="privatespace_access_header" msgid="982809349769470185">"છુપાવેલી હોય, ત્યારે પણ ખાનગી સ્પેસ ઍક્સેસ કરો"</string>
+ <string name="privatespace_search_description" msgid="983837656432484282">"શોધ બારમાં \'ખાનગી સ્પેસ\' શોધો"</string>
+ <string name="privatespace_tap_tile_description" msgid="4146608898639668340">"ખાનગી સ્પેસ ટાઇલ પર ટૅપ કરો"</string>
+ <string name="privatespace_unlock_description" msgid="4132755357482447360">"તમારી ખાનગી સ્પેસ અનલૉક કરો"</string>
+ <string name="privatespace_hide_off_summary" msgid="7227778747159633671">"બંધ છે"</string>
+ <string name="privatespace_hide_on_summary" msgid="6136704537527640183">"ચાલુ છે"</string>
<string name="private_space_category_system" msgid="1286843321867285700">"સિસ્ટમ"</string>
<string name="private_space_create_title" msgid="47273568884806726">"ખાનગી સ્પેસ બનાવો"</string>
<string name="private_space_delete_title" msgid="3075645119800272800">"ખાનગી સ્પેસ ડિલીટ કરી"</string>
@@ -570,54 +564,30 @@
<string name="no_device_lock_summary" msgid="7653477413589207824">"ખાનગી સ્પેસનો ઉપયોગ કરવા, આ ડિવાઇસ પર સ્ક્રીન લૉક સેટ કરો."</string>
<string name="no_device_lock_action_label" msgid="2640487005629001288">"સ્ક્રીન લૉક સેટ કરો"</string>
<string name="no_device_lock_cancel" msgid="4412602160321228863">"રદ કરો"</string>
- <!-- no translation found for privatespace_cancel_label (362351004019511784) -->
- <skip />
- <!-- no translation found for privatespace_setup_button_label (3696372546231047258) -->
- <skip />
- <!-- no translation found for privatespace_setup_title (177623114624330394) -->
- <skip />
- <!-- no translation found for privatespace_hide_apps_summary (4016518749055602268) -->
- <skip />
- <!-- no translation found for privatespace_how_title (8794102046435526065) -->
- <skip />
- <!-- no translation found for privatespace_access_bottom_text (1075244097441349030) -->
- <skip />
- <!-- no translation found for privatespace_protected_lock_text (7320604832432017423) -->
- <skip />
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_cancel_label" msgid="362351004019511784">"રદ કરો"</string>
+ <string name="privatespace_setup_button_label" msgid="3696372546231047258">"સેટઅપ કરો"</string>
+ <string name="privatespace_setup_title" msgid="177623114624330394">"ખાનગી સ્પેસનું સેટઅપ કરો"</string>
+ <string name="privatespace_hide_apps_summary" msgid="4016518749055602268">"માત્ર તમે ઍક્સેસ કરી શકો એવી કોઈ સુરક્ષિત સ્પેસમાં ખાનગી ઍપ છુપાવો"</string>
+ <string name="privatespace_how_title" msgid="8794102046435526065">"તેની કામ કરવાની રીત"</string>
+ <string name="privatespace_access_bottom_text" msgid="1075244097441349030">"તમે તમારી ઍપની સૂચિમાં સૌથી નીચેથી ખાનગી સ્પેસ ઍક્સેસ કરી શકશો"</string>
+ <string name="privatespace_protected_lock_text" msgid="7320604832432017423">"ખાનગી સ્પેસમાંની ઍપ કોઈ લૉક વડે સુરક્ષિત રાખવામાં આવે છે"</string>
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"જ્યારે ખાનગી સ્પેસ લૉક કરવામાં આવી હોય, ત્યારે ખાનગી સ્પેસ સંબંધિત ઍપના નોટિફિકેશન છુપાવવામાં આવે છે"</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"જ્યારે ખાનગી સ્પેસ લૉક કરવામાં આવી હોય, ત્યારે પરવાનગી મેનેજર, પ્રાઇવસી ડૅશબોર્ડ અને અન્ય સેટિંગમાં ખાનગી સ્પેસ સંબંધી ઍપ દેખાશે નહીં"</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"ખાનગી સ્પેસનું સેટઅપ કરી રહ્યાં છીએ…"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"કોઈ લૉક વડે ખાનગી સ્પેસ સુરક્ષિત રાખવામાં આવે છે"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"જ્યારે ખાનગી સ્પેસ લૉક કરવામાં આવી હોય, ત્યારે તેમાં રહેલી ઍપના વપરાશની માહિતી છુપાવવામાં આવે છે"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"તમારી ઍપની સૂચિમાંથી ખાનગી સ્પેસ ઍક્સેસ કરો"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"ખાનગી સ્પેસનું સેટઅપ કરી શકાતું નથી"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"હમણાં ફરીથી પ્રયાસ કરો અથવા થોડા સમય પછી પાછા આવો"</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"ફરી પ્રયાસ કરો"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"શું અનલૉક કરવા માટે, સ્ક્રીન લૉકનો ઉપયોગ કરીએ?"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"તમે તમારા ડિવાઇસને જે રીતે અનલૉક કરો છો તે જ રીતે તમે ખાનગી સ્પેસને અનલૉક કરી શકો છો અથવા કોઈ અલગ લૉક પસંદ કરી શકો છો"</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"સ્ક્રીન લૉકનો ઉપયોગ કરો"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"નવું લૉક પસંદ કરો"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"બધું સેટ થઈ ગયું!"</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"ખાનગી સ્પેસ ઍક્સેસ કરવા માટે, તમારી હોમ સ્ક્રીનની સૌથી નીચેથી ઉપર તરફ સ્વાઇપ કરો, પછી નીચે સ્ક્રોલ કરો"</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"થઈ ગયું"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"ખાનગી સ્પેસને ઍક્સેસ કરવા માટે નીચે સ્ક્રોલ કરો"</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"તમે <xliff:g id="COUNT">%d</xliff:g> જેટલી ફિંગરપ્રિન્ટ ઉમેરી શકો છો"</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"તમે મહત્તમ ફિંગરપ્રિન્ટ્સ ઉમેર્યા છે"</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"વધુ ફિંગરપ્રિન્ટ્સ ઉમેરી શકતાં નથી"</string>
@@ -1135,8 +1105,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"ફોલ્ડ હોવા પર ઍપનો ઉપયોગ કરવાનું ચાલુ રાખો"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"Smooth Display"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"અમુક કન્ટેન્ટ માટે રિફ્રેશ થવાનો રેટ ઑટોમૅટિક રીતે <xliff:g id="ID_1">%1$d</xliff:g> Hz સુધી વધે છે. બૅટરીના વપરાશમાં વધારો કરે છે."</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"રિફ્રેશ થવાનો રેટ ફરજિયાત પણે મહત્તમ લેવલે કરો"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"સ્પર્શના પ્રતિભાવમાં સુધારણા અને ઍનિમેશનની ક્વૉલિટી માટે ઉચ્ચતમ રિફ્રેશ રેટ. આ સુવિધા બૅટરીનો વપરાશ વધારે છે."</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"સ્ક્રીન અટેન્શન"</string>
@@ -1372,6 +1341,7 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"કૉમ્યુનલ સેટિંગ"</string>
<string name="apn_settings" msgid="4295467389400441299">"APNs"</string>
<string name="apn_edit" msgid="2003683641840248741">"અૅક્સેસ પૉઇન્ટમાં ફેરફાર કરો"</string>
+ <string name="apn_add" msgid="9069613192201630934">"ઍક્સેસ પૉઇન્ટ ઉમેરો"</string>
<string name="apn_not_set" msgid="8246646433109750293">"સેટ નથી"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"સેટ નથી"</string>
<string name="apn_name" msgid="6677695784108157953">"નામ"</string>
@@ -2006,12 +1976,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"ખોલવા માટે ઍક્સેસિબિલિટી બટનનો ઉપયોગ કરો"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"ખોલવા માટે વૉલ્યૂમ કીને દબાવી રાખો"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"ખોલવા માટે સ્ક્રીનને ત્રણ વાર ટૅપ કરો"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"ખોલવા માટે, સ્ક્રીન પર બે આંગળી વડે ત્રણ વાર ટૅપ કરો"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"ખોલવા માટે સંકેતનો ઉપયોગ કરો"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"ઍક્સેસિબિલિટી સંકેતનો ઉપયોગ કરો"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"આ સુવિધાનો ઉપયોગ કરવા માટે, તમારી સ્ક્રીનમાં નીચેની બાજુએ રહેલા ઍક્સેસિબિલિટી બટન <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g>ને ટૅપ કરો.\n\nકોઈ એક સુવિધાથી બીજી સુવિધા પર સ્વિચ કરવા માટે, ઍક્સેસિબિલિટી બટનને ટચ કરીને થોડીવાર દબાવી રાખો."</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"આ સુવિધાનો ઉપયોગ કરવા માટે, તમારી સ્ક્રીન પરના ઍક્સેસિબિલિટી બટનને ટૅપ કરો."</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"આ સુવિધાનો ઉપયોગ કરવા માટે, વૉલ્યૂમની બન્ને કીને દબાવી રાખો."</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"મોટું કરવાનું શરૂ કરવા અને બંધ કરવા માટે, તમારી સ્ક્રીન પર ગમે-ત્યાં ત્રણ વાર ટૅપ કરો."</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"મોટું કરવાનું શરૂ અને બંધ કરવા માટે, બે આંગળી વડે તમારી સ્ક્રીન પર ગમે ત્યાં ત્રણ વાર ટૅપ કરો."</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"આ સુવિધાનો ઉપયોગ કરવા માટે, 2 આંગળી વડે સ્ક્રીનની નીચેના ભાગથી ઉપરની તરફ સ્વાઇપ કરો.\n\nકોઈ એક સુવિધાથી બીજી સુવિધા પર સ્વિચ કરવા માટે, 2 આંગળી વડે ઉપરની તરફ સ્વાઇપ કરીને દબાવી રાખો."</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"આ સુવિધાનો ઉપયોગ કરવા માટે, 3 આંગળી વડે સ્ક્રીનની નીચેના ભાગથી ઉપરની તરફ સ્વાઇપ કરો.\n\nકોઈ એક સુવિધાથી બીજી સુવિધા પર સ્વિચ કરવા માટે, 3 આંગળી વડે ઉપરની તરફ સ્વાઇપ કરીને દબાવી રાખો."</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"કોઈ ઍક્સેસિબિલિટી સુવિધાનો ઉપયોગ કરવા માટે, 2 આંગળી વડે સ્ક્રીનની નીચેના ભાગથી ઉપરની તરફ સ્વાઇપ કરો.\n\nકોઈ એક સુવિધાથી બીજી સુવિધા પર સ્વિચ કરવા માટે, 2 આંગળી વડે ઉપરની તરફ સ્વાઇપ કરીને દબાવી રાખો."</string>
@@ -2033,12 +2005,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"વૉલ્યૂમ કી દબાવી રાખો"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"વૉલ્યૂમ કી દબાવી રાખો"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"વૉલ્યૂમની બન્ને કીને દબાવી રાખો"</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"સ્ક્રીન પર બે આંગળી વડે ત્રણ વાર ટૅપ કરો"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"સ્ક્રીન પર બે આંગળી વડે ત્રણ વાર ટૅપ કરો"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"બે આંગળી વડે સ્ક્રીન પર ઝડપથી {0,number,integer} વાર ટૅપ કરો"</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"સ્ક્રીનને ત્રણ વાર ટૅપ કરો"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"સ્ક્રીનને ત્રણ વાર ટૅપ કરો"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"ઝડપથી સ્ક્રીન પર {0,number,integer} વાર ટૅપ કરો. આ શૉર્ટકટ તમારા ડિવાઇસને ધીમું કરી શકે છે"</string>
@@ -2336,6 +2305,8 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"જો તમે બૅકગ્રાઉન્ડ પ્રવૃત્તિને એક ઍપ માટે મર્યાદિત કરો છો, તો તે અયોગ્ય વર્તન કરી શકે છે"</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"આ ઍપ બૅટરી ઑપ્ટિમાઇઝ કરવા સેટ નથી તેથી તમે તેને પ્રતિબંધિત કરી શકશો નહીં.\n\nએને પ્રતિબંધિત કરવા, પહેલાં બૅટરી ઑપ્ટિમાઇઝ કરવાનું ચાલુ કરો."</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"બૅટરીનો વપરાશ મેનેજ કરો"</string>
+ <string name="manager_battery_usage_allow_background_usage_title" msgid="6294649996820358852">"બૅકગ્રાઉન્ડમાં ઉપયોગ કરવાની મંજૂરી આપો"</string>
+ <string name="manager_battery_usage_allow_background_usage_summary" msgid="8021153755201340819">"રિઅલ-ટાઇમ અપડેટ માટે, બૅકગ્રાઉન્ડમાં ઉપયોગ કરવાની સુવિધા ચાલુ કરો, બૅટરી બચાવવા તેને બંધ કરો"</string>
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"અમર્યાદિત"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"ઑપ્ટિમાઇઝ કરેલો"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"પ્રતિબંધિત"</string>
@@ -3846,6 +3817,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"બધી ફાઇલોને મેનેજ કરવા ઍક્સેસની મંજૂરી આપો"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"આ ઍપને આ ડિવાઇસ અથવા કોઈપણ કનેક્ટેડ સ્ટોરેજ વૉલ્યૂમ પરની બધી ફાઇલો વાંચવા, ફેરફાર કરવા અને ડિલીટ કરવાની મંજૂરી આપો. જો મંજૂરી આપવામાં આવે, તો ઍપ તમને જાણ કર્યા વિના ફાઇલોને ઍક્સેસ કરી શકે છે."</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"બધી ફાઇલો ઍક્સેસ કરી શકે છે"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"પૂર્ણ સ્ક્રીનના નોટિફિકેશન"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"આ ઍપમાંથી પૂર્ણ સ્ક્રીનના નોટિફિકેશનને મંજૂરી આપો"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"જ્યારે ડિવાઇસ લૉક કરેલું હોય, ત્યારે આ ઍપને પૂર્ણ સ્ક્રીનમાં નોટિફિકેશન બતાવવાની મંજૂરી આપો. ઍપ આનો ઉપયોગ અલાર્મ, ઇનકમિંગ કૉલ અથવા અન્ય તાકીદના નોટિફિકેશન હાઇલાઇટ કરવા માટે કરી શકે છે."</string>
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index b14b021..0e3907b 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -135,8 +135,11 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"स्टाइलस"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"ऑडियो शेयर करने की सुविधा"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"ऑडियो शेयर करें"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
- <skip />
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"कॉल और अलार्म"</string>
+ <string name="audio_sharing_streams_category_title" msgid="862958129650324581">"LE Audio स्ट्रीम से कनेक्ट करें"</string>
+ <string name="audio_sharing_streams_pref_title" msgid="4636293245167657721">"आस-पास होने वाली ऑडियो स्ट्रीम"</string>
+ <string name="audio_sharing_streams_title" msgid="8269455097512153101">"ऑडियो स्ट्रीम"</string>
+ <string name="audio_sharing_streams_qr_code_summary" msgid="4231875597377863735">"क्यूआर कोड का इस्तेमाल करके ऑडियो स्ट्रीम से कनेक्ट करें"</string>
<string name="date_and_time" msgid="1788358029823431692">"तारीख और समय"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"प्रॉक्सी"</string>
<string name="proxy_clear_text" msgid="6529658759984031149">"साफ़ करें"</string>
@@ -540,24 +543,15 @@
<string name="private_space_title" msgid="7078627930195569767">"प्राइवेट स्पेस"</string>
<string name="private_space_summary" msgid="8237652417163408001">"प्राइवेट फ़ोल्डर में ऐप्लिकेशन छिपाएं"</string>
<string name="private_space_one_lock_title" msgid="7306547190751832568">"अनलॉक करने के लिए, स्क्रीन लॉक का इस्तेमाल करें"</string>
- <!-- no translation found for private_space_hide_title (8687034008994037610) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_title (972581369094289386) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_summary (1052569521186403642) -->
- <skip />
- <!-- no translation found for privatespace_access_header (982809349769470185) -->
- <skip />
- <!-- no translation found for privatespace_search_description (983837656432484282) -->
- <skip />
- <!-- no translation found for privatespace_tap_tile_description (4146608898639668340) -->
- <skip />
- <!-- no translation found for privatespace_unlock_description (4132755357482447360) -->
- <skip />
- <!-- no translation found for privatespace_hide_off_summary (7227778747159633671) -->
- <skip />
- <!-- no translation found for privatespace_hide_on_summary (6136704537527640183) -->
- <skip />
+ <string name="private_space_hide_title" msgid="8687034008994037610">"लॉक होने पर छिपाएं"</string>
+ <string name="privatespace_hide_page_title" msgid="972581369094289386">"लॉक होने पर प्राइवेट स्पेस छिपाएं"</string>
+ <string name="privatespace_hide_page_summary" msgid="1052569521186403642">"डिवाइस पर प्राइवेट स्पेस छिपाने के लिए, अपने ऐप्लिकेशन सूची से इसे छिपाएं"</string>
+ <string name="privatespace_access_header" msgid="982809349769470185">"छिपाए जाने पर प्राइवेट स्पेस ऐक्सेस करें"</string>
+ <string name="privatespace_search_description" msgid="983837656432484282">"खोज बार में \'प्राइवेट स्पेस\' को खोजें"</string>
+ <string name="privatespace_tap_tile_description" msgid="4146608898639668340">"प्राइवेट स्पेस के टाइल पर टैप करें"</string>
+ <string name="privatespace_unlock_description" msgid="4132755357482447360">"अपना प्राइवेट स्पेस अनलॉक करें"</string>
+ <string name="privatespace_hide_off_summary" msgid="7227778747159633671">"बंद है"</string>
+ <string name="privatespace_hide_on_summary" msgid="6136704537527640183">"चालू है"</string>
<string name="private_space_category_system" msgid="1286843321867285700">"सिस्टम"</string>
<string name="private_space_create_title" msgid="47273568884806726">"प्राइवेट स्पेस बनाएं"</string>
<string name="private_space_delete_title" msgid="3075645119800272800">"प्राइवेट स्पेस मिटाएं"</string>
@@ -570,54 +564,30 @@
<string name="no_device_lock_summary" msgid="7653477413589207824">"डिवाइस पर स्क्रीन लॉक सेट करके प्राइवेट स्पेस इस्तेमाल करें."</string>
<string name="no_device_lock_action_label" msgid="2640487005629001288">"स्क्रीन लॉक सेट करें"</string>
<string name="no_device_lock_cancel" msgid="4412602160321228863">"अभी नहीं"</string>
- <!-- no translation found for privatespace_cancel_label (362351004019511784) -->
- <skip />
- <!-- no translation found for privatespace_setup_button_label (3696372546231047258) -->
- <skip />
- <!-- no translation found for privatespace_setup_title (177623114624330394) -->
- <skip />
- <!-- no translation found for privatespace_hide_apps_summary (4016518749055602268) -->
- <skip />
- <!-- no translation found for privatespace_how_title (8794102046435526065) -->
- <skip />
- <!-- no translation found for privatespace_access_bottom_text (1075244097441349030) -->
- <skip />
- <!-- no translation found for privatespace_protected_lock_text (7320604832432017423) -->
- <skip />
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_cancel_label" msgid="362351004019511784">"रद्द करें"</string>
+ <string name="privatespace_setup_button_label" msgid="3696372546231047258">"सेट अप करें"</string>
+ <string name="privatespace_setup_title" msgid="177623114624330394">"प्राइवेट स्पेस सेट अप करें"</string>
+ <string name="privatespace_hide_apps_summary" msgid="4016518749055602268">"निजी ऐप्लिकेशन को उस सुरक्षित स्पेस में छिपाएं जिसका ऐक्सेस सिर्फ़ आपके पास हो"</string>
+ <string name="privatespace_how_title" msgid="8794102046435526065">"यह सुविधा कैसे काम करती है"</string>
+ <string name="privatespace_access_bottom_text" msgid="1075244097441349030">"ऐप्लिकेशन की सूची के नीचे मौजूद प्राइवेट स्पेस को ऐक्सेस किया जा सकता है"</string>
+ <string name="privatespace_protected_lock_text" msgid="7320604832432017423">"लॉक के ज़रिए, प्राइवेट स्पेस में ऐप्लिकेशन सुरक्षित रखे जाते हैं"</string>
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"लॉक होने पर, प्राइवेट स्पेस में ऐप्लिकेशन की सूचनाएं छिपी रहती हैं"</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"प्राइवेट स्पेस लॉक होने पर, प्राइवेट स्पेस के ऐप्लिकेशन अनुमतियों को मैनेज करने की सेटिंग, प्राइवसी डैशबोर्ड, और अन्य सेटिंग में नहीं दिखेंगे"</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"प्राइवेट स्पेस सेट अप किया जा रहा है…"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"लॉक के ज़रिए, प्राइवेट स्पेस सुरक्षित रखा जाता है"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"लॉक होने पर, प्राइवेट स्पेस वाले ऐप्लिकेशन के इस्तेमाल से जुड़ी जानकारी छिपा दी जाती है"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"ऐप्लिकेशन की सूची से प्राइवेट स्पेस को ऐक्सेस करें"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"प्राइवेट स्पेस को सेट अप नहीं किया जा सका"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"फिर से कोशिश करें या बाद में करके देखें"</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"फिर से कोशिश करें"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"अनलॉक करने के लिए स्क्रीन लॉक का इस्तेमाल करना है?"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"डिवाइस की तरह ही प्राइवेट स्पेस को अनलॉक किया जा सकता है या कोई दूसरा लॉक सेट किया जा सकता है"</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"स्क्रीन लॉक का इस्तेमाल करें"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"नया लॉक चुनें"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"हो गया!"</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"प्राइवेट स्पेस को ऐक्सेस करने के लिए, होम स्क्रीन पर नीचे से ऊपर की ओर स्वाइप करें. इसके बाद, नीचे की ओर स्क्रोल करें"</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"हो गया"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"प्राइवेट स्पेस ऐक्सेस करने के लिए नीचे की ओर स्क्रोल करें"</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"ज़्यादा से ज़्यादा <xliff:g id="COUNT">%d</xliff:g> फ़िंगरप्रिंट जोड़े जा सकते हैं"</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"आप अधिकतम संख्या में फ़िंगरप्रिंट जोड़ चुके हैं"</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"और ज़्यादा फ़िंगरप्रिंट नहीं जोड़े जा सकते"</string>
@@ -1135,8 +1105,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"फ़ोल्ड करने पर भी, ऐप्लिकेशन का इस्तेमाल जारी रखें"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"स्मूद डिसप्ले"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"इस सेटिंग को चालू करने पर, कुछ कॉन्टेंट के लिए रीफ़्रेश दर अपने-आप <xliff:g id="ID_1">%1$d</xliff:g> हर्ट्ज़ तक बढ़ जाती है. इसमें ज़्यादा बैटरी खर्च होती है."</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"रीफ़्रेश दर को सबसे ज़्यादा पर सेट करें"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"रीफ़्रेश होने की सबसे ज़्यादा दर जिसके लागू होने के बाद छूकर की जाने वाली कार्रवाइयां तेज़ हो जाती हैं. साथ ही, ऐनिमेशन की क्वालिटी बेहतर हो जाती है. इसमें बैटरी ज़्यादा खर्च होती है."</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"स्क्रीन चालू रखने की सुविधा"</string>
@@ -1372,6 +1341,7 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"कम्यूनिटी सेटिंग"</string>
<string name="apn_settings" msgid="4295467389400441299">"ऐक्सेस पॉइंट नाम"</string>
<string name="apn_edit" msgid="2003683641840248741">"ऐक्सेस पॉइंट में बदलाव करें"</string>
+ <string name="apn_add" msgid="9069613192201630934">"ऐक्सेस पॉइंट जोड़ें"</string>
<string name="apn_not_set" msgid="8246646433109750293">"सेट नहीं है"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"सेट नहीं है"</string>
<string name="apn_name" msgid="6677695784108157953">"नाम"</string>
@@ -2006,12 +1976,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"इसे खोलने के लिए सुलभता बटन का इस्तेमाल करें"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"खोलने के लिए, आवाज़ वाले दोनों बटन दबाकर रखें"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"खोलने के लिए स्क्रीन पर तीन बार टैप करें"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"खोलने के लिए, स्क्रीन पर दो उंगलियों से तीन बार टैप करें"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"इसे खोलने के लिए हाथ के जेस्चर का इस्तेमाल करें"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"सुलभता से जुड़े हाथ के जेस्चर का इस्तेमाल करें"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"इस सुविधा का इस्तेमाल करने के लिए, स्क्रीन पर सबसे नीचे मौजूद सुलभता बटन <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> पर टैप करें.\n\nएक सुविधा से दूसरी सुविधा पर जाने के लिए, सुलभता बटन को दबाकर रखें."</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"इस सुविधा का इस्तेमाल करने के लिए, स्क्रीन पर मौजूद सुलभता बटन पर टैप करें."</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"इस सुविधा का इस्तेमाल करने के लिए, आवाज़ वाले दोनों बटन दबाकर रखें."</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"ज़ूम करने की सुविधा को शुरू और बंद करने के लिए, स्क्रीन पर कहीं भी तीन बार टैप करें."</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"ज़ूम करने की सुविधा को शुरू और बंद करने के लिए, स्क्रीन पर कहीं भी दो उंगलियों से तीन बार टैप करें."</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"इस सुविधा का इस्तेमाल करने के लिए, स्क्रीन पर नीचे से ऊपर की ओर, दो उंगलियों से स्वाइप करें.\n\nएक सुविधा से दूसरी सुविधा पर जाने के लिए, दो उंगलियों से ऊपर की ओर स्वाइप करें और स्क्रीन को थोड़ी देर दबाकर रखें."</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"इस सुविधा का इस्तेमाल करने के लिए, स्क्रीन पर नीचे से ऊपर की ओर, तीन उंगलियों से स्वाइप करें.\n\nएक सुविधा से दूसरी सुविधा पर जाने के लिए, दो उंगलियों से ऊपर की ओर स्वाइप करें और स्क्रीन को थोड़ी देर दबाकर रखें."</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"सुलभता सुविधा का इस्तेमाल करने के लिए, स्क्रीन पर नीचे से ऊपर की ओर, दो उंगलियों से स्वाइप करें.\n\nएक सुविधा से दूसरी सुविधा पर जाने के लिए, दो उंगलियों से ऊपर की ओर स्वाइप करें और स्क्रीन को थोड़ी देर दबाकर रखें."</string>
@@ -2033,12 +2005,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"आवाज़ वाले बटन दबाकर रखें"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"आवाज़ कम-ज़्यादा करने वाले दोनों बटन दबाकर रखें"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"आवाज़ वाले दोनों बटन दबाकर रखें"</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"स्क्रीन पर दो उंगलियों से तीन बार टैप करें"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"स्क्रीन पर दो उंगलियों से तीन बार टैप करें"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"स्क्रीन पर तुरंत दो उंगलियों से {0,number,integer} बार टैप करें"</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"स्क्रीन पर तीन बार टैप करें"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"स्क्रीन पर तीन बार टैप करें"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"स्क्रीन पर जल्दी-जल्दी {0,number,integer} बार टैप करें. इस शॉर्टकट के इस्तेमाल से आपके डिवाइस की रफ़्तार धीमी हो सकती है"</string>
@@ -2336,6 +2305,8 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"अगर आप ऐप की बैकग्राउंड गतिविधि को सीमित करते हैं, तो हो सकता है यह ठीक ढंग से काम न करे"</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"ऐप्लिकेशन पर रोक नहीं लगेगी क्योंकि यह बैटरी ऑप्टिमाइज़ नहीं कर सकता.\n\nबैटरी ऑप्टिमाइज़ेशन चालू करके ही ऐसा हो सकता है."</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"बैटरी खर्च को मैनेज करें"</string>
+ <string name="manager_battery_usage_allow_background_usage_title" msgid="6294649996820358852">"\'ऐप्लिकेशन को बैकग्राउंड में चलने\' की सुविधा को चालू करें"</string>
+ <string name="manager_battery_usage_allow_background_usage_summary" msgid="8021153755201340819">"रीयल-टाइम अपडेट पाने के लिए, \'ऐप्लिकेशन को बैकग्राउंड में चलने\' की सुविधा चालू करें और बैटरी बचाने के लिए इस सुविधा को बंद करें"</string>
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"कोई पाबंदी नहीं"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"ऑप्टिमाइज़ की गई सेटिंग"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"पाबंदी लगी है"</string>
@@ -3846,6 +3817,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"सभी फ़ाइलों को मैनेज करने की अनुमति दें"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"इस ऐप्लिकेशन को अनुमति दें, ताकि वह इस डिवाइस और इससे जुड़े स्टोरेज पर मौजूद फ़ाइलों को पढ़ सके, उनमें बदलाव कर सके, और उन्हें मिटा सके. अनुमति दिए जाने पर, यह ऐप्लिकेशन आपको सूचना दिए बिना फ़ाइलों को ऐक्सेस कर सकता है."</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"सभी फ़ाइलें ऐक्सेस कर सकते हैं"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"फ़ुल स्क्रीन पर दिखने वाली सूचनाएं"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"इस ऐप्लिकेशन से सूचनाओं को फ़ुल स्क्रीन में दिखाने की अनुमति दें"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"इस ऐप्लिकेशन को, डिवाइस लॉक होने पर सूचनाओं को फ़ुल स्क्रीन पर दिखाने की अनुमति दें. ऐसा हो सकता है कि ऐप्लिकेशन इनका इस्तेमाल अलार्म, आने वाले (इनकमिंग) कॉल या अन्य ज़रूरी सूचनाओं को हाइलाइट करने के लिए करें."</string>
@@ -4163,7 +4140,7 @@
<string name="account_for_section_header" msgid="7466759342105251096">"<xliff:g id="USER_NAME">%1$s</xliff:g> के खाते"</string>
<string name="auto_sync_account_title" msgid="1070908045600374254">"ऐप्लिकेशन का डेटा अपने-आप सिंक होने की सुविधा चालू करें"</string>
<string name="auto_sync_account_summary" msgid="7580352130028957346">"ऐप्लिकेशन को डेटा अपने-आप रीफ्रे़श करने दें"</string>
- <string name="account_sync_title" msgid="7036067017433297574">"खाता सिंक"</string>
+ <string name="account_sync_title" msgid="7036067017433297574">"खाता सिंक करें"</string>
<string name="account_sync_summary_some_on" msgid="911460286297968724">"<xliff:g id="ID_2">%2$d</xliff:g> में से <xliff:g id="ID_1">%1$d</xliff:g> आइटम के लिए सिंक करने की सुविधा चालू है"</string>
<string name="account_sync_summary_all_on" msgid="2953682111836599841">"सभी आइटम के लिए सिंक करने की सुविधा चालू है"</string>
<string name="account_sync_summary_all_off" msgid="6378301874540507884">"सभी आइटम के लिए सिंक होने की सुविधा बंद है"</string>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index 7cfdad1..00ea6ff 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -135,8 +135,11 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"Pisaljka"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"Dijeljenje audiozapisa"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"Podijeli audiozapis"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
- <skip />
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"Pozivi i alarmi"</string>
+ <string name="audio_sharing_streams_category_title" msgid="862958129650324581">"Povežite se s audiostreamom LE Audio"</string>
+ <string name="audio_sharing_streams_pref_title" msgid="4636293245167657721">"Audiostreamovi u blizini"</string>
+ <string name="audio_sharing_streams_title" msgid="8269455097512153101">"Audiostreamovi"</string>
+ <string name="audio_sharing_streams_qr_code_summary" msgid="4231875597377863735">"Povežite se s audiostreamom pomoću QR koda"</string>
<string name="date_and_time" msgid="1788358029823431692">"Datum i vrijeme"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"Proxy"</string>
<string name="proxy_clear_text" msgid="6529658759984031149">"Očisti"</string>
@@ -540,24 +543,15 @@
<string name="private_space_title" msgid="7078627930195569767">"Privatni prostor"</string>
<string name="private_space_summary" msgid="8237652417163408001">"Sakrivanje aplikacija u privatnoj mapi"</string>
<string name="private_space_one_lock_title" msgid="7306547190751832568">"Otključavanje pomoću funkcije za zaključavanje zaslona"</string>
- <!-- no translation found for private_space_hide_title (8687034008994037610) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_title (972581369094289386) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_summary (1052569521186403642) -->
- <skip />
- <!-- no translation found for privatespace_access_header (982809349769470185) -->
- <skip />
- <!-- no translation found for privatespace_search_description (983837656432484282) -->
- <skip />
- <!-- no translation found for privatespace_tap_tile_description (4146608898639668340) -->
- <skip />
- <!-- no translation found for privatespace_unlock_description (4132755357482447360) -->
- <skip />
- <!-- no translation found for privatespace_hide_off_summary (7227778747159633671) -->
- <skip />
- <!-- no translation found for privatespace_hide_on_summary (6136704537527640183) -->
- <skip />
+ <string name="private_space_hide_title" msgid="8687034008994037610">"Sakrij kada je zaključano"</string>
+ <string name="privatespace_hide_page_title" msgid="972581369094289386">"Sakrivanje privatnog prostora kad je zaključan"</string>
+ <string name="privatespace_hide_page_summary" msgid="1052569521186403642">"Privatni prostor možete sakriti s popisa aplikacija uređaja"</string>
+ <string name="privatespace_access_header" msgid="982809349769470185">"Pristup privatnom prostoru kad je sakriven"</string>
+ <string name="privatespace_search_description" msgid="983837656432484282">"Na traci za pretraživanje pretražite privatni prostor"</string>
+ <string name="privatespace_tap_tile_description" msgid="4146608898639668340">"Dodirnite pločicu privatnog prostora"</string>
+ <string name="privatespace_unlock_description" msgid="4132755357482447360">"Otključajte privatni prostor"</string>
+ <string name="privatespace_hide_off_summary" msgid="7227778747159633671">"Isključeno"</string>
+ <string name="privatespace_hide_on_summary" msgid="6136704537527640183">"Uključeno"</string>
<string name="private_space_category_system" msgid="1286843321867285700">"Sustav"</string>
<string name="private_space_create_title" msgid="47273568884806726">"Izrada privatnog prostora"</string>
<string name="private_space_delete_title" msgid="3075645119800272800">"Brisanje privatnog prostora"</string>
@@ -570,54 +564,30 @@
<string name="no_device_lock_summary" msgid="7653477413589207824">"Za upotrebu Privatnog prostora postavite zaključavanje."</string>
<string name="no_device_lock_action_label" msgid="2640487005629001288">"Postavi zaključavanje zaslona"</string>
<string name="no_device_lock_cancel" msgid="4412602160321228863">"Odustani"</string>
- <!-- no translation found for privatespace_cancel_label (362351004019511784) -->
- <skip />
- <!-- no translation found for privatespace_setup_button_label (3696372546231047258) -->
- <skip />
- <!-- no translation found for privatespace_setup_title (177623114624330394) -->
- <skip />
- <!-- no translation found for privatespace_hide_apps_summary (4016518749055602268) -->
- <skip />
- <!-- no translation found for privatespace_how_title (8794102046435526065) -->
- <skip />
- <!-- no translation found for privatespace_access_bottom_text (1075244097441349030) -->
- <skip />
- <!-- no translation found for privatespace_protected_lock_text (7320604832432017423) -->
- <skip />
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_cancel_label" msgid="362351004019511784">"Odustani"</string>
+ <string name="privatespace_setup_button_label" msgid="3696372546231047258">"Postavi"</string>
+ <string name="privatespace_setup_title" msgid="177623114624330394">"Postavljanje privatnog prostora"</string>
+ <string name="privatespace_hide_apps_summary" msgid="4016518749055602268">"Sakrivanje privatnih aplikacija na sigurnom mjestu kojem samo vi možete pristupiti"</string>
+ <string name="privatespace_how_title" msgid="8794102046435526065">"Kako to funkcionira"</string>
+ <string name="privatespace_access_bottom_text" msgid="1075244097441349030">"Privatnom prostoru možete pristupiti s dna popisa aplikacija"</string>
+ <string name="privatespace_protected_lock_text" msgid="7320604832432017423">"Aplikacije u privatnom prostoru zaštićene su zaključavanjem"</string>
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"Obavijesti aplikacija u privatnom prostoru sakrivene su kada je on zaključan"</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"Aplikacije privatnog prostora neće se prikazati u Upravitelju dopuštenja, na nadzornoj ploči za privatnost i u drugim postavkama kada je privatni prostor zaključan"</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"U tijeku je postavljanje privatnog prostora…"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"Privatni prostor zaštićen je zaključavanjem"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"Podaci o upotrebi za aplikacije privatnog prostora sakriveni su kad je privatni prostor zaključan"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"Pristup privatnom prostoru s popisa aplikacija"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"Postavljanje privatnog prostora nije uspjelo"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"Pokušajte sada ili se vratite kasnije"</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"Pokušajte ponovno"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"Koristiti zaključavanje zaslona za otključavanje?"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"Privatni prostor možete otključati na isti način kao što otključavate uređaj. Ili odaberite drugi način zaključavanja"</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"Upotreba zaključavanja zaslona"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"Odaberite novi način otključavanja"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"Sve je spremno!"</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"Da biste pristupili privatnom prostoru, prijeđite prstom s dna zaslona prema gore, a zatim se pomaknite prema dolje"</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"Gotovo"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"Pomaknite se prema dolje za pristup privatnom prostoru"</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"Maksimalni broj otisaka prstiju koji možete dodati: <xliff:g id="COUNT">%d</xliff:g>"</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"Dodali ste maksimalan broj otisaka prstiju"</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"Nije moguće dodati više otisaka prstiju"</string>
@@ -1135,8 +1105,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"Nastavak upotrebe aplikacija pri sklapanju"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"Glatki prikaz"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"Automatski povećava učestalost osvježavanja do <xliff:g id="ID_1">%1$d</xliff:g> Hz za određeni sadržaj. Povećava potrošnju baterije."</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"Prisilna maksimalna učestalost osvježavanja"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"Najviša učestalost osvježavanja za poboljšano reagiranje na dodir i kvalitetu animacije. Povećava potrošnju baterije."</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"Pozornost na zaslonu"</string>
@@ -1372,6 +1341,7 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"Zajedničke postavke"</string>
<string name="apn_settings" msgid="4295467389400441299">"APN-ovi"</string>
<string name="apn_edit" msgid="2003683641840248741">"Uređivanje pristupne točke"</string>
+ <string name="apn_add" msgid="9069613192201630934">"Dodajte pristupnu točku"</string>
<string name="apn_not_set" msgid="8246646433109750293">"Nije postavljeno"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"Nije postavljeno"</string>
<string name="apn_name" msgid="6677695784108157953">"Naziv"</string>
@@ -2006,12 +1976,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"Otvaranje pomoću gumba za pristupačnost"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"Zadržite tipke za glasnoću za otvaranje"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"Triput dodirnite zaslon za otvaranje"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"Triput dodirnite zaslon dvama prstima za otvaranje"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"Otvaranje pokretom"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"Upotreba pokreta za pristupačnost"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"Da biste koristili tu značajku, dodirnite gumb za Pristupačnost <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> pri dnu zaslona.\n\nDa biste prešli na neku drugu značajku, dodirnite i zadržite gumb za Pristupačnost."</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"Da biste koristili tu značajku, dodirnite gumb za pristupačnost na zaslonu."</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"Da biste koristili tu značajku, pritisnite i zadržite obje tipke za glasnoću."</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"Da biste pokrenuli ili zaustavili povećavanje, triput dodirnite bilo gdje na zaslonu."</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"Da biste pokrenuli i zaustavili povećavanje, triput dodirnite dvama prstima bilo gdje na zaslonu."</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"Da biste koristili tu značajku, prijeđite s dva prsta prema gore od dna zaslona.\n\nDa biste prešli na neku drugu značajku, prijeđite s dva prsta prema gore i zadržite."</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"Da biste koristili tu značajku, prijeđite s tri prsta prema gore od dna zaslona.\n\nDa biste prešli na neku drugu značajku, prijeđite s tri prsta prema gore i zadržite."</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"Da biste koristili značajku pristupačnosti, prijeđite s dva prsta prema gore od dna zaslona.\n\nDa biste prešli na neku drugu značajku, prijeđite s dva prsta prema gore i zadržite."</string>
@@ -2033,12 +2005,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"Držite tipke za glasnoću"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"držite tipke za glasnoću"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"Pritisnite i zadržite obje tipke za glasnoću"</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"Triput dodirnite zaslon dvama prstima"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"triput dodirnite zaslon dvama prstima"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"Brzo dodirnite zaslon dvama prstima ovoliko puta: {0,number,integer}"</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"Triput dodirnite zaslon"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"triput dodirnite zaslon"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"Brzo dodirnite zaslon {0,number,integer} puta. Taj prečac može usporiti uređaj"</string>
@@ -2336,6 +2305,8 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"Ako ograničite pozadinsku aktivnost za aplikaciju, možda će se ponašati nepredviđeno"</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"Aplikacija nije postavljena za optimizaciju baterije, pa je ne možete ograničiti.\n\nZa ograničenje uključite optimizaciju."</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"Upravljanje potrošnjom baterije"</string>
+ <string name="manager_battery_usage_allow_background_usage_title" msgid="6294649996820358852">"Omogućivanje upotrebe u pozadini"</string>
+ <string name="manager_battery_usage_allow_background_usage_summary" msgid="8021153755201340819">"Omogućite za ažuriranja u stvarnom vremenu, onemogućite za uštedu baterije"</string>
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"Neograničeno"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"Optimizirano"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"Ograničeno"</string>
@@ -3846,6 +3817,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"Dopusti pristup za upravljanje svim datot."</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"Dopustite toj aplikaciji čitanje, izmjenu i brisanje svih datoteka na ovom uređaju ili drugim povezanim uređajima za pohranu. Ako date to dopuštenje, aplikacija može pristupati datotekama bez vašeg znanja."</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"Može pristupiti svim datotekama"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"Obavijesti na cijelom zaslonu"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"Omogući obavijesti te aplikacije na cijelom zaslonu"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"Omogućuje aplikaciji da prikazuje obavijesti koje zauzimaju cijeli zaslon kad je uređaj zaključan. Aplikacije na taj način mogu istaknuti alarme, dolazne pozive ili druge hitne obavijesti."</string>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index c77db47..8b1ad17 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -135,8 +135,11 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"Érintőceruza"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"Hang megosztása"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"Hang megosztása"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
- <skip />
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"Hívások és riasztások"</string>
+ <string name="audio_sharing_streams_category_title" msgid="862958129650324581">"Csatlakozás alacsony energiaszintű hangátvitelt használó streamhez"</string>
+ <string name="audio_sharing_streams_pref_title" msgid="4636293245167657721">"Közeli audiostreamek"</string>
+ <string name="audio_sharing_streams_title" msgid="8269455097512153101">"Audiostreamek"</string>
+ <string name="audio_sharing_streams_qr_code_summary" msgid="4231875597377863735">"Csatlakozhat audiostreamhez QR-kóddal"</string>
<string name="date_and_time" msgid="1788358029823431692">"Dátum és idő"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"Proxy"</string>
<string name="proxy_clear_text" msgid="6529658759984031149">"Törlés"</string>
@@ -568,40 +571,23 @@
<string name="privatespace_how_title" msgid="8794102046435526065">"Hogyan működik?"</string>
<string name="privatespace_access_bottom_text" msgid="1075244097441349030">"A privát terület az alkalmazások listájának alján érhető el."</string>
<string name="privatespace_protected_lock_text" msgid="7320604832432017423">"A privát területen lévő alkalmazásokat zárolás védi"</string>
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"A privát területen lévő alkalmazásoktól érkező értesítések rejtve maradnak, amikor le van zárva a privát terület"</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"A privát terület alkalmazásai nem jelennek meg az engedélykezelőben, az adatvédelmi irányítópulton és más beállításokban, amikor a privát terület le van zárva"</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"A privát terület beállítása…"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"A privát területet zárolás védi"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"A privát terület alkalmazásaihoz tartozó használati adatok rejtve vannak, amikor a privát terület le van zárva"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"A privát terület megnyitása az alkalmazáslistából"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"Nem sikerült a privát terület beállítása"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"Próbálja újra most, vagy térjen vissza később."</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"Újra"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"A képernyőzárat szeretné használni a feloldáshoz?"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"A privát területet feloldhatja ugyanúgy, ahogyan az eszközét is, vagy kiválaszthat másik zárolási lehetőséget."</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"Képernyőzár használata"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"Új zárolás kiválasztása"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"Kész is!"</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"A privát terület megnyitásához csúsztasson felfelé a képernyő aljáról, majd görgessen le."</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"Kész"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"Görgessen le a privát terület megnyitásához"</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"Legfeljebb <xliff:g id="COUNT">%d</xliff:g> ujjlenyomatot adhat hozzá"</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"Elérte a hozzáadható ujjlenyomatok maximális számát"</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"Nem lehet több ujjlenyomatot hozzáadni"</string>
@@ -1119,8 +1105,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"Appok megtartása összehajtáskor"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"Smooth Display"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"Néhány tartalomnál automatikusan megemeli a frissítési gyakoriságot <xliff:g id="ID_1">%1$d</xliff:g> Hz-re. Növeli az akkumulátorhasználatot."</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"Legmagasabb frissítési gyakoriság kényszerítése"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"Legnagyobb frissítési gyakoriság a kifinomultabb érintési érzékenység és a jobb minőségű animációk érdekében. Növeli az akkumulátorhasználatot."</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"Képernyőfigyelő"</string>
@@ -1356,6 +1341,7 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"Közösségi beállítások"</string>
<string name="apn_settings" msgid="4295467389400441299">"APN-ek"</string>
<string name="apn_edit" msgid="2003683641840248741">"Hozzáférési pont szerkesztése"</string>
+ <string name="apn_add" msgid="9069613192201630934">"Hozzáférési pont hozzáadása"</string>
<string name="apn_not_set" msgid="8246646433109750293">"Nincs megadva"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"Nincs beállítva"</string>
<string name="apn_name" msgid="6677695784108157953">"Név"</string>
@@ -1990,12 +1976,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"Megnyitás a kisegítő gombbal"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"A megnyitáshoz tartsa lenyomva a hangerőgombokat"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"Koppintson háromszor a képernyőn a megnyitáshoz"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"Koppintson két ujjal a képernyőn háromszor a megnyitáshoz"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"Megnyitás kézmozdulattal"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"Kisegítő kézmozdulat használata"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"A funkció használatához koppintson a képernyő alján megtalálható Kisegítő lehetőségek <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> gombra.\n\nA funkciók közti váltáshoz tartsa lenyomva ujját a Kisegítő lehetőségek gombon."</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"A funkció használatához koppintson a képernyőn a Kisegítő lehetőségek gombra."</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"A funkció használatához tartsa lenyomva mindkét hangerőszabályzó gombot."</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"A nagyítás megkezdéséhez és leállításához koppintson háromszor bárhol a képernyőn."</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"A nagyítás megkezdéséhez és leállításához koppintson két ujjal háromszor bárhol a képernyőn."</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"A funkció használatához csúsztasson két ujjával felfelé a képernyő aljáról.\n\nA funkciók közötti váltáshoz csúsztasson felfelé két ujjával, és ne emelje fel őket a képernyőről."</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"A funkció használatához csúsztasson három ujjával felfelé a képernyő aljáról.\n\nA funkciók közötti váltáshoz csúsztasson felfelé három ujjával, és ne emelje fel őket a képernyőről."</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"A Kisegítő lehetőségek valamelyik funkciójának használatához csúsztasson két ujjával felfelé a képernyő aljáról.\n\nA funkciók közötti váltáshoz csúsztasson felfelé két ujjával, és ne emelje fel őket a képernyőről."</string>
@@ -2017,12 +2005,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"Hangerőgombok nyomva tartása"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"hangerőgombok nyomva tartása"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"Tartsa lenyomva mindkét hangerőgombot"</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"Három koppintás a képernyőn két ujjal"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"három koppintás a képernyőn két ujjal"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"Gyors koppintás a képernyőre két ujjal {0,number,integer} alkalommal"</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"Háromszori koppintás a képernyőre"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"háromszori koppintás a képernyőre"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"Koppintson a képernyőre gyorsan, {0,number,integer} alkalommal. Ez a gyorsparancs lelassíthatja az eszközét."</string>
@@ -2320,6 +2305,8 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"Ha korlátozza az alkalmazások háttértevékenységét, lehetséges, hogy hibásan fognak működni"</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"Az alkalmazás nem korlátozható, mert nincs beállítva az akkumulátor optimalizálására.\n\nA korlátozáshoz kapcsolja be az akkumulátoroptimalizálást."</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"Akkumulátorhasználat kezelése"</string>
+ <string name="manager_battery_usage_allow_background_usage_title" msgid="6294649996820358852">"Háttérbeli futtatás engedélyezése"</string>
+ <string name="manager_battery_usage_allow_background_usage_summary" msgid="8021153755201340819">"Engedélyezze a valós idejű frissítésekhez, vagy tiltsa le az akkumulátor kíméléséhez"</string>
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"Korlátlan"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"Optimalizált"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"Korlátozott"</string>
@@ -3830,6 +3817,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"Hozzáférés megadása minden fájl kezeléséhez"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"Engedélyezi ennek az alkalmazásnak az eszközön és a csatlakoztatott tárolóköteteken található összes fájl olvasását, módosítását és törlését. Ha engedélyezve van, az alkalmazás anélkül férhet hozzá a fájlokhoz, hogy Önt külön tájékoztatná róla."</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"Minden fájlhoz hozzáférhet"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"Teljes képernyős értesítések"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"Teljes képernyős értesítések engedélyezése ettől az alkalmazástól"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"Teljes képernyős értesítések megjelenítésének engedélyezése az alkalmazásnak, amikor az eszköz zárolva van. Az alkalmazások ébresztések, bejövő hívások vagy más sürgős értesítések kiemelésére használhatják ezt a funkciót."</string>
diff --git a/res/values-hy/strings.xml b/res/values-hy/strings.xml
index 61445c0..a340a88 100644
--- a/res/values-hy/strings.xml
+++ b/res/values-hy/strings.xml
@@ -135,7 +135,14 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"Ստիլուս"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"Աուդիոյի փոխանցում"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"Փոխանցել աուդիո"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"Զանգեր և զարթուցիչներ"</string>
+ <!-- no translation found for audio_sharing_streams_category_title (862958129650324581) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_pref_title (4636293245167657721) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_title (8269455097512153101) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_qr_code_summary (4231875597377863735) -->
<skip />
<string name="date_and_time" msgid="1788358029823431692">"Ամսաթիվ և ժամ"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"Պրոքսի"</string>
@@ -540,24 +547,15 @@
<string name="private_space_title" msgid="7078627930195569767">"Անձնական տարածք"</string>
<string name="private_space_summary" msgid="8237652417163408001">"Անձնական պանակ, որտեղ կարող եք հավելվածներ թաքցնել"</string>
<string name="private_space_one_lock_title" msgid="7306547190751832568">"Բացել՝ օգտագործելով էկրանի ապակողպման եղանակը"</string>
- <!-- no translation found for private_space_hide_title (8687034008994037610) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_title (972581369094289386) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_summary (1052569521186403642) -->
- <skip />
- <!-- no translation found for privatespace_access_header (982809349769470185) -->
- <skip />
- <!-- no translation found for privatespace_search_description (983837656432484282) -->
- <skip />
- <!-- no translation found for privatespace_tap_tile_description (4146608898639668340) -->
- <skip />
- <!-- no translation found for privatespace_unlock_description (4132755357482447360) -->
- <skip />
- <!-- no translation found for privatespace_hide_off_summary (7227778747159633671) -->
- <skip />
- <!-- no translation found for privatespace_hide_on_summary (6136704537527640183) -->
- <skip />
+ <string name="private_space_hide_title" msgid="8687034008994037610">"Թաքցնել, երբ կողպված է"</string>
+ <string name="privatespace_hide_page_title" msgid="972581369094289386">"Թաքցնել Անձնական տարածքը, երբ այն կողպված է"</string>
+ <string name="privatespace_hide_page_summary" msgid="1052569521186403642">"Որպեսզի այլ մարդիկ չիմանան ձեր Անձնական տարածքի մասին, կարող եք այն թաքցնել հավելվածների ցանկից"</string>
+ <string name="privatespace_access_header" msgid="982809349769470185">"Անձնական տարածքի հասանելիություն, երբ այն թաքցված է"</string>
+ <string name="privatespace_search_description" msgid="983837656432484282">"Որոնման տողում մուտքագրեք «Անձնական տարածք» հարցումը"</string>
+ <string name="privatespace_tap_tile_description" msgid="4146608898639668340">"Հպեք «Անձնական տարածք» սալիկին"</string>
+ <string name="privatespace_unlock_description" msgid="4132755357482447360">"Ապակողպել Անձնական տարածքը"</string>
+ <string name="privatespace_hide_off_summary" msgid="7227778747159633671">"Անջատված է"</string>
+ <string name="privatespace_hide_on_summary" msgid="6136704537527640183">"Միացված է"</string>
<string name="private_space_category_system" msgid="1286843321867285700">"Համակարգ"</string>
<string name="private_space_create_title" msgid="47273568884806726">"Ստեղծել անձնական տարածք"</string>
<string name="private_space_delete_title" msgid="3075645119800272800">"Ջնջել անձնական տարածքը"</string>
@@ -570,54 +568,30 @@
<string name="no_device_lock_summary" msgid="7653477413589207824">"Սահմանեք էկրանի կողպում և օգտագործեք Անձնական տարածքը։"</string>
<string name="no_device_lock_action_label" msgid="2640487005629001288">"Կարգավորել էկրանի կողպումը"</string>
<string name="no_device_lock_cancel" msgid="4412602160321228863">"Չեղարկել"</string>
- <!-- no translation found for privatespace_cancel_label (362351004019511784) -->
- <skip />
- <!-- no translation found for privatespace_setup_button_label (3696372546231047258) -->
- <skip />
- <!-- no translation found for privatespace_setup_title (177623114624330394) -->
- <skip />
- <!-- no translation found for privatespace_hide_apps_summary (4016518749055602268) -->
- <skip />
- <!-- no translation found for privatespace_how_title (8794102046435526065) -->
- <skip />
- <!-- no translation found for privatespace_access_bottom_text (1075244097441349030) -->
- <skip />
- <!-- no translation found for privatespace_protected_lock_text (7320604832432017423) -->
- <skip />
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_cancel_label" msgid="362351004019511784">"Չեղարկել"</string>
+ <string name="privatespace_setup_button_label" msgid="3696372546231047258">"Կարգավորել"</string>
+ <string name="privatespace_setup_title" msgid="177623114624330394">"Անձնական տարածքի կարգավորում"</string>
+ <string name="privatespace_hide_apps_summary" msgid="4016518749055602268">"Թաքցրեք անձնական հավելվածներն ապահով տեղում, որտեղ դրանք հասանելի են միայն ձեզ"</string>
+ <string name="privatespace_how_title" msgid="8794102046435526065">"Ինչպես է դա աշխատում"</string>
+ <string name="privatespace_access_bottom_text" msgid="1075244097441349030">"Անձնական տարածք կարող եք անցնել հավելվածների ցանկի ներքևից"</string>
+ <string name="privatespace_protected_lock_text" msgid="7320604832432017423">"Անձնական տարածքում հավելվածները պաշտպանված են կողպեքի միջոցով"</string>
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"Անձնական տարածքում հավելվածներից ծանուցումները թաքցված են, երբ այն կողպված է"</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"Անձնական տարածքի հավելվածները չեն ցուցադրվի թույլտվությունների կառավարչում, թույլտվությունների կառավարման վահանակում և այլ կարգավորումներում, երբ Անձնական տարածքը կողպված է"</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"Անձնական տարածքի ստեղծում…"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"Անձնական տարածքը պաշտպանված է կողպեքի միջոցով"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"Երբ անձնական տարածքը կողպված է, հավելվածների օգտագործման մասին տվյալները թաքցված են այնտեղ"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"Անցեք անձնական տարածք հավելվածների ցանկից"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"Չհաջողվեց ստեղծել անձնական տարածք"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"Փորձեք նորից կամ վերադարձեք ավելի ուշ"</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"Նորից փորձել"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"Օգտագործե՞լ էկրանի կողպումը"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"Դուք կարող եք օգտագործել ապակողպման նույն եղանակը, որն օգտագործվում է էկրանի համար, կամ ընտրել մեկ ուրիշը"</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"Օգտագործել էկրանի կողպումը"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"Ընտրել այլ եղանակ"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"Պատրա՛ստ է"</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"Անձնական տարածք անցնելու համար մատը սահեցրեք հիմնական էկրանի ներքևից վերև և ոլորեք էջը ներքև"</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"Պատրաստ է"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"Անձնական տարածք անցնելու համար ոլորեք ներքև"</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"Կարող եք ավելացնել առավելագույնը <xliff:g id="COUNT">%d</xliff:g> մատնահետք"</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"Դուք ավելացրել եք մատնահետքերի առավելագույն թույլատրելի քանակը"</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"Հնարավոր չէ ավելացնել այլ մատնահետքեր"</string>
@@ -1135,8 +1109,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"Շարունակել օգտագործել հավելվածները ծալված սարքում"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"Սահուն պատկեր"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"Որոշակի բովանդակության համար թարմացման հաճախականությունն ավտոմատ բարձրանում է մինչև <xliff:g id="ID_1">%1$d</xliff:g> Հց։ Մարտկոցի լիցքն ավելի արագ է սպառվում։"</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"Պարտադիր թարմացման առավելագույն հաճախականությունը"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"Էկրանի թարմացման բարձր հաճախականությունը լավացնում է հապտիկ արձագանքը և շարժանկարների որակը։ Այն նաև երկարացնում է մարտկոցի օգտագործման ժամանակը։"</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"Ադապտիվ քնի ռեժիմ"</string>
@@ -1372,6 +1345,8 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"Ընդհանուր կարգավորումներ"</string>
<string name="apn_settings" msgid="4295467389400441299">"APN-ներ"</string>
<string name="apn_edit" msgid="2003683641840248741">"Խմբագրել մուտքի կետը"</string>
+ <!-- no translation found for apn_add (9069613192201630934) -->
+ <skip />
<string name="apn_not_set" msgid="8246646433109750293">"Կարգավորված չէ"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"Նշված չէ"</string>
<string name="apn_name" msgid="6677695784108157953">"Անուն"</string>
@@ -2006,12 +1981,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"Բացեք «Հատուկ գործառույթներ» կոճակի միջոցով"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"Բացելու համար սեղմած պահեք ձայնի կոճակները"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"Բացելու համար երեք անգամ հպեք էկրանին"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"Բացելու համար երկու մատով եռակի հպեք էկրանին"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"Բացեք ձեռքի շարժումով"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"Հատուկ գործառույթների ժեստի օգտագործում"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"Այս գործառույթն օգտագործելու համար էկրանի ներքևում հպեք «Հատուկ գործառույթներ» <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> կոճակին։\n\nՄի գործառույթից մյուսին անցնելու համար հպեք «Հատուկ գործառույթներ» կոճակին և պահեք։"</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"Այս գործառույթն օգտագործելու համար հպեք ձեր էկրանի «Հատուկ գործառույթներ» կոճակին։"</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"Այս գործառույթն օգտագործելու համար սեղմեք և պահեք ձայնի ուժգնության երկու կոճակները։"</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"Խոշորացումը միացնելու և անջատելու համար երեք անգամ հպեք էկրանի ցանկացած հատվածին։"</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"Խոշորացումը միացնելու և անջատելու համար երկու մատով երեք անգամ հպեք էկրանի ցանկացած հատվածին։"</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"Այս գործառույթն օգտագործելու համար երկու մատը սահեցրեք էկրանի ներքևից վերև։\n\nՄի գործառույթից մյուսին անցնելու համար երկու մատը սահեցրեք էկրանի ներքևից վերև և պահեք։"</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"Այս գործառույթն օգտագործելու համար երեք մատը սահեցրեք էկրանի ներքևից վերև։\n\nՄի գործառույթից մյուսին անցնելու համար երեք մատը սահեցրեք էկրանի ներքևից վերև և պահեք։"</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"Որևէ հատուկ գործառույթ օգտագործելու համար երկու մատը սահեցրեք էկրանի ներքևից վերև։\n\nՄի գործառույթից մյուսին անցնելու համար երկու մատը սահեցրեք էկրանի ներքևից վերև և պահեք։"</string>
@@ -2033,12 +2010,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"Սեղմած պահել ձայնի ուժգնության ստեղները"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"ձայնի կարգավորման կոճակների սեղմում"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"Սեղմեք և պահեք ձայնի ուժգնության երկու կոճակները"</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"Երկու մատով եռակի հպում էկրանին"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"երկու մատով եռակի հպում էկրանին"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"Երկու մատով {0,number,integer} անգամ արագ հպեք էկրանին"</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"Եռակի հպեք էկրանին"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"եռակի հպում էկրանին"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"Արագ հպեք էկրանին {0,number,integer} անգամ։ Այս դյուրանցումը կարող է դանդաղեցնել սարքի աշխատանքը։"</string>
@@ -2336,6 +2310,10 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"Հավելվածի ֆոնային գործողությունների սահմանափակումը կարող է ազդել վերջինիս աշխատանքի վրա"</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"Մարտկոցի օպտիմալացումն այս հավելվածի համար կարգավորված չէ։\n\nՄիացրեք այն՝ հավելվածը սահմանափակելու համար։"</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"Մարտկոցի օգտագործման կառավարում"</string>
+ <!-- no translation found for manager_battery_usage_allow_background_usage_title (6294649996820358852) -->
+ <skip />
+ <!-- no translation found for manager_battery_usage_allow_background_usage_summary (8021153755201340819) -->
+ <skip />
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"Անսահմանափակ"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"Օպտիմալացված"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"Սահմանափակ"</string>
@@ -3846,6 +3824,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"Բոլոր ֆայլերը կառավարելու թույլտվություն տալ"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"Դուք կարող եք թույլատրել այս հավելվածին կարդալ, փոփոխել և ջնջել այս սարքի կամ միացված կրիչների բոլոր ֆայլերը։ Եթե թույլատրեք, հավելվածը կկարողանա օգտվել ֆայյլերից առանց ձեր իմացության։"</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"Հասանելիություն ունեն բոլոր ֆայլերին"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"Ծանուցումներ լիաէկրան ռեժիմում"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"Թույլատրել այս հավելվածին ցույց տալ ծանուցումներ լիաէկրան ռեժիմում"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"Թույլատրել այս հավելվածին ցույց տալ ծանուցումներ լիաէկրան ռեժիմում, երբ սարքը կողպված է։ Հավելվածները կարող են օգտագործել այս գործառույթը՝ զարթուցիչներ, մուտքային զանգեր և այլ շտապ ծանուցումներ ցուցադրելու համար։"</string>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index d38573d..3bd4c44 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -135,7 +135,14 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"Stilus"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"Berbagi audio"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"Bagikan audio"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"Panggilan dan alarm"</string>
+ <!-- no translation found for audio_sharing_streams_category_title (862958129650324581) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_pref_title (4636293245167657721) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_title (8269455097512153101) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_qr_code_summary (4231875597377863735) -->
<skip />
<string name="date_and_time" msgid="1788358029823431692">"Tanggal & waktu"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"Proxy"</string>
@@ -540,24 +547,15 @@
<string name="private_space_title" msgid="7078627930195569767">"Ruang Pribadi"</string>
<string name="private_space_summary" msgid="8237652417163408001">"Sembunyikan aplikasi di folder pribadi"</string>
<string name="private_space_one_lock_title" msgid="7306547190751832568">"Buka menggunakan kunci layar"</string>
- <!-- no translation found for private_space_hide_title (8687034008994037610) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_title (972581369094289386) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_summary (1052569521186403642) -->
- <skip />
- <!-- no translation found for privatespace_access_header (982809349769470185) -->
- <skip />
- <!-- no translation found for privatespace_search_description (983837656432484282) -->
- <skip />
- <!-- no translation found for privatespace_tap_tile_description (4146608898639668340) -->
- <skip />
- <!-- no translation found for privatespace_unlock_description (4132755357482447360) -->
- <skip />
- <!-- no translation found for privatespace_hide_off_summary (7227778747159633671) -->
- <skip />
- <!-- no translation found for privatespace_hide_on_summary (6136704537527640183) -->
- <skip />
+ <string name="private_space_hide_title" msgid="8687034008994037610">"Sembunyikan saat terkunci"</string>
+ <string name="privatespace_hide_page_title" msgid="972581369094289386">"Sembunyikan Ruang Pribadi jika dikunci"</string>
+ <string name="privatespace_hide_page_summary" msgid="1052569521186403642">"Agar orang lain tidak dapat melihat Ruang Pribadi di perangkat, Anda dapat menyembunyikannya dari daftar aplikasi"</string>
+ <string name="privatespace_access_header" msgid="982809349769470185">"Akses Ruang Pribadi jika disembunyikan"</string>
+ <string name="privatespace_search_description" msgid="983837656432484282">"Telusuri \'Ruang Pribadi\' di kotak penelusuran"</string>
+ <string name="privatespace_tap_tile_description" msgid="4146608898639668340">"Ketuk kartu Ruang Pribadi"</string>
+ <string name="privatespace_unlock_description" msgid="4132755357482447360">"Buka kunci Ruang Pribadi"</string>
+ <string name="privatespace_hide_off_summary" msgid="7227778747159633671">"Nonaktif"</string>
+ <string name="privatespace_hide_on_summary" msgid="6136704537527640183">"Aktif"</string>
<string name="private_space_category_system" msgid="1286843321867285700">"Sistem"</string>
<string name="private_space_create_title" msgid="47273568884806726">"Buat Ruang Pribadi"</string>
<string name="private_space_delete_title" msgid="3075645119800272800">"Hapus Ruang Pribadi"</string>
@@ -570,54 +568,30 @@
<string name="no_device_lock_summary" msgid="7653477413589207824">"Untuk menggunakan Ruang Pribadi, setel kunci layar di perangkat ini."</string>
<string name="no_device_lock_action_label" msgid="2640487005629001288">"Setel kunci layar"</string>
<string name="no_device_lock_cancel" msgid="4412602160321228863">"Batal"</string>
- <!-- no translation found for privatespace_cancel_label (362351004019511784) -->
- <skip />
- <!-- no translation found for privatespace_setup_button_label (3696372546231047258) -->
- <skip />
- <!-- no translation found for privatespace_setup_title (177623114624330394) -->
- <skip />
- <!-- no translation found for privatespace_hide_apps_summary (4016518749055602268) -->
- <skip />
- <!-- no translation found for privatespace_how_title (8794102046435526065) -->
- <skip />
- <!-- no translation found for privatespace_access_bottom_text (1075244097441349030) -->
- <skip />
- <!-- no translation found for privatespace_protected_lock_text (7320604832432017423) -->
- <skip />
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_cancel_label" msgid="362351004019511784">"Batal"</string>
+ <string name="privatespace_setup_button_label" msgid="3696372546231047258">"Siapkan"</string>
+ <string name="privatespace_setup_title" msgid="177623114624330394">"Siapkan Ruang Pribadi"</string>
+ <string name="privatespace_hide_apps_summary" msgid="4016518749055602268">"Sembunyikan aplikasi pribadi di ruang aman yang hanya dapat diakses oleh Anda"</string>
+ <string name="privatespace_how_title" msgid="8794102046435526065">"Cara kerjanya"</string>
+ <string name="privatespace_access_bottom_text" msgid="1075244097441349030">"Anda dapat mengakses Ruang Pribadi dari bagian bawah daftar aplikasi"</string>
+ <string name="privatespace_protected_lock_text" msgid="7320604832432017423">"Aplikasi di Ruang Pribadi dilindungi dengan kunci"</string>
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"Notifikasi dari aplikasi di Ruang Pribadi disembunyikan saat Ruang Pribadi dikunci"</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"Aplikasi Ruang Pribadi tidak akan muncul di pengelola izin, dasbor privasi, dan setelan lainnya jika Ruang Pribadi dikunci"</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"Menyiapkan Ruang Pribadi…"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"Ruang Pribadi dilindungi oleh kunci"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"Info penggunaan aplikasi Ruang Pribadi disembunyikan saat Ruang Pribadi dikunci"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"Akses Ruang Pribadi dari daftar aplikasi"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"Tidak dapat menyiapkan Ruang Pribadi"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"Coba lagi sekarang, atau kembali lagi nanti"</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"Coba Lagi"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"Gunakan kunci layar untuk membuka kunci?"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"Anda dapat membuka kunci Ruang Pribadi dengan cara yang sama seperti membuka kunci perangkat, atau memilih kunci lain"</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"Gunakan layar kunci"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"Pilih kunci baru"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"Semua siap."</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"Untuk mengakses Ruang Pribadi, geser ke atas dari bagian bawah layar utama, lalu scroll ke bawah"</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"Selesai"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"Scroll ke bawah untuk mengakses Ruang Pribadi"</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"Anda dapat menambahkan maksimal <xliff:g id="COUNT">%d</xliff:g> sidik jari"</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"Anda telah menambahkan jumlah maksimum sidik jari"</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"Tidak dapat menambahkan sidik jari lagi"</string>
@@ -1135,8 +1109,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"Terus pakai aplikasi saat dilipat"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"Smooth Display"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"Otomatis meningkatkan kecepatan refresh hingga <xliff:g id="ID_1">%1$d</xliff:g> Hz untuk beberapa konten. Meningkatkan penggunaan baterai."</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"Paksa kecepatan refresh tertinggi"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"Kecepatan refresh tertinggi untuk memperbaiki respons sentuhan & kualitas animasi. Meningkatkan penggunaan baterai."</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"Fokus ke layar"</string>
@@ -1372,6 +1345,8 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"Setelan umum"</string>
<string name="apn_settings" msgid="4295467389400441299">"APN"</string>
<string name="apn_edit" msgid="2003683641840248741">"Edit titik akses"</string>
+ <!-- no translation found for apn_add (9069613192201630934) -->
+ <skip />
<string name="apn_not_set" msgid="8246646433109750293">"Tidak disetel"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"Belum disetel"</string>
<string name="apn_name" msgid="6677695784108157953">"Nama"</string>
@@ -2006,12 +1981,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"Gunakan tombol aksesibilitas untuk membuka"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"Tahan tombol volume untuk membuka"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"Ketuk tiga kali pada layar untuk membuka"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"Ketuk layar tiga kali dengan dua jari untuk membuka"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"Menggunakan gestur untuk membuka"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"Gunakan gestur aksesibilitas"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"Untuk menggunakan fitur ini, ketuk tombol aksesibilitas <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> di bagian bawah layar.\n\nUntuk beralih antarfitur, sentuh lama tombol aksesibilitas."</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"Untuk menggunakan fitur ini, ketuk tombol aksesibilitas di layar."</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"Untuk menggunakan fitur ini, tekan dan tahan kedua tombol volume."</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"Untuk memulai dan menghentikan pembesaran, ketuk tiga kali di mana saja pada layar Anda."</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"Untuk memulai dan menghentikan pembesaran, ketuk tiga kali dengan dua jari di mana saja pada layar."</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"Untuk menggunakan fitur ini, geser ke atas dari bawah layar dengan 2 jari.\n\nUntuk beralih antarfitur, geser ke atas dengan 2 jari dan tahan."</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"Untuk menggunakan fitur ini, geser ke atas dari bawah layar dengan 3 jari.\n\nUntuk beralih antarfitur, geser ke atas dengan 3 jari dan tahan."</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"Untuk menggunakan fitur aksesibilitas, geser ke atas dari bawah layar dengan 2 jari.\n\nUntuk beralih antarfitur, geser ke atas dengan 2 jari dan tahan."</string>
@@ -2033,12 +2010,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"Tahan tombol volume"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"tahan tombol volume"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"Tekan dan tahan kedua tombol volume"</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"Ketuk layar tiga kali dengan dua jari"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"ketuk layar tiga kali dengan dua jari"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"Ketuk cepat layar sebanyak {0,number,integer} kali dengan dua jari"</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"Ketuk layar tiga kali"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"ketuk layar tiga kali"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"Ketuk layar dengan cepat {0,number,integer} kali. Pintasan ini mungkin memperlambat perangkat Anda"</string>
@@ -2336,6 +2310,10 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"Jika aktivitas background aplikasi dibatasi, mungkin fungsinya terganggu."</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"Anda tidak dapat membatasi aplikasi karena tidak disetel untuk mengoptimalkan baterai.\n\nAktifkan pengoptimalan baterai untuk membatasi aplikasi."</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"Kelola penggunaan baterai"</string>
+ <!-- no translation found for manager_battery_usage_allow_background_usage_title (6294649996820358852) -->
+ <skip />
+ <!-- no translation found for manager_battery_usage_allow_background_usage_summary (8021153755201340819) -->
+ <skip />
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"Tidak dibatasi"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"Dioptimalkan"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"Dibatasi"</string>
@@ -3846,6 +3824,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"Izinkan akses untuk mengelola semua file"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"Mengizinkan aplikasi ini untuk membaca, mengubah, dan menghapus semua file di perangkat ini atau media penyimpanan yang terpasang. Jika diberikan, aplikasi dapat mengakses file tanpa sepengetahuan Anda."</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"Dapat mengakses semua file"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"Notifikasi layar penuh"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"Izinkan notifikasi layar penuh dari aplikasi ini"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"Izinkan aplikasi ini menampilkan notifikasi dalam layar penuh ketika perangkat terkunci. Aplikasi mungkin menggunakan tindakan ini untuk memperjelas alarm, panggilan masuk, atau notifikasi penting lainnya."</string>
diff --git a/res/values-is/strings.xml b/res/values-is/strings.xml
index 51a9479..71547db 100644
--- a/res/values-is/strings.xml
+++ b/res/values-is/strings.xml
@@ -135,7 +135,14 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"Penni"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"Hljóði deilt"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"Deila hljóði"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"Símtöl og vekjarar"</string>
+ <!-- no translation found for audio_sharing_streams_category_title (862958129650324581) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_pref_title (4636293245167657721) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_title (8269455097512153101) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_qr_code_summary (4231875597377863735) -->
<skip />
<string name="date_and_time" msgid="1788358029823431692">"Dagsetning og tími"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"Proxy-þjónn"</string>
@@ -540,24 +547,15 @@
<string name="private_space_title" msgid="7078627930195569767">"Einkarými"</string>
<string name="private_space_summary" msgid="8237652417163408001">"Fela forrit í lokaðri möppu"</string>
<string name="private_space_one_lock_title" msgid="7306547190751832568">"Taka úr lás með skjálás"</string>
- <!-- no translation found for private_space_hide_title (8687034008994037610) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_title (972581369094289386) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_summary (1052569521186403642) -->
- <skip />
- <!-- no translation found for privatespace_access_header (982809349769470185) -->
- <skip />
- <!-- no translation found for privatespace_search_description (983837656432484282) -->
- <skip />
- <!-- no translation found for privatespace_tap_tile_description (4146608898639668340) -->
- <skip />
- <!-- no translation found for privatespace_unlock_description (4132755357482447360) -->
- <skip />
- <!-- no translation found for privatespace_hide_off_summary (7227778747159633671) -->
- <skip />
- <!-- no translation found for privatespace_hide_on_summary (6136704537527640183) -->
- <skip />
+ <string name="private_space_hide_title" msgid="8687034008994037610">"Fela þegar læst"</string>
+ <string name="privatespace_hide_page_title" msgid="972581369094289386">"Fela einkarými þegar það er læst"</string>
+ <string name="privatespace_hide_page_summary" msgid="1052569521186403642">"Til að aðrir sjái ekki einkarými tækisins geturðu falið það á forritalistanum"</string>
+ <string name="privatespace_access_header" msgid="982809349769470185">"Aðgangur að einkarými þegar það er falið"</string>
+ <string name="privatespace_search_description" msgid="983837656432484282">"Leitaðu að „Einkarými“ á leitarstikunni"</string>
+ <string name="privatespace_tap_tile_description" msgid="4146608898639668340">"Ýttu á reitinn „Einkarými“"</string>
+ <string name="privatespace_unlock_description" msgid="4132755357482447360">"Taktu einkarýmið úr lás"</string>
+ <string name="privatespace_hide_off_summary" msgid="7227778747159633671">"Slökkt"</string>
+ <string name="privatespace_hide_on_summary" msgid="6136704537527640183">"Kveikt"</string>
<string name="private_space_category_system" msgid="1286843321867285700">"Kerfi"</string>
<string name="private_space_create_title" msgid="47273568884806726">"Búa til einkarými"</string>
<string name="private_space_delete_title" msgid="3075645119800272800">"Eyða einkarými"</string>
@@ -570,54 +568,30 @@
<string name="no_device_lock_summary" msgid="7653477413589207824">"Stilltu skjálás í tækinu til að nota einkarými."</string>
<string name="no_device_lock_action_label" msgid="2640487005629001288">"Stilla skjálás"</string>
<string name="no_device_lock_cancel" msgid="4412602160321228863">"Hætta við"</string>
- <!-- no translation found for privatespace_cancel_label (362351004019511784) -->
- <skip />
- <!-- no translation found for privatespace_setup_button_label (3696372546231047258) -->
- <skip />
- <!-- no translation found for privatespace_setup_title (177623114624330394) -->
- <skip />
- <!-- no translation found for privatespace_hide_apps_summary (4016518749055602268) -->
- <skip />
- <!-- no translation found for privatespace_how_title (8794102046435526065) -->
- <skip />
- <!-- no translation found for privatespace_access_bottom_text (1075244097441349030) -->
- <skip />
- <!-- no translation found for privatespace_protected_lock_text (7320604832432017423) -->
- <skip />
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_cancel_label" msgid="362351004019511784">"Hætta við"</string>
+ <string name="privatespace_setup_button_label" msgid="3696372546231047258">"Setja upp"</string>
+ <string name="privatespace_setup_title" msgid="177623114624330394">"Setja upp einkarými"</string>
+ <string name="privatespace_hide_apps_summary" msgid="4016518749055602268">"Feldu einkaforrit í öruggu rými sem enginn getur opnað nema þú"</string>
+ <string name="privatespace_how_title" msgid="8794102046435526065">"Svona virkar þetta"</string>
+ <string name="privatespace_access_bottom_text" msgid="1075244097441349030">"Þú getur nálgast einkarými neðst á forritalistanum"</string>
+ <string name="privatespace_protected_lock_text" msgid="7320604832432017423">"Forrit í einkarými eru varin með lás"</string>
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"Tilkynningar forrita í einkarými eru faldar þegar það er læst"</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"Forrit í einkarými birtast ekki í leyfisstjóra, á persónuverndarstjórnborði og í öðrum stillingum þegar einkarými er læst"</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"Setur upp einkarými…"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"Einkarými er varið með lás"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"Notkunarupplýsingar einkarýmisforrita eru faldar þegar það er læst"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"Opnaðu einkarými á forritalistanum"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"Ekki tókst að setja upp einkarými"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"Prófaðu aftur núna eða komdu aftur síðar"</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"Reyna aftur"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"Nota skjálás til að taka úr lás?"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"Hægt er að taka einkarými úr lás á sama hátt og tækið en einnig er hægt að velja annan lás"</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"Nota skjálás"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"Velja nýjan lás"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"Allt tilbúið!"</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"Til að opna einkarými skaltu strjúka upp frá neðri hluta heimaskjásins og fletta svo niður"</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"Lokið"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"Flettu niður til að opna einkarými"</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"Þú getur bætt við allt að <xliff:g id="COUNT">%d</xliff:g> fingraförum"</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"Þú hefur bætt við hámarksfjölda fingrafara"</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"Ekki er hægt að bæta fleiri fingraförum við"</string>
@@ -1135,8 +1109,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"Halda áfram að nota forrit þegar tæki er brotið saman"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"Hnökralaus skjár"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"Hækkar endurnýjunartíðni sjálfkrafa upp í <xliff:g id="ID_1">%1$d</xliff:g> Hz fyrir sumt efni. Eykur rafhlöðunotkun."</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"Þvinga fram mesta endurnýjunarhraða"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"Mesti endurnýjunarhraði fyrir bætta snertisvörun og gæði hreyfimynda. Eykur rafhlöðunotkun."</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"Skjáskynjun"</string>
@@ -1372,6 +1345,8 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"Sameiginlegar stillingar"</string>
<string name="apn_settings" msgid="4295467389400441299">"Aðgangsstaðir"</string>
<string name="apn_edit" msgid="2003683641840248741">"Breyta aðgangsstað"</string>
+ <!-- no translation found for apn_add (9069613192201630934) -->
+ <skip />
<string name="apn_not_set" msgid="8246646433109750293">"Ekki stillt"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"Ekki stillt"</string>
<string name="apn_name" msgid="6677695784108157953">"Heiti"</string>
@@ -2006,12 +1981,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"Notaðu aðgengishnappinn til að opna"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"Haltu hljóðstyrkstökkunum inni til að opna"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"Ýttu þrisvar á skjáinn til að opna"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"Ýtt þrisvar á skjáinn með tveimur fingrum til að opna"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"Nota bendingu til að opna"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"Nota aðgengisbendingu"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"Til að nota þennan eiginleika skaltu ýta á aðgengishnappinn <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> neðst á skjánum.\n\nTil að skipta á milli eiginleika skaltu halda inni aðgengishnappinum."</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"Ýttu á aðgengishnappinn á skjánum til að nota þennan eiginleika."</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"Til að nota þennan eiginleika heldurðu inni báðum hljóðstyrkstökkunum."</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"Til að ræsa og stöðva stækkun skaltu ýta þrisvar einhvers staðar á skjáinn."</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"Til að ræsa og stöðva stækkun skaltu ýta þrisvar einhversstaðar á skjáinn með tveimur fingrum."</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"Til að nota þennan eiginleika skaltu strjúka upp frá neðri hluta skjásins með tveimur fingrum.\n\nTil að skipta á milli eiginleika skaltu strjúka upp með tveimur fingrum og halda inni."</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"Til að nota þennan eiginleika skaltu strjúka upp frá neðri hluta skjásins með þremur fingrum.\n\nTil að skipta á milli eiginleika skaltu strjúka upp með þremur fingrum og halda inni."</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"Til að nota aðgengiseiginleika skaltu strjúka upp frá neðri hluta skjásins með tveimur fingrum.\n\nTil að skipta á milli eiginleika skaltu strjúka upp með tveimur fingrum og halda inni."</string>
@@ -2033,12 +2010,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"Halda inni hljóðstyrkstökkum"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"halda inni hljóðstyrkstökkum"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"Haltu báðum hljóðstyrkstökkunum inni"</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"Ýtt þrisvar á skjáinn með tveimur fingrum"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"ýtt þrisvar á skjáinn með tveimur fingrum"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"Ýtt hratt á skjáinn {0,number,integer} sinnum með tveimur fingrum"</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"Ýta þrisvar á skjá"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"ýta þrisvar á skjá"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"Ýttu snögglega á skjáinn {0,number,integer} sinnum. Þessi flýtileið kann að hægja á tækinu"</string>
@@ -2336,6 +2310,10 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"Ef þú takmarkar bakgrunnsvirkni forrits gæti það látið illa"</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"Forrit notar ekki fínstillingu á rafhlöðu og því er ekki hægt að takmarka það.\n\nKveiktu á fínstillingu til að takmarka."</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"Stjórna rafhlöðunotkun"</string>
+ <!-- no translation found for manager_battery_usage_allow_background_usage_title (6294649996820358852) -->
+ <skip />
+ <!-- no translation found for manager_battery_usage_allow_background_usage_summary (8021153755201340819) -->
+ <skip />
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"Ótakmörkuð"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"Fínstillt"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"Takmarkað"</string>
@@ -3846,6 +3824,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"Leyfa aðgang til að stjórna öllum skrám"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"Leyfa þessu forriti að lesa, breyta og eyða öllum skrám í þessu tæki eða tengdum geymsludrifum. Ef heimild er veitt fær forritið aðgang að skránum þínum án þess að þér sé tilkynnt sérstaklega um það."</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"Hefur aðgang að öllum skrám"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"Tilkynningar á öllum skjánum"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"Leyfa tilkynningar á öllum skjánum frá þessu forriti"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"Leyfa forritinu að birta tilkynningar á öllum skjánum þegar tækið er læst. Forrit kunna að nota þennan eiginleika til að leggja áherslu á vekjara, móttekin símtöl og aðrar áríðandi tilkynningar."</string>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index d1cb379..2c24505 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -135,7 +135,14 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"Stilo"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"Condivisione audio"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"Condividi audio"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"Chiamate e sveglie"</string>
+ <!-- no translation found for audio_sharing_streams_category_title (862958129650324581) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_pref_title (4636293245167657721) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_title (8269455097512153101) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_qr_code_summary (4231875597377863735) -->
<skip />
<string name="date_and_time" msgid="1788358029823431692">"Data e ora"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"Proxy"</string>
@@ -540,24 +547,15 @@
<string name="private_space_title" msgid="7078627930195569767">"Spazio privato"</string>
<string name="private_space_summary" msgid="8237652417163408001">"Nascondi le app in una cartella privata"</string>
<string name="private_space_one_lock_title" msgid="7306547190751832568">"Sblocca usando il blocco schermo"</string>
- <!-- no translation found for private_space_hide_title (8687034008994037610) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_title (972581369094289386) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_summary (1052569521186403642) -->
- <skip />
- <!-- no translation found for privatespace_access_header (982809349769470185) -->
- <skip />
- <!-- no translation found for privatespace_search_description (983837656432484282) -->
- <skip />
- <!-- no translation found for privatespace_tap_tile_description (4146608898639668340) -->
- <skip />
- <!-- no translation found for privatespace_unlock_description (4132755357482447360) -->
- <skip />
- <!-- no translation found for privatespace_hide_off_summary (7227778747159633671) -->
- <skip />
- <!-- no translation found for privatespace_hide_on_summary (6136704537527640183) -->
- <skip />
+ <string name="private_space_hide_title" msgid="8687034008994037610">"Nascondi quando è bloccato"</string>
+ <string name="privatespace_hide_page_title" msgid="972581369094289386">"Nascondi Spazio privato quando è bloccato"</string>
+ <string name="privatespace_hide_page_summary" msgid="1052569521186403642">"Per evitare che altre persone sappiano che lo Spazio privato è sul tuo dispositivo, puoi nasconderlo dal tuo elenco di app"</string>
+ <string name="privatespace_access_header" msgid="982809349769470185">"Accedi allo Spazio privato quando è nascosto"</string>
+ <string name="privatespace_search_description" msgid="983837656432484282">"Cerca \"Spazio privato\" nella barra di ricerca"</string>
+ <string name="privatespace_tap_tile_description" msgid="4146608898639668340">"Tocca il riquadro Spazio privato"</string>
+ <string name="privatespace_unlock_description" msgid="4132755357482447360">"Sblocca il tuo Spazio privato"</string>
+ <string name="privatespace_hide_off_summary" msgid="7227778747159633671">"Off"</string>
+ <string name="privatespace_hide_on_summary" msgid="6136704537527640183">"On"</string>
<string name="private_space_category_system" msgid="1286843321867285700">"Sistema"</string>
<string name="private_space_create_title" msgid="47273568884806726">"Crea Spazio privato"</string>
<string name="private_space_delete_title" msgid="3075645119800272800">"Elimina Spazio privato"</string>
@@ -570,54 +568,30 @@
<string name="no_device_lock_summary" msgid="7653477413589207824">"Per utilizzare Spazio privato, imposta un blocco schermo."</string>
<string name="no_device_lock_action_label" msgid="2640487005629001288">"Imposta blocco schermo"</string>
<string name="no_device_lock_cancel" msgid="4412602160321228863">"Annulla"</string>
- <!-- no translation found for privatespace_cancel_label (362351004019511784) -->
- <skip />
- <!-- no translation found for privatespace_setup_button_label (3696372546231047258) -->
- <skip />
- <!-- no translation found for privatespace_setup_title (177623114624330394) -->
- <skip />
- <!-- no translation found for privatespace_hide_apps_summary (4016518749055602268) -->
- <skip />
- <!-- no translation found for privatespace_how_title (8794102046435526065) -->
- <skip />
- <!-- no translation found for privatespace_access_bottom_text (1075244097441349030) -->
- <skip />
- <!-- no translation found for privatespace_protected_lock_text (7320604832432017423) -->
- <skip />
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_cancel_label" msgid="362351004019511784">"Annulla"</string>
+ <string name="privatespace_setup_button_label" msgid="3696372546231047258">"Configura"</string>
+ <string name="privatespace_setup_title" msgid="177623114624330394">"Configura Spazio privato"</string>
+ <string name="privatespace_hide_apps_summary" msgid="4016518749055602268">"Nascondi le app private in uno spazio sicuro a cui puoi accedere soltanto tu"</string>
+ <string name="privatespace_how_title" msgid="8794102046435526065">"Come funziona"</string>
+ <string name="privatespace_access_bottom_text" msgid="1075244097441349030">"Puoi accedere allo Spazio privato dalla parte inferiore del tuo elenco di app"</string>
+ <string name="privatespace_protected_lock_text" msgid="7320604832432017423">"Le app nello Spazio privato sono protette da un blocco"</string>
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"Le notifiche delle app nello Spazio privato vengono nascoste quando quest\'ultimo è bloccato"</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"Quando lo Spazio privato è bloccato, le relative app non vengono visualizzate in gestione autorizzazioni, dashboard della privacy e altre impostazioni"</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"Configurazione dello Spazio privato in corso…"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"Lo Spazio privato è protetto da un blocco"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"Le informazioni sull\'utilizzo delle app dello Spazio privato vengono nascoste quando quest\'ultimo è bloccato"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"Accedi allo Spazio privato dal tuo elenco di app"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"Impossibile configurare lo Spazio privato"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"Riprova adesso o in un secondo momento"</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"Riprova"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"Utilizzare il blocco schermo per sbloccare?"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"Puoi sbloccare lo Spazio privato nello stesso modo in cui sblocchi il tuo dispositivo oppure scegliere un blocco diverso"</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"Usa il blocco schermo"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"Scegli un nuovo blocco"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"Fatto."</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"Per accedere allo Spazio privato, scorri verso l\'alto dalla parte inferiore della schermata Home, quindi scorri verso il basso"</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"Fine"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"Scorri verso il basso per accedere allo Spazio privato"</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"Puoi aggiungere fino a <xliff:g id="COUNT">%d</xliff:g> impronte digitali"</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"Hai aggiunto il numero massimo di impronte digitali"</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"Impossibile aggiungere ulteriori impronte digitali"</string>
@@ -1135,8 +1109,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"Continua a usare le app quando chiuso"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"Display fluido"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"Aumenta automaticamente la frequenza di aggiornamento fino a <xliff:g id="ID_1">%1$d</xliff:g> Hz per alcuni contenuti. Comporta un maggior utilizzo della batteria."</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"Forza frequenza di aggiornamento massima"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"Massima frequenza di aggiornamento per migliore reattività al tocco e qualità dell\'animazione; aumenta il consumo della batteria"</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"Schermo vigile"</string>
@@ -1372,6 +1345,8 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"Impostazioni comuni"</string>
<string name="apn_settings" msgid="4295467389400441299">"APN"</string>
<string name="apn_edit" msgid="2003683641840248741">"Modifica punto di accesso"</string>
+ <!-- no translation found for apn_add (9069613192201630934) -->
+ <skip />
<string name="apn_not_set" msgid="8246646433109750293">"Nessuna impostazione"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"Nessuna impostazione"</string>
<string name="apn_name" msgid="6677695784108157953">"Nome"</string>
@@ -2006,12 +1981,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"Usa il pulsante Accessibilità per aprire"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"Tieni premuti i tasti del volume per aprire"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"Tocca tre volte lo schermo per aprire"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"Tocca tre volte lo schermo con due dita per aprire"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"Usa un gesto per aprire"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"Usa il gesto di accessibilità"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"Per usare questa funzione, tocca il pulsante Accessibilità <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> nella parte inferiore dello schermo.\n\nPer spostarti tra le funzioni, tocca e tieni premuto il pulsante Accessibilità."</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"Per usare questa funzione, tocca il pulsante Accessibilità sullo schermo."</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"Per usare questa funzionalità, tieni premuti entrambi i tasti del volume."</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"Per avviare e interrompere l\'ingrandimento, tocca tre volte un punto qualsiasi dello schermo."</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"Per avviare e interrompere l\'ingrandimento, tocca tre volte un punto dello schermo con due dita."</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"Per usare questa funzione, scorri verso l\'alto dalla parte inferiore dello schermo con due dita.\n\nPer spostarti tra le funzioni, scorri verso l\'alto con due dita e tieni premuto."</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"Per usare questa funzione, scorri verso l\'alto dalla parte inferiore dello schermo con tre dita.\n\nPer spostarti tra le funzioni, scorri verso l\'alto con tre dita e tieni premuto."</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"Per usare una funzione di accessibilità, scorri verso l\'alto dalla parte inferiore dello schermo con due dita.\n\nPer spostarti tra le funzioni, scorri verso l\'alto con due dita e tieni premuto."</string>
@@ -2033,12 +2010,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"Tieni premuti i tasti del volume"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"tieni premuti i tasti del volume"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"Tieni premuti entrambi i tasti del volume"</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"Tocca tre volte lo schermo con due dita"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"tocca tre volte lo schermo con due dita"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"Tocca rapidamente lo schermo {0,number,integer} volte con due dita"</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"Tocca 3 volte lo schermo"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"tocca tre volte lo schermo"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"Tocca lo schermo {0,number,integer} volte in rapida successione. Questa scorciatoia potrebbe rallentare il dispositivo."</string>
@@ -2336,6 +2310,10 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"Se limiti l\'attività in background per un\'app, tale app potrebbe funzionare in modo anomalo"</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"Per limitare l\'app,\n\ndevi prima attivare l\'ottimizzazione della batteria."</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"Gestisci l\'utilizzo della batteria"</string>
+ <!-- no translation found for manager_battery_usage_allow_background_usage_title (6294649996820358852) -->
+ <skip />
+ <!-- no translation found for manager_battery_usage_allow_background_usage_summary (8021153755201340819) -->
+ <skip />
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"Senza limitazioni"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"Ottimizzato"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"Con limitazioni"</string>
@@ -3846,6 +3824,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"Consenti l\'accesso per gestire tutti i file"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"Consenti a questa app di leggere, modificare ed eliminare tutti i file memorizzati su questo dispositivo o su qualsiasi volume di archiviazione collegato. Se concedi l\'autorizzazione, l\'app potrà accedere ai file senza informarti."</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"Possono accedere a tutti i file"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"Notifiche a schermo intero"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"Consenti notifiche a schermo intero di questa app"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"Consenti a questa app di mostrare notifiche a schermo intero quando il dispositivo è bloccato. L\'app potrebbe usarle per mettere in evidenza sveglie, chiamate in arrivo o altre notifiche urgenti."</string>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index b69327b..a19d5a6 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -137,6 +137,14 @@
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"שיתוף האודיו"</string>
<!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
<skip />
+ <!-- no translation found for audio_sharing_streams_category_title (862958129650324581) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_pref_title (4636293245167657721) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_title (8269455097512153101) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_qr_code_summary (4231875597377863735) -->
+ <skip />
<string name="date_and_time" msgid="1788358029823431692">"תאריך ושעה"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"שרת Proxy"</string>
<string name="proxy_clear_text" msgid="6529658759984031149">"ניקוי"</string>
@@ -1356,6 +1364,8 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"הגדרות שיתופיות"</string>
<string name="apn_settings" msgid="4295467389400441299">"פריטי APN"</string>
<string name="apn_edit" msgid="2003683641840248741">"עריכת נקודת גישה"</string>
+ <!-- no translation found for apn_add (9069613192201630934) -->
+ <skip />
<string name="apn_not_set" msgid="8246646433109750293">"לא בוצעה הגדרה"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"לא הוגדר"</string>
<string name="apn_name" msgid="6677695784108157953">"שם"</string>
@@ -1990,12 +2000,16 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"שימוש בלחצן הנגישות לצורך פתיחה"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"לחיצה ארוכה על לחצני עוצמת הקול כדי לפתוח"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"מקישים שלוש פעמים על המסך כדי לפתוח"</string>
+ <!-- no translation found for accessibility_tutorial_dialog_title_two_finger_triple (1090593773487065541) -->
+ <skip />
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"שימוש בתנועה לצורך פתיחה"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"שימוש בתנועה להפעלת תכונות הנגישות"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"כדי להשתמש בתכונה זו, יש להקיש על לחצן הנגישות <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> שבתחתית המסך.\n\nכדי לעבור בין התכונות השונות, יש ללחוץ לחיצה ארוכה על לחצן הנגישות."</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"כדי להשתמש בתכונה הזו, יש להקיש על לחצן הנגישות במסך."</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"כדי להשתמש בתכונה הזו, יש ללחוץ לחיצה ארוכה על שני הלחצנים של עוצמת הקול."</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"כדי להפעיל הגדלה ולהפסיק אותה, יש להקיש שלוש פעמים במיקום כלשהו במסך."</string>
+ <!-- no translation found for accessibility_tutorial_dialog_message_two_finger_triple (6205072282308562361) -->
+ <skip />
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"כדי להשתמש בתכונה זו, יש להחליק כלפי מעלה מתחתית המסך באמצעות שתי אצבעות.\n\nכדי לעבור בין התכונות השונות, יש להחליק כלפי מעלה באמצעות שתי אצבעות ולהחזיק."</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"כדי להשתמש בתכונה זו, יש להחליק כלפי מעלה מתחתית המסך באמצעות שלוש אצבעות.\n\nכדי לעבור בין התכונות השונות, יש להחליק כלפי מעלה באמצעות שלוש אצבעות ולהחזיק."</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"כדי להשתמש בתכונת הנגישות, יש להחליק כלפי מעלה מתחתית המסך באמצעות שתי אצבעות.\n\nכדי לעבור בין התכונות השונות, יש להחליק כלפי מעלה באמצעות שתי אצבעות ולהחזיק."</string>
@@ -2320,6 +2334,10 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"הגבלת הפעילות של אפליקציה ברקע עלולה לשבש את פעולתה"</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"מכיוון שהאפליקציה לא מוגדרת לאופטימיזציה של הסוללה, לא ניתן להגבילה.\n\nכדי להגביל אותה, תחילה יש להפעיל אופטימיזציה של הסוללה."</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"ניהול השימוש בסוללה"</string>
+ <!-- no translation found for manager_battery_usage_allow_background_usage_title (6294649996820358852) -->
+ <skip />
+ <!-- no translation found for manager_battery_usage_allow_background_usage_summary (8021153755201340819) -->
+ <skip />
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"ללא הגבלות"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"אופטימיזציה"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"מוגבל"</string>
@@ -3830,6 +3848,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"הרשאת גישה לניהול כל הקבצים"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"לאפליקציה הזו תהיה הרשאה לקרוא, לשנות ולמחוק את כל הקבצים במכשיר הזה או בכל אחסון שמחובר אליו. אם ההרשאה ניתנת, האפליקציה תורשה לגשת לקבצים מבלי ליידע אותך במפורש."</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"יכולת גישה לכל הקבצים"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"התראות במסך מלא"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"מתן הרשאה להצגת התראות במסך מלא מהאפליקציה הזו"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"מתן הרשאה לאפליקציה הזו להציג התראות במסך מלא כשהמכשיר נעול. אפליקציות יכולות להשתמש בהרשאה הזו כדי להציג התראות, שיחות נכנסות או הודעות דחופות אחרות."</string>
@@ -4902,8 +4926,8 @@
<string name="flash_notifications_note" msgid="2426125248448055075">"אם יש לך רגישות לאור, כדאי להשתמש בהתראות הבהוב בזהירות"</string>
<string name="flash_notifications_keywords" msgid="2458759275318514836">"פלאש, אור, כבד שמיעה, אובדן שמיעה"</string>
<string name="flash_notifications_preview" msgid="5320176885050440874">"תצוגה מקדימה"</string>
- <string name="camera_flash_notification_title" msgid="2475084876382922732">"הפלאש של המצלמה"</string>
- <string name="screen_flash_notification_title" msgid="3773100725793316708">"הבזק מסך"</string>
+ <string name="camera_flash_notification_title" msgid="2475084876382922732">"הבהוב פלאש"</string>
+ <string name="screen_flash_notification_title" msgid="3773100725793316708">"הבהוב במסך"</string>
<string name="screen_flash_notification_color_title" msgid="7213407653340970790">"צבע להבזק מסך"</string>
<string name="screen_flash_color_blue" msgid="3585766657607931371">"כחול"</string>
<string name="screen_flash_color_azure" msgid="8691198532944992243">"תכלת"</string>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index a9e0ca5..132a735 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -135,8 +135,11 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"タッチペン"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"音声の共有"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"音声を共有"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
- <skip />
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"通話とアラーム"</string>
+ <string name="audio_sharing_streams_category_title" msgid="862958129650324581">"LE Audio ストリームへの接続"</string>
+ <string name="audio_sharing_streams_pref_title" msgid="4636293245167657721">"付近の音声ストリーム"</string>
+ <string name="audio_sharing_streams_title" msgid="8269455097512153101">"音声ストリーム"</string>
+ <string name="audio_sharing_streams_qr_code_summary" msgid="4231875597377863735">"QR コードを使用して音声ストリームに接続します"</string>
<string name="date_and_time" msgid="1788358029823431692">"日付と時刻"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"プロキシ"</string>
<string name="proxy_clear_text" msgid="6529658759984031149">"消去"</string>
@@ -568,40 +571,23 @@
<string name="privatespace_how_title" msgid="8794102046435526065">"仕組み"</string>
<string name="privatespace_access_bottom_text" msgid="1075244097441349030">"アプリのリストの下部からプライベート スペースにアクセスできます"</string>
<string name="privatespace_protected_lock_text" msgid="7320604832432017423">"プライベート スペースのアプリはロックによって保護されます"</string>
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"プライベート スペースがロックされているときは、プライベート スペースにアプリからの通知は表示されません"</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"プライベート スペースがロックされているときは、権限マネージャ、プライバシー ダッシュボード、その他の設定にプライベート スペース アプリは表示されません"</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"プライベート スペースを設定しています…"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"プライベート スペースはロックによって保護されています"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"プライベート スペースがロックされているときは、プライベート スペース アプリの使用状況に関する情報は表示されません"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"アプリのリストからプライベート スペースにアクセス"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"プライベート スペースを設定できませんでした"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"今すぐもう一度試すか、後でやり直してください"</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"再試行"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"ロック解除に画面ロックを使用しますか?"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"デバイスのロック解除と同じ方法でプライベート スペースのロックを解除するか、別のロックを選択できます"</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"画面ロックを使用"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"新しいロックを選択"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"設定完了"</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"プライベート スペースにアクセスするには、ホーム画面を下から上にスワイプし、下にスクロールします"</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"完了"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"プライベート スペースにアクセスするには下にスクロールします"</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"最大で <xliff:g id="COUNT">%d</xliff:g> 件の指紋を追加できます"</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"追加された指紋の数が上限に達しました"</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"これ以上、指紋を追加できません"</string>
@@ -630,7 +616,7 @@
<string name="setup_lock_settings_options_dialog_title" msgid="7985107300517468569">"画面ロックの方法"</string>
<string name="lock_screen_auto_pin_confirm_title" msgid="3012128112186088375">"ロック解除を自動で確認する"</string>
<string name="lock_screen_auto_pin_confirm_summary" msgid="9050818870806580819">"6 桁以上の正しい PIN が入力されると自動的にロック解除します。[入力] をタップして確認するよりも、安全面でやや劣ります。"</string>
- <string name="auto_pin_confirm_user_message" msgid="6194556173488939314">"正しい PIN を自動で確認します"</string>
+ <string name="auto_pin_confirm_user_message" msgid="6194556173488939314">"正しい PIN を自動で確認する"</string>
<string name="auto_pin_confirm_opt_in_security_message" msgid="580773976736184893">"[入力] をタップして PIN を確認するほうが、自動確認を使うよりも安全です"</string>
<string name="auto_confirm_on_pin_verify_description" msgid="2052240431173223502">"自動確認を有効にするには、デバイスの PIN を入力してください"</string>
<string name="auto_confirm_off_pin_verify_description" msgid="4256219155659760047">"自動確認を無効にするには、デバイスの PIN を入力してください"</string>
@@ -1119,8 +1105,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"折りたたみ時もアプリの使用を継続"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"スムーズ ディスプレイ"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"コンテンツに応じて、リフレッシュ レートを自動的に <xliff:g id="ID_1">%1$d</xliff:g> Hz に変更します。バッテリー使用量が増えます。"</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"ピーク時のリフレッシュ レートの適用"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"最高のリフレッシュ レートを適用します。タップの反応とアニメーションの品質が向上します。バッテリー使用量が増えます。"</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"スクリーン アテンション"</string>
@@ -1356,6 +1341,7 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"共用の設定"</string>
<string name="apn_settings" msgid="4295467389400441299">"APN"</string>
<string name="apn_edit" msgid="2003683641840248741">"アクセスポイントの編集"</string>
+ <string name="apn_add" msgid="9069613192201630934">"アクセス ポイントの追加"</string>
<string name="apn_not_set" msgid="8246646433109750293">"未設定"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"未設定"</string>
<string name="apn_name" msgid="6677695784108157953">"名前"</string>
@@ -1990,12 +1976,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"ユーザー補助機能ボタンで開く"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"両方の音量ボタンを長押しして開く"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"画面をトリプルタップして開く"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"2 本の指で画面をトリプルタップして開く"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"ジェスチャーで開く"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"ユーザー補助操作を使用する"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"この機能を使用するには、画面の下部にあるユーザー補助機能ボタン <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> をタップします。\n\n機能を切り替えるには、ユーザー補助機能ボタンを長押しします。"</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"この機能を使用するには、画面上のユーザー補助機能ボタンをタップしてください。"</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"この機能を使用するには、音量大と音量小の両方のボタンを長押しします。"</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"拡大を開始および停止するには、画面をトリプルタップします。"</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"拡大を開始および停止するには、2 本の指で画面をトリプルタップします。"</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"この機能を使用するには、2 本の指で画面の下から上にスワイプします。\n\n機能を切り替えるには、2 本の指で上にスワイプしたまま長押しします。"</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"この機能を使用するには、3 本の指で画面の下から上にスワイプします。\n\n機能を切り替えるには、3 本の指で上にスワイプしたまま長押しします。"</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"ユーザー補助機能を使用するには、2 本の指で画面の下から上にスワイプします。\n\n機能を切り替えるには、2 本の指で上にスワイプしたまま長押しします。"</string>
@@ -2017,12 +2005,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"音量ボタンを長押し"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"音量大と音量小の両方のボタンを長押し"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"音量大と音量小の両方のボタンを長押しします"</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"2 本の指で画面をトリプルタップ"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"2 本の指で画面をトリプルタップ"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"2 本の指で画面を {0,number,integer} 回すばやくタップします"</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"画面をトリプルタップ"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"画面をトリプルタップ"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"画面をすばやく {0,number,integer} 回タップします。このショートカットを使うと、デバイスの動作が遅くなる場合があります"</string>
@@ -2320,6 +2305,8 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"アプリのバックグラウンド アクティビティを制限すると、アプリが正常に機能しないことがあります"</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"このアプリは、電池の最適化が設定されていないため、制限することはできません。\n\nこのアプリを制限するには、電池の最適化を ON にしてください。"</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"バッテリー使用状況の管理"</string>
+ <string name="manager_battery_usage_allow_background_usage_title" msgid="6294649996820358852">"バックグラウンドでの使用の許可"</string>
+ <string name="manager_battery_usage_allow_background_usage_summary" msgid="8021153755201340819">"リアルタイムのアップデートを利用する場合は有効に、バッテリーを節約したい場合は無効にしてください"</string>
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"制限なし"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"最適化"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"制限"</string>
@@ -3830,6 +3817,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"全ファイルの管理権を付与"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"このアプリに対して、デバイス内または接続されているストレージ ボリューム内のファイルすべての参照、変更、削除を許可します。許可されている場合、アプリがユーザーの事前の承認なしにファイルにアクセスすることもあります。"</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"すべてのファイルにアクセス可能"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"全画面通知"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"このアプリからの全画面通知を許可する"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"デバイスがロックされているときに通知を全画面に表示することを、このアプリに許可します。アプリはこの設定を、アラーム、着信、緊急通知などを強調するために使用することがあります。"</string>
diff --git a/res/values-ka/strings.xml b/res/values-ka/strings.xml
index 571a136..d8cb668 100644
--- a/res/values-ka/strings.xml
+++ b/res/values-ka/strings.xml
@@ -135,8 +135,11 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"სტილუსი"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"აუდიოს გაზიარება"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"აუდიოს გაზიარება"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
- <skip />
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"ზარები და მაღვიძარები"</string>
+ <string name="audio_sharing_streams_category_title" msgid="862958129650324581">"დაუკავშირდით LE-აუდიო ნაკადს"</string>
+ <string name="audio_sharing_streams_pref_title" msgid="4636293245167657721">"ახლომახლო აუდიო ნაკადები"</string>
+ <string name="audio_sharing_streams_title" msgid="8269455097512153101">"აუდიო ნაკადები"</string>
+ <string name="audio_sharing_streams_qr_code_summary" msgid="4231875597377863735">"დაუკავშირდით აუდიო ნაკადს QR კოდის გამოყენებით"</string>
<string name="date_and_time" msgid="1788358029823431692">"თარიღი და დრო"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"პროქსი"</string>
<string name="proxy_clear_text" msgid="6529658759984031149">"გაწმენდა"</string>
@@ -540,24 +543,15 @@
<string name="private_space_title" msgid="7078627930195569767">"პირადი სივრცე"</string>
<string name="private_space_summary" msgid="8237652417163408001">"აპების დამალვა პირად საქაღალდეში"</string>
<string name="private_space_one_lock_title" msgid="7306547190751832568">"ეკრანის დაბლოკვის გამოყენებით განბლოკვა"</string>
- <!-- no translation found for private_space_hide_title (8687034008994037610) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_title (972581369094289386) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_summary (1052569521186403642) -->
- <skip />
- <!-- no translation found for privatespace_access_header (982809349769470185) -->
- <skip />
- <!-- no translation found for privatespace_search_description (983837656432484282) -->
- <skip />
- <!-- no translation found for privatespace_tap_tile_description (4146608898639668340) -->
- <skip />
- <!-- no translation found for privatespace_unlock_description (4132755357482447360) -->
- <skip />
- <!-- no translation found for privatespace_hide_off_summary (7227778747159633671) -->
- <skip />
- <!-- no translation found for privatespace_hide_on_summary (6136704537527640183) -->
- <skip />
+ <string name="private_space_hide_title" msgid="8687034008994037610">"დამალვა ჩაკეტილ მდგომარეობაში"</string>
+ <string name="privatespace_hide_page_title" msgid="972581369094289386">"პირადი სივრცის დამალვა ჩაკეტილ მდგომარეობაში"</string>
+ <string name="privatespace_hide_page_summary" msgid="1052569521186403642">"შეგიძლიათ დამალოთ პირადი სივრცე თქვენი აპების გვერდიდან, თუ არ გსურთ, რომ სხვებმა იცოდნენ, პირად სივრცეს რომ იყენებთ თქვენს მოწყობილობაზე"</string>
+ <string name="privatespace_access_header" msgid="982809349769470185">"წვდომა პირად სივრცეზე, როცა დამალულია"</string>
+ <string name="privatespace_search_description" msgid="983837656432484282">"მოძებნეთ „პირადი სივრცე“ ძიების ზოლში"</string>
+ <string name="privatespace_tap_tile_description" msgid="4146608898639668340">"შეეხეთ Private Space მოზაიკის ფილას"</string>
+ <string name="privatespace_unlock_description" msgid="4132755357482447360">"განბლოკეთ თქვენი პირადი სივრცე"</string>
+ <string name="privatespace_hide_off_summary" msgid="7227778747159633671">"გამორთული"</string>
+ <string name="privatespace_hide_on_summary" msgid="6136704537527640183">"ჩართული"</string>
<string name="private_space_category_system" msgid="1286843321867285700">"სისტემა"</string>
<string name="private_space_create_title" msgid="47273568884806726">"პირადი სივრცის შექმნა"</string>
<string name="private_space_delete_title" msgid="3075645119800272800">"პირადი სივრცის წაშლა"</string>
@@ -570,54 +564,30 @@
<string name="no_device_lock_summary" msgid="7653477413589207824">"პირადი სივრცის გამოსაყენებლად დააყენეთ ეკრანის დაბლოკვა ამ მოწყობილობაზე."</string>
<string name="no_device_lock_action_label" msgid="2640487005629001288">"ეკრანის დაბლოკვის დაყენება"</string>
<string name="no_device_lock_cancel" msgid="4412602160321228863">"გაუქმება"</string>
- <!-- no translation found for privatespace_cancel_label (362351004019511784) -->
- <skip />
- <!-- no translation found for privatespace_setup_button_label (3696372546231047258) -->
- <skip />
- <!-- no translation found for privatespace_setup_title (177623114624330394) -->
- <skip />
- <!-- no translation found for privatespace_hide_apps_summary (4016518749055602268) -->
- <skip />
- <!-- no translation found for privatespace_how_title (8794102046435526065) -->
- <skip />
- <!-- no translation found for privatespace_access_bottom_text (1075244097441349030) -->
- <skip />
- <!-- no translation found for privatespace_protected_lock_text (7320604832432017423) -->
- <skip />
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_cancel_label" msgid="362351004019511784">"გაუქმება"</string>
+ <string name="privatespace_setup_button_label" msgid="3696372546231047258">"დაყენება"</string>
+ <string name="privatespace_setup_title" msgid="177623114624330394">"პირადი სივრცის დაყენება"</string>
+ <string name="privatespace_hide_apps_summary" msgid="4016518749055602268">"დამალეთ პირადი აპები უსაფრთხო სივრცეში, რომელზედაც მხოლოდ თქვენ გაქვთ წვდომა"</string>
+ <string name="privatespace_how_title" msgid="8794102046435526065">"მუშაობის პრინციპი"</string>
+ <string name="privatespace_access_bottom_text" msgid="1075244097441349030">"პირად სივრცეზე წვდომა თქვენი აპების გვერდის ბოლოში შეგიძლიათ"</string>
+ <string name="privatespace_protected_lock_text" msgid="7320604832432017423">"აპებს პირად სივრცეში იცავს ჩაკეტვა"</string>
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"პირად სივრცეში არსებული აპების შეტყობინებები დამალულია, როცა ის ჩაკეტილია"</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"პირადი სივრცის აპები არ გამოჩნდება ნებართვების მმართველში, კონფიდენციალურობის საინფორმაციო დაფასა და სხვა პარამეტრებში, როდესაც პირადი სივრცე ჩაკეტილია"</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"მიმდინარეობს პირადი სივრცის დაყენება…"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"პირად სივრცეს იცავს ჩაკეტვა"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"პირადი სივრცის აპების გამოყენების ინფორმაცია დამალულია, როცა ის ჩაკეტილია"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"მიიღეთ წვდომა პირად სივრცეზე თქვენი აპების გვერდიდან"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"პირადი სივრცის დაყენება ვერ მოხერხდა"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"ცადეთ ხელახლა ახლა ან მოგვიანებით"</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"ხელახლა ცდა"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"განსაბლოკად ეკრანის დაბლოკვას გამოიყენებთ?"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"განბლოკეთ თქვენი პირადი სივრცე ისევე, როგორ მოწყობილობას განბლოკავთ, ან დააყენეთ განსხვავებული საკეტი"</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"გამოიყენეთ ეკრანის დაბლოკვა"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"აირჩიეთ ახალი საკეტი"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"მზადაა!"</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"პირად სივრცეზე წვდომისთვის გადაფურცლეთ ზემოთ თქვენს მთავარ ეკრანზე, შემდეგ გადაადგილდით ქვემოთ"</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"მზადაა"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"პირად სივრცეზე წვდომისთვის გადაადგილდით ქვემოთ"</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"შეგიძლიათ დაამატოთ მაქსიმუმ <xliff:g id="COUNT">%d</xliff:g> თითის ანაბეჭდი"</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"თქვენ უკვე დაამატეთ თითის ანაბეჭდების მაქსიმალური რაოდენობა"</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"მეტი თითის ანაბეჭდის დამატება ვერ ხერხდება"</string>
@@ -1135,8 +1105,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"აპების გამოყენების გაგრძელება ჩაკეცვისას"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"Smooth Display"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"ავტომატურად ზრდის განახლების სიხშირეს <xliff:g id="ID_1">%1$d</xliff:g> ჰც-მდე, გარკვეული კონტენტისთვის. ზრდის ბატარეის მოხმარებას."</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"განახლების პიკური სიხშირის იძულება"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"განახლების უმაღლესი სიხშირე შეხებაზე გაუმჯობესებული რეაგირებისთვის და უფრო ერთგვაროვანი ანიმაციისთვის. გაზრდის ბატარეის მოხმარებას."</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"ეკრანზე ყურადღება"</string>
@@ -1372,6 +1341,7 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"საერთო პარამეტრები"</string>
<string name="apn_settings" msgid="4295467389400441299">"APN-ები"</string>
<string name="apn_edit" msgid="2003683641840248741">"წვდომის წერტილის რედაქტირება"</string>
+ <string name="apn_add" msgid="9069613192201630934">"დაამატეთ წვდომის წერტილი"</string>
<string name="apn_not_set" msgid="8246646433109750293">"არ არის დაყენებული"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"არ არის დაყენებული"</string>
<string name="apn_name" msgid="6677695784108157953">"სახელი"</string>
@@ -2006,12 +1976,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"გასახსნელად გამოიყენეთ მარტივი წვდომის ღილაკი"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"გასახსნელად დააჭირეთ ხმის ღილაკებს"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"სამმაგად შეეხეთ ეკრანს გასახსნელად"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"გასახსნელად სამჯერ შეეხეთ ეკრანს ორი თითით"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"გასახსნელად გამოიყენეთ ჟესტი"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"მარტივი წვდომის ჟესტის გამოყენება"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"ამ ფუნქციით სარგებლობისთვის შეეხეთ მარტივი წვდომის ღილაკს <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> თქვენი ეკრანის ქვედა ნაწილში.\n\nფუნქციების გადასართავად ხანგრძლივად შეეხეთ მარტივი წვდომის ღილაკს."</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"ამ ფუნქციის გამოსაყენებლად შეეხეთ მარტივი წვდომის ღილაკს თქვენს ეკრანზე."</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"ამ ფუნქციით სარგებლობისთვის ხანგრძლივად დააჭირეთ ხმის ორივე ღილაკს."</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"გადიდების დასაწყებად და შესაწყვეტად, სამმაგად შეეხეთ ეკრანს ნებისმიერ ადგილზე."</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"გადიდების დასაწყებად და შესაწყვეტად ორი თითით სამჯერ შეეხეთ ეკრანს ნებისმიერ ადგილზე."</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"ამ ფუნქციით სარგებლობისთვის 2 თითით გადაფურცლეთ ეკრანის ქვედა კიდიდან ზემოთ.\n\nფუნქციების გადასართავად 2 თითით გადაფურცლეთ ზემოთ და დააყოვნეთ."</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"ამ ფუნქციით სარგებლობისთვის 3 თითით გადაფურცლეთ ეკრანის ქვედა კიდიდან ზემოთ.\n\nფუნქციების გადასართავად 3 თითით გადაფურცლეთ ზემოთ და დააყოვნეთ."</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"მარტივი წვდომის ფუნქციით სარგებლობისთვის 2 თითით გადაფურცლეთ ეკრანის ქვედა კიდიდან ზემოთ.\n\nფუნქციების გადასართავად 2 თითით გადაფურცლეთ ზემოთ და დააყოვნეთ."</string>
@@ -2033,12 +2005,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"ხანგრძლივად დააჭირეთ ხმის ღილაკებს"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"ხანგრძლივად დააჭირეთ ხმის ღილაკებს"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"ხანგრძლივად დააჭირეთ ხმის ორივე ღილაკს"</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"ეკრანზე ორი თითით სამჯერ შეხება"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"ეკრანზე ორი თითით სამჯერ შეხება"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"სწრაფად შეეხეთ ეკრანს {0,number,integer}-ჯერ ორი თითით"</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"სამმაგად შეეხეთ ეკრანს"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"სამმაგად შეეხეთ ეკრანს"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"სწრაფად შეეხეთ ეკრანს {0,number,integer}-ჯერ. ამ მალსახმობმა შეიძლება მოწყობილობა შეანელოს"</string>
@@ -2336,6 +2305,8 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"აპისთვის ფონური აქტივობის შეზღუდვის შემთხვევაში, მან შეიძლება არასათანადოდ იმუშაოს"</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"რადგან ეს აპი ბატარეის ოპტიმიზებისთვის დაყენებული არაა, მას ვერ შეზღუდავთ.\n\nჩართეთ ბატარეის ოპტიმიზაცია აპის შესაზღუდავად."</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"ბატარეის მოხმარების მართვა"</string>
+ <string name="manager_battery_usage_allow_background_usage_title" msgid="6294649996820358852">"დაუშვით ფონური გამოყენება"</string>
+ <string name="manager_battery_usage_allow_background_usage_summary" msgid="8021153755201340819">"ჩართეთ რეალური დროის რეჟიმში განახლებებისთვის, გამორთეთ ბატარეის დასაზოგად"</string>
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"შეუზღუდავი"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"ოპტიმიზებული"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"შეზღუდული"</string>
@@ -3846,6 +3817,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"წვდომის დაშვება ყველა ფაილის სამართავად"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"აპს აძლევს უფლებას, წაიკითხოს, შეცვალოს და წაშალოს ყველა ფაილი ამ მოწყობილობაზე და ნებისმიერ დაკავშირებულ მეხსიერებაზე. ამ უფლების მინიჭების შემთხვევაში, აპს შეიძლება ფაილებზე წვდომა ჰქონდეს ისე, რომ ამის შესახებ არ იცოდეთ."</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"შეუძლია ჰქონდეს წვდომა ყველა ფაილზე"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"სრული ეკრანის შეტყობინებები"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"ნება დართეთ ამ აპიდან სრული ეკრანის შეტყობინებებს"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"ნება დართეთ ამ აპს, აჩვენოს შეტყობინებები, რომლებიც სრულ ეკრანს იკავებს, როდესაც მოწყობილობა ჩაკეტილია. აპმა ისინი შეიძლება გამოიყენოს გამაფრთხილებელი სიგნალების და შემომავალი ზარების გამოყოფისთვის ან სხვა გადაუდებელი შეტყობინებებისთვის."</string>
diff --git a/res/values-kk/strings.xml b/res/values-kk/strings.xml
index d373e58..ec0e424 100644
--- a/res/values-kk/strings.xml
+++ b/res/values-kk/strings.xml
@@ -135,7 +135,14 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"Стилус"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"Аудио бөлісу"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"Аудионы бөлісу"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"Қоңыраулар мен оятқыштар"</string>
+ <!-- no translation found for audio_sharing_streams_category_title (862958129650324581) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_pref_title (4636293245167657721) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_title (8269455097512153101) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_qr_code_summary (4231875597377863735) -->
<skip />
<string name="date_and_time" msgid="1788358029823431692">"Күн және уақыт"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"Прокси"</string>
@@ -540,24 +547,15 @@
<string name="private_space_title" msgid="7078627930195569767">"Жеке бөлме"</string>
<string name="private_space_summary" msgid="8237652417163408001">"Қолданбаларды жеке бөлмеге жасыру"</string>
<string name="private_space_one_lock_title" msgid="7306547190751832568">"Экран құлпы арқылы құлыпты ашу"</string>
- <!-- no translation found for private_space_hide_title (8687034008994037610) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_title (972581369094289386) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_summary (1052569521186403642) -->
- <skip />
- <!-- no translation found for privatespace_access_header (982809349769470185) -->
- <skip />
- <!-- no translation found for privatespace_search_description (983837656432484282) -->
- <skip />
- <!-- no translation found for privatespace_tap_tile_description (4146608898639668340) -->
- <skip />
- <!-- no translation found for privatespace_unlock_description (4132755357482447360) -->
- <skip />
- <!-- no translation found for privatespace_hide_off_summary (7227778747159633671) -->
- <skip />
- <!-- no translation found for privatespace_hide_on_summary (6136704537527640183) -->
- <skip />
+ <string name="private_space_hide_title" msgid="8687034008994037610">"Құлыптаулы кезде жасыру"</string>
+ <string name="privatespace_hide_page_title" msgid="972581369094289386">"Жеке бөлмені құлыптаулы кезде жасыру"</string>
+ <string name="privatespace_hide_page_summary" msgid="1052569521186403642">"Құрылғыңызда жеке бөлменің барын басқа адамдар білмес үшін, оны қолданбалар тізімінен жасыра аласыз."</string>
+ <string name="privatespace_access_header" msgid="982809349769470185">"Жеке бөлмеге жасырулы кезде кіру"</string>
+ <string name="privatespace_search_description" msgid="983837656432484282">"Іздеу жолағында \"Жеке бөлме\" деп іздеңіз."</string>
+ <string name="privatespace_tap_tile_description" msgid="4146608898639668340">"Жеке бөлме бөлшегін түртіңіз."</string>
+ <string name="privatespace_unlock_description" msgid="4132755357482447360">"Жеке бөлменің құлпын ашыңыз."</string>
+ <string name="privatespace_hide_off_summary" msgid="7227778747159633671">"Өшірулі"</string>
+ <string name="privatespace_hide_on_summary" msgid="6136704537527640183">"Қосулы"</string>
<string name="private_space_category_system" msgid="1286843321867285700">"Жүйе"</string>
<string name="private_space_create_title" msgid="47273568884806726">"Жеке бөлме жасау"</string>
<string name="private_space_delete_title" msgid="3075645119800272800">"Жеке бөлмені жою"</string>
@@ -570,54 +568,30 @@
<string name="no_device_lock_summary" msgid="7653477413589207824">"Жеке бөлмені қолдану үшін құрылғыға экран құлпын орнатыңыз."</string>
<string name="no_device_lock_action_label" msgid="2640487005629001288">"Экран құлпын орнату"</string>
<string name="no_device_lock_cancel" msgid="4412602160321228863">"Бас тарту"</string>
- <!-- no translation found for privatespace_cancel_label (362351004019511784) -->
- <skip />
- <!-- no translation found for privatespace_setup_button_label (3696372546231047258) -->
- <skip />
- <!-- no translation found for privatespace_setup_title (177623114624330394) -->
- <skip />
- <!-- no translation found for privatespace_hide_apps_summary (4016518749055602268) -->
- <skip />
- <!-- no translation found for privatespace_how_title (8794102046435526065) -->
- <skip />
- <!-- no translation found for privatespace_access_bottom_text (1075244097441349030) -->
- <skip />
- <!-- no translation found for privatespace_protected_lock_text (7320604832432017423) -->
- <skip />
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_cancel_label" msgid="362351004019511784">"Бас тарту"</string>
+ <string name="privatespace_setup_button_label" msgid="3696372546231047258">"Реттеу"</string>
+ <string name="privatespace_setup_title" msgid="177623114624330394">"Жеке бөлмені реттеу"</string>
+ <string name="privatespace_hide_apps_summary" msgid="4016518749055602268">"Жеке қолданбаларды сіз ғана кіре алатын қауіпсіз бөлмеге жасырып қою"</string>
+ <string name="privatespace_how_title" msgid="8794102046435526065">"Бұл қалай жұмыс істейді?"</string>
+ <string name="privatespace_access_bottom_text" msgid="1075244097441349030">"Қолданбалар тізімінің төменгі жағынан жеке бөлмеге кіруге болады."</string>
+ <string name="privatespace_protected_lock_text" msgid="7320604832432017423">"Жеке бөлмедегі қолданбалар құлыппен қорғалады."</string>
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"Жеке бөлме құлыптаулы кезде, оның қолданбаларынан келетін хабарландырулар жасырылады."</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"Жеке бөлме құлыптаулы кезде, \"Жеке бөлме\" қолданбалары \"Рұқсаттарды басқару\" бөлімінде, құпиялық тақтасында және басқа параметрлерде көрсетілмейді."</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"Жеке бөлме реттеліп жатыр…"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"Жеке бөлме құлыппен қорғалған"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"Жеке бөлме құлыптаулы кезде, оның қолданбаларын пайдалану туралы ақпарат жасырылады."</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"Жеке бөлмеге қолданбалар тізімінен кіру"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"Жеке бөлме реттелмеді."</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"Қазір қайталап көріңіз немесе бір айналып келіңіз."</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"Қайталап көру"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"Құлпын ашу үшін экран құлпын пайдалану керек пе?"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"Жеке бөлме құлпын құрылғы құлпын ашқандай аша аласыз немесе басқа құлып таңдай аласыз."</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"Экран құлпын пайдалану"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"Жаңа құлып таңдау"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"Бәрі дайын!"</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"Жеке бөлмеге кіру үшін экранның төменгі жағынан жоғары қарай сырғытып, содан соң төмен айналдырыңыз."</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"Дайын"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"Жеке бөлмеге кіру үшін төмен айналдырыңыз."</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"<xliff:g id="COUNT">%d</xliff:g> саусақ ізіне дейін қосуға болады"</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"Саусақ іздерінің максималды саны енгізілді"</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"Қосымша саусақ іздері енгізілмейді"</string>
@@ -1135,8 +1109,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"Қолданбаларды құрылғының бүктелген күйінде пайдалана беру"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"Smooth Display"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"Кейбір контент үшін жаңарту жиілігі <xliff:g id="ID_1">%1$d</xliff:g> Гц-ке дейін автоматты түрде артады. Батарея шығынын көбейтеді."</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"Ең жоғарғы жаңарту жиілігін қолмен қосу"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"Жақсартылған датчик сезгіштігі және анимация сапасына арналған ең жоғарғы жаңарту жиілігі. Батарея заряды тезірек таусылады."</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"Зейінді экран"</string>
@@ -1372,6 +1345,8 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"Жалпы параметрлер"</string>
<string name="apn_settings" msgid="4295467389400441299">"APN"</string>
<string name="apn_edit" msgid="2003683641840248741">"Кіру нүктесін өзгерту"</string>
+ <!-- no translation found for apn_add (9069613192201630934) -->
+ <skip />
<string name="apn_not_set" msgid="8246646433109750293">"Қойылмаған"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"Орнатылмаған"</string>
<string name="apn_name" msgid="6677695784108157953">"Атауы"</string>
@@ -2006,12 +1981,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"Ашу үшін арнайы мүмкіндіктер түймесін қолдану"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"Ашу үшін дыбыс деңгейі пернелерін басып тұрыңыз"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"Ашу үшін экранды үш рет түртіңіз"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"Экранды ашу үшін екі саусақпен үш рет түрту"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"Ашу үшін қол қимылын пайдалану"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"Арнайы мүмкіндік қимылын қолдану"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"Бұл функцияны пайдалану үшін экранның төменгі жағындағы арнайы мүмкіндіктер түймесін <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> түртіңіз.\n\nБір функциядан екінші функцияға ауысу үшін арнайы мүмкіндіктер түймесін басып тұрыңыз."</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"Бұл функцияны пайдалану үшін экрандағы арнайы мүмкіндіктер түймесін түртіңіз."</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"Бұл функцияны пайдалану үшін дыбыс деңгейі пернелерін басып тұрыңыз."</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"Ұлғайтуды бастау және тоқтату үшін экранның кез келген жерін үш рет түртіңіз."</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"Ұлғайту функциясын қосу және тоқтату үшін экранның кез келген жерін екі саусақпен үш рет түртіңіз."</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"Бұл функцияны пайдалану үшін экранның төменгі жағынан 2 саусағыңызбен жоғары сырғытыңыз.\n\nБір функциядан екіншісіне ауысу үшін 2 саусақпен жоғары қарай сырғытып, ұстап тұрыңыз."</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"Бұл функцияны пайдалану үшін экранның төменгі жағынан 3 саусағыңызбен жоғары сырғытыңыз.\n\nБір функциядан екіншісіне ауысу үшін 3 саусақпен жоғары қарай сырғытып, ұстап тұрыңыз."</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"Арнайы мүмкіндіктерді пайдалану үшін экранның төменгі жағынан 2 саусағыңызбен жоғары сырғытыңыз.\n\nБір функциядан екіншісіне ауысу үшін 2 саусақпен жоғары қарай сырғытып, ұстап тұрыңыз."</string>
@@ -2033,12 +2010,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"Дыбыс деңгейі пернелерін басып тұру"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"дыбыс деңгейі пернелерін басып тұру"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"Дыбыс деңгейінің екі пернесін бірге басып тұрасыз."</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"Экранды екі саусақпен үш рет түрту"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"экранды екі саусақпен үш рет түрту"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"Экранды екі саусағыңызбен {0,number,integer} рет жылдам түртіңіз."</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"Экранды үш рет түрту"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"экранды үш рет түрту"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"Экранды {0,number,integer} рет жылдам түртіңіз. Бұл жылдам пәрмен құрылғы жұмысын баяулатуы мүмкін."</string>
@@ -2336,6 +2310,10 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"Қолданбаның фондық режимдегі әрекетін шектесеңіз, күтпеген әрекет көрсетуі мүмкін."</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"Бұл қолданба батареяны оңтайландыруға реттелмегендіктен, оны шектей алмайсыз. \n\nБұл үшін батареяны оңтайландыруды қосыңыз."</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"Батарея шығынын қадағалау"</string>
+ <!-- no translation found for manager_battery_usage_allow_background_usage_title (6294649996820358852) -->
+ <skip />
+ <!-- no translation found for manager_battery_usage_allow_background_usage_summary (8021153755201340819) -->
+ <skip />
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"Шектелмеген"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"Оңтайландырылған"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"Шектелген"</string>
@@ -3846,6 +3824,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"Барлық файлды пайдалануға рұқсат беру"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"Қолданбаға осы құрылғыдағы немесе жалғанған сыртқы жад құрылғыларындағы барлық файлды оқуға, өзгертуге немесе жоюға рұқсат береді. Егер осы рұқсат берілсе, қолданба файлдарды сіздің келісіміңізсіз пайдалана алады."</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"Барлық файлды пайдалана алатын қолданбалар"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"Толық экран хабарландырулары"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"Осы қолданбаға толық экранды алып тұратын хабарландыруларды көрсетуге рұқсат беру"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"Құрылғы құлыптаулы тұрғанда, осы қолданбаға толық экранды алып тұратын хабарландыруларды көрсетуге рұқсат беріңіз. Соның арқасында қолданбалар оятқыштарды, кіріс қоңырауларын немесе шұғыл хабарландыруларды ерекшелей алады."</string>
diff --git a/res/values-km/strings.xml b/res/values-km/strings.xml
index 9479b69..61c2acc 100644
--- a/res/values-km/strings.xml
+++ b/res/values-km/strings.xml
@@ -135,8 +135,11 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"ប៊ិក"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"ការចែករំលែកសំឡេង"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"ចែករំលែកសំឡេង"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
- <skip />
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"ការហៅទូរសព្ទ និងម៉ោងរោទ៍"</string>
+ <string name="audio_sharing_streams_category_title" msgid="862958129650324581">"ភ្ជាប់ទៅកាន់ការចាក់សំឡេងលើអ៊ីនធឺណិត LE"</string>
+ <string name="audio_sharing_streams_pref_title" msgid="4636293245167657721">"ការចាក់សំឡេងលើអ៊ីនធឺណិតដែលនៅជិត"</string>
+ <string name="audio_sharing_streams_title" msgid="8269455097512153101">"ការចាក់សំឡេងលើអ៊ីនធឺណិត"</string>
+ <string name="audio_sharing_streams_qr_code_summary" msgid="4231875597377863735">"ភ្ជាប់ទៅកាន់ការចាក់សំឡេងលើអ៊ីនធឺណិតដោយប្រើប្រាស់កូដ QR"</string>
<string name="date_and_time" msgid="1788358029823431692">"កាលបរិច្ឆេទ និង ម៉ោង"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"ប្រូកស៊ី"</string>
<string name="proxy_clear_text" msgid="6529658759984031149">"សម្អាត"</string>
@@ -540,24 +543,15 @@
<string name="private_space_title" msgid="7078627930195569767">"បន្ទប់ឯកជន"</string>
<string name="private_space_summary" msgid="8237652417163408001">"លាក់កម្មវិធីនៅក្នុងថតឯកជន"</string>
<string name="private_space_one_lock_title" msgid="7306547190751832568">"ដោះសោដោយប្រើមុខងារចាក់សោអេក្រង់"</string>
- <!-- no translation found for private_space_hide_title (8687034008994037610) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_title (972581369094289386) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_summary (1052569521186403642) -->
- <skip />
- <!-- no translation found for privatespace_access_header (982809349769470185) -->
- <skip />
- <!-- no translation found for privatespace_search_description (983837656432484282) -->
- <skip />
- <!-- no translation found for privatespace_tap_tile_description (4146608898639668340) -->
- <skip />
- <!-- no translation found for privatespace_unlock_description (4132755357482447360) -->
- <skip />
- <!-- no translation found for privatespace_hide_off_summary (7227778747159633671) -->
- <skip />
- <!-- no translation found for privatespace_hide_on_summary (6136704537527640183) -->
- <skip />
+ <string name="private_space_hide_title" msgid="8687034008994037610">"លាក់នៅពេលជាប់សោ"</string>
+ <string name="privatespace_hide_page_title" msgid="972581369094289386">"លាក់ Private Space នៅពេលជាប់សោ"</string>
+ <string name="privatespace_hide_page_summary" msgid="1052569521186403642">"ដើម្បីបញ្ឈប់អ្នកដទៃមិនឱ្យដឹងថា Private Space ស្ថិតនៅលើឧបករណ៍របស់អ្នក អ្នកអាចលាក់វាបានពីបញ្ជីកម្មវិធីរបស់អ្នក"</string>
+ <string name="privatespace_access_header" msgid="982809349769470185">"ចូលប្រើ Private Space នៅពេលលាក់"</string>
+ <string name="privatespace_search_description" msgid="983837656432484282">"ស្វែងរក \'Private Space\' នៅក្នុងរបារស្វែងរក"</string>
+ <string name="privatespace_tap_tile_description" msgid="4146608898639668340">"ចុចប្រអប់ Private Space"</string>
+ <string name="privatespace_unlock_description" msgid="4132755357482447360">"ដោះសោ Private Space របស់អ្នក"</string>
+ <string name="privatespace_hide_off_summary" msgid="7227778747159633671">"បិទ"</string>
+ <string name="privatespace_hide_on_summary" msgid="6136704537527640183">"បើក"</string>
<string name="private_space_category_system" msgid="1286843321867285700">"ប្រព័ន្ធ"</string>
<string name="private_space_create_title" msgid="47273568884806726">"បង្កើតបន្ទប់ឯកជន"</string>
<string name="private_space_delete_title" msgid="3075645119800272800">"លុបបន្ទប់ឯកជន"</string>
@@ -570,54 +564,30 @@
<string name="no_device_lock_summary" msgid="7653477413589207824">"ដើម្បីប្រើបន្ទប់ឯកជន សូមកំណត់ការចាក់សោអេក្រង់នៅលើឧបករណ៍នេះ។"</string>
<string name="no_device_lock_action_label" msgid="2640487005629001288">"កំណត់ការចាក់សោអេក្រង់"</string>
<string name="no_device_lock_cancel" msgid="4412602160321228863">"បោះបង់"</string>
- <!-- no translation found for privatespace_cancel_label (362351004019511784) -->
- <skip />
- <!-- no translation found for privatespace_setup_button_label (3696372546231047258) -->
- <skip />
- <!-- no translation found for privatespace_setup_title (177623114624330394) -->
- <skip />
- <!-- no translation found for privatespace_hide_apps_summary (4016518749055602268) -->
- <skip />
- <!-- no translation found for privatespace_how_title (8794102046435526065) -->
- <skip />
- <!-- no translation found for privatespace_access_bottom_text (1075244097441349030) -->
- <skip />
- <!-- no translation found for privatespace_protected_lock_text (7320604832432017423) -->
- <skip />
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_cancel_label" msgid="362351004019511784">"បោះបង់"</string>
+ <string name="privatespace_setup_button_label" msgid="3696372546231047258">"រៀបចំ"</string>
+ <string name="privatespace_setup_title" msgid="177623114624330394">"រៀបចំ Private Space"</string>
+ <string name="privatespace_hide_apps_summary" msgid="4016518749055602268">"លាក់កម្មវិធីឯកជននៅក្នុងកន្លែងមានសុវត្ថិភាព ដែលអ្នកអាចចូលប្រើតែប៉ុណ្ណោះ"</string>
+ <string name="privatespace_how_title" msgid="8794102046435526065">"របៀបដែលវាដំណើរការ"</string>
+ <string name="privatespace_access_bottom_text" msgid="1075244097441349030">"អ្នកអាចចូលប្រើ Private Space ពីផ្នែកខាងក្រោមនៃបញ្ជីកម្មវិធីរបស់អ្នក"</string>
+ <string name="privatespace_protected_lock_text" msgid="7320604832432017423">"កម្មវិធីនៅក្នុង Private Space ត្រូវបានការពារដោយសោ"</string>
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"ការជូនដំណឹងពីកម្មវិធីនៅក្នុង Private Space ត្រូវបានលាក់ នៅពេលវាត្រូវបានចាក់សោ"</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"កម្មវិធីនៅក្នុង Private Space នឹងមិនបង្ហាញនៅក្នុងមុខងារគ្រប់គ្រងការអនុញ្ញាត ផ្ទាំងគ្រប់គ្រងឯកជនភាព និងការកំណត់ផ្សេងទៀតទេ នៅពេល Private Space ត្រូវបានចាក់សោ"</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"កំពុងរៀបចំ Private Space…"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"Private Space ត្រូវបានការពារដោយការចាក់សោ"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"ព័ត៌មានអំពីការប្រើប្រាស់សម្រាប់កម្មវិធីនៅក្នុង Private Space ត្រូវបានលាក់ នៅពេលវាត្រូវបានចាក់សោ"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"ចូលប្រើ Private Space ពីបញ្ជីកម្មវិធីរបស់អ្នក"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"មិនអាចរៀបចំ Private Space បានទេ"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"ព្យាយាមម្ដងទៀតឥឡូវនេះ ឬត្រឡប់មកវិញនៅពេលក្រោយ"</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"ព្យាយាមម្ដងទៀត"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"ប្រើការចាក់សោអេក្រង់ ដើម្បីដោះសោឬ?"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"អ្នកអាចដោះសោ Private Space តាមវិធីដូចគ្នាដែលអ្នកដោះសោឧបករណ៍របស់អ្នក ឬជ្រើសរើសការចាក់សោផ្សេង"</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"ប្រើការចាក់សោអេក្រង់"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"ជ្រើសរើសការចាក់សោថ្មី"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"រួចហើយ!"</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"ដើម្បីចូលប្រើ Private Space សូមអូសឡើងលើពីផ្នែកខាងក្រោមនៃអេក្រង់ដើមរបស់អ្នក បន្ទាប់មករំកិលចុះក្រោម"</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"រួចរាល់"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"រំកិលចុះក្រោម ដើម្បីចូលប្រើ Private Space"</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"អ្នកអាចបញ្ចូលស្នាមម្រាមដៃបានត្រឹម <xliff:g id="COUNT">%d</xliff:g>"</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"អ្នកបានបញ្ចូលស្នាមម្រាមដៃដល់ចំនួនអតិបរមាហើយ"</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"មិនអាចបញ្ចូលស្នាមម្រាមដៃបានទៀតទេ"</string>
@@ -1135,8 +1105,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"បន្តប្រើកម្មវិធីនៅពេលបត់"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"Smooth Display"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"បង្កើនអត្រាផ្ទុកឡើងវិញដោយស្វ័យប្រវត្តិរហូតដល់ <xliff:g id="ID_1">%1$d</xliff:g> Hz សម្រាប់ខ្លឹមសារមួយចំនួន។ ប្រើប្រាស់ថ្មច្រើនជាងមុន។"</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"បង្ខំឱ្យប្រើអត្រាផ្ទុកឡើងវិញអតិបរមា"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"អត្រាផ្ទុកឡើងវិញខ្ពស់បំផុតសម្រាប់គុណភាពនៃរូបមានចលនា និងការឆ្លើយតបនៃការចុចប្រសើរជាងមុន។ ប្រើប្រាស់ថ្មច្រើនជាងមុន។"</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"ការដឹងថាកំពុងនៅប្រើ"</string>
@@ -1372,6 +1341,7 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"ការកំណត់ទូទៅ"</string>
<string name="apn_settings" msgid="4295467389400441299">"APNs"</string>
<string name="apn_edit" msgid="2003683641840248741">"កែចំណុចចូលប្រើប្រាស់"</string>
+ <string name="apn_add" msgid="9069613192201630934">"បញ្ចូលដុំភ្ជាប់បណ្ដាញឥតខ្សែ"</string>
<string name="apn_not_set" msgid="8246646433109750293">"មិនបានកំណត់"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"មិនបានកំណត់"</string>
<string name="apn_name" msgid="6677695784108157953">"ឈ្មោះ"</string>
@@ -2006,12 +1976,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"ប្រើប៊ូតុងភាពងាយស្រួល ដើម្បីបើក"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"សង្កត់ប៊ូតុងកម្រិតសំឡេងឱ្យជាប់ ដើម្បីបើក"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"ចុចអេក្រង់បីដង ដើម្បីបើក"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"ចុចអេក្រង់បីដងដោយប្រើម្រាមដៃពីរដើម្បីបើក"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"ប្រើចលនា ដើម្បីបើក"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"ប្រើចលនាភាពងាយស្រួល"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"ដើម្បីប្រើមុខងារនេះ សូមចុចប៊ូតុងភាពងាយស្រួល <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> នៅផ្នែកខាងក្រោមនៃអេក្រង់របស់អ្នក។\n\nដើម្បីប្ដូររវាងមុខងារផ្សេងៗ សូមចុចប៊ូតុងភាពងាយស្រួលឱ្យជាប់។"</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"ដើម្បីប្រើមុខងារនេះ សូមចុចប៊ូតុងភាពងាយស្រួលនៅលើអេក្រង់របស់អ្នក។"</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"ដើម្បីប្រើមុខងារនេះ សូមចុចគ្រាប់ចុចកម្រិតសំឡេងទាំងពីរឱ្យជាប់។"</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"ដើម្បីចាប់ផ្ដើម និងបញ្ឈប់ការពង្រីក សូមចុចបីដងនៅកន្លែងណាមួយនៅលើអេក្រង់របស់អ្នក។"</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"ដើម្បីចាប់ផ្ដើម និងបញ្ឈប់ការពង្រីក សូមចុចបីដងនៅកន្លែងណាមួយនៅលើអេក្រង់របស់អ្នកដោយប្រើម្រាមដៃពីរ។"</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"ដើម្បីប្រើមុខងារនេះ សូមអូសឡើងលើពីផ្នែកខាងក្រោមនៃអេក្រង់ ដោយប្រើម្រាមដៃ 2។\n\nដើម្បីប្ដូររវាងមុខងារផ្សេងៗ សូមអូសឡើងលើ ដោយប្រើម្រាមដៃ 2 រួចសង្កត់ឱ្យជាប់។"</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"ដើម្បីប្រើមុខងារនេះ សូមអូសឡើងលើពីផ្នែកខាងក្រោមនៃអេក្រង់ ដោយប្រើម្រាមដៃ 3។\n\nដើម្បីប្ដូររវាងមុខងារផ្សេងៗ សូមអូសឡើងលើ ដោយប្រើម្រាមដៃ 3 រួចសង្កត់ឱ្យជាប់។"</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"ដើម្បីប្រើមុខងារភាពងាយប្រើ សូមអូសឡើងលើពីផ្នែកខាងក្រោមនៃអេក្រង់ ដោយប្រើម្រាមដៃ 2។\n\nដើម្បីប្ដូររវាងមុខងារផ្សេងៗ សូមអូសឡើងលើ ដោយប្រើម្រាមដៃ 2 រួចសង្កត់ឱ្យជាប់។"</string>
@@ -2033,12 +2005,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"សង្កត់គ្រាប់ចុចកម្រិតសំឡេងឱ្យជាប់"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"សង្កត់គ្រាប់ចុចកម្រិតសំឡេងឱ្យជាប់"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"ចុចគ្រាប់ចុចកម្រិតសំឡេងទាំងពីរឱ្យជាប់"</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"ការចុចអេក្រង់បីដងដោយប្រើម្រាមដៃពីរ"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"ការចុចអេក្រង់បីដងដោយប្រើម្រាមដៃពីរ"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"ចុចអេក្រង់យ៉ាងរហ័ស {0,number,integer} ដងដោយប្រើម្រាមដៃពីរ"</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"ចុចអេក្រង់បីដង"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"ចុចអេក្រង់បីដង"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"ចុចអេក្រង់ {0,number,integer} ដងឱ្យរហ័ស។ ផ្លូវកាត់នេះអាចធ្វើឱ្យឧបករណ៍របស់អ្នកដើរយឺត"</string>
@@ -2336,6 +2305,8 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"ប្រសិនបើអ្នកដាក់កម្រិតលើសកម្មភាពផ្ទៃខាងក្រោយសម្រាប់កម្មវិធី វាអាចនឹងដំណើរការខុសប្រក្រតី"</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"ដោយសារកម្មវិធីនេះមិនត្រូវបានកំណត់ ដើម្បីបង្កើនប្រសិទ្ធភាពថ្ម អ្នកមិនអាចដាក់កំហិតវាបានទេ។\n\nដើម្បីដាក់កំហិតកម្មវិធី សូមបើកការបង្កើនប្រសិទ្ធភាពថ្មជាមុនសិន។"</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"គ្រប់គ្រងការប្រើប្រាស់ថ្ម"</string>
+ <string name="manager_battery_usage_allow_background_usage_title" msgid="6294649996820358852">"អនុញ្ញាតឱ្យមានការប្រើប្រាស់នៅផ្ទៃខាងក្រោយ"</string>
+ <string name="manager_battery_usage_allow_background_usage_summary" msgid="8021153755201340819">"បើកដើម្បីទទួលបានព័ត៌មានថ្មីៗក្នុងពេលជាក់ស្ដែង បិទដើម្បីសន្សំសំចៃថ្ម"</string>
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"គ្មានការដាក់កំហិត"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"បង្កើនប្រសិទ្ធភាព"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"ដាក់កំហិត"</string>
@@ -3846,6 +3817,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"អនុញ្ញាតឱ្យចូលប្រើ ដើម្បីគ្រប់គ្រងឯកសារទាំងអស់"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"អនុញ្ញាតឱ្យកម្មវិធីនេះអាន កែសម្រួល និងលុបឯកសារទាំងអស់នៅលើឧបករណ៍នេះ ឬឧបករណ៍ផ្ទុកទាំងឡាយដែលបានភ្ជាប់។ ប្រសិនបើផ្ដល់ការអនុញ្ញាត កម្មវិធីនេះអាចចូលប្រើឯកសារ ដោយមិនឱ្យអ្នកដឹង។"</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"អាចចូលប្រើឯកសារទាំងអស់បាន"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"ការជូនដំណឹងពេញអេក្រង់"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"អនុញ្ញាតឱ្យមានការជូនដំណឹងពេញអេក្រង់ពីកម្មវិធីនេះ"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"អនុញ្ញាតឱ្យកម្មវិធីនេះបង្ហាញការជូនដំណឹងពេញអេក្រង់ នៅពេលឧបករណ៍ត្រូវបានចាក់សោ។ កម្មវិធីអាចប្រើការជូនដំណឹងទាំងនេះ ដើម្បីរំលេចម៉ោងរោទ៍ ការហៅចូល ឬការជូនដំណឹងបន្ទាន់ផ្សេងទៀត។"</string>
diff --git a/res/values-kn/strings.xml b/res/values-kn/strings.xml
index 5719ae5..d1673f9 100644
--- a/res/values-kn/strings.xml
+++ b/res/values-kn/strings.xml
@@ -135,8 +135,11 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"ಸ್ಟೈಲಸ್"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"ಆಡಿಯೋ ಹಂಚಿಕೊಳ್ಳುವಿಕೆ"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"ಆಡಿಯೋ ಹಂಚಿಕೊಳ್ಳಿ"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
- <skip />
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"ಕರೆಗಳು ಮತ್ತು ಅಲಾರಾಂಗಳು"</string>
+ <string name="audio_sharing_streams_category_title" msgid="862958129650324581">"LE ಆಡಿಯೊ ಸ್ಟ್ರೀಮ್ಗೆ ಕನೆಕ್ಟ್ ಮಾಡಿ"</string>
+ <string name="audio_sharing_streams_pref_title" msgid="4636293245167657721">"ಸಮೀಪದ ಆಡಿಯೊ ಸ್ಟ್ರೀಮ್"</string>
+ <string name="audio_sharing_streams_title" msgid="8269455097512153101">"ಆಡಿಯೊ ಸ್ಟ್ರೀಮ್ಗಳು"</string>
+ <string name="audio_sharing_streams_qr_code_summary" msgid="4231875597377863735">"QR ಕೋಡ್ ಬಳಸಿಕೊಂಡು ಆಡಿಯೊ ಸ್ಟ್ರೀಮ್ಗೆ ಕನೆಕ್ಟ್ ಮಾಡಿ"</string>
<string name="date_and_time" msgid="1788358029823431692">"ದಿನಾಂಕ ಮತ್ತು ಸಮಯ"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"ಪ್ರಾಕ್ಸಿ"</string>
<string name="proxy_clear_text" msgid="6529658759984031149">"ತೆರವುಗೊಳಿಸಿ"</string>
@@ -540,24 +543,15 @@
<string name="private_space_title" msgid="7078627930195569767">"ಖಾಸಗಿ ಸ್ಪೇಸ್"</string>
<string name="private_space_summary" msgid="8237652417163408001">"ಖಾಸಗಿ ಫೋಲ್ಡರ್ನಲ್ಲಿ ಆ್ಯಪ್ಗಳನ್ನು ಮರೆಮಾಡಿ"</string>
<string name="private_space_one_lock_title" msgid="7306547190751832568">"ಸ್ಕ್ರೀನ್ ಲಾಕ್ ಬಳಸಿಕೊಂಡು ಅನ್ಲಾಕ್ ಮಾಡಿ"</string>
- <!-- no translation found for private_space_hide_title (8687034008994037610) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_title (972581369094289386) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_summary (1052569521186403642) -->
- <skip />
- <!-- no translation found for privatespace_access_header (982809349769470185) -->
- <skip />
- <!-- no translation found for privatespace_search_description (983837656432484282) -->
- <skip />
- <!-- no translation found for privatespace_tap_tile_description (4146608898639668340) -->
- <skip />
- <!-- no translation found for privatespace_unlock_description (4132755357482447360) -->
- <skip />
- <!-- no translation found for privatespace_hide_off_summary (7227778747159633671) -->
- <skip />
- <!-- no translation found for privatespace_hide_on_summary (6136704537527640183) -->
- <skip />
+ <string name="private_space_hide_title" msgid="8687034008994037610">"ಲಾಕ್ ಆಗಿರುವಾಗ ಮರೆಮಾಡಿ"</string>
+ <string name="privatespace_hide_page_title" msgid="972581369094289386">"ಲಾಕ್ ಆಗಿರುವಾಗ ಖಾಸಗಿ ಸ್ಪೇಸ್ ಅನ್ನು ಮರೆಮಾಡಿ"</string>
+ <string name="privatespace_hide_page_summary" msgid="1052569521186403642">"ಸಾಧನದಲ್ಲಿ ಖಾಸಗಿ ಸ್ಪೇಸ್ ಬಗ್ಗೆ ಇತರರಿಗೆ ತಿಳಿಯದಂತೆ ಮಾಡಲು, ಆ್ಯಪ್ ಪಟ್ಟಿಯಿಂದ ಅದನ್ನು ಮರೆಮಾಡಬಹುದು"</string>
+ <string name="privatespace_access_header" msgid="982809349769470185">"ಮರೆಮಾಡಿರುವಾಗ ಖಾಸಗಿ ಸ್ಪೇಸ್ ಅನ್ನು ಆ್ಯಕ್ಸೆಸ್ ಮಾಡಿ"</string>
+ <string name="privatespace_search_description" msgid="983837656432484282">"ಹುಡುಕಾಟ ಪಟ್ಟಿಯಲ್ಲಿ \'ಖಾಸಗಿ ಸ್ಪೇಸ್\' ಗಾಗಿ ಹುಡುಕಿ"</string>
+ <string name="privatespace_tap_tile_description" msgid="4146608898639668340">"ಖಾಸಗಿ ಸ್ಪೇಸ್ ಟೈಲ್ ಅನ್ನು ಟ್ಯಾಪ್ ಮಾಡಿ"</string>
+ <string name="privatespace_unlock_description" msgid="4132755357482447360">"ನಿಮ್ಮ ಖಾಸಗಿ ಸ್ಪೇಸ್ ಅನ್ನು ಅನ್ಲಾಕ್ ಮಾಡಿ"</string>
+ <string name="privatespace_hide_off_summary" msgid="7227778747159633671">"ಆಫ್ ಆಗಿದೆ"</string>
+ <string name="privatespace_hide_on_summary" msgid="6136704537527640183">"ಆನ್ ಆಗಿದೆ"</string>
<string name="private_space_category_system" msgid="1286843321867285700">"ಸಿಸ್ಟಂ"</string>
<string name="private_space_create_title" msgid="47273568884806726">"ಖಾಸಗಿ ಸ್ಪೇಸ್ ಅನ್ನು ರಚಿಸಿ"</string>
<string name="private_space_delete_title" msgid="3075645119800272800">"ಖಾಸಗಿ ಸ್ಪೇಸ್ ಅನ್ನು ಅಳಿಸಿ"</string>
@@ -570,54 +564,30 @@
<string name="no_device_lock_summary" msgid="7653477413589207824">"ಖಾಸಗಿ ಸ್ಪೇಸ್ ಅನ್ನು ಬಳಸಲು ಈ ಸಾಧನದಲ್ಲಿ ಸ್ಕ್ರೀನ್ ಲಾಕ್ ಸೆಟ್ ಮಾಡಿ."</string>
<string name="no_device_lock_action_label" msgid="2640487005629001288">"ಸ್ಕ್ರೀನ್ ಲಾಕ್ ಸೆಟ್ ಮಾಡಿ"</string>
<string name="no_device_lock_cancel" msgid="4412602160321228863">"ರದ್ದುಗೊಳಿಸಿ"</string>
- <!-- no translation found for privatespace_cancel_label (362351004019511784) -->
- <skip />
- <!-- no translation found for privatespace_setup_button_label (3696372546231047258) -->
- <skip />
- <!-- no translation found for privatespace_setup_title (177623114624330394) -->
- <skip />
- <!-- no translation found for privatespace_hide_apps_summary (4016518749055602268) -->
- <skip />
- <!-- no translation found for privatespace_how_title (8794102046435526065) -->
- <skip />
- <!-- no translation found for privatespace_access_bottom_text (1075244097441349030) -->
- <skip />
- <!-- no translation found for privatespace_protected_lock_text (7320604832432017423) -->
- <skip />
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_cancel_label" msgid="362351004019511784">"ರದ್ದುಗೊಳಿಸಿ"</string>
+ <string name="privatespace_setup_button_label" msgid="3696372546231047258">"ಸೆಟಪ್ ಮಾಡಿ"</string>
+ <string name="privatespace_setup_title" msgid="177623114624330394">"ಖಾಸಗಿ ಸ್ಪೇಸ್ ಅನ್ನು ಸೆಟಪ್ ಮಾಡಿ"</string>
+ <string name="privatespace_hide_apps_summary" msgid="4016518749055602268">"ನೀವು ಮಾತ್ರ ಆ್ಯಕ್ಸೆಸ್ ಮಾಡಬಹುದಾದ ಸುರಕ್ಷಿತ ಸ್ಪೇಸ್ನಲ್ಲಿ ಖಾಸಗಿ ಆ್ಯಪ್ಗಳನ್ನು ಮರೆಮಾಡಿ"</string>
+ <string name="privatespace_how_title" msgid="8794102046435526065">"ಅದು ಹೇಗೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ"</string>
+ <string name="privatespace_access_bottom_text" msgid="1075244097441349030">"ನಿಮ್ಮ ಆ್ಯಪ್ಗಳ ಪಟ್ಟಿಯ ಕೆಳಗಿನಿಂದ ನೀವು ಖಾಸಗಿ ಸ್ಪೇಸ್ ಅನ್ನು ಆ್ಯಕ್ಸೆಸ್ ಮಾಡಬಹುದು"</string>
+ <string name="privatespace_protected_lock_text" msgid="7320604832432017423">"ಖಾಸಗಿ ಸ್ಪೇಸ್ನಲ್ಲಿರುವ ಆ್ಯಪ್ಗಳನ್ನು ಲಾಕ್ ಮೂಲಕ ಸಂರಕ್ಷಿಸಲಾಗಿದೆ"</string>
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"ಖಾಸಗಿ ಸ್ಪೇಸ್ ಲಾಕ್ ಆಗಿರುವಾಗ ಅದರಲ್ಲಿರುವ ಆ್ಯಪ್ಗಳ ನೋಟಿಫಿಕೇಶನ್ಗಳನ್ನು ಮರೆಮಾಡಲಾಗುತ್ತದೆ"</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"ಖಾಸಗಿ ಸ್ಪೇಸ್ ಲಾಕ್ ಆಗಿರುವಾಗ ಅನುಮತಿ ನಿರ್ವಾಹಕ, ಗೌಪ್ಯತೆ ಡ್ಯಾಶ್ಬೋರ್ಡ್ ಮತ್ತು ಇತರ ಸೆಟ್ಟಿಂಗ್ಗಳಲ್ಲಿ ಖಾಸಗಿ ಸ್ಪೇಸ್ ಆ್ಯಪ್ಗಳು ಗೋಚರಿಸುವುದಿಲ್ಲ"</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"ಖಾಸಗಿ ಸ್ಪೇಸ್ ಅನ್ನು ಸೆಟಪ್ ಮಾಡಲಾಗುತ್ತಿದೆ…"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"ಖಾಸಗಿ ಸ್ಪೇಸ್ ಅನ್ನು ಲಾಕ್ ಬಳಸಿ ರಕ್ಷಿಸಲಾಗಿದೆ"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"ಖಾಸಗಿ ಸ್ಪೇಸ್ ಆ್ಯಪ್ಗಳ ಬಳಕೆ ಮಾಹಿತಿಯು ಲಾಕ್ ಆಗಿರುವಾಗ ಅದನ್ನು ಮರೆಮಾಡಲಾಗುತ್ತದೆ"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"ನಿಮ್ಮ ಆ್ಯಪ್ಗಳ ಪಟ್ಟಿಯಿಂದ ಖಾಸಗಿ ಸ್ಪೇಸ್ ಅನ್ನು ಆ್ಯಕ್ಸೆಸ್ ಮಾಡಿ"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"ಖಾಸಗಿ ಸ್ಪೇಸ್ ಅನ್ನು ಸೆಟಪ್ ಮಾಡಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"ಈಗಲೇ ಪುನಃ ಪ್ರಯತ್ನಿಸಿ ಅಥವಾ ನಂತರ ಮರಳಿ ಬನ್ನಿ"</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"ಪುನಃ ಪ್ರಯತ್ನಿಸಿ"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"ಅನ್ಲಾಕ್ ಮಾಡಲು ಸ್ಕ್ರೀನ್ ಲಾಕ್ ಬಳಸಬೇಕೆ?"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"ನಿಮ್ಮ ಸಾಧನವನ್ನು ಅನ್ಲಾಕ್ ಮಾಡುವ ರೀತಿಯಲ್ಲಿಯೇ ನೀವು ಖಾಸಗಿ ಸ್ಪೇಸ್ ಅನ್ನು ಅನ್ಲಾಕ್ ಮಾಡಬಹುದು ಅಥವಾ ಬೇರೆ ಲಾಕ್ ಅನ್ನು ಆಯ್ಕೆ ಮಾಡಬಹುದು"</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"ಸ್ಕ್ರೀನ್ ಲಾಕ್ ಅನ್ನು ಬಳಸಿ"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"ಹೊಸ ಲಾಕ್ ಆಯ್ಕೆಮಾಡಿ"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"ಎಲ್ಲವೂ ಸಿದ್ಧವಾಗಿದೆ!"</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"ಖಾಸಗಿ ಸ್ಟೇಸ್ ಅನ್ನು ಆ್ಯಕ್ಸೆಸ್ ಮಾಡಲು, ನಿಮ್ಮ ಹೋಮ್ ಸ್ಕ್ರೀನ್ ಅನ್ನು ಕೆಳಗಿನಿಂದ ಮೇಲಕ್ಕೆ ಸ್ವೈಪ್ ಮಾಡಿ, ನಂತರ ಕೆಳಗೆ ಸ್ಕ್ರಾಲ್ ಮಾಡಿ"</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"ಮುಗಿದಿದೆ"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"ಖಾಸಗಿ ಸ್ಪೇಸ್ ಅನ್ನು ಆ್ಯಕ್ಸೆಸ್ ಮಾಡಲು ಕೆಳಗೆ ಸ್ಕ್ರಾಲ್ ಮಾಡಿ"</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"ನೀವು ಗರಿಷ್ಠ <xliff:g id="COUNT">%d</xliff:g> ಫಿಂಗರ್ಪ್ರಿಂಟ್ಗಳನ್ನು ಸೇರಿಸಬಹುದು"</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"ನೀವು ಗರಿಷ್ಠ ಸಂಖ್ಯೆಯ ಫಿಂಗರ್ ಪ್ರಿಂಟ್ಗಳನ್ನು ಸೇರಿಸಿರುವಿರಿ"</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"ಹೆಚ್ಚಿನ ಫಿಂಗರ್ ಪ್ರಿಂಟ್ಗಳನ್ನು ಸೇರಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ"</string>
@@ -1135,8 +1105,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"ಫೋಲ್ಡ್ ಮಾಡಿದ ನಂತರ ಆ್ಯಪ್ಗಳ ಬಳಕೆಯನ್ನು ಮುಂದುವರಿಸಿ"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"ಸ್ಮೂಥ್ ಡಿಸ್ಪ್ಲೇ"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"ಕೆಲವು ವಿಷಯಗಳಿಗೆ ರಿಫ್ರೆಶ್ ರೇಟ್ ಅನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ <xliff:g id="ID_1">%1$d</xliff:g> Hz ವರೆಗೆ ಹೆಚ್ಚಿಸುತ್ತದೆ. ಬ್ಯಾಟರಿ ಬಳಕೆಯನ್ನು ಹೆಚ್ಚಿಸುತ್ತದೆ."</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"ಗರಿಷ್ಠ ರಿಫ್ರೆಶ್ ರೇಟ್ ಅನ್ನು ಅನ್ವಯಿಸಿ"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"ಸುಧಾರಿತ ಸ್ಪರ್ಶ ಪ್ರತಿಕ್ರಿಯೆ ಮತ್ತು ಆ್ಯನಿಮೇಶನ್ ಗುಣಮಟ್ಟಗಳಿಗಾಗಿ ಅತ್ಯಧಿಕ ರಿಫ್ರೆಶ್ ರೇಟ್. ಬ್ಯಾಟರಿ ಬಳಕೆಯನ್ನು ಹೆಚ್ಚಿಸುತ್ತದೆ."</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"ಸ್ಕ್ರೀನ್ ಆನ್ ಆಗಿರುವಿಕೆ"</string>
@@ -1372,6 +1341,7 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"ಸಮುದಾಯದ ಸೆಟ್ಟಿಂಗ್ಗಳು"</string>
<string name="apn_settings" msgid="4295467389400441299">"APN ಗಳು"</string>
<string name="apn_edit" msgid="2003683641840248741">"ಆ್ಯಕ್ಸೆಸ್ ಪಾಯಿಂಟ್ ಎಡಿಟ್ ಮಾಡಿ"</string>
+ <string name="apn_add" msgid="9069613192201630934">"ಆ್ಯಕ್ಸೆಸ್ ಪಾಯಿಂಟ್ ಅನ್ನು ಸೇರಿಸಿ"</string>
<string name="apn_not_set" msgid="8246646433109750293">"ಹೊಂದಿಸಿಲ್ಲ"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"ಹೊಂದಿಸಲಾಗಿಲ್ಲ"</string>
<string name="apn_name" msgid="6677695784108157953">"ಹೆಸರು"</string>
@@ -2006,12 +1976,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"ತೆರೆಯಲು ಆ್ಯಕ್ಸೆಸಿಬಿಲಿಟಿ ಬಟನ್ ಬಳಸಿ"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"ತೆರೆಯಲು, ವಾಲ್ಯೂಮ್ ಕೀಗಳನ್ನು ಒತ್ತಿಹಿಡಿಯಿರಿ"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"ತೆರೆಯಲು, ಸ್ಕ್ರೀನ್ ಮೇಲೆ ಟ್ರಿಪಲ್-ಟ್ಯಾಪ್ ಮಾಡಿ"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"ತೆರೆಯಲು ಎರಡು-ಬೆರಳಿನಿಂದ ಟ್ರಿಪಲ್-ಟ್ಯಾಪ್ ಮಾಡಿ"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"ತೆರೆಯಲು ಗೆಸ್ಚರ್ ಬಳಸಿ"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"ಆ್ಯಕ್ಸೆಸ್ಸಿಬಿಲಿಟಿ ಗೆಸ್ಚರ್ ಅನ್ನು ಬಳಸಿ"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"ಈ ಫೀಚರ್ ಬಳಸಲು, ನಿಮ್ಮ ಸ್ಕ್ರೀನ್ನ ಕೆಳಭಾಗದಲ್ಲಿರುವ ಆ್ಯಕ್ಸೆಸಿಬಿಲಿಟಿ ಬಟನ್ <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> ಟ್ಯಾಪ್ ಮಾಡಿ.\n\nಫೀಚರ್ಗಳ ನಡುವೆ ಬದಲಾಯಿಸಲು, ಆ್ಯಕ್ಸೆಸಿಬಿಲಿಟಿ ಬಟನ್ ಅನ್ನು ಸ್ಪರ್ಶಿಸಿ ಮತ್ತು ಹೋಲ್ಡ್ ಮಾಡಿ."</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"ಈ ಫೀಚರ್ ಬಳಸಲು, ನಿಮ್ಮ ಸ್ಕ್ರೀನ್ ಮೇಲಿನ ಆ್ಯಕ್ಸೆಸಿಬಿಲಿಟಿ ಬಟನ್ ಟ್ಯಾಪ್ ಮಾಡಿ."</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"ಈ ಫೀಚರ್ ಬಳಸಲು, ಎರಡೂ ವಾಲ್ಯೂಮ್ ಕೀಗಳನ್ನು ಒತ್ತಿ ಹಿಡಿದುಕೊಳ್ಳಿ."</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"ಹಿಗ್ಗಿಸುವಿಕೆಯನ್ನು ಪ್ರಾರಂಭಿಸಲು ಮತ್ತು ನಿಲ್ಲಿಸಲು, ನಿಮ್ಮ ಪರದೆಯ ಮೇಲೆ ಎಲ್ಲಿಯಾದರೂ ಟ್ರಿಪಲ್-ಟ್ಯಾಪ್ ಮಾಡಿ."</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"ಹಿಗ್ಗಿಸುವಿಕೆ ಪ್ರಾರಂಭಿಸಲು & ನಿಲ್ಲಿಸಲು, ಎರಡು ಬೆರಳಿನಿಂದ ಸ್ಕ್ರೀನ್ ಮೇಲೆ ಎಲ್ಲಿಯಾದರೂ ಟ್ರಿಪಲ್-ಟ್ಯಾಪ್ ಮಾಡಿ."</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"ಈ ಫೀಚರ್ ಬಳಸಲು, 2 ಬೆರಳುಗಳನ್ನು ಬಳಸಿ ಸ್ಕ್ರೀನ್ ಕೆಳಭಾಗದಿಂದ ಮೇಲಕ್ಕೆ ಸ್ವೈಪ್ ಮಾಡಿ.\n\nವೈಶಿಷ್ಟ್ಯಗಳ ನಡುವೆ ಬದಲಿಸಲು, 2 ಬೆರಳುಗಳನ್ನು ಬಳಸಿ ಮೇಲಕ್ಕೆ ಸ್ವೈಪ್ ಮಾಡಿ ಮತ್ತು ಹೋಲ್ಡ್ ಮಾಡಿ."</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"ಈ ಫೀಚರ್ ಬಳಸಲು, 3 ಬೆರಳುಗಳನ್ನು ಬಳಸಿ ಸ್ಕ್ರೀನ್ ಕೆಳಭಾಗದಿಂದ ಮೇಲಕ್ಕೆ ಸ್ವೈಪ್ ಮಾಡಿ.\n\nವೈಶಿಷ್ಟ್ಯಗಳ ನಡುವೆ ಬದಲಿಸಲು, 3 ಬೆರಳುಗಳನ್ನು ಬಳಸಿ ಮೇಲಕ್ಕೆ ಸ್ವೈಪ್ ಮಾಡಿ ಮತ್ತು ಹೋಲ್ಡ್ ಮಾಡಿ."</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"ಆ್ಯಕ್ಸೆಸಿಬಿಲಿಟಿ ಫೀಚರ್ ಬಳಸಲು, 2 ಬೆರಳುಗಳನ್ನು ಬಳಸಿ ಸ್ಕ್ರೀನ್ ಕೆಳಭಾಗದಿಂದ ಮೇಲಕ್ಕೆ ಸ್ವೈಪ್ ಮಾಡಿ.\n\nವೈಶಿಷ್ಟ್ಯಗಳ ನಡುವೆ ಬದಲಿಸಲು, 2 ಬೆರಳುಗಳನ್ನು ಬಳಸಿ ಮೇಲಕ್ಕೆ ಸ್ವೈಪ್ ಮಾಡಿ ಮತ್ತು ಹೋಲ್ಡ್ ಮಾಡಿ."</string>
@@ -2033,12 +2005,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"ವಾಲ್ಯೂಮ್ ಕೀಗಳನ್ನು ಹಿಡಿದುಕೊಳ್ಳಿ"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"ವಾಲ್ಯೂಮ್ ಕೀಗಳನ್ನು ಹಿಡಿದುಕೊಳ್ಳಿ"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"ಎರಡೂ ವಾಲ್ಯೂಮ್ ಕೀಗಳನ್ನು ಒತ್ತಿ ಹಿಡಿದುಕೊಳ್ಳಿ"</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"ಎರಡು-ಬೆರಳಿನಿಂದ ಸ್ಕ್ರೀನ್ ಅನ್ನು ಟ್ರಿಪಲ್ ಟ್ಯಾಪ್ ಮಾಡಿ"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"ಎರಡು-ಬೆರಳಿನಿಂದ ಸ್ಕ್ರೀನ್ ಅನ್ನು ಟ್ರಿಪಲ್ ಟ್ಯಾಪ್ ಮಾಡಿ"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"ಎರಡು ಬೆರಳುಗಳಿಂದ ಸ್ಕ್ರೀನ್ ಅನ್ನು {0,number,integer} ಬಾರಿ ತ್ವರಿತವಾಗಿ ಟ್ಯಾಪ್ ಮಾಡಿ"</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"ಸ್ಕ್ರೀನ್ ಮೇಲೆ ಮೂರು ಬಾರಿ ಟ್ಯಾಪ್ ಮಾಡಿ"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"ಸ್ಕ್ರೀನ್ ಮೇಲೆ ಮೂರು ಬಾರಿ ಟ್ಯಾಪ್ ಮಾಡಿ"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"ಸ್ಕ್ರೀನ್ನ ಮೇಲೆ {0,number,integer} ಸಲ ತ್ವರಿತವಾಗಿ ಟ್ಯಾಪ್ ಮಾಡಿ. ಈ ಶಾರ್ಟ್ಕಟ್, ನಿಮ್ಮ ಸಾಧನವನ್ನು ನಿಧಾನಗೊಳಿಸಬಹುದು"</string>
@@ -2336,6 +2305,8 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"ಒಂದು ಅಪ್ಲಿಕೇಶನ್ನ ಹಿನ್ನೆಲೆ ಚಟುವಟಿಕೆಯನ್ನು ನೀವು ಸೀಮಿತಗೊಳಿಸಿದರೆ, ಅದು ಸರಿಯಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸದಿರಬಹುದು"</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"ಬ್ಯಾಟರಿ ಅನ್ನು ಆಪ್ಟಿಮೈಜ್ ಮಾಡಲು ಈ ಅಪ್ಲಿಕೇಶನ್ ಹೊಂದಿಸದ ಕಾರಣ, ನೀವು ಇದನ್ನು ನಿರ್ಬಂಧಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ.\n\n ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ನಿರ್ಬಂಧಿಸಲು, ಮೊದಲು ಬ್ಯಾಟರಿ ಆಪ್ಟಿಮೈಸೇಷನ್ ಅನ್ನು ಆನ್ ಮಾಡಿ."</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"ಬ್ಯಾಟರಿ ಬಳಕೆಯನ್ನು ನಿರ್ವಹಿಸಿ"</string>
+ <string name="manager_battery_usage_allow_background_usage_title" msgid="6294649996820358852">"ಹಿನ್ನೆಲೆ ಬಳಕೆಯನ್ನು ಅನುಮತಿಸಿ"</string>
+ <string name="manager_battery_usage_allow_background_usage_summary" msgid="8021153755201340819">"ನೈಜ-ಸಮಯದ ಅಪ್ಡೇಟ್ಗಳಿಗಾಗಿ ಸಕ್ರಿಯಗೊಳಿಸಿ, ಬ್ಯಾಟರಿ ಸೇವ್ ಮಾಡಲು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ"</string>
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"ಮಿತಿ ಇಲ್ಲದ್ದು"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"ಆಪ್ಟಿಮೈಸ್ ಮಾಡಲಾಗಿದೆ"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ"</string>
@@ -3846,6 +3817,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"ಎಲ್ಲಾ ಫೈಲ್ ನಿರ್ವಹಿಸಲು, ಪ್ರವೇಶಕ್ಕೆ ಅನುಮತಿಸಿ"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"ಈ ಸಾಧನ ಅಥವಾ ಕನೆಕ್ಟ್ ಮಾಡಿದ ಶೇಖರಣಾ ವಾಲ್ಯೂಮ್ಗಳಲ್ಲಿ ಎಲ್ಲಾ ಫೈಲ್ಗಳನ್ನು ಓದಲು, ಮಾರ್ಪಡಿಸಲು ಮತ್ತು ಅಳಿಸಲು ಈ ಆ್ಯಪ್ಗೆ ಅನುಮತಿಸಿ. ಅನುಮತಿಸಿದರೆ, ಬಳಕೆದಾರರ ಪೂರ್ವಾನುಮತಿ ಇಲ್ಲದೆ ಆ್ಯಪ್ಗಳು ಫೈಲ್ಗಳನ್ನು ಪ್ರವೇಶಿಸಬಹುದು."</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"ಎಲ್ಲಾ ಫೈಲ್ಗಳನ್ನು ಪ್ರವೇಶಿಸಬಹುದು"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"ಫುಲ್ ಸ್ಕ್ರೀನ್ ನೋಟಿಫಿಕೇಶನ್ಗಳು"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"ಈ ಆ್ಯಪ್ನಿಂದ ಫುಲ್ ಸ್ಕ್ರೀನ್ ನೋಟಿಫಿಕೇಶನ್ಗಳನ್ನು ಅನುಮತಿಸಿ"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"ಸಾಧನ ಲಾಕ್ ಆಗಿರುವಾಗ ಫುಲ್ ಸ್ಕ್ರೀನ್ ಅನ್ನು ಆವರಿಸಿಕೊಳ್ಳುವ ನೋಟಿಫಿಕೇಶನ್ಗಳನ್ನು ತೋರಿಸಲು ಈ ಆ್ಯಪ್ಗೆ ಅನುಮತಿಸಿ. ಅಲಾರಾಂಗಳು, ಒಳಬರುವ ಕರೆಗಳು ಅಥವಾ ಇತರ ತುರ್ತಿನ ನೋಟಿಫಿಕೇಶನ್ಗಳನ್ನು ಹೈಲೈಟ್ ಮಾಡಲು ಆ್ಯಪ್ಗಳು ಇವುಗಳನ್ನು ಬಳಸಬಹುದು."</string>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index 15391ba..c257468 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -135,7 +135,14 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"스타일러스"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"오디오 공유"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"오디오 공유"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"통화 및 알람"</string>
+ <!-- no translation found for audio_sharing_streams_category_title (862958129650324581) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_pref_title (4636293245167657721) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_title (8269455097512153101) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_qr_code_summary (4231875597377863735) -->
<skip />
<string name="date_and_time" msgid="1788358029823431692">"날짜 및 시간"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"프록시"</string>
@@ -540,24 +547,15 @@
<string name="private_space_title" msgid="7078627930195569767">"비공개 스페이스"</string>
<string name="private_space_summary" msgid="8237652417163408001">"비공개 폴더에 앱 숨기기"</string>
<string name="private_space_one_lock_title" msgid="7306547190751832568">"화면 잠금을 사용하여 잠금 해제"</string>
- <!-- no translation found for private_space_hide_title (8687034008994037610) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_title (972581369094289386) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_summary (1052569521186403642) -->
- <skip />
- <!-- no translation found for privatespace_access_header (982809349769470185) -->
- <skip />
- <!-- no translation found for privatespace_search_description (983837656432484282) -->
- <skip />
- <!-- no translation found for privatespace_tap_tile_description (4146608898639668340) -->
- <skip />
- <!-- no translation found for privatespace_unlock_description (4132755357482447360) -->
- <skip />
- <!-- no translation found for privatespace_hide_off_summary (7227778747159633671) -->
- <skip />
- <!-- no translation found for privatespace_hide_on_summary (6136704537527640183) -->
- <skip />
+ <string name="private_space_hide_title" msgid="8687034008994037610">"잠겨 있을 때 숨김"</string>
+ <string name="privatespace_hide_page_title" msgid="972581369094289386">"잠겨 있을 때 비공개 스페이스 숨기기"</string>
+ <string name="privatespace_hide_page_summary" msgid="1052569521186403642">"기기에 비공개 스페이스가 있다는 사실을 다른 사람이 알지 못하도록 앱 목록에서 숨길 수 있습니다."</string>
+ <string name="privatespace_access_header" msgid="982809349769470185">"숨겨져 있을 때 비공개 스페이스에 액세스"</string>
+ <string name="privatespace_search_description" msgid="983837656432484282">"검색창에서 \'비공개 스페이스\'를 검색합니다."</string>
+ <string name="privatespace_tap_tile_description" msgid="4146608898639668340">"비공개 스페이스 타일 탭"</string>
+ <string name="privatespace_unlock_description" msgid="4132755357482447360">"비공개 스페이스 잠금 해제"</string>
+ <string name="privatespace_hide_off_summary" msgid="7227778747159633671">"사용 안함"</string>
+ <string name="privatespace_hide_on_summary" msgid="6136704537527640183">"사용"</string>
<string name="private_space_category_system" msgid="1286843321867285700">"시스템"</string>
<string name="private_space_create_title" msgid="47273568884806726">"비공개 스페이스 만들기"</string>
<string name="private_space_delete_title" msgid="3075645119800272800">"비공개 스페이스 삭제"</string>
@@ -570,54 +568,30 @@
<string name="no_device_lock_summary" msgid="7653477413589207824">"비공개 스페이스를 사용하려면 이 기기에 화면 잠금을 설정하세요."</string>
<string name="no_device_lock_action_label" msgid="2640487005629001288">"화면 잠금 설정"</string>
<string name="no_device_lock_cancel" msgid="4412602160321228863">"취소"</string>
- <!-- no translation found for privatespace_cancel_label (362351004019511784) -->
- <skip />
- <!-- no translation found for privatespace_setup_button_label (3696372546231047258) -->
- <skip />
- <!-- no translation found for privatespace_setup_title (177623114624330394) -->
- <skip />
- <!-- no translation found for privatespace_hide_apps_summary (4016518749055602268) -->
- <skip />
- <!-- no translation found for privatespace_how_title (8794102046435526065) -->
- <skip />
- <!-- no translation found for privatespace_access_bottom_text (1075244097441349030) -->
- <skip />
- <!-- no translation found for privatespace_protected_lock_text (7320604832432017423) -->
- <skip />
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_cancel_label" msgid="362351004019511784">"취소"</string>
+ <string name="privatespace_setup_button_label" msgid="3696372546231047258">"설정"</string>
+ <string name="privatespace_setup_title" msgid="177623114624330394">"비공개 스페이스 설정"</string>
+ <string name="privatespace_hide_apps_summary" msgid="4016518749055602268">"나만 액세스할 수 있는 안전한 스페이스에 비공개 앱을 숨깁니다."</string>
+ <string name="privatespace_how_title" msgid="8794102046435526065">"작동 방식"</string>
+ <string name="privatespace_access_bottom_text" msgid="1075244097441349030">"앱 목록 하단에서 비공개 스페이스에 액세스할 수 있습니다."</string>
+ <string name="privatespace_protected_lock_text" msgid="7320604832432017423">"잠금을 통해 비공개 스페이스의 앱이 보호됩니다."</string>
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"잠겨 있을 때 비공개 스페이스의 앱에서 보내는 알림은 표시되지 않습니다."</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"비공개 스페이스가 잠겨 있을 때 비공개 스페이스 앱은 권한 관리자, 개인 정보 대시보드, 기타 설정에 표시되지 않습니다."</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"비공개 스페이스 설정 중…"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"비공개 스페이스는 잠금 기능으로 보호됨"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"잠긴 경우 비공개 스페이스 앱의 사용 정보가 숨겨짐"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"앱 목록에서 비공개 스페이스에 액세스"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"비공개 스페이스를 설정할 수 없음"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"지금 다시 시도하거나 나중에 다시 시도하세요."</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"다시 시도"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"화면 잠금을 사용하여 잠금 해제하시겠습니까?"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"기기를 잠금 해제하는 방식과 동일하게 비공개 스페이스를 잠금 해제하거나 다른 잠금 방식을 선택할 수 있습니다."</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"화면 잠금 사용"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"새 잠금 방식 선택"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"처리가 완료되었습니다"</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"비공개 스페이스에 액세스하려면 홈 화면 하단에서 위로 스와이프한 후 아래로 스크롤합니다."</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"완료"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"비공개 스페이스에 액세스하려면 아래로 스크롤하세요."</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"지문을 <xliff:g id="COUNT">%d</xliff:g>개까지 추가할 수 있습니다."</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"최대 개수의 지문을 추가했습니다."</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"지문을 추가할 수 없습니다."</string>
@@ -1135,8 +1109,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"접은 상태에서 앱 계속 사용"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"스무스 디스플레이"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"일부 콘텐츠의 화면 재생 빈도를 자동으로 최대 <xliff:g id="ID_1">%1$d</xliff:g>Hz까지 늘립니다. 배터리 사용량이 증가합니다."</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"가장 높은 새로고침 빈도 강제 적용"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"향상된 터치 반응 속도 및 애니메이션 품질에 맞는 가장 높은 새로고침 빈도입니다. 배터리 사용량이 증가합니다."</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"화면 시선 감지"</string>
@@ -1372,6 +1345,8 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"커뮤니티 설정"</string>
<string name="apn_settings" msgid="4295467389400441299">"APN"</string>
<string name="apn_edit" msgid="2003683641840248741">"액세스 포인트 수정"</string>
+ <!-- no translation found for apn_add (9069613192201630934) -->
+ <skip />
<string name="apn_not_set" msgid="8246646433109750293">"설정되지 않음"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"설정되지 않음"</string>
<string name="apn_name" msgid="6677695784108157953">"이름"</string>
@@ -2006,12 +1981,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"접근성 버튼을 사용하여 열기"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"볼륨 키를 길게 눌러 열기"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"화면을 세 번 탭하여 열기"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"두 손가락으로 화면을 세 번 탭하여 열기"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"동작을 사용해 열기"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"접근성 동작 사용"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"이 기능을 사용하려면 화면 하단의 접근성 버튼 <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g>을 탭하세요.\n\n기능 간에 전환하려면 접근성 버튼을 길게 터치하세요."</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"이 기능을 사용하려면 화면에서 접근성 버튼을 탭하세요."</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"이 기능을 사용하려면 볼륨 키 2개를 동시에 길게 누르세요."</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"확대를 시작 및 중지하려면 화면의 아무 곳이나 세 번 탭하세요."</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"확대를 시작 및 중지하려면 화면의 아무 곳이나 두 손가락으로 세 번 탭하세요."</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"이 기능을 사용하려면 두 손가락을 사용하여 화면 하단에서 위로 스와이프하세요.\n\n기능 간에 전환하려면 두 손가락을 사용하여 위로 스와이프한 후 잠시 기다립니다."</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"이 기능을 사용하려면 세 손가락을 사용하여 화면 하단에서 위로 스와이프하세요.\n\n기능 간에 전환하려면 세 손가락을 사용하여 위로 스와이프한 후 잠시 기다립니다."</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"접근성 기능을 사용하려면 두 손가락을 사용하여 화면 하단에서 위로 스와이프하세요.\n\n기능 간에 전환하려면 두 손가락을 사용하여 위로 스와이프한 후 잠시 기다립니다."</string>
@@ -2033,12 +2010,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"볼륨 키 길게 누르기"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"볼륨 키 길게 누르기"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"볼륨 키 2개를 길게 누릅니다."</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"두 손가락으로 화면 세 번 탭하기"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"두 손가락으로 화면 세 번 탭하기"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"두 손가락으로 화면을 {0, 숫자, 정수}번 빠르게 탭하세요."</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"세 번 탭하기"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"화면 세 번 탭하기"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"화면을 {0,number,integer}번 빠르게 탭합니다. 이 바로가기를 사용하면 기기가 느려질 수 있습니다."</string>
@@ -2336,6 +2310,10 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"앱의 백그라운드 활동을 제한하면 앱이 정상적으로 작동하지 않을 수도 있습니다."</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"배터리 최적화를 설정하지 않아 이 앱을 제한할 수 없습니다.\n\n앱을 제한하려면 먼저 배터리 최적화를 사용 설정하세요."</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"배터리 사용량 관리"</string>
+ <!-- no translation found for manager_battery_usage_allow_background_usage_title (6294649996820358852) -->
+ <skip />
+ <!-- no translation found for manager_battery_usage_allow_background_usage_summary (8021153755201340819) -->
+ <skip />
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"제한 없음"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"최적화"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"제한됨"</string>
@@ -3846,6 +3824,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"모든 파일 관리 허용"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"앱이 이 기기 또는 연결된 모든 저장장치에 있는 파일을 모두 읽고 수정하고 삭제하도록 허용합니다. 권한을 부여하면 앱이 나에게 명시적으로 알리지 않고도 파일에 액세스할 수 있습니다."</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"모든 파일에 액세스 가능"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"전체 화면 알림"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"이 앱에 전체 화면 알림 허용하기"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"기기가 잠겨 있을 때 앱에서 알림을 전체 화면에 표시할 수 있도록 허용합니다. 앱에서는 이러한 방식으로 알람, 수신 전화 또는 기타 긴급 알림을 강조 표시할 수 있습니다."</string>
diff --git a/res/values-ky/strings.xml b/res/values-ky/strings.xml
index 79a42e5..12e0027 100644
--- a/res/values-ky/strings.xml
+++ b/res/values-ky/strings.xml
@@ -135,7 +135,14 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"Стилус"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"Аудиону бөлүшүү"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"Аудиону бөлүшүү"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"Чалуулар жана ойготкучтар"</string>
+ <!-- no translation found for audio_sharing_streams_category_title (862958129650324581) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_pref_title (4636293245167657721) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_title (8269455097512153101) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_qr_code_summary (4231875597377863735) -->
<skip />
<string name="date_and_time" msgid="1788358029823431692">"Күн жана убакыт"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"Прокси"</string>
@@ -568,40 +575,23 @@
<string name="privatespace_how_title" msgid="8794102046435526065">"Ал кантип иштейт"</string>
<string name="privatespace_access_bottom_text" msgid="1075244097441349030">"Жеке чөйрөнү колдонмолордун тизмесинин ылдый жагынан көрө аласыз"</string>
<string name="privatespace_protected_lock_text" msgid="7320604832432017423">"Жеке чөйрөдөгү колдонмолор кулпу менен корголот"</string>
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"Жеке чөйрөдөгү колдонмолордун билдирмелери ал кулпуланганда жашырылат"</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"Жеке чөйрө кулпуланган учурда андагы колдонмолор уруксаттарда, купуялык тактасында жана башка параметрлерде көрүнбөйт"</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"Жеке чөйрө туураланууда…"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"Жеке чөйрө кулпу менен корголот"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"Жеке чөйрө кулпуланганда, андагы колдонмолордун колдонулушу тууралуу маалымат жашырылат"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"Колдонмолоруңуздун тизмесинен Жеке чөйрөнү ачыңыз"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"Жеке чөйрө туураланган жок"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"Азыр кайталап көрүңүз же кийинчерээк кайтып келиңиз"</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"Кайталоо"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"Экран кулпусун колдоносузбу?"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"Жеке чөйрө үчүн түзмөгүңүздүн кулпусун ачуу ыкмасын колдонуп же башка кулпуну тандай аласыз"</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"Экран кулпусун колдонуу"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"Жаңы кулпуну тандоо"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"Дапдаяр!"</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"Жеке чөйрөнү ачуу үчүн башкы экранды ылдыйдан өйдө карай сүрүп, баракты ылдый сыдырыңыз"</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"Бүттү"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"Жеке чөйрөнү ачуу үчүн баракты ылдый сыдырыңыз"</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"<xliff:g id="COUNT">%d</xliff:g> чейин манжа изин кошсоңуз болот"</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"Кошулган манжа издеринин саны жогорку чегине жетти"</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"Дагы манжа издерин кошуу мүмкүн эмес"</string>
@@ -1119,8 +1109,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"Түзмөк бүктөлгөндө колдонмолорду пайдалана берүү"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"Smooth Display"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"Айрым материалдар үчүн экрандын жаңыруу жыштыгы автоматтык түрдө <xliff:g id="ID_1">%1$d</xliff:g> Герцке көтөрүлөт. Батареяны көбүрөөк керектейт."</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"Экрандын жаңыруу жыштыгын жогорулатуу"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"Сенсордун функциясын жана анимациянын сапатын жакшыртуу үчүн жаңыртуу ылдамдыгы жогорулатылды. Батареянын колдонулушун жогорулатат."</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"Ыңгайлашуучу көшүү режими"</string>
@@ -1356,6 +1345,8 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"Жалпы параметрлер"</string>
<string name="apn_settings" msgid="4295467389400441299">"APN\'дер"</string>
<string name="apn_edit" msgid="2003683641840248741">"Байланыш түйүнүн өзгөртүү"</string>
+ <!-- no translation found for apn_add (9069613192201630934) -->
+ <skip />
<string name="apn_not_set" msgid="8246646433109750293">"Коюлган эмес"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"Коюлган эмес"</string>
<string name="apn_name" msgid="6677695784108157953">"Аталышы"</string>
@@ -1990,12 +1981,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"Атайын мүмкүнчүлүктөр баскычын басыңыз"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"Ачуу үчүн үн баскычтарын коё бербей басып туруңуз"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"Ачуу үчүн экранды үч жолу таптаңыз"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"Ачуу үчүн экранды эки манжаңыз менен үч жолу таптаңыз"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"Ачуу үчүн жаңсаңыз"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"Атайын мүмкүнчүлүктөр жаңсоосун колдонуу"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"Бул функцияны колдонуу үчүн экрандын ылдый жагындагы атайын мүмкүнчүлүктөр баскычын <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> таптап коюңуз.\n\nБашка функцияга өтүү үчүн Атайын мүмкүнчүлүктөр баскычын басып, кармап туруңуз."</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"Бул функцияны колдонуу үчүн экрандагы атайын мүмкүнчүлүктөр баскычын басыңыз."</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"Бул функцияны колдонуу үчүн үндү катуулатуу/акырындатуу баскычтарын коё бербей басып туруңуз."</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"Чоңойтуп/кичирейтүүнү иштетүү же өчүрүү үчүн экраныңыздын каалаган жерин үч жолу таптаңыз."</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"Чоңойтууну иштетүү же өчүрүү үчүн экраныңыздын каалаган жерин эки манжаңыз менен үч жолу таптаңыз."</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"Бул функцияны колдонуу үчүн экранды 2 манжаңыз менен ылдый жагынан өйдө сүрүңүз.\n\nБашка функцияга өтүү үчүн 2 манжаңыз менен өйдө сүрүп, кармап туруңуз."</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"Бул функцияны колдонуу үчүн экранды 3 манжаңыз менен ылдый жагынан өйдө сүрүңүз.\n\nБашка функцияга өтүү үчүн 3 манжаңыз менен өйдө сүрүп, кармап туруңуз."</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"Бул атайын мүмкүнчүлүктөр функциясын колдонуу үчүн экранды 2 манжаңыз менен ылдый жагынан өйдө сүрүңүз.\n\nБашка функцияга өтүү үчүн 2 манжаңыз менен өйдө сүрүп, кармап туруңуз."</string>
@@ -2017,12 +2010,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"Үндү катуулатуу/акырындатуу баскычтарын басуу"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"үн баскычтарын басып туруу"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"Үндү катуулатуу/акырындатуу баскычтарын коё бербей басып туруңуз"</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"Экранды эки манжа менен үч жолу таптоо"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"экранды эки манжа менен үч жолу таптоо"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"Экранды эки манжаңыз менен {0,number,integer} жолу тез таптаңыз"</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"Экранды үч жолу басуу"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"экранды үч жолу таптоо"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"Экранды {0,number,integer} жолу тез басыңыз. Бул ыкчам баскыч түзмөгүңүздү жайлатышы мүмкүн"</string>
@@ -2320,6 +2310,10 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"Колдонмонун фондогу аракеттери чектелсе, ал туура эмес иштеп калышы мүмкүн"</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"Бул колдонмодо батареянын үнөмдөлүшү жөндөлбөгөндүктөн, аны чектөөгө болбойт.\n\nКолдонмону чектөө үчүн, адегенде Батареяны үнөмдөө режимин күйгүзүңүз."</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"Батареянын колдонулушун тескөө"</string>
+ <!-- no translation found for manager_battery_usage_allow_background_usage_title (6294649996820358852) -->
+ <skip />
+ <!-- no translation found for manager_battery_usage_allow_background_usage_summary (8021153755201340819) -->
+ <skip />
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"Чектелбейт"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"Оптималдаштырылган"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"Чектелген"</string>
@@ -3830,6 +3824,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"Бардык файлдарды башкарууга уруксат берүү"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"Бул колдонмого түзмөктөгү жана башка байланышкан сактагычтардагы бардык файлдарды көрүп, өзгөртүп жана өчүрүүгө уруксат бересизби? Колдонмо файлдарды сизге айтпай пайдалана алат."</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"Бардык файлдарга мүмкүнчүлүк бар"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"Толук экрандагы билдирмелер"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"Бул колдонмого толук экрандагы билдирмелерди көрсөтүүгө уруксат берүү"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"Бул колдонмого түзмөк кулпуланып турганда толук экрандагы билдирмелерди көрсөтүүгө уруксат бериңиз. Колдонмолор муну ойготкучтарды, кирүүчү чалууларды же башка шашылыш билдирмелерди көрсөтүү үчүн колдонушат."</string>
diff --git a/res/values-lo/strings.xml b/res/values-lo/strings.xml
index 86444bf..28e4ec4 100644
--- a/res/values-lo/strings.xml
+++ b/res/values-lo/strings.xml
@@ -135,7 +135,14 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"ປາກກາ"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"ການແບ່ງປັນສຽງ"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"ແບ່ງປັນສຽງ"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"ການໂທ ແລະ ແຈ້ງປຸກ"</string>
+ <!-- no translation found for audio_sharing_streams_category_title (862958129650324581) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_pref_title (4636293245167657721) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_title (8269455097512153101) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_qr_code_summary (4231875597377863735) -->
<skip />
<string name="date_and_time" msgid="1788358029823431692">"ວັນທີ ແລະ ເວລາ"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"ພຣັອກຊີ"</string>
@@ -540,24 +547,15 @@
<string name="private_space_title" msgid="7078627930195569767">"ພື້ນທີ່ສ່ວນຕົວ"</string>
<string name="private_space_summary" msgid="8237652417163408001">"ເຊື່ອງແອັບໄວ້ໃນໂຟນເດີສ່ວນຕົວ"</string>
<string name="private_space_one_lock_title" msgid="7306547190751832568">"ປົດລັອກໂດຍໃຊ້ການລັອກໜ້າຈໍ"</string>
- <!-- no translation found for private_space_hide_title (8687034008994037610) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_title (972581369094289386) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_summary (1052569521186403642) -->
- <skip />
- <!-- no translation found for privatespace_access_header (982809349769470185) -->
- <skip />
- <!-- no translation found for privatespace_search_description (983837656432484282) -->
- <skip />
- <!-- no translation found for privatespace_tap_tile_description (4146608898639668340) -->
- <skip />
- <!-- no translation found for privatespace_unlock_description (4132755357482447360) -->
- <skip />
- <!-- no translation found for privatespace_hide_off_summary (7227778747159633671) -->
- <skip />
- <!-- no translation found for privatespace_hide_on_summary (6136704537527640183) -->
- <skip />
+ <string name="private_space_hide_title" msgid="8687034008994037610">"ເຊື່ອງເມື່ອລັອກໄວ້"</string>
+ <string name="privatespace_hide_page_title" msgid="972581369094289386">"ເຊື່ອງພື້ນທີ່ສ່ວນຕົວເມື່ອລັອກໄວ້"</string>
+ <string name="privatespace_hide_page_summary" msgid="1052569521186403642">"ເພື່ອບໍ່ໃຫ້ຄົນອື່ນຮູ້ວ່າພື້ນທີ່ສ່ວນຕົວຢູ່ໃນອຸປະກອນຂອງທ່ານ, ທ່ານສາມາດເຊື່ອງມັນຈາກລາຍຊື່ແອັບຂອງທ່ານໄດ້"</string>
+ <string name="privatespace_access_header" msgid="982809349769470185">"ເຂົ້າເຖິງພື້ນທີ່ສ່ວນຕົວເມື່ອເຊື່ອງໄວ້"</string>
+ <string name="privatespace_search_description" msgid="983837656432484282">"ຊອກຫາ \'ພື້ນທີ່ສ່ວນຕົວ\' ໃນແຖບຊອກຫາ"</string>
+ <string name="privatespace_tap_tile_description" msgid="4146608898639668340">"ແຕະແຜ່ນພື້ນທີ່ສ່ວນຕົວ"</string>
+ <string name="privatespace_unlock_description" msgid="4132755357482447360">"ປົດລັອກພື້ນທີ່ສ່ວນຕົວຂອງທ່ານ"</string>
+ <string name="privatespace_hide_off_summary" msgid="7227778747159633671">"ປິດຢູ່"</string>
+ <string name="privatespace_hide_on_summary" msgid="6136704537527640183">"ເປີດຢູ່"</string>
<string name="private_space_category_system" msgid="1286843321867285700">"ລະບົບ"</string>
<string name="private_space_create_title" msgid="47273568884806726">"ສ້າງພື້ນທີ່ສ່ວນຕົວ"</string>
<string name="private_space_delete_title" msgid="3075645119800272800">"ລຶບພື້ນທີ່ສ່ວນຕົວອອກ"</string>
@@ -570,54 +568,30 @@
<string name="no_device_lock_summary" msgid="7653477413589207824">"ຕັ້ງການລັອກໜ້າຈໍຢູ່ອຸປະກອນນີ້ເພື່ອໃຊ້ພື້ນທີ່ສ່ວນຕົວ."</string>
<string name="no_device_lock_action_label" msgid="2640487005629001288">"ຕັ້ງການລັອກໜ້າຈໍ"</string>
<string name="no_device_lock_cancel" msgid="4412602160321228863">"ຍົກເລີກ"</string>
- <!-- no translation found for privatespace_cancel_label (362351004019511784) -->
- <skip />
- <!-- no translation found for privatespace_setup_button_label (3696372546231047258) -->
- <skip />
- <!-- no translation found for privatespace_setup_title (177623114624330394) -->
- <skip />
- <!-- no translation found for privatespace_hide_apps_summary (4016518749055602268) -->
- <skip />
- <!-- no translation found for privatespace_how_title (8794102046435526065) -->
- <skip />
- <!-- no translation found for privatespace_access_bottom_text (1075244097441349030) -->
- <skip />
- <!-- no translation found for privatespace_protected_lock_text (7320604832432017423) -->
- <skip />
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_cancel_label" msgid="362351004019511784">"ຍົກເລີກ"</string>
+ <string name="privatespace_setup_button_label" msgid="3696372546231047258">"ຕັ້ງຄ່າ"</string>
+ <string name="privatespace_setup_title" msgid="177623114624330394">"ຕັ້ງຄ່າພື້ນທີ່ສ່ວນຕົວ"</string>
+ <string name="privatespace_hide_apps_summary" msgid="4016518749055602268">"ເຊື່ອງແອັບສ່ວນຕົວໃນພື້ນທີ່ປອດໄພທີ່ມີແຕ່ທ່ານເທົ່ານັ້ນທີ່ສາມາດເຂົ້າເຖິງໄດ້"</string>
+ <string name="privatespace_how_title" msgid="8794102046435526065">"ມັນເຮັດວຽກແນວໃດ"</string>
+ <string name="privatespace_access_bottom_text" msgid="1075244097441349030">"ທ່ານສາມາດເຂົ້າເຖິງພື້ນທີ່ສ່ວນຕົວໄດ້ຈາກລຸ່ມສຸດຂອງລາຍຊື່ແອັບຂອງທ່ານ"</string>
+ <string name="privatespace_protected_lock_text" msgid="7320604832432017423">"ແອັບໃນພື້ນທີ່ສ່ວນຕົວໄດ້ຮັບການປົກປ້ອງໂດຍການລັອກ"</string>
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"ການແຈ້ງເຕືອນຈາກແອັບໃນພື້ນທີ່ສ່ວນຕົວຈະຖືກເຊື່ອງໄວ້ເມື່ອມັນຖືກລັອກໄວ້"</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"ແອັບພື້ນທີ່ສ່ວນຕົວຈະບໍ່ປາກົດໃນຕົວຈັດການສິດອະນຸຍາດ, ແຜງໜ້າປັດຄວາມເປັນສ່ວນຕົວ ແລະ ການຕັ້ງຄ່າອື່ນໆເມື່ອພື້ນທີ່ສ່ວນຕົວຖືກລັອກໄວ້"</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"ກຳລັງຕັ້ງຄ່າພື້ນທີ່ສ່ວນຕົວ…"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"ພື້ນທີ່ສ່ວນຕົວຖືກປົກປ້ອງໂດຍລັອກ"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"ຂໍ້ມູນການນຳໃຊ້ສຳລັບແອັບພື້ນທີ່ສ່ວນຕົວຖືກເຊື່ອງໄວ້ເມື່ອມັນຖືກລັອກໄວ້"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"ເຂົ້າເຖິງພື້ນທີ່ສ່ວນຕົວຈາກລາຍຊື່ແອັບຂອງທ່ານ"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"ບໍ່ສາມາດຕັ້ງຄ່າພື້ນທີ່ສ່ວນຕົວໄດ້"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"ລອງຕອນນີ້ ຫຼື ກັບຄືນມາພາຍຫຼັງ"</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"ລອງໃໝ່"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"ໃຊ້ການລັອກໜ້າຈໍເພື່ອປົດລັອກບໍ?"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"ທ່ານສາມາດປົດລັອກພື້ນທີ່ສ່ວນຕົວດ້ວຍວິທີດຽວກັນກັບທີ່ທ່ານປົດລັອກອຸປະກອນຂອງທ່ານ ຫຼື ເລືອກລັອກອື່ນໄດ້"</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"ໃຊ້ການລັອກໜ້າຈໍ"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"ເລືອກລັອກໃໝ່"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"ຮຽບຮ້ອຍໝົດແລ້ວ!"</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"ເພື່ອເຂົ້າເຖິງພື້ນທີ່ສ່ວນຕົວ, ໃຫ້ປັດຂຶ້ນຈາກລຸ່ມສຸດຂອງໂຮມສະກຣີນຂອງທ່ານ, ຈາກນັ້ນເລື່ອນລົງ"</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"ແລ້ວໆ"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"ເລື່ອນລົງເພື່ອເຂົ້າເຖິງພື້ນທີ່ສ່ວນຕົວ"</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"ທ່ານສາມາດເພີ່ມບໍ່ເກີນ <xliff:g id="COUNT">%d</xliff:g> ລາຍນີ້ວມື"</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"You’ve added the maximum number of fingerprints"</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"Can’t add more fingerprints"</string>
@@ -1135,8 +1109,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"ສືບຕໍ່ໃຊ້ແອັບເມື່ອພັບຢູ່"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"Smooth Display"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"ເພີ່ມອັດຕາການຣີເຟຣຊສູງສຸດເຖິງ <xliff:g id="ID_1">%1$d</xliff:g> Hz ສຳລັບບາງເນື້ອຫາໂດຍອັດຕະໂນມັດ. ຈະໃຊ້ແບັດເຕີຣີຫຼາຍຂຶ້ນ."</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"ບັງຄັບອັດຕາຣີເຟຣຊສູງສຸດ"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"ອັດຕາຣີເຟຣດສູງສຸດເພື່ອປັບປຸງການຕອບສະໜອງການສຳຜັດ ແລະ ຄຸນນະພາບອະນິເມຊັນ. ເພີ່ມການນຳໃຊ້ແບັດເຕີຣີ."</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"ການເອົາໃຈໃສ່ໜ້າຈໍ"</string>
@@ -1372,6 +1345,8 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"ການຕັ້ງຄ່າສ່ວນກາງ"</string>
<string name="apn_settings" msgid="4295467389400441299">"APNs"</string>
<string name="apn_edit" msgid="2003683641840248741">"ແກ້ໄຂຈຸດການເຊື່ອມຕໍ່"</string>
+ <!-- no translation found for apn_add (9069613192201630934) -->
+ <skip />
<string name="apn_not_set" msgid="8246646433109750293">"ຍັງບໍ່ໄດ້ຕັ້ງ"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"ຍັງບໍ່ໄດ້ຕັ້ງ"</string>
<string name="apn_name" msgid="6677695784108157953">"ຊື່"</string>
@@ -2006,12 +1981,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"ໃຊ້ປຸ່ມການຊ່ວຍເຂົ້າເຖິງເພື່ອເປີດ"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"ກົດປຸ່ມລະດັບສຽງຄ້າງໄວ້ເພື່ອເປີດ"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"ແຕະໜ້າຈໍສາມເທື່ອເພື່ອເປີດ"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"ແຕະໜ້າຈໍສາມເທື່ອດ້ວຍສອງນິ້ວເພື່ອເປີດ"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"ໃຊ້ທ່າທາງເພື່ອເປີດ"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"ໃຊ້ທ່າທາງການຊ່ວຍເຂົ້າເຖິງ"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"ເພື່ອໃຊ້ຄຸນສົມບັດນີ້, ໃຫ້ແຕະໃສ່ປຸ່ມການຊ່ວຍເຂົ້າເຖິງ <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> ຢູ່ລຸ່ມສຸດຂອງໜ້າຈໍທ່ານ.\n\nເພື່ອສະຫຼັບລະຫວ່າງຄຸນສົມບັດ, ໃຫ້ແຕະໃສ່ປຸ່ມການຊ່ວຍເຂົ້າເຖິງຄ້າງໄວ້."</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"ເພື່ອໃຊ້ຄຸນສົມບັດນີ້, ໃຫ້ແຕະປຸ່ມການຊ່ວຍເຂົ້າເຖິງຢູ່ໜ້າຈໍທ່ານ."</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"ເພື່ອໃຊ້ຄຸນສົມບັດນີ້, ໃຫ້ກົດປຸ່ມລະດັບສຽງທັງສອງຄ້າງໄວ້."</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"ເພື່ອເລີ່ມ ແລະ ຢຸດການຂະຫຍາຍຂອງທ່ານ, ໃຫ້ແຕະສາມເທື່ອໃສ່ບ່ອນໃດກໍໄດ້ຢູ່ໜ້າຈໍທ່ານ."</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"ເພື່ອເລີ່ມຕົ້ນ ແລະ ຢຸດການຂະຫຍາຍ, ໃຫ້ແຕະສາມເທື່ອບ່ອນໃດກໍໄດ້ຢູ່ໜ້າຈໍຂອງທ່ານດ້ວຍສອງນິ້ວ."</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"ເພື່ອໃຊ້ຄຸນສົມບັດນີ້, ໃຫ້ປັດຂຶ້ນຈາກລຸ່ມສຸດຂອງໜ້າຈໍດ້ວຍ 2 ນິ້ວ.\n\nເພື່ອສະຫຼັບລະຫວ່າງຄຸນສົມບັດ, ໃຫ້ປັດຂຶ້ນດ້ວຍ 2 ນິ້ວຄ້າງໄວ້."</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"ເພື່ອໃຊ້ຄຸນສົມບັດນີ້, ໃຫ້ປັດຂຶ້ນຈາກລຸ່ມສຸດຂອງໜ້າຈໍດ້ວຍ 3 ນິ້ວ.\n\nເພື່ອສະຫຼັບລະຫວ່າງຄຸນສົມບັດ, ໃຫ້ປັດຂຶ້ນດ້ວຍ 3 ນິ້ວຄ້າງໄວ້."</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"ເພື່ອໃຊ້ຄຸນສົມບັດການຊ່ວຍເຂົ້າເຖິງ, ໃຫ້ປັດຂຶ້ນຈາກລຸ່ມສຸດຂອງໜ້າຈໍດ້ວຍ 2 ນິ້ວ.\n\nເພື່ອສະຫຼັບລະຫວ່າງຄຸນສົມບັດ, ໃຫ້ປັດຂຶ້ນດ້ວຍ 2 ນິ້ວຄ້າງໄວ້."</string>
@@ -2033,12 +2010,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"ກົດປຸ່ມລະດັບສຽງຄ້າງໄວ້"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"ກົດປຸ່ມລະດັບສຽງຄ້າງໄວ້"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"ກົດປຸ່ມລະດັບສຽງທັງສອງຄ້າງໄວ້"</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"ແຕະໜ້າຈໍສາມເທື່ອດ້ວຍສອງນິ້ວ"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"ແຕະໜ້າຈໍສາມເທື່ອດ້ວຍສອງນິ້ວ"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"ແຕະໜ້າຈໍຢ່າງວ່ອງໄວ {0,number,integer} ເທື່ອດ້ວຍສອງນິ້ວ"</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"ແຕະໃສ່ໜ້າຈໍສາມເທື່ອ"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"ແຕະໃສ່ໜ້າຈໍສາມເທື່ອ"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"ແຕະໜ້າຈໍໄວໆ {0,number,integer} ເທື່ອ. ທາງລັດນີ້ອາດເຮັດໃຫ້ອຸປະກອນຂອງທ່ານຊ້າລົງ"</string>
@@ -2336,6 +2310,10 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"ຫາກທ່ານຈຳກັດການເຄື່ອນໄຫວໃນພື້ນຫຼັງສຳລັບແອັບໃດໜຶ່ງ, ມັນຈະເຮັດວຽກຜິດປົກກະຕິ"</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"ເນື່ອງຈາກແອັບນີ້ຍັງບໍ່ໄດ້ປັບແຕ່ງໃຫ້ໃຊ້ແບັດເຕີຣີໄດ້ຢ່າງເໝາະສົມເທື່ອ, ທ່ານຈຶ່ງບໍ່ສາມາດຈຳກັດມັນໄດ້.\n\nເພື່ອຈຳກັດແອັບດັ່ງກ່າວ, ໃຫ້ເປີດການປັບແຕ່ງແບັດເຕີຣີໃຫ້ເໝາະສົມກ່ອນ."</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"ຈັດການການໃຊ້ແບັດເຕີຣີ"</string>
+ <!-- no translation found for manager_battery_usage_allow_background_usage_title (6294649996820358852) -->
+ <skip />
+ <!-- no translation found for manager_battery_usage_allow_background_usage_summary (8021153755201340819) -->
+ <skip />
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"ບໍ່ຈຳກັດ"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"ປັບໃຫ້ເໝາະສົມ"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"ຈຳກັດ"</string>
@@ -3846,6 +3824,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"ອະນຸຍາດການເຂົ້າເຖິງເພື່ອຈັດການໄຟລ໌ທັງໝົດ"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"ອະນຸຍາດໃຫ້ແອັບນີ້ອ່ານ, ແກ້ໄຂ ແລະ ລຶບໄຟລ໌ທັງໝົດຢູ່ອຸປະກອນນີ້ ຫຼື ບ່ອນຈັດເກັບຂໍ້ມູນໃດກໍຕາມທີ່ເຊື່ອມຕໍ່ໄວ້. ຫາກໄດ້ຮັບອະນຸຍາດແລ້ວ, ແອັບຈະສາມາດເຂົ້າເຖິງໄຟລ໌ໂດຍແຈ້ງໃຫ້ທ່ານຮັບຮູ້ຢ່າງຈະແຈ້ງໄດ້."</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"ສາມາດເຂົ້າເຖິງໄຟລ໌ທັງໝົດ"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"ການແຈ້ງເຕືອນແບບເຕັມຈໍ"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"ອະນຸຍາດໃຫ້ແອັບນີ້ສະແດງການແຈ້ງເຕືອນແບບເຕັມຈໍ"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"ອະນຸຍາດໃຫ້ແອັບນີ້ສະແດງການແຈ້ງເຕືອນແບບເຕັມຈໍເມື່ອອຸປະກອນລັອກຢູ່. ແອັບອາດໃຊ້ການແຈ້ງເຕືອນເຫຼົ່ານີ້ເພື່ອໄຮໄລ້ໂມງປຸກ, ສາຍໂທເຂົ້າ ຫຼື ການແຈ້ງເຕືອນສຸກເສີນອື່ນໆ."</string>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index 0621e2c..e4731d5 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -135,7 +135,14 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"Rašiklis"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"Garso bendrinimas"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"Bendrinti garsą"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"Skambučiai ir signalai"</string>
+ <!-- no translation found for audio_sharing_streams_category_title (862958129650324581) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_pref_title (4636293245167657721) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_title (8269455097512153101) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_qr_code_summary (4231875597377863735) -->
<skip />
<string name="date_and_time" msgid="1788358029823431692">"Data ir laikas"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"Tarpinis serveris"</string>
@@ -540,24 +547,15 @@
<string name="private_space_title" msgid="7078627930195569767">"Privati erdvė"</string>
<string name="private_space_summary" msgid="8237652417163408001">"Slėpkite programas privačiame aplanke"</string>
<string name="private_space_one_lock_title" msgid="7306547190751832568">"Atrakinimas naudojant ekrano užraktą"</string>
- <!-- no translation found for private_space_hide_title (8687034008994037610) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_title (972581369094289386) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_summary (1052569521186403642) -->
- <skip />
- <!-- no translation found for privatespace_access_header (982809349769470185) -->
- <skip />
- <!-- no translation found for privatespace_search_description (983837656432484282) -->
- <skip />
- <!-- no translation found for privatespace_tap_tile_description (4146608898639668340) -->
- <skip />
- <!-- no translation found for privatespace_unlock_description (4132755357482447360) -->
- <skip />
- <!-- no translation found for privatespace_hide_off_summary (7227778747159633671) -->
- <skip />
- <!-- no translation found for privatespace_hide_on_summary (6136704537527640183) -->
- <skip />
+ <string name="private_space_hide_title" msgid="8687034008994037610">"Slėpimas užrakinus"</string>
+ <string name="privatespace_hide_page_title" msgid="972581369094289386">"Užrakintos privačios erdvės slėpimas"</string>
+ <string name="privatespace_hide_page_summary" msgid="1052569521186403642">"Jei nenorite, kad kiti žmonės žinotų, jog privati erdvė yra jūsų įrenginyje, galite slėpti ją programų sąraše"</string>
+ <string name="privatespace_access_header" msgid="982809349769470185">"Prieiga prie paslėptos privačios erdvės"</string>
+ <string name="privatespace_search_description" msgid="983837656432484282">"Ieškokite pagal užklausą „Privati erdvė“ paieškos juostoje"</string>
+ <string name="privatespace_tap_tile_description" msgid="4146608898639668340">"Palieskite privačios erdvės pavadinimą"</string>
+ <string name="privatespace_unlock_description" msgid="4132755357482447360">"Atrakinti privačią erdvę"</string>
+ <string name="privatespace_hide_off_summary" msgid="7227778747159633671">"Išjungti"</string>
+ <string name="privatespace_hide_on_summary" msgid="6136704537527640183">"Įjungti"</string>
<string name="private_space_category_system" msgid="1286843321867285700">"Sistema"</string>
<string name="private_space_create_title" msgid="47273568884806726">"Privačios erdvės kūrimas"</string>
<string name="private_space_delete_title" msgid="3075645119800272800">"Privačios erdvės ištrynimas"</string>
@@ -570,54 +568,30 @@
<string name="no_device_lock_summary" msgid="7653477413589207824">"Jei norite naudoti privačią erdvę, nustatykite ekrano užraktą šiame įrenginyje."</string>
<string name="no_device_lock_action_label" msgid="2640487005629001288">"Ekrano užrakto nustatymas"</string>
<string name="no_device_lock_cancel" msgid="4412602160321228863">"Atšaukti"</string>
- <!-- no translation found for privatespace_cancel_label (362351004019511784) -->
- <skip />
- <!-- no translation found for privatespace_setup_button_label (3696372546231047258) -->
- <skip />
- <!-- no translation found for privatespace_setup_title (177623114624330394) -->
- <skip />
- <!-- no translation found for privatespace_hide_apps_summary (4016518749055602268) -->
- <skip />
- <!-- no translation found for privatespace_how_title (8794102046435526065) -->
- <skip />
- <!-- no translation found for privatespace_access_bottom_text (1075244097441349030) -->
- <skip />
- <!-- no translation found for privatespace_protected_lock_text (7320604832432017423) -->
- <skip />
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_cancel_label" msgid="362351004019511784">"Atšaukti"</string>
+ <string name="privatespace_setup_button_label" msgid="3696372546231047258">"Nustatyti"</string>
+ <string name="privatespace_setup_title" msgid="177623114624330394">"Privačios erdvės nustatymas"</string>
+ <string name="privatespace_hide_apps_summary" msgid="4016518749055602268">"Slėpkite privačias programas saugioje erdvėje, kurią galite pasiekti tik jūs"</string>
+ <string name="privatespace_how_title" msgid="8794102046435526065">"Kaip tai veikia"</string>
+ <string name="privatespace_access_bottom_text" msgid="1075244097441349030">"Privačią erdvę galite pasiekti iš programų sąrašo apačios"</string>
+ <string name="privatespace_protected_lock_text" msgid="7320604832432017423">"Programos privačioje erdvėje saugomos jas užrakinant"</string>
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"Pranešimai iš programų privačioje erdvėje slepiami, kai ji užrakinta"</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"Privačios erdvės programos nebus rodomos leidimų tvarkytuvėje, privatumo informacijos suvestinėje ir kituose nustatymuose, kai privati erdvė bus užrakinta"</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"Nustatoma privati erdvė…"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"Privati erdvė saugoma ją užrakinant"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"Privačios erdvės programų naudojimo informacija paslėpta, kai užrakinta"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"Prieiga prie privačios erdvės iš programų sąrašo"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"Nepavyko nustatyti privačios erdvės"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"Bandykite dar kartą dabar arba grįžkite vėliau"</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"Bandyti dar kartą"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"Naudoti ekrano užraktą norint atrakinti?"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"Galite atrakinti privačią erdvę taip pat, kaip atrakinate įrenginį, arba pasirinkti kitą užraktą"</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"Naudoti ekrano užraktą"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"Pasirinkti naują užraktą"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"Viskas nustatyta!"</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"Kad pasiektumėte privačią erdvę, perbraukite aukštyn iš pagrindinio ekrano apačios, tada slinkite žemyn"</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"Atlikta"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"Slinkite žemyn, kad pasiektumėte privačią erdvę"</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"Galite pridėti iki <xliff:g id="COUNT">%d</xliff:g> piršto ats."</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"Pridėjote maksimalų skaičių kontrolinių kodų"</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"Negalima pridėti daugiau kontrolinių kodų"</string>
@@ -1135,8 +1109,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"Toliau naudoti programas, kai įrenginys sulenktas"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"Ekrano glodinimas"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"Automatiškai padidinamas kai kurio turinio atnaujinimo dažnis iki <xliff:g id="ID_1">%1$d</xliff:g> Hz. Vartojama daugiau akumuliatoriaus energijos."</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"Priverstinai nustatyti didžiausią atnaujinimo dažnį"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"Didžiausias atnaujinimo dažnis, siekiant patobulinti palietimo atsakomumą ir animacijos kokybę. Vartojama daugiau akumuliatoriaus energijos."</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"Žiūrėjimas į ekraną"</string>
@@ -1372,6 +1345,8 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"Bendruomenės nustatymai"</string>
<string name="apn_settings" msgid="4295467389400441299">"APN"</string>
<string name="apn_edit" msgid="2003683641840248741">"Redaguoti prieigos tašką"</string>
+ <!-- no translation found for apn_add (9069613192201630934) -->
+ <skip />
<string name="apn_not_set" msgid="8246646433109750293">"Nenustatyta"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"Nenustatyta"</string>
<string name="apn_name" msgid="6677695784108157953">"Pavadinimas"</string>
@@ -2006,12 +1981,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"Naudokite pritaikomumo mygtuką, kad atidarytumėte"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"Norėdami atidaryti, palaikykite garsumo klavišus"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"Norėdami atidaryti, triskart palieskite ekraną"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"Atidarymas palietus ekraną tris kartus dviem pirštais"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"Naudokite gestą, kad atidarytumėte"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"Pritaikomumo gesto naudojimas"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"Norėdami naudoti šią funkciją, ekrano apačioje palieskite pritaikomumo mygtuką <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g>.\n\nJei norite perjungti funkcijas, palieskite ir palaikykite pritaikomumo mygtuką."</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"Jei norite naudoti šią funkciją, palieskite pritaikomumo mygtuką ekrane."</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"Norėdami naudoti šią funkciją, paspauskite ir palaikykite abu garsumo klavišus."</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"Norėdami pradėti ar baigti didinti, triskart palieskite bet kur ekrane."</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"Jei norite pradėti ar baigti didinti, triskart palieskite bet kurioje ekrano vietoje dviem pirštais."</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"Norėdami naudoti šią funkciją, perbraukite dviem pirštais aukštyn nuo ekrano apačios.\n\nJei norite perjungti funkcijas, perbraukite aukštyn dviem pirštais ir palaikykite."</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"Norėdami naudoti šią funkciją, perbraukite trimis pirštais aukštyn nuo ekrano apačios.\n\nJei norite perjungti funkcijas, perbraukite aukštyn trimis pirštais ir palaikykite."</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"Norėdami naudoti pritaikymo neįgaliesiems funkciją, perbraukite dviem pirštais aukštyn nuo ekrano apačios.\n\nJei norite perjungti funkcijas, perbraukite aukštyn dviem pirštais ir palaikykite."</string>
@@ -2033,12 +2010,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"Laikyti garsumo klavišus"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"laikyti garsumo klavišus"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"Paspauskite ir palaikykite abu garsumo klavišus"</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"Ekrano palietimas tris kartus dviem pirštais"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"ekrano palietimas tris kartus dviem pirštais"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"Greitai palieskite ekraną {0,number,integer} k. dviem pirštais"</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"Ekrano palietimas tris kartus"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"triskart paliesti ekraną"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"Sparčiai palieskite ekraną {0,number,integer} k. Dėl šio sparčiojo klavišo įrenginys gali veikti lėčiau"</string>
@@ -2336,6 +2310,10 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"Jei apribosite programos veiklą fone, ji gali netinkamai veikti"</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"Negalite apriboti progr., nes ji nenust. optimiz. akum. naud.\n\nJei norite apr. progr., pirmiausia įj. akum. naud. optimiz."</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"Akumuliatoriaus energijos vartojimo valdymas"</string>
+ <!-- no translation found for manager_battery_usage_allow_background_usage_title (6294649996820358852) -->
+ <skip />
+ <!-- no translation found for manager_battery_usage_allow_background_usage_summary (8021153755201340819) -->
+ <skip />
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"Neapribota"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"Optimizuota"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"Apribota"</string>
@@ -3846,6 +3824,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"Leisti pasiekti ir tvarkyti visus failus"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"Šiai programai leidžiama nuskaityti, keisti ir ištrinti visus failus, esančius šiame įrenginyje ar bet kurioje prijungtoje saugykloje. Jei suteiksite leidimą, programa gali pasiekti failus jūsų tiksliai neinformavus."</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"Gali pasiekti visus failus"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"Pranešimai viso ekrano režimu"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"Leisti pranešimus viso ekrano režimu iš šios programos"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"Leiskite šiai programai rodyti pranešimus viso ekrano režimu, kai įrenginys užrakintas. Programos gali juos naudoti, kad paryškintų įspėjimus, gaunamuosius skambučius ar kitus skubius pranešimus."</string>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index 178dc39..e25539c 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -135,7 +135,14 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"Skārienekrāna pildspalva"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"Audio kopīgošana"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"Kopīgot audio"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"Zvani un signāli"</string>
+ <!-- no translation found for audio_sharing_streams_category_title (862958129650324581) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_pref_title (4636293245167657721) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_title (8269455097512153101) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_qr_code_summary (4231875597377863735) -->
<skip />
<string name="date_and_time" msgid="1788358029823431692">"Datums un laiks"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"Starpniekserveris"</string>
@@ -540,24 +547,15 @@
<string name="private_space_title" msgid="7078627930195569767">"Privātā mape"</string>
<string name="private_space_summary" msgid="8237652417163408001">"Paslēpiet lietotnes privātā mapē."</string>
<string name="private_space_one_lock_title" msgid="7306547190751832568">"Atbloķēt, izmantojot ekrāna bloķēšanas metodi"</string>
- <!-- no translation found for private_space_hide_title (8687034008994037610) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_title (972581369094289386) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_summary (1052569521186403642) -->
- <skip />
- <!-- no translation found for privatespace_access_header (982809349769470185) -->
- <skip />
- <!-- no translation found for privatespace_search_description (983837656432484282) -->
- <skip />
- <!-- no translation found for privatespace_tap_tile_description (4146608898639668340) -->
- <skip />
- <!-- no translation found for privatespace_unlock_description (4132755357482447360) -->
- <skip />
- <!-- no translation found for privatespace_hide_off_summary (7227778747159633671) -->
- <skip />
- <!-- no translation found for privatespace_hide_on_summary (6136704537527640183) -->
- <skip />
+ <string name="private_space_hide_title" msgid="8687034008994037610">"Paslēpšana, kamēr šī mape ir bloķēta"</string>
+ <string name="privatespace_hide_page_title" msgid="972581369094289386">"Privātās mapes paslēpšana, kamēr tā ir bloķēta"</string>
+ <string name="privatespace_hide_page_summary" msgid="1052569521186403642">"Lai citi nezinātu, ka ierīcē ir privātā mape, varat paslēpt to no lietotņu saraksta."</string>
+ <string name="privatespace_access_header" msgid="982809349769470185">"Piekļūstiet privātajai mapei, kamēr tā ir paslēpta"</string>
+ <string name="privatespace_search_description" msgid="983837656432484282">"Meklēšanas joslā meklējiet “privātā mape”."</string>
+ <string name="privatespace_tap_tile_description" msgid="4146608898639668340">"Pieskarieties elementam “Privātā mape”."</string>
+ <string name="privatespace_unlock_description" msgid="4132755357482447360">"Atbloķējiet privāto mapi."</string>
+ <string name="privatespace_hide_off_summary" msgid="7227778747159633671">"Izslēgta"</string>
+ <string name="privatespace_hide_on_summary" msgid="6136704537527640183">"Ieslēgta"</string>
<string name="private_space_category_system" msgid="1286843321867285700">"Sistēma"</string>
<string name="private_space_create_title" msgid="47273568884806726">"Izveidot privātu mapi"</string>
<string name="private_space_delete_title" msgid="3075645119800272800">"Dzēst privāto mapi"</string>
@@ -570,54 +568,30 @@
<string name="no_device_lock_summary" msgid="7653477413589207824">"Lai izmantotu privāto mapi, iestatiet ekrāna bloķēšanu šajā ierīcē."</string>
<string name="no_device_lock_action_label" msgid="2640487005629001288">"Iestatīt ekrāna bloķēšanu"</string>
<string name="no_device_lock_cancel" msgid="4412602160321228863">"Atcelt"</string>
- <!-- no translation found for privatespace_cancel_label (362351004019511784) -->
- <skip />
- <!-- no translation found for privatespace_setup_button_label (3696372546231047258) -->
- <skip />
- <!-- no translation found for privatespace_setup_title (177623114624330394) -->
- <skip />
- <!-- no translation found for privatespace_hide_apps_summary (4016518749055602268) -->
- <skip />
- <!-- no translation found for privatespace_how_title (8794102046435526065) -->
- <skip />
- <!-- no translation found for privatespace_access_bottom_text (1075244097441349030) -->
- <skip />
- <!-- no translation found for privatespace_protected_lock_text (7320604832432017423) -->
- <skip />
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_cancel_label" msgid="362351004019511784">"Atcelt"</string>
+ <string name="privatespace_setup_button_label" msgid="3696372546231047258">"Iestatīt"</string>
+ <string name="privatespace_setup_title" msgid="177623114624330394">"Privātās mapes iestatīšana"</string>
+ <string name="privatespace_hide_apps_summary" msgid="4016518749055602268">"Paslēpiet privātas lietotnes drošā vietā, kam varēsiet piekļūt tikai jūs."</string>
+ <string name="privatespace_how_title" msgid="8794102046435526065">"Darbības principi"</string>
+ <string name="privatespace_access_bottom_text" msgid="1075244097441349030">"Varat piekļūt privātajai mapei lietotņu saraksta apakšdaļā."</string>
+ <string name="privatespace_protected_lock_text" msgid="7320604832432017423">"Bloķēšana aizsargā privātajā mapē ievietotās lietotnes."</string>
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"Kamēr privātā mape ir bloķēta, paziņojumi no tajā ievietotajām lietotnēm tiek slēpti."</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"Kamēr privātā mape ir bloķēta, tajā ievietotās lietotnes netiek rādītas atļauju pārvaldniekā, konfidencialitātes informācijas panelī un citos iestatījumos."</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"Notiek privātās mapes iestatīšana…"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"Privātā mape tiek aizsargāta, izmantojot bloķēšanu"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"Lietojuma informācija par privātās mapes lietotnēm tiek slēpta, kamēr mape ir bloķēta"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"Varat piekļūt privātajai mapei lietotņu sarakstā"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"Nevarēja iestatīt privāto mapi"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"Mēģiniet vēlreiz tūlīt vai atgriezieties vēlāk."</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"Mēģināt vēlreiz"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"Vai atbloķēt ar ekrāna bloķēšanas opciju?"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"Varat atbloķēt privāto mapi tāpat kā ierīci vai izvēlēties citu bloķēšanas metodi."</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"Izmantot ekrāna bloķēšanas opciju"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"Izvēlēties jaunu bloķēšanas metodi"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"Gatavs!"</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"Lai piekļūtu privātajai mapei, velciet augšup no sākuma ekrāna apakšdaļas un pēc tam ritiniet lejup."</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"Gatavs"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"Lai piekļūtu privātajai mapei, ritiniet lejup."</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"Varat pievienot līdz <xliff:g id="COUNT">%d</xliff:g> pirkstu nospiedumiem."</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"Jūs esat pievienojis maksimālo pirkstu nospiedumu skaitu."</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"Nevar pievienot citus pirkstu nospiedumus."</string>
@@ -1135,8 +1109,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"Turpināt izmantot lietotnes, kad ierīce ir salocīta"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"Smooth Display"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"Noteikta satura atsvaidzināšanas biežums tiek automātiski palielināts līdz <xliff:g id="ID_1">%1$d</xliff:g> Hz. Tas palielina akumulatora lietojumu."</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"Piespiedu maksimālais atsvaidzināšanas biežums"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"Augstākais atsvaidzināšanas biežums uzlabotai reakcijai uz pieskārienu un labākai animācijas kvalitātei. Tas palielina akumulatora lietojumu."</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"Atpazīšana ekrānā"</string>
@@ -1372,6 +1345,8 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"Kopīgie iestatījumi"</string>
<string name="apn_settings" msgid="4295467389400441299">"APN"</string>
<string name="apn_edit" msgid="2003683641840248741">"Rediģēt piekļuves punktu"</string>
+ <!-- no translation found for apn_add (9069613192201630934) -->
+ <skip />
<string name="apn_not_set" msgid="8246646433109750293">"Nav iestatīts"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"Nav iestatīts"</string>
<string name="apn_name" msgid="6677695784108157953">"Nosaukums"</string>
@@ -2006,12 +1981,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"Pieejamības pogas izmantošana atvēršanai"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"Lai atvērtu, turiet nospiestas skaļuma pogas"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"Lai atvērtu, trīsreiz pieskarieties ekrānam"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"Lai atvērtu, ar diviem pirkstiem trīsreiz pieskarieties ekrānam"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"Žesta izmantošana atvēršanai"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"Pieejamības žesta izmantošana"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"Lai izmantotu šo funkciju, ekrāna apakšdaļā pieskarieties pieejamības pogai <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g>.\n\nLai pārslēgtu funkcijas, pieskarieties pieejamības pogai un turiet to."</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"Lai izmantotu šo funkciju, pieskarieties ekrānā esošajai pieejamības pogai."</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"Lai izmantotu šo funkciju, nospiediet un turiet abas skaļuma pogas."</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"Lai sāktu un apturētu palielināšanu, trīsreiz pieskarieties jebkurā ekrāna vietā."</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"Lai sāktu un apturētu palielināšanu, ar diviem pirkstiem trīsreiz pieskarieties jebkur ekrānā."</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"Lai izmantotu šo funkciju, ar diviem pirkstiem velciet augšup no ekrāna apakšdaļas.\n\nLai pārslēgtu funkcijas, velciet augšup ar diviem pirkstiem un turiet."</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"Lai izmantotu šo funkciju, ar trīs pirkstiem velciet augšup no ekrāna apakšdaļas.\n\nLai pārslēgtu funkcijas, velciet augšup ar trīs pirkstiem un turiet."</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"Lai izmantotu pieejamības funkciju, ar diviem pirkstiem velciet augšup no ekrāna apakšdaļas.\n\nLai pārslēgtu funkcijas, velciet augšup ar diviem pirkstiem un turiet."</string>
@@ -2033,12 +2010,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"Turēt nospiestas skaļuma pogas"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"turiet nospiestus skaļuma pogas"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"Nospiediet un turiet abas skaļuma pogas"</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"Trīskāršais skāriens uz ekrāna ar diviem pirkstiem"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"trīskāršais skāriens uz ekrāna ar diviem pirkstiem"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"Ar diviem pirkstiem {0,number,integer} reizes ātri pieskarieties ekrānam."</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"Pieskaršanās ekrānam 3 reizes"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"trīsreiz pieskarieties ekrānam"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"Ātri pieskarieties ekrānam {0,number,integer} reizes. Šī saīsne var palēnināt ierīces darbību."</string>
@@ -2336,6 +2310,10 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"Ierobežojot lietotnes darbību fonā, var rasties šīs lietotnes darbības traucējumi."</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"Lietotnei nav iestatīta akumulatora optimizācija, tāpēc to nevar ierobežot.\n\nVispirms iestatiet akumulatora optimizāciju."</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"Akumulatora lietojuma pārvaldība"</string>
+ <!-- no translation found for manager_battery_usage_allow_background_usage_title (6294649996820358852) -->
+ <skip />
+ <!-- no translation found for manager_battery_usage_allow_background_usage_summary (8021153755201340819) -->
+ <skip />
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"Neierobežots"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"Optimizēts"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"Ierobežoti"</string>
@@ -3846,6 +3824,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"Atļaut piekļuvi visu failu pārvaldībai"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"Atļaujiet šai lietotnei lasīt, pārveidot un dzēst visus failus šajā ierīcē vai pievienotajās atmiņas ierīcēs. Ja piešķirsiet atļauju, lietotne varēs piekļūt failiem, jums par to nezinot."</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"Var piekļūt visiem failiem"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"Pilnekrāna paziņojumi"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"Atļaut šīs lietotnes pilnekrāna paziņojumus"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"Atļaujiet šai lietotnei rādīt paziņojumus pilnekrāna režīmā, kad ierīce ir bloķēta. Lietotnes var šādi izcelt signālus, ienākošos zvanus vai citus svarīgus paziņojumus."</string>
diff --git a/res/values-mk/strings.xml b/res/values-mk/strings.xml
index 73f6296..ed06da0 100644
--- a/res/values-mk/strings.xml
+++ b/res/values-mk/strings.xml
@@ -135,8 +135,11 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"Пенкало"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"Споделување аудио"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"Споделете го аудиото"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
- <skip />
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"Повици и аларми"</string>
+ <string name="audio_sharing_streams_category_title" msgid="862958129650324581">"Поврзете се со стрим на LE Audio"</string>
+ <string name="audio_sharing_streams_pref_title" msgid="4636293245167657721">"Аудиостримови во близина"</string>
+ <string name="audio_sharing_streams_title" msgid="8269455097512153101">"Аудиостримови"</string>
+ <string name="audio_sharing_streams_qr_code_summary" msgid="4231875597377863735">"Поврзете се со аудиострим со QR-код"</string>
<string name="date_and_time" msgid="1788358029823431692">"Датум и време"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"Прокси"</string>
<string name="proxy_clear_text" msgid="6529658759984031149">"Избриши"</string>
@@ -540,24 +543,15 @@
<string name="private_space_title" msgid="7078627930195569767">"Приватен простор"</string>
<string name="private_space_summary" msgid="8237652417163408001">"Скријте ги апликациите во приватна папка"</string>
<string name="private_space_one_lock_title" msgid="7306547190751832568">"Отклучете со заклучувањето екран"</string>
- <!-- no translation found for private_space_hide_title (8687034008994037610) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_title (972581369094289386) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_summary (1052569521186403642) -->
- <skip />
- <!-- no translation found for privatespace_access_header (982809349769470185) -->
- <skip />
- <!-- no translation found for privatespace_search_description (983837656432484282) -->
- <skip />
- <!-- no translation found for privatespace_tap_tile_description (4146608898639668340) -->
- <skip />
- <!-- no translation found for privatespace_unlock_description (4132755357482447360) -->
- <skip />
- <!-- no translation found for privatespace_hide_off_summary (7227778747159633671) -->
- <skip />
- <!-- no translation found for privatespace_hide_on_summary (6136704537527640183) -->
- <skip />
+ <string name="private_space_hide_title" msgid="8687034008994037610">"Скриј кога уредот е заклучен"</string>
+ <string name="privatespace_hide_page_title" msgid="972581369094289386">"Скриј го „Приватниот простор“ кога е заклучен"</string>
+ <string name="privatespace_hide_page_summary" msgid="1052569521186403642">"За да спречите други луѓе да знаат дека „Приватниот простор“ е на вашиот уред, може да го скриете од списокот со апликации"</string>
+ <string name="privatespace_access_header" msgid="982809349769470185">"Пристапете до „Приватен простор“ кога е скриен"</string>
+ <string name="privatespace_search_description" msgid="983837656432484282">"Пребарајте „Приватен простор“ во полето за пребарување"</string>
+ <string name="privatespace_tap_tile_description" msgid="4146608898639668340">"Допрете ја плочката „Приватен простор“"</string>
+ <string name="privatespace_unlock_description" msgid="4132755357482447360">"Отклучете го вашиот „Приватен простор“"</string>
+ <string name="privatespace_hide_off_summary" msgid="7227778747159633671">"Исклучено"</string>
+ <string name="privatespace_hide_on_summary" msgid="6136704537527640183">"Вклучено"</string>
<string name="private_space_category_system" msgid="1286843321867285700">"Систем"</string>
<string name="private_space_create_title" msgid="47273568884806726">"Создајте „Приватен простор“"</string>
<string name="private_space_delete_title" msgid="3075645119800272800">"Избришете го „Приватниот простор“"</string>
@@ -570,54 +564,30 @@
<string name="no_device_lock_summary" msgid="7653477413589207824">"За да користите „Приватен простор“, поставете заклуч. екран."</string>
<string name="no_device_lock_action_label" msgid="2640487005629001288">"Поставете заклучување екран"</string>
<string name="no_device_lock_cancel" msgid="4412602160321228863">"Откажи"</string>
- <!-- no translation found for privatespace_cancel_label (362351004019511784) -->
- <skip />
- <!-- no translation found for privatespace_setup_button_label (3696372546231047258) -->
- <skip />
- <!-- no translation found for privatespace_setup_title (177623114624330394) -->
- <skip />
- <!-- no translation found for privatespace_hide_apps_summary (4016518749055602268) -->
- <skip />
- <!-- no translation found for privatespace_how_title (8794102046435526065) -->
- <skip />
- <!-- no translation found for privatespace_access_bottom_text (1075244097441349030) -->
- <skip />
- <!-- no translation found for privatespace_protected_lock_text (7320604832432017423) -->
- <skip />
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_cancel_label" msgid="362351004019511784">"Откажи"</string>
+ <string name="privatespace_setup_button_label" msgid="3696372546231047258">"Постави"</string>
+ <string name="privatespace_setup_title" msgid="177623114624330394">"Поставете „Приватен простор“"</string>
+ <string name="privatespace_hide_apps_summary" msgid="4016518749055602268">"Скријте ги приватните апликации во безбеден простор до кој може да пристапите само вие"</string>
+ <string name="privatespace_how_title" msgid="8794102046435526065">"Како функционира"</string>
+ <string name="privatespace_access_bottom_text" msgid="1075244097441349030">"Може да пристапите до „Приватен простор“ од дното на списокот со апликации"</string>
+ <string name="privatespace_protected_lock_text" msgid="7320604832432017423">"Апликациите во „Приватен простор“ се заштитени со заклучување"</string>
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"Известувањата од апликациите во „Приватниот простор“ се скриени кога е заклучен"</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"Апликациите во „Приватниот простор“ нема да се појавуваат во управникот со дозволи, контролната табла за приватност и другите поставки кога „Приватен простор“ е заклучен"</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"Се поставува „Приватен простор“…"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"„Приватниот простор“ е заштитен со заклучување"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"Податоците за користењето за апликациите во „Приватниот простор“ се скриени кога е заклучен"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"Пристапете до „Приватен простор“ од списокот со апликации"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"Не можеше да се постави „Приватен простор“"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"Обидете се повторно сега или вратете се подоцна"</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"Обиди се пак"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"Да се користи заклучување екран за отклучување?"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"Може да го отклучите „Приватен простор“ исто како што го отклучувате уредот или да изберете друг начин на заклучување"</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"Користете заклучување екран"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"Изберете нов начин на заклучување"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"Готово!"</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"За да пристапите до „Приватен простор“, повлечете нагоре од дното на почетниот екран, а потоа лизгајте надолу"</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"Готово"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"Лизгајте надолу за да пристапите до „Приватен простор“"</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"Може да додадете до <xliff:g id="COUNT">%d</xliff:g> отпечатоци"</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"Додадовте максимален број на отпечатоци"</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"Не може да се додадат повеќе отпечатоци"</string>
@@ -1135,8 +1105,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"Продолжете да ги користите апликациите при преклопување"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"Течен приказ"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"Автоматски ја зголемува стапката на освежување до <xliff:g id="ID_1">%1$d</xliff:g> Hz за одредени содржини. Го зголемува користењето на батеријата."</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"Наметни максимална стапка на освежување"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"Највисока стапка на освежување за подобрена реакција на допир и квалитет на анимацијата. Го зголемува користењето на батеријата."</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"Вклучен екран"</string>
@@ -1372,6 +1341,7 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"Заеднички поставки"</string>
<string name="apn_settings" msgid="4295467389400441299">"Поставки за APN"</string>
<string name="apn_edit" msgid="2003683641840248741">"Изменете ја пристапната точка"</string>
+ <string name="apn_add" msgid="9069613192201630934">"Додајте пристапна точка"</string>
<string name="apn_not_set" msgid="8246646433109750293">"Не е поставено"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"Не е поставено"</string>
<string name="apn_name" msgid="6677695784108157953">"Име"</string>
@@ -2006,12 +1976,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"Отворање со копчето за пристапност"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"Држете ги копчињата за јачина на звук за отворање"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"Допрете го екранот трипати за отворање"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"Допрете на екранот трипати со два прста за да отворите"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"Користете движење за да отворите"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"Користете го движењето за пристапност"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"За да ја користите функцијава, допрете го копчето за пристапност <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> на дното на екранот.\n\nЗа префрлање помеѓу функциите, допрете и задржете го копчето за пристапност."</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"За да ја користите функцијава, допрете го копчето за пристапност на екранот."</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"За да ја користите функцијава, притиснете и задржете ги двете копчиња за јачина на звук."</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"За почеток и крај на зголемувањето, допрете трипати каде било на екранот."</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"За да го започнете и запрете зголемувањето, допрете каде било на екранот трипати со два прста."</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"За да ја користите функцијава, повлечете нагоре од дното на екранот со два прста.\n\nЗа да се префрлите на друга функција, повлечете нагоре со два прста и задржете."</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"За да ја користите функцијава, повлечете нагоре од дното на екранот со три прста.\n\nЗа префрлање помеѓу функциите, повлечете нагоре со три прста и задржете."</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"За да користите функција за пристапност, повлечете нагоре од дното на екранот со два прста.\n\nЗа да се префрлите на друга функција, повлечете нагоре со два прста и задржете."</string>
@@ -2033,12 +2005,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"Задржете ги копчињата за јачина на звук"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"задржете ги копчињата за јачина на звук"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"Притиснете и задржете ги двете копчиња за јачина на звук"</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"Допрете го екранот трипати со два прста"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"допрете го екранот трипати со два прста"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"Брзо допрете го екранот {0,number,integer} пати со два прста"</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"Троен допир на екранот"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"допрете трипати на екранот"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"Брзо допрете го екранот {0,number,integer} пати Оваа кратенка може да го забави уредот"</string>
@@ -2336,6 +2305,8 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"Апликацијата може да се однесува необично ако ја ограничите нејзината активност во заднина"</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"Апликацијава не е оптимизирана и не може да се ограничи.\n\nЗа да ја ограничите, прво вклучете оптимизација на батеријата."</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"Управувајте со користењето на батеријата"</string>
+ <string name="manager_battery_usage_allow_background_usage_title" msgid="6294649996820358852">"Овозможете користење во заднина"</string>
+ <string name="manager_battery_usage_allow_background_usage_summary" msgid="8021153755201340819">"Овозможете за ажурирања во реално време, оневозможете за да заштедите батерија"</string>
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"Неограничено"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"Оптимизирано"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"Ограничено"</string>
@@ -3846,6 +3817,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"Дозволи пристап за управување со датотеки"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"Дозволете апликацијава да ги чита, менува и брише сите датотеки на уредов или на поврзаните мемориски уреди. Ако се дозволи, апликацијата може да пристапува до датотеките без ваше изречно знаење."</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"Може да пристапува до сите датотеки"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"Известувања на цел екран"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"Дозволете известувања на цел екран од оваа апликација"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"Дозволете апликацијава да прикажува известувања што го заземаат целиот екран кога уредот е заклучен. Апликациите може да ги користат овие известувања за да ги истакнуваат алармите, дојдовните повици или други итни известувања."</string>
diff --git a/res/values-ml/strings.xml b/res/values-ml/strings.xml
index b6b8b8f..e49d018 100644
--- a/res/values-ml/strings.xml
+++ b/res/values-ml/strings.xml
@@ -135,8 +135,11 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"സ്റ്റൈലസ്"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"ഓഡിയോ പങ്കിടൽ"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"ഓഡിയോ പങ്കിടൂ"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
- <skip />
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"കോളുകളും അലാറങ്ങളും"</string>
+ <string name="audio_sharing_streams_category_title" msgid="862958129650324581">"LE ഓഡിയോ സ്ട്രീമിലേക്ക് കണക്റ്റ് ചെയ്യുക"</string>
+ <string name="audio_sharing_streams_pref_title" msgid="4636293245167657721">"സമീപത്തെ ഓഡിയോ സ്ട്രീമുകൾ"</string>
+ <string name="audio_sharing_streams_title" msgid="8269455097512153101">"ഓഡിയോ സ്ട്രീമുകൾ"</string>
+ <string name="audio_sharing_streams_qr_code_summary" msgid="4231875597377863735">"QR കോഡ് ഉപയോഗിച്ച് ഓഡിയോ സ്ട്രീമിലേക്ക് കണക്റ്റ് ചെയ്യുക"</string>
<string name="date_and_time" msgid="1788358029823431692">"തീയതിയും സമയവും"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"പ്രോക്സി"</string>
<string name="proxy_clear_text" msgid="6529658759984031149">"മായ്ക്കുക"</string>
@@ -540,24 +543,15 @@
<string name="private_space_title" msgid="7078627930195569767">"സ്വകാര്യ Space"</string>
<string name="private_space_summary" msgid="8237652417163408001">"സ്വകാര്യ ഫോൾഡറിൽ ആപ്പുകൾ മറയ്ക്കുക"</string>
<string name="private_space_one_lock_title" msgid="7306547190751832568">"സ്ക്രീൻ ലോക്ക് ഉപയോഗിച്ച് അൺലോക്ക് ചെയ്യുക"</string>
- <!-- no translation found for private_space_hide_title (8687034008994037610) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_title (972581369094289386) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_summary (1052569521186403642) -->
- <skip />
- <!-- no translation found for privatespace_access_header (982809349769470185) -->
- <skip />
- <!-- no translation found for privatespace_search_description (983837656432484282) -->
- <skip />
- <!-- no translation found for privatespace_tap_tile_description (4146608898639668340) -->
- <skip />
- <!-- no translation found for privatespace_unlock_description (4132755357482447360) -->
- <skip />
- <!-- no translation found for privatespace_hide_off_summary (7227778747159633671) -->
- <skip />
- <!-- no translation found for privatespace_hide_on_summary (6136704537527640183) -->
- <skip />
+ <string name="private_space_hide_title" msgid="8687034008994037610">"ലോക്ക് ചെയ്തിരിക്കുമ്പോൾ മറയ്ക്കൂ"</string>
+ <string name="privatespace_hide_page_title" msgid="972581369094289386">"ലോക്ക് ചെയ്തിരിക്കുമ്പോൾ സ്വകാര്യ സ്പേസ് മറയ്ക്കുക"</string>
+ <string name="privatespace_hide_page_summary" msgid="1052569521186403642">"ഉപകരണത്തിലെ സ്വകാര്യ സ്പേസ് ആരും അറിയാതിരിക്കാൻ ആപ്പ് ലിസ്റ്റിൽ നിന്ന് അത് മറയ്ക്കാം"</string>
+ <string name="privatespace_access_header" msgid="982809349769470185">"മറച്ചിരിക്കുമ്പോൾ സ്വകാര്യ സ്പേസ് ആക്സസ് ചെയ്യൂ"</string>
+ <string name="privatespace_search_description" msgid="983837656432484282">"തിരയൽ ബാറിൽ \'സ്വകാര്യ സ്പേസ്\' എന്ന് തിരയുക"</string>
+ <string name="privatespace_tap_tile_description" msgid="4146608898639668340">"സ്വകാര്യ സ്പേസ് ടൈൽ ടാപ്പ് ചെയ്യുക"</string>
+ <string name="privatespace_unlock_description" msgid="4132755357482447360">"നിങ്ങളുടെ സ്വകാര്യ സ്പേസ് അൺലോക്ക് ചെയ്യുക"</string>
+ <string name="privatespace_hide_off_summary" msgid="7227778747159633671">"ഓഫാണ്"</string>
+ <string name="privatespace_hide_on_summary" msgid="6136704537527640183">"ഓണാണ്"</string>
<string name="private_space_category_system" msgid="1286843321867285700">"സിസ്റ്റം"</string>
<string name="private_space_create_title" msgid="47273568884806726">"സ്വകാര്യ Space സൃഷ്ടിക്കുക"</string>
<string name="private_space_delete_title" msgid="3075645119800272800">"സ്വകാര്യ Space ഇല്ലാതാക്കുക"</string>
@@ -570,54 +564,30 @@
<string name="no_device_lock_summary" msgid="7653477413589207824">"സ്വകാര്യ സ്പേസിന് ഈ ഉപകരണത്തിൽ സ്ക്രീൻ ലോക്ക് സജ്ജീകരിക്കൂ."</string>
<string name="no_device_lock_action_label" msgid="2640487005629001288">"സ്ക്രീൻ ലോക്ക് സജ്ജീകരിക്കൂ"</string>
<string name="no_device_lock_cancel" msgid="4412602160321228863">"റദ്ദാക്കൂ"</string>
- <!-- no translation found for privatespace_cancel_label (362351004019511784) -->
- <skip />
- <!-- no translation found for privatespace_setup_button_label (3696372546231047258) -->
- <skip />
- <!-- no translation found for privatespace_setup_title (177623114624330394) -->
- <skip />
- <!-- no translation found for privatespace_hide_apps_summary (4016518749055602268) -->
- <skip />
- <!-- no translation found for privatespace_how_title (8794102046435526065) -->
- <skip />
- <!-- no translation found for privatespace_access_bottom_text (1075244097441349030) -->
- <skip />
- <!-- no translation found for privatespace_protected_lock_text (7320604832432017423) -->
- <skip />
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_cancel_label" msgid="362351004019511784">"റദ്ദാക്കുക"</string>
+ <string name="privatespace_setup_button_label" msgid="3696372546231047258">"സജ്ജീകരിക്കുക"</string>
+ <string name="privatespace_setup_title" msgid="177623114624330394">"സ്വകാര്യ സ്പേസ് സജ്ജീകരിക്കുക"</string>
+ <string name="privatespace_hide_apps_summary" msgid="4016518749055602268">"നിങ്ങൾക്ക് മാത്രം ആക്സസ് ചെയ്യാൻ കഴിയുന്ന സുരക്ഷിതമായ ഒരിടത്ത് സ്വകാര്യ ആപ്പുകൾ മറയ്ക്കുക"</string>
+ <string name="privatespace_how_title" msgid="8794102046435526065">"ഇതെങ്ങനെ പ്രവർത്തിക്കുന്നു"</string>
+ <string name="privatespace_access_bottom_text" msgid="1075244097441349030">"നിങ്ങളുടെ ആപ്പ് ലിസ്റ്റിന്റെ താഴെ നിന്ന് സ്വകാര്യ സ്പേസ് ആക്സസ് ചെയ്യാം"</string>
+ <string name="privatespace_protected_lock_text" msgid="7320604832432017423">"സ്വകാര്യ സ്പേസിലെ ആപ്പുകൾ ലോക്ക് ഉപയോഗിച്ച് പരിരക്ഷിച്ചിരിക്കുന്നു"</string>
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"സ്വകാര്യ സ്പേസ് ലോക്ക് ചെയ്തിരിക്കുമ്പോൾ, അതിലെ ആപ്പുകളിൽ നിന്നുള്ള അറിയിപ്പുകൾ മറയ്ക്കും"</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"സ്വകാര്യ സ്പേസ് ലോക്ക് ചെയ്തിരിക്കുമ്പോൾ അനുമതി മാനേജർ, സ്വകാര്യതാ ഡാഷ്ബോർഡ്, മറ്റ് ക്രമീകരണം എന്നിവയിൽ സ്വകാര്യ സ്പേസ് ആപ്പുകൾ ദൃശ്യമാകില്ല"</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"സ്വകാര്യ സ്പേസ് സജ്ജീകരിക്കുന്നു…"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"സ്വകാര്യ സ്പേസ് ലോക്ക് ഉപയോഗിച്ച് പരിരക്ഷിച്ചിരിക്കുന്നു"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"സ്വകാര്യ സ്പേസ് ലോക്ക് ചെയ്തിരിക്കുമ്പോൾ, അതിലെ ആപ്പുകളുടെ ഉപയോഗ വിവരങ്ങൾ മറച്ചിരിക്കും"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"ആപ്പ് ലിസ്റ്റിൽ നിന്ന് സ്വകാര്യ സ്പേസ് ആക്സസ് ചെയ്യുക"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"സ്വകാര്യ സ്പേസ് സജ്ജീകരിക്കാനായില്ല"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"ഇപ്പോൾ വീണ്ടും ശ്രമിക്കുക അല്ലെങ്കിൽ പിന്നീട് മടങ്ങി വരിക"</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"വീണ്ടും ശ്രമിക്കുക"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"അൺലോക്ക് ചെയ്യാൻ സ്ക്രീൻ ലോക്ക് ഉപയോഗിക്കണോ?"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"ഉപകരണം അൺലോക്ക് ചെയ്യുന്ന അതേ രീതിയിൽ നിങ്ങൾക്ക് സ്വകാര്യ സ്പേസ് അൺലോക്ക് ചെയ്യാം അല്ലെങ്കിൽ മറ്റൊരു ലോക്ക് തിരഞ്ഞെടുക്കാം"</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"സ്ക്രീൻ ലോക്ക് ഉപയോഗിക്കുക"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"പുതിയ ലോക്ക് തിരഞ്ഞെടുക്കുക"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"എല്ലാം സജ്ജീകരിച്ചു!"</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"സ്വകാര്യ സ്പേസ് ആക്സസ് ചെയ്യാൻ, നിങ്ങളുടെ ഹോം സ്ക്രീനിന്റെ താഴെ നിന്ന് മുകളിലോട്ട് സ്വൈപ്പ് ചെയ്യുക, തുടർന്ന് താഴേക്ക് സ്ക്രോൾ ചെയ്യുക"</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"പൂർത്തിയായി"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"സ്വകാര്യ സ്പേസ് ആക്സസ് ചെയ്യാൻ താഴേക്ക് സ്ക്രോൾ ചെയ്യുക"</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"നിങ്ങൾക്ക് <xliff:g id="COUNT">%d</xliff:g> ഫിംഗർപ്രിന്റുകൾ വരെ ചേർക്കാം"</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"നിങ്ങൾ പരമാവധി എണ്ണം ഫിംഗർപ്രിന്റുകൾ ചേർത്തിട്ടുണ്ട്"</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"കൂടുതൽ ഫിംഗർപ്രിന്റുകൾ ചേർക്കാൻ കഴിയില്ല"</string>
@@ -1135,8 +1105,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"ഫോൾഡിൽ ആപ്പുകൾ ഉപയോഗിക്കുന്നത് തുടരുക"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"സ്മൂത്ത് ഡിസ്പ്ലേ"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"ചില ഉള്ളടക്കങ്ങളുടെ റീഫ്രഷ് തോത് <xliff:g id="ID_1">%1$d</xliff:g> Hz വരെ സ്വയമേവ ഉയർത്തുന്നു. ബാറ്ററി ഉപയോഗം വർദ്ധിപ്പിക്കുന്നു."</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"പരമാവധി റീഫ്രഷ് നിരക്ക് നിർബന്ധിതമാക്കുക"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"മെച്ചപ്പെട്ട സ്പർശന പ്രതികരണശേഷി, ആനിമേഷൻ നിലവാരം എന്നിവയ്ക്കുള്ള ഉയർന്ന റീഫ്രഷ് നിരക്ക്. ബാറ്ററി ഉപയോഗം വർദ്ധിപ്പിക്കുന്നു."</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"സ്ക്രീൻ ശ്രദ്ധ"</string>
@@ -1372,6 +1341,7 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"കമ്മ്യൂണൽ ക്രമീകരണങ്ങൾ"</string>
<string name="apn_settings" msgid="4295467389400441299">"APN-കൾ"</string>
<string name="apn_edit" msgid="2003683641840248741">"ആക്സസ് പോയിന്റ് എഡിറ്റ് ചെയ്യുക"</string>
+ <string name="apn_add" msgid="9069613192201630934">"ആക്സസ് പോയിന്റ് ചേർക്കുക"</string>
<string name="apn_not_set" msgid="8246646433109750293">"സജ്ജീകരിച്ചിട്ടില്ല"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"സജ്ജീകരിച്ചിട്ടില്ല"</string>
<string name="apn_name" msgid="6677695784108157953">"പേര്"</string>
@@ -2006,12 +1976,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"തുറക്കാൻ ഉപയോഗസഹായി ബട്ടൺ ഉപയോഗിക്കുക"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"തുറക്കുന്നതിന് വോളിയം കീകൾ അമർത്തിപ്പിടിക്കുക"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"തുറക്കുന്നതിന് സ്ക്രീൻ മൂന്ന് തവണ ടാപ്പ് ചെയ്യുക"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"തുറക്കാൻ, രണ്ട് വിരലുകൾ ഉപയോഗിച്ച് സ്ക്രീനിൽ മൂന്ന് തവണ ടാപ്പ് ചെയ്യുക"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"തുറക്കാൻ വിരൽചലനം ഉപയോഗിക്കുക"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"ഉപയോഗസഹായി ജെസ്ച്ചർ ഉപയോഗിക്കുക"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"ഈ ഫീച്ചർ ഉപയോഗിക്കാൻ, നിങ്ങളുടെ സ്ക്രീനിന്റെ ചുവടെയുള്ള ഉപയോഗസഹായി ബട്ടൺ <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> ടാപ്പ് ചെയ്യുക.\n\nഫീച്ചറുകൾക്കിടയിൽ മാറാൻ, ഉപയോഗസഹായി ബട്ടൺ സ്പർശിച്ച് പിടിക്കുക."</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"ഈ ഫീച്ചർ ഉപയോഗിക്കാൻ, നിങ്ങളുടെ സ്ക്രീനിലുള്ള ഉപയോഗസഹായി ബട്ടൺ ടാപ്പുചെയ്യുക."</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"ഈ ഫീച്ചർ ഉപയോഗിക്കാൻ, രണ്ട് വോളിയം കീകളും അമർത്തിപ്പിടിക്കുക."</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"മാഗ്നിഫിക്കേഷൻ ആരംഭിക്കാനും നിർത്താനും സ്ക്രീനിൽ എവിടെയെങ്കിലും മൂന്ന് തവണ ടാപ്പ് ചെയ്യുക."</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"മാഗ്നിഫിക്കേഷൻ ആരംഭിക്കാനും നിർത്താനും രണ്ട് വിരലുകൾ ഉപയോഗിച്ച് സ്ക്രീനിൽ മൂന്ന് തവണ ടാപ്പ് ചെയ്യുക."</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"ഈ ഫീച്ചർ ഉപയോഗിക്കാൻ, സ്ക്രീനിന്റെ ചുവടെ നിന്ന് രണ്ട് വിരലുകൾ ഉപയോഗിച്ച് മുകളിലേക്ക് സ്വൈപ്പ് ചെയ്യുക.\n\nഫീച്ചറുകൾക്കിടയിൽ മാറാൻ, രണ്ട് വിരലുകൾ ഉപയോഗിച്ച് മുകളിലേക്ക് സ്വൈപ്പ് ചെയ്ത് പിടിക്കുക."</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"ഈ ഫീച്ചർ ഉപയോഗിക്കാൻ,സ്ക്രീനിന്റെ ചുവടെ നിന്ന് മൂന്ന് വിരലുകൾ ഉപയോഗിച്ച് മുകളിലേക്ക് സ്വൈപ്പ് ചെയ്യുക.\n\nഫീച്ചറുകൾക്കിടയിൽ മാറാൻ, രണ്ട് വിരലുകൾ ഉപയോഗിച്ച് മുകളിലേക്ക് സ്വൈപ്പ് ചെയ്ത് പിടിക്കുക."</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"ഉപയോഗസഹായി ഫീച്ചർ ഉപയോഗിക്കാൻ, സ്ക്രീനിന്റെ ചുവടെ നിന്ന് രണ്ട് വിരലുകൾ ഉപയോഗിച്ച് മുകളിലേക്ക് സ്വൈപ്പ് ചെയ്യുക.\n\nഫീച്ചറുകൾക്കിടയിൽ മാറാൻ, രണ്ട് വിരലുകൾ ഉപയോഗിച്ച് മുകളിലേക്ക് സ്വൈപ്പ് ചെയ്ത് പിടിക്കുക."</string>
@@ -2033,12 +2005,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"വോളിയം കീകൾ അമർത്തിപ്പിടിക്കുക"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"വോളിയം കീകൾ പിടിക്കുക"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"രണ്ട് വോളിയം കീകളും അമർത്തിപ്പിടിക്കുക"</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"രണ്ട് വിരലുകൾ ഉപയോഗിച്ച് സ്ക്രീനിൽ മൂന്ന് തവണ ടാപ്പ് ചെയ്യുക"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"രണ്ട് വിരലുകൾ ഉപയോഗിച്ച് സ്ക്രീനിൽ മൂന്ന് തവണ ടാപ്പ് ചെയ്യുക"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"രണ്ട് വിരലുകൾ ഉപയോഗിച്ച് സ്ക്രീനിൽ {0,number,integer} തവണ വേഗത്തിൽ ടാപ്പ് ചെയ്യുക"</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"സ്ക്രീൻ മൂന്ന് തവണ ടാപ്പ് ചെയ്യുക"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"സ്ക്രീനിൽ മൂന്ന് തവണ ടാപ്പ് ചെയ്യുക"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"സ്ക്രീനിൽ {0,number,integer} തവണ വേഗത്തിൽ ടാപ്പ് ചെയ്യുക. ഈ കുറുക്കുവഴി നിങ്ങളുടെ ഉപകരണത്തിന്റെ വേഗത കുറച്ചേക്കാം"</string>
@@ -2336,6 +2305,8 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"നിങ്ങൾ ഒരു ആപ്പിനായി പശ്ചാത്തല പ്രവർത്തനം പരിമിതപ്പെടുത്തുകയാണെങ്കിൽ, അത് ശരിയായി പ്രവർത്തിക്കാനിടയില്ല."</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"ബാറ്ററി ഓപ്റ്റിമൈസ് ചെയ്യാൻ ഈ ആപ്പ് സജ്ജീകരിക്കാത്തതിനാൽ, നിങ്ങൾക്ക് ഇത് നിയന്ത്രിക്കാനാവില്ല.\n\nആപ്പ് നിയന്ത്രിക്കാൻ, ആദ്യം ബാറ്ററി ഓപ്റ്റിമൈസേഷൻ ഓണാക്കുക."</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"ബാറ്ററി ഉപയോഗം മാനേജ് ചെയ്യുക"</string>
+ <string name="manager_battery_usage_allow_background_usage_title" msgid="6294649996820358852">"പശ്ചാത്തലത്തിലെ ഉപയോഗം അനുവദിക്കുക"</string>
+ <string name="manager_battery_usage_allow_background_usage_summary" msgid="8021153755201340819">"തത്സമയ അപ്ഡേറ്റുകൾക്കായി പ്രവർത്തനക്ഷമമാക്കുക, ബാറ്ററി സംരക്ഷിക്കാൻ പ്രവർത്തനരഹിതമാക്കുക"</string>
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"നിയന്ത്രണമില്ലാത്തത്"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"ഒപ്റ്റിമൈസ് ചെയ്തത്"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"നിയന്ത്രിതം"</string>
@@ -3846,6 +3817,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"എല്ലാ ഫയലുകളും മാനേജ് ചെയ്യാൻ ആക്സസ് അനുവദിക്കൂ"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"ഈ ഉപകരണത്തിലെയോ ഇതുമായി ബന്ധിപ്പിച്ചിട്ടുള്ള ഏതെങ്കിലും സ്റ്റോറേജുകളിലെയോ എല്ലാ ഫയലുകളും വായിക്കാനും പരിഷ്ക്കരിക്കാനും ഇല്ലാതാക്കാനും ഈ ആപ്പിനെ അനുവദിക്കുക. അനുമതി നൽകിയിട്ടുണ്ടെങ്കിൽ, നിങ്ങളുടെ അറിവില്ലാതെ തന്നെ ആപ്പ് ഫയലുകൾ ആക്സസ് ചെയ്തേക്കാം."</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"എല്ലാ ഫയലുകളും ആക്സസ് ചെയ്യാനാവും"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"പൂർണ്ണ സ്ക്രീനിലുള്ള അറിയിപ്പുകൾ"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"ഈ ആപ്പിൽ നിന്നുള്ള പൂർണ്ണ സ്ക്രീൻ അറിയിപ്പുകൾ അനുവദിക്കുക"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"ഉപകരണം ലോക്ക് ചെയ്തിരിക്കുമ്പോൾ അറിയിപ്പുകൾ പൂർണ്ണ സ്ക്രീനിൽ കാണിക്കാൻ ഈ ആപ്പിനെ അനുവദിക്കുക. അലാറങ്ങൾ, ഇൻകമിംഗ് കോളുകൾ അല്ലെങ്കിൽ മറ്റ് അടിയന്തര അറിയിപ്പുകൾ ഹെെലെെറ്റ് ചെയ്യാൻ ആപ്പുകൾ ഇവ ഉപയോഗിച്ചേക്കാം."</string>
diff --git a/res/values-mn/strings.xml b/res/values-mn/strings.xml
index 56c6fcf..fb43ff1 100644
--- a/res/values-mn/strings.xml
+++ b/res/values-mn/strings.xml
@@ -135,7 +135,14 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"Мэдрэгч үзэг"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"Аудио хуваалцах"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"Аудиог хуваалцах"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"Дуудлага болон сэрүүлгүүд"</string>
+ <!-- no translation found for audio_sharing_streams_category_title (862958129650324581) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_pref_title (4636293245167657721) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_title (8269455097512153101) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_qr_code_summary (4231875597377863735) -->
<skip />
<string name="date_and_time" msgid="1788358029823431692">"Огноо, цаг"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"Прокси"</string>
@@ -540,24 +547,15 @@
<string name="private_space_title" msgid="7078627930195569767">"Хувийн орон зай"</string>
<string name="private_space_summary" msgid="8237652417163408001">"Аппуудыг хувийн фолдерт нуух"</string>
<string name="private_space_one_lock_title" msgid="7306547190751832568">"Дэлгэцийн түгжээг ашиглан түгжээг тайлах"</string>
- <!-- no translation found for private_space_hide_title (8687034008994037610) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_title (972581369094289386) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_summary (1052569521186403642) -->
- <skip />
- <!-- no translation found for privatespace_access_header (982809349769470185) -->
- <skip />
- <!-- no translation found for privatespace_search_description (983837656432484282) -->
- <skip />
- <!-- no translation found for privatespace_tap_tile_description (4146608898639668340) -->
- <skip />
- <!-- no translation found for privatespace_unlock_description (4132755357482447360) -->
- <skip />
- <!-- no translation found for privatespace_hide_off_summary (7227778747159633671) -->
- <skip />
- <!-- no translation found for privatespace_hide_on_summary (6136704537527640183) -->
- <skip />
+ <string name="private_space_hide_title" msgid="8687034008994037610">"Түгжсэн үед нуух"</string>
+ <string name="privatespace_hide_page_title" msgid="972581369094289386">"Түгжээтэй үед Private Space-г нуух"</string>
+ <string name="privatespace_hide_page_summary" msgid="1052569521186403642">"Таны төхөөрөмжид Private Space байгааг бусад хүнд мэдэгдэхгүй байхын тулд та үүнийг аппуудынхаа жагсаалтаас нууж болно"</string>
+ <string name="privatespace_access_header" msgid="982809349769470185">"Нуусан үед Private Space-т хандах"</string>
+ <string name="privatespace_search_description" msgid="983837656432484282">"Хайлтын талбарт \'Private Space\'-г хайна уу"</string>
+ <string name="privatespace_tap_tile_description" msgid="4146608898639668340">"Private Space-н хавтанг товшино уу"</string>
+ <string name="privatespace_unlock_description" msgid="4132755357482447360">"Өөрийн Private Space-н түгжээг тайлна уу"</string>
+ <string name="privatespace_hide_off_summary" msgid="7227778747159633671">"Унтраалттай"</string>
+ <string name="privatespace_hide_on_summary" msgid="6136704537527640183">"Асаалттай"</string>
<string name="private_space_category_system" msgid="1286843321867285700">"Систем"</string>
<string name="private_space_create_title" msgid="47273568884806726">"Хувийн орон зай үүсгэх"</string>
<string name="private_space_delete_title" msgid="3075645119800272800">"Хувийн орон зайг устгах"</string>
@@ -570,54 +568,30 @@
<string name="no_device_lock_summary" msgid="7653477413589207824">"Хувийн орон зайг ашиглах бол уг төхөөрөмжид дэлгэцийн түгжээ тохируулна уу."</string>
<string name="no_device_lock_action_label" msgid="2640487005629001288">"Дэлгэцийн түгжээ тохируулах"</string>
<string name="no_device_lock_cancel" msgid="4412602160321228863">"Цуцлах"</string>
- <!-- no translation found for privatespace_cancel_label (362351004019511784) -->
- <skip />
- <!-- no translation found for privatespace_setup_button_label (3696372546231047258) -->
- <skip />
- <!-- no translation found for privatespace_setup_title (177623114624330394) -->
- <skip />
- <!-- no translation found for privatespace_hide_apps_summary (4016518749055602268) -->
- <skip />
- <!-- no translation found for privatespace_how_title (8794102046435526065) -->
- <skip />
- <!-- no translation found for privatespace_access_bottom_text (1075244097441349030) -->
- <skip />
- <!-- no translation found for privatespace_protected_lock_text (7320604832432017423) -->
- <skip />
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_cancel_label" msgid="362351004019511784">"Цуцлах"</string>
+ <string name="privatespace_setup_button_label" msgid="3696372546231047258">"Тохируулах"</string>
+ <string name="privatespace_setup_title" msgid="177623114624330394">"Private Space-г тохируулах"</string>
+ <string name="privatespace_hide_apps_summary" msgid="4016518749055602268">"Хувийн аппуудыг зөвхөн та өөрөө хандах боломжтой аюулгүй газарт нууна уу"</string>
+ <string name="privatespace_how_title" msgid="8794102046435526065">"Энэ хэрхэн ажилладаг вэ?"</string>
+ <string name="privatespace_access_bottom_text" msgid="1075244097441349030">"Та Private Space-т аппуудын жагсаалтынхаа доод талаас хандах боломжтой"</string>
+ <string name="privatespace_protected_lock_text" msgid="7320604832432017423">"Private Space-н аппуудыг түгжээгээр хамгаалдаг"</string>
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"Private Space түгжээтэй үед түүний аппуудын мэдэгдлийг нуудаг"</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"Private Space түгжээтэй үед Private Space-н аппууд зөвшөөрлийн менежер, нууцлалын хяналтын самбар болон бусад тохиргоонд харагдахгүй"</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"Private Space-г тохируулж байна…"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"Private Space-г түгжээгээр хамгаалдаг"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"Private Space-г түгжээтэй үед түүний аппуудын ашиглалтын мэдээллийг нуудаг"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"Аппуудын жагсаалтаасаа Private Space-т хандах"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"Private Space-г тохируулж чадсангүй"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"Одоо дахин оролдох эсвэл дараа буцаж ирнэ үү"</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"Дахин оролдох"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"Түгжээг тайлахад дэлгэцийн түгжээг ашиглах уу?"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"Та Private Space-н түгжээг төхөөрөмжийнхөө түгжээг тайлдагтайгаа ижил аргаар тайлах эсвэл өөр түгжээ сонгох боломжтой"</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"Дэлгэцийн түгжээг ашиглах"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"Шинэ түгжээ сонгох"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"Тохируулж дууслаа!"</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"Private Space-т хандахын тулд үндсэн нүүрнийхээ доод талаас дээш шударч, дараа нь доош гүйлгэнэ үү"</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"Болсон"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"Private Space-т хандахын тулд доош гүйлгэнэ үү"</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"Та <xliff:g id="COUNT">%d</xliff:g> хүртэлх хурууны хээ нэмж болно"</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"Таны зөвшөөрөгдсөн хурууны хээний тоо гүйцсэн байна"</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"Өөр хурууны хээ нэмэх боломжгүй байна"</string>
@@ -1135,8 +1109,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"Эвхэгддэг дэлгэцэд аппуудыг үргэлжлүүлэн ашиглах"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"Smooth Display"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"Зарим контентын сэргээх хурдыг <xliff:g id="ID_1">%1$d</xliff:g> Гц болгож автоматаар өсгөнө. Батарей ашиглалтыг нэмэгдүүлнэ."</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"Сэргээх хамгийн өндөр хурдыг хүчлэх"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"Хүрэлтийн хариу үйлдэл болон анимацийн чанарыг сайжруулахад зориулсан хамгийн өндөр сэргээх хурд юм. Батарей ашиглалтыг нэмэгдүүлнэ."</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"Соргог дэлгэц"</string>
@@ -1372,6 +1345,8 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"Нийтийн тохиргоо"</string>
<string name="apn_settings" msgid="4295467389400441299">"APNs"</string>
<string name="apn_edit" msgid="2003683641840248741">"Хандалтын цэгийг засах"</string>
+ <!-- no translation found for apn_add (9069613192201630934) -->
+ <skip />
<string name="apn_not_set" msgid="8246646433109750293">"Тохируулаагүй"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"Тохируулаагүй"</string>
<string name="apn_name" msgid="6677695784108157953">"Нэр"</string>
@@ -2006,12 +1981,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"Нээхийн тулд хандалтын товчлуурыг ашиглах"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"Нээхийн тулд дууны түвшний түлхүүрүүдийг удаан дар"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"Нээхийн тулд дэлгэцийг гурав товшино уу"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"Нээхийн тулд хоёр хуруугаараа дэлгэцийг гурав товшино уу"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"Нээхийн тулд зангааг ашиглах"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"Хандалтын зангаа ашиглах"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"Энэ онцлогийг ашиглахын тулд дэлгэцийнхээ доод хэсэгт байрлах хандалтын товчлуур <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> дээр товшино уу.\n\nОнцлогуудын хооронд сэлгэхийн тулд хандалтын товчлуур дээр удаан дарна уу."</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"Энэ онцлогийг ашиглахын тулд дэлгэц дээрх хандалтын товчлуурыг товшино уу."</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"Энэ онцлогийг ашиглахын тулд дууны түвшний түлхүүрүүдийг зэрэг удаан дарна уу."</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"Томруулахыг эхлүүлэх болон зогсоохын тулд дэлгэцийнхээ аль нэг хэсэгт гурав товшино уу."</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"Томруулахыг эхлүүлэх болон зогсоохын тулд хоёр хуруугаараа дэлгэцийнхээ аль нэг хэсэгт гурав товш."</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"Энэ онцлогийг ашиглахын тулд дэлгэцийн доод хэсгээс 2 хуруугаараа дээш шударна уу.\n\nОнцлогуудын хооронд сэлгэхийн тулд 2 хуруугаараа дээш шударч, удаан дарна уу."</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"Энэ онцлогийг ашиглахын тулд дэлгэцийн доод хэсгээс 3 хуруугаараа дээш шударна уу.\n\nОнцлогуудын хооронд сэлгэхийн тулд 3 хуруугаараа дээш шударч, удаан дарна уу."</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"Хандалтын онцлогийг ашиглахын тулд дэлгэцийн доод хэсгээс 2 хуруугаараа дээш шударна уу.\n\nОнцлогуудын хооронд сэлгэхийн тулд 2 хуруугаараа дээш шударч, удаан дарна уу."</string>
@@ -2033,12 +2010,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"Дууны түвшний товчийг удаан дарах"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"дууны түвшний түлхүүрийг удаан дарах"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"Дууны түвшний хоёр товчийг зэрэг удаан дарна уу"</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"Дэлгэцийг хоёр хуруугаараа гурав товшино уу"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"дэлгэцийг хоёр хуруугаараа гурав товшино уу"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"Дэлгэцийг хоёр хуруугаараа {0,number,integer} удаа шуурхай товшино уу"</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"Дэлгэцийг гурав товших"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"дэлгэцийг гурав товших"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"Дэлгэцийг {0,number,integer} удаа хурдан товшино уу. Энэ товчлол таны төхөөрөмжийг удаашруулж магадгүй."</string>
@@ -2336,6 +2310,10 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"Та арын үйл ажиллагааг аппад хязгаарласан тохиолдолд апп буруу ажиллаж болзошгүй"</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"Энэ аппыг батарейг оновчлохоор тохируулаагүй тул та үүнийг хязгаарлах боломжгүй.\n\nАппыг хязгаарлахын тулд эхлээд батарейны оновчлолыг асаана уу."</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"Батарей ашиглалтыг удирдах"</string>
+ <!-- no translation found for manager_battery_usage_allow_background_usage_title (6294649996820358852) -->
+ <skip />
+ <!-- no translation found for manager_battery_usage_allow_background_usage_summary (8021153755201340819) -->
+ <skip />
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"Хязгаарлаагүй"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"Оновчилсон"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"Хязгаарласан"</string>
@@ -3846,6 +3824,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"Бүх файлыг удирдахын тулд хандахыг зөвшөөрөх"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"Энэ аппад энэ төхөөрөмж дээрх эсвэл холбогдсон дурын хадгалах сангийн бүх файлыг унших, өөрчлөх болон устгахыг зөвшөөрөх. Зөвшөөрөл олгогдсон бол апп нь танд тодорхойлон мэдэгдэлгүйгээр файлд хандаж болзошгүй."</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"Бүх файлд хандах боломжтой"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"Бүтэн дэлгэцийн мэдэгдэл"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"Энэ аппаас бүтэн дэлгэцийн мэдэгдлийг зөвшөөрөх"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"Төхөөрөмжийг түгжээтэй үед энэ аппад бүтэн дэлгэцийг эзлэх мэдэгдэл харуулахыг зөвшөөрнө үү. Сэрүүлэг, ирсэн дуудлага эсвэл бусад яаралтай мэдэгдлийг онцлоход аппууд эдгээрийг ашиглаж магадгүй."</string>
diff --git a/res/values-mr/strings.xml b/res/values-mr/strings.xml
index eb44af6..8ee6c2c 100644
--- a/res/values-mr/strings.xml
+++ b/res/values-mr/strings.xml
@@ -135,7 +135,14 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"स्टायलस"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"ऑडिओ शेअरिंग"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"ऑडिओ शेअर करा"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"कॉल आणि अलार्म"</string>
+ <!-- no translation found for audio_sharing_streams_category_title (862958129650324581) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_pref_title (4636293245167657721) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_title (8269455097512153101) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_qr_code_summary (4231875597377863735) -->
<skip />
<string name="date_and_time" msgid="1788358029823431692">"तारीख आणि वेळ"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"प्रॉक्सी"</string>
@@ -540,24 +547,15 @@
<string name="private_space_title" msgid="7078627930195569767">"खाजगी स्पेस"</string>
<string name="private_space_summary" msgid="8237652417163408001">"खाजगी फोल्डरमध्ये ॲप्स लपवा"</string>
<string name="private_space_one_lock_title" msgid="7306547190751832568">"स्क्रीन लॉक वापरून अनलॉक करा"</string>
- <!-- no translation found for private_space_hide_title (8687034008994037610) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_title (972581369094289386) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_summary (1052569521186403642) -->
- <skip />
- <!-- no translation found for privatespace_access_header (982809349769470185) -->
- <skip />
- <!-- no translation found for privatespace_search_description (983837656432484282) -->
- <skip />
- <!-- no translation found for privatespace_tap_tile_description (4146608898639668340) -->
- <skip />
- <!-- no translation found for privatespace_unlock_description (4132755357482447360) -->
- <skip />
- <!-- no translation found for privatespace_hide_off_summary (7227778747159633671) -->
- <skip />
- <!-- no translation found for privatespace_hide_on_summary (6136704537527640183) -->
- <skip />
+ <string name="private_space_hide_title" msgid="8687034008994037610">"लॉक केलेली असताना लपवा"</string>
+ <string name="privatespace_hide_page_title" msgid="972581369094289386">"खाजगी स्पेस लॉक केलेली असताना ती लपवा"</string>
+ <string name="privatespace_hide_page_summary" msgid="1052569521186403642">"डिव्हाइसवर खाजगी स्पेस आहे हे इतरांना कळू नये यासाठी ॲप्स सूचीतून ती लपवता येते"</string>
+ <string name="privatespace_access_header" msgid="982809349769470185">"तुमची खाजगी स्पेस लपवलेली असताना अॅक्सेस करा"</string>
+ <string name="privatespace_search_description" msgid="983837656432484282">"शोध बारमध्ये \'खाजगी स्पेस\' शोधा"</string>
+ <string name="privatespace_tap_tile_description" msgid="4146608898639668340">"खाजगी स्पेस च्या टाइलवर टॅप करा"</string>
+ <string name="privatespace_unlock_description" msgid="4132755357482447360">"तुमची खाजगी स्पेस अनलॉक करा"</string>
+ <string name="privatespace_hide_off_summary" msgid="7227778747159633671">"बंद आहे"</string>
+ <string name="privatespace_hide_on_summary" msgid="6136704537527640183">"सुरू आहे"</string>
<string name="private_space_category_system" msgid="1286843321867285700">"सिस्टीम"</string>
<string name="private_space_create_title" msgid="47273568884806726">"खाजगी स्पेस तयार करा"</string>
<string name="private_space_delete_title" msgid="3075645119800272800">"खाजगी स्पेस हटवा"</string>
@@ -570,54 +568,30 @@
<string name="no_device_lock_summary" msgid="7653477413589207824">"खाजगी जागा वापरण्यासाठी, या डिव्हाइसवर स्क्रीन लॉक सेट करा."</string>
<string name="no_device_lock_action_label" msgid="2640487005629001288">"स्क्रीन लॉक सेट करा"</string>
<string name="no_device_lock_cancel" msgid="4412602160321228863">"रद्द करा"</string>
- <!-- no translation found for privatespace_cancel_label (362351004019511784) -->
- <skip />
- <!-- no translation found for privatespace_setup_button_label (3696372546231047258) -->
- <skip />
- <!-- no translation found for privatespace_setup_title (177623114624330394) -->
- <skip />
- <!-- no translation found for privatespace_hide_apps_summary (4016518749055602268) -->
- <skip />
- <!-- no translation found for privatespace_how_title (8794102046435526065) -->
- <skip />
- <!-- no translation found for privatespace_access_bottom_text (1075244097441349030) -->
- <skip />
- <!-- no translation found for privatespace_protected_lock_text (7320604832432017423) -->
- <skip />
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_cancel_label" msgid="362351004019511784">"रद्द करा"</string>
+ <string name="privatespace_setup_button_label" msgid="3696372546231047258">"सेट करा"</string>
+ <string name="privatespace_setup_title" msgid="177623114624330394">"खाजगी स्पेस सेट करा"</string>
+ <string name="privatespace_hide_apps_summary" msgid="4016518749055602268">"फक्त तुम्ही अॅक्सेस करू शकता अशा सुरक्षित जागी खाजगी ॲप्स लपवा"</string>
+ <string name="privatespace_how_title" msgid="8794102046435526065">"ती कशी काम करते"</string>
+ <string name="privatespace_access_bottom_text" msgid="1075244097441349030">"तुम्ही तुमच्या अॅप्स सूचीच्या तळाशी खाजगी स्पेस अॅक्सेस करू शकता"</string>
+ <string name="privatespace_protected_lock_text" msgid="7320604832432017423">"खाजगी स्पेस मधील ॲप्स लॉकद्वारे संरक्षित केलेली असतात"</string>
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"खाजगी स्पेस लॉक केलेली असताना त्यामधील ॲप्सच्या सूचना लपवल्या जातात"</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"खाजगी स्पेस लॉक केलेली असताना, त्यामधील ॲप्स ही परवानगी व्यवस्थापक, गोपनीयता डॅशबोर्ड आणि इतर सेटिंग्जमध्ये दिसणार नाहीत"</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"खाजगी स्पेस सेट करत आहे…"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"खाजगी स्पेस ही लॉकद्वारे संरक्षित केलेली आहे"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"खाजगी स्पेस ॲप्सची वापर माहिती लॉक केल्यावर लपवली जाते"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"तुमच्या अॅप सूचीमधून खाजगी स्पेस अॅक्सेस करा"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"खाजगी स्पेस सेट करता आली नाही"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"आता पुन्हा प्रयत्न करा किंवा नंतर परत या"</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"पुन्हा प्रयत्न करा"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"अनलॉक करण्यासाठी स्क्रीन लॉक वापरायचे आहे का?"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"तुम्ही तुमचे डिव्हाइस अनलॉक करता त्याच प्रकारे तुमची खाजगी स्पेस अनलॉक करू शकता किंवा दुसरे लॉक निवडू शकता"</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"स्क्रीन लॉक वापरा"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"नवीन लॉक निवडा"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"सर्व तयार आहे!"</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"खाजगी स्पेस अॅक्सेस करण्यासाठी, तुमच्या होम स्क्रीनच्या तळापासून वर स्वाइप करा, त्यानंतर खाली स्क्रोल करा"</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"पूर्ण झाली"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"खाजगी स्पेस अॅक्सेस करण्यासाठी खाली स्क्रोल करा"</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"तुम्ही <xliff:g id="COUNT">%d</xliff:g> पर्यंत फिंगरप्रिंट जोडू शकता"</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"तुम्ही जास्तीत जास्त फिंगरप्रिंट जोडले आहेत"</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"आणखी फिंगरप्रिंट जोडू शकत नाही"</string>
@@ -1135,8 +1109,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"फोल्डवर ॲप्स वापरणे पुढे सुरू ठेवा"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"स्मूथ डिस्प्ले"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"काही आशयासाठी रिफ्रेश रेट कमाल <xliff:g id="ID_1">%1$d</xliff:g> Hz पर्यंत आपोआप वाढवते. बॅटरी वापर वाढवते."</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"सक्तीने सर्वोच्च रिफ्रेश रेट गाठा"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"सुधारित स्पर्श प्रतिसाद आणि अॅनिमेशन गुणवत्तेसाठी उच्चतम रिफ्रेश रेट. बॅटरी वापर वाढवतो."</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"स्क्रीन अटेंशन"</string>
@@ -1372,6 +1345,8 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"सामुदायिक सेटिंग्ज"</string>
<string name="apn_settings" msgid="4295467389400441299">"APN"</string>
<string name="apn_edit" msgid="2003683641840248741">"अॅक्सेस पॉइंट संपादित करा"</string>
+ <!-- no translation found for apn_add (9069613192201630934) -->
+ <skip />
<string name="apn_not_set" msgid="8246646433109750293">"सेट नाही"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"सेट केलेले नाही"</string>
<string name="apn_name" msgid="6677695784108157953">"नाव"</string>
@@ -2006,12 +1981,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"उघडण्यासाठी अॅक्सेसिबिलिटी बटण वापरा"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"उघडण्यासाठी व्हॉल्यूम की धरून ठेवा"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"उघडण्यासाठी स्क्रीनवर तीनदा टॅप करा"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"उघडण्यासाठी स्क्रीनवर दोन बोटांनी तीन वेळा टॅप करा"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"उघडण्यासाठी जेश्चर वापरा"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"ॲक्सेसिबिलिटी जेश्चर वापरा"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"हे वैशिष्ट्य वापरण्यासाठी, तुमच्या स्क्रीनच्या तळाशी असलेले ॲक्सेसिबिलिटी बटणावर <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> टॅप करा.\n\nवैशिष्टयांदरम्यान स्विच करण्यासाठी ॲक्सेसिबिलिटी बटणाला स्पर्श करा आणि धरून ठेवा."</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"हे वैशिष्ट्य वापरण्यासाठी, तुमच्या स्क्रीनवरील अॅक्सेसिबिलिटी बटणावर टॅप करा."</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"हे वैशिष्ट्य वापरण्यासाठी, दोन्ही व्हॉल्यूम की प्रेस करून धरून ठेवा."</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"मॅग्निफिकेशन सुरू करण्यासाठी आणि थांबवण्यासाठी तुमच्या स्क्रीनवर कुठेही तीनदा टॅप करा."</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"मॅग्निफिकेशन सुरू करण्यासाठी आणि थांबवण्यासाठी तुमच्या स्क्रीनवर दोन बोटांनी कुठेही तीनदा टॅप करा."</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"हे वैशिष्ट्य वापरण्यासाठी, दोन बोटांनी स्क्रीनच्या तळापासून वर स्वाइप करा.\n\nवैशिष्ट्यांदरम्यान स्विच करण्यासाठी दोन बोटांनी वर स्वाइप करा आणि धरून ठेवा."</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"हे वैशिष्ट्य वापरण्यासाठी, तीन बोटांनी स्क्रीनच्या तळापासून वर स्वाइप करा.\n\nवैशिष्ट्यांदरम्यान स्विच करण्यासाठी तीन बोटांनी वर स्वाइप करा आणि धरून ठेवा."</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"ॲक्सेसिबिलिटी वैशिष्ट्य वापरण्यासाठी, दोन बोटांनी स्क्रीनच्या तळापासून वर स्वाइप करा.\n\nवैशिष्ट्यांदरम्यान स्विच करण्यासाठी दोन बोटांनी वर स्वाइप करा आणि धरून ठेवा."</string>
@@ -2033,12 +2010,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"व्हॉल्यूम की प्रेस करून ठेवा"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"व्हॉल्यूम की प्रेस करून ठेवा"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"दोन्ही व्हॉल्यूम की प्रेस करून धरून ठेवा"</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"स्क्रीनवर दोन बोटांनी तीन वेळा टॅप करा"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"स्क्रीनवर दोन बोटांनी तीन वेळा टॅप करा"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"दोन बोटांनी स्क्रीनवर {0,number,integer} वेळा झटपट टॅप करा"</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"स्क्रीनवर तीन वेळा टॅप करा"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"स्क्रीनवर तीन वेळा टॅप करा"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"स्क्रीनवर झटपट {0,number,integer} वेळा टॅप करा. हा शॉर्टकट तुमच्या डिव्हाइसचा वेग कमी करू शकताे"</string>
@@ -2336,6 +2310,10 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"तुम्ही एखाद्या ॲपसाठी बॅकग्राउंड ॲक्टिव्हिटी मर्यादित ठेवल्यास, ते व्यवस्थित न चालण्याची शक्यता आहे"</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"हे अॅप बॅटरी ऑप्टिमाइझ करण्यासाठी सेट केलेले नसल्याने, तुम्ही ते प्रतिबंधित करू शकत नाही.\n\nअॅप प्रतिबंधित करण्यासाठी, प्रथम बॅटरी ऑप्टिमायझेशन सुरू करा"</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"बॅटरीचा वापर व्यवस्थापित करा"</string>
+ <!-- no translation found for manager_battery_usage_allow_background_usage_title (6294649996820358852) -->
+ <skip />
+ <!-- no translation found for manager_battery_usage_allow_background_usage_summary (8021153755201340819) -->
+ <skip />
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"कोणताही प्रतिबंध नाही"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"ऑप्टिमाइझ केली"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"प्रतिबंधित"</string>
@@ -3846,6 +3824,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"सर्व फाइल व्यवस्थापनासाठी अॅक्सेस द्या"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"या ॲपला या डिव्हाइसवरील किंवा कनेक्ट केलेल्या स्टोरेज व्हॉल्यूममधील सर्व फाइल वाचण्याची, सुधारित करण्याची आणि हटवण्याची अनुमती द्या. अनुमती दिली असल्यास, ॲप कदाचित तुम्हाला न विचारता फाइलला अॅक्सेस करू शकते"</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"सर्व फाइल अॅक्सेस करू शकते"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"फुल स्क्रीन सूचना"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"या ॲपवरील फुल स्क्रीन सूचनांना अनुमती द्या"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"डिव्हाइस लॉक असताना या ॲपला फुल स्क्रीन वापरणाऱ्या सूचना दाखवण्याची अनुमती द्या. ॲप्स यांचा वापर अलार्म, इनकमिंग कॉल किंवा इतर तातडीच्या सूचना हायलाइट करण्यासाठी करू शकतात."</string>
diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml
index 5bf4a4e..b8d4078 100644
--- a/res/values-ms/strings.xml
+++ b/res/values-ms/strings.xml
@@ -135,7 +135,14 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"Stilus"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"Perkongsian audio"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"Kongsi audio"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"Panggilan dan penggera"</string>
+ <!-- no translation found for audio_sharing_streams_category_title (862958129650324581) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_pref_title (4636293245167657721) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_title (8269455097512153101) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_qr_code_summary (4231875597377863735) -->
<skip />
<string name="date_and_time" msgid="1788358029823431692">"Tarikh & masa"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"Proksi"</string>
@@ -540,24 +547,15 @@
<string name="private_space_title" msgid="7078627930195569767">"Ruang Peribadi"</string>
<string name="private_space_summary" msgid="8237652417163408001">"Sembunyikan apl dalam folder peribadi"</string>
<string name="private_space_one_lock_title" msgid="7306547190751832568">"Buka kunci menggunakan kunci skrin"</string>
- <!-- no translation found for private_space_hide_title (8687034008994037610) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_title (972581369094289386) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_summary (1052569521186403642) -->
- <skip />
- <!-- no translation found for privatespace_access_header (982809349769470185) -->
- <skip />
- <!-- no translation found for privatespace_search_description (983837656432484282) -->
- <skip />
- <!-- no translation found for privatespace_tap_tile_description (4146608898639668340) -->
- <skip />
- <!-- no translation found for privatespace_unlock_description (4132755357482447360) -->
- <skip />
- <!-- no translation found for privatespace_hide_off_summary (7227778747159633671) -->
- <skip />
- <!-- no translation found for privatespace_hide_on_summary (6136704537527640183) -->
- <skip />
+ <string name="private_space_hide_title" msgid="8687034008994037610">"Sembunyikan apabila dikunci"</string>
+ <string name="privatespace_hide_page_title" msgid="972581369094289386">"Sembunyikan Ruang Peribadi apabila dikunci"</string>
+ <string name="privatespace_hide_page_summary" msgid="1052569521186403642">"Sembunyikan Ruang Peribadi daripada senarai apl anda supaya tidak diketahui pengguna lain"</string>
+ <string name="privatespace_access_header" msgid="982809349769470185">"Akses Ruang Peribadi apabila disembunyikan"</string>
+ <string name="privatespace_search_description" msgid="983837656432484282">"Cari \'Ruang Peribadi\' dalam bar carian"</string>
+ <string name="privatespace_tap_tile_description" msgid="4146608898639668340">"Ketik jubin Ruang Peribadi"</string>
+ <string name="privatespace_unlock_description" msgid="4132755357482447360">"Buka kunci Ruang Peribadi anda"</string>
+ <string name="privatespace_hide_off_summary" msgid="7227778747159633671">"Mati"</string>
+ <string name="privatespace_hide_on_summary" msgid="6136704537527640183">"Hidup"</string>
<string name="private_space_category_system" msgid="1286843321867285700">"Sistem"</string>
<string name="private_space_create_title" msgid="47273568884806726">"Buat Ruang Peribadi"</string>
<string name="private_space_delete_title" msgid="3075645119800272800">"Padamkan Ruang Peribadi"</string>
@@ -570,54 +568,30 @@
<string name="no_device_lock_summary" msgid="7653477413589207824">"Untuk Ruang Peribadi, tetapkan kunci skrin pada peranti ini."</string>
<string name="no_device_lock_action_label" msgid="2640487005629001288">"Tetapkan kunci skrin"</string>
<string name="no_device_lock_cancel" msgid="4412602160321228863">"Batal"</string>
- <!-- no translation found for privatespace_cancel_label (362351004019511784) -->
- <skip />
- <!-- no translation found for privatespace_setup_button_label (3696372546231047258) -->
- <skip />
- <!-- no translation found for privatespace_setup_title (177623114624330394) -->
- <skip />
- <!-- no translation found for privatespace_hide_apps_summary (4016518749055602268) -->
- <skip />
- <!-- no translation found for privatespace_how_title (8794102046435526065) -->
- <skip />
- <!-- no translation found for privatespace_access_bottom_text (1075244097441349030) -->
- <skip />
- <!-- no translation found for privatespace_protected_lock_text (7320604832432017423) -->
- <skip />
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_cancel_label" msgid="362351004019511784">"Batal"</string>
+ <string name="privatespace_setup_button_label" msgid="3696372546231047258">"Persediaan"</string>
+ <string name="privatespace_setup_title" msgid="177623114624330394">"Sediakan Ruang Peribadi"</string>
+ <string name="privatespace_hide_apps_summary" msgid="4016518749055602268">"Sembunyikan apl peribadi dalam ruang selamat yang hanya boleh diakses oleh anda"</string>
+ <string name="privatespace_how_title" msgid="8794102046435526065">"Cara apl ini berfungsi"</string>
+ <string name="privatespace_access_bottom_text" msgid="1075244097441349030">"Anda boleh mengakses Ruang Peribadi daripada bahagian bawah senarai apl anda"</string>
+ <string name="privatespace_protected_lock_text" msgid="7320604832432017423">"Apl dalam Ruang Peribadi dilindungi dengan kunci"</string>
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"Pemberitahuan daripada apl dalam Ruang Peribadi disembunyikan apabila apl dikunci"</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"Apl Ruang Peribadi tidak dipaparkan dalam pengurus kebenaran, papan pemuka privasi dan tetapan lain apabila Ruang Peribadi dikunci"</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"Menyediakan Ruang Peribadi…"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"Ruang Peribadi dilindungi dengan kunci"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"Maklumat penggunaan untuk apl Ruang Peribadi disembunyikan apabila ap dikunci"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"Akses Ruang Peribadi daripada senarai apl anda"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"Tidak dapat menyediakan Ruang Peribadi"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"Cuba lagi sekarang atau kembali sebentar lagi"</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"Cuba Lagi"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"Gunakan kunci skrin untuk membuka kunci?"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"Anda boleh membuka kunci Ruang Peribadi menggunakan cara yang sama seperti anda membuka kunci peranti anda atau memilih kunci yang lain"</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"Gunakan kunci skrin"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"Pilih kunci baharu"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"Siap!"</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"Untuk mengakses Ruang Peribadi, leret ke atas dari bahagian bawah skrin utama anda, kemudian tatal ke bawah"</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"Selesai"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"Tatal ke bawah untuk mengakses Ruang Peribadi"</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"Anda boleh menambah sehingga <xliff:g id="COUNT">%d</xliff:g> cap jari"</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"Anda telah menambahkan bilangan maksimum cap jari"</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"Tidak boleh menambahkan lagi cap jari"</string>
@@ -1135,8 +1109,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"Terus menggunakan apl semasa dilipat"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"Smooth Display"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"Meningkatkan kadar segar semula hingga <xliff:g id="ID_1">%1$d</xliff:g> Hz untuk sesetengah kandungan secara automatik. Meningkatkan penggunaan bateri."</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"Paksa kadar muat semula puncak"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"Kadar muat semula tertinggi untuk keresponsifan sentuhan & kualiti animasi yang dipertingkat. Meningkatkan penggunaan bateri."</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"Perhatian skrin"</string>
@@ -1372,6 +1345,8 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"Tetapan umum"</string>
<string name="apn_settings" msgid="4295467389400441299">"APN"</string>
<string name="apn_edit" msgid="2003683641840248741">"Edit titik capaian"</string>
+ <!-- no translation found for apn_add (9069613192201630934) -->
+ <skip />
<string name="apn_not_set" msgid="8246646433109750293">"Tidak ditetapkan"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"Tidak ditetapkan"</string>
<string name="apn_name" msgid="6677695784108157953">"Nama"</string>
@@ -2006,12 +1981,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"Gunakan butang kebolehaksesan untuk buka"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"Tahan kekunci kelantangan untuk buka"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"Ketik skrin tiga kali untuk buka"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"Ketik skrin tiga kali menggunakan dua jari untuk membuka"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"Gunakan gerak isyarat untuk buka"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"Gunakan gerak isyarat kebolehaksesan"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"Untuk menggunakan ciri ini, ketik butang kebolehaksesan <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> di bahagian bawah skrin anda.\n\nUntuk menukar antara ciri, sentuh & tahan butang kebolehaksesan."</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"Untuk menggunakan ciri ini, ketik butang kebolehaksesan pada skrin anda."</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"Untuk menggunakan ciri ini, tekan & tahan kedua-dua kekunci kelantangan."</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"Untuk memulakan dan menghentikan pembesaran, ketik tiga kali di mana-mana bahagian skrin anda."</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"Untuk memulakan dan menghentikan pembesaran, ketik tiga kali pada skrin anda menggunakan dua jari."</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"Untuk menggunakan ciri ini, leret ke atas dari bahagian bawah skrin dengan menggunakan 2 jari.\n\nUntuk menukar antara ciri, leret ke atas dengan menggunakan 2 jari dan tahan."</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"Untuk menggunakan ciri ini, leret ke atas dari bahagian bawah skrin dengan menggunakan 3 jari.\n\nUntuk menukar antara ciri, leret ke atas dengan menggunakan 3 jari dan tahan."</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"Untuk menggunakan ciri kebolehcapaian, leret ke atas dari bahagian bawah skrin dengan menggunakan 2 jari.\n\nUntuk menukar antara ciri, leret ke atas dengan menggunakan 2 hari dan tahan."</string>
@@ -2033,12 +2010,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"Tahan kekunci kelantangan"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"tahan kekunci kelantangan"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"Tekan & tahan kedua-dua kekunci kelantangan"</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"Ketik skrin tiga kali menggunakan dua jari"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"ketik skrin tiga kali menggunakan dua jari"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"Ketik skrin {0,number,integer} kali dengan cepat menggunakan dua jari"</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"Ketik tiga kali pada skrin"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"ketik tiga kali pada skrin"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"Ketik skrin {0,number,integer} kali dengan pantas. Pintasan ini mungkin memperlahankan peranti anda"</string>
@@ -2336,6 +2310,10 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"Jika anda mengehadkan aktiviti latar belakang untuk apl, fungsi apl itu mungkin terganggu"</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"Apl ini tidak boleh dihadkan kerana tidak ditetapkan untuk mengoptimumkan bateri.\n\nHidupkan pengoptimuman bateri dahulu."</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"Urus penggunaan bateri"</string>
+ <!-- no translation found for manager_battery_usage_allow_background_usage_title (6294649996820358852) -->
+ <skip />
+ <!-- no translation found for manager_battery_usage_allow_background_usage_summary (8021153755201340819) -->
+ <skip />
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"Tiada sekatan"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"Dioptimumkan"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"Terhad"</string>
@@ -3846,6 +3824,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"Benarkan akses untuk mengurus semua fail"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"Benarkan apl ini membaca, mengubah suai dan memadamkan semula fail pada peranti ini atau mana-mana unit storan yang disambungkan. Jika dibenarkan, apl mungkin mengakses fail tanpa pengetahuan anda secara jelas."</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"Boleh mengakses semua fail"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"Pemberitahuan skrin penuh"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"Benarkan pemberitahuan skrin penuh daripada apl ini"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"Benarkan apl ini untuk memaparkan pemberitahuan menggunakan skrin penuh apabila peranti dikunci. Apl mungkin menggunakan ciri ini untuk menyerlahkan penggera, panggilan masuk atau pemberitahuan mustahak yang lain."</string>
diff --git a/res/values-my/strings.xml b/res/values-my/strings.xml
index 4d723dcc..12a13ad 100644
--- a/res/values-my/strings.xml
+++ b/res/values-my/strings.xml
@@ -135,7 +135,14 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"စတိုင်လပ်စ်"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"အသံမျှဝေခြင်း"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"အသံမျှဝေရန်"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"ခေါ်ဆိုမှုနှင့် နှိုးစက်များ"</string>
+ <!-- no translation found for audio_sharing_streams_category_title (862958129650324581) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_pref_title (4636293245167657721) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_title (8269455097512153101) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_qr_code_summary (4231875597377863735) -->
<skip />
<string name="date_and_time" msgid="1788358029823431692">"ရက်စွဲနှင့် အချိန်"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"ပရောက်စီ"</string>
@@ -540,24 +547,15 @@
<string name="private_space_title" msgid="7078627930195569767">"သီးသန့်ချတ်ခန်း"</string>
<string name="private_space_summary" msgid="8237652417163408001">"အက်ပ်များကို သီးသန့်ဖိုင်တွဲတွင် ဖျောက်နိုင်သည်"</string>
<string name="private_space_one_lock_title" msgid="7306547190751832568">"ဖန်သားပြင်လော့ခ်သုံး၍ ဖွင့်ရန်"</string>
- <!-- no translation found for private_space_hide_title (8687034008994037610) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_title (972581369094289386) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_summary (1052569521186403642) -->
- <skip />
- <!-- no translation found for privatespace_access_header (982809349769470185) -->
- <skip />
- <!-- no translation found for privatespace_search_description (983837656432484282) -->
- <skip />
- <!-- no translation found for privatespace_tap_tile_description (4146608898639668340) -->
- <skip />
- <!-- no translation found for privatespace_unlock_description (4132755357482447360) -->
- <skip />
- <!-- no translation found for privatespace_hide_off_summary (7227778747159633671) -->
- <skip />
- <!-- no translation found for privatespace_hide_on_summary (6136704537527640183) -->
- <skip />
+ <string name="private_space_hide_title" msgid="8687034008994037610">"လော့ခ်ချထားချိန်တွင် ဖျောက်ရန်"</string>
+ <string name="privatespace_hide_page_title" msgid="972581369094289386">"‘သီးသန့်ချတ်ခန်း’ လော့ခ်ချထားချိန်တွင် ဖျောက်ရန်"</string>
+ <string name="privatespace_hide_page_summary" msgid="1052569521186403642">"သင့်စက်၌ ‘သီးသန့်ချတ်ခန်း’ ရှိကြောင်း အခြားသူများ မသိတော့စေရန် ၎င်းကို သင့်အက်ပ်စာရင်းမှ ဖျောက်နိုင်သည်"</string>
+ <string name="privatespace_access_header" msgid="982809349769470185">"‘သီးသန့်ချတ်ခန်း’ ကို ဖျောက်ထားချိန်တွင် သုံးခြင်း"</string>
+ <string name="privatespace_search_description" msgid="983837656432484282">"ရှာဖွေမှုဘားတွင် ‘သီးသန့်ချတ်ခန်း’ ရှာရန်"</string>
+ <string name="privatespace_tap_tile_description" msgid="4146608898639668340">"‘သီးသန့်ချတ်ခန်း’ အကွက်ငယ်ကို တို့ရန်"</string>
+ <string name="privatespace_unlock_description" msgid="4132755357482447360">"‘သီးသန့်ချတ်ခန်း’ ကို ဖွင့်ရန်"</string>
+ <string name="privatespace_hide_off_summary" msgid="7227778747159633671">"ပိတ်"</string>
+ <string name="privatespace_hide_on_summary" msgid="6136704537527640183">"ဖွင့်"</string>
<string name="private_space_category_system" msgid="1286843321867285700">"စနစ်"</string>
<string name="private_space_create_title" msgid="47273568884806726">"‘သီးသန့်ချတ်ခန်း’ ပြုလုပ်ရန်"</string>
<string name="private_space_delete_title" msgid="3075645119800272800">"‘သီးသန့်ချတ်ခန်း’ ဖျက်ရန်"</string>
@@ -570,54 +568,30 @@
<string name="no_device_lock_summary" msgid="7653477413589207824">"‘သီးသန့်ချတ်ခန်း’ သုံးရန် ဤစက်၌ ဖန်သားပြင်လော့ခ် သတ်မှတ်ပါ။"</string>
<string name="no_device_lock_action_label" msgid="2640487005629001288">"ဖန်သားပြင်လော့ခ် သတ်မှတ်ရန်"</string>
<string name="no_device_lock_cancel" msgid="4412602160321228863">"မလုပ်တော့"</string>
- <!-- no translation found for privatespace_cancel_label (362351004019511784) -->
- <skip />
- <!-- no translation found for privatespace_setup_button_label (3696372546231047258) -->
- <skip />
- <!-- no translation found for privatespace_setup_title (177623114624330394) -->
- <skip />
- <!-- no translation found for privatespace_hide_apps_summary (4016518749055602268) -->
- <skip />
- <!-- no translation found for privatespace_how_title (8794102046435526065) -->
- <skip />
- <!-- no translation found for privatespace_access_bottom_text (1075244097441349030) -->
- <skip />
- <!-- no translation found for privatespace_protected_lock_text (7320604832432017423) -->
- <skip />
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_cancel_label" msgid="362351004019511784">"မလုပ်တော့"</string>
+ <string name="privatespace_setup_button_label" msgid="3696372546231047258">"စနစ်ထည့်သွင်းရန်"</string>
+ <string name="privatespace_setup_title" msgid="177623114624330394">"‘သီးသန့်ချတ်ခန်း’ ကို စနစ်ထည့်သွင်းပါ"</string>
+ <string name="privatespace_hide_apps_summary" msgid="4016518749055602268">"သင်သာ ဝင်နိုင်သည့် လုံခြုံသောချတ်ခန်းရှိ သီးသန့်အက်ပ်များကို ဖျောက်ပါ"</string>
+ <string name="privatespace_how_title" msgid="8794102046435526065">"အလုပ်လုပ်ပုံ"</string>
+ <string name="privatespace_access_bottom_text" msgid="1075244097441349030">"‘သီးသန့်ချတ်ခန်း’ ကို သင့်အက်ပ်စာရင်းအောက်ခြေမှ ဝင်နိုင်သည်"</string>
+ <string name="privatespace_protected_lock_text" msgid="7320604832432017423">"‘သီးသန့်ချတ်ခန်း’ ရှိ အက်ပ်များကို လော့ခ်ဖြင့် ကာကွယ်ထားသည်"</string>
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"‘သီးသန့်ချတ်ခန်း’ လော့ခ်ချထားချိန်တွင် ၎င်းရှိ အက်ပ်များမှ အကြောင်းကြားချက်များကို ဖျောက်ထားသည်"</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"‘သီးသန့်ချတ်ခန်း’ လော့ခ်ချထားချိန်တွင် ‘သီးသန့်ချတ်ခန်း’ အက်ပ်များကို ခွင့်ပြုချက်စီမံစနစ်၊ ကိုယ်ရေးအချက်အလက် လုံခြုံမှု ဒက်ရှ်ဘုတ်နှင့် အခြားဆက်တင်များတွင် မြင်ရမည်မဟုတ်ပါ"</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"‘သီးသန့်ချတ်ခန်း’ ကို စနစ်ထည့်သွင်းနေသည်…"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"‘သီးသန့်ချတ်ခန်း’ ကို လော့ခ်ဖြင့် ကာကွယ်ထားသည်"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"လော့ခ်ချထားသောအခါ ‘သီးသန့်ချတ်ခန်း’ အက်ပ်များအတွက် အသုံးပြုမှုအချက်အလက်ကို ဖျောက်ထားသည်"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"သင့်အက်ပ်စာရင်းမှ ‘သီးသန့်ချတ်ခန်း’ သုံးခြင်း"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"‘သီးသန့်ချတ်ခန်း’ ကို စနစ်ထည့်သွင်း၍မရပါ"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"ယခု ထပ်စမ်းကြည့်ပါ (သို့) နောက်မှပြန်လာပါ"</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"ထပ်စမ်းရန်"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"ဖွင့်ရန် ဖန်သားပြင်လော့ခ် သုံးမလား။"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"သင့်စက်ကို ဖွင့်သည့်နည်းတူ ‘သီးသန့်ချတ်ခန်း’ ကို ဖွင့်နိုင်သည် (သို့) အခြားလော့ခ်တစ်ခု ရွေးနိုင်သည်"</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"ဖန်သားပြင်လော့ခ် သုံးရန်"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"လော့ခ်အသစ် ရွေးရန်"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"အားလုံး အသင့်ပါ။"</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"‘သီးသန့်ချတ်ခန်း’ သုံးရန် သင့်ပင်မစာမျက်နှာအောက်ခြေမှ အပေါ်သို့ ပွတ်ဆွဲပြီး အောက်သို့လှိမ့်ပါ"</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"ပြီးပြီ"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"‘သီးသန့်ချတ်ခန်း’ သုံးရန် အောက်လှိမ့်ပါ"</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"လက်ဗွေ <xliff:g id="COUNT">%d</xliff:g> ခု အထိ ထည့်နိုင်သည်"</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"အများဆုံးထည့်နိုင်သည့် လက်ဗွေရာအရေအတွက်အထိ ထည့်သွင်းပြီးဖြစ်သည်"</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"နောက်ထပ်လက်ဗွေရာများ ထည့်၍မရတော့ပါ"</string>
@@ -1135,8 +1109,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"ခေါက်ထားချိန် အက်ပ်များကို ဆက်သုံးရန်"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"Smooth Display"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"အကြောင်းအရာအချို့အတွက် ပြန်လည်စတင်နှုန်းကို <xliff:g id="ID_1">%1$d</xliff:g> Hz အထိ အလိုအလျောက် တိုးပေးသည်။ ဘက်ထရီ အသုံးပြုမှု ပိုများလာပါမည်။"</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"အမြင့်ဆုံး ပြန်လည် စတင်နှုန်းသို့ တွန်းအားပေးရန်"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"ထိတွေ့မှု တုံ့ပြန်အားနှင့် ကာတွန်းပုံအရည်အသွေးပိုကောင်းလာရန် အမြင့်ဆုံးပြန်ဖွင့်မှုနှုန်း။ ဘက်ထရီ အသုံးပြုမှု တိုးလာပါမည်။"</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"ဖန်သားပြင်ကို အာရုံစိုက်ခြင်း"</string>
@@ -1372,6 +1345,8 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"အများသုံး ဆက်တင်များ"</string>
<string name="apn_settings" msgid="4295467389400441299">"APNs"</string>
<string name="apn_edit" msgid="2003683641840248741">"အဝင်ပွိုင့် ပြင်ဆင်ရန်"</string>
+ <!-- no translation found for apn_add (9069613192201630934) -->
+ <skip />
<string name="apn_not_set" msgid="8246646433109750293">"သတ်မှတ်မထားပါ"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"သတ်မှတ်မထားပါ"</string>
<string name="apn_name" msgid="6677695784108157953">"အမည်"</string>
@@ -2006,12 +1981,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"သုံးနိုင်မှုခလုတ်ဖြင့် ဖွင့်ခြင်း"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"အသံခလုတ်များကို နှိပ်၍ဖွင့်ခြင်း"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"ဖွင့်ရန် သုံးချက်တို့ခြင်း"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"ဖွင့်ရန် ဖန်သားပြင်ကို လက်နှစ်ချောင်းဖြင့် သုံးချက်တို့ခြင်း"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"ဖွင့်ရန် လက်ဟန်ကို အသုံးပြုပါ"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"အများသုံးနိုင်မှု လက်ဟန်ကို သုံးပါ"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"ဤဝန်ဆောင်မှု အသုံးပြုရန် သင့်ဖန်သားပြင် အောက်ခြေရှိ သုံးနိုင်မှုခလုတ် <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> ကို တို့ပါ။\n\nဝန်ဆောင်မှုများအကြား ပြောင်းရန် သုံးနိုင်မှုခလုတ်ကို ဖိထားပါ။"</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"ဤဝန်ဆောင်မှုကိုသုံးရန် သင့်ဖန်သားပြင်ပေါ်ရှိ သုံးနိုင်မှုခလုတ်ကို တို့ပါ။"</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"ဤဝန်ဆောင်မှု အသုံးပြုရန် အသံခလုတ် နှစ်ခုလုံးကို နှိပ်ထားပါ။"</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"ချဲ့ခြင်း စတင်ရန်၊ ရပ်ရန် သင့်ဖန်သားပြင်ပေါ် တစ်နေရာရာတွင် သုံးချက်တို့ပါ။"</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"ချဲ့ခြင်း စတင်ရန်၊ ရပ်ရန် သင့်ဖန်သားပြင်ပေါ် တစ်နေရာရာတွင် လက်နှစ်ချောင်းဖြင့် သုံးချက်တို့ပါ။"</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"ဤဝန်ဆောင်မှု အသုံးပြုရန် လက် ၂ ချောင်းဖြင့် ဖန်သားပြင်အောက်ခြေမှ အပေါ်သို့ပွတ်ဆွဲပါ။\n\nဝန်ဆောင်မှုများအကြား ပြောင်းရန် လက် ၂ ချောင်းဖြင့် အပေါ်သို့ပွတ်ဆွဲပြီး ဖိထားပါ။"</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"ဤဝန်ဆောင်မှု အသုံးပြုရန် လက် ၃ ချောင်းဖြင့် ဖန်သားပြင်အောက်ခြေမှ အပေါ်သို့ပွတ်ဆွဲပါ။\n\nဝန်ဆောင်မှုများအကြား ပြောင်းရန် လက် ၃ ချောင်းဖြင့် အပေါ်သို့ပွတ်ဆွဲပြီး ဖိထားပါ။"</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"အများသုံးနိုင်သည့် ဝန်ဆောင်မှုတစ်ခု အသုံးပြုရန် လက် ၂ ချောင်းဖြင့် ဖန်သားပြင်အောက်ခြေမှ အပေါ်သို့ပွတ်ဆွဲပါ။\n\nဝန်ဆောင်မှုများအကြား ပြောင်းရန် လက် ၂ ချောင်းဖြင့် အပေါ်သို့ပွတ်ဆွဲပြီး ဖိထားပါ။"</string>
@@ -2033,12 +2010,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"အသံအတိုးအလျှော့ခလုတ်များကို ဖိထားခြင်း"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"အသံခလုတ်များကို ဖိထားမည်"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"အသံခလုတ်နှစ်ခုလုံးကို နှိပ်ထားပါ"</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"ဖန်သားပြင်ကို လက်နှစ်ချောင်းဖြင့် သုံးချက်တို့ခြင်း"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"ဖန်သားပြင်ကို လက်နှစ်ချောင်းဖြင့် သုံးချက်တို့ရန်"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"ဖန်သားပြင်ကို {0,number,integer} ကြိမ် လက်နှစ်ချောင်းဖြင့် အမြန်တို့ပါ"</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"မျက်နှာပြင်ကို သုံးချက်တို့ပါ"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"ဖန်သားပြင်ကို သုံးချက်တို့ရန်"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"ဖန်သားပြင်ကို {0,number,integer} ကြိမ် အမြန်တို့ပါ။ ဤဖြတ်လမ်းလင့်ခ်သည် သင့်စက်ကို နှေးသွားစေနိုင်သည်"</string>
@@ -2336,6 +2310,10 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"အက်ပ်အတွက် နောက်ခံလုပ်ဆောင်ချက်ကို ကန့်သတ်လိုက်ပါက ပုံမှန်အလုပ်လုပ်မည် မဟုတ်ပါ"</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"ဤအက်ပ်ကို ဘက်ထရီချိန်ညှိသုံးရန် သတ်မှတ်မထားသဖြင့် ကန့်သတ်၍မရပါ။\n\nအက်ပ်ကိုကန့်သတ်ရန် ဘက်ထရီချိန်ညှိသုံးခြင်း အရင်ဖွင့်ပါ။"</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"ဘက်ထရီ အသုံးပြုမှုကို စီမံရန်"</string>
+ <!-- no translation found for manager_battery_usage_allow_background_usage_title (6294649996820358852) -->
+ <skip />
+ <!-- no translation found for manager_battery_usage_allow_background_usage_summary (8021153755201340819) -->
+ <skip />
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"အကန့်အသတ်မဲ့"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"ပိုကောင်းအောင်လုပ်ရန်"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"ကန့်သတ်ရန်"</string>
@@ -3846,6 +3824,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"ဖိုင်အားလုံးကို စီမံရန် သုံးခွင့်ပေးပါ"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"ဤစက်ပစ္စည်း (သို့) ချိတ်ဆက်ထားသော သိုလှောင်နေရာရှိ ဖိုင်များအားလုံးကို ဖတ်ရန်၊ ပြင်ဆင်ရန်နှင့် ဖျက်ရန် ဤအက်ပ်ကို ခွင့်ပြုပါ။ ခွင့်ပြုပြီးပါက အက်ပ်သည် သင့်အား အသိမပေးဘဲ ဖိုင်များကို အသုံးပြုနိုင်ပါမည်။"</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"ဖိုင်အားလုံးကို အသုံးပြုနိုင်သည်"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"ဖန်သားပြင်အပြည့် အကြောင်းကြားချက်များ"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"ဤအက်ပ်မှ ဖန်သားပြင်အပြည့် အကြောင်းကြားချက် ခွင့်ပြုရန်"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"စက်ပစ္စည်းလော့ခ်ချထားစဉ် ဖန်သားပြင်အပြည့် နေရာယူမည့် အကြောင်းကြားချက်များကို ဤအက်ပ်အား ပြသခွင့်ပြုနိုင်သည်။ နှိုးစက်၊ အဝင်ခေါ်ဆိုမှု (သို့) အခြားအရေးတကြီး အကြောင်းကြားချက်များကို မြင်သာအောင်လုပ်ရန် အက်ပ်များက ၎င်းတို့ကို သုံးနိုင်သည်။"</string>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index fd2376b..e8226d8 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -135,7 +135,14 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"Pekepenn"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"Lyddeling"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"Del lyd"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"Anrop og alarmer"</string>
+ <!-- no translation found for audio_sharing_streams_category_title (862958129650324581) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_pref_title (4636293245167657721) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_title (8269455097512153101) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_qr_code_summary (4231875597377863735) -->
<skip />
<string name="date_and_time" msgid="1788358029823431692">"Dato og klokkeslett"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"Proxy-tjener"</string>
@@ -540,24 +547,15 @@
<string name="private_space_title" msgid="7078627930195569767">"Private Space"</string>
<string name="private_space_summary" msgid="8237652417163408001">"Skjul apper i en privat mappe"</string>
<string name="private_space_one_lock_title" msgid="7306547190751832568">"Lås opp med skjermlås"</string>
- <!-- no translation found for private_space_hide_title (8687034008994037610) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_title (972581369094289386) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_summary (1052569521186403642) -->
- <skip />
- <!-- no translation found for privatespace_access_header (982809349769470185) -->
- <skip />
- <!-- no translation found for privatespace_search_description (983837656432484282) -->
- <skip />
- <!-- no translation found for privatespace_tap_tile_description (4146608898639668340) -->
- <skip />
- <!-- no translation found for privatespace_unlock_description (4132755357482447360) -->
- <skip />
- <!-- no translation found for privatespace_hide_off_summary (7227778747159633671) -->
- <skip />
- <!-- no translation found for privatespace_hide_on_summary (6136704537527640183) -->
- <skip />
+ <string name="private_space_hide_title" msgid="8687034008994037610">"Skjul når låst"</string>
+ <string name="privatespace_hide_page_title" msgid="972581369094289386">"Skjul Private Space når låst"</string>
+ <string name="privatespace_hide_page_summary" msgid="1052569521186403642">"For å unngå at andre ser at du har Private Space på telefonen, kan du skjule den i applisten"</string>
+ <string name="privatespace_access_header" msgid="982809349769470185">"Gå til Private Space når den er skjult"</string>
+ <string name="privatespace_search_description" msgid="983837656432484282">"Søk etter «Private Space» i søkefeltet"</string>
+ <string name="privatespace_tap_tile_description" msgid="4146608898639668340">"Trykk på Private Space-brikken"</string>
+ <string name="privatespace_unlock_description" msgid="4132755357482447360">"Lås opp Private Space"</string>
+ <string name="privatespace_hide_off_summary" msgid="7227778747159633671">"Av"</string>
+ <string name="privatespace_hide_on_summary" msgid="6136704537527640183">"På"</string>
<string name="private_space_category_system" msgid="1286843321867285700">"System"</string>
<string name="private_space_create_title" msgid="47273568884806726">"Opprett Private Space"</string>
<string name="private_space_delete_title" msgid="3075645119800272800">"Slett Private Space"</string>
@@ -570,54 +568,30 @@
<string name="no_device_lock_summary" msgid="7653477413589207824">"For å bruke Private Space, angi en skjermlås på enheten."</string>
<string name="no_device_lock_action_label" msgid="2640487005629001288">"Konfigurer en skjermlås"</string>
<string name="no_device_lock_cancel" msgid="4412602160321228863">"Avbryt"</string>
- <!-- no translation found for privatespace_cancel_label (362351004019511784) -->
- <skip />
- <!-- no translation found for privatespace_setup_button_label (3696372546231047258) -->
- <skip />
- <!-- no translation found for privatespace_setup_title (177623114624330394) -->
- <skip />
- <!-- no translation found for privatespace_hide_apps_summary (4016518749055602268) -->
- <skip />
- <!-- no translation found for privatespace_how_title (8794102046435526065) -->
- <skip />
- <!-- no translation found for privatespace_access_bottom_text (1075244097441349030) -->
- <skip />
- <!-- no translation found for privatespace_protected_lock_text (7320604832432017423) -->
- <skip />
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_cancel_label" msgid="362351004019511784">"Avbryt"</string>
+ <string name="privatespace_setup_button_label" msgid="3696372546231047258">"Konfigurer"</string>
+ <string name="privatespace_setup_title" msgid="177623114624330394">"Konfigurer Private Space"</string>
+ <string name="privatespace_hide_apps_summary" msgid="4016518749055602268">"Skjul private apper på et sikkert sted bare du kan gå til"</string>
+ <string name="privatespace_how_title" msgid="8794102046435526065">"Slik fungerer det"</string>
+ <string name="privatespace_access_bottom_text" msgid="1075244097441349030">"Du kan gå til Private Space fra bunnen av applisten"</string>
+ <string name="privatespace_protected_lock_text" msgid="7320604832432017423">"Apper i Private Space er beskyttet med en lås"</string>
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"Varsler fra apper i Private Space er skjult når den er låst"</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"Private Space-apper vises ikke i tillatelseskontroll, personvernoversikt eller andre innstillinger når Private Space er låst"</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"Konfigurerer Private Space …"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"Private Space er beskyttet av en lås"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"Bruksinformasjon for Private Space-apper er skjult når den er låst"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"Åpne Private Space fra applisten"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"Kunne ikke konfigurere Private Space"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"Prøv igjen nå, eller kom tilbake senere"</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"Prøv på nytt"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"Vil du bruke skjermlås for å låse opp?"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"Du kan låse opp Private Space på samme måte som du låser opp enheten, eller du kan velge en annen lås"</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"Bruk skjermlåsen"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"Velg en ny lås"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"Alt er klart!"</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"For å åpne Private Space, sveip opp fra bunnen av startskjermen og rull ned"</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"Ferdig"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"Rull ned for å åpne Private Space"</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"Du kan legge til opptil <xliff:g id="COUNT">%d</xliff:g> fingeravtrykk"</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"Du har lagt til maksimalt antall fingeravtrykk"</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"Kan ikke legge til flere fingeravtrykk"</string>
@@ -1135,8 +1109,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"Fortsett å bruke apper etter sammenlegging"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"Smooth Display"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"Øker oppdateringsfrekvensen automatisk til <xliff:g id="ID_1">%1$d</xliff:g> Hz for noe innhold. Dette øker batteribruken."</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"Maks oppdateringsfrekvens"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"Maksimal oppdateringsfrekvens for bedre trykkfølsomhet og animasjonskvalitet. Øker batteribruken."</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"Skjermoppmerksomhet"</string>
@@ -1372,6 +1345,8 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"Fellesinnstillinger"</string>
<string name="apn_settings" msgid="4295467389400441299">"APN"</string>
<string name="apn_edit" msgid="2003683641840248741">"Rediger tilgangspunkt"</string>
+ <!-- no translation found for apn_add (9069613192201630934) -->
+ <skip />
<string name="apn_not_set" msgid="8246646433109750293">"Ikke angitt"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"Ikke angitt"</string>
<string name="apn_name" msgid="6677695784108157953">"Navn"</string>
@@ -2006,12 +1981,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"Bruk Tilgjengelighet-knappen for å åpne"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"Hold volumtastene for å åpne"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"Trippeltrykk på skjermen for å åpne"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"Trippeltrykk på skjermen med to fingre for å åpne"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"Bruk bevegelse for å åpne"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"Bruk tilgjengelighetsbevegelse"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"For å bruke denne funksjonen må du trykke på Tilgjengelighet-knappen <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> nederst på skjermen.\n\nFor å bytte mellom funksjoner, trykk og hold på Tilgjengelighet-knappen."</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"For å bruke denne funksjonen, trykk på Tilgjengelighet-knappen på skjermen."</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"For å bruke denne funksjonen, trykk og hold inne begge volumtastene."</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"For å starte og stoppe forstørrelse, trippeltrykk hvor som helst på skjermen."</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"For å starte og stoppe forstørring, trippeltrykk hvor som helst på skjermen med to fingre."</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"For å bruke denne funksjonen, sveip opp fra bunnen av skjermen med to fingre.\n\nFor å bytte mellom funksjoner, sveip opp med to fingre og hold."</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"For å bruke denne funksjonen, sveip opp fra bunnen av skjermen med tre fingre.\n\nFor å bytte mellom funksjoner, sveip opp med tre fingre og hold."</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"For å bruke en tilgjengelighetsfunksjon, sveip opp fra bunnen av skjermen med to fingre.\n\nFor å bytte mellom funksjoner, sveip opp med to fingre og hold."</string>
@@ -2033,12 +2010,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"Hold inne volumtastene"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"hold inne volumtastene"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"Trykk og hold inne begge volumtastene"</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"Trippeltrykk på skjermen med to fingre"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"trippeltrykk på skjermen med to fingre"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"Trykk raskt på skjermen {0,number,integer} ganger med to fingre"</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"Trippeltrykk på skjermen"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"trippeltrykk på skjermen"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"Trykk raskt på skjermen {0,number,integer} ganger. Denne snarveien kan gjøre enheten tregere"</string>
@@ -2336,6 +2310,10 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"Hvis du begrenser bakgrunnsaktivitet for en app, kan det oppstå problemer"</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"Du kan ikke begrense appen siden den ikke er satt til å optimalisere batteriet.\n\nFor å begrense appen, slå på batterioptimalisering."</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"Administrer batteribruk"</string>
+ <!-- no translation found for manager_battery_usage_allow_background_usage_title (6294649996820358852) -->
+ <skip />
+ <!-- no translation found for manager_battery_usage_allow_background_usage_summary (8021153755201340819) -->
+ <skip />
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"Ubegrenset"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"Optimalisert"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"Begrenset"</string>
@@ -3846,6 +3824,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"Kan administrere alle filer"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"Gi denne appen tillatelse til å lese, endre og slette alle filer på denne enheten eller tilkoblede lagringsvolum. Hvis du gir appen denne tillatelsen, kan den få tilgang til filer uten at du er klar over det."</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"Har tilgang til alle filer"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"Fullskjermvarsler"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"Tillat fullskjermvarsler fra denne appen"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"La denne appen vise varsler som fyller hele skjermen, når enheten er låst. Apper kan bruke disse til å fremheve alarmer, innkommende anrop eller andre viktige varsler."</string>
diff --git a/res/values-ne/strings.xml b/res/values-ne/strings.xml
index 57eeedc..de28721 100644
--- a/res/values-ne/strings.xml
+++ b/res/values-ne/strings.xml
@@ -135,7 +135,14 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"स्टाइलस"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"अडियो सेयरिङ"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"अडियो सेयर गर्नुहोस्"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"कल तथा अलार्महरू"</string>
+ <!-- no translation found for audio_sharing_streams_category_title (862958129650324581) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_pref_title (4636293245167657721) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_title (8269455097512153101) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_qr_code_summary (4231875597377863735) -->
<skip />
<string name="date_and_time" msgid="1788358029823431692">"मिति र समय"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"प्रोक्सी"</string>
@@ -540,24 +547,15 @@
<string name="private_space_title" msgid="7078627930195569767">"निजी स्पेस"</string>
<string name="private_space_summary" msgid="8237652417163408001">"एपहरू निजी फोल्डरमा लुकाउनुहोस्"</string>
<string name="private_space_one_lock_title" msgid="7306547190751832568">"स्क्रिन लक प्रयोग गरेर अनलक गर्नुहोस्"</string>
- <!-- no translation found for private_space_hide_title (8687034008994037610) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_title (972581369094289386) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_summary (1052569521186403642) -->
- <skip />
- <!-- no translation found for privatespace_access_header (982809349769470185) -->
- <skip />
- <!-- no translation found for privatespace_search_description (983837656432484282) -->
- <skip />
- <!-- no translation found for privatespace_tap_tile_description (4146608898639668340) -->
- <skip />
- <!-- no translation found for privatespace_unlock_description (4132755357482447360) -->
- <skip />
- <!-- no translation found for privatespace_hide_off_summary (7227778747159633671) -->
- <skip />
- <!-- no translation found for privatespace_hide_on_summary (6136704537527640183) -->
- <skip />
+ <string name="private_space_hide_title" msgid="8687034008994037610">"लक गरिएको बेलामा लुकाउनुहोस्"</string>
+ <string name="privatespace_hide_page_title" msgid="972581369094289386">"निजी स्पेस लक गरिएको बेलामा उक्त स्पेस लुकाउनुहोस्"</string>
+ <string name="privatespace_hide_page_summary" msgid="1052569521186403642">"अन्य मानिसहरूलाई तपाईंको डिभाइसमा निजी स्पेस छ भन्ने कुरा थाहा नदिन तपाईं आफ्नो एपको सूचीकरणबाट उक्त स्पेस लुकाउन सक्नुहुन्छ"</string>
+ <string name="privatespace_access_header" msgid="982809349769470185">"निजी स्पेस लुकाइएको बेलामा उक्त स्पेस एक्सेस गर्नुहोस्"</string>
+ <string name="privatespace_search_description" msgid="983837656432484282">"सर्च बारमा गई \"निजी स्पेस\" खोज्नुहोस्"</string>
+ <string name="privatespace_tap_tile_description" msgid="4146608898639668340">"निजी स्पेसको टाइलमा ट्याप गर्नुहोस्"</string>
+ <string name="privatespace_unlock_description" msgid="4132755357482447360">"आफ्नो निजी स्पेस अनलक गर्नुहोस्"</string>
+ <string name="privatespace_hide_off_summary" msgid="7227778747159633671">"अफ छ"</string>
+ <string name="privatespace_hide_on_summary" msgid="6136704537527640183">"अन छ"</string>
<string name="private_space_category_system" msgid="1286843321867285700">"सिस्टम"</string>
<string name="private_space_create_title" msgid="47273568884806726">"निजी स्पेस बनाउनुहोस्"</string>
<string name="private_space_delete_title" msgid="3075645119800272800">"निजी स्पेस मेटाउनुहोस्"</string>
@@ -570,54 +568,30 @@
<string name="no_device_lock_summary" msgid="7653477413589207824">"निजी स्पेस प्रयोग गर्न यो डिभाइसमा स्क्रिन लक सेट गर्नुहोस्।"</string>
<string name="no_device_lock_action_label" msgid="2640487005629001288">"स्क्रिन लक सेट गर्नुहोस्"</string>
<string name="no_device_lock_cancel" msgid="4412602160321228863">"रद्द गर्नुहोस्"</string>
- <!-- no translation found for privatespace_cancel_label (362351004019511784) -->
- <skip />
- <!-- no translation found for privatespace_setup_button_label (3696372546231047258) -->
- <skip />
- <!-- no translation found for privatespace_setup_title (177623114624330394) -->
- <skip />
- <!-- no translation found for privatespace_hide_apps_summary (4016518749055602268) -->
- <skip />
- <!-- no translation found for privatespace_how_title (8794102046435526065) -->
- <skip />
- <!-- no translation found for privatespace_access_bottom_text (1075244097441349030) -->
- <skip />
- <!-- no translation found for privatespace_protected_lock_text (7320604832432017423) -->
- <skip />
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_cancel_label" msgid="362351004019511784">"रद्द गर्नुहोस्"</string>
+ <string name="privatespace_setup_button_label" msgid="3696372546231047258">"सेटअप गर्नुहोस्"</string>
+ <string name="privatespace_setup_title" msgid="177623114624330394">"निजी स्पेस सेटअप गर्नुहोस्"</string>
+ <string name="privatespace_hide_apps_summary" msgid="4016518749055602268">"तपाईंले मात्र एक्सेस गर्न सक्ने सुरक्षित स्पेसमा निजी एपहरू लुकाउनुहोस्"</string>
+ <string name="privatespace_how_title" msgid="8794102046435526065">"यसले काम गर्ने तरिका"</string>
+ <string name="privatespace_access_bottom_text" msgid="1075244097441349030">"तपाईं आफ्नो एपको सूचीकरणको फेदबाट निजी स्पेस एक्सेस गर्न सक्नुहुन्छ"</string>
+ <string name="privatespace_protected_lock_text" msgid="7320604832432017423">"निजी स्पेसमा एपहरू लक प्रयोग गरी सुरक्षित रूपमा राखिएका हुन्छन्"</string>
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"निजी स्पेस लक गरिएका बेला निजी स्पेसका एपबाट प्राप्त सूचनाहरू लुकाइन्छन्"</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"निजी स्पेस लक गरिएका बेला अनुमति म्यानेजर, गोपनीयतासम्बन्धी ड्यासबोर्ड र अन्य सेटिङमा निजी स्पेसका एपहरू देखा पर्दैनन्"</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"निजी स्पेस सेटअप गरिँदै छ…"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"लक प्रयोग गरी निजी स्पेस सुरक्षित राखिन्छ"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"लक गरिएका बेला निजी स्पेसका एपहरूको प्रयोगसम्बन्धी जानकारी लुकाइन्छ"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"एपहरूको सूचीबाट निजी स्पेस एक्सेस गर्नुहोस्"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"निजी स्पेस सेटअप गर्न सकिएन"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"अहिले नै फेरि प्रयास गर्नुहोस् वा पछि फेरि आउनुहोस्"</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"फेरि प्रयास गर्नुहोस्"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"अनलक गर्न स्क्रिन लक प्रयोग गर्ने हो?"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"तपाईं आफूले आफ्नो डिभाइस अनलक गरे जसरी नै निजी स्पेस अनलक गर्न वा अर्कै लक छनौट गर्न सक्नुहुन्छ"</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"स्क्रिन लक प्रयोग गर्नुहोस्"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"नयाँ लक छनौट गर्नुहोस्"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"सबै तयार भयो!"</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"निजी स्पेस एक्सेस गर्न होम स्क्रिनको पुछारबाट माथितिर स्वाइप गर्नुहोस् अनि तलतिर स्क्रोल गर्नुहोस्"</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"पूरा भयो"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"निजी स्पेस एक्सेस गर्न तलतिर स्क्रोल गर्नुहोस्"</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"तपाईं बढीमा <xliff:g id="COUNT">%d</xliff:g> वटा फिंगरप्रिन्टहरू हाल्न सक्नुहुन्छ"</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"तपाईंले अधिकतम संख्यामा फिंगरप्रिन्टहरू थप्नुभएको छ"</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"थप फिंगरप्रिन्टहरू थप्न सकिँदैन"</string>
@@ -1135,8 +1109,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"फोल्ड गर्दा एपहरू प्रयोग गरिराखियोस्"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"Smooth Display"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"यसले केही सामग्रीका हकमा रिफ्रेस रेट स्वतः बढाएर <xliff:g id="ID_1">%1$d</xliff:g> हर्जसम्म बनाउँछ। यसले गर्दा ब्याट्रीको खपत बढ्छ।"</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"रिफ्रेस गर्ने दर बलपूर्वक सबैभन्दा बढी बनाउनुहोस्"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"स्क्रिनमा छुँदा स्क्रिनले जनाउने प्रतिक्रिया र एनिमेसनको गुणस्तर सुधार्न उच्चतम रिफ्रेस रेट। ब्याट्रीको खपत बढाउँछ।"</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"स्क्रिनमा हेरिरहँदा"</string>
@@ -1372,6 +1345,8 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"समुदायसम्बन्धी सेटिङ"</string>
<string name="apn_settings" msgid="4295467389400441299">"APNs"</string>
<string name="apn_edit" msgid="2003683641840248741">"एक्सेस पोइन्ट सम्पादन गर्नुहोस्"</string>
+ <!-- no translation found for apn_add (9069613192201630934) -->
+ <skip />
<string name="apn_not_set" msgid="8246646433109750293">"सेट गरिएको छैन"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"सेट गरिएको छैन"</string>
<string name="apn_name" msgid="6677695784108157953">"नाम"</string>
@@ -2006,12 +1981,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"खोल्नका लागि एक्सेसिबिलिटी बटन प्रयोग गर्नुहोस्"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"खोल्नका लागि भोल्युम कीहरू थिचिराख्नुहोस्"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"यसलाई खोल्न स्क्रिनमा तीन पटक ट्याप गर्नुहोस्"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"खोल्न स्क्रिनमा दुई वटा औँलाले ट्रिपल ट्याप गर्नुहोस्"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"खोल्नका लागि इसाराको प्रयोग गर्नुहोस्"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"एक्सेसिबिलिटी जेस्चर प्रयोग गर्नुहोस्"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"यो सुविधा प्रयोग गर्न आफ्नो स्क्रिनको पुछारमा रहेको पहुँचसम्बन्धी बटन <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> मा ट्याप गर्नुहोस्।\n\n एउटा सुविधाबाट अर्को सुविधामा जान पहुँचसम्बन्धी बटनमा थिचिराख्नुहोस्।"</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"यो सुविधा प्रयोग गर्न स्क्रिनमा भएको एक्सेसिबिलिटी बटनमा ट्याप गर्नुहोस्।"</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"यो सुविधा प्रयोग गर्न दुवै भोल्युम की थिचिराख्नुहोस्।"</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"म्याग्निफिकेसन सुविधा सुरु गर्न वा रोक्न आफ्नो स्क्रिनमा कतै तीन पटक ट्याप गर्नुहोस्।"</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"जुम इन गर्ने सुविधा अन तथा अफ गर्न स्क्रिनको जुनसुकै ठाउँमा दुई वटा औँलाले ट्रिपल ट्याप गर्नुहोस्।"</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"यो सुविधा प्रयोग गर्न २ वटा औँलाले स्क्रिनको पुछारबाट माथितिर स्वाइप गर्नुहोस्।\n\nएउटा सुविधाबाट अर्को सुविधामा जान २ वटा औँलाले माथितिर स्वाइप गरी स्क्रिनमा थिचिराख्नुहोस्।"</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"यो सुविधा प्रयोग गर्न ३ वटा औँलाले स्क्रिनको पुछारबाट माथितिर स्वाइप गर्नुहोस्।\n\nएउटा सुविधाबाट अर्को सुविधामा जान ३ वटा औँलाले माथितिर स्वाइप गरी स्क्रिनमा थिचिराख्नुहोस्।"</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"पहुँचसम्बन्धी कुनै सुविधा प्रयोग गर्न २ वटा औँलाले स्क्रिनको पुछारबाट माथितिर स्वाइप गर्नुहोस्।\n\nएउटा सुविधाबाट अर्को सुविधामा जान २ वटा औँलाले माथितिर स्वाइप गरी स्क्रिनमा थिचिराख्नुहोस्।"</string>
@@ -2033,12 +2010,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"भोल्युम कीहरू थिचिरहनुहोस्"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"भोल्युम कीहरू थिचिराख्नुहोस्"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"दुवै भोल्युम की थिचिराख्नुहोस्"</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"स्क्रिनमा दुई वटा औँलाले ट्रिपल ट्याप गर्नुहोस्"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"स्क्रिनमा दुई वटा औँलाले ट्रिपल ट्याप गर्नुहोस्"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"स्क्रिनमा दुई वटा औँलाले {0,number,integer} पटक छिटो छिटो ट्याप गर्नुहोस्"</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"स्क्रिनमा तीन पटक ट्याप गर्नुहोस्"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"स्क्रिनमा तीन पटक ट्याप गर्नुहोस्"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"स्क्रिनमा द्रुत रूपमा {0,number,integer} पटक ट्याप गर्नुहोस्। यो सर्टकट प्रयोग गर्दा तपाईंको डिभाइस ढिलो चल्न सक्छ"</string>
@@ -2336,6 +2310,10 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"तपाईंले कुनै एपको पृष्ठभूमिको गतिविधिलाई सीमित गर्नुभयो भने यसले सही तरिकाले काम नगर्न सक्छ"</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"यो एपलाई ब्याट्री अप्टिमाइज गर्न भनी सेट नगरिएको हुनाले तपाईं यसमा बन्देज लगाउन सक्नुहुन्न।\n\nएपमा बन्देज लगाउन पहिले ब्याट्री अप्टिमाइजेसन सुविधा अन गर्नुहोस्।"</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"ब्याट्रीको खपत व्यवस्थापन गर्नुहोस्"</string>
+ <!-- no translation found for manager_battery_usage_allow_background_usage_title (6294649996820358852) -->
+ <skip />
+ <!-- no translation found for manager_battery_usage_allow_background_usage_summary (8021153755201340819) -->
+ <skip />
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"असीमित"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"अप्टिमाइज गरिएको"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"प्रतिबन्धित"</string>
@@ -3846,6 +3824,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"सबै फाइलहरूको व्यवस्थापन गर्ने अनुमति दिइयोस्"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"यो एपलाई यो डिभाइस वा जोडिएको कुनै भण्डारणमा रहेका सबै फाइलहरू पढ्ने, परिमार्जन गर्ने तथा मेट्ने अनुमति दिनुहोस्। अनुमति दिइएका खण्डमा यो एपले तपाईंको स्पष्ट अनुमतिविनै फाइलहरू प्रयोग गर्नसक्छ।"</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"सबै फाइलहरूमाथि पहुँच राख्न सक्छ।"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"फुल स्क्रिनमा सूचनाहरू देखाउने अनुमति"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"यो एपलाई सूचनाहरू फुल स्क्रिनमा देखाउने अनुमति दिनुहोस्"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"यो एपलाई डिभाइस लक भएका बेला फुल स्क्रिन ढाक्ने खालका सूचनाहरू देखाउने अनुमति दिनुहोस्। एपहरूले अलार्म, आगमन कल वा अन्य महत्त्वपूर्ण सूचनाहरू हाइलाइट गर्ने प्रयोजनका लागि फुल स्क्रिनमा सूचनाहरू देखाउन सक्छन्।"</string>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index cf73231..4a7bfe6 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -135,8 +135,11 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"Stylus"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"Audio delen"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"Audio delen"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
- <skip />
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"Gesprekken en alarmen"</string>
+ <string name="audio_sharing_streams_category_title" msgid="862958129650324581">"Verbinden met een LE-audiostream"</string>
+ <string name="audio_sharing_streams_pref_title" msgid="4636293245167657721">"Audiostreams in de buurt"</string>
+ <string name="audio_sharing_streams_title" msgid="8269455097512153101">"Audiostreams"</string>
+ <string name="audio_sharing_streams_qr_code_summary" msgid="4231875597377863735">"Maak verbinding met een audiostream via een QR-code"</string>
<string name="date_and_time" msgid="1788358029823431692">"Datum en tijd"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"Proxy"</string>
<string name="proxy_clear_text" msgid="6529658759984031149">"Wissen"</string>
@@ -540,24 +543,15 @@
<string name="private_space_title" msgid="7078627930195569767">"Privéruimte"</string>
<string name="private_space_summary" msgid="8237652417163408001">"Apps verbergen in een privémap"</string>
<string name="private_space_one_lock_title" msgid="7306547190751832568">"Ontgrendelen met schermvergrendeling"</string>
- <!-- no translation found for private_space_hide_title (8687034008994037610) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_title (972581369094289386) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_summary (1052569521186403642) -->
- <skip />
- <!-- no translation found for privatespace_access_header (982809349769470185) -->
- <skip />
- <!-- no translation found for privatespace_search_description (983837656432484282) -->
- <skip />
- <!-- no translation found for privatespace_tap_tile_description (4146608898639668340) -->
- <skip />
- <!-- no translation found for privatespace_unlock_description (4132755357482447360) -->
- <skip />
- <!-- no translation found for privatespace_hide_off_summary (7227778747159633671) -->
- <skip />
- <!-- no translation found for privatespace_hide_on_summary (6136704537527640183) -->
- <skip />
+ <string name="private_space_hide_title" msgid="8687034008994037610">"Verbergen indien vergrendeld"</string>
+ <string name="privatespace_hide_page_title" msgid="972581369094289386">"Privéruimte verbergen indien vergrendeld"</string>
+ <string name="privatespace_hide_page_summary" msgid="1052569521186403642">"Als je niet wilt dat andere mensen weten dat Privéruimte op je apparaat staat, kun je deze verbergen in de lijst met apps"</string>
+ <string name="privatespace_access_header" msgid="982809349769470185">"Toegang krijgen tot Privéruimte indien verborgen"</string>
+ <string name="privatespace_search_description" msgid="983837656432484282">"Zoek naar Privéruimte in de zoekbalk"</string>
+ <string name="privatespace_tap_tile_description" msgid="4146608898639668340">"Tik op de tegel Privéruimte"</string>
+ <string name="privatespace_unlock_description" msgid="4132755357482447360">"Je Privéruimte ontgrendelen"</string>
+ <string name="privatespace_hide_off_summary" msgid="7227778747159633671">"Uit"</string>
+ <string name="privatespace_hide_on_summary" msgid="6136704537527640183">"Aan"</string>
<string name="private_space_category_system" msgid="1286843321867285700">"Systeem"</string>
<string name="private_space_create_title" msgid="47273568884806726">"Privéruimte maken"</string>
<string name="private_space_delete_title" msgid="3075645119800272800">"Privéruimte verwijderen"</string>
@@ -570,54 +564,30 @@
<string name="no_device_lock_summary" msgid="7653477413589207824">"Als je Privéruimte wilt gebruiken, stel je een schermvergrendeling op dit apparaat in."</string>
<string name="no_device_lock_action_label" msgid="2640487005629001288">"Schermvergrendeling instellen"</string>
<string name="no_device_lock_cancel" msgid="4412602160321228863">"Annuleren"</string>
- <!-- no translation found for privatespace_cancel_label (362351004019511784) -->
- <skip />
- <!-- no translation found for privatespace_setup_button_label (3696372546231047258) -->
- <skip />
- <!-- no translation found for privatespace_setup_title (177623114624330394) -->
- <skip />
- <!-- no translation found for privatespace_hide_apps_summary (4016518749055602268) -->
- <skip />
- <!-- no translation found for privatespace_how_title (8794102046435526065) -->
- <skip />
- <!-- no translation found for privatespace_access_bottom_text (1075244097441349030) -->
- <skip />
- <!-- no translation found for privatespace_protected_lock_text (7320604832432017423) -->
- <skip />
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_cancel_label" msgid="362351004019511784">"Annuleren"</string>
+ <string name="privatespace_setup_button_label" msgid="3696372546231047258">"Instellen"</string>
+ <string name="privatespace_setup_title" msgid="177623114624330394">"Privéruimte instellen"</string>
+ <string name="privatespace_hide_apps_summary" msgid="4016518749055602268">"Verberg privé-apps in een beveiligde ruimte die alleen toegankelijk is voor jou"</string>
+ <string name="privatespace_how_title" msgid="8794102046435526065">"Hoe het werkt"</string>
+ <string name="privatespace_access_bottom_text" msgid="1075244097441349030">"Je kunt toegang tot Privéruimte krijgen vanaf de onderkant van de lijst met apps"</string>
+ <string name="privatespace_protected_lock_text" msgid="7320604832432017423">"Apps in Privéruimte worden beschermd door een vergrendeling"</string>
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"Meldingen van apps in Privéruimte worden verborgen als Privéruimte vergrendeld is"</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"Apps in Privéruimte verschijnen niet in rechtenbeheer, privacydashboard en andere instellingen als Privéruimte vergrendeld is"</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"Privéruimte instellen…"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"Privéruimte wordt beschermd door een vergrendeling"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"Gebruiksinformatie voor apps in Privéruimte is verborgen als Privéruimte vergrendeld is"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"Toegang krijgen tot Privéruimte vanuit je lijst met apps"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"Kan Privéruimte niet instellen"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"Probeer het nu of kom later terug"</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"Opnieuw proberen"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"Schermvergrendeling gebruiken voor ontgrendeling?"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"Je kunt Privéruimte op dezelfde manier ontgrendelen als je apparaat of een andere vergrendeling kiezen"</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"Schermvergrendeling gebruiken"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"Nieuwe vergrendeling kiezen"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"Je bent nu helemaal klaar"</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"Swipe omhoog vanaf de onderkant van het scherm en scroll omlaag om toegang tot Privéruimte te krijgen"</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"Klaar"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"Scroll omlaag om toegang tot Privéruimte te krijgen"</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"Je kunt maximaal <xliff:g id="COUNT">%d</xliff:g> vingerafdrukken toevoegen"</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"Je hebt het maximale aantal vingerafdrukken toegevoegd"</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"Kan geen extra vingerafdrukken toevoegen"</string>
@@ -1135,8 +1105,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"Apps blijven gebruiken bij vouwen"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"Smooth Display"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"Verhoogt de vernieuwingssnelheid automatisch naar <xliff:g id="ID_1">%1$d</xliff:g> Hz voor bepaalde content. Het batterijgebruik neemt toe."</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"Piekvernieuwingssnelheid afdwingen"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"De hoogste vernieuwingssnelheid voor verbeterde responsiviteit voor aanraking en animatiekwaliteit. Het batterijgebruik neemt toe."</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"Schermaandacht"</string>
@@ -1372,6 +1341,7 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"Gemeenschappelijke instellingen"</string>
<string name="apn_settings" msgid="4295467389400441299">"APN\'s"</string>
<string name="apn_edit" msgid="2003683641840248741">"Toegangspunt bewerken"</string>
+ <string name="apn_add" msgid="9069613192201630934">"Toegangspunt toevoegen"</string>
<string name="apn_not_set" msgid="8246646433109750293">"Niet ingesteld"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"Niet ingesteld"</string>
<string name="apn_name" msgid="6677695784108157953">"Naam"</string>
@@ -2006,12 +1976,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"Knop Toegankelijkheid gebruiken om te openen"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"Houd de volumetoetsen ingedrukt om te openen"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"Tik 3 keer op het scherm om te openen"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"3·keer op het scherm tikken met 2 vingers om te openen"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"Gebaar gebruiken om te openen"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"Toegankelijkheidsgebaar gebruiken"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"Als je deze functie wilt gebruiken, tik je onderaan het scherm op de knop Toegankelijkheid <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g>.\n\nTik op de knop Toegankelijkheid en houd deze vast om tussen functies te schakelen."</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"Tik op de knop Toegankelijkheid op het scherm om deze functie te gebruiken."</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"Als je deze functie wilt gebruiken, houd je beide volumetoetsen ingedrukt."</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"Tik ergens op je scherm om de vergroting te starten of te stoppen."</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"Tik ergens 3 keer op het scherm met 2 vingers om de vergroting te starten of te stoppen."</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"Als je deze functie wilt gebruiken, swipe je met twee vingers omhoog vanaf de onderkant van het scherm.\n\nSwipe met twee vingers omhoog en houd vast om tussen functies te schakelen."</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"Als je deze functie wilt gebruiken, swipe je met 3 vingers omhoog vanaf de onderkant van het scherm.\n\nSwipe met 3 vingers omhoog en houd vast om tussen functies te schakelen."</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"Als je een toegankelijkheidsfunctie wilt gebruiken, swipe je met twee vingers omhoog vanaf de onderkant van het scherm.\n\nSwipe met twee vingers omhoog en houd vast om tussen functies te schakelen."</string>
@@ -2033,12 +2005,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"Volumetoetsen ingedrukt houden"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"volumetoetsen ingedrukt houden"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"Houd beide volumetoetsen ingedrukt"</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"3·keer op het scherm tikken met 2 vingers"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"3·keer op het scherm tikken met 2 vingers"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"Tik snel {0,number,integer} keer op het scherm met 2 vingers"</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"3 keer op het scherm tikken"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"drie keer op het scherm tikken"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"Tik snel {0,number,integer} keer op het scherm. Deze snelkoppeling kan je apparaat vertragen."</string>
@@ -2336,6 +2305,8 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"Als je de achtergrondactiviteit voor een app beperkt, functioneert de app mogelijk niet meer correct"</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"Batterijoptimalisatie is niet ingesteld voor deze app. Je kunt de app dus niet beperken.\n\nZet eerst batterijoptimalisatie aan als je de app wilt beperken."</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"Batterijgebruik beheren"</string>
+ <string name="manager_battery_usage_allow_background_usage_title" msgid="6294649996820358852">"Achtergrondgebruik toestaan"</string>
+ <string name="manager_battery_usage_allow_background_usage_summary" msgid="8021153755201340819">"Zet aan voor realtime updates, zet uit om de batterij te sparen"</string>
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"Onbeperkt"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"Geoptimaliseerd"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"Beperkt"</string>
@@ -3846,6 +3817,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"Toegang geven om alle bestanden te beheren"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"Sta toe dat deze app alle bestanden op dit apparaat of gekoppelde opslagvolumes kan lezen, aanpassen of verwijderen. Als je dit toestaat, kan de app zonder jouw medeweten toegang tot bestanden krijgen."</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"Mag toegang tot alle bestanden hebben"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"Meldingen op volledig scherm"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"Meldingen op volledig scherm van deze app toestaan"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"Toestaan dat deze app meldingen op het volledige scherm toont als het apparaat is vergrendeld. Apps kunnen zo alarmen, inkomende gesprekken of andere urgente meldingen onder de aandacht brengen."</string>
@@ -4328,7 +4305,7 @@
<!-- no translation found for graphics_driver_app_preference_values:2 (5391218026495225599) -->
<!-- no translation found for graphics_driver_app_preference_values:3 (2586045835780389650) -->
<string name="enable_angle_as_system_driver" msgid="4648827560023949786">"Experimenteel: ANGLE aanzetten"</string>
- <string name="enable_angle_as_system_driver_summary" msgid="2170215556348477481">"Waarschuwing: Zet ANGLE aan als standaard OpenGL ES-stuurprogramma. Deze functie is in een experimentele fase en werkt misschien niet met bepaalde camera- en video-apps."</string>
+ <string name="enable_angle_as_system_driver_summary" msgid="2170215556348477481">"Waarschuwing: ANGLE wordt aangezet als standaard OpenGL ES-stuurprogramma. Deze functie is in een experimentele fase en werkt misschien niet met bepaalde camera- en video-apps."</string>
<string name="reboot_dialog_enable_angle_as_system_driver" msgid="2619263039763150810">"Je moet opnieuw opstarten om het OpenGL ES-stuurprogramma van het systeem te wijzigen"</string>
<string name="platform_compat_dashboard_title" msgid="1323980546791790236">"App-compatibiliteitswijzigingen"</string>
<string name="platform_compat_dashboard_summary" msgid="4036546607938791337">"Zet app-compatibiliteitswijzigingen aan/uit"</string>
diff --git a/res/values-or/strings.xml b/res/values-or/strings.xml
index 30f5134..b1a28d6 100644
--- a/res/values-or/strings.xml
+++ b/res/values-or/strings.xml
@@ -135,8 +135,11 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"ଷ୍ଟାଇଲସ"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"ଅଡିଓ ସେୟାରିଂ"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"ଅଡିଓ ସେୟାର କରନ୍ତୁ"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
- <skip />
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"କଲ ଏବଂ ଆଲାରାମଗୁଡ଼ିକ"</string>
+ <string name="audio_sharing_streams_category_title" msgid="862958129650324581">"ଏକ LE ଅଡିଓ ଷ୍ଟ୍ରିମ ସହ କନେକ୍ଟ କରନ୍ତୁ"</string>
+ <string name="audio_sharing_streams_pref_title" msgid="4636293245167657721">"ଆଖପାଖର ଅଡିଓ ଷ୍ଟ୍ରିମଗୁଡ଼ିକ"</string>
+ <string name="audio_sharing_streams_title" msgid="8269455097512153101">"ଅଡିଓ ଷ୍ଟ୍ରିମଗୁଡ଼ିକ"</string>
+ <string name="audio_sharing_streams_qr_code_summary" msgid="4231875597377863735">"QR କୋଡ ବ୍ୟବହାର କରି ଏକ ଅଡିଓ ଷ୍ଟ୍ରିମ ସହ କନେକ୍ଟ କରନ୍ତୁ"</string>
<string name="date_and_time" msgid="1788358029823431692">"ତାରିଖ ଓ ସମୟ"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"ପ୍ରକ୍ସି"</string>
<string name="proxy_clear_text" msgid="6529658759984031149">"ଖାଲି କରନ୍ତୁ"</string>
@@ -540,24 +543,15 @@
<string name="private_space_title" msgid="7078627930195569767">"ପ୍ରାଇଭେଟ ସ୍ପେସ"</string>
<string name="private_space_summary" msgid="8237652417163408001">"ଏକ ପ୍ରାଇଭେଟ ଫୋଲ୍ଡରରେ ଆପ୍ସକୁ ଲୁଚାନ୍ତୁ"</string>
<string name="private_space_one_lock_title" msgid="7306547190751832568">"ସ୍କ୍ରିନ ଲକ ବ୍ୟବହାର କରି ଅନଲକ କରନ୍ତୁ"</string>
- <!-- no translation found for private_space_hide_title (8687034008994037610) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_title (972581369094289386) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_summary (1052569521186403642) -->
- <skip />
- <!-- no translation found for privatespace_access_header (982809349769470185) -->
- <skip />
- <!-- no translation found for privatespace_search_description (983837656432484282) -->
- <skip />
- <!-- no translation found for privatespace_tap_tile_description (4146608898639668340) -->
- <skip />
- <!-- no translation found for privatespace_unlock_description (4132755357482447360) -->
- <skip />
- <!-- no translation found for privatespace_hide_off_summary (7227778747159633671) -->
- <skip />
- <!-- no translation found for privatespace_hide_on_summary (6136704537527640183) -->
- <skip />
+ <string name="private_space_hide_title" msgid="8687034008994037610">"ଲକ ଥିବା ସମୟରେ ଲୁଚାନ୍ତୁ"</string>
+ <string name="privatespace_hide_page_title" msgid="972581369094289386">"ପ୍ରାଇଭେଟ ସ୍ପେସ ଲକ ଥିବା ସମୟରେ ଏହାକୁ ଲୁଚାନ୍ତୁ"</string>
+ <string name="privatespace_hide_page_summary" msgid="1052569521186403642">"ଡିଭାଇସରେ ପ୍ରାଇଭେଟ ସ୍ପେସ ଥିବା ଅନ୍ୟ ଲୋକମାନଙ୍କୁ ନଜଣାଇବାକୁ ଆପଣ ଆପ୍ସ ତାଲିକାରୁ ଏହାକୁ ଲୁଚାଇପାରିବେ"</string>
+ <string name="privatespace_access_header" msgid="982809349769470185">"ପ୍ରାଇଭେଟ ସ୍ପେସ ଲୁକ୍କାୟିତ ଥିବା ସମୟରେ ଏହାକୁ ଆକ୍ସେସ କରନ୍ତୁ"</string>
+ <string name="privatespace_search_description" msgid="983837656432484282">"ସର୍ଚ୍ଚ ବାରରେ \'ପ୍ରାଇଭେଟ ସ୍ପେସ\' ସର୍ଚ୍ଚ କରନ୍ତୁ"</string>
+ <string name="privatespace_tap_tile_description" msgid="4146608898639668340">"ପ୍ରାଇଭେଟ ସ୍ପେସ ଟାଇଲରେ ଟାପ କରନ୍ତୁ"</string>
+ <string name="privatespace_unlock_description" msgid="4132755357482447360">"ଆପଣଙ୍କ ପ୍ରାଇଭେଟ ସ୍ପେସକୁ ଅନଲକ କରନ୍ତୁ"</string>
+ <string name="privatespace_hide_off_summary" msgid="7227778747159633671">"ବନ୍ଦ ଅଛି"</string>
+ <string name="privatespace_hide_on_summary" msgid="6136704537527640183">"ଚାଲୁ ଅଛି"</string>
<string name="private_space_category_system" msgid="1286843321867285700">"ସିଷ୍ଟମ"</string>
<string name="private_space_create_title" msgid="47273568884806726">"ପ୍ରାଇଭେଟ ସ୍ପେସ ତିଆରି କରନ୍ତୁ"</string>
<string name="private_space_delete_title" msgid="3075645119800272800">"ପ୍ରାଇଭେଟ ସ୍ପେସ ଡିଲିଟ କରନ୍ତୁ"</string>
@@ -570,54 +564,30 @@
<string name="no_device_lock_summary" msgid="7653477413589207824">"ପ୍ରାଇଭେଟ ସ୍ପେସ ବ୍ୟବହାର ପାଇଁ ଏ ଡିଭାଇସରେ ଏକ ସ୍କ୍ରିନ ଲକ ସେଟ କର।"</string>
<string name="no_device_lock_action_label" msgid="2640487005629001288">"ସ୍କ୍ରିନ ଲକ ସେଟ କରନ୍ତୁ"</string>
<string name="no_device_lock_cancel" msgid="4412602160321228863">"ବାତିଲ କରନ୍ତୁ"</string>
- <!-- no translation found for privatespace_cancel_label (362351004019511784) -->
- <skip />
- <!-- no translation found for privatespace_setup_button_label (3696372546231047258) -->
- <skip />
- <!-- no translation found for privatespace_setup_title (177623114624330394) -->
- <skip />
- <!-- no translation found for privatespace_hide_apps_summary (4016518749055602268) -->
- <skip />
- <!-- no translation found for privatespace_how_title (8794102046435526065) -->
- <skip />
- <!-- no translation found for privatespace_access_bottom_text (1075244097441349030) -->
- <skip />
- <!-- no translation found for privatespace_protected_lock_text (7320604832432017423) -->
- <skip />
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_cancel_label" msgid="362351004019511784">"ବାତିଲ କରନ୍ତୁ"</string>
+ <string name="privatespace_setup_button_label" msgid="3696372546231047258">"ସେଟ ଅପ କରନ୍ତୁ"</string>
+ <string name="privatespace_setup_title" msgid="177623114624330394">"ପ୍ରାଇଭେଟ ସ୍ପେସ ସେଟ ଅପ କରନ୍ତୁ"</string>
+ <string name="privatespace_hide_apps_summary" msgid="4016518749055602268">"ପ୍ରାଇଭେଟ ଆପ୍ସକୁ କେବଳ ଆପଣ ଆକ୍ସେସ କରିପାରୁଥିବା ଏକ ସୁରକ୍ଷିତ ସ୍ପେସରେ ଲୁଚାନ୍ତୁ"</string>
+ <string name="privatespace_how_title" msgid="8794102046435526065">"ଏହା କିପରି କାମ କରେ"</string>
+ <string name="privatespace_access_bottom_text" msgid="1075244097441349030">"ଆପଣ ଆପଣଙ୍କ ଆପ୍ସ ତାଲିକାର ନିମ୍ନରୁ ପ୍ରାଇଭେଟ ସ୍ପେସକୁ ଆକ୍ସେସ କରିପାରିବେ"</string>
+ <string name="privatespace_protected_lock_text" msgid="7320604832432017423">"ପ୍ରାଇଭେଟ ସ୍ପେସରେ ଥିବା ଆପ୍ସ ଏକ ଲକ ଦ୍ୱାରା ସୁରକ୍ଷିତ ଅଟେ"</string>
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"Private Space ଲକ ଥିବା ସମୟରେ ଏଥିରେ ଥିବା ଆପ୍ସରୁ ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକୁ ଲୁଚାଯାଇଥାଏ"</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"Private Space ଲକ ଥିବା ବେଳେ ଅନୁମତି ପରିଚାଳକ, ଗୋପନୀୟତା ଡେସବୋର୍ଡ ଏବଂ ଅନ୍ୟ ସେଟିଂସରେ Private Space ଆପ୍ସ ଦେଖାଯିବ ନାହିଁ"</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"Private Space ସେଟ ଅପ କରାଯାଉଛି…"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"Private Space ଏକ ଲକ ଦ୍ୱାରା ସୁରକ୍ଷିତ ଅଟେ"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"Private Space ଆପ୍ସ ଲକ ଥିବା ବେଳେ ଏହାର ବ୍ୟବହାର ସୂଚନା ଲୁକ୍କାୟିତ ରହିଥାଏ"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"ଆପଣଙ୍କ ଆପ୍ସ ତାଲିକାରୁ Private Spaceକୁ ଆକ୍ସେସ କରନ୍ତୁ"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"Private Space ସେଟ ଅପ କରାଯାଇପାରିବ ନାହିଁ"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"ବର୍ତ୍ତମାନ ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ କିମ୍ୱା ପରେ ଫେରନ୍ତୁ"</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"ଅନଲକ କରିବା ପାଇଁ ସ୍କ୍ରିନ ଲକ ବ୍ୟବହାର କରିବେ?"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"ଆପଣଙ୍କ ଡିଭାଇସକୁ ଆପଣ ଅନଲକ କରିବା ପରି Private Spaceକୁ ଅନଲକ କରିପାରିବେ କିମ୍ୱା ଏକ ଭିନ୍ନ ଲକ ବାଛିପାରିବେ"</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"ସ୍କ୍ରିନ ଲକ ବ୍ୟବହାର କରନ୍ତୁ"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"ନୂଆ ଲକ ବାଛନ୍ତୁ"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"ସମ୍ପୂର୍ଣ୍ଣ ଭାବେ ପ୍ରସ୍ତୁତ!"</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"Private Spaceକୁ ଆକ୍ସେସ କରିବା ପାଇଁ ଆପଣଙ୍କ ହୋମ ସ୍କ୍ରିନର ତଳୁ ଉପରକୁ ସ୍ୱାଇପ କରି ତା\'ପରେ ତଳକୁ ସ୍କ୍ରୋଲ କରନ୍ତୁ"</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"ହୋଇଗଲା"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"Private Spaceକୁ ଆକ୍ସେସ କରିବା ପାଇଁ ତଳକୁ ସ୍କ୍ରୋଲ କରନ୍ତୁ"</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"ଆପଣ ସର୍ବାଧିକ <xliff:g id="COUNT">%d</xliff:g> ଟିପଚିହ୍ନ ଯୋଗ କରିପାରିବେ"</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"ଆପଣ ସର୍ବାଧିକ ସଂଖ୍ୟାର ଆଙ୍ଗୁଠି ଚିହ୍ନ ଯୋଡିଛନ୍ତି"</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"ଆଉ ଅଧିକ ଟିପଚିହ୍ନ ଯୋଡିପାରିବ ନାହିଁ"</string>
@@ -1135,8 +1105,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"ଫୋଲ୍ଡରେ ଥିବା ଆପ୍ସ ବ୍ୟବହାର କରିବା ଜାରି ରଖନ୍ତୁ"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"ସ୍ମୁଥ୍ ଡିସପ୍ଲେ"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"କିଛି ବିଷୟବସ୍ତୁ ପାଇଁ ରିଫ୍ରେସ ରେଟକୁ ସ୍ୱତଃ <xliff:g id="ID_1">%1$d</xliff:g> Hz ପର୍ଯ୍ୟନ୍ତ ବଢ଼ାଇଥାଏ। ବେଟେରୀର ବ୍ୟବହାର ବଢ଼ାଇଥାଏ।"</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"ସର୍ବାଧିକ ରିଫ୍ରେସ୍ ହାରକୁ ଲାଗୁ କରନ୍ତୁ"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"ଉନ୍ନତ ସ୍ପର୍ଶ ପ୍ରତିକ୍ରିୟା ଓ ଆନିମେସନ ଗୁଣବତ୍ତା ପାଇଁ ସର୍ବାଧିକ ରିଫ୍ରେସ ରେଟ। ବେଟେରୀର ବ୍ୟବହାର ବଢ଼ାଇଥାଏ।"</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"ସ୍କ୍ରିନ୍ ଆଟେନ୍ସନ୍"</string>
@@ -1372,6 +1341,7 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"କମ୍ୟୁନାଲ ସେଟିଂସ"</string>
<string name="apn_settings" msgid="4295467389400441299">"APNs"</string>
<string name="apn_edit" msgid="2003683641840248741">"ଆକ୍ସେସ ପଏଣ୍ଟକୁ ଏଡିଟ କରନ୍ତୁ"</string>
+ <string name="apn_add" msgid="9069613192201630934">"ଆକ୍ସେସ ପଏଣ୍ଟ ଯୋଗ କରନ୍ତୁ"</string>
<string name="apn_not_set" msgid="8246646433109750293">"ସେଟ ହୋଇନାହିଁ"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"ସେଟ କରାଯାଇନାହିଁ"</string>
<string name="apn_name" msgid="6677695784108157953">"ନାମ"</string>
@@ -2006,12 +1976,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"ଖୋଲିବା ପାଇଁ ଆକ୍ସେସିବିଲିଟୀ ବଟନ ବ୍ୟବହାର କରନ୍ତୁ"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"ଖୋଲିବାକୁ ଭଲ୍ୟୁମ୍ କୀ\'ଗୁଡ଼ିକୁ ଧରି ରଖନ୍ତୁ"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"ଖୋଲିବାକୁ ସ୍କ୍ରିନରେ ତିନି ଥର ଟାପ୍ କରନ୍ତୁ"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"ଖୋଲିବା ପାଇଁ ଦୁଇଟି ଆଙ୍ଗୁଠିରେ ସ୍କ୍ରିନକୁ ତିନିଥର ଟାପ କରନ୍ତୁ"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"ଖୋଲିବା ପାଇଁ ଜେଶ୍ଚର୍ ବ୍ୟବହାର କରନ୍ତୁ"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"ଆକ୍ସେସିବିଲିଟୀ ଜେଶ୍ଚର ବ୍ୟବହାର କରନ୍ତୁ"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"ଏହି ଫିଚର୍ ବ୍ୟବହାର କରିବାକୁ ଆପଣଙ୍କ ସ୍କ୍ରିନର ନିମ୍ନରେ ଥିବା ଆକ୍ସେସିବିଲିଟୀ ବଟନ୍ <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g>ରେ ଟାପ୍ କରନ୍ତୁ। \n\n ଫିଚରଗୁଡ଼ିକ ମଧ୍ୟରେ ସ୍ୱିଚ୍ କରିବାକୁ ଆକ୍ସେସିବିଲିଟୀ ବଟନକୁ ଦାବି ଧରନ୍ତୁ।"</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"ଏହି ଫିଚରକୁ ବ୍ୟବହାର କରିବା ପାଇଁ, ଆପଣଙ୍କ ସ୍କ୍ରିନରେ ଥିବା ଆକ୍ସେସିବିଲିଟୀ ବଟନକୁ ଟାପ୍ କରନ୍ତୁ।"</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"ଏହି ଫିଚର୍ ବ୍ୟବହାର କରିବାକୁ, ଉଭୟ ଭଲ୍ୟୁମ୍ କୀ’କୁ ଦବାଇ ଧରନ୍ତୁ।"</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"ମେଗ୍ନିଫିକେସନ ଆରମ୍ଭ ଏବଂ ବନ୍ଦ କରିବାକୁ, ଆପଣଙ୍କ ସ୍କ୍ରିନର ଯେ କୌଣସି ସ୍ଥାନରେ ତିନି ଥର-ଟାପ କରନ୍ତୁ।"</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"ମେଗ୍ନିଫିକେସନ ଆରମ୍ଭ ଓ ବନ୍ଦ କରିବାକୁ ନିଜ ସ୍କ୍ରିନର ଯେ କୌଣସି ସ୍ଥାନରେ ଦୁଇଟି ଆଙ୍ଗୁଠିରେ ତିନିଥର-ଟାପ କରନ୍ତୁ।"</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"ଏହି ଫିଚର୍ ବ୍ୟବହାର କରିବାକୁ 2ଟି ଆଙ୍ଗୁଠିରେ ସ୍କ୍ରିନର ତଳୁ ଉପରକୁ ସ୍ୱାଇପ୍ କରନ୍ତୁ।\n\nଫିଚରଗୁଡ଼ିକ ମଧ୍ୟରେ ସ୍ୱିଚ୍ କରିବାକୁ, 2ଟି ଆଙ୍ଗୁଠିରେ ଉପରକୁ ସ୍ୱାଇପ୍ କରି ଧରି ରଖନ୍ତୁ।"</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"ଏହି ଫିଚର୍ ବ୍ୟବହାର କରିବାକୁ 3ଟି ଆଙ୍ଗୁଠିରେ ସ୍କ୍ରିନର ତଳୁ ଉପରକୁ ସ୍ୱାଇପ୍ କରନ୍ତୁ।\n\nଫିଚରଗୁଡ଼ିକ ମଧ୍ୟରେ ସ୍ୱିଚ୍ କରିବାକୁ, 3ଟି ଆଙ୍ଗୁଠିରେ ଉପରକୁ ସ୍ୱାଇପ୍ କରି ଧରି ରଖନ୍ତୁ।"</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"ଏକ ଆକ୍ସେସବିଲିଟୀ ଫିଚର୍ ବ୍ୟବହାର କରିବାକୁ 2ଟି ଆଙ୍ଗୁଠିରେ ସ୍କ୍ରିନର ତଳୁ ଉପରକୁ ସ୍ୱାଇପ୍ କରନ୍ତୁ।\n\nଫିଚରଗୁଡ଼ିକ ମଧ୍ୟରେ ସ୍ୱିଚ୍ କରିବାକୁ, 2ଟି ଆଙ୍ଗୁଠିରେ ଉପରକୁ ସ୍ୱାଇପ୍ କରି ଧରି ରଖନ୍ତୁ।"</string>
@@ -2033,12 +2005,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"ଭଲ୍ୟୁମ୍ କୀ\'ଗୁଡ଼ିକୁ ଧରି ରଖନ୍ତୁ"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"ଭଲ୍ୟୁମ୍ କୀ\'ଗୁଡ଼ିକୁ ଧରି ରଖନ୍ତୁ"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"ଉଭୟ ଭଲ୍ୟୁମ୍ କୀ’କୁ ଦବାଇ ଧରି ରଖନ୍ତୁ"</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"ଦୁଇଟି-ଆଙ୍ଗୁଠିରେ ସ୍କ୍ରିନକୁ ତିନିଥର-ଟାପ କରନ୍ତୁ"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"ଦୁଇଟି-ଆଙ୍ଗୁଠିରେ ସ୍କ୍ରିନକୁ ତିନିଥର-ଟାପ କରନ୍ତୁ"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"ଦୁଇଟି ଆଙ୍ଗୁଠିରେ ସ୍କ୍ରିନକୁ ଶୀଘ୍ର {0,number,integer} ଥର ଟାପ କରନ୍ତୁ"</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"ଟ୍ରିପଲ୍ ଟାପ୍ ସ୍କ୍ରିନ୍"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"ଟ୍ରିପଲ୍-ଟାପ୍ ସ୍କ୍ରିନ୍"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"ସ୍କ୍ରିନରେ ଶୀଘ୍ର {0,number,integer} ଥର ଟାପ୍ କରନ୍ତୁ। ଏହି ସର୍ଟକଟ୍ ଆପଣଙ୍କ ଡିଭାଇସକୁ ଧୀର କରିପାରେ"</string>
@@ -2336,6 +2305,8 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"ଯଦି ଆପଣ ଗୋଟିଏ ଆପ୍ର ବ୍ୟାକ୍ଗ୍ରାଉଣ୍ଡ କାର୍ଯ୍ୟକଳାପକୁ ସୀମିତ କରିବେ, ଏହା ଠିକ୍ ଭାବରେ କାମ କରିନପାରେ"</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"ବ୍ୟାଟେରୀକୁ ଅପ୍ଟିମାଇଜ୍ କରିବା ପାଇଁ ଯେହେତୁ ଏହି ଆପ୍କୁ ସେଟ୍ କରାଯାଇନାହିଁ, ତେଣୁ ଆପଣ ଏହାକୁ ସୀମାବଦ୍ଧ କରିପାରିବେ ନାହିଁ। \n\nଆପ୍କୁ ସୀମାବଦ୍ଧ କରିବା ପାଇଁ ପ୍ରଥମେ ବ୍ୟାଟେରୀ ଅପ୍ଟିମାଇଜେସନ୍କୁ ଚାଲୁ କରନ୍ତୁ।"</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"ବ୍ୟାଟେରୀ ବ୍ୟବହାର ପରିଚାଳନା କରନ୍ତୁ"</string>
+ <string name="manager_battery_usage_allow_background_usage_title" msgid="6294649996820358852">"ପୃଷ୍ଠପଟରେ ବ୍ୟବହାର କରିବାକୁ ଅନୁମତି ଦିଅନ୍ତୁ"</string>
+ <string name="manager_battery_usage_allow_background_usage_summary" msgid="8021153755201340819">"ରିଅଲ-ଟାଇମ ଅପଡେଟ ପାଇଁ ସକ୍ଷମ କରନ୍ତୁ, ବେଟେରୀର ଚାର୍ଜ ସେଭ କରିବାକୁ ଅକ୍ଷମ କରନ୍ତୁ"</string>
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"ଅପ୍ରତିବନ୍ଧିତ"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"ଅପ୍ଟିମାଇଜ କରାଯାଇଛି"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"ପ୍ରତିବନ୍ଧିତ"</string>
@@ -3846,6 +3817,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"ସମସ୍ତ ଫାଇଲକୁ ପରିଚାଳନା ପାଇଁ ଆକ୍ସେସ୍ ଦିଅନ୍ତୁ"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"ଏହି ଡିଭାଇସ୍ କିମ୍ବା ଯେ କୌଣସି ସଂଯୁକ୍ତ ଥିବା ଷ୍ଟୋରେଜ୍ ଭଲ୍ୟୁମରେ ଥିବା ସମସ୍ତ ଫାଇଲକୁ ପଢ଼ିବା, ପରିବର୍ତ୍ତନ କରିବା ଏବଂ ଡିଲିଟ୍ କରିବା ପାଇଁ ଏହି ଆପକୁ ଅନୁମତି ଦିଅନ୍ତୁ। ଯଦି ଅନୁମତି ଦିଆଯାଏ, ତେବେ ଆପ୍ ଆପଣଙ୍କୁ ସ୍ପଷ୍ଟ ନକରି ଫାଇଲଗୁଡ଼ିକୁ ଆକ୍ସେସ୍ କରିପାରେ।"</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"ସମସ୍ତ ଫାଇଲକୁ ଆକ୍ସେସ୍ କରିପାରିବ"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"ପୂର୍ଣ୍ଣ ସ୍କ୍ରିନ ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକ"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"ଏହି ଆପରୁ ପୂର୍ଣ୍ଣ ସ୍କ୍ରିନ ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକୁ ଅନୁମତି ଦିଅନ୍ତୁ"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"ଡିଭାଇସ ଲକ ହେଲେ ପୂର୍ଣ୍ଣ ସ୍କ୍ରିନରେ ଦେଖାଯାଉଥିବା ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକୁ ଦେଖାଇବା ପାଇଁ ଏହି ଆପକୁ ଅନୁମତି ଦିଅନ୍ତୁ। ଆଲାରାମ, ଇନକମିଂ କଲ କିମ୍ବା ଅନ୍ୟ ଜରୁରୀ ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକୁ ହାଇଲାଇଟ କରିବା ପାଇଁ ଆପ୍ସ ଏଗୁଡ଼ିକୁ ବ୍ୟବହାର କରିପାରେ।"</string>
diff --git a/res/values-pa/strings.xml b/res/values-pa/strings.xml
index 4e9802a..103f4ae 100644
--- a/res/values-pa/strings.xml
+++ b/res/values-pa/strings.xml
@@ -135,7 +135,14 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"ਸਟਾਈਲਸ"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"ਆਡੀਓ ਸਾਂਝਾਕਰਨ"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"ਆਡੀਓ ਨੂੰ ਸਾਂਝਾ ਕਰੋ"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"ਕਾਲ ਅਤੇ ਅਲਾਰਮ"</string>
+ <!-- no translation found for audio_sharing_streams_category_title (862958129650324581) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_pref_title (4636293245167657721) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_title (8269455097512153101) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_qr_code_summary (4231875597377863735) -->
<skip />
<string name="date_and_time" msgid="1788358029823431692">"ਤਾਰੀਖ ਅਤੇ ਸਮਾਂ"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"ਪ੍ਰੌਕਸੀ"</string>
@@ -540,24 +547,15 @@
<string name="private_space_title" msgid="7078627930195569767">"ਨਿੱਜੀ ਸਪੇਸ"</string>
<string name="private_space_summary" msgid="8237652417163408001">"ਨਿੱਜੀ ਫੋਲਡਰ ਵਿੱਚ ਐਪਾਂ ਲੁਕਾਓ"</string>
<string name="private_space_one_lock_title" msgid="7306547190751832568">"ਸਕ੍ਰੀਨ ਲਾਕ ਦੀ ਵਰਤੋਂ ਕਰ ਕੇ ਅਣਲਾਕ ਕਰੋ"</string>
- <!-- no translation found for private_space_hide_title (8687034008994037610) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_title (972581369094289386) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_summary (1052569521186403642) -->
- <skip />
- <!-- no translation found for privatespace_access_header (982809349769470185) -->
- <skip />
- <!-- no translation found for privatespace_search_description (983837656432484282) -->
- <skip />
- <!-- no translation found for privatespace_tap_tile_description (4146608898639668340) -->
- <skip />
- <!-- no translation found for privatespace_unlock_description (4132755357482447360) -->
- <skip />
- <!-- no translation found for privatespace_hide_off_summary (7227778747159633671) -->
- <skip />
- <!-- no translation found for privatespace_hide_on_summary (6136704537527640183) -->
- <skip />
+ <string name="private_space_hide_title" msgid="8687034008994037610">"ਲਾਕ ਹੋਣ \'ਤੇ ਲੁਕਾਓ"</string>
+ <string name="privatespace_hide_page_title" msgid="972581369094289386">"ਲਾਕ ਹੋਣ \'ਤੇ ਨਿੱਜੀ ਸਪੇਸ ਨੂੰ ਲੁਕਾਓ"</string>
+ <string name="privatespace_hide_page_summary" msgid="1052569521186403642">"ਹੋਰ ਲੋਕਾਂ ਤੋਂ ਤੁਹਾਡੇ ਡੀਵਾਈਸ ਦੀ ਨਿੱਜੀ ਸਪੇਸ ਲੁਕਾਉਣ ਲਈ, ਇਸਨੂੰ ਤੁਹਾਡੀ ਐਪ ਸੂਚੀ ਵਿੱਚੋਂ ਲੁਕਾ ਸਕਦੇ ਹੋ"</string>
+ <string name="privatespace_access_header" msgid="982809349769470185">"ਅਦਿੱਖ ਹੋਣ \'ਤੇ ਨਿੱਜੀ ਸਪੇਸ ਤੱਕ ਪਹੁੰਚ ਕਰੋ"</string>
+ <string name="privatespace_search_description" msgid="983837656432484282">"ਖੋਜ ਪੱਟੀ ਵਿੱਚ \'ਨਿੱਜੀ ਸਪੇਸ\' ਨੂੰ ਖੋਜੋ"</string>
+ <string name="privatespace_tap_tile_description" msgid="4146608898639668340">"ਨਿੱਜੀ ਸਪੇਸ ਦੀ ਟਾਇਲ \'ਤੇ ਟੈਪ ਕਰੋ"</string>
+ <string name="privatespace_unlock_description" msgid="4132755357482447360">"ਆਪਣੀ ਨਿੱਜੀ ਸਪੇਸ ਨੂੰ ਅਣਲਾਕ ਕਰੋ"</string>
+ <string name="privatespace_hide_off_summary" msgid="7227778747159633671">"ਬੰਦ ਹੈ"</string>
+ <string name="privatespace_hide_on_summary" msgid="6136704537527640183">"ਚਾਲੂ ਹੈ"</string>
<string name="private_space_category_system" msgid="1286843321867285700">"ਸਿਸਟਮ"</string>
<string name="private_space_create_title" msgid="47273568884806726">"ਨਿੱਜੀ ਸਪੇਸ ਬਣਾਓ"</string>
<string name="private_space_delete_title" msgid="3075645119800272800">"ਨਿੱਜੀ ਸਪੇਸ ਮਿਟਾਓ"</string>
@@ -570,54 +568,30 @@
<string name="no_device_lock_summary" msgid="7653477413589207824">"ਨਿੱਜੀ ਸਪੇਸ ਵਰਤਣ ਲਈ, ਇਸ ਡੀਵਾਈਸ \'ਤੇ ਸਕ੍ਰੀਨ ਲਾਕ ਸੈੱਟ ਕਰੋ।"</string>
<string name="no_device_lock_action_label" msgid="2640487005629001288">"ਸਕ੍ਰੀਨ ਲਾਕ ਸੈੱਟ ਕਰੋ"</string>
<string name="no_device_lock_cancel" msgid="4412602160321228863">"ਰੱਦ ਕਰੋ"</string>
- <!-- no translation found for privatespace_cancel_label (362351004019511784) -->
- <skip />
- <!-- no translation found for privatespace_setup_button_label (3696372546231047258) -->
- <skip />
- <!-- no translation found for privatespace_setup_title (177623114624330394) -->
- <skip />
- <!-- no translation found for privatespace_hide_apps_summary (4016518749055602268) -->
- <skip />
- <!-- no translation found for privatespace_how_title (8794102046435526065) -->
- <skip />
- <!-- no translation found for privatespace_access_bottom_text (1075244097441349030) -->
- <skip />
- <!-- no translation found for privatespace_protected_lock_text (7320604832432017423) -->
- <skip />
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_cancel_label" msgid="362351004019511784">"ਰੱਦ ਕਰੋ"</string>
+ <string name="privatespace_setup_button_label" msgid="3696372546231047258">"ਸੈੱਟਅੱਪ ਕਰੋ"</string>
+ <string name="privatespace_setup_title" msgid="177623114624330394">"ਨਿੱਜੀ ਸਪੇਸ ਦਾ ਸੈੱਟਅੱਪ ਕਰੋ"</string>
+ <string name="privatespace_hide_apps_summary" msgid="4016518749055602268">"ਨਿੱਜੀ ਐਪਾਂ ਨੂੰ ਇੱਕ ਸੁਰੱਖਿਅਤ ਥਾਂ ਵਿੱਚ ਲੁਕਾਓ ਜਿਸ ਤੱਕ ਸਿਰਫ਼ ਤੁਸੀਂ ਹੀ ਪਹੁੰਚ ਕਰ ਸਕਦੇ ਹੋ"</string>
+ <string name="privatespace_how_title" msgid="8794102046435526065">"ਇਸਦੇ ਕੰਮ ਕਰਨ ਦਾ ਤਰੀਕਾ"</string>
+ <string name="privatespace_access_bottom_text" msgid="1075244097441349030">"ਤੁਸੀਂ ਆਪਣੀ ਐਪਾਂ ਦੀ ਸੂਚੀ ਦੇ ਹੇਠਾਂ ਦਿੱਤੀ ਨਿੱਜੀ ਸਪੇਸ ਤੱਕ ਪਹੁੰਚ ਕਰ ਸਕਦੇ ਹੋ"</string>
+ <string name="privatespace_protected_lock_text" msgid="7320604832432017423">"ਨਿੱਜੀ ਸਪੇਸ ਵਿੱਚ ਮੌਜੂਦ ਐਪਾਂ ਨੂੰ ਲਾਕ ਨਾਲ ਸੁਰੱਖਿਅਤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ"</string>
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"ਨਿੱਜੀ ਸਪੇਸ ਦੇ ਲਾਕ ਹੋਣ \'ਤੇ, ਨਿੱਜੀ ਸਪੇਸ ਵਿੱਚ ਮੌਜੂਦ ਐਪਾਂ ਦੀਆਂ ਸੂਚਨਾਵਾਂ ਲੁਕੀਆਂ ਹੁੰਦੀਆਂ ਹਨ"</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"ਨਿੱਜੀ ਸਪੇਸ ਦੇ ਲਾਕ ਹੋਣ \'ਤੇ, ਨਿੱਜੀ ਸਪੇਸ ਐਪਾਂ ਇਜਾਜ਼ਤ ਪ੍ਰਬੰਧਕ, ਪਰਦੇਦਾਰੀ ਸੰਬੰਧੀ ਡੈਸ਼ਬੋਰਡ ਅਤੇ ਹੋਰ ਸੈਟਿੰਗਾਂ ਵਿੱਚ ਦਿਖਾਈ ਨਹੀਂ ਦੇਣਗੀਆਂ"</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"ਨਿੱਜੀ ਸਪੇਸ ਦਾ ਸੈੱਟਅੱਪ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ…"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"ਨਿੱਜੀ ਸਪੇਸ ਨੂੰ ਲਾਕ ਨਾਲ ਸੁਰੱਖਿਅਤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"ਨਿੱਜੀ ਸਪੇਸ ਦੇ ਲਾਕ ਹੋਣ \'ਤੇ, ਨਿੱਜੀ ਸਪੇਸ ਐਪਾਂ ਦੀ ਵਰਤੋਂ ਸੰਬੰਧੀ ਜਾਣਕਾਰੀ ਲੁਕੀ ਹੁੰਦੀ ਹੈ"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"ਆਪਣੀ ਐਪ ਸੂਚੀ ਤੋਂ ਨਿੱਜੀ ਸਪੇਸ ਤੱਕ ਪਹੁੰਚ ਕਰੋ"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"ਨਿੱਜੀ ਸਪੇਸ ਦਾ ਸੈੱਟਅੱਪ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"ਹੁਣੇ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ ਜਾਂ ਬਾਅਦ ਵਿੱਚ ਵਾਪਸ ਆਓ"</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"ਕੀ ਅਣਲਾਕ ਕਰਨ ਲਈ ਸਕ੍ਰੀਨ ਲਾਕ ਵਰਤਣਾ ਹੈ?"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"ਤੁਸੀਂ ਨਿੱਜੀ ਸਪੇਸ ਨੂੰ ਉਸੇ ਤਰੀਕੇ ਨਾਲ ਅਣਲਾਕ ਕਰ ਸਕਦੇ ਹੋ ਜਿਸ ਤਰ੍ਹਾਂ ਤੁਸੀਂ ਆਪਣੇ ਡੀਵਾਈਸ ਨੂੰ ਅਣਲਾਕ ਕਰਦੇ ਹੋ, ਜਾਂ ਕੋਈ ਵੱਖਰਾ ਲਾਕ ਚੁਣੋ"</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"ਸਕ੍ਰੀਨ ਲਾਕ ਵਰਤੋ"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"ਨਵਾਂ ਲਾਕ ਚੁਣੋ"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"ਸਭ ਹੋ ਗਿਆ!"</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"ਨਿੱਜੀ ਸਪੇਸ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਲਈ, ਆਪਣੀ ਹੋਮ ਸਕ੍ਰੀਨ ਦੇ ਹੇਠਾਂ ਤੋਂ ਉੱਪਰ ਵੱਲ ਸਵਾਈਪ ਕਰੋ, ਫਿਰ ਹੇਠਾਂ ਵੱਲ ਸਕ੍ਰੋਲ ਕਰੋ"</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"ਹੋ ਗਿਆ"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"ਨਿੱਜੀ ਸਪੇਸ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਲਈ ਹੇਠਾਂ ਵੱਲ ਸਕ੍ਰੋਲ ਕਰੋ"</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"ਤੁਸੀਂ <xliff:g id="COUNT">%d</xliff:g> ਤੱਕ ਫਿੰਗਰਪ੍ਰਿੰਟ ਸ਼ਾਮਲ ਕਰ ਸਕਦੇ ਹੋ"</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"ਤੁਸੀਂ ਫਿੰਗਰਪ੍ਰਿੰਟਾਂ ਦੀ ਅਧਿਕਤਮ ਸੰਖਿਆ ਨੂੰ ਸ਼ਾਮਲ ਕੀਤਾ ਹੋਇਆ ਹੈ"</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"ਹੋਰ ਫਿੰਗਰਪ੍ਰਿੰਟਾਂ ਨੂੰ ਸ਼ਾਮਲ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ"</string>
@@ -1135,8 +1109,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"ਫੋਲਡ ਕਰਨ \'ਤੇ ਵੀ ਐਪਾਂ ਨੂੰ ਵਰਤਣਾ ਜਾਰੀ ਰੱਖੋ"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"ਸਮੂਥ ਡਿਸਪਲੇ"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"ਸਵੈਚਲਿਤ ਤੌਰ \'ਤੇ ਕੁਝ ਸਮੱਗਰੀ ਲਈ ਰਿਫ੍ਰੈਸ਼ ਦਰ ਨੂੰ ਵਧਾ ਕੇ <xliff:g id="ID_1">%1$d</xliff:g> Hz ਤੱਕ ਕਰ ਦਿੰਦੀ ਹੈ। ਬੈਟਰੀ ਵਰਤੋਂ ਵੱਧ ਜਾਂਦੀ ਹੈ।"</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"ਉੱਚ ਰਿਫ੍ਰੈਸ਼ ਦਰ ਸੈੱਟ ਕਰੋ"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"ਬਿਹਤਰ ਸਪਰਸ਼ ਪ੍ਰਤੀਕਿਰਿਆ ਅਤੇ ਐਨੀਮੇਸ਼ਨ ਕੁਆਲਿਟੀ ਲਈ ਉੱਚਤਮ ਰਿਫ੍ਰੈਸ਼ ਦਰ। ਬੈਟਰੀ ਵਰਤੋਂ ਵੱਧ ਜਾਂਦੀ ਹੈ।"</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"ਸਕ੍ਰੀਨ ਦਾ ਚੌਕੰਨਾਪਣ"</string>
@@ -1372,6 +1345,8 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"ਭਾਈਚਾਰਕ ਸੈਟਿੰਗਾਂ"</string>
<string name="apn_settings" msgid="4295467389400441299">"APN"</string>
<string name="apn_edit" msgid="2003683641840248741">"ਪਹੁੰਚ ਬਿੰਦੂ ਦਾ ਸੰਪਾਦਨ ਕਰੋ"</string>
+ <!-- no translation found for apn_add (9069613192201630934) -->
+ <skip />
<string name="apn_not_set" msgid="8246646433109750293">"ਸੈੱਟ ਨਹੀਂ ਹੈ"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"ਸੈੱਟ ਨਹੀਂ ਹੈ"</string>
<string name="apn_name" msgid="6677695784108157953">"ਨਾਮ"</string>
@@ -2006,12 +1981,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"ਖੋਲ੍ਹਣ ਲਈ ਪਹੁੰਚਯੋਗਤਾ ਬਟਨ ਵਰਤੋ"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"ਖੋਲ੍ਹਣ ਲਈ ਅਵਾਜ਼ ਕੁੰਜੀਆਂ ਦਬਾਈ ਰੱਖੋ"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"ਖੋਲ੍ਹਣ ਲਈ ਸਕ੍ਰੀਨ \'ਤੇ ਟ੍ਰਿਪਲ ਟੈਪ ਕਰੋ"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"ਖੋਲ੍ਹਣ ਲਈ ਦੋ-ਉਂਗਲਾਂ ਨਾਲ ਟ੍ਰਿਪਲ-ਟੈਪ ਕਰੋ"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"ਖੋਲ੍ਹਣ ਲਈ ਸੰਕੇਤ ਵਰਤੋ"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"ਪਹੁੰਚਯੋਗਤਾ ਸੰਬੰਧੀ ਇਸ਼ਾਰਾ ਵਰਤੋ"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"ਇਸ ਵਿਸ਼ੇਸ਼ਤਾ ਨੂੰ ਵਰਤਣ ਲਈ, ਆਪਣੀ ਸਕ੍ਰੀਨ ਦੇ ਹੇਠਾਂ ਪਹੁੰਚਯੋਗਤਾ ਬਟਨ <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> \'ਤੇ ਟੈਪ ਕਰੋ।\n\nਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਵਿਚਾਲੇ ਅਦਲਾ-ਬਦਲੀ ਕਰਨ ਲਈ, ਪਹੁੰਚਯੋਗਤਾ ਬਟਨ ਨੂੰ ਦਬਾ ਕੇ ਰੱਖੋ।"</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"ਇਸ ਵਿਸ਼ੇਸ਼ਤਾ ਨੂੰ ਵਰਤਣ ਲਈ, ਆਪਣੀ ਸਕ੍ਰੀਨ \'ਤੇ ਦਿੱਤੇ ਪਹੁੰਚਯੋਗਤਾ ਬਟਨ \'ਤੇ ਟੈਪ ਕਰੋ।"</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"ਇਸ ਵਿਸ਼ੇਸ਼ਤਾ ਨੂੰ ਵਰਤਣ ਲਈ, ਦੋਵੇਂ ਅਵਾਜ਼ ਕੁੰਜੀਆਂ ਨੂੰ ਦਬਾਈ ਰੱਖੋ।"</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"ਵੱਡਦਰਸ਼ੀਕਰਨ ਨੂੰ ਸ਼ੁਰੂ ਅਤੇ ਬੰਦ ਕਰਨ ਲਈ, ਸਕ੍ਰੀਨ \'ਤੇ ਕਿਤੇ ਵੀ ਟ੍ਰਿਪਲ-ਟੈਪ ਕਰੋ।"</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"ਵੱਡਦਰਸ਼ੀਕਰਨ ਨੂੰ ਸ਼ੁਰੂ ਅਤੇ ਬੰਦ ਕਰਨ ਲਈ, ਆਪਣੀ ਸਕ੍ਰੀਨ \'ਤੇ ਦੋ ਉਂਗਲਾਂ ਨਾਲ ਕਿਤੇ ਵੀ ਟ੍ਰਿਪਲ-ਟੈਪ ਕਰੋ।"</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"ਇਸ ਵਿਸ਼ੇਸ਼ਤਾ ਨੂੰ ਵਰਤਣ ਲਈ, 2 ਉਂਗਲਾਂ ਨਾਲ ਸਕ੍ਰੀਨ ਦੇ ਹੇਠਾਂ ਤੋਂ ਉੱਪਰ ਵੱਲ ਸਵਾਈਪ ਕਰੋ।\n\nਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਵਿਚਾਲੇ ਅਦਲਾ-ਬਦਲੀ ਕਰਨ ਲਈ, 2 ਉਂਗਲਾਂ ਨਾਲ ਉੱਪਰ ਵੱਲ ਸਵਾਈਪ ਕਰਕੇ ਦਬਾਈ ਰੱਖੋ।"</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"ਇਸ ਵਿਸ਼ੇਸ਼ਤਾ ਨੂੰ ਵਰਤਣ ਲਈ, 3 ਉਂਗਲਾਂ ਨਾਲ ਸਕ੍ਰੀਨ ਦੇ ਹੇਠਾਂ ਤੋਂ ਉੱਪਰ ਵੱਲ ਸਵਾਈਪ ਕਰੋ।\n\nਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਵਿਚਾਲੇ ਅਦਲਾ-ਬਦਲੀ ਕਰਨ ਲਈ, 3 ਉਂਗਲਾਂ ਨਾਲ ਉੱਪਰ ਵੱਲ ਸਵਾਈਪ ਕਰਕੇ ਦਬਾਈ ਰੱਖੋ।"</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"ਕਿਸੇ ਪਹੁੰਚਯੋਗਤਾ ਵਿਸ਼ੇਸ਼ਤਾ ਨੂੰ ਵਰਤਣ ਲਈ, 2 ਉਂਗਲਾਂ ਨਾਲ ਸਕ੍ਰੀਨ ਦੇ ਹੇਠਾਂ ਤੋਂ ਉੱਪਰ ਵੱਲ ਸਵਾਈਪ ਕਰੋ।\n\nਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਵਿਚਾਲੇ ਅਦਲਾ-ਬਦਲੀ ਕਰਨ ਲਈ, 2 ਉਂਗਲਾਂ ਨਾਲ ਉੱਪਰ ਵੱਲ ਸਵਾਈਪ ਕਰਕੇ ਦਬਾਈ ਰੱਖੋ।"</string>
@@ -2033,12 +2010,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"ਅਵਾਜ਼ ਕੁੰਜੀਆਂ ਨੂੰ ਦਬਾ ਕੇ ਰੱਖੋ"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"ਅਵਾਜ਼ ਕੁੰਜੀਆਂ ਨੂੰ ਦਬਾ ਕੇ ਰੱਖੋ"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"ਦੋਵੇਂ ਅਵਾਜ਼ ਕੁੰਜੀਆਂ ਨੂੰ ਦਬਾਈ ਰੱਖੋ"</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"ਦੋ-ਉਂਗਲਾਂ ਨਾਲ ਟ੍ਰਿਪਲ-ਟੈਪ ਕਰੋ"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"ਦੋ-ਉਂਗਲਾਂ ਨਾਲ ਟ੍ਰਿਪਲ-ਟੈਪ ਕਰੋ"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"ਤੇਜ਼ੀ ਨਾਲ ਸਕ੍ਰੀਨ \'ਤੇ ਦੋ ਉਂਗਲਾਂ ਨਾਲ {0,number,integer} ਵਾਰ ਟੈਪ ਕਰੋ"</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"ਸਕ੍ਰੀਨ \'ਤੇ ਟ੍ਰਿਪਲ ਟੈਪ ਕਰੋ"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"ਸਕ੍ਰੀਨ \'ਤੇ ਟ੍ਰਿਪਲ ਟੈਪ ਕਰੋ"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"ਸਕ੍ਰੀਨ \'ਤੇ ਤੇਜ਼ੀ ਨਾਲ {0,number,integer} ਵਾਰ ਟੈਪ ਕਰੋ। ਇਹ ਸ਼ਾਰਟਕੱਟ ਸ਼ਾਇਦ ਤੁਹਾਡੇ ਡੀਵਾਈਸ ਨੂੰ ਹੌਲੀ ਕਰ ਦੇਵੇ"</string>
@@ -2336,6 +2310,10 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"ਜੇਕਰ ਤੁਸੀਂ ਕਿਸੇ ਐਪ ਦੀ ਬੈਕਗ੍ਰਾਊਂਡ ਸਰਗਰਮੀ ਨੂੰ ਸੀਮਿਤ ਕਰਦੇ ਹੋ, ਤਾਂ ਉਹ ਅਜੀਬ ਢੰਗ ਨਾਲ ਵਰਤਾਅ ਕਰ ਸਕਦੀ ਹੈ"</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"ਇਹ ਐਪ ਬੈਟਰੀ ਨੂੰ ਸੁਯੋਗ ਕਰੋ \'ਤੇ ਸੈੱਟ ਨਾ ਕੀਤੀ ਹੋਣ ਕਰਕੇ, ਤੁਸੀਂ ਇਸ \'ਤੇ ਪਾਬੰਧੀ ਨਹੀਂ ਲਗਾ ਸਕਦੇ।\n\nਐਪ \'ਤੇ ਪਾਬੰਧੀ ਲਗਾਉਣ ਲਈ, ਪਹਿਲਾਂ ਬੈਟਰੀ ਸੁਯੋਗਕਰਨ ਨੂੰ ਚਾਲੂ ਕਰੋ।"</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"ਬੈਟਰੀ ਵਰਤੋਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰੋ"</string>
+ <!-- no translation found for manager_battery_usage_allow_background_usage_title (6294649996820358852) -->
+ <skip />
+ <!-- no translation found for manager_battery_usage_allow_background_usage_summary (8021153755201340819) -->
+ <skip />
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"ਅਣ-ਪ੍ਰਤਿਬੰਧਿਤ"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"ਸੁਯੋਗ ਬਣਾਈ ਗਈ"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"ਪ੍ਰਤਿਬੰਧਿਤ"</string>
@@ -3846,6 +3824,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"ਸਾਰੀਆਂ ਫ਼ਾਈਲਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰਨ ਦਿਓ"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"ਇਸ ਐਪ ਨੂੰ ਇਸ ਡੀਵਾਈਸ ਜਾਂ ਇਸ ਨਾਲ ਕਨੈਕਟ ਕਿਸੇ ਵੀ ਸਟੋਰੇਜ ਭਾਗ ਦੀਆਂ ਸਾਰੀਆਂ ਫ਼ਾਈਲਾਂ ਨੂੰ ਪੜ੍ਹਨ, ਸੋਧਣ ਅਤੇ ਮਿਟਾਉਣ ਦੀ ਆਗਿਆ ਦਿਓ। ਜੇ ਇਜਾਜ਼ਤ ਦਿੱਤੀ ਜਾਂਦੀ ਹੈ, ਤਾਂ ਐਪ ਤੁਹਾਨੂੰ ਸੂਚਿਤ ਕੀਤੇ ਬਿਨਾਂ ਫ਼ਾਈਲਾਂ ਤੱਕ ਪਹੁੰਚ ਕਰ ਸਕਦੀ ਹੈ।"</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"ਇਹ ਸਾਰੀਆਂ ਫ਼ਾਈਲਾਂ ਤੱਕ ਪਹੁੰਚ ਕਰ ਸਕਦੀ ਹੈ"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"ਪੂਰੀ ਸਕ੍ਰੀਨ ਸੂਚਨਾਵਾਂ"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"ਇਸ ਐਪ ਤੋਂ ਪੂਰੀ ਸਕ੍ਰੀਨ ਸੂਚਨਾਵਾਂ ਦੀ ਆਗਿਆ ਦਿਓ"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"ਇਸ ਐਪ ਨੂੰ ਉਹ ਸੂਚਨਾਵਾਂ ਦਿਖਾਉਣ ਦੀ ਆਗਿਆ ਦਿਓ ਜੋ ਡੀਵਾਈਸ ਲਾਕ ਹੋਣ \'ਤੇ ਪੂਰੀ ਸਕ੍ਰੀਨ ਵਿੱਚ ਦਿਖਾਈ ਦਿੰਦੀਆਂ ਹਨ। ਐਪਾਂ ਇਨ੍ਹਾਂ ਦੀ ਵਰਤੋਂ ਅਲਾਰਮਾਂ, ਇਨਕਮਿੰਗ ਕਾਲਾਂ ਜਾਂ ਹੋਰ ਜ਼ਰੂਰੀ ਸੂਚਨਾਵਾਂ ਨੂੰ ਉਜਾਗਰ ਕਰਨ ਲਈ ਕਰ ਸਕਦੀਆਂ ਹਨ।"</string>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index bb6feea..f87a0ba 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -135,7 +135,14 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"Rysik"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"Udostępnianie dźwięku"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"Udostępniaj dźwięk"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"Połączenia i alarmy"</string>
+ <!-- no translation found for audio_sharing_streams_category_title (862958129650324581) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_pref_title (4636293245167657721) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_title (8269455097512153101) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_qr_code_summary (4231875597377863735) -->
<skip />
<string name="date_and_time" msgid="1788358029823431692">"Data i godzina"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"Serwer proxy"</string>
@@ -540,24 +547,15 @@
<string name="private_space_title" msgid="7078627930195569767">"Obszar prywatny"</string>
<string name="private_space_summary" msgid="8237652417163408001">"Ukryj aplikacje w prywatnym folderze"</string>
<string name="private_space_one_lock_title" msgid="7306547190751832568">"Odblokuj za pomocą blokady ekranu"</string>
- <!-- no translation found for private_space_hide_title (8687034008994037610) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_title (972581369094289386) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_summary (1052569521186403642) -->
- <skip />
- <!-- no translation found for privatespace_access_header (982809349769470185) -->
- <skip />
- <!-- no translation found for privatespace_search_description (983837656432484282) -->
- <skip />
- <!-- no translation found for privatespace_tap_tile_description (4146608898639668340) -->
- <skip />
- <!-- no translation found for privatespace_unlock_description (4132755357482447360) -->
- <skip />
- <!-- no translation found for privatespace_hide_off_summary (7227778747159633671) -->
- <skip />
- <!-- no translation found for privatespace_hide_on_summary (6136704537527640183) -->
- <skip />
+ <string name="private_space_hide_title" msgid="8687034008994037610">"Ukryj po zablokowaniu"</string>
+ <string name="privatespace_hide_page_title" msgid="972581369094289386">"Ukryj Obszar prywatny po jego zablokowaniu"</string>
+ <string name="privatespace_hide_page_summary" msgid="1052569521186403642">"Aby inni nie wiedzieli, że na urządzeniu jest Obszar prywatny, można ukryć go na liście aplikacji"</string>
+ <string name="privatespace_access_header" msgid="982809349769470185">"Dostęp do Obszaru prywatnego po jego ukryciu"</string>
+ <string name="privatespace_search_description" msgid="983837656432484282">"W pasku wyszukiwania wyszukaj „Obszar prywatny”"</string>
+ <string name="privatespace_tap_tile_description" msgid="4146608898639668340">"Kliknij kafelek Obszar prywatny"</string>
+ <string name="privatespace_unlock_description" msgid="4132755357482447360">"Odblokuj Obszar prywatny"</string>
+ <string name="privatespace_hide_off_summary" msgid="7227778747159633671">"Wyłączono"</string>
+ <string name="privatespace_hide_on_summary" msgid="6136704537527640183">"Włączono"</string>
<string name="private_space_category_system" msgid="1286843321867285700">"System"</string>
<string name="private_space_create_title" msgid="47273568884806726">"Utwórz obszar prywatny"</string>
<string name="private_space_delete_title" msgid="3075645119800272800">"Usuń obszar prywatny"</string>
@@ -570,54 +568,30 @@
<string name="no_device_lock_summary" msgid="7653477413589207824">"Aby korzystać z obszaru prywatnego, ustaw na tym urządzeniu blokadę ekranu."</string>
<string name="no_device_lock_action_label" msgid="2640487005629001288">"Ustaw blokadę ekranu"</string>
<string name="no_device_lock_cancel" msgid="4412602160321228863">"Anuluj"</string>
- <!-- no translation found for privatespace_cancel_label (362351004019511784) -->
- <skip />
- <!-- no translation found for privatespace_setup_button_label (3696372546231047258) -->
- <skip />
- <!-- no translation found for privatespace_setup_title (177623114624330394) -->
- <skip />
- <!-- no translation found for privatespace_hide_apps_summary (4016518749055602268) -->
- <skip />
- <!-- no translation found for privatespace_how_title (8794102046435526065) -->
- <skip />
- <!-- no translation found for privatespace_access_bottom_text (1075244097441349030) -->
- <skip />
- <!-- no translation found for privatespace_protected_lock_text (7320604832432017423) -->
- <skip />
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_cancel_label" msgid="362351004019511784">"Anuluj"</string>
+ <string name="privatespace_setup_button_label" msgid="3696372546231047258">"Skonfiguruj"</string>
+ <string name="privatespace_setup_title" msgid="177623114624330394">"Konfiguracja Obszaru prywatnego"</string>
+ <string name="privatespace_hide_apps_summary" msgid="4016518749055602268">"Ukryj aplikacje prywatne w bezpiecznym obszarze, do którego tylko Ty masz dostęp"</string>
+ <string name="privatespace_how_title" msgid="8794102046435526065">"Jak to działa"</string>
+ <string name="privatespace_access_bottom_text" msgid="1075244097441349030">"Dostęp do Obszaru prywatnego można uzyskać z dołu listy aplikacji"</string>
+ <string name="privatespace_protected_lock_text" msgid="7320604832432017423">"Aplikacje w Obszarze prywatnym są chronione blokadą"</string>
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"Powiadomienia z aplikacji w Obszarze prywatnym są ukryte, gdy jest on zablokowany"</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"Aplikacje w Obszarze prywatnym nie będą wyświetlane w menedżerze uprawnień, panelu prywatności ani innych ustawieniach, gdy Obszar prywatny jest zablokowany"</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"Konfiguruję Obszar prywatny…"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"Obszar prywatny jest chroniony blokadą"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"Informacje o wykorzystaniu aplikacji w Obszarze prywatnym są ukryte, gdy jest on zablokowany"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"Dostęp do Obszaru prywatnego z listy aplikacji"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"Nie udało się skonfigurować Obszaru prywatnego"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"Spróbuj ponownie teraz lub wróć później"</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"Spróbuj ponownie"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"Używać blokady ekranu do odblokowywania?"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"Obszar prywatny można odblokować w ten sam sposób, w jaki odblokowuje się urządzenie, lub wybrać inną blokadę"</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"Używaj blokady ekranu"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"Wybierz nową blokadę"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"Wszystko gotowe."</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"Aby uzyskać dostęp do Obszaru prywatnego, przesuń palcem z dołu ekranu głównego w górę, a następnie przewiń ekran w dół"</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"Gotowe"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"Przewiń w dół, aby uzyskać dostęp do Obszaru prywatnego"</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"Możesz dodać do <xliff:g id="COUNT">%d</xliff:g> odcisków palców"</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"Dodano maksymalną liczbę odcisków palców"</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"Nie można dodać więcej odcisków palców"</string>
@@ -1135,8 +1109,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"Nadal używaj aplikacji po złożeniu"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"Płynne wyświetlanie"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"W przypadku niektórych treści automatycznie podwyższa częstotliwość odświeżania do <xliff:g id="ID_1">%1$d</xliff:g> Hz. Zwiększa wykorzystanie baterii."</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"Wymuszaj częstotliwość odświeżania na najwyższym poziomie"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"Najszybsza częstotliwość odświeżania zapewnia szybszą reakcję na dotyk i wyższą jakość animacji, ale zwiększa zużycie baterii"</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"Aktywność ekranu"</string>
@@ -1372,6 +1345,8 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"Wspólne ustawienia"</string>
<string name="apn_settings" msgid="4295467389400441299">"Nazwy APN"</string>
<string name="apn_edit" msgid="2003683641840248741">"Edytuj punkt dostępu"</string>
+ <!-- no translation found for apn_add (9069613192201630934) -->
+ <skip />
<string name="apn_not_set" msgid="8246646433109750293">"Nie ustawiono"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"Nie ustawiono"</string>
<string name="apn_name" msgid="6677695784108157953">"Nazwa"</string>
@@ -2006,12 +1981,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"Otwieraj przyciskiem ułatwień dostępu"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"Aby otworzyć, przytrzymaj przyciski głośności"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"Aby otworzyć, trzy razy kliknij ekran"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"Otwarcie przez dotknięcie ekranu 3 razy 2 palcami"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"Otwieranie gestem"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"Użyj gestu ułatwień dostępu"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"Aby użyć tej funkcji, kliknij przycisk ułatwień dostępu <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> u dołu ekranu.\n\nAby przełączać się między funkcjami, naciśnij i przytrzymaj przycisk ułatwień dostępu."</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"Aby użyć tej funkcji, kliknij przycisk ułatwień dostępu na ekranie."</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"Aby użyć tej funkcji, naciśnij i przytrzymaj oba przyciski głośności."</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"Aby włączyć lub wyłączyć powiększenie, kliknij trzykrotnie w dowolnym miejscu na ekranie."</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"Aby włączyć lub wyłączyć powiększenie, dotknij 3 razy 2 palcami dowolnego miejsca na ekranie."</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"Aby użyć tej funkcji, przesuń 2 palcami z dołu ekranu w górę.\n\nAby przełączać się między funkcjami, przesuń 2 palcami w górę i przytrzymaj."</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"Aby użyć tej funkcji, przesuń 3 palcami z dołu ekranu w górę.\n\nAby przełączać się między funkcjami, przesuń 3 palcami w górę i przytrzymaj."</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"Aby użyć ułatwień dostępu, przesuń 2 palcami z dołu ekranu w górę.\n\nAby przełączać się między funkcjami, przesuń 2 palcami w górę i przytrzymaj."</string>
@@ -2033,12 +2010,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"Przytrzymaj przyciski głośności"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"przytrzymaj klawisze głośności"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"Naciśnij i przytrzymaj oba przyciski głośności"</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"Dotknięcie ekranu 3 razy 2 palcami"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"dotknięcie ekranu 3 razy 2 palcami"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"Szybko dotknij ekranu {0,number,integer} razy 2 palcami"</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"Kliknij ekran trzykrotnie"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"trzykrotnie kliknij ekran"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"Szybko kliknij ekran {0,number,integer} razy. Ten skrót może spowolnić urządzenie."</string>
@@ -2336,6 +2310,10 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"Jeśli ograniczysz aktywność aplikacji w tle, może ona działać nieprawidłowo"</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"Ta aplikacja nie jest skonfigurowana do optymalnego wykorzystywania baterii, więc nie możesz wprowadzić dla niej ograniczeń.\n\nAby wprowadzić ograniczenia dla aplikacji, najpierw włącz optymalizację baterii."</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"Zarządzaj wykorzystaniem baterii"</string>
+ <!-- no translation found for manager_battery_usage_allow_background_usage_title (6294649996820358852) -->
+ <skip />
+ <!-- no translation found for manager_battery_usage_allow_background_usage_summary (8021153755201340819) -->
+ <skip />
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"Bez ograniczeń"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"Z optymalizacją"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"Z ograniczeniami"</string>
@@ -3846,6 +3824,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"Zezwól na zarządzanie wszystkimi plikami"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"Zezwól tej aplikacji na odczytywanie, modyfikowanie i usuwanie plików na tym urządzeniu oraz wszelkich połączonych woluminach pamięci. Aplikacje z tymi uprawnieniami mogą korzystać z dostępu do plików bez konieczności wyraźnego informowania Cię o tym."</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"Ma dostęp do wszystkich plików"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"Powiadomienia pełnoekranowe"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"Zezwól na powiadomienia pełnoekranowe z tej aplikacji"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"Zezwalaj na wyświetlanie przez tę aplikację powiadomień zajmujących cały ekran, gdy urządzenie jest zablokowane. Aplikacje mogą używać tych uprawnień do powiadamiania o alarmach, połączeniach przychodzących i innych pilnych sprawach."</string>
diff --git a/res/values-pt-rBR/strings.xml b/res/values-pt-rBR/strings.xml
index b7a5425..ea244d8 100644
--- a/res/values-pt-rBR/strings.xml
+++ b/res/values-pt-rBR/strings.xml
@@ -135,8 +135,11 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"Stylus"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"Compartilhamento de áudio"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"Compartilhar áudio"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
- <skip />
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"Ligações e alarmes"</string>
+ <string name="audio_sharing_streams_category_title" msgid="862958129650324581">"Conectar a um stream de LE Audio"</string>
+ <string name="audio_sharing_streams_pref_title" msgid="4636293245167657721">"Streams de áudio por perto"</string>
+ <string name="audio_sharing_streams_title" msgid="8269455097512153101">"Streams de áudio"</string>
+ <string name="audio_sharing_streams_qr_code_summary" msgid="4231875597377863735">"Conectar a um stream de áudio usando um código QR"</string>
<string name="date_and_time" msgid="1788358029823431692">"Data e hora"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"Proxy"</string>
<string name="proxy_clear_text" msgid="6529658759984031149">"Limpar"</string>
@@ -540,24 +543,15 @@
<string name="private_space_title" msgid="7078627930195569767">"Espaço particular"</string>
<string name="private_space_summary" msgid="8237652417163408001">"Ocultar apps em uma pasta particular"</string>
<string name="private_space_one_lock_title" msgid="7306547190751832568">"Desbloquear usando o bloqueio de tela"</string>
- <!-- no translation found for private_space_hide_title (8687034008994037610) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_title (972581369094289386) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_summary (1052569521186403642) -->
- <skip />
- <!-- no translation found for privatespace_access_header (982809349769470185) -->
- <skip />
- <!-- no translation found for privatespace_search_description (983837656432484282) -->
- <skip />
- <!-- no translation found for privatespace_tap_tile_description (4146608898639668340) -->
- <skip />
- <!-- no translation found for privatespace_unlock_description (4132755357482447360) -->
- <skip />
- <!-- no translation found for privatespace_hide_off_summary (7227778747159633671) -->
- <skip />
- <!-- no translation found for privatespace_hide_on_summary (6136704537527640183) -->
- <skip />
+ <string name="private_space_hide_title" msgid="8687034008994037610">"Ocultar quando bloqueado"</string>
+ <string name="privatespace_hide_page_title" msgid="972581369094289386">"Ocultar o Espaço particular quando bloqueado"</string>
+ <string name="privatespace_hide_page_summary" msgid="1052569521186403642">"Oculte o Espaço particular na sua lista de apps para que outras pessoas não saibam que ele está no dispositivo"</string>
+ <string name="privatespace_access_header" msgid="982809349769470185">"Acessar o Espaço particular quando oculto"</string>
+ <string name="privatespace_search_description" msgid="983837656432484282">"Pesquisar \"Espaço particular\" na barra de pesquisa"</string>
+ <string name="privatespace_tap_tile_description" msgid="4146608898639668340">"Tocar no bloco Espaço particular"</string>
+ <string name="privatespace_unlock_description" msgid="4132755357482447360">"Desbloquear seu Espaço particular"</string>
+ <string name="privatespace_hide_off_summary" msgid="7227778747159633671">"Desativado"</string>
+ <string name="privatespace_hide_on_summary" msgid="6136704537527640183">"Ativado"</string>
<string name="private_space_category_system" msgid="1286843321867285700">"Sistema"</string>
<string name="private_space_create_title" msgid="47273568884806726">"Criar Espaço particular"</string>
<string name="private_space_delete_title" msgid="3075645119800272800">"Excluir o Espaço particular"</string>
@@ -570,54 +564,30 @@
<string name="no_device_lock_summary" msgid="7653477413589207824">"Para usar o Espaço particular, defina um bloqueio de tela neste dispositivo."</string>
<string name="no_device_lock_action_label" msgid="2640487005629001288">"Definir bloqueio de tela"</string>
<string name="no_device_lock_cancel" msgid="4412602160321228863">"Cancelar"</string>
- <!-- no translation found for privatespace_cancel_label (362351004019511784) -->
- <skip />
- <!-- no translation found for privatespace_setup_button_label (3696372546231047258) -->
- <skip />
- <!-- no translation found for privatespace_setup_title (177623114624330394) -->
- <skip />
- <!-- no translation found for privatespace_hide_apps_summary (4016518749055602268) -->
- <skip />
- <!-- no translation found for privatespace_how_title (8794102046435526065) -->
- <skip />
- <!-- no translation found for privatespace_access_bottom_text (1075244097441349030) -->
- <skip />
- <!-- no translation found for privatespace_protected_lock_text (7320604832432017423) -->
- <skip />
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_cancel_label" msgid="362351004019511784">"Cancelar"</string>
+ <string name="privatespace_setup_button_label" msgid="3696372546231047258">"Configurar"</string>
+ <string name="privatespace_setup_title" msgid="177623114624330394">"Configurar o Espaço particular"</string>
+ <string name="privatespace_hide_apps_summary" msgid="4016518749055602268">"Oculte apps particulares em um espaço seguro que só você pode acessar"</string>
+ <string name="privatespace_how_title" msgid="8794102046435526065">"Como funciona"</string>
+ <string name="privatespace_access_bottom_text" msgid="1075244097441349030">"Você pode acessar o Espaço particular na parte de baixo da sua lista de apps"</string>
+ <string name="privatespace_protected_lock_text" msgid="7320604832432017423">"Os apps no Espaço particular ficam protegidos por um bloqueio"</string>
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"As notificações de apps no Espaço particular ficam ocultas quando ele está bloqueado"</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"Os apps do Espaço particular não aparecem na Gestão de permissões, no painel de privacidade e em outras configurações quando esse espaço está bloqueado"</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"Configurando Espaço particular…"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"O Espaço particular fica protegido por um bloqueio"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"As informações de uso de apps do Espaço particular ficam ocultas quando ele está bloqueado"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"Acessar o Espaço particular da sua lista de apps"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"Não foi possível configurar o Espaço particular"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"Tente de novo ou volte mais tarde"</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"Tentar de novo"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"Usar bloqueio de tela para desbloquear?"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"Você pode desbloquear o Espaço particular da mesma maneira que desbloqueia seu dispositivo ou escolher um bloqueio diferente"</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"Usar bloqueio de tela"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"Escolher novo bloqueio"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"Tudo pronto!"</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"Para acessar o Espaço particular, deslize de baixo para cima na tela inicial e role para baixo"</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"Concluído"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"Role a tela para baixo para acessar o Espaço particular"</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"É possível adicionar até <xliff:g id="COUNT">%d</xliff:g> digitais"</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"Você adicionou o número máximo de impressões digitais"</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"Não é possível adicionar mais impressões digitais"</string>
@@ -1135,8 +1105,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"Continuar usando apps com a tela dobrada"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"Smooth Display"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"Aumenta automaticamente a taxa de atualização para <xliff:g id="ID_1">%1$d</xliff:g> Hz para alguns conteúdos. Maior uso da bateria."</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"Forçar taxa de atualização máxima"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"Maior taxa de atualização para melhoria na resposta tátil e na qualidade das animações. Maior uso da bateria."</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"Reconhecimento de tela em uso"</string>
@@ -1372,6 +1341,7 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"Configurações compartilhadas"</string>
<string name="apn_settings" msgid="4295467389400441299">"APNs"</string>
<string name="apn_edit" msgid="2003683641840248741">"Editar ponto de acesso"</string>
+ <string name="apn_add" msgid="9069613192201630934">"Adicionar ponto de acesso"</string>
<string name="apn_not_set" msgid="8246646433109750293">"Sem definição"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"Não definido"</string>
<string name="apn_name" msgid="6677695784108157953">"Nome"</string>
@@ -2006,12 +1976,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"Usar o botão de acessibilidade para abrir"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"Mantenha as teclas de volume pressionadas para abrir"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"Toque três vezes na tela para abrir"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"Tocar três vezes na tela com dois dedos para abrir"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"Usar gesto para abrir"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"Usar o gesto de acessibilidade"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"Para usar esse recurso, toque no botão de acessibilidade <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> na parte inferior da tela.\n\nPara alternar entre os recursos, toque no botão de acessibilidade e o pressione."</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"Para usar esse recurso, toque no botão de acessibilidade na sua tela."</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"Para usar esse recurso, toque nas duas teclas de volume e as mantenha pressionadas."</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"Para iniciar ou interromper a ampliação, toque três vezes em qualquer lugar da tela."</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"Para iniciar ou interromper a ampliação, toque três vezes em qualquer lugar da tela com dois dedos."</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"Para usar esse recurso, deslize de baixo para cima na tela com dois dedos.\n\nPara alternar entre os recursos, deslize de baixo para cima com dois dedos, sem soltar."</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"Para usar esse recurso, deslize de baixo para cima na tela com três dedos.\n\nPara alternar entre os recursos, deslize de baixo para cima com três dedos, sem soltar."</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"Para usar um recurso de acessibilidade, deslize de baixo para cima na tela com dois dedos.\n\nPara alternar entre recursos, deslize de baixo para cima com dois dedos, sem soltar."</string>
@@ -2033,12 +2005,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"Manter as teclas de volume pressionadas"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"manter as teclas de volume pressionadas"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"Toque nas duas teclas de volume e as mantenha pressionadas"</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"Tocar três vezes na tela com dois dedos"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"tocar três vezes na tela com dois dedos"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"Toque na tela {0,number,integer} vezes rapidamente com dois dedos"</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"Tocar na tela três vezes"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"tocar na tela três vezes"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"Toque na tela {0,number,integer} vezes rapidamente. Esse atalho pode deixar o dispositivo mais lento"</string>
@@ -2336,6 +2305,8 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"Se você limitar as atividades em segundo plano de um app, ele poderá apresentar mau funcionamento"</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"Como o app não está configurado para otimizar bateria, não é possível restringi-lo.\n\nPara restringir, ative a otimização."</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"Gerenciar uso da bateria"</string>
+ <string name="manager_battery_usage_allow_background_usage_title" msgid="6294649996820358852">"Permitir o uso em segundo plano"</string>
+ <string name="manager_battery_usage_allow_background_usage_summary" msgid="8021153755201340819">"Ative para receber atualizações em tempo real ou desative para economizar bateria"</string>
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"Sem restrições"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"Otimizado"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"Restrito"</string>
@@ -3846,6 +3817,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"Acesso para gerenciar todos os arquivos"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"Permitir que o app leia, modifique e exclua todos os arquivos deste dispositivo ou de qualquer volume de armazenamento conectado. Se a permissão for concedida, o app poderá acessar arquivos sem nenhum aviso prévio."</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"Pode acessar todos os arquivos"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"Notificações em tela cheia"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"Permitir que esse app mostre notificações em tela cheia"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"Permita que o app mostre notificações que ocupam a tela inteira quando o dispositivo estiver bloqueado. Os apps poderão usar essa permissão para destacar alarmes, ligações recebidas ou outras notificações urgentes."</string>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index 7fb7e61..2c358ce 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -135,8 +135,11 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"Caneta stylus"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"Partilha de áudio"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"Partilhar áudio"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
- <skip />
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"Chamadas e alarmes"</string>
+ <string name="audio_sharing_streams_category_title" msgid="862958129650324581">"Ligue-se a uma stream de LE Audio"</string>
+ <string name="audio_sharing_streams_pref_title" msgid="4636293245167657721">"Streams de áudio próximas"</string>
+ <string name="audio_sharing_streams_title" msgid="8269455097512153101">"Streams de áudio"</string>
+ <string name="audio_sharing_streams_qr_code_summary" msgid="4231875597377863735">"Ligue-se a uma stream de áudio através do código QR"</string>
<string name="date_and_time" msgid="1788358029823431692">"Data e hora"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"Proxy"</string>
<string name="proxy_clear_text" msgid="6529658759984031149">"Limpar"</string>
@@ -568,40 +571,23 @@
<string name="privatespace_how_title" msgid="8794102046435526065">"Como funciona"</string>
<string name="privatespace_access_bottom_text" msgid="1075244097441349030">"Pode aceder ao espaço privado a partir da parte inferior da sua lista de apps"</string>
<string name="privatespace_protected_lock_text" msgid="7320604832432017423">"As apps no espaço privado são protegidas por um bloqueio"</string>
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"Quando o espaço privado estiver bloqueado, as notificações das respetivas apps são ocultadas"</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"As apps do espaço privado não vão aparecer no Gestor de autorizações, no painel de privacidade nem noutras definições quando o espaço privado estiver bloqueado"</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"A configurar o espaço privado…"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"O espaço privado está protegido por um bloqueio"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"Quando o espaço privado estiver bloqueado, as informações de utilização das respetivas apps são ocultadas"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"Aceda ao espaço privado a partir da sua lista de apps"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"Não foi possível configurar o espaço privado"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"Tente novamente agora ou volte mais tarde"</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"Tentar novamente"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"Usar bloqueio de ecrã para desbloquear?"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"Pode desbloquear o espaço privado da mesma forma que desbloqueia o seu dispositivo ou escolher um bloqueio diferente"</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"Usar bloqueio de ecrã"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"Escolher novo bloqueio"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"Tudo pronto!"</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"Para aceder ao espaço privado, deslize rapidamente para cima a partir da parte inferior do ecrã principal e, em seguida, desloque o ecrã para baixo"</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"Concluir"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"Desloque o ecrã para baixo para aceder ao espaço privado"</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"Pode adicionar até <xliff:g id="COUNT">%d</xliff:g> impressões digitais"</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"Adicionou o número máximo de impressões digitais"</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"Não é possível adicionar mais impressões digitais"</string>
@@ -1119,8 +1105,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"Continuar a usar apps ao dobrar"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"Smooth Display"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"Aumenta automaticamente a taxa de atualização para <xliff:g id="ID_1">%1$d</xliff:g> Hz para algum conteúdo. Aumenta a utilização da bateria."</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"Forçar taxa de atualização de pico"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"A taxa de atualização mais elevada para uma capacidade de resposta tátil e uma qualidade de animação melhoradas. Aumenta a utilização da bateria."</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"Atenção ao ecrã"</string>
@@ -1356,6 +1341,7 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"Definições coletivas"</string>
<string name="apn_settings" msgid="4295467389400441299">"APNs"</string>
<string name="apn_edit" msgid="2003683641840248741">"Editar ponto de acesso"</string>
+ <string name="apn_add" msgid="9069613192201630934">"Adicione o ponto de acesso"</string>
<string name="apn_not_set" msgid="8246646433109750293">"Não definido"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"Não definido"</string>
<string name="apn_name" msgid="6677695784108157953">"Nome"</string>
@@ -1990,12 +1976,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"Use o botão de acessibilidade para abrir"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"Mantenha premidas as teclas de volume para abrir"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"Toque três vezes no ecrã para abrir"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"Toque três vezes no ecrã com dois dedos para abrir"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"Utilize gestos para abrir"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"Usar gesto de acessibilidade"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"Para usar esta funcionalidade, toque no botão Acessibilidade <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> na parte inferior do seu ecrã.\n\nPara alternar entre funcionalidades, toque sem soltar no botão Acessibilidade."</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"Para usar esta funcionalidade, toque no botão Acessibilidade no seu ecrã."</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"Para usar esta funcionalidade, prima sem soltar as teclas de volume."</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"Para iniciar e parar a ampliação, toque três vezes em qualquer parte do ecrã."</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"Para iniciar e parar a ampliação, toque três vezes em qualquer parte do ecrã com dois dedos."</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"Para usar esta funcionalidade, deslize rapidamente com dois dedos para cima a partir da parte inferior do ecrã.\n\nPara alternar entre funcionalidades, deslize rapidamente com dois dedos para cima sem soltar."</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"Para usar esta funcionalidade, deslize rapidamente com três dedos para cima a partir da parte inferior do ecrã.\n\nPara alternar entre funcionalidades, deslize rapidamente com três dedos para cima sem soltar."</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"Para utilizar uma funcionalidade de acessibilidade, deslize rapidamente com dois dedos para cima a partir da parte inferior do ecrã.\n\nPara alternar entre funcionalidades, deslize rapidamente com dois dedos para cima sem soltar."</string>
@@ -2017,12 +2005,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"Manter premidas as teclas de volume"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"mantenha premidas as teclas de volume"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"Prima sem soltar ambas as teclas de volume"</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"Toque três vezes no ecrã com dois dedos"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"toque três vezes no ecrã com dois dedos"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"Toque rapidamente {0,number,integer} vezes no ecrã com dois dedos"</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"Toque três vezes no ecrã"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"toque três vezes no ecrã"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"Toque rapidamente {0,number,integer} vezes no ecrã. Este atalho pode tornar o dispositivo mais lento"</string>
@@ -2320,6 +2305,8 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"Se limitar a atividade em segundo plano de uma aplicação, esta pode apresentar um comportamento anormal."</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"A app não está def. p/ otimizar a bateria, não a pode restringir.\n\nP/ restringir a app, ative a otimiz. da bateria."</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"Faça a gestão da utilização da bateria"</string>
+ <string name="manager_battery_usage_allow_background_usage_title" msgid="6294649996820358852">"Permita a utilização em segundo plano"</string>
+ <string name="manager_battery_usage_allow_background_usage_summary" msgid="8021153755201340819">"Ative para atualizações em tempo real, desative para poupar bateria"</string>
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"Sem restrições"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"Otimizada"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"Restrita"</string>
@@ -3830,6 +3817,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"Permitir acesso para gerir todos os ficheiros"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"Permita que esta app leia, modifique e elimine todos os ficheiros neste dispositivo ou em qualquer volume de armazenamento ligado. Se a autorização for concedida, a app poderá aceder aos ficheiros sem o seu conhecimento explícito."</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"Pode aceder a todos os ficheiros"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"Notificações em ecrã inteiro"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"Permitir notificações desta app em ecrã inteiro"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"Permita que esta app mostre notificações que ocupam o ecrã inteiro quando o dispositivo está bloqueado. As apps podem usá-las para destacar alarmes, chamadas recebidas ou outras notificações urgentes."</string>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index b7a5425..ea244d8 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -135,8 +135,11 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"Stylus"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"Compartilhamento de áudio"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"Compartilhar áudio"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
- <skip />
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"Ligações e alarmes"</string>
+ <string name="audio_sharing_streams_category_title" msgid="862958129650324581">"Conectar a um stream de LE Audio"</string>
+ <string name="audio_sharing_streams_pref_title" msgid="4636293245167657721">"Streams de áudio por perto"</string>
+ <string name="audio_sharing_streams_title" msgid="8269455097512153101">"Streams de áudio"</string>
+ <string name="audio_sharing_streams_qr_code_summary" msgid="4231875597377863735">"Conectar a um stream de áudio usando um código QR"</string>
<string name="date_and_time" msgid="1788358029823431692">"Data e hora"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"Proxy"</string>
<string name="proxy_clear_text" msgid="6529658759984031149">"Limpar"</string>
@@ -540,24 +543,15 @@
<string name="private_space_title" msgid="7078627930195569767">"Espaço particular"</string>
<string name="private_space_summary" msgid="8237652417163408001">"Ocultar apps em uma pasta particular"</string>
<string name="private_space_one_lock_title" msgid="7306547190751832568">"Desbloquear usando o bloqueio de tela"</string>
- <!-- no translation found for private_space_hide_title (8687034008994037610) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_title (972581369094289386) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_summary (1052569521186403642) -->
- <skip />
- <!-- no translation found for privatespace_access_header (982809349769470185) -->
- <skip />
- <!-- no translation found for privatespace_search_description (983837656432484282) -->
- <skip />
- <!-- no translation found for privatespace_tap_tile_description (4146608898639668340) -->
- <skip />
- <!-- no translation found for privatespace_unlock_description (4132755357482447360) -->
- <skip />
- <!-- no translation found for privatespace_hide_off_summary (7227778747159633671) -->
- <skip />
- <!-- no translation found for privatespace_hide_on_summary (6136704537527640183) -->
- <skip />
+ <string name="private_space_hide_title" msgid="8687034008994037610">"Ocultar quando bloqueado"</string>
+ <string name="privatespace_hide_page_title" msgid="972581369094289386">"Ocultar o Espaço particular quando bloqueado"</string>
+ <string name="privatespace_hide_page_summary" msgid="1052569521186403642">"Oculte o Espaço particular na sua lista de apps para que outras pessoas não saibam que ele está no dispositivo"</string>
+ <string name="privatespace_access_header" msgid="982809349769470185">"Acessar o Espaço particular quando oculto"</string>
+ <string name="privatespace_search_description" msgid="983837656432484282">"Pesquisar \"Espaço particular\" na barra de pesquisa"</string>
+ <string name="privatespace_tap_tile_description" msgid="4146608898639668340">"Tocar no bloco Espaço particular"</string>
+ <string name="privatespace_unlock_description" msgid="4132755357482447360">"Desbloquear seu Espaço particular"</string>
+ <string name="privatespace_hide_off_summary" msgid="7227778747159633671">"Desativado"</string>
+ <string name="privatespace_hide_on_summary" msgid="6136704537527640183">"Ativado"</string>
<string name="private_space_category_system" msgid="1286843321867285700">"Sistema"</string>
<string name="private_space_create_title" msgid="47273568884806726">"Criar Espaço particular"</string>
<string name="private_space_delete_title" msgid="3075645119800272800">"Excluir o Espaço particular"</string>
@@ -570,54 +564,30 @@
<string name="no_device_lock_summary" msgid="7653477413589207824">"Para usar o Espaço particular, defina um bloqueio de tela neste dispositivo."</string>
<string name="no_device_lock_action_label" msgid="2640487005629001288">"Definir bloqueio de tela"</string>
<string name="no_device_lock_cancel" msgid="4412602160321228863">"Cancelar"</string>
- <!-- no translation found for privatespace_cancel_label (362351004019511784) -->
- <skip />
- <!-- no translation found for privatespace_setup_button_label (3696372546231047258) -->
- <skip />
- <!-- no translation found for privatespace_setup_title (177623114624330394) -->
- <skip />
- <!-- no translation found for privatespace_hide_apps_summary (4016518749055602268) -->
- <skip />
- <!-- no translation found for privatespace_how_title (8794102046435526065) -->
- <skip />
- <!-- no translation found for privatespace_access_bottom_text (1075244097441349030) -->
- <skip />
- <!-- no translation found for privatespace_protected_lock_text (7320604832432017423) -->
- <skip />
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_cancel_label" msgid="362351004019511784">"Cancelar"</string>
+ <string name="privatespace_setup_button_label" msgid="3696372546231047258">"Configurar"</string>
+ <string name="privatespace_setup_title" msgid="177623114624330394">"Configurar o Espaço particular"</string>
+ <string name="privatespace_hide_apps_summary" msgid="4016518749055602268">"Oculte apps particulares em um espaço seguro que só você pode acessar"</string>
+ <string name="privatespace_how_title" msgid="8794102046435526065">"Como funciona"</string>
+ <string name="privatespace_access_bottom_text" msgid="1075244097441349030">"Você pode acessar o Espaço particular na parte de baixo da sua lista de apps"</string>
+ <string name="privatespace_protected_lock_text" msgid="7320604832432017423">"Os apps no Espaço particular ficam protegidos por um bloqueio"</string>
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"As notificações de apps no Espaço particular ficam ocultas quando ele está bloqueado"</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"Os apps do Espaço particular não aparecem na Gestão de permissões, no painel de privacidade e em outras configurações quando esse espaço está bloqueado"</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"Configurando Espaço particular…"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"O Espaço particular fica protegido por um bloqueio"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"As informações de uso de apps do Espaço particular ficam ocultas quando ele está bloqueado"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"Acessar o Espaço particular da sua lista de apps"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"Não foi possível configurar o Espaço particular"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"Tente de novo ou volte mais tarde"</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"Tentar de novo"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"Usar bloqueio de tela para desbloquear?"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"Você pode desbloquear o Espaço particular da mesma maneira que desbloqueia seu dispositivo ou escolher um bloqueio diferente"</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"Usar bloqueio de tela"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"Escolher novo bloqueio"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"Tudo pronto!"</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"Para acessar o Espaço particular, deslize de baixo para cima na tela inicial e role para baixo"</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"Concluído"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"Role a tela para baixo para acessar o Espaço particular"</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"É possível adicionar até <xliff:g id="COUNT">%d</xliff:g> digitais"</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"Você adicionou o número máximo de impressões digitais"</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"Não é possível adicionar mais impressões digitais"</string>
@@ -1135,8 +1105,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"Continuar usando apps com a tela dobrada"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"Smooth Display"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"Aumenta automaticamente a taxa de atualização para <xliff:g id="ID_1">%1$d</xliff:g> Hz para alguns conteúdos. Maior uso da bateria."</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"Forçar taxa de atualização máxima"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"Maior taxa de atualização para melhoria na resposta tátil e na qualidade das animações. Maior uso da bateria."</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"Reconhecimento de tela em uso"</string>
@@ -1372,6 +1341,7 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"Configurações compartilhadas"</string>
<string name="apn_settings" msgid="4295467389400441299">"APNs"</string>
<string name="apn_edit" msgid="2003683641840248741">"Editar ponto de acesso"</string>
+ <string name="apn_add" msgid="9069613192201630934">"Adicionar ponto de acesso"</string>
<string name="apn_not_set" msgid="8246646433109750293">"Sem definição"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"Não definido"</string>
<string name="apn_name" msgid="6677695784108157953">"Nome"</string>
@@ -2006,12 +1976,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"Usar o botão de acessibilidade para abrir"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"Mantenha as teclas de volume pressionadas para abrir"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"Toque três vezes na tela para abrir"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"Tocar três vezes na tela com dois dedos para abrir"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"Usar gesto para abrir"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"Usar o gesto de acessibilidade"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"Para usar esse recurso, toque no botão de acessibilidade <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> na parte inferior da tela.\n\nPara alternar entre os recursos, toque no botão de acessibilidade e o pressione."</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"Para usar esse recurso, toque no botão de acessibilidade na sua tela."</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"Para usar esse recurso, toque nas duas teclas de volume e as mantenha pressionadas."</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"Para iniciar ou interromper a ampliação, toque três vezes em qualquer lugar da tela."</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"Para iniciar ou interromper a ampliação, toque três vezes em qualquer lugar da tela com dois dedos."</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"Para usar esse recurso, deslize de baixo para cima na tela com dois dedos.\n\nPara alternar entre os recursos, deslize de baixo para cima com dois dedos, sem soltar."</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"Para usar esse recurso, deslize de baixo para cima na tela com três dedos.\n\nPara alternar entre os recursos, deslize de baixo para cima com três dedos, sem soltar."</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"Para usar um recurso de acessibilidade, deslize de baixo para cima na tela com dois dedos.\n\nPara alternar entre recursos, deslize de baixo para cima com dois dedos, sem soltar."</string>
@@ -2033,12 +2005,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"Manter as teclas de volume pressionadas"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"manter as teclas de volume pressionadas"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"Toque nas duas teclas de volume e as mantenha pressionadas"</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"Tocar três vezes na tela com dois dedos"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"tocar três vezes na tela com dois dedos"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"Toque na tela {0,number,integer} vezes rapidamente com dois dedos"</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"Tocar na tela três vezes"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"tocar na tela três vezes"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"Toque na tela {0,number,integer} vezes rapidamente. Esse atalho pode deixar o dispositivo mais lento"</string>
@@ -2336,6 +2305,8 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"Se você limitar as atividades em segundo plano de um app, ele poderá apresentar mau funcionamento"</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"Como o app não está configurado para otimizar bateria, não é possível restringi-lo.\n\nPara restringir, ative a otimização."</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"Gerenciar uso da bateria"</string>
+ <string name="manager_battery_usage_allow_background_usage_title" msgid="6294649996820358852">"Permitir o uso em segundo plano"</string>
+ <string name="manager_battery_usage_allow_background_usage_summary" msgid="8021153755201340819">"Ative para receber atualizações em tempo real ou desative para economizar bateria"</string>
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"Sem restrições"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"Otimizado"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"Restrito"</string>
@@ -3846,6 +3817,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"Acesso para gerenciar todos os arquivos"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"Permitir que o app leia, modifique e exclua todos os arquivos deste dispositivo ou de qualquer volume de armazenamento conectado. Se a permissão for concedida, o app poderá acessar arquivos sem nenhum aviso prévio."</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"Pode acessar todos os arquivos"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"Notificações em tela cheia"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"Permitir que esse app mostre notificações em tela cheia"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"Permita que o app mostre notificações que ocupam a tela inteira quando o dispositivo estiver bloqueado. Os apps poderão usar essa permissão para destacar alarmes, ligações recebidas ou outras notificações urgentes."</string>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index ac3610b..e1430b4 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -135,7 +135,14 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"Creion"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"Trimiterea audio"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"Trimite audio"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"Apeluri și alarme"</string>
+ <!-- no translation found for audio_sharing_streams_category_title (862958129650324581) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_pref_title (4636293245167657721) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_title (8269455097512153101) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_qr_code_summary (4231875597377863735) -->
<skip />
<string name="date_and_time" msgid="1788358029823431692">"Data și ora"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"Proxy"</string>
@@ -540,24 +547,15 @@
<string name="private_space_title" msgid="7078627930195569767">"Spațiu privat"</string>
<string name="private_space_summary" msgid="8237652417163408001">"Ascunde aplicații într-un dosar privat"</string>
<string name="private_space_one_lock_title" msgid="7306547190751832568">"Deblochează folosind blocarea ecranului"</string>
- <!-- no translation found for private_space_hide_title (8687034008994037610) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_title (972581369094289386) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_summary (1052569521186403642) -->
- <skip />
- <!-- no translation found for privatespace_access_header (982809349769470185) -->
- <skip />
- <!-- no translation found for privatespace_search_description (983837656432484282) -->
- <skip />
- <!-- no translation found for privatespace_tap_tile_description (4146608898639668340) -->
- <skip />
- <!-- no translation found for privatespace_unlock_description (4132755357482447360) -->
- <skip />
- <!-- no translation found for privatespace_hide_off_summary (7227778747159633671) -->
- <skip />
- <!-- no translation found for privatespace_hide_on_summary (6136704537527640183) -->
- <skip />
+ <string name="private_space_hide_title" msgid="8687034008994037610">"Ascunde când este blocat"</string>
+ <string name="privatespace_hide_page_title" msgid="972581369094289386">"Ascunde Spațiul privat când este blocat"</string>
+ <string name="privatespace_hide_page_summary" msgid="1052569521186403642">"Pentru ca alții să nu știe că ai un Spațiu privat pe dispozitiv, ascunde-l din lista de aplicații"</string>
+ <string name="privatespace_access_header" msgid="982809349769470185">"Accesează Spațiul privat când este ascuns"</string>
+ <string name="privatespace_search_description" msgid="983837656432484282">"Caută „Spațiu privat” în bara de căutare"</string>
+ <string name="privatespace_tap_tile_description" msgid="4146608898639668340">"Atinge cardul Spațiu privat"</string>
+ <string name="privatespace_unlock_description" msgid="4132755357482447360">"Deblochează Spațiul privat"</string>
+ <string name="privatespace_hide_off_summary" msgid="7227778747159633671">"Dezactivat"</string>
+ <string name="privatespace_hide_on_summary" msgid="6136704537527640183">"Activat"</string>
<string name="private_space_category_system" msgid="1286843321867285700">"Sistem"</string>
<string name="private_space_create_title" msgid="47273568884806726">"Creează un Spațiu privat"</string>
<string name="private_space_delete_title" msgid="3075645119800272800">"Șterge Spațiul privat"</string>
@@ -570,54 +568,30 @@
<string name="no_device_lock_summary" msgid="7653477413589207824">"Ca să folosești Spațiul privat, setează blocarea ecranului."</string>
<string name="no_device_lock_action_label" msgid="2640487005629001288">"Setează blocarea ecranului"</string>
<string name="no_device_lock_cancel" msgid="4412602160321228863">"Anulează"</string>
- <!-- no translation found for privatespace_cancel_label (362351004019511784) -->
- <skip />
- <!-- no translation found for privatespace_setup_button_label (3696372546231047258) -->
- <skip />
- <!-- no translation found for privatespace_setup_title (177623114624330394) -->
- <skip />
- <!-- no translation found for privatespace_hide_apps_summary (4016518749055602268) -->
- <skip />
- <!-- no translation found for privatespace_how_title (8794102046435526065) -->
- <skip />
- <!-- no translation found for privatespace_access_bottom_text (1075244097441349030) -->
- <skip />
- <!-- no translation found for privatespace_protected_lock_text (7320604832432017423) -->
- <skip />
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_cancel_label" msgid="362351004019511784">"Anulează"</string>
+ <string name="privatespace_setup_button_label" msgid="3696372546231047258">"Configurează"</string>
+ <string name="privatespace_setup_title" msgid="177623114624330394">"Configurează Spațiul privat"</string>
+ <string name="privatespace_hide_apps_summary" msgid="4016518749055602268">"Ascunde aplicațiile private într-un loc sigur la care numai tu ai acces"</string>
+ <string name="privatespace_how_title" msgid="8794102046435526065">"Cum funcționează"</string>
+ <string name="privatespace_access_bottom_text" msgid="1075244097441349030">"Poți accesa Spațiul privat din partea de jos a listei de aplicații"</string>
+ <string name="privatespace_protected_lock_text" msgid="7320604832432017423">"Aplicațiile din Spațiul privat sunt protejate de o blocare"</string>
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"Notificările de la aplicațiile din Spațiul privat sunt ascunse atunci când acesta este blocat"</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"Aplicațiile din Spațiul privat nu vor apărea în managerul de permisiuni, în tabloul de bord de confidențialitate și în alte setări atunci când Spațiul privat este blocat"</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"Se configurează Spațiul privat…"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"Spațiul privat este protejat de o blocare"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"Informațiile despre utilizarea aplicațiilor din Spațiul privat sunt ascunse atunci când este blocat"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"Accesează Spațiul privat din lista de aplicații"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"Nu s-a putut configura Spațiul privat"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"Încearcă din nou acum sau revino mai târziu"</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"Încearcă din nou"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"Folosești blocarea ecranului pentru deblocare?"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"Poți să deblochezi Spațiul privat la fel cum deblochezi dispozitivul sau să alegi altă blocare"</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"Folosește blocarea ecranului"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"Alege o nouă blocare"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"Gata!"</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"Pentru a accesa Spațiul privat, glisează în sus din partea de jos a ecranului de pornire, apoi derulează în jos"</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"Gata"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"Derulează în jos pentru a accesa Spațiul privat"</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"Poți să adaugi până la <xliff:g id="COUNT">%d</xliff:g> amprente"</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"Ai adăugat numărul maxim de amprente digitale"</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"Nu se mai pot adăuga amprente digitale"</string>
@@ -1135,8 +1109,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"Continuă să folosești aplicațiile după pliere"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"Smooth Display"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"Crește automat rata de actualizare până la <xliff:g id="ID_1">%1$d</xliff:g> Hz pentru anumite tipuri de conținut. Utilizarea bateriei crește."</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"Forțează rata maximă de actualizare"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"Cea mai ridicată rată de actualizare, pentru receptivitate la atingere îmbunătățită și animații de calitate. Mărește utilizarea bateriei."</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"Atenție la ecran"</string>
@@ -1372,6 +1345,8 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"Setări comune"</string>
<string name="apn_settings" msgid="4295467389400441299">"Nume APN"</string>
<string name="apn_edit" msgid="2003683641840248741">"Modifică punctul de acces"</string>
+ <!-- no translation found for apn_add (9069613192201630934) -->
+ <skip />
<string name="apn_not_set" msgid="8246646433109750293">"Nesetat(ă)"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"Nesetată"</string>
<string name="apn_name" msgid="6677695784108157953">"Nume"</string>
@@ -2006,12 +1981,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"Folosește butonul de accesibilitate pentru a deschide"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"Apasă lung butoanele de volum pentru a deschide"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"Atinge ecranul de trei ori ca să deschizi"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"Atinge de trei ori ecranul cu două degete pentru a deschide"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"Folosește un gest pentru a deschide"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"Folosește gestul de accesibilitate"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"Ca să folosești această funcție, atinge butonul de accesibilitate <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> din partea de jos a ecranului.\n\nCa să comuți între funcții, atinge lung butonul de accesibilitate."</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"Ca să folosești această funcție, atinge butonul de accesibilitate de pe ecran."</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"Ca să folosești această funcție, apasă lung ambele butoane de volum."</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"Pentru a porni și a opri mărirea, atinge de trei ori oriunde pe ecran."</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"Pentru a porni și a opri mărirea, atinge de trei ori oriunde pe ecran cu două degete."</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"Ca să folosești această funcție, glisează în sus cu două degete din partea de jos a ecranului.\n\nCa să comuți între funcții, glisează în sus cu două degete și ține apăsat."</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"Ca să folosești această funcție, glisează în sus cu trei degete din partea de jos a ecranului.\n\nCa să comuți între funcții, glisează în sus cu trei degete și ține apăsat."</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"Ca să folosești o funcție de accesibilitate, glisează în sus cu două degete din partea de jos a ecranului.\n\nCa să comuți între funcții, glisează în sus cu două degete și ține apăsat."</string>
@@ -2033,12 +2010,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"Apasă lung butoanele de volum"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"apasă lung butoanele de volum"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"Apasă lung ambele butoane de volum"</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"Atinge de trei ori ecranul cu două degete"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"atinge de trei ori ecranul cu două degete"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"Atinge rapid ecranul de {0,number,integer} ori cu două degete"</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"Atinge ecranul de trei ori"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"atinge ecranul de trei ori"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"Atinge rapid ecranul de {0,number,integer} ori. Această comandă rapidă poate încetini funcționarea dispozitivului"</string>
@@ -2336,6 +2310,10 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"Dacă limitezi activitatea de fundal pentru o aplicație, aceasta se poate comporta necorespunzător"</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"Aplicația nu optimizează bateria, deci nu o poți restricționa.\n\nPentru a o restricționa, activează optimizarea bateriei."</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"Gestionează utilizarea bateriei"</string>
+ <!-- no translation found for manager_battery_usage_allow_background_usage_title (6294649996820358852) -->
+ <skip />
+ <!-- no translation found for manager_battery_usage_allow_background_usage_summary (8021153755201340819) -->
+ <skip />
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"Fără restricții"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"Optimizată"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"Limitată"</string>
@@ -3846,6 +3824,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"Permite gestionarea fișierelor"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"Permite aplicației să citească, să modifice și să șteargă toate fișierele de pe dispozitiv sau din spațiile de stocare conectate. Dacă îi permiți, aplicația poate accesa fișierele fără consimțământul tău explicit."</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"Poate accesa toate fișierele"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"Notificări pe ecran complet"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"Permite notificările pe ecran complet de la această aplicație"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"Permite aplicației să afișeze notificări care ocupă întregul ecran când dispozitivul e blocat. Aplicațiile le pot folosi pentru a evidenția alarme, apeluri primite sau alte informații urgente."</string>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index 546e7a1..59ea4da 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -135,7 +135,14 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"Стилус"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"Передача аудио"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"Передавать аудио"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"Звонки и будильники"</string>
+ <!-- no translation found for audio_sharing_streams_category_title (862958129650324581) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_pref_title (4636293245167657721) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_title (8269455097512153101) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_qr_code_summary (4231875597377863735) -->
<skip />
<string name="date_and_time" msgid="1788358029823431692">"Дата и время"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"Прокси-сервер"</string>
@@ -540,24 +547,15 @@
<string name="private_space_title" msgid="7078627930195569767">"Личное пространство"</string>
<string name="private_space_summary" msgid="8237652417163408001">"Папка, в которую можно прятать приложения"</string>
<string name="private_space_one_lock_title" msgid="7306547190751832568">"Открыть, используя способ разблокировки экрана"</string>
- <!-- no translation found for private_space_hide_title (8687034008994037610) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_title (972581369094289386) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_summary (1052569521186403642) -->
- <skip />
- <!-- no translation found for privatespace_access_header (982809349769470185) -->
- <skip />
- <!-- no translation found for privatespace_search_description (983837656432484282) -->
- <skip />
- <!-- no translation found for privatespace_tap_tile_description (4146608898639668340) -->
- <skip />
- <!-- no translation found for privatespace_unlock_description (4132755357482447360) -->
- <skip />
- <!-- no translation found for privatespace_hide_off_summary (7227778747159633671) -->
- <skip />
- <!-- no translation found for privatespace_hide_on_summary (6136704537527640183) -->
- <skip />
+ <string name="private_space_hide_title" msgid="8687034008994037610">"Скрывать, когда доступ заблокирован"</string>
+ <string name="privatespace_hide_page_title" msgid="972581369094289386">"Скрыть личное пространство, если доступ к нему заблокирован"</string>
+ <string name="privatespace_hide_page_summary" msgid="1052569521186403642">"Вы можете скрыть личное пространство из списка приложений"</string>
+ <string name="privatespace_access_header" msgid="982809349769470185">"Доступ к личному пространству, когда оно скрыто"</string>
+ <string name="privatespace_search_description" msgid="983837656432484282">"Введите запрос \"Личное пространство\" в строку поиска"</string>
+ <string name="privatespace_tap_tile_description" msgid="4146608898639668340">"Выберите параметр \"Личное пространство\""</string>
+ <string name="privatespace_unlock_description" msgid="4132755357482447360">"Разблокируйте личное пространство"</string>
+ <string name="privatespace_hide_off_summary" msgid="7227778747159633671">"Отключено"</string>
+ <string name="privatespace_hide_on_summary" msgid="6136704537527640183">"Включено"</string>
<string name="private_space_category_system" msgid="1286843321867285700">"Система"</string>
<string name="private_space_create_title" msgid="47273568884806726">"Создать личное пространство"</string>
<string name="private_space_delete_title" msgid="3075645119800272800">"Удалить личное пространство"</string>
@@ -570,54 +568,30 @@
<string name="no_device_lock_summary" msgid="7653477413589207824">"Она нужна, чтобы использовать личное пространство."</string>
<string name="no_device_lock_action_label" msgid="2640487005629001288">"Настроить"</string>
<string name="no_device_lock_cancel" msgid="4412602160321228863">"Отмена"</string>
- <!-- no translation found for privatespace_cancel_label (362351004019511784) -->
- <skip />
- <!-- no translation found for privatespace_setup_button_label (3696372546231047258) -->
- <skip />
- <!-- no translation found for privatespace_setup_title (177623114624330394) -->
- <skip />
- <!-- no translation found for privatespace_hide_apps_summary (4016518749055602268) -->
- <skip />
- <!-- no translation found for privatespace_how_title (8794102046435526065) -->
- <skip />
- <!-- no translation found for privatespace_access_bottom_text (1075244097441349030) -->
- <skip />
- <!-- no translation found for privatespace_protected_lock_text (7320604832432017423) -->
- <skip />
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_cancel_label" msgid="362351004019511784">"Отмена"</string>
+ <string name="privatespace_setup_button_label" msgid="3696372546231047258">"Настройка"</string>
+ <string name="privatespace_setup_title" msgid="177623114624330394">"Настройки личного пространства"</string>
+ <string name="privatespace_hide_apps_summary" msgid="4016518749055602268">"Если вы хотите, чтобы некоторые приложения были видны только вам, добавьте их в личное пространство"</string>
+ <string name="privatespace_how_title" msgid="8794102046435526065">"Как это работает"</string>
+ <string name="privatespace_access_bottom_text" msgid="1075244097441349030">"Вы можете перейти в личное пространство в нижней части списка приложений"</string>
+ <string name="privatespace_protected_lock_text" msgid="7320604832432017423">"Доступ к приложениям в личном пространстве можно заблокировать"</string>
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"Когда доступ к личному пространству заблокирован, уведомления из добавленных в него приложений скрываются."</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"Когда доступ к личному пространству заблокирован, приложения в нем не видны в меню и панели управления разрешениями, а также в других настройках."</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"Настройка личного пространства…"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"Доступ к личному пространству можно заблокировать"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"Когда личное пространство заблокировано, информация об использовании приложений в нем скрыта"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"Открывайте личное пространство из списка приложений"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"Не удалось создать личное пространство"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"Повторите попытку или вернитесь позже."</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"Повторить"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"Использовать разблокировку экрана?"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"Вы можете использовать тот же способ разблокировки, который используется для экрана, или выбрать другой."</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"Использовать блокировку экрана"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"Выбрать другой способ"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"Готово!"</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"Чтобы перейти в личное пространство, проведите по главному экрану снизу вверх и прокрутите страницу вниз."</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"Готово"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"Чтобы перейти в личное пространство, прокрутите экран вниз."</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"Максимальное количество отпечатков пальца, которые можно добавить: <xliff:g id="COUNT">%d</xliff:g>"</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"Вы уже добавили максимальное количество отпечатков"</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"Больше нельзя добавить отпечатки пальцев"</string>
@@ -1135,8 +1109,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"Продолжать использовать приложения при складывании"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"Плавный экран"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"Автоматически увеличивать частоту обновления экрана до <xliff:g id="ID_1">%1$d</xliff:g> Гц для некоторых типов контента. При этом батарея будет разряжаться быстрее."</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"Использовать пиковую частоту обновления"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"Высокая частота обновления экрана улучшает ответ на касания и делает анимацию более плавной. При этом батарея разряжается быстрее."</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"Адаптивный спящий режим"</string>
@@ -1372,6 +1345,8 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"Совместные настройки"</string>
<string name="apn_settings" msgid="4295467389400441299">"Точки доступа"</string>
<string name="apn_edit" msgid="2003683641840248741">"Изменить точку доступа"</string>
+ <!-- no translation found for apn_add (9069613192201630934) -->
+ <skip />
<string name="apn_not_set" msgid="8246646433109750293">"Не задано"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"Не указано"</string>
<string name="apn_name" msgid="6677695784108157953">"Название"</string>
@@ -2006,12 +1981,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"Используйте кнопку специальных возможностей"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"Для запуска удерживайте кнопки громкости"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"Для запуска нажмите трижды на экран"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"Чтобы открыть, трижды нажмите на экран двумя пальцами"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"Используйте жесты"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"Используйте жест специальных возможностей"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"Чтобы включить эту функцию, нажмите кнопку специальных возможностей <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> в нижней части экрана.\n\nДля переключения между функциями нажмите и удерживайте эту кнопку."</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"Чтобы включить эту функцию, нажмите кнопку специальных возможностей."</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"Чтобы включить эту функцию, нажмите и удерживайте обе кнопки регулировки громкости."</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"Чтобы включить или отключить увеличение, трижды нажмите на любую область экрана."</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"Чтобы включить или отключить увеличение, трижды нажмите на любую область экрана двумя пальцами."</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"Чтобы включить эту функцию, проведите вверх от нижнего края экрана двумя пальцами.\n\nДля переключения между функциями проведите по экрану снизу вверх двумя пальцами и задержите их."</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"Чтобы включить эту функцию, проведите вверх от нижнего края экрана тремя пальцами.\n\nДля переключения между функциями проведите по экрану снизу вверх тремя пальцами и задержите их."</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"Чтобы воспользоваться специальной возможностью, проведите вверх от нижнего края экрана двумя пальцами.\n\nДля переключения между функциями проведите по экрану снизу вверх двумя пальцами и задержите их."</string>
@@ -2033,12 +2010,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"Удерживать кнопки регулировки громкости"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"удерживание кнопок регулировки громкости"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"Нажмите и удерживайте обе кнопки регулировки громкости"</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"Тройное нажатие двумя пальцами"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"тройное нажатие двумя пальцами"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"Быстро нажмите на экран двумя пальцами {0,number,integer} раза"</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"Тройное нажатие на экран"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"тройное нажатие на экран"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"Быстро коснитесь экрана {0,number,integer} раза (этот жест может замедлить работу устройства)."</string>
@@ -2336,6 +2310,10 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"Это действие может привести к неправильной работе приложения."</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"Оптимизация расхода заряда батареи для этого приложения не настроена.\n\nВключите ее, чтобы установить ограничения."</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"Управление расходом заряда"</string>
+ <!-- no translation found for manager_battery_usage_allow_background_usage_title (6294649996820358852) -->
+ <skip />
+ <!-- no translation found for manager_battery_usage_allow_background_usage_summary (8021153755201340819) -->
+ <skip />
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"Без ограничений"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"С оптимизацией"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"Ограничено"</string>
@@ -3846,6 +3824,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"Разрешить доступ к управлению всеми файлами"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"Приложение сможет читать, изменять и удалять все файлы на этом устройстве и любых подключенных носителях. Доступ к файлам будет осуществляться без дополнительного уведомления."</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"Приложения, имеющие доступ ко всем файлам"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"Уведомления в полноэкранном режиме"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"Разрешить уведомления в полноэкранном режиме от этого приложения"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"Разрешить этому приложению показывать уведомления в полноэкранном режиме, когда устройство заблокировано. Так приложение сможет сообщать о будильниках, входящих вызовах и других срочных уведомлениях."</string>
diff --git a/res/values-si/strings.xml b/res/values-si/strings.xml
index 8cbc852..65f356f 100644
--- a/res/values-si/strings.xml
+++ b/res/values-si/strings.xml
@@ -135,7 +135,14 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"පන්හිඳ"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"ශ්රව්ය බෙදා ගැනීම"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"ශ්රව්ය බෙදා ගන්න"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"ඇමතුම් සහ එලාම්"</string>
+ <!-- no translation found for audio_sharing_streams_category_title (862958129650324581) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_pref_title (4636293245167657721) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_title (8269455097512153101) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_qr_code_summary (4231875597377863735) -->
<skip />
<string name="date_and_time" msgid="1788358029823431692">"දිනය සහ වේලාව"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"නියුතු"</string>
@@ -540,24 +547,15 @@
<string name="private_space_title" msgid="7078627930195569767">"පෞද්ගලික ඉඩ"</string>
<string name="private_space_summary" msgid="8237652417163408001">"පෞද්ගලික ෆෝල්ඩරයක යෙදුම් සඟවන්න"</string>
<string name="private_space_one_lock_title" msgid="7306547190751832568">"තිර අගුල භාවිතයෙන් අගුළු හරින්න"</string>
- <!-- no translation found for private_space_hide_title (8687034008994037610) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_title (972581369094289386) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_summary (1052569521186403642) -->
- <skip />
- <!-- no translation found for privatespace_access_header (982809349769470185) -->
- <skip />
- <!-- no translation found for privatespace_search_description (983837656432484282) -->
- <skip />
- <!-- no translation found for privatespace_tap_tile_description (4146608898639668340) -->
- <skip />
- <!-- no translation found for privatespace_unlock_description (4132755357482447360) -->
- <skip />
- <!-- no translation found for privatespace_hide_off_summary (7227778747159633671) -->
- <skip />
- <!-- no translation found for privatespace_hide_on_summary (6136704537527640183) -->
- <skip />
+ <string name="private_space_hide_title" msgid="8687034008994037610">"අගුළු දැමූ විට සඟවන්න"</string>
+ <string name="privatespace_hide_page_title" msgid="972581369094289386">"අගුළු දමා ඇති විට පෞද්ගලික අවකාශය සඟවන්න"</string>
+ <string name="privatespace_hide_page_summary" msgid="1052569521186403642">"ඔබේ උපාංගයෙහි පෞද්ගලික අවකාශය ඇති බව වෙනත් පුද්ගලයින් දැන ගැනීම නැවැත්වීමට, ඔබට එය ඔබේ යෙදුම් ලැයිස්තුවෙන් සැඟවිය හැක"</string>
+ <string name="privatespace_access_header" msgid="982809349769470185">"සැඟවුණු විට පෞද්ගලික අවකාශයට ප්රවේශ වන්න"</string>
+ <string name="privatespace_search_description" msgid="983837656432484282">"සෙවීම් තීරුවේ \'පෞද්ගලික අවකාශය\' සඳහා සොයන්න"</string>
+ <string name="privatespace_tap_tile_description" msgid="4146608898639668340">"පෞද්ගලික අවකාශයේ ටයිලය තට්ටු කරන්න"</string>
+ <string name="privatespace_unlock_description" msgid="4132755357482447360">"ඔබේ පෞද්ගලික අවකාශය අගුළු හරින්න"</string>
+ <string name="privatespace_hide_off_summary" msgid="7227778747159633671">"ක්රියාවිරහිතයි"</string>
+ <string name="privatespace_hide_on_summary" msgid="6136704537527640183">"ක්රියාත්මකයි"</string>
<string name="private_space_category_system" msgid="1286843321867285700">"පද්ධතිය"</string>
<string name="private_space_create_title" msgid="47273568884806726">"පෞද්ගලික ඉඩ තනන්න"</string>
<string name="private_space_delete_title" msgid="3075645119800272800">"පෞද්ගලික ඉඩ මකන්න"</string>
@@ -570,54 +568,30 @@
<string name="no_device_lock_summary" msgid="7653477413589207824">"පෞද්ගලික අවකාශය භාවිතා කිරීමට, මෙම උපාංගයේ තිර අගුලක් සකසන්න."</string>
<string name="no_device_lock_action_label" msgid="2640487005629001288">"තිර අගුල සකසන්න"</string>
<string name="no_device_lock_cancel" msgid="4412602160321228863">"අවලංගු කරන්න"</string>
- <!-- no translation found for privatespace_cancel_label (362351004019511784) -->
- <skip />
- <!-- no translation found for privatespace_setup_button_label (3696372546231047258) -->
- <skip />
- <!-- no translation found for privatespace_setup_title (177623114624330394) -->
- <skip />
- <!-- no translation found for privatespace_hide_apps_summary (4016518749055602268) -->
- <skip />
- <!-- no translation found for privatespace_how_title (8794102046435526065) -->
- <skip />
- <!-- no translation found for privatespace_access_bottom_text (1075244097441349030) -->
- <skip />
- <!-- no translation found for privatespace_protected_lock_text (7320604832432017423) -->
- <skip />
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_cancel_label" msgid="362351004019511784">"අවලංගු කරන්න"</string>
+ <string name="privatespace_setup_button_label" msgid="3696372546231047258">"පිහිටුවන්න"</string>
+ <string name="privatespace_setup_title" msgid="177623114624330394">"පෞද්ගලික අවකාශය පිහිටුවන්න"</string>
+ <string name="privatespace_hide_apps_summary" msgid="4016518749055602268">"ඔබට පමණක් ප්රවේශ විය හැකි සුරක්ෂිත ඉඩක පෞද්ගලික යෙදුම් සඟවන්න"</string>
+ <string name="privatespace_how_title" msgid="8794102046435526065">"එය ක්රියා කරන ආකාරය"</string>
+ <string name="privatespace_access_bottom_text" msgid="1075244097441349030">"ඔබට ඔබේ යෙදුම් ලැයිස්තුවේ පහළින් පෞද්ගලික අවකාශය වෙත ප්රවේශ විය හැක"</string>
+ <string name="privatespace_protected_lock_text" msgid="7320604832432017423">"පෞද්ගලික අවකාශයේ යෙදුම් අගුලකින් ආරක්ෂා කර ඇත"</string>
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"පෞද්ගලික අවකාශය තුළ යෙදුම්වලින් ලැබෙන දැනුම්දීම් එය අගුළු දමා ඇති විට සඟවනු ලැබේ"</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"පෞද්ගලික අවකාශය අගුළු දමා ඇති විට අවසර කළමනාකරු, පෞද්ගලිකත්ව උපකරණ පුවරුව, සහ වෙනත් සැකසීම් තුළ පෞද්ගලික අවකාශ යෙදුම් දිස් නොවනු ඇත"</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"පෞද්ගලික අවකාශය පිහිටුවමින්…"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"පෞද්ගලික අවකාශය අගුලකින් ආරක්ෂා කර ඇත"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"පෞද්ගලික අවකාශ යෙදුම් සඳහා භාවිත තොරතුරු එය අගුළු දමා ඇති විට සඟවා ඇත"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"ඔබේ යෙදුම් ලැයිස්තුවෙන් පෞද්ගලික අවකාශය වෙත ප්රවේශ වන්න"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"පෞද්ගලික අවකාශය පිහිටුවීමට නොහැකි විය"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"දැන් නැවත උත්සාහ කරන්න, නැතහොත් පසුව ආපසු එන්න"</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"නැවත උත්සාහ කරන්න"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"අගුළු හැරීමට තිර අගුල භාවිත කරන්න ද?"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"ඔබට ඔබේ උපාංගය අගුළු හරින ආකාරයටම පෞද්ගලික අවකාශය අගුළු ඇරීමට හෝ වෙනත් අගුලක් තෝරා ගැනීමට හැක"</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"තිර අගුල භාවිතා කරන්න"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"නව අගුලක් තෝරා ගන්න"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"සියල්ල සූදානම්!"</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"පෞද්ගලික අවකාශය වෙත ප්රවේශ වීමට, ඔබේ මුල් තිරයේ පහළ සිට ඉහළට ස්වයිප් කර, පසුව පහළට අනුචලනය කරන්න"</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"නිමයි"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"පෞද්ගලික අවකාශයට ප්රවේශ වීමට පහළට අනුචලනය කරන්න"</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"ඔබට ඇඟිලි සලකුණු <xliff:g id="COUNT">%d</xliff:g> දක්වා එකතු කළ හැකිය"</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"ඔබ ඇඟිලි සලකුණු උපරිම සංඛ්යාව එක් කර ඇත"</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"තවත් ඇඟිලි සලකුණු එක් කළ නොහැකිය"</string>
@@ -1135,8 +1109,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"නැවීම මත යෙදුම් භාවිතය දිගටම කරගෙන යන්න"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"සුමට සංදර්ශකය"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"සමහර අන්තර්ගතය සඳහා නැවුම් කිරීමේ අනුපාතය <xliff:g id="ID_1">%1$d</xliff:g> දක්වා ස්වයංක්රීයව ඉහළ නංවයි. බැටරි භාවිතය වැඩි කරයි."</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"කාර්යබහුල යළි නැවුම් කිරීමේ අනුපාතය බල කරන්න"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"වැඩි දියුණු කළ ස්පර්ශ ප්රතිචාර සඳහා ඉහළම යළි නැවුම් කිරීමේ අනුපාතය සහ සජීවිකරණ ගුණාත්මකභාවය. බැටරි භාවිතය වැඩි කරයි."</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"තිර අවධානය"</string>
@@ -1372,6 +1345,8 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"වාර්ගික සැකසීම්"</string>
<string name="apn_settings" msgid="4295467389400441299">"APN"</string>
<string name="apn_edit" msgid="2003683641840248741">"ප්රවේශ ස්ථානය සංස්කරණය"</string>
+ <!-- no translation found for apn_add (9069613192201630934) -->
+ <skip />
<string name="apn_not_set" msgid="8246646433109750293">"පිහිටුවා නැත"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"සකසා නැත"</string>
<string name="apn_name" msgid="6677695784108157953">"නම"</string>
@@ -2006,12 +1981,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"විවෘත කිරීමට ප්රවේශ්යතා බොත්තම භාවිත කරන්න"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"විවෘත කිරීමට හඬ පරිමා යතුරු අල්ලාගෙන සිටින්න"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"විවෘත කිරීමට තිරය තෙවරක් තට්ටු කරන්න"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"විවෘත කිරීමට ඇඟිලි දෙකකින් තිරය තට්ටු කරන්න"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"විවෘත කිරීමට ඉංගිතය භාවිත කරන්න"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"ප්රවේශ්යතා ඉංගිතය භාවිත කරන්න"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"මෙම විශේෂාංගය භාවිත කිරීමට, ඔබේ තිරයේ පහළ ඇති <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> ප්රවේශ්යතා බොත්තම තට්ටු කරන්න.\n\nවිශේෂාංග අතර මාරු වීමට, ප්රවේශ්යතා බොත්තම ස්පර්ශ කර අල්ලාගෙන සිටින්න."</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"මෙම විශේෂාංගය භාවිත කිරීමට, ඔබගේ තිරයේ ඇති ප්රවේශ්යතා බොත්තම තට්ටු කරන්න."</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"මෙම විශේෂාංගය භාවිත කිරීමට, හඬ පරිමා යතුරු දෙකම ඔබා අල්ලාගෙන සිටින්න"</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"විශාලනය ආරම්භ කිරීමට සහ නතර කිරීමට, ඔබේ තිරයේ ඕනෑම තැනක තෙවරක් තට්ටු කරන්න."</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"විශාලනය ආරම්භ කිරීමට සහ නැවැත්වීමට, ඇඟිලි දෙකකින් ඔබේ තිරයේ ඕනෑම තැනක තෙවරක් තට්ටු කරන්න."</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"මෙම විශේෂාංගය භාවිත කිරීමට, ඇඟිලි 2කින් තිරයේ පහළ සිට ඉහළට ස්වයිප් කරන්න.\n\nවිශේෂාංග අතර මාරු වීමට, ඇඟිලි 2කින් ඉහළට ස්වයිප් කර අල්ලාගෙන සිටින්න."</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"මෙම විශේෂාංගය භාවිත කිරීමට, ඇඟිලි 3කින් තිරයේ පහළ සිට ඉහළට ස්වයිප් කරන්න.\n\nවිශේෂාංග අතර මාරු වීමට, ඇඟිලි 3කින් ඉහළට ස්වයිප් කර අල්ලාගෙන සිටින්න."</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"ප්රවේශ්යතා විශේෂාංගයක් භාවිත කිරීමට, ඇඟිලි 2කින් තිරයේ පහළ සිට ඉහළට ස්වයිප් කරන්න.\n\nවිශේෂාංග අතර මාරු වීමට, ඇඟිලි 2කින් ඉහළට ස්වයිප් කර අල්ලාගෙන සිටින්න."</string>
@@ -2033,12 +2010,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"හඬ පරිමා යතුරු අල්ලාගන්න"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"හඬ පරිමා යතුරු අල්ලාගන්න"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"හඬ පරිමා යතුරු දෙකම ඔබා අල්ලාගෙන සිටින්න"</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"ඇඟිලි දෙකේ ත්රිත්ව තට්ටු තිරය"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"ඇඟිලි දෙකේ ත්රිත්ව තට්ටු තිරය"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"ඇඟිලි දෙකකින් තිරය {0,number,integer} වාරයක් ඉක්මනින් තට්ටු කරන්න"</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"තිරය තෙවරක් තට්ටු කරන්න"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"තිරය තෙවරක් තට්ටු කරන්න"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"තිරය ඉක්මනින් වාර {0,number,integer}ක් තට්ටු කරන්න. මෙම කෙටි මග ඔබගේ උපාංගය මන්දගාමී කළ හැකිය"</string>
@@ -2336,6 +2310,10 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"ඔබ යෙදුමක පසුබිම් ක්රියාකාරිත්වය සීමා කළහොත්, එය වැරදි ලෙස ක්රියා කරනු ඇත"</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"මෙම යෙදුම බැටරිය ප්රශස්ත කිරීමට සකසා නැති නිසා, ඔබට එය සීමා කළ නොහැකිය. \n\nයෙදුම සීමා කිරීම සඳහා, පළමුව බැටරි ප්රශස්තකරණය ක්රියාත්මක කරන්න."</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"බැටරි භාවිතය කළමනාකරණය"</string>
+ <!-- no translation found for manager_battery_usage_allow_background_usage_title (6294649996820358852) -->
+ <skip />
+ <!-- no translation found for manager_battery_usage_allow_background_usage_summary (8021153755201340819) -->
+ <skip />
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"සීමා නොකළ"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"ප්රශස්ත කළ"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"සීමා කළ"</string>
@@ -3846,6 +3824,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"සියලු ගොනු කළමනාකරණය කිරීමට ප්රවේශය ඉඩ දෙන්න"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"මෙම යෙදුමට මෙම උපාංගයේ හෝ ඕනෑම සබැඳුණු ගබඩා ධාරිතාවක ඇති සියලු ගොනු කියවීමට, වෙනස් කිරීමට සහ මැකීමට ඉඩ දෙන්න. ප්රදානය කළහොත්, ඔබේ ප්රකාශිත දැනුම රහිතව යෙදුමට ගොනු වෙත ප්රවේශ විය හැකිය."</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"සියලු ගොනු වෙත ප්රවේශ විය හැකිය"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"පූර්ණ තිර දැනුම්දීම්"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"මෙම යෙදුමෙන් පූර්ණ තිර දැනුම්දීම්වලට ඉඩ දෙන්න"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"උපාංගය අගුළු දමා ඇති විට පූර්ණ තිරය ගන්නා දැනුම්දීම් පෙන්වීමට මෙම යෙදුමට ඉඩ දෙන්න. එලාම්, එන ඇමතුම්, හෝ වෙනත් හදිසි දැනුම්දීම් උද්දීපනය කිරීමට යෙදුම් මේවා භාවිතා කිරීමට ඉඩ ඇත."</string>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index 99b52cd..4bb8bf2 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -135,7 +135,14 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"Dotykové pero"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"Zdieľanie zvuku"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"Zdieľať zvuk"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"Hovory a budíky"</string>
+ <!-- no translation found for audio_sharing_streams_category_title (862958129650324581) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_pref_title (4636293245167657721) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_title (8269455097512153101) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_qr_code_summary (4231875597377863735) -->
<skip />
<string name="date_and_time" msgid="1788358029823431692">"Dátum a čas"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"Proxy server"</string>
@@ -540,24 +547,15 @@
<string name="private_space_title" msgid="7078627930195569767">"Súkromný priestor"</string>
<string name="private_space_summary" msgid="8237652417163408001">"Skrytie aplikácií do súkromného priečinka"</string>
<string name="private_space_one_lock_title" msgid="7306547190751832568">"Odomknutie zámkou obrazovky"</string>
- <!-- no translation found for private_space_hide_title (8687034008994037610) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_title (972581369094289386) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_summary (1052569521186403642) -->
- <skip />
- <!-- no translation found for privatespace_access_header (982809349769470185) -->
- <skip />
- <!-- no translation found for privatespace_search_description (983837656432484282) -->
- <skip />
- <!-- no translation found for privatespace_tap_tile_description (4146608898639668340) -->
- <skip />
- <!-- no translation found for privatespace_unlock_description (4132755357482447360) -->
- <skip />
- <!-- no translation found for privatespace_hide_off_summary (7227778747159633671) -->
- <skip />
- <!-- no translation found for privatespace_hide_on_summary (6136704537527640183) -->
- <skip />
+ <string name="private_space_hide_title" msgid="8687034008994037610">"Skryť pri uzamknutí"</string>
+ <string name="privatespace_hide_page_title" msgid="972581369094289386">"Skrytie súkromného priestoru pri uzamknutí"</string>
+ <string name="privatespace_hide_page_summary" msgid="1052569521186403642">"Ak chcete zabrániť ostatným ľuďom, aby sa dozvedeli, že v zariadení máte Súkromný priestor, môžete ho skryť zo zoznamu aplikácií"</string>
+ <string name="privatespace_access_header" msgid="982809349769470185">"Prístup do Súkromného priestoru, keď je skrytý"</string>
+ <string name="privatespace_search_description" msgid="983837656432484282">"Vyhľadajte vo vyhľadávacom paneli položku Súkromný priestor"</string>
+ <string name="privatespace_tap_tile_description" msgid="4146608898639668340">"Klepnutím zobrazíte dlaždicu Súkromného priestoru"</string>
+ <string name="privatespace_unlock_description" msgid="4132755357482447360">"Odomknite svoj Súkromný priestor"</string>
+ <string name="privatespace_hide_off_summary" msgid="7227778747159633671">"Vypnuté"</string>
+ <string name="privatespace_hide_on_summary" msgid="6136704537527640183">"Zapnuté"</string>
<string name="private_space_category_system" msgid="1286843321867285700">"Systém"</string>
<string name="private_space_create_title" msgid="47273568884806726">"Vytvorenie súkromného priestoru"</string>
<string name="private_space_delete_title" msgid="3075645119800272800">"Odstránenie súkromného priestoru"</string>
@@ -570,54 +568,30 @@
<string name="no_device_lock_summary" msgid="7653477413589207824">"Ak chcete používať Súkromný priestor, nastavte v tomto zariadení zámku obrazovky."</string>
<string name="no_device_lock_action_label" msgid="2640487005629001288">"Nastaviť zámku obrazovky"</string>
<string name="no_device_lock_cancel" msgid="4412602160321228863">"Zrušiť"</string>
- <!-- no translation found for privatespace_cancel_label (362351004019511784) -->
- <skip />
- <!-- no translation found for privatespace_setup_button_label (3696372546231047258) -->
- <skip />
- <!-- no translation found for privatespace_setup_title (177623114624330394) -->
- <skip />
- <!-- no translation found for privatespace_hide_apps_summary (4016518749055602268) -->
- <skip />
- <!-- no translation found for privatespace_how_title (8794102046435526065) -->
- <skip />
- <!-- no translation found for privatespace_access_bottom_text (1075244097441349030) -->
- <skip />
- <!-- no translation found for privatespace_protected_lock_text (7320604832432017423) -->
- <skip />
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_cancel_label" msgid="362351004019511784">"Zrušiť"</string>
+ <string name="privatespace_setup_button_label" msgid="3696372546231047258">"Nastaviť"</string>
+ <string name="privatespace_setup_title" msgid="177623114624330394">"Nastavenie Súkromného priestoru"</string>
+ <string name="privatespace_hide_apps_summary" msgid="4016518749055602268">"Skryte súkromné aplikácie do zabezpečeného priestoru, ku ktorému máte prístup len vy"</string>
+ <string name="privatespace_how_title" msgid="8794102046435526065">"Ako to funguje"</string>
+ <string name="privatespace_access_bottom_text" msgid="1075244097441349030">"Do Súkromného priestoru môžete prejsť z dolnej časti zoznamu aplikácií"</string>
+ <string name="privatespace_protected_lock_text" msgid="7320604832432017423">"Aplikácie v súkromnom priestore sú chránené zámkou"</string>
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"Keď je súkromný priestor uzamknutý, upozornenia z jeho aplikácií sú skryté"</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"Keď je súkromný priestor uzamknutý, jeho aplikácie sa nebudú zobrazovať v sekcii Správca povolení, na paneli ochrany súkromia ani v ďalších nastaveniach"</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"Nastavuje sa súkromný priestor…"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"Súkromný priestor je chránený zámkou"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"Keď je súkromný priestor uzamknutý, informácie o využití jeho aplikácií sú skryté"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"Prístup k súkromnému priestoru v zozname aplikácií"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"Súkromný priestor sa nepodarilo nastaviť"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"Skúste to znova alebo sa vráťte neskôr"</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"Skúsiť znova"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"Chcete odomykať pomocou zámky obrazovky?"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"Súkromný priestor môžete uzamknúť rovnakým spôsobom ako svoje zariadenie, prípadne môžete vybrať inú zámku"</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"Používať zámku obrazovky"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"Vybrať novú zámku"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"Hotovo!"</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"Ak chcete získať prístup k súkromnému priestoru, potiahnite nahor zdola obrazovky a potom sa posuňte nadol"</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"Hotovo"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"Posunutím nadol získajte prístup k súkromnému priestoru"</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"Maximálny počet odtlačkov, ktoré môžete pridať: <xliff:g id="COUNT">%d</xliff:g>"</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"Pridali ste maximálny počet odtlačkov prstov"</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"Nie je možné pridať ďalšie odtlačky prstov"</string>
@@ -1135,8 +1109,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"Pokračovať v používaní aplikácií po zložení"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"Plynulý obraz"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"Automaticky zvýši frekvenciu obnovenia v prípade určitého obsahu až na <xliff:g id="ID_1">%1$d</xliff:g> Hz. Zvýši sa spotreba batérie."</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"Vynútiť vrcholovú frekvenciu obnovenia"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"Najvyššia frekvencia obnovenia zlepšujúca dotykovú odozvu a kvalitu animácií. Zvýši sa spotreba batérie."</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"Vnímavá obrazovka"</string>
@@ -1372,6 +1345,8 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"Spoločné nastavenia"</string>
<string name="apn_settings" msgid="4295467389400441299">"Prístupové body"</string>
<string name="apn_edit" msgid="2003683641840248741">"Upraviť prístupový bod"</string>
+ <!-- no translation found for apn_add (9069613192201630934) -->
+ <skip />
<string name="apn_not_set" msgid="8246646433109750293">"Nenastavené"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"Nenastavené"</string>
<string name="apn_name" msgid="6677695784108157953">"Názov"</string>
@@ -2006,12 +1981,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"Otváranie tlačidlom dostupnosti"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"Otvorte pridržaním tlačidiel hlasitosti"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"Otvorenie troma klepnutiami na obrazovku"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"Otvorte trojitým klepnutím dvoma prstami na obrazovku"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"Otváranie gestom"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"Použitie gesta dostupnosti"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"Ak chcete použiť túto funkciu, klepnite na tlačidlo dostupnosti <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> v dolnej časti obrazovky.\n\nFunkcie prepnete pridržaním tlačidla dostupnosti."</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"Ak chcete túto funkciu použiť, klepnite na tlačidlo dostupnosti na obrazovke."</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"Túto funkciu použijete tak, že pridržíte obe tlačidlá hlasitosti."</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"Ak chcete spustiť alebo zastaviť zväčšenie, klepnite trikrát na ľubovoľné miesto na obrazovke."</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"Ak chcete spustiť či zastaviť zväčšenie, klepnite trikrát dvoma prstami kdekoľvek na obrazovku."</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"Ak chcete použiť túto funkciu, potiahnite dvoma prstami z dolnej časti obrazovky nahor.\n\nFunkcie prepnete potiahnutím dvoma prstami smerom nahor a pridržaním."</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"Ak chcete použiť túto funkciu, potiahnite troma prstami z dolnej časti obrazovky nahor.\n\nFunkcie prepnete potiahnutím troma prstami smerom nahor a pridržaním."</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"Ak chcete použiť funkciu dostupnosti, potiahnite dvoma prstami z dolnej časti obrazovky nahor.\n\nFunkcie prepnete potiahnutím dvoma prstami smerom nahor a pridržaním."</string>
@@ -2033,12 +2010,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"Pridržanie tlačidiel hlasitosti"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"podržanie tlačidiel hlasitosti"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"Pridržte obe tlačidlá hlasitosti"</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"Trikrát klepnite dvoma prstami na obrazovku"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"trikrát klepnite dvoma prstami na obrazovku"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"Rýchlo {0,number,integer}-krát klepnite dvoma prstami na obrazovku"</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"Tri klepnutia na obrazovku"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"tri klepnutia na obrazovku"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"{0,number,integer}‑krát rýchlo klepnite na obrazovku. Táto skratka môže zariadenie spomaliť."</string>
@@ -2336,6 +2310,10 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"Ak obmedzíte aktivitu aplikácie na pozadí, nemusí fungovať správne"</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"Aplikácia nemá nastavenú optimalizáciu batérie, preto ju nemôžete obmedziť.\n\nAk ju chcete obmedziť, zapnite optimalizáciu."</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"Správa spotreby batérie"</string>
+ <!-- no translation found for manager_battery_usage_allow_background_usage_title (6294649996820358852) -->
+ <skip />
+ <!-- no translation found for manager_battery_usage_allow_background_usage_summary (8021153755201340819) -->
+ <skip />
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"Bez obmedzení"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"Optimalizované"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"Obmedzené"</string>
@@ -3846,6 +3824,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"Povoliť prístup na správu všetkých súborov"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"Povoľte tejto aplikácii čítať, upravovať a odstraňovať všetky súbory v tomto zariadení alebo akýchkoľvek pripojených úložiskách. Po udelení tohto povolenia bude môcť aplikácia používať súbory bez vášho vedomia."</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"Má prístup k všetkým súborom"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"Upozornenia na celej obrazovke"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"Povoliť zobrazovanie upozornení z tejto aplikácie na celej obrazovke"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"Povoľte tejto aplikácii zobrazovať upozornenia na celú obrazovku, keď bude zariadenie uzamknuté. Aplikácie vás môžu pomocou nich informovať o budíkoch, prichádzajúcich hovoroch a ďalších dôležitých upozorneniach."</string>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index 19960e5..1572cee 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -135,7 +135,14 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"Pisalo"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"Deljenje zvoka"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"Deli zvok"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"Klici in alarmi"</string>
+ <!-- no translation found for audio_sharing_streams_category_title (862958129650324581) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_pref_title (4636293245167657721) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_title (8269455097512153101) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_qr_code_summary (4231875597377863735) -->
<skip />
<string name="date_and_time" msgid="1788358029823431692">"Datum in ura"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"Strežnik proxy"</string>
@@ -540,24 +547,15 @@
<string name="private_space_title" msgid="7078627930195569767">"Zasebni prostor"</string>
<string name="private_space_summary" msgid="8237652417163408001">"Skrivanje aplikacij v zasebni mapi"</string>
<string name="private_space_one_lock_title" msgid="7306547190751832568">"Odklepanje z načinom za odklepanje zaslona"</string>
- <!-- no translation found for private_space_hide_title (8687034008994037610) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_title (972581369094289386) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_summary (1052569521186403642) -->
- <skip />
- <!-- no translation found for privatespace_access_header (982809349769470185) -->
- <skip />
- <!-- no translation found for privatespace_search_description (983837656432484282) -->
- <skip />
- <!-- no translation found for privatespace_tap_tile_description (4146608898639668340) -->
- <skip />
- <!-- no translation found for privatespace_unlock_description (4132755357482447360) -->
- <skip />
- <!-- no translation found for privatespace_hide_off_summary (7227778747159633671) -->
- <skip />
- <!-- no translation found for privatespace_hide_on_summary (6136704537527640183) -->
- <skip />
+ <string name="private_space_hide_title" msgid="8687034008994037610">"Skrivanje, kadar je zaklenjeno"</string>
+ <string name="privatespace_hide_page_title" msgid="972581369094289386">"Skrivanje zasebnega prostora, kadar je zaklenjen"</string>
+ <string name="privatespace_hide_page_summary" msgid="1052569521186403642">"Če ne želite, da bi druge osebe vedele, da je v napravi zasebni prostor, ga lahko skrijete, da ni prikazan na seznamu aplikacij"</string>
+ <string name="privatespace_access_header" msgid="982809349769470185">"Dostop do zasebnega prostora, kadar je skrit"</string>
+ <string name="privatespace_search_description" msgid="983837656432484282">"V vrstici za iskanje poiščite izraz »Zasebni prostor«"</string>
+ <string name="privatespace_tap_tile_description" msgid="4146608898639668340">"Dotaknite se ploščice »Zasebni prostor«"</string>
+ <string name="privatespace_unlock_description" msgid="4132755357482447360">"Odklepanje zasebnega prostora"</string>
+ <string name="privatespace_hide_off_summary" msgid="7227778747159633671">"Izklopljeno"</string>
+ <string name="privatespace_hide_on_summary" msgid="6136704537527640183">"Vklopljeno"</string>
<string name="private_space_category_system" msgid="1286843321867285700">"Sistem"</string>
<string name="private_space_create_title" msgid="47273568884806726">"Ustvarjanje zasebnega prostora"</string>
<string name="private_space_delete_title" msgid="3075645119800272800">"Brisanje zasebnega prostora"</string>
@@ -570,54 +568,30 @@
<string name="no_device_lock_summary" msgid="7653477413589207824">"Če želite uporabljati zasebni prostor, v napravi nastavite zaklepanje zaslona."</string>
<string name="no_device_lock_action_label" msgid="2640487005629001288">"Nastavite zaklepanje zaslona"</string>
<string name="no_device_lock_cancel" msgid="4412602160321228863">"Prekliči"</string>
- <!-- no translation found for privatespace_cancel_label (362351004019511784) -->
- <skip />
- <!-- no translation found for privatespace_setup_button_label (3696372546231047258) -->
- <skip />
- <!-- no translation found for privatespace_setup_title (177623114624330394) -->
- <skip />
- <!-- no translation found for privatespace_hide_apps_summary (4016518749055602268) -->
- <skip />
- <!-- no translation found for privatespace_how_title (8794102046435526065) -->
- <skip />
- <!-- no translation found for privatespace_access_bottom_text (1075244097441349030) -->
- <skip />
- <!-- no translation found for privatespace_protected_lock_text (7320604832432017423) -->
- <skip />
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_cancel_label" msgid="362351004019511784">"Prekliči"</string>
+ <string name="privatespace_setup_button_label" msgid="3696372546231047258">"Nastavi"</string>
+ <string name="privatespace_setup_title" msgid="177623114624330394">"Nastavitev zasebnega prostora"</string>
+ <string name="privatespace_hide_apps_summary" msgid="4016518749055602268">"Skrivanje zasebnih aplikacij na varnem mestu, ki je dostopno samo vam"</string>
+ <string name="privatespace_how_title" msgid="8794102046435526065">"Kako deluje"</string>
+ <string name="privatespace_access_bottom_text" msgid="1075244097441349030">"Do zasebnega prostora lahko dostopate z dna seznama aplikacij"</string>
+ <string name="privatespace_protected_lock_text" msgid="7320604832432017423">"Aplikacije v zasebnem prostoru so zaščitene z zaklepanjem"</string>
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"Obvestila aplikacij v zasebnem prostoru so skrita, kadar je zasebni prostor zaklenjen"</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"Aplikacije v zasebnem prostoru ne bodo prikazane v upravitelju dovoljenj, na nadzorni plošči za zasebnost in v drugih nastavitvah, kadar je zasebni prostor zaklenjen"</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"Nastavljanje zasebnega prostora …"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"Zasebni prostor je zaščiten z zaklepanjem"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"Podatki o uporabi aplikacij v zasebnem prostoru so skriti, kadar je zasebni prostor zaklenjen"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"Dostop do zasebnega prostora s seznama aplikacij"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"Zasebnega prostora ni bilo mogoče nastaviti"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"Poskusite znova zdaj ali se vrnite pozneje"</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"Poskusi znova"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"Želite odklepati z načinom za odklepanje zaslona?"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"Zasebni prostor lahko odklepate na enak način kot napravo, lahko pa izberete drug način zaklepanja"</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"Uporabi način za odklepanje zaslona"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"Izberite nov način zaklepanja"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"Končano"</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"Za dostop do zasebnega prostora povlecite navzgor z dna začetnega zaslona in se nato pomaknite navzdol."</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"Končano"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"Za dostop do zasebnega prostora se pomaknite navzdol"</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"Dodate lahko do toliko prstnih odtisov: <xliff:g id="COUNT">%d</xliff:g>"</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"Dodali ste največje dovoljeno število prstnih odtisov"</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"Prstnih odtisov ni več mogoče dodati"</string>
@@ -1135,8 +1109,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"Še naprej uporabljaj aplikacije po zlaganju naprave"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"Tekoč prikaz"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"Samodejno poveča hitrost osveževanja do največ <xliff:g id="ID_1">%1$d</xliff:g> Hz za nekatere vsebine. Poveča porabo energije baterije."</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"Vsili največjo hitrost osveževanja"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"Višja hitrost osveževanja za izboljšano odzivnost na dotik in kakovost animacij. Povečana poraba energije baterije."</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"Zaznavanje pogleda na zaslon"</string>
@@ -1372,6 +1345,8 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"Skupne nastavitve"</string>
<string name="apn_settings" msgid="4295467389400441299">"APN-ji"</string>
<string name="apn_edit" msgid="2003683641840248741">"Urejanje dostopne točke"</string>
+ <!-- no translation found for apn_add (9069613192201630934) -->
+ <skip />
<string name="apn_not_set" msgid="8246646433109750293">"Ni nastavljeno"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"Ni nastavljeno"</string>
<string name="apn_name" msgid="6677695784108157953">"Ime"</string>
@@ -2006,12 +1981,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"Odpiranje z gumbom za dostopnost"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"Za odpiranje pridržite tipki za glasnost"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"Za odpiranje se trikrat dotaknite zaslona"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"Trikratni dotik zaslona z dvema prstoma za odpiranje"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"Odpiranje s potezo"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"Uporaba poteze za dostopnost"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"Če želite uporabljati to funkcijo, se na dnu zaslona dotaknite gumba za dostopnost <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g>.\n\nČe želite preklopiti med funkcijami, se dotaknite gumba za dostopnost in ga pridržite."</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"Za uporabo te funkcije se na zaslonu dotaknite gumba za dostopnost."</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"Če želite uporabljati to funkcijo, pritisnite obe tipki za glasnost in ju pridržite."</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"Če želite vklopiti ali izklopiti povečavo, se trikrat dotaknite poljubnega mesta na zaslonu."</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"Za vklop ali izklop povečave se z dvema prstoma trikrat dotaknite poljubnega mesta na zaslonu."</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"Če želite uporabljati to funkcijo, z dvema prstoma povlecite z dna zaslona navzgor.\n\nČe želite preklopiti med funkcijami, z dvema prstoma povlecite navzgor in pridržite."</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"Če želite uporabljati to funkcijo, s tremi prsti povlecite z dna zaslona navzgor.\n\nČe želite preklopiti med funkcijami, s tremi prsti povlecite navzgor in pridržite."</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"Če želite uporabljati funkcijo za dostopnost, z dvema prstoma povlecite z dna zaslona navzgor.\n\nČe želite preklopiti med funkcijami, z dvema prstoma povlecite navzgor in pridržite."</string>
@@ -2033,12 +2010,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"Pridržanje tipk za glasnost"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"pridržanje tipk za glasnost"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"Pritisnite in pridržite obe tipki za glasnost."</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"Trikratni dotik zaslona z dvema prstoma"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"trikratni dotik zaslona z dvema prstoma"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"Z dvema prstoma se {0,number,integer}-krat hitro dotaknite zaslona"</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"Trikratni dotik zaslona"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"trikratni dotik zaslona"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"{0,number,integer}-krat se hitro dotaknite zaslona. Ta bližnjica bo morda upočasnila delovanje naprave."</string>
@@ -2336,6 +2310,10 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"Če boste omejili dejavnost aplikacije v ozadju, morda ne bo pravilno delovala"</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"Ker za to aplikacijo ni izbrana nastavitev optimiziranja porabe baterije, je ni mogoče omejiti.\n\nČe želite omejiti aplikacijo, najprej vklopite optimizacijo baterije."</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"Upravljanje porabe energije baterije"</string>
+ <!-- no translation found for manager_battery_usage_allow_background_usage_title (6294649996820358852) -->
+ <skip />
+ <!-- no translation found for manager_battery_usage_allow_background_usage_summary (8021153755201340819) -->
+ <skip />
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"Neomejeno"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"Optimizirano"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"Omejeno"</string>
@@ -3846,6 +3824,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"Dovoli dostop za upravljanje vseh datotek"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"Tej aplikaciji dovolite, da bere, spreminja in briše vse datoteke v tej napravi ali drugih povezanih nosilcih za shranjevanje. Če daste to dovoljenje, bo aplikacija morda dostopala do datotek brez vaše vednosti."</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"Lahko dostopa do vseh datotek"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"Celozaslonska obvestila"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"Dovoli celozaslonska obvestila te aplikacije"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"Dovolite, da ta aplikacija prikazuje obvestila, ki zavzamejo celoten zaslon, ko je naprava zaklenjena. Aplikacije lahko z njimi izpostavijo alarme, dohodne klice ali druga nujna obvestila."</string>
diff --git a/res/values-sq/strings.xml b/res/values-sq/strings.xml
index 03c8eb9..7ae517f 100644
--- a/res/values-sq/strings.xml
+++ b/res/values-sq/strings.xml
@@ -135,7 +135,14 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"Stilolapsi"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"Ndarja e audios"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"Ndaj audion"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"Telefonatat dhe alarmet"</string>
+ <!-- no translation found for audio_sharing_streams_category_title (862958129650324581) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_pref_title (4636293245167657721) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_title (8269455097512153101) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_qr_code_summary (4231875597377863735) -->
<skip />
<string name="date_and_time" msgid="1788358029823431692">"Data dhe ora"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"Proxy"</string>
@@ -540,24 +547,15 @@
<string name="private_space_title" msgid="7078627930195569767">"Hapësira private"</string>
<string name="private_space_summary" msgid="8237652417163408001">"Fshih aplikacionet në një dosje private"</string>
<string name="private_space_one_lock_title" msgid="7306547190751832568">"Shkyç duke përdorur kyçjen e ekranit"</string>
- <!-- no translation found for private_space_hide_title (8687034008994037610) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_title (972581369094289386) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_summary (1052569521186403642) -->
- <skip />
- <!-- no translation found for privatespace_access_header (982809349769470185) -->
- <skip />
- <!-- no translation found for privatespace_search_description (983837656432484282) -->
- <skip />
- <!-- no translation found for privatespace_tap_tile_description (4146608898639668340) -->
- <skip />
- <!-- no translation found for privatespace_unlock_description (4132755357482447360) -->
- <skip />
- <!-- no translation found for privatespace_hide_off_summary (7227778747159633671) -->
- <skip />
- <!-- no translation found for privatespace_hide_on_summary (6136704537527640183) -->
- <skip />
+ <string name="private_space_hide_title" msgid="8687034008994037610">"Fshih kur është e kyçur"</string>
+ <string name="privatespace_hide_page_title" msgid="972581369094289386">"Fshih \"Hapësirën private\" kur është e kyçur"</string>
+ <string name="privatespace_hide_page_summary" msgid="1052569521186403642">"Për të ndaluar që të tjerët të dinë se \"Hapësira private\" është në pajisjen tënde, mund ta fshehësh nga lista jote e aplikacioneve"</string>
+ <string name="privatespace_access_header" msgid="982809349769470185">"Qasu te \"Hapësira private\" kur është e fshehur"</string>
+ <string name="privatespace_search_description" msgid="983837656432484282">"Kontrollo për \"Hapësirën private\" në shiritin e kërkimit"</string>
+ <string name="privatespace_tap_tile_description" msgid="4146608898639668340">"Trokit te pllakëza e \"Hapësirës private\""</string>
+ <string name="privatespace_unlock_description" msgid="4132755357482447360">"Shkyç \"Hapësirën private\""</string>
+ <string name="privatespace_hide_off_summary" msgid="7227778747159633671">"Joaktive"</string>
+ <string name="privatespace_hide_on_summary" msgid="6136704537527640183">"Aktive"</string>
<string name="private_space_category_system" msgid="1286843321867285700">"Sistemi"</string>
<string name="private_space_create_title" msgid="47273568884806726">"Krijo \"Hapësirën private\""</string>
<string name="private_space_delete_title" msgid="3075645119800272800">"Fshi \"Hapësirën private\""</string>
@@ -570,54 +568,30 @@
<string name="no_device_lock_summary" msgid="7653477413589207824">"Për të përdorur \"Hapësirën private\", cakto një kyçje ekrani në këtë pajisje."</string>
<string name="no_device_lock_action_label" msgid="2640487005629001288">"Cakto kyçjen e ekranit"</string>
<string name="no_device_lock_cancel" msgid="4412602160321228863">"Anulo"</string>
- <!-- no translation found for privatespace_cancel_label (362351004019511784) -->
- <skip />
- <!-- no translation found for privatespace_setup_button_label (3696372546231047258) -->
- <skip />
- <!-- no translation found for privatespace_setup_title (177623114624330394) -->
- <skip />
- <!-- no translation found for privatespace_hide_apps_summary (4016518749055602268) -->
- <skip />
- <!-- no translation found for privatespace_how_title (8794102046435526065) -->
- <skip />
- <!-- no translation found for privatespace_access_bottom_text (1075244097441349030) -->
- <skip />
- <!-- no translation found for privatespace_protected_lock_text (7320604832432017423) -->
- <skip />
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_cancel_label" msgid="362351004019511784">"Anulo"</string>
+ <string name="privatespace_setup_button_label" msgid="3696372546231047258">"Konfiguro"</string>
+ <string name="privatespace_setup_title" msgid="177623114624330394">"Konfiguro \"Hapësirën private\""</string>
+ <string name="privatespace_hide_apps_summary" msgid="4016518749055602268">"Fshih aplikacionet private në një hapësirë të sigurt ku vetëm ti mund të qasesh"</string>
+ <string name="privatespace_how_title" msgid="8794102046435526065">"Si funksionon"</string>
+ <string name="privatespace_access_bottom_text" msgid="1075244097441349030">"Mund të qasesh te \"Hapësira private\" nga fundi i listës së aplikacioneve"</string>
+ <string name="privatespace_protected_lock_text" msgid="7320604832432017423">"Aplikacionet në \"Hapësirën private\" janë të mbrojtura me një kyçje"</string>
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"Njoftimet nga aplikacionet në \"Hapësirën private\" janë të fshehura kur ajo është e kyçur"</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"Aplikacionet e \"Hapësirës private\" nuk do të shfaqen te menaxheri i lejeve, paneli i privatësisë dhe në cilësime të tjera kur \"Hapësira private\" është e kyçur"</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"\"Hapësira private\" po konfigurohet…"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"\"Hapësira private\" është e mbrojtur me një kyçje"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"Informacionet e përdorimit për aplikacionet e \"Hapësirës private\" janë të fshehura kur ajo është e kyçur"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"Qasu te \"Hapësira private\" nga lista jote e aplikacioneve"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"\"Hapësira private\" nuk mund të konfigurohej"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"Provo përsëri tani ose kthehu më vonë"</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"Provo përsëri"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"Të përdoret kyçja e ekranit për ta shkyçur?"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"\"Hapësirën private\" mund ta shkyçësh në të njëjtën mënyrë që shkyç pajisjen tënde ose mund të zgjedhësh një kyçje tjetër"</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"Përdor kyçjen e ekranit"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"Zgjidh një kyçje të re"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"Plotësisht gati!"</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"Për t\'u qasur te \"Hapësira private\", rrëshqit shpejt lart nga fundi i ekranit bazë dhe më pas lëviz poshtë"</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"U krye"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"Lëviz poshtë për t\'u qasur te \"Hapësira private\""</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"Mund të shtosh deri në <xliff:g id="COUNT">%d</xliff:g> gjurmë gishtash"</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"Ke shtuar numrin maksimal të gjurmëve të gishtave"</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"Nuk mund të shtohen gjurmë të tjera të gishtave"</string>
@@ -1135,8 +1109,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"Vazhdo të përdorësh aplikacionet në Fold"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"Smooth Display"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"Rrit automatikisht shpejtësinë e rifreskimit deri në <xliff:g id="ID_1">%1$d</xliff:g> Hz për disa përmbajtje. Rrit përdorimin e baterisë."</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"Detyro shpejtësinë maksimale të rifreskimit"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"Shpejtësia më e lartë e rifreskimit për përmirësimin e reagueshmërisë së prekjes dhe cilësisë së animacioneve. Rrit përdorimin e baterisë."</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"Vëmendja ndaj ekranit"</string>
@@ -1372,6 +1345,8 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"Cilësimet e përbashkëta"</string>
<string name="apn_settings" msgid="4295467389400441299">"APN-të"</string>
<string name="apn_edit" msgid="2003683641840248741">"Redakto pikën e qasjes"</string>
+ <!-- no translation found for apn_add (9069613192201630934) -->
+ <skip />
<string name="apn_not_set" msgid="8246646433109750293">"Nuk është caktuar"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"Nuk është caktuar"</string>
<string name="apn_name" msgid="6677695784108157953">"Emri"</string>
@@ -2006,12 +1981,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"Përdor butonin e qasshmërisë për të hapur"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"Mbaj shtypur tastet e volumit për ta hapur"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"Trokit tri herë në ekran për ta hapur"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"Trokit tri herë me dy gishta në ekran për të hapur"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"Përdor gjestin për të hapur"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"Përdor gjestin e qasshmërisë"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"Për ta përdorur këtë veçori, trokit te butoni i qasshmërisë <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> në fund të ekranit.\n\nPër të ndërruar mes veçorive, mbaj të shtypur butonin e qasshmërisë."</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"Për të përdorur këtë veçori, trokit te butoni i qasshmërisë në ekranin tënd."</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"Për ta përdorur këtë veçori, mbaj shtypur të dyja tastet e volumit."</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"Për të filluar dhe ndaluar zmadhimin, trokit tri herë diku në ekran."</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"Për të filluar dhe ndaluar zmadhimin, trokit tri herë me dy gishta diku në ekran."</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"Për ta përdorur këtë veçori, rrëshqit shpejt lart nga fundi i ekranit me 2 gishta.\n\nPër të ndërruar mes veçorive, rrëshqit shpejt lart me 2 gishta dhe mbaje të shtypur."</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"Për ta përdorur këtë veçori, rrëshqit shpejt lart nga fundi i ekranit me 3 gishta.\n\nPër të ndërruar mes veçorive, rrëshqit shpejt lart me 3 gishta dhe mbaje të shtypur."</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"Për të përdorur një veçori të qasshmërisë, rrëshqit shpejt lart nga fundi i ekranit me 2 gishta.\n\nPër të ndërruar mes veçorive, rrëshqit shpejt lart me 2 gishta dhe mbaje të shtypur."</string>
@@ -2033,12 +2010,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"Mbaj shtypur tastet e volumit"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"mbaj shtypur tastet e volumit"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"Shtyp dhe mbaj shtypur të dyja tastet e volumit"</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"Trokit tri herë me dy gishta në ekran"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"trokit tri herë me dy gishta në ekran"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"Trokit shpejt {0,number,integer} herë me dy gishta në ekran"</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"Trokit tri herë mbi ekran"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"trokit tri herë mbi ekran"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"Trokit me shpejtësi {0,number,integer} herë në ekran. Kjo shkurtore mund të ngadalësojë pajisjen tënde"</string>
@@ -2336,6 +2310,10 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"Nëse e kufizon aktivitetin në sfond për një aplikacion, mund të ketë çrregullime në funksionimin e tij"</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"Duke qenë se ky aplikacion nuk është caktuar për të optimizuar baterinë, nuk mund ta kufizosh atë.\n\nPër të kufizuar aplikacionin, në fillim aktivizo optimizimin e baterisë."</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"Menaxho përdorimin e baterisë"</string>
+ <!-- no translation found for manager_battery_usage_allow_background_usage_title (6294649996820358852) -->
+ <skip />
+ <!-- no translation found for manager_battery_usage_allow_background_usage_summary (8021153755201340819) -->
+ <skip />
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"Pa kufizim"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"I optimizuar"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"I kufizuar"</string>
@@ -3846,6 +3824,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"Lejo qasjen për të menaxhuar të gjithë skedarët"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"Lejo që ky aplikacion të lexojë, modifikojë dhe fshijë të gjithë skedarët në këtë pajisje ose në çdo volum hapësire ruajtjeje të lidhur. Nëse lejohet, aplikacioni mund të ketë qasje te skedarët pa dijeninë tënde të qartë."</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"Mund të ketë qasje te të gjithë skedarët"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"Njoftimet në ekranin e plotë"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"Të lejohen njoftimet në ekranin e plotë nga ky aplikacion"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"Lejo këtë aplikacion të shfaqë njoftime që zënë ekranin e plotë kur pajisja është e kyçur. Aplikacionet mund t’i përdorin këto për të vendosur në fokus alarmet, telefonatat hyrëse apo njoftimet e tjera urgjente."</string>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index 5035038..ee7d179 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -135,8 +135,11 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"Писаљка"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"Дељење звука"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"Дели звук"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
- <skip />
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"Позиви и аларми"</string>
+ <string name="audio_sharing_streams_category_title" msgid="862958129650324581">"Повежите се са LE audio стримом"</string>
+ <string name="audio_sharing_streams_pref_title" msgid="4636293245167657721">"Аудио стримови у близини"</string>
+ <string name="audio_sharing_streams_title" msgid="8269455097512153101">"Аудио стримови"</string>
+ <string name="audio_sharing_streams_qr_code_summary" msgid="4231875597377863735">"Повежите се са аудио стримом помоћу QR кода"</string>
<string name="date_and_time" msgid="1788358029823431692">"Датум и време"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"Прокси"</string>
<string name="proxy_clear_text" msgid="6529658759984031149">"Обриши"</string>
@@ -540,24 +543,15 @@
<string name="private_space_title" msgid="7078627930195569767">"Приватни простор"</string>
<string name="private_space_summary" msgid="8237652417163408001">"Сакриј апликације у приватном фолдеру"</string>
<string name="private_space_one_lock_title" msgid="7306547190751832568">"Откључај помоћу откључавања екрана"</string>
- <!-- no translation found for private_space_hide_title (8687034008994037610) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_title (972581369094289386) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_summary (1052569521186403642) -->
- <skip />
- <!-- no translation found for privatespace_access_header (982809349769470185) -->
- <skip />
- <!-- no translation found for privatespace_search_description (983837656432484282) -->
- <skip />
- <!-- no translation found for privatespace_tap_tile_description (4146608898639668340) -->
- <skip />
- <!-- no translation found for privatespace_unlock_description (4132755357482447360) -->
- <skip />
- <!-- no translation found for privatespace_hide_off_summary (7227778747159633671) -->
- <skip />
- <!-- no translation found for privatespace_hide_on_summary (6136704537527640183) -->
- <skip />
+ <string name="private_space_hide_title" msgid="8687034008994037610">"Сакриј кад је закључан"</string>
+ <string name="privatespace_hide_page_title" msgid="972581369094289386">"Сакријте приватни простор кад је закључан"</string>
+ <string name="privatespace_hide_page_summary" msgid="1052569521186403642">"Приватни простор можете да сакријете са листе апликација"</string>
+ <string name="privatespace_access_header" msgid="982809349769470185">"Приступите приватном простору кад је сакривен"</string>
+ <string name="privatespace_search_description" msgid="983837656432484282">"Потражите Приватни простор на траци за претрагу"</string>
+ <string name="privatespace_tap_tile_description" msgid="4146608898639668340">"Додирните плочицу Приватни простор"</string>
+ <string name="privatespace_unlock_description" msgid="4132755357482447360">"Откључајте приватни простор"</string>
+ <string name="privatespace_hide_off_summary" msgid="7227778747159633671">"Искључено"</string>
+ <string name="privatespace_hide_on_summary" msgid="6136704537527640183">"Укључeно"</string>
<string name="private_space_category_system" msgid="1286843321867285700">"Систем"</string>
<string name="private_space_create_title" msgid="47273568884806726">"Направи приватни простор"</string>
<string name="private_space_delete_title" msgid="3075645119800272800">"Избриши приватни простор"</string>
@@ -570,54 +564,30 @@
<string name="no_device_lock_summary" msgid="7653477413589207824">"За приватни простор подесите закључавање екрана на уређају."</string>
<string name="no_device_lock_action_label" msgid="2640487005629001288">"Подеси закључавање екрана"</string>
<string name="no_device_lock_cancel" msgid="4412602160321228863">"Откажи"</string>
- <!-- no translation found for privatespace_cancel_label (362351004019511784) -->
- <skip />
- <!-- no translation found for privatespace_setup_button_label (3696372546231047258) -->
- <skip />
- <!-- no translation found for privatespace_setup_title (177623114624330394) -->
- <skip />
- <!-- no translation found for privatespace_hide_apps_summary (4016518749055602268) -->
- <skip />
- <!-- no translation found for privatespace_how_title (8794102046435526065) -->
- <skip />
- <!-- no translation found for privatespace_access_bottom_text (1075244097441349030) -->
- <skip />
- <!-- no translation found for privatespace_protected_lock_text (7320604832432017423) -->
- <skip />
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_cancel_label" msgid="362351004019511784">"Откажи"</string>
+ <string name="privatespace_setup_button_label" msgid="3696372546231047258">"Подеси"</string>
+ <string name="privatespace_setup_title" msgid="177623114624330394">"Подесите приватни простор"</string>
+ <string name="privatespace_hide_apps_summary" msgid="4016518749055602268">"Сакријте приватне апликације у безбедном простору ком само ви можете да приступите"</string>
+ <string name="privatespace_how_title" msgid="8794102046435526065">"Принцип рада"</string>
+ <string name="privatespace_access_bottom_text" msgid="1075244097441349030">"Приватном простору можете да приступите са дна листе апликација"</string>
+ <string name="privatespace_protected_lock_text" msgid="7320604832432017423">"Апликације у приватном простору су закључане"</string>
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"Обавештења из апликација приватног простора су скривена кад је он закључан"</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"Апликације приватног простора неће се појавити у менаџеру дозвола, на контролној табли за приватност и у другим подешавањима кад је приватни простор закључан"</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"Подешава се приватни простор…"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"Приватни простор је заштићен закључавањем"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"Информације о коришћењу за апликације из приватног простора су скривене када је закључан"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"Приступајте приватном простору са листе апликација"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"Подешавање приватног простора није успело"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"Пробајте поново сада или се вратите касније"</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"Пробај поново"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"Желите да откључате помоћу откључавања екрана?"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"Можете да откључавате приватни простор исто као што откључавате уређај или да одаберете другачији тип откључавања"</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"Користи откључавање екрана"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"Одабери нови тип закључавања"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"Готово!"</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"Да бисте приступали приватном простору, превуците нагоре од дна почетног екрана, па скролујте надоле"</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"Готово"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"Скролујте надоле да бисте приступали приватном простору"</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"Можете да их додате до <xliff:g id="COUNT">%d</xliff:g>"</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"Додали сте максималан број отисака прстију"</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"Не можете да додате још отисака прстију"</string>
@@ -1135,8 +1105,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"Настави са коришћењем апликација при преклапању"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"Течан приказ"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"Аутоматски подиже учесталост освежавања до <xliff:g id="ID_1">%1$d</xliff:g> Hz за одређени садржај. Повећава потрошњу батерије."</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"Наметни максималну учесталост освежавања"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"Највећа учесталост освежавања за побољшан одзив на додир и квалитет анимације. Повећава потрошњу батерије."</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"Пажња екрана"</string>
@@ -1372,6 +1341,7 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"Заједничка подешавања"</string>
<string name="apn_settings" msgid="4295467389400441299">"Називи приступних тачака"</string>
<string name="apn_edit" msgid="2003683641840248741">"Измена приступне тачке"</string>
+ <string name="apn_add" msgid="9069613192201630934">"Додајте приступну тачку"</string>
<string name="apn_not_set" msgid="8246646433109750293">"Није подешено"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"Није подешено"</string>
<string name="apn_name" msgid="6677695784108157953">"Назив"</string>
@@ -2006,12 +1976,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"Отварајте помоћу дугмета за приступачност"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"Задржите тастере за јачину звука да бисте отворили"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"Трипут додирните екран да бисте отворили"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"Додирните екран три пута помоћу два прста да бисте отворили"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"Отварајте помоћу покрета"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"Користите покрет за приступачност"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"Да бисте користили ову функцију, додирните дугме Приступачност <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> у дну екрана.\n\nДа бисте прелазили са једне функције на другу, додирните и задржите дугме Приступачност."</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"Да бисте користили ову функцију, додирните дугме Приступачност на екрану."</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"Да бисте користили ову функцију, притисните и задржите оба тастера за јачину звука."</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"Да бисте покренули и зауставили увећање, трипут додирните било где на екрану."</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"Да бисте покренули и зауставили увећање, додирните три пута било где на екрану помоћу два прста."</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"Да бисте користили ову функцију, превуците нагоре од дна екрана помоћу 2 прста.\n\nДа бисте прелазили са једне функције на другу, превуците нагоре помоћу 2 прста и задржите."</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"Да бисте користили ову функцију, превуците нагоре од дна екрана помоћу 3 прста.\n\nДа бисте прелазили са једне функције на другу, превуците нагоре помоћу 3 прста и задржите."</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"Да бисте користили функцију приступачности, превуците нагоре од дна екрана помоћу 2 прста.\n\nДа бисте прелазили са једне функције на другу, превуците нагоре помоћу 2 прста и задржите."</string>
@@ -2033,12 +2005,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"Задржите тастере за јачину звука"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"задржите тастере за јачину звука"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"Притисните и задржите оба тастера за јачину звука"</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"Додирните екран три пута помоћу два прста"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"додирните екран три пута помоћу два прста"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"Брзо додирните екран {0,number,integer} пута помоћу два прста"</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"Додирните екран трипут"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"додирните екран трипут"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"Брзо додирните екран {0,number,integer} пута. Ова пречица може да успори уређај"</string>
@@ -2336,6 +2305,8 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"Ако ограничите активности апликације у позадини, можда ће се понашати неочекивано."</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"Апл. није подешена за оптимизацију батерије, па не можете да је ограничите. \n\nЗа огр. апл. укључите оптимизацију батерије."</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"Управљајте потрошњом батерије"</string>
+ <string name="manager_battery_usage_allow_background_usage_title" msgid="6294649996820358852">"Дозволи коришћење у позадини"</string>
+ <string name="manager_battery_usage_allow_background_usage_summary" msgid="8021153755201340819">"Омогућите за ажурирања у реалном времену, онемогућите да бисте уштедели батерију"</string>
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"Неограничено"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"Оптимизовано"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"Ограничено"</string>
@@ -3846,6 +3817,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"Дозволи приступ за управљање свим датотекама"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"Дозволите да ова апликација чита, мења и брише све датотеке на овом уређају или свим повезаним уређајима за складиштење. Ако то дозволите, апликација може да приступа датотекама без вашег знања."</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"Може да приступа свим датотекама"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"Обавештења преко целог екрана"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"Дозволите обавештења преко целог екрана од ове апликације"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"Дозволите овој апликацији да приказује обавештења преко целог екрана када је уређај закључан. Апликације могу да их користе ради истицања аларма, долазних позива или других хитних обавештења."</string>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index 3e6fd5b..bb8fd40 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -135,7 +135,14 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"E-penna"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"Ljuddelning"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"Dela ljud"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"Samtal och alarm"</string>
+ <!-- no translation found for audio_sharing_streams_category_title (862958129650324581) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_pref_title (4636293245167657721) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_title (8269455097512153101) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_qr_code_summary (4231875597377863735) -->
<skip />
<string name="date_and_time" msgid="1788358029823431692">"Datum och tid"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"Proxy"</string>
@@ -540,24 +547,15 @@
<string name="private_space_title" msgid="7078627930195569767">"Privat rum"</string>
<string name="private_space_summary" msgid="8237652417163408001">"Dölj appar i en privat mapp"</string>
<string name="private_space_one_lock_title" msgid="7306547190751832568">"Lås upp med skärmlåset"</string>
- <!-- no translation found for private_space_hide_title (8687034008994037610) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_title (972581369094289386) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_summary (1052569521186403642) -->
- <skip />
- <!-- no translation found for privatespace_access_header (982809349769470185) -->
- <skip />
- <!-- no translation found for privatespace_search_description (983837656432484282) -->
- <skip />
- <!-- no translation found for privatespace_tap_tile_description (4146608898639668340) -->
- <skip />
- <!-- no translation found for privatespace_unlock_description (4132755357482447360) -->
- <skip />
- <!-- no translation found for privatespace_hide_off_summary (7227778747159633671) -->
- <skip />
- <!-- no translation found for privatespace_hide_on_summary (6136704537527640183) -->
- <skip />
+ <string name="private_space_hide_title" msgid="8687034008994037610">"Dölj när det är låst"</string>
+ <string name="privatespace_hide_page_title" msgid="972581369094289386">"Dölj privat rum när det är låst"</string>
+ <string name="privatespace_hide_page_summary" msgid="1052569521186403642">"Du kan dölja privat rum i applistan så andra inte ser det"</string>
+ <string name="privatespace_access_header" msgid="982809349769470185">"Kom åt privat rum när det är dolt"</string>
+ <string name="privatespace_search_description" msgid="983837656432484282">"Sök efter privat rum i sökfältet"</string>
+ <string name="privatespace_tap_tile_description" msgid="4146608898639668340">"Tryck på rutan för privat rum"</string>
+ <string name="privatespace_unlock_description" msgid="4132755357482447360">"Lås upp ditt privata rum"</string>
+ <string name="privatespace_hide_off_summary" msgid="7227778747159633671">"Av"</string>
+ <string name="privatespace_hide_on_summary" msgid="6136704537527640183">"På"</string>
<string name="private_space_category_system" msgid="1286843321867285700">"System"</string>
<string name="private_space_create_title" msgid="47273568884806726">"Skapa privat rum"</string>
<string name="private_space_delete_title" msgid="3075645119800272800">"Radera privat rum"</string>
@@ -570,54 +568,30 @@
<string name="no_device_lock_summary" msgid="7653477413589207824">"Ange ett skärmlås för enheten om du vill använda Privat rum."</string>
<string name="no_device_lock_action_label" msgid="2640487005629001288">"Konfigurera skärmlås"</string>
<string name="no_device_lock_cancel" msgid="4412602160321228863">"Avbryt"</string>
- <!-- no translation found for privatespace_cancel_label (362351004019511784) -->
- <skip />
- <!-- no translation found for privatespace_setup_button_label (3696372546231047258) -->
- <skip />
- <!-- no translation found for privatespace_setup_title (177623114624330394) -->
- <skip />
- <!-- no translation found for privatespace_hide_apps_summary (4016518749055602268) -->
- <skip />
- <!-- no translation found for privatespace_how_title (8794102046435526065) -->
- <skip />
- <!-- no translation found for privatespace_access_bottom_text (1075244097441349030) -->
- <skip />
- <!-- no translation found for privatespace_protected_lock_text (7320604832432017423) -->
- <skip />
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_cancel_label" msgid="362351004019511784">"Avbryt"</string>
+ <string name="privatespace_setup_button_label" msgid="3696372546231047258">"Ställ in"</string>
+ <string name="privatespace_setup_title" msgid="177623114624330394">"Ställ in privat rum"</string>
+ <string name="privatespace_hide_apps_summary" msgid="4016518749055602268">"Dölj privata appar i ett säkert rum som bara du kan komma åt"</string>
+ <string name="privatespace_how_title" msgid="8794102046435526065">"Så fungerar det"</string>
+ <string name="privatespace_access_bottom_text" msgid="1075244097441349030">"Du kan komma åt privat rum längst ned i applistan"</string>
+ <string name="privatespace_protected_lock_text" msgid="7320604832432017423">"Appar i privat rum skyddas av ett lås"</string>
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"Aviseringar från appar i privat rum döljs när det är låst"</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"Appar i privat rum visas inte i behörighetshanteringen, integritetsöversikten eller andra inställningar när privat rum är låst"</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"Konfigurera privat rum …"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"Privat rum är skyddat med ett lås"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"Användarinformation för appar i privat rum döljs när det är låst"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"Åtkomst till Privat rum från din applista"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"Det gick inte att konfigurera privat rum"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"Försök igen nu eller kom tillbaka senare"</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"Försök igen"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"Vill du använda skärmlåset för att låsa upp?"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"Du kan låsa upp privat rum på samma sätt som du låser upp din enhet, eller så väljer du ett annat lås"</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"Använd skärmlås"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"Välj ett nytt lås"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"Klart!"</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"Svep uppåt från startskärmens nederkant och scrolla sedan nedåt för att få åtkomst till Privat rum"</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"Klar"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"Scrolla nedåt för att få åtkomst till privat rum"</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"Du kan lägga till upp till <xliff:g id="COUNT">%d</xliff:g> fingeravtryck"</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"Du har lagt till det högsta tillåtna antalet fingeravtryck"</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"Det går inte att lägga till fler fingeravtryck"</string>
@@ -1135,8 +1109,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"Fortsätt att använda appar i hopvikt läge"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"Smooth Display"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"Höjer automatiskt uppdateringsfrekvensen till <xliff:g id="ID_1">%1$d</xliff:g> Hz för visst innehåll. Ökar batteriförbrukningen."</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"Tvinga att den högsta uppdateringsfrekvensen körs"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"Den högsta uppdateringsfrekvensen ger bättre tryckkänslighet och animationskvalitet. Ökar batteriförbrukningen."</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"Blickavkänning"</string>
@@ -1372,6 +1345,8 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"Allmänna inställningar"</string>
<string name="apn_settings" msgid="4295467389400441299">"APN:er"</string>
<string name="apn_edit" msgid="2003683641840248741">"Redigera åtkomstpunkt"</string>
+ <!-- no translation found for apn_add (9069613192201630934) -->
+ <skip />
<string name="apn_not_set" msgid="8246646433109750293">"Ej fastställt"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"Har inte angetts"</string>
<string name="apn_name" msgid="6677695784108157953">"Namn"</string>
@@ -2006,12 +1981,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"Öppna med tillgänglighetsknappen"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"Öppna genom att hålla ned volymknapparna"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"Öppna genom att trycka snabbt tre gånger"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"Tryck snabbt tre gånger på skärmen med två fingrar för att öppna"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"Öppna med rörelse"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"Använda tillgänglighetsrörelser"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"Tryck på tillgänglighetsknappen <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> längst ned på skärmen om du vill använda denna funktion.\n\nByt funktion genom att hålla in tillgänglighetsknappen."</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"Tryck på tillgänglighetsknappen på skärmen om du vill använda den här funktionen."</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"Håll båda volymknapparna nedtryckta om du vill använda den här funktionen."</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"Tryck snabbt tre gånger någonstans på skärmen för att starta och avsluta förstoring."</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"Tryck snabbt tre gånger någonstans på skärmen med två fingrar för att starta och avsluta förstoring."</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"Svep uppåt med två fingrar från skärmens nederkant om du vill använda den här funktionen.\n\nByt funktion genom att svepa uppåt med två fingrar och hålla kvar dem."</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"Svep uppåt med tre fingrar från skärmens nederkant om du vill använda den här funktionen.\n\nByt funktion genom att svepa uppåt med tre fingrar och hålla kvar dem."</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"Svep uppåt med två fingrar från skärmens nederkant om du vill använda en tillgänglighetsfunktion.\n\nByt funktion genom att svepa uppåt med två fingrar och hålla kvar dem."</string>
@@ -2033,12 +2010,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"Håll ned volymknapparna"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"håll ned volymknapparna"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"Håll båda volymknapparna nedtryckta"</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"Skärm för snabbt tryck tre gånger med två fingrar"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"skärm för snabbt tryck tre gånger med två fingrar"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"Tryck snabbt {0,number,integer} gånger på skärmen med två fingrar"</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"Tryck snabbt tre gånger på skärmen"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"tryck snabbt tre gånger på skärmen"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"Tryck snabbt {0,number,integer} gånger på skärmen. Detta kortkommando kan göra enheten långsammare"</string>
@@ -2336,6 +2310,10 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"Om du begränsar bakgrundaktiviteten för en app kanske den inte fungerar som den ska"</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"Appen kan inte begränsas eftersom batterioptimering inte har angetts.\n\nAktivera batterioptimering för att begränsa appen."</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"Hantera batterianvändning"</string>
+ <!-- no translation found for manager_battery_usage_allow_background_usage_title (6294649996820358852) -->
+ <skip />
+ <!-- no translation found for manager_battery_usage_allow_background_usage_summary (8021153755201340819) -->
+ <skip />
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"Obegränsad"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"Optimerad"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"Begränsad"</string>
@@ -3846,6 +3824,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"Tillåt hanteringsåtkomst för alla filer"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"Tillåt att den här appen får läsa, redigera och radera alla filer på enheten och eventuella anslutna lagringsutrymmen. Om du beviljar behörigheten kan appen komma åt filer utan att du informeras."</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"Har åtkomst till alla filer"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"Aviseringar i helskärm"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"Tillåt aviseringar i helskärm från den här appen"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"Tillåt att den här appen visar aviseringar som täcker hela skärmen när enheten är låst. Sådana aviseringar kan användas i appar för att lyfta fram alarm, inkommande samtal och andra brådskande aviseringar."</string>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index e1a5244..8006e6d 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -135,8 +135,11 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"Stylus"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"Kushiriki faili ya sauti"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"Shiriki faili ya sauti"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
- <skip />
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"Simu na kengele"</string>
+ <string name="audio_sharing_streams_category_title" msgid="862958129650324581">"Unganisha kwenye mtiririko wa LE Audio"</string>
+ <string name="audio_sharing_streams_pref_title" msgid="4636293245167657721">"Mitiririko ya maudhui ya sauti iliyo karibu nawe"</string>
+ <string name="audio_sharing_streams_title" msgid="8269455097512153101">"Mitiririko ya maudhui ya sauti"</string>
+ <string name="audio_sharing_streams_qr_code_summary" msgid="4231875597377863735">"Unganisha kwenye mtiririko wa maudhui ya sauti ukitumia msimbo wa QR"</string>
<string name="date_and_time" msgid="1788358029823431692">"Tarehe na saa"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"Seva mbadala"</string>
<string name="proxy_clear_text" msgid="6529658759984031149">"Futa"</string>
@@ -540,24 +543,15 @@
<string name="private_space_title" msgid="7078627930195569767">"Nafasi ya Faragha"</string>
<string name="private_space_summary" msgid="8237652417163408001">"Ficha programu katika folda ya faragha"</string>
<string name="private_space_one_lock_title" msgid="7306547190751832568">"Fungua ukitumia mbinu ya kufunga skrini"</string>
- <!-- no translation found for private_space_hide_title (8687034008994037610) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_title (972581369094289386) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_summary (1052569521186403642) -->
- <skip />
- <!-- no translation found for privatespace_access_header (982809349769470185) -->
- <skip />
- <!-- no translation found for privatespace_search_description (983837656432484282) -->
- <skip />
- <!-- no translation found for privatespace_tap_tile_description (4146608898639668340) -->
- <skip />
- <!-- no translation found for privatespace_unlock_description (4132755357482447360) -->
- <skip />
- <!-- no translation found for privatespace_hide_off_summary (7227778747159633671) -->
- <skip />
- <!-- no translation found for privatespace_hide_on_summary (6136704537527640183) -->
- <skip />
+ <string name="private_space_hide_title" msgid="8687034008994037610">"Ficha wakati umefunga"</string>
+ <string name="privatespace_hide_page_title" msgid="972581369094289386">"Ficha Nafasi ya Faragha wakati umefunga"</string>
+ <string name="privatespace_hide_page_summary" msgid="1052569521186403642">"Ili Nafasi ya Faragha isionekane na wengine wanaotumia kifaa chako, ifiche kwenye orodha ya programu"</string>
+ <string name="privatespace_access_header" msgid="982809349769470185">"Fikia Nafasi ya Faragha wakati imefichwa"</string>
+ <string name="privatespace_search_description" msgid="983837656432484282">"Tafuta \'Nafasi ya Faragha\' kwenye upau wa kutafutia"</string>
+ <string name="privatespace_tap_tile_description" msgid="4146608898639668340">"Gusa kigae cha Nafasi ya Faragha"</string>
+ <string name="privatespace_unlock_description" msgid="4132755357482447360">"Fungua Nafasi yako ya Faragha"</string>
+ <string name="privatespace_hide_off_summary" msgid="7227778747159633671">"Umezima"</string>
+ <string name="privatespace_hide_on_summary" msgid="6136704537527640183">"Umewasha"</string>
<string name="private_space_category_system" msgid="1286843321867285700">"Mfumo"</string>
<string name="private_space_create_title" msgid="47273568884806726">"Buni Nafasi ya Faragha"</string>
<string name="private_space_delete_title" msgid="3075645119800272800">"Futa Nafasi ya Faragha"</string>
@@ -570,54 +564,30 @@
<string name="no_device_lock_summary" msgid="7653477413589207824">"Ili utumie Chumba cha Faragha weka mbinu ya kufunga skrini kwenye kifaa hiki."</string>
<string name="no_device_lock_action_label" msgid="2640487005629001288">"Weka mbinu ya kufunga skrini"</string>
<string name="no_device_lock_cancel" msgid="4412602160321228863">"Ghairi"</string>
- <!-- no translation found for privatespace_cancel_label (362351004019511784) -->
- <skip />
- <!-- no translation found for privatespace_setup_button_label (3696372546231047258) -->
- <skip />
- <!-- no translation found for privatespace_setup_title (177623114624330394) -->
- <skip />
- <!-- no translation found for privatespace_hide_apps_summary (4016518749055602268) -->
- <skip />
- <!-- no translation found for privatespace_how_title (8794102046435526065) -->
- <skip />
- <!-- no translation found for privatespace_access_bottom_text (1075244097441349030) -->
- <skip />
- <!-- no translation found for privatespace_protected_lock_text (7320604832432017423) -->
- <skip />
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_cancel_label" msgid="362351004019511784">"Ghairi"</string>
+ <string name="privatespace_setup_button_label" msgid="3696372546231047258">"Weka mipangilio"</string>
+ <string name="privatespace_setup_title" msgid="177623114624330394">"Weka mipangilio ya Nafasi ya Faragha"</string>
+ <string name="privatespace_hide_apps_summary" msgid="4016518749055602268">"Ficha programu za faragha katika sehemu salama isiyoweza kufikiwa na mtu mwingine"</string>
+ <string name="privatespace_how_title" msgid="8794102046435526065">"Jinsi inavyofanya kazi"</string>
+ <string name="privatespace_access_bottom_text" msgid="1075244097441349030">"Unaweza kufikia Nafasi ya Faragha kwenye sehemu ya chini ya orodha ya programu zako"</string>
+ <string name="privatespace_protected_lock_text" msgid="7320604832432017423">"Programu katika Nafasi ya Faragha zinalindwa kupitia mbinu ya kufunga"</string>
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"Arifa za programu kwenye Nafasi ya Faragha hufichwa wakati imefungwa"</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"Programu za Nafasi ya Faragha hazitaonekana kwenye kidhibiti cha ruhusa, dashibodi ya faragha na mipangilio mingine wakati umefunga Nafasi ya Faragha"</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"Inaweka mipangilio ya Nafasi ya Faragha…"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"Nafasi ya Faragha hulindwa kwa mbinu ya kufunga"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"Maelezo ya matumizi ya programu za Nafasi ya Faragha yamefichwa wakati imefungwa"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"Fikia Nafasi ya Faragha kwenye orodha ya programu zako"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"Imeshindwa kuweka mipangilio ya Nafasi ya Faragha"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"Jaribu tena sasa, au urudi baadaye"</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"Jaribu Tena"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"Ungependa kutumia mbinu ya kufungua skrini?"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"Unaweza kufungua Nafasi ya Faragha kwa mbinu unayotumia kufungua kifaa chako, au kuchagua mbinu tofauti ya kufunga"</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"Tumia mbinu ya kufunga skrini"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"Chagua mbinu mpya ya kufunga"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"Uko tayari kuanza!"</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"Ili ufikie Nafasi ya Faragha, telezesha kidole kuelekea juu kutoka sehemu ya chini ya skrini yako ya kwanza, kisha usogeze chini"</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"Nimemaliza"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"Sogeza chini ili ufikie Nafasi ya Faragha"</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"Unaweza kuongeza hadi alama za vidole <xliff:g id="COUNT">%d</xliff:g>"</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"Umeongeza idadi ya juu inayoruhusiwa ya alama za kidole"</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"Haiwezi kuongeza alama zaidi za kidole"</string>
@@ -1135,8 +1105,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"Endelea kutumia programu ukiwa umekunja"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"Onyesho Laini"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"Hupandisha kiotomatiki kiwango cha kuonyesha upya hadi Hz <xliff:g id="ID_1">%1$d</xliff:g> kwa baadhi ya maudhui. Huongeza matumizi ya betri."</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"Lazimisha kiwango cha juu cha kuonyesha upya"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"Kiwango cha juu kabisa cha kuonyesha upya kwa utendakazi wa mguso ulioboreshwa na ubora wa uhuishaji. Huongeza matumizi ya betri."</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"Utashi wa skrini"</string>
@@ -1372,6 +1341,7 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"Mipangilio ya jumuiya"</string>
<string name="apn_settings" msgid="4295467389400441299">"APN"</string>
<string name="apn_edit" msgid="2003683641840248741">"Badilisha mahali pa kufikia"</string>
+ <string name="apn_add" msgid="9069613192201630934">"Weka mlango wa mtandao"</string>
<string name="apn_not_set" msgid="8246646433109750293">"Haijawekwa"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"Haijawekwa"</string>
<string name="apn_name" msgid="6677695784108157953">"Jina"</string>
@@ -2006,12 +1976,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"Tumia kitufe cha ufikivu kufungua"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"Shikilia vitufe vya sauti ili ufungue"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"Gusa skrini mara tatu ili ufungue"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"Gusa skrini mara tatu kwa vidole viwili ili ufungue"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"Tumia ishara ili ufungue"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"Tumia ishara ya ufikivu"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"Ili utumie kipengele hiki, gusa kitufe cha zana za ufikivu cha <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> katika sehemu ya chini ya skrini yako.\n\nIli ubadilishe kati ya vipengele, gusa na ushikilie kitufe cha zana za ufikivu."</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"Ili utumie kipengele hiki, gusa kitufe cha zana za ufikivu kwenye skrini yako."</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"Ili utumie kipengele hiki, bonyeza na ushikilie vitufe vyote viwili vya sauti."</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"Ili uanzishe na kusimamisha ukuzaji, gusa mara tatu mahali popote kwenye skrini yako."</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"Ili uanze au ukomeshe ukuzaji, gusa mara tatu mahali popote kwenye skrini yako kwa vidole viwili."</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"Ili utumie kipengele hiki, telezesha vidole viwili juu kutoka sehemu ya chini ya skrini.\n\nIli ubadilishe kati ya vipengele, telezesha vidole viwili juu na ushikilie."</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"Ili utumie kipengele hiki, telezesha vidole vitatu juu kutoka sehemu ya chini ya skrini.\n\nIli ubadilishe kati ya vipengele, telezesha vidole vitatu juu na ushikilie."</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"Ili utumie kipengele cha ufikivu, telezesha vidole viwili juu kutoka sehemu ya chini ya skrini.\n\nIli ubadilishe kati ya vipengele, telezesha vidole viwili juu na ushikilie."</string>
@@ -2033,12 +2005,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"Shikilia vitufe vya sauti"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"shikilia vitufe vya sauti"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"Bonyeza na ushikilie vitufe vyote viwili vya sauti"</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"Gusa skrini mara tatu kwa vidole viwili"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"gusa skrini mara tatu kwa vidole viwili"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"Gusa skrini kwa haraka mara {0,number,integer} kwa vidole viwili"</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"Gusa skrini mara tatu"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"gusa skrini mara tatu"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"Gusa skrini mara {0,number,integer} kwa haraka. Huenda njia hii ya mkato ikapunguza kasi ya kifaa chako"</string>
@@ -2336,6 +2305,8 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"Ikiwa utadhibiti shughuli za chini chini za programu, huenda isifanye kazi vizuri"</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"Kwa kuwa programu hii haiboreshi matumizi ya betri, huwezi kuizuia.\n\nIli uizuie, washa kuboresha matumizi ya betri."</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"Dhibiti matumizi ya betri"</string>
+ <string name="manager_battery_usage_allow_background_usage_title" msgid="6294649996820358852">"Ruhusu matumizi ya chinichini"</string>
+ <string name="manager_battery_usage_allow_background_usage_summary" msgid="8021153755201340819">"Washa upate masasisho katika wakati halisi, zima ili uokoe betri"</string>
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"Yasiyodhibitiwa"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"Yaliyoboreshwa"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"Yanayodhibitiwa"</string>
@@ -3846,6 +3817,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"Ruhusu ufikiaji ili idhibiti faili zote"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"Ruhusu programu hii isome, irekebishe na kufuta faili zote kwenye kifaa hiki au nafasi zozote za hifadhi zilizounganishwa. Ukiipa ruhusa, huenda programu ikafikia faili bila ufahamu wako."</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"Inaweza kufikia faili zote"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"Arifa za skrini nzima"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"Ruhusu programu hii ionyeshe arifa kwenye skrini nzima"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"Ruhusu programu hii ionyeshe arifa kwenye skrini nzima ukiwa umefunga kifaa. Programu zinaweza kutumia arifa hizi kuonyesha kengele, simu unazopigiwa au arifa nyingine muhimu."</string>
diff --git a/res/values-ta/strings.xml b/res/values-ta/strings.xml
index e07d36c..3fe2c8b 100644
--- a/res/values-ta/strings.xml
+++ b/res/values-ta/strings.xml
@@ -135,7 +135,14 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"ஸ்டைலஸ்"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"ஆடியோவைப் பகிர்தல்"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"ஆடியோவைப் பகிர்"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"அழைப்புகளும் அலாரங்களும்"</string>
+ <!-- no translation found for audio_sharing_streams_category_title (862958129650324581) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_pref_title (4636293245167657721) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_title (8269455097512153101) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_qr_code_summary (4231875597377863735) -->
<skip />
<string name="date_and_time" msgid="1788358029823431692">"தேதி & நேரம்"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"ப்ராக்ஸி"</string>
@@ -540,24 +547,15 @@
<string name="private_space_title" msgid="7078627930195569767">"தனிப்பட்ட சேமிப்பிடம்"</string>
<string name="private_space_summary" msgid="8237652417163408001">"ஆப்ஸைத் தனிப்பட்ட ஃபோல்டரில் மறைக்கலாம்"</string>
<string name="private_space_one_lock_title" msgid="7306547190751832568">"திரைப் பூட்டைப் பயன்படுத்தி அன்லாக் செய்தல்"</string>
- <!-- no translation found for private_space_hide_title (8687034008994037610) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_title (972581369094289386) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_summary (1052569521186403642) -->
- <skip />
- <!-- no translation found for privatespace_access_header (982809349769470185) -->
- <skip />
- <!-- no translation found for privatespace_search_description (983837656432484282) -->
- <skip />
- <!-- no translation found for privatespace_tap_tile_description (4146608898639668340) -->
- <skip />
- <!-- no translation found for privatespace_unlock_description (4132755357482447360) -->
- <skip />
- <!-- no translation found for privatespace_hide_off_summary (7227778747159633671) -->
- <skip />
- <!-- no translation found for privatespace_hide_on_summary (6136704537527640183) -->
- <skip />
+ <string name="private_space_hide_title" msgid="8687034008994037610">"பூட்டப்பட்டிருக்கும்போது மறைத்தல்"</string>
+ <string name="privatespace_hide_page_title" msgid="972581369094289386">"பூட்டப்பட்டிருக்கும்போது தனிப்பட்ட சேமிப்பிடத்தை மறைத்தல்"</string>
+ <string name="privatespace_hide_page_summary" msgid="1052569521186403642">"சாதனத்தில் உள்ள தனிப்பட்ட சேமிப்பிடத்தைப் பிறர் அறியக்கூடாதெனில், உங்கள் ஆப்ஸ் பட்டியலில் இருந்து அதை மறைக்கலாம்"</string>
+ <string name="privatespace_access_header" msgid="982809349769470185">"மறைக்கப்பட்டிருக்கும்போது தனிப்பட்ட சேமிப்பிடத்தை அணுகுதல்"</string>
+ <string name="privatespace_search_description" msgid="983837656432484282">"தேடல் பட்டியில் \'தனிப்பட்ட சேமிப்பிடம்\' எனத் தேடுங்கள்"</string>
+ <string name="privatespace_tap_tile_description" msgid="4146608898639668340">"தனிப்பட்ட சேமிப்பிடக் கட்டத்தைத் தட்டுங்கள்"</string>
+ <string name="privatespace_unlock_description" msgid="4132755357482447360">"உங்கள் தனிப்பட்ட சேமிப்பிடத்தை அன்லாக் செய்யுங்கள்"</string>
+ <string name="privatespace_hide_off_summary" msgid="7227778747159633671">"முடக்கப்பட்டுள்ளது"</string>
+ <string name="privatespace_hide_on_summary" msgid="6136704537527640183">"இயக்கப்பட்டுள்ளது"</string>
<string name="private_space_category_system" msgid="1286843321867285700">"சிஸ்டம்"</string>
<string name="private_space_create_title" msgid="47273568884806726">"தனிப்பட்ட சேமிப்பிடத்தை உருவாக்குதல்"</string>
<string name="private_space_delete_title" msgid="3075645119800272800">"தனிப்பட்ட சேமிப்பிடத்தை நீக்குதல்"</string>
@@ -570,54 +568,30 @@
<string name="no_device_lock_summary" msgid="7653477413589207824">"தனிப்பட்ட சேமிப்பிடத்தை உபயோகிக்க, திரைப் பூட்டை அமைக்கவும்."</string>
<string name="no_device_lock_action_label" msgid="2640487005629001288">"திரைப் பூட்டை அமை"</string>
<string name="no_device_lock_cancel" msgid="4412602160321228863">"ரத்துசெய்"</string>
- <!-- no translation found for privatespace_cancel_label (362351004019511784) -->
- <skip />
- <!-- no translation found for privatespace_setup_button_label (3696372546231047258) -->
- <skip />
- <!-- no translation found for privatespace_setup_title (177623114624330394) -->
- <skip />
- <!-- no translation found for privatespace_hide_apps_summary (4016518749055602268) -->
- <skip />
- <!-- no translation found for privatespace_how_title (8794102046435526065) -->
- <skip />
- <!-- no translation found for privatespace_access_bottom_text (1075244097441349030) -->
- <skip />
- <!-- no translation found for privatespace_protected_lock_text (7320604832432017423) -->
- <skip />
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_cancel_label" msgid="362351004019511784">"ரத்துசெய்"</string>
+ <string name="privatespace_setup_button_label" msgid="3696372546231047258">"அமை"</string>
+ <string name="privatespace_setup_title" msgid="177623114624330394">"தனிப்பட்ட சேமிப்பிடத்தை அமைத்தல்"</string>
+ <string name="privatespace_hide_apps_summary" msgid="4016518749055602268">"நீங்கள் மட்டுமே அணுகக்கூடிய பாதுகாப்பான இடத்தில் தனிப்பட்ட ஆப்ஸை மறைக்கலாம்"</string>
+ <string name="privatespace_how_title" msgid="8794102046435526065">"இது செயல்படும் விதம்"</string>
+ <string name="privatespace_access_bottom_text" msgid="1075244097441349030">"உங்கள் ஆப்ஸ் பட்டியலின் கீழ்ப்பகுதியில் இருந்து தனிப்பட்ட சேமிப்பிடத்தை அணுகலாம்"</string>
+ <string name="privatespace_protected_lock_text" msgid="7320604832432017423">"தனிப்பட்ட சேமிப்பிடத்தில் உள்ள ஆப்ஸ் ஒரு பூட்டால் பாதுகாக்கப்படுகின்றன"</string>
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"தனிப்பட்ட சேமிப்பிடம் பூட்டப்பட்டிருக்கும்போது அதிலுள்ள ஆப்ஸின் அறிவிப்புகள் மறைக்கப்படும்"</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"தனிப்பட்ட சேமிப்பிடம் பூட்டப்பட்டிருக்கும்போது அதிலுள்ள ஆப்ஸ், அனுமதி நிர்வாகம், தனியுரிமை டாஷ்போர்டு மற்றும் பிற அமைப்புகளில் காட்டப்படாது"</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"தனிப்பட்ட சேமிப்பிடத்தை அமைக்கிறது…"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"தனிப்பட்ட சேமிப்பிடம் பூட்டு மூலம் பாதுகாக்கப்படுகிறது"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"தனிப்பட்ட சேமிப்பிடம் பூட்டப்பட்டிருக்கும்போது அதிலுள்ள ஆப்ஸின் உபயோகத் தகவல்கள் மறைக்கப்படும்"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"ஆப்ஸ் பட்டியலில் உள்ள தனிப்பட்ட சேமிப்பிடத்தை அணுகுதல்"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"தனிப்பட்ட சேமிப்பிடத்தை அமைக்க முடியவில்லை"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"இப்போது முயலவும் அல்லது பிறகு வந்து பார்க்கவும்"</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"மீண்டும் முயல்க"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"அன்லாக் செய்ய திரைப் பூட்டைப் பயன்படுத்தவா?"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"உங்கள் சாதனத்தை அன்லாக் செய்வதுபோலவே தனிப்பட்ட சேமிப்பிடத்தை அன்லாக் செய்யலாம் அல்லது வேறு பூட்டைத் தேர்ந்தெடுக்கலாம்"</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"திரைப் பூட்டைப் பயன்படுத்து"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"புதிய பூட்டைத் தேர்ந்தெடு"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"எல்லாம் தயார்!"</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"தனிப்பட்ட சேமிப்பிடத்தை அணுக, முகப்புத் திரையின் கீழிருந்து மேல்நோக்கி ஸ்வைப் செய்து பின்பு கீழே செல்லவும்"</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"முடிந்தது"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"தனிப்பட்ட சேமிப்பிடத்தை அணுக கீழே செல்லவும்"</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"<xliff:g id="COUNT">%d</xliff:g> கைரேகைகள் வரை சேர்க்கலாம்"</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"அனுமதிக்கப்படும் அதிகபட்சக் கைரேகைகளைச் சேர்த்துவிட்டீர்கள்"</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"மேலும் கைரேகைகளைச் சேர்க்க முடியவில்லை"</string>
@@ -1135,8 +1109,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"மடக்கிய நிலையிலேயே தொடர்ந்து ஆப்ஸைப் பயன்படுத்துதல்"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"சீரான காட்சி"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"சில உள்ளடக்கத்திற்குப் புதுப்பிக்கும் விகிதத்தை <xliff:g id="ID_1">%1$d</xliff:g> Hzக்குத் தானாகவே உயர்த்தும். பேட்டரி உபயோகத்தை அதிகரிக்கும்."</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"கட்டாயமான அதிகபட்ச ரெஃப்ரெஷ் விகிதம்"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"மேம்பட்ட தொடு இயக்கத்திறனுக்கும் அனிமேஷன் தரத்திற்குமான அதிவேக ரெஃப்ரெஷ் விகிதம். இதனால் பேட்டரி உபயோகம் அதிகரிக்கும்."</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"திரை மீது கவனம்"</string>
@@ -1372,6 +1345,8 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"சமூக அமைப்புகள்"</string>
<string name="apn_settings" msgid="4295467389400441299">"APN பட்டியல்"</string>
<string name="apn_edit" msgid="2003683641840248741">"ஆக்சஸ் பாயிண்ட்டைத் திருத்து"</string>
+ <!-- no translation found for apn_add (9069613192201630934) -->
+ <skip />
<string name="apn_not_set" msgid="8246646433109750293">"அமைக்கப்படவில்லை"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"அமைக்கப்படவில்லை"</string>
<string name="apn_name" msgid="6677695784108157953">"பெயர்"</string>
@@ -2006,12 +1981,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"திறக்க அணுகல்தன்மை பட்டனைப் பயன்படுத்துதல்"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"திறக்க ஒலியளவு விசைகளைப் பிடித்திருக்கவும்"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"திறக்க திரையில் 3 முறை தட்டவும்"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"இரண்டு விரல்களால் திரையில் மூன்று முறை தட்டி திறத்தல்"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"திறக்க சைகைகளைப் பயன்படுத்துதல்"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"அணுகல்தன்மை சைகையைப் பயன்படுத்தவும்"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"இந்த அம்சத்தைப் பயன்படுத்த திரையின் கீழ்ப்பகுதியில் உள்ள அணுகல்தன்மை பட்டனை <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> தட்டவும்.\n\nஅம்சங்களுக்கு இடையே மாற, அணுகல்தன்மை பட்டனைத் தொட்டுப் பிடித்திருக்கவும்."</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"இந்த அம்சத்தைப் பயன்படுத்த, உங்கள் திரையிலுள்ள அணுகல்தன்மை பட்டனைத் தட்டுங்கள்."</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"இந்த அம்சத்தைப் பயன்படுத்த ஒலியளவுக்கான விசைகளை அழுத்திப் பிடித்திருக்கவும்."</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"பெரிதாக்குவதைத் தொடங்கவும் நிறுத்தவும், திரையில் எங்காவது மூன்று முறை தட்டவும்."</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"பெரிதாக்குவதைத் தொடங்கவும் நிறுத்தவும், திரையில் எங்காவது இரண்டு விரல்களால் மூன்று முறை தட்டவும்."</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"இந்த அம்சத்தைப் பயன்படுத்த திரையின் கீழிருந்து மேலாக 2 விரல்களால் ஸ்வைப் செய்யவும்.\n\nஅம்சங்களுக்கு இடையே மாற 2 விரல்களால் மேல்நோக்கி ஸ்வைப் செய்து பிடித்திருக்கவும்."</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"இந்த அமசத்தைப் பயன்படுத்த திரையின் கீழிருந்து மேலாக 3 விரல்களால் ஸ்வைப் செய்யவும்.\n\nஅம்சங்களுக்கு இடையே மாற 3 விரல்களால் மேல்நோக்கி ஸ்வைப் செய்து பிடித்திருக்கவும்."</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"அணுகல்தன்மை அம்சத்தைப் பயன்படுத்த திரையின் கீழிருந்து மேலாக 2 விரல்களால் ஸ்வைப் செய்யவும்.\n\nஅம்சங்களுக்கு இடையே மாற 2 விரல்களால் மேல்நோக்கி ஸ்வைப் செய்து பிடித்திருக்கவும்."</string>
@@ -2033,12 +2010,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"ஒலியளவுக்கான விசைகளைப் பிடிக்கவும்"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"ஒலியளவு விசைகளைப் பிடித்திருக்கவும்"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"இரண்டு ஒலியளவு விசைகளையும் அழுத்திப் பிடித்திருக்கவும்"</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"இரண்டு விரல்களால் திரையில் மூன்று முறை தட்டுதல்"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"இரண்டு விரல்களால் திரையில் மூன்று முறை தட்டுதல்"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"இரண்டு விரல்களால் திரையில் {0,number,integer} முறை விரைவாகத் தட்டுங்கள்"</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"திரையில் மூன்று முறை தட்டுதல்"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"திரையில் மூன்று முறை தட்டவும்"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"திரையை விரைவாக {0,number,integer} முறை தட்டவும். இந்த ஷார்ட்கட் உங்கள் சாதனத்தின் வேகத்தைக் குறைக்கக்கூடும்"</string>
@@ -2336,6 +2310,10 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"ஆப்ஸின் பின்னணி செயல்பாட்டைக் கட்டுப்படுத்தினால், சரியாக வேலை செய்யாது."</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"பேட்டரியை மேம்படுத்த அமைக்கப்படவில்லை, எனவே கட்டுப்படுத்த முடியாது.\n\nஆப்ஸை கட்டுப்படுத்த, பேட்டரி மேம்படுத்தலை ஆன் செய்க."</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"பேட்டரி உபயோகத்தை நிர்வகித்தல்"</string>
+ <!-- no translation found for manager_battery_usage_allow_background_usage_title (6294649996820358852) -->
+ <skip />
+ <!-- no translation found for manager_battery_usage_allow_background_usage_summary (8021153755201340819) -->
+ <skip />
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"கட்டுப்பாடற்ற பேட்டரி"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"மேம்படுத்தப்பட்டது"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"வரம்பிடப்பட்டது"</string>
@@ -3846,6 +3824,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"ஃபைல்கள் அனைத்தையும் நிர்வகிப்பதற்கு அனுமதி"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"இந்த சாதனத்திலோ இணைக்கப்பட்டுள்ள சேமிப்பகங்களிலோ உள்ள ஃபைல்கள் அனைத்தையும் படிக்கவும் நீக்கவும் அவற்றில் மாற்றங்களைச் செய்யவும் இந்த ஆப்ஸை அனுமதிக்கும். அனுமதி வழங்கப்படும் பட்சத்தில் உங்களுக்குத் தெரியாமலேயே ஃபைல்களை ஆப்ஸ் அணுகக்கூடும்."</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"அனைத்து ஃபைல்களையும் அணுகமுடிந்த ஆப்ஸ்"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"முழுத்திரை அறிவிப்புகள்"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"இந்த ஆப்ஸிலிருந்து முழுத்திரை அறிவிப்புகளைக் காட்ட அனுமதித்தல்"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"சாதனம் பூட்டப்பட்டிருக்கும்போது முழுத்திரையில் அறிவிப்புகளைக் காட்ட இந்த ஆப்ஸை அனுமதிக்கும். அலாரங்கள், உள்வரும் அழைப்புகள் அல்லது பிற அவசர அறிவிப்புகளைத் தனிப்படுத்திக் காட்ட ஆப்ஸ் இவற்றைப் பயன்படுத்தக்கூடும்."</string>
diff --git a/res/values-te/strings.xml b/res/values-te/strings.xml
index ce60575..eaa63ba 100644
--- a/res/values-te/strings.xml
+++ b/res/values-te/strings.xml
@@ -135,8 +135,11 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"స్టైలస్"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"ఆడియో షేరింగ్"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"ఆడియోను షేర్ చేయండి"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
- <skip />
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"కాల్స్, అలారాలు"</string>
+ <string name="audio_sharing_streams_category_title" msgid="862958129650324581">"LE ఆడియో స్ట్రీమ్కు కనెక్ట్ చేయండి"</string>
+ <string name="audio_sharing_streams_pref_title" msgid="4636293245167657721">"సమీపంలోని ఆడియో స్ట్రీమ్లు"</string>
+ <string name="audio_sharing_streams_title" msgid="8269455097512153101">"ఆడియో స్ట్రీమ్లు"</string>
+ <string name="audio_sharing_streams_qr_code_summary" msgid="4231875597377863735">"QR కోడ్ను ఉపయోగించి ఆడియో స్ట్రీమ్కు కనెక్ట్ చేయండి"</string>
<string name="date_and_time" msgid="1788358029823431692">"తేదీ & సమయం"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"ప్రాక్సీ"</string>
<string name="proxy_clear_text" msgid="6529658759984031149">"క్లియర్ చేయండి"</string>
@@ -568,40 +571,23 @@
<string name="privatespace_how_title" msgid="8794102046435526065">"ఇది ఎలా పని చేస్తుంది"</string>
<string name="privatespace_access_bottom_text" msgid="1075244097441349030">"మీరు మీ యాప్ల జాబితా కింద నుండి ప్రైవేట్ స్పేస్ను యాక్సెస్ చేయవచ్చు"</string>
<string name="privatespace_protected_lock_text" msgid="7320604832432017423">"ప్రైవేట్ స్పేస్లోని యాప్లు లాక్ చేయడం ద్వారా రక్షించబడతాయి"</string>
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"ప్రైవేట్ స్పేస్ లాక్ అయ్యి ఉన్నప్పుడు, అందులోని యాప్ల నుండి నోటిఫికేషన్లు రావు"</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"ప్రైవేట్ స్పేస్ లాక్ అయ్యి ఉన్నప్పుడు, అందులోని యాప్లు అనుమతి మేనేజర్లో, గోప్యతా డ్యాష్బోర్డ్లో, ఇతర సెట్టింగ్లలో కనిపించవు"</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"ప్రైవేట్ స్పేస్ సెటప్ ప్రోగ్రెస్లో ఉంది…"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"ప్రైవేట్ స్పేస్కు లాక్ రక్షణ ఉంటుంది"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"ప్రైవేట్ స్పేస్ లాక్ అయ్యి ఉన్నప్పుడు, అందులోని యాప్లకు సంబంధించిన వినియోగ సమాచారం దాచబడి ఉంటుంది"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"మీ యాప్ల లిస్ట్ నుండి ప్రైవేట్ స్పేస్ను యాక్సెస్ చేయండి"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"ప్రైవేట్ స్పేస్ను సెటప్ చేయడం సాధ్యపడలేదు"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"ఇప్పుడే మళ్లీ ట్రై చేయండి, లేదా తర్వాత తిరిగి రండి"</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"మళ్లీ ట్రై చేయండి"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"అన్లాకింగ్కు స్క్రీన్ లాక్ వాడాలనుకుంటున్నారా?"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"మీరు మీ పరికరాన్ని ఎలా అయితే అన్లాక్ చేస్తారో, అలాగే ప్రైవేట్ స్పేస్ను అన్లాక్ చేయవచ్చు, లేదా వేరే లాక్ను ఎంచుకోవచ్చు"</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"స్క్రీన్ లాక్ను ఉపయోగించండి"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"కొత్త లాక్ను ఎంచుకోండి"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"సెటప్ పూర్తయింది!"</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"ప్రైవేట్ స్పేస్ను యాక్సెస్ చేయడానికి, మీ మొదటి స్క్రీన్ కింది నుండి పైకి స్వైప్ చేసి, ఆపై కిందికి స్క్రోల్ చేయండి"</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"పూర్తయింది"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"ప్రైవేట్ స్పేస్ యాక్సెస్ చేయడానికి కిందికి స్క్రోల్ చేయండి"</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"మీరు గరిష్ఠంగా <xliff:g id="COUNT">%d</xliff:g> వేలిముద్రలను జోడించవచ్చు"</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"మీరు గరిష్ట సంఖ్యలో వేలిముద్రలను జోడించారు"</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"మరిన్ని వేలిముద్రలను జోడించడం సాధ్యపడదు"</string>
@@ -1119,8 +1105,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"ఫోల్డ్లో ఉన్న యాప్లను ఉపయోగించడం కొనసాగించండి"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"స్మూత్ డిస్ప్లే"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"కొంత కంటెంట్ విషయంలో, రిఫ్రెష్ రేటును ఆటోమేటిక్గా <xliff:g id="ID_1">%1$d</xliff:g> Hz వరకు పెంచుతుంది. బ్యాటరీ వినియోగం పెరుగుతుంది."</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"ఫోర్స్ పీక్ రిఫ్రెష్ రేటు"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"మెరుగైన స్పర్శ ప్రతిస్పందన & యానిమేషన్ క్వాలిటీ కోసం అత్యధిక రిఫ్రెష్ రేటు. ఇది బ్యాటరీ వినియోగం పెరిగేలా చేస్తుంది."</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"స్క్రీన్ అటెన్షన్"</string>
@@ -1356,6 +1341,7 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"కమ్యూనల్ సెట్టింగ్లు"</string>
<string name="apn_settings" msgid="4295467389400441299">"APNలు"</string>
<string name="apn_edit" msgid="2003683641840248741">"యాక్సెస్ పాయింట్ను ఎడిట్ చేయండి"</string>
+ <string name="apn_add" msgid="9069613192201630934">"యాక్సెస్ పాయింట్ను జోడించండి"</string>
<string name="apn_not_set" msgid="8246646433109750293">"సెట్ చేయలేదు"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"సెట్ చేయలేదు"</string>
<string name="apn_name" msgid="6677695784108157953">"పేరు"</string>
@@ -1990,12 +1976,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"తెరవడానికి యాక్సెసిబిలిటీ బటన్ను ఉపయోగించండి"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"తెరవడానికి వాల్యూమ్ కీలను పట్టుకుని అలాగే ఉండండి"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"తెరవడానికి స్క్రీన్పై మూడు సార్లు ట్యాప్ చేయండి"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"తెరవడానికి రెండు వేళ్లతో స్క్రీన్ను మూడుసార్లు ట్యాప్ చేయండి"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"తెరవడానికి సంజ్ఞను ఉపయోగించండి"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"యాక్సెసిబిలిటీ సంజ్ఞను ఉపయోగించండి"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"ఈ ఫీచర్ను ఉపయోగించడానికి, మీ స్క్రీన్ దిగువన ఉన్న యాక్సెసిబిలిటీ బటన్ <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g>ను ట్యాప్ చేయండి.\n\nఫీచర్ల మధ్య స్విచ్ అవడానికి, యాక్సెసిబిలిటీ బటన్ను నొక్కి & పట్టుకోండి."</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"ఈ ఫీచర్ను ఉపయోగించడానికి, మీ స్క్రీన్ మీద ఉన్న యాక్సెసిబిలిటీ బటన్ను ట్యాప్ చేయండి."</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"ఈ ఫీచర్ను ఉపయోగించడానికి, రెండు వాల్యూమ్ కీలను నొక్కి, పట్టుకోండి."</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"మ్యాగ్నిఫికేషన్ను ప్రారంభించడానికి అలాగే ఆపడానికి, మీ స్క్రీన్పై ఎక్కడైనా మూడు సార్లు ట్యాప్ చేయండి."</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"మ్యాగ్నిఫికేషన్ను ప్రారంభించడానికి, ఆపడానికి స్క్రీన్పై ఎక్కడైనా 2 వేళ్లతో 3 సార్లు ట్యాప్ చేయండి."</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"ఈ ఫీచర్ను ఉపయోగించడానికి, స్క్రీన్ దిగువ నుండి 2 వేళ్లతో పైకి స్వైప్ చేయండి.\n\nఫీచర్ల మధ్య స్విచ్ అవడానికి, 2 వేళ్లతో పైకి స్వైప్ చేసి పట్టుకోండి."</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"ఈ ఫీచర్ను ఉపయోగించడానికి, స్క్రీన్ దిగువ నుండి 3 వేళ్లతో పైకి స్వైప్ చేయండి.\n\nఫీచర్ల మధ్య స్విచ్ అవడానికి, 3 వేళ్లతో పైకి స్వైప్ చేసి పట్టుకోండి."</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"యాక్సెస్ సౌలభ్య ఫీచర్లను ఉపయోగించడానికి, స్క్రీన్ దిగువ నుండి 2 వేళ్లతో పైకి స్వైప్ చేయండి.\n\nఫీచర్ల మధ్య స్విచ్ అవడానికి, 2 వేళ్లతో పైకి స్వైప్ చేసి పట్టుకోండి."</string>
@@ -2017,12 +2005,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"వాల్యూమ్ కీలను నొక్కి ఉంచండి"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"వాల్యూమ్ కీలను పట్టుకుని అలాగే ఉండండి"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"వాల్యూమ్ కీలు రెండింటినీ నొక్కి పట్టుకోండి"</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"రెండు వేళ్లతో స్క్రీన్ను మూడుసార్లు ట్యాప్ చేయండి"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"రెండు వేళ్లతో స్క్రీన్ను మూడుసార్లు ట్యాప్ చేయండి"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"రెండు వేళ్లతో స్క్రీన్ను {0,number,integer} సార్లు ఫాస్ట్గా ట్యాప్ చేయండి"</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"స్క్రీన్పై మూడు సార్లు నొక్కండి"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"స్క్రీన్పై మూడు సార్లు ట్యాప్ చేయండి"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"స్క్రీన్ను {0,number,integer} సార్లు త్వరగా ట్యాప్ చేయండి. ఈ షార్ట్కట్ వల్ల మీ పరికరం పనితీరు నెమ్మదించవచ్చు"</string>
@@ -2320,6 +2305,8 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"మీరు యాప్ నేపథ్య యాక్టివిటీని పరిమితం చేస్తే, అది సరిగ్గా పని చేయకపోవచ్చు."</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"ఈ యాప్ బ్యాటరీని ఆప్టిమైజ్ చేయికి సెట్ చేయబడలేదు కనుక, దీన్ని మీరు పరిమితం చేయలేరు.\n\nయాప్ను పరిమితం చేయడానికి, మొదట బ్యాటరీ ఆప్టిమైజేషన్ను ఆన్ చేయండి."</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"బ్యాటరీ వినియోగాన్ని మేనేజ్ చేయండి"</string>
+ <string name="manager_battery_usage_allow_background_usage_title" msgid="6294649996820358852">"బ్యాక్గ్రౌండ్ వినియోగాన్ని అనుమతించండి"</string>
+ <string name="manager_battery_usage_allow_background_usage_summary" msgid="8021153755201340819">"రియల్-టైమ్ అప్డేట్ల కోసం ఎనేబుల్ చేయండి, బ్యాటరీని సేవ్ చేయడానికి డిజేబుల్ చేయండి"</string>
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"అపరిమిత"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"ఆప్టిమైజ్ చేయబడినది"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"పరిమితం చేయబడిన సెట్టింగ్లు"</string>
@@ -3830,6 +3817,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"అన్ని ఫైళ్లను మేనేజ్ చేయడానికి అనుమతించండి"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"ఈ పరికరంలో, లేదా కనెక్ట్ చేయబడిన ఏవైనా స్టోరేజ్ వాల్యూమ్లలో, అన్ని ఫైళ్లను చదవడానికి, మార్చడానికి, తొలగించడానికి ఈ యాప్నకు అనుమతిని ఇవ్వండి. అటువంటి అనుమతిని మీరు మంజూరు చేస్తే, మీకు ప్రత్యేకంగా తెలియపరచకుండానే మీ ఫైళ్లను యాప్, యాక్సెస్ చేయవచ్చు."</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"అన్ని ఫైళ్లను యాక్సెస్ చేయగలవు"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"ఫుల్ స్క్రీన్ నోటిఫికేషన్లు"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"ఈ యాప్ నుండి ఫుల్ స్క్రీన్ నోటిఫికేషన్లను అనుమతించండి"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"పరికరం లాక్లో ఉన్నప్పుడు నోటిఫికేషన్లను చూపడానికి ఈ యాప్ను అనుమతించండి. ఈ నోటిఫికేషన్లు ఫుల్ స్క్రీన్లో కనిపిస్తాయి. అలారాలు, ఇన్కమింగ్ కాల్స్ లేదా ఇతర అత్యవసర నోటిఫికేషన్లను హైలైట్ చేయడానికి యాప్లు వీటిని ఉపయోగించవచ్చు."</string>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index 356a6aa..71cb6bd 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -135,8 +135,11 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"สไตลัส"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"การแชร์เสียง"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"แชร์เสียง"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
- <skip />
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"การโทรและการปลุก"</string>
+ <string name="audio_sharing_streams_category_title" msgid="862958129650324581">"เชื่อมต่อกับสตรีม LE Audio"</string>
+ <string name="audio_sharing_streams_pref_title" msgid="4636293245167657721">"สตรีมเสียงที่อยู่ใกล้เคียง"</string>
+ <string name="audio_sharing_streams_title" msgid="8269455097512153101">"สตรีมเสียง"</string>
+ <string name="audio_sharing_streams_qr_code_summary" msgid="4231875597377863735">"เชื่อมต่อกับสตรีมเสียงโดยใช้คิวอาร์โค้ด"</string>
<string name="date_and_time" msgid="1788358029823431692">"วันที่และเวลา"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"พร็อกซี"</string>
<string name="proxy_clear_text" msgid="6529658759984031149">"ล้างข้อมูล"</string>
@@ -540,24 +543,15 @@
<string name="private_space_title" msgid="7078627930195569767">"พื้นที่ส่วนตัว"</string>
<string name="private_space_summary" msgid="8237652417163408001">"ซ่อนแอปในโฟลเดอร์ส่วนตัว"</string>
<string name="private_space_one_lock_title" msgid="7306547190751832568">"ปลดล็อกโดยใช้ล็อกหน้าจอ"</string>
- <!-- no translation found for private_space_hide_title (8687034008994037610) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_title (972581369094289386) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_summary (1052569521186403642) -->
- <skip />
- <!-- no translation found for privatespace_access_header (982809349769470185) -->
- <skip />
- <!-- no translation found for privatespace_search_description (983837656432484282) -->
- <skip />
- <!-- no translation found for privatespace_tap_tile_description (4146608898639668340) -->
- <skip />
- <!-- no translation found for privatespace_unlock_description (4132755357482447360) -->
- <skip />
- <!-- no translation found for privatespace_hide_off_summary (7227778747159633671) -->
- <skip />
- <!-- no translation found for privatespace_hide_on_summary (6136704537527640183) -->
- <skip />
+ <string name="private_space_hide_title" msgid="8687034008994037610">"ซ่อนเมื่อล็อก"</string>
+ <string name="privatespace_hide_page_title" msgid="972581369094289386">"ซ่อนพื้นที่ส่วนตัวเมื่อล็อกไว้"</string>
+ <string name="privatespace_hide_page_summary" msgid="1052569521186403642">"คุณซ่อนพื้นที่ส่วนตัวจากรายการแอปได้ เพื่อไม่ให้คนอื่นรู้ว่ามีพื้นที่ส่วนตัวอยู่ในอุปกรณ์ของคุณ"</string>
+ <string name="privatespace_access_header" msgid="982809349769470185">"เข้าถึงพื้นที่ส่วนตัวเมื่อซ่อนไว้"</string>
+ <string name="privatespace_search_description" msgid="983837656432484282">"ค้นหา \"พื้นที่ส่วนตัว\" ในแถบค้นหา"</string>
+ <string name="privatespace_tap_tile_description" msgid="4146608898639668340">"แตะการ์ดพื้นที่ส่วนตัว"</string>
+ <string name="privatespace_unlock_description" msgid="4132755357482447360">"ปลดล็อกพื้นที่ส่วนตัว"</string>
+ <string name="privatespace_hide_off_summary" msgid="7227778747159633671">"ปิด"</string>
+ <string name="privatespace_hide_on_summary" msgid="6136704537527640183">"เปิด"</string>
<string name="private_space_category_system" msgid="1286843321867285700">"ระบบ"</string>
<string name="private_space_create_title" msgid="47273568884806726">"สร้างพื้นที่ส่วนตัว"</string>
<string name="private_space_delete_title" msgid="3075645119800272800">"ลบพื้นที่ส่วนตัว"</string>
@@ -570,54 +564,30 @@
<string name="no_device_lock_summary" msgid="7653477413589207824">"หากต้องการใช้พื้นที่ส่วนตัว ให้ตั้งการล็อกหน้าจอในอุปกรณ์นี้"</string>
<string name="no_device_lock_action_label" msgid="2640487005629001288">"ตั้งล็อกหน้าจอ"</string>
<string name="no_device_lock_cancel" msgid="4412602160321228863">"ยกเลิก"</string>
- <!-- no translation found for privatespace_cancel_label (362351004019511784) -->
- <skip />
- <!-- no translation found for privatespace_setup_button_label (3696372546231047258) -->
- <skip />
- <!-- no translation found for privatespace_setup_title (177623114624330394) -->
- <skip />
- <!-- no translation found for privatespace_hide_apps_summary (4016518749055602268) -->
- <skip />
- <!-- no translation found for privatespace_how_title (8794102046435526065) -->
- <skip />
- <!-- no translation found for privatespace_access_bottom_text (1075244097441349030) -->
- <skip />
- <!-- no translation found for privatespace_protected_lock_text (7320604832432017423) -->
- <skip />
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_cancel_label" msgid="362351004019511784">"ยกเลิก"</string>
+ <string name="privatespace_setup_button_label" msgid="3696372546231047258">"ตั้งค่า"</string>
+ <string name="privatespace_setup_title" msgid="177623114624330394">"ตั้งค่าพื้นที่ส่วนตัว"</string>
+ <string name="privatespace_hide_apps_summary" msgid="4016518749055602268">"ซ่อนแอปส่วนตัวในพื้นที่ปลอดภัยที่มีเพียงคุณเท่านั้นที่เข้าถึงได้"</string>
+ <string name="privatespace_how_title" msgid="8794102046435526065">"วิธีการทำงาน"</string>
+ <string name="privatespace_access_bottom_text" msgid="1075244097441349030">"คุณเข้าถึงพื้นที่ส่วนตัวได้จากด้านล่างของรายชื่อแอป"</string>
+ <string name="privatespace_protected_lock_text" msgid="7320604832432017423">"แอปในพื้นที่ส่วนตัวได้รับการปกป้องโดยการล็อก"</string>
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"การแจ้งเตือนจากแอปในพื้นที่ส่วนตัวจะถูกซ่อนเมื่อมีการล็อกไว้"</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"แอปพื้นที่ส่วนตัวจะไม่ปรากฏในเครื่องมือจัดการสิทธิ์ แดชบอร์ดความเป็นส่วนตัว และการตั้งค่าอื่นๆ เมื่อมีการล็อกพื้นที่ส่วนตัวไว้"</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"กำลังตั้งค่าพื้นที่ส่วนตัว…"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"พื้นที่ส่วนตัวได้รับการปกป้องโดยการล็อก"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"ข้อมูลการใช้งานสำหรับแอปพื้นที่ส่วนตัวจะถูกซ่อนเมื่อมีการล็อกไว้"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"เข้าถึงพื้นที่ส่วนตัวจากรายชื่อแอป"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"ตั้งค่าพื้นที่ส่วนตัวไม่ได้"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"ลองอีกครั้งตอนนี้ หรือกลับมาภายหลัง"</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"ลองอีกครั้ง"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"ใช้การล็อกหน้าจอเพื่อปลดล็อกใช่ไหม"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"คุณจะปลดล็อกพื้นที่ส่วนตัวได้โดยใช้วิธีเดียวกับที่คุณปลดล็อกอุปกรณ์ หรือเลือกการล็อกอื่น"</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"ใช้การล็อกหน้าจอ"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"เลือกการล็อกใหม่"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"เรียบร้อยแล้ว"</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"หากต้องการเข้าถึงพื้นที่ส่วนตัว ให้ปัดขึ้นจากด้านล่างของหน้าจอหลัก แล้วเลื่อนลง"</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"เสร็จสิ้น"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"เลื่อนลงเพื่อเข้าถึงพื้นที่ส่วนตัว"</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"คุณสามารถเพิ่มได้ถึง <xliff:g id="COUNT">%d</xliff:g> ลายนิ้วมือ"</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"คุณได้เพิ่มลายนิ้วมือถึงขีดจำกัดสูงสุดแล้ว"</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"เพิ่มลายนิ้วมืออีกไม่ได้แล้ว"</string>
@@ -1135,8 +1105,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"ใช้แอปต่อได้เมื่อพับ"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"Smooth Display"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"เพิ่มอัตราการรีเฟรชไปจนถึง <xliff:g id="ID_1">%1$d</xliff:g> Hz โดยอัตโนมัติสำหรับเนื้อหาบางรายการ เพิ่มการใช้งานแบตเตอรี่"</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"บังคับอัตราการรีเฟรชเป็นสูงสุด"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"อัตราการรีเฟรชสูงสุดสำหรับการตอบสนองต่อการแตะและคุณภาพของภาพเคลื่อนไหวที่ดียิ่งขึ้น เพิ่มการใช้งานแบตเตอรี่"</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"การจดจ่อที่หน้าจอ"</string>
@@ -1372,6 +1341,7 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"การตั้งค่าส่วนกลาง"</string>
<string name="apn_settings" msgid="4295467389400441299">"APN"</string>
<string name="apn_edit" msgid="2003683641840248741">"แก้ไขจุดเข้าใช้งาน"</string>
+ <string name="apn_add" msgid="9069613192201630934">"เพิ่มจุดเข้าใช้งาน"</string>
<string name="apn_not_set" msgid="8246646433109750293">"ไม่ได้ตั้งค่า"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"ไม่ได้ตั้งค่า"</string>
<string name="apn_name" msgid="6677695784108157953">"ชื่อ"</string>
@@ -2006,12 +1976,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"ใช้ปุ่มการช่วยเหลือพิเศษเพื่อเปิด"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"กดปุ่มปรับระดับเสียงค้างไว้เพื่อเปิด"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"แตะหน้าจอ 3 ครั้งเพื่อเปิด"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"ใช้ 2 นิ้วแตะหน้าจอ 3 ครั้งเพื่อเปิด"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"ใช้ท่าทางสัมผัสเพื่อเปิด"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"ใช้ท่าทางสัมผัสการช่วยเหลือพิเศษ"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"หากต้องการใช้ฟีเจอร์นี้ ให้แตะปุ่มการช่วยเหลือพิเศษ <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> ที่ด้านล่างของหน้าจอ\n\nหากต้องการสลับระหว่างฟีเจอร์ต่างๆ ให้แตะปุ่มการช่วยเหลือพิเศษค้างไว้"</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"หากต้องการใช้ฟีเจอร์นี้ ให้แตะปุ่มการช่วยเหลือพิเศษบนหน้าจอ"</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"หากต้องการใช้ฟีเจอร์นี้ ให้กดปุ่มปรับระดับเสียงทั้ง 2 ปุ่มค้างไว้"</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"หากต้องการเริ่มหรือหยุดการขยาย ให้แตะ 3 ครั้งที่ใดก็ได้บนหน้าจอ"</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"หากต้องการเริ่มหรือหยุดการขยาย ให้ใช้ 2 นิ้วแตะ 3 ครั้งที่ใดก็ได้บนหน้าจอ"</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"หากต้องการใช้ฟีเจอร์นี้ ให้ใช้ 2 นิ้วเลื่อนขึ้นจากด้านล่างของหน้าจอ\n\nหากต้องการสลับระหว่างฟีเจอร์ต่างๆ ให้ใช้ 2 นิ้วเลื่อนขึ้นแล้วค้างไว้"</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"หากต้องการใช้ฟีเจอร์นี้ ให้ใช้ 3 นิ้วเลื่อนขึ้นจากด้านล่างของหน้าจอ\n\nหากต้องการสลับระหว่างฟีเจอร์ต่างๆ ให้ใช้ 3 นิ้วเลื่อนขึ้นแล้วค้างไว้"</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"หากต้องการใช้ฟีเจอร์การช่วยเหลือพิเศษ ให้ใช้ 2 นิ้วเลื่อนขึ้นจากด้านล่างของหน้าจอ\n\nหากต้องการสลับระหว่างฟีเจอร์ต่างๆ ให้ใช้ 2 นิ้วเลื่อนขึ้นแล้วค้างไว้"</string>
@@ -2033,12 +2005,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"กดปุ่มปรับระดับเสียงค้างไว้"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"กดปุ่มปรับระดับเสียงค้างไว้"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"กดปุ่มปรับระดับเสียงทั้ง 2 ปุ่มค้างไว้"</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"ใช้ 2 นิ้วแตะหน้าจอ 3 ครั้ง"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"ใช้ 2 นิ้วแตะหน้าจอ 3 ครั้ง"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"ใช้ 2 นิ้วแตะหน้าจอ {0,number,integer} ครั้งเร็วๆ"</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"แตะหน้าจอ 3 ครั้ง"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"แตะหน้าจอ 3 ครั้ง"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"แตะหน้าจอเร็วๆ {0,number,integer} ครั้ง ทางลัดนี้อาจทำให้อุปกรณ์ทำงานช้าลง"</string>
@@ -2336,6 +2305,8 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"แอปอาจทำงานผิดพลาดหากคุณจำกัดกิจกรรมในพื้นหลัง"</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"เนื่องจากแอปนี้ไม่ได้ตั้งค่าให้เพิ่มประสิทธิภาพแบตเตอรี่ คุณจึงจำกัดการใช้งานไม่ได้\n\nหากต้องการจำกัด ให้เปิดการเพิ่มประสิทธิภาพแบตเตอรี่ก่อน"</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"จัดการการใช้งานแบตเตอรี่"</string>
+ <string name="manager_battery_usage_allow_background_usage_title" msgid="6294649996820358852">"อนุญาตการใช้งานในเบื้องหลัง"</string>
+ <string name="manager_battery_usage_allow_background_usage_summary" msgid="8021153755201340819">"เปิดใช้เพื่อให้อัปเดตแบบเรียลไทม์ ปิดใช้เพื่อประหยัดแบตเตอรี่"</string>
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"ไม่จำกัด"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"เพิ่มประสิทธิภาพ"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"จำกัด"</string>
@@ -3846,6 +3817,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"อนุญาตให้เข้าถึงเพื่อจัดการไฟล์ทั้งหมด"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"อนุญาตให้แอปนี้อ่าน แก้ไข และลบไฟล์ทั้งหมดในอุปกรณ์นี้หรือวอลุ่มของพื้นที่เก็บข้อมูลใดๆ ที่เชื่อมต่อ หากได้รับอนุญาต แอปอาจเข้าถึงไฟล์ได้โดยที่คุณไม่ทราบอย่างชัดแจ้ง"</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"เข้าถึงไฟล์ทั้งหมดได้"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"การแจ้งเตือนแบบเต็มหน้าจอ"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"อนุญาตให้แอปนี้แสดงการแจ้งเตือนแบบเต็มหน้าจอ"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"อนุญาตให้แอปนี้แสดงการแจ้งเตือนได้เต็มหน้าจอเมื่ออุปกรณ์ล็อกอยู่ แอปอาจใช้การแจ้งเตือนเหล่านี้เพื่อให้เห็นการปลุก สายเรียกเข้า หรือการแจ้งเตือนอื่นๆ ที่เร่งด่วนได้อย่างเด่นชัด"</string>
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index d4f457a..0de8d87 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -135,8 +135,11 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"Stylus"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"Pagbabahagi ng audio"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"Ibahagi ang Audio"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
- <skip />
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"Mga tawag at alarm"</string>
+ <string name="audio_sharing_streams_category_title" msgid="862958129650324581">"Kumonekta sa isang LE audio stream"</string>
+ <string name="audio_sharing_streams_pref_title" msgid="4636293245167657721">"Mga audio stream sa malapit"</string>
+ <string name="audio_sharing_streams_title" msgid="8269455097512153101">"Mga audio stream"</string>
+ <string name="audio_sharing_streams_qr_code_summary" msgid="4231875597377863735">"Kumonekta sa isang audio stream gamit ang QR code"</string>
<string name="date_and_time" msgid="1788358029823431692">"Petsa at oras"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"Proxy"</string>
<string name="proxy_clear_text" msgid="6529658759984031149">"I-clear"</string>
@@ -568,40 +571,23 @@
<string name="privatespace_how_title" msgid="8794102046435526065">"Paano ito gumagana"</string>
<string name="privatespace_access_bottom_text" msgid="1075244097441349030">"Puwede mong i-access ang Pribadong Space mula sa ibaba ng iyong listahan ng mga app"</string>
<string name="privatespace_protected_lock_text" msgid="7320604832432017423">"Pinoprotektahan ang mga app sa Pribadong Space ng isang lock"</string>
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"Nakatago ang mga notification mula sa mga app sa Pribadong Space kapag naka-lock ito"</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"Hindi lalabas ang mga app sa Pribadong Space sa manager ng pahintulot, privacy dashboard, at iba pang setting kapag naka-lock ang Pribadong Space"</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"Sine-set up ang Pribadong Space…"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"Protektado ng lock ang Pribadong Space"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"Nakatago ang impormasyon ng paggamit para sa mga app sa Pribadong Space kapag naka-lock ito"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"I-access ang Pribadong Space mula sa listahan ng mga app mo"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"Hindi ma-set up ang Pribadong Space"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"Subukan ulit ngayon, o bumalik sa ibang pagkakataon"</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"Subukan Ulit"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"Gamitin ang lock ng screen para i-unlock?"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"Puwede mong i-unlock ang Pribadong Space sa parehong paraan kung paano mo i-unlock ang iyong device, o pumili ng ibang lock"</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"Gumamit ng lock ng screen"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"Pumili ng bagong lock"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"Handa na lahat!"</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"Para ma-access ang Pribadong Space, mag-swipe pataas mula sa ibaba ng home screen mo, pagkatapos ay mag-scroll pababa"</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"Tapos na"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"Mag-scroll pababa para ma-access ang Pribadong Space"</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"Puwede kang magdagdag ng hanggang <xliff:g id="COUNT">%d</xliff:g> (na) fingerprint"</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"Naidagdag mo na ang maximum na bilang ng mga fingerprint"</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"Hindi na makapagdagdag ng higit pang fingerprint"</string>
@@ -1119,8 +1105,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"Magpatuloy sa paggamit ng mga app kapag naka-fold"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"Smooth na Display"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"Awtomatikong tinataasan ang rate ng pag-refresh hanggang <xliff:g id="ID_1">%1$d</xliff:g> Hz para sa ilang content. Nakakadagdag sa paggamit ng baterya."</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"Puwersahin sa pinakamataas na rate ng pag-refresh"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"Pinakamataas na rate ng pag-refresh para sa pinahusay na pagiging responsive ng pagpindot at kalidad ng animation. Pinapalakas ang paggamit ng baterya."</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"Atensyon sa screen"</string>
@@ -1356,6 +1341,7 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"Mga communal setting"</string>
<string name="apn_settings" msgid="4295467389400441299">"Mga APN"</string>
<string name="apn_edit" msgid="2003683641840248741">"I-edit ang access point"</string>
+ <string name="apn_add" msgid="9069613192201630934">"Magdagdag ng access point"</string>
<string name="apn_not_set" msgid="8246646433109750293">"Hindi nakatakda"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"Hindi nakatakda"</string>
<string name="apn_name" msgid="6677695784108157953">"Pangalan"</string>
@@ -1990,12 +1976,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"Gamitin ang button ng accessibility para buksan"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"I-hold ang mga volume key para buksan"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"I-triple tap ang screen para buksan"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"I-triple tap ang screen gamit ang dalawang daliri para buksan"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"Gumamit ng galaw para buksan"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"Gamitin ang galaw para sa accessibility"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"Para magamit ang feature na ito, i-tap ang button ng accessibility <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> sa ibaba ng iyong screen.\n\nPara magpalipat-lipat sa mga feature, pindutin nang matagal ang button ng accessibility."</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"Para gamitin ang feature na ito, i-tap ang button ng accessibility sa iyong screen."</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"Para magamit ang feature na ito, pindutin nang matagal ang parehong volume key."</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"Para magsimula at huminto sa pag-magnify, mag-tap nang tatlong beses kahit saan sa iyong screen."</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"Para simulan at ihinto ang pag-magnify, mag-triple tap kahit saan sa screen mo gamit ang dalawang daliri."</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"Para magamit ang feature na ito, mag-swipe pataas mula sa ibaba ng screen gamit ang 2 daliri.\n\nPara magpalipat-lipat sa mga feature, mag-swipe pataas gamit ang 2 daliri at i-hold ang mga ito."</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"Para magamit ang feature na ito, mag-swipe pataas mula sa ibaba ng sceen gamit ang 3 daliri.\n\nPara magpalipat-lipat sa mga feature, mag-swipe pataas gamit ang 3 daliri at i-hold ang mga ito."</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"Para gumamit ng feature ng pagiging naa-access, mag-swipe pataas mula sa ibaba ng screen gamit ang 2 daliri.\n\nPara magpalipat-lipat sa mga feature, mag-swipe pataas gamit ang 2 daliri at i-hold ang mga ito."</string>
@@ -2017,12 +2005,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"I-hold ang mga volume key"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"i-hold ang mga volume key"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"Pindutin nang matagal ang parehong volume key"</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"I-triple tap ang screen gamit ang dalawang daliri"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"i-triple tap ang screen gamit ang dalawang daliri"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"Mabilis na i-tap ang screen nang {0,number,integer} (na) beses gamit ang dalawang daliri"</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"I-triple tap ang screen"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"i-triple tap ang screen"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"Mabilis na i-tap ang screen nang {0,number,integer} beses. Posibleng mapabagal ng shortcut na ito ang iyong device"</string>
@@ -2320,6 +2305,8 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"Kung lilimitahan mo ang aktibidad sa background ng app, maaari itong gumana nang hindi tama"</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"Hindi nakatakda ang app na mag-optimize ng baterya kaya hindi ito malilimitahan.\n\nPara malimitahan, i-on ang battery optimization."</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"Pamahalaan ang paggamit ng baterya"</string>
+ <string name="manager_battery_usage_allow_background_usage_title" msgid="6294649996820358852">"Payagan ang paggamit sa background"</string>
+ <string name="manager_battery_usage_allow_background_usage_summary" msgid="8021153755201340819">"I-enable para sa mga real-time na update, i-disable para makatipid sa baterya"</string>
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"Hindi pinaghihigpitan"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"Naka-optimize"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"Limitado"</string>
@@ -3830,6 +3817,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"Payagan para mapamahalaan ang lahat ng file"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"Payagan ang app na ito na basahin, baguhin, at i-delete ang lahat ng file sa device na ito o sa anumang nakakonektang storage volume. Kung pagbibigyan ito, puwedeng mag-access ng mga file ang app nang hindi mo nalalaman."</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"Makaka-access sa lahat ng file"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"Mga full screen na notification"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"Payagan ang mga full screen na notification mula sa app na ito"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"Payagan ang app na ito na magpakita ng mga notification na sakop ang buong screen kapag naka-lock ang device. Puwedeng gamitin ng mga app ang mga ito para mag-highlight ng mga alarm, papasok na tawag, o iba pang agarang notification."</string>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index ecfdc00..7ae8b1a 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -135,7 +135,14 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"Ekran kalemi"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"Ses paylaşımı"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"Sesi paylaş"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"Aramalar ve alarmlar"</string>
+ <!-- no translation found for audio_sharing_streams_category_title (862958129650324581) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_pref_title (4636293245167657721) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_title (8269455097512153101) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_qr_code_summary (4231875597377863735) -->
<skip />
<string name="date_and_time" msgid="1788358029823431692">"Tarih ve saat"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"Proxy"</string>
@@ -540,24 +547,15 @@
<string name="private_space_title" msgid="7078627930195569767">"Gizli Alan"</string>
<string name="private_space_summary" msgid="8237652417163408001">"Uygulamalar gizli klasörde gizlenir"</string>
<string name="private_space_one_lock_title" msgid="7306547190751832568">"Ekran kilidini kullanarak kilidi aç"</string>
- <!-- no translation found for private_space_hide_title (8687034008994037610) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_title (972581369094289386) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_summary (1052569521186403642) -->
- <skip />
- <!-- no translation found for privatespace_access_header (982809349769470185) -->
- <skip />
- <!-- no translation found for privatespace_search_description (983837656432484282) -->
- <skip />
- <!-- no translation found for privatespace_tap_tile_description (4146608898639668340) -->
- <skip />
- <!-- no translation found for privatespace_unlock_description (4132755357482447360) -->
- <skip />
- <!-- no translation found for privatespace_hide_off_summary (7227778747159633671) -->
- <skip />
- <!-- no translation found for privatespace_hide_on_summary (6136704537527640183) -->
- <skip />
+ <string name="private_space_hide_title" msgid="8687034008994037610">"Kilitli olduğunda gizle"</string>
+ <string name="privatespace_hide_page_title" msgid="972581369094289386">"Kilitli olduğunda gizli alanı gizle"</string>
+ <string name="privatespace_hide_page_summary" msgid="1052569521186403642">"Başkalarının, cihazınızda gizli alan olduğunu bilmesini önlemek için bunu uygulama listenizde gizleyin"</string>
+ <string name="privatespace_access_header" msgid="982809349769470185">"Gizli olduğunda gizli alana erişin"</string>
+ <string name="privatespace_search_description" msgid="983837656432484282">"Arama çubuğuna \"Gizli alan\" yazın"</string>
+ <string name="privatespace_tap_tile_description" msgid="4146608898639668340">"Gizli alan kutusuna dokunun"</string>
+ <string name="privatespace_unlock_description" msgid="4132755357482447360">"Gizli alanınızın kilidini açın"</string>
+ <string name="privatespace_hide_off_summary" msgid="7227778747159633671">"Kapalı"</string>
+ <string name="privatespace_hide_on_summary" msgid="6136704537527640183">"Açık"</string>
<string name="private_space_category_system" msgid="1286843321867285700">"Sistem"</string>
<string name="private_space_create_title" msgid="47273568884806726">"Gizli alan oluştur"</string>
<string name="private_space_delete_title" msgid="3075645119800272800">"Gizli alanı sil"</string>
@@ -570,54 +568,30 @@
<string name="no_device_lock_summary" msgid="7653477413589207824">"Gizli alanı kullanmak için cihazda ekran kilidi ayarlayın."</string>
<string name="no_device_lock_action_label" msgid="2640487005629001288">"Ekran kilidi ayarla"</string>
<string name="no_device_lock_cancel" msgid="4412602160321228863">"İptal"</string>
- <!-- no translation found for privatespace_cancel_label (362351004019511784) -->
- <skip />
- <!-- no translation found for privatespace_setup_button_label (3696372546231047258) -->
- <skip />
- <!-- no translation found for privatespace_setup_title (177623114624330394) -->
- <skip />
- <!-- no translation found for privatespace_hide_apps_summary (4016518749055602268) -->
- <skip />
- <!-- no translation found for privatespace_how_title (8794102046435526065) -->
- <skip />
- <!-- no translation found for privatespace_access_bottom_text (1075244097441349030) -->
- <skip />
- <!-- no translation found for privatespace_protected_lock_text (7320604832432017423) -->
- <skip />
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_cancel_label" msgid="362351004019511784">"İptal"</string>
+ <string name="privatespace_setup_button_label" msgid="3696372546231047258">"Kurulum"</string>
+ <string name="privatespace_setup_title" msgid="177623114624330394">"Gizli alanı kurun"</string>
+ <string name="privatespace_hide_apps_summary" msgid="4016518749055602268">"Özel uygulamaları yalnızca sizin erişebildiğiniz güvenli bir alanda gizleyin"</string>
+ <string name="privatespace_how_title" msgid="8794102046435526065">"Nasıl çalışır?"</string>
+ <string name="privatespace_access_bottom_text" msgid="1075244097441349030">"Gizli alana, uygulama listenizin alt tarafından erişebilirsiniz"</string>
+ <string name="privatespace_protected_lock_text" msgid="7320604832432017423">"Gizli alandaki uygulamalar kilit ile korunur"</string>
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"Kilitli olduğunda gizli alandaki uygulamaların gönderdiği bildirimler gizlenir"</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"Gizli alan kilitli olduğunda izin yöneticisi, gizlilik kontrol paneli ve diğer ayarlarda gizli alan uygulamaları görünmez"</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"Gizli alan kuruluyor…"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"Gizli alan kilit ile korunur"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"Kilitli olduğunda gizli alan uygulamalarıyla ilgili kullanım bilgileri gizlenir"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"Gizli alana, uygulama listenizden erişin"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"Gizli alan kurulamadı"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"Şimdi tekrar deneyin veya daha sonra tekrar gelin"</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"Tekrar Dene"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"Kilidi açmak için ekran kilidi kullanılsın mı?"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"Gizli alanın kilidini, cihazınızın kilidini açtığınız şekilde açabilir veya farklı bir kilit seçebilirsiniz"</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"Ekran kilidi kullan"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"Yeni kilit seç"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"İşlem tamam!"</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"Gizli alana erişmek için ana ekranınızın alt kısmından yukarı doğru kaydırdıktan sonra aşağı doğru kaydırın"</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"Bitti"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"Gizli alana erişmek için aşağı kaydırın"</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"<xliff:g id="COUNT">%d</xliff:g> adede kadar parmak izi ekleyebilirsiniz"</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"Maksimum sayıda parmak izi eklediniz"</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"Daha fazla parmak izi eklenemez"</string>
@@ -1135,8 +1109,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"Cihaz katlıyken uygulamaları kullanmaya devam et"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"Smooth Display"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"Bazı içerikler için yenileme hızını otomatik olarak <xliff:g id="ID_1">%1$d</xliff:g> Hz\'e yükseltir. Pil kullanımını artırır."</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"Yoğun yenileme hızına zorla"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"Geliştirilmiş dokunma duyarlılığı ve animasyon kalitesi için en yüksek yenileme hızı. Pil kullanımını artırır."</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"Ekrana dikkat verme"</string>
@@ -1372,6 +1345,8 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"Ortak ayarlar"</string>
<string name="apn_settings" msgid="4295467389400441299">"APN\'ler"</string>
<string name="apn_edit" msgid="2003683641840248741">"Erişim noktasını düzenle"</string>
+ <!-- no translation found for apn_add (9069613192201630934) -->
+ <skip />
<string name="apn_not_set" msgid="8246646433109750293">"Ayarlanmadı"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"Ayarlanmadı"</string>
<string name="apn_name" msgid="6677695784108157953">"Ad"</string>
@@ -2006,12 +1981,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"Açmak için erişilebilirlik düğmesini kullanın"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"Açmak için ses düğmelerini basılı tutun"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"Açmak için ekrana üç kez dokunun"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"Açmak için ekrana iki parmağınızla üç kez dokunun"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"Açmak için hareketi kullanın"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"Erişilebilirlik hareketini kullan"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"Bu özelliği kullanmak için ekranınızın alt kısmındaki erişilebilirlik düğmesine <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> dokunun.\n\nÖzellikler arasında geçiş yapmak için erişilebilirlik düğmesine dokunup basılı tutun."</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"Bu özelliği kullanmak için ekranınızdaki erişilebilirlik düğmesine dokunun."</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"Bu özelliği kullanmak için ses tuşlarının ikisine birden basın ve basılı tutun."</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"Büyütmeyi başlatıp durdurmak için ekranınızda herhangi bir yere üç kez dokunun."</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"Büyütmeyi başlatıp durdurmak için ekranınızda herhangi bir yere iki parmağınızla üç kez dokunun."</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"Bu özelliği kullanmak için 2 parmağınızla ekranın alt kısmından yukarı kaydırın.\n\nÖzellikler arasında geçiş yapmak için 2 parmağınızla yukarı kaydırıp basılı tutun."</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"Bu özelliği kullanmak için 3 parmağınızla ekranın alt kısmından yukarı kaydırın.\n\nÖzellikler arasında geçiş yapmak için 3 parmağınızla yukarı kaydırıp basılı tutun."</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"Bir erişilebilirlik özelliğini kullanmak için 2 parmağınızla ekranın alt kısmından yukarı kaydırın.\n\nÖzellikler arasında geçiş yapmak için 2 parmağınızla yukarı kaydırıp basılı tutun."</string>
@@ -2033,12 +2010,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"Ses seviyesi tuşlarını basılı tut"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"ses tuşlarını basılı tut"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"Ses seviyesi tuşlarının ikisini birden basılı tutun"</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"Ekrana iki parmağınızla üç kez dokunun"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"ekrana iki parmağınızla üç kez dokunun"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"İki parmağınızla ekrana {0,number,integer} kez hızlıca dokunun"</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"Ekrana üç kez dokun"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"ekrana üç kez dokun"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"Ekrana {0,number,integer} kez hızlıca dokunun. Bu kısayol cihazınızı yavaşlatabilir"</string>
@@ -2336,6 +2310,10 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"Uygulama için arka plan etkinliğini sınırlarsanız hatalı davranabilir"</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"Uygulama, pili optimize etmek için ayarlanmadığından kısıtlanamaz.\n\nUygulamayı kısıtlamak için önce pil optimizasyonunu açın."</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"Pil kullanımını yönetme"</string>
+ <!-- no translation found for manager_battery_usage_allow_background_usage_title (6294649996820358852) -->
+ <skip />
+ <!-- no translation found for manager_battery_usage_allow_background_usage_summary (8021153755201340819) -->
+ <skip />
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"Kısıtlanmamış"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"Optimize edilmiş"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"Kısıtlı"</string>
@@ -3846,6 +3824,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"Tüm dosyaları yönetme erişimine izin ver"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"Bu uygulamanın, bu cihazdaki veya cihaza bağlı depolama birimlerindeki tüm dosyaları okumasına, değiştirmesine ve silmesine izin verin. İzin verilirse uygulama size açıkça bildirmeden dosyalara erişebilir."</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"Tüm dosyalara erişebilir"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"Tam ekran bildirimler"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"Bu uygulamanın tam ekran bildirim göndermesine izin ver"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"Cihaz kilitliyken bu uygulamanın tüm ekranı kaplayan bildirimler göstermesine izin verin. Uygulamalar bunu alarmları, gelen aramaları ve diğer acil bildirimleri göstermek için kullanabilir."</string>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index d0ca854..d927e40 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -135,7 +135,14 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"Стилус"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"Надання доступу до аудіо"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"Поділитись аудіо"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"Дзвінки й будильники"</string>
+ <!-- no translation found for audio_sharing_streams_category_title (862958129650324581) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_pref_title (4636293245167657721) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_title (8269455097512153101) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_qr_code_summary (4231875597377863735) -->
<skip />
<string name="date_and_time" msgid="1788358029823431692">"Дата й час"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"Проксі"</string>
@@ -540,24 +547,15 @@
<string name="private_space_title" msgid="7078627930195569767">"Приватний простір"</string>
<string name="private_space_summary" msgid="8237652417163408001">"Ховайте додатки в приватній папці"</string>
<string name="private_space_one_lock_title" msgid="7306547190751832568">"Використовувати спосіб розблокування екрана"</string>
- <!-- no translation found for private_space_hide_title (8687034008994037610) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_title (972581369094289386) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_summary (1052569521186403642) -->
- <skip />
- <!-- no translation found for privatespace_access_header (982809349769470185) -->
- <skip />
- <!-- no translation found for privatespace_search_description (983837656432484282) -->
- <skip />
- <!-- no translation found for privatespace_tap_tile_description (4146608898639668340) -->
- <skip />
- <!-- no translation found for privatespace_unlock_description (4132755357482447360) -->
- <skip />
- <!-- no translation found for privatespace_hide_off_summary (7227778747159633671) -->
- <skip />
- <!-- no translation found for privatespace_hide_on_summary (6136704537527640183) -->
- <skip />
+ <string name="private_space_hide_title" msgid="8687034008994037610">"Не показувати на заблокованому екрані"</string>
+ <string name="privatespace_hide_page_title" msgid="972581369094289386">"Приховати приватний простір, коли його заблоковано"</string>
+ <string name="privatespace_hide_page_summary" msgid="1052569521186403642">"Приховайте приватний простір зі списку додатків, щоб ніхто не дізнався про його наявність на пристрої"</string>
+ <string name="privatespace_access_header" msgid="982809349769470185">"Отримуйте доступ до приватного простору, коли його приховано"</string>
+ <string name="privatespace_search_description" msgid="983837656432484282">"У рядку пошуку введіть \"приватний простір\""</string>
+ <string name="privatespace_tap_tile_description" msgid="4146608898639668340">"Натисніть панель \"Приватний простір\""</string>
+ <string name="privatespace_unlock_description" msgid="4132755357482447360">"Розблокуйте приватний простір"</string>
+ <string name="privatespace_hide_off_summary" msgid="7227778747159633671">"Вимкнено"</string>
+ <string name="privatespace_hide_on_summary" msgid="6136704537527640183">"Увімкнено"</string>
<string name="private_space_category_system" msgid="1286843321867285700">"Система"</string>
<string name="private_space_create_title" msgid="47273568884806726">"Створити приватний простір"</string>
<string name="private_space_delete_title" msgid="3075645119800272800">"Видалити приватний простір"</string>
@@ -570,54 +568,30 @@
<string name="no_device_lock_summary" msgid="7653477413589207824">"Щоб застосовувати приватний простір, налаштуйте блокування."</string>
<string name="no_device_lock_action_label" msgid="2640487005629001288">"Налаштувати блокування екрана"</string>
<string name="no_device_lock_cancel" msgid="4412602160321228863">"Скасувати"</string>
- <!-- no translation found for privatespace_cancel_label (362351004019511784) -->
- <skip />
- <!-- no translation found for privatespace_setup_button_label (3696372546231047258) -->
- <skip />
- <!-- no translation found for privatespace_setup_title (177623114624330394) -->
- <skip />
- <!-- no translation found for privatespace_hide_apps_summary (4016518749055602268) -->
- <skip />
- <!-- no translation found for privatespace_how_title (8794102046435526065) -->
- <skip />
- <!-- no translation found for privatespace_access_bottom_text (1075244097441349030) -->
- <skip />
- <!-- no translation found for privatespace_protected_lock_text (7320604832432017423) -->
- <skip />
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_cancel_label" msgid="362351004019511784">"Скасувати"</string>
+ <string name="privatespace_setup_button_label" msgid="3696372546231047258">"Налаштувати"</string>
+ <string name="privatespace_setup_title" msgid="177623114624330394">"Налаштуйте приватний простір"</string>
+ <string name="privatespace_hide_apps_summary" msgid="4016518749055602268">"Сховайте приватні додатки в безпечному місці, доступ до якого маєте лише ви"</string>
+ <string name="privatespace_how_title" msgid="8794102046435526065">"Як це працює"</string>
+ <string name="privatespace_access_bottom_text" msgid="1075244097441349030">"Ви можете отримати доступ до приватного простору внизу списку додатків"</string>
+ <string name="privatespace_protected_lock_text" msgid="7320604832432017423">"Додатки в приватному просторі захищено блокуванням"</string>
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"Сповіщення додатків у приватному просторі приховуються, коли його заблоковано"</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"Коли приватний простір заблоковано, його додатки не відображатимуться в менеджері дозволів, на панелі керування дозволами й в інших налаштуваннях."</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"Налаштування приватного простору…"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"Приватний простір захищено блокуванням"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"Коли приватний простір заблоковано, дані про використання його додатків приховуються"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"Доступ до приватного простору зі списку додатків"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"Не вдалося налаштувати приватний простір"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"Повторіть спробу зараз або поверніться пізніше"</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"Повторити"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"Використовувати спосіб розблокування екрана?"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"Ви можете розблоковувати приватний простір так само, як і свій пристрій, або вибрати інший спосіб розблокування"</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"Використовувати спосіб розблокування екрана"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"Вибрати новий спосіб розблокування"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"Готово."</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"Щоб отримати доступ до приватного простору, проведіть пальцем угору від нижнього краю головного екрана, а потім прокрутіть сторінку вниз"</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"Готово"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"Прокрутіть униз, щоб увійти в приватний простір"</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"Можна додати максимум стільки відбитків: <xliff:g id="COUNT">%d</xliff:g>"</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"Ви додали максимальну кількість відбитків пальців"</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"Більше не можна додати відбитки пальців"</string>
@@ -1135,8 +1109,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"Далі користуватися додатками на складеному пристрої"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"Плавне відображення"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"Автоматично збільшує частоту оновлення до <xliff:g id="ID_1">%1$d</xliff:g> Гц для певного контенту. Збільшує використання заряду акумулятора."</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"Примусово найбільша частота оновлення"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"Найвища частота оновлення для кращого реагування на дотики й вищої якості анімації. Підвищує використання заряду акумулятора."</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"Адаптивний сплячий режим"</string>
@@ -1372,6 +1345,8 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"Налаштування для спільного використання"</string>
<string name="apn_settings" msgid="4295467389400441299">"Точки доступу"</string>
<string name="apn_edit" msgid="2003683641840248741">"Змінити точку доступу"</string>
+ <!-- no translation found for apn_add (9069613192201630934) -->
+ <skip />
<string name="apn_not_set" msgid="8246646433109750293">"Не встановлено"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"Не задано"</string>
<string name="apn_name" msgid="6677695784108157953">"Назва"</string>
@@ -2006,12 +1981,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"Використайте кнопку функцій доступності"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"Утримуйте клавіші гучності, щоб відкрити"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"Тричі торкніться екрана, щоб відкрити"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"Тричі торкніться екрана двома пальцями, щоб відкрити"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"Використовуйте жест"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"Використовувати жест функцій доступності"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"Щоб використовувати цю функцію, натисніть кнопку спеціальних можливостей <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> унизу екрана.\n\nЩоб переключитися між функціями, натисніть і утримуйте кнопку спеціальних можливостей."</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"Щоб використовувати цю функцію, натисніть кнопку функцій доступності на екрані."</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"Щоб використовувати цю функцію, натисніть і утримуйте обидві клавіші гучності."</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"Щоб почати або припинити збільшення, тричі натисніть будь-де на екрані."</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"Щоб почати або припинити збільшення, тричі натисніть будь-де на екрані двома пальцями."</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"Щоб використовувати цю функцію, проведіть двома пальцями вверх від низу екрана.\n\nЩоб переключитися між функціями, проведіть двома пальцями знизу вверх і утримуйте їх на екрані."</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"Щоб використовувати цю функцію, проведіть трьома пальцями вверх від низу екрана.\n\nЩоб переключитися між функціями, проведіть трьома пальцями знизу вверх і утримуйте їх на екрані."</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"Щоб використовувати спеціальні можливості, проведіть двома пальцями вверх від низу екрана.\n\nЩоб переключитися між функціями, проведіть двома пальцями знизу вверх і утримуйте їх на екрані."</string>
@@ -2033,12 +2010,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"Утримувати клавіші гучності"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"утримання клавіш гучності"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"Утримуйте обидві клавіші гучності"</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"Потрійний дотик екрана двома пальцями"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"потрійний дотик екрана двома пальцями"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"Швидко торкніться екрана {0,number,integer} рази двома пальцями"</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"Тричі торкнутися екрана"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"потрійний дотик"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"Швидко натисніть екран стільки разів: {0,number,integer}. Призначена кнопка чи відповідний жест може сповільнити роботу пристрою."</string>
@@ -2336,6 +2310,10 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"Якщо обмежити фонову активність, додаток може працювати неналежним чином"</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"Оскільки в додатку не передбачено економію заряду акумулятора, його не можна обмежити.\n\nУвімкніть оптимізацію споживання заряду."</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"Використання заряду"</string>
+ <!-- no translation found for manager_battery_usage_allow_background_usage_title (6294649996820358852) -->
+ <skip />
+ <!-- no translation found for manager_battery_usage_allow_background_usage_summary (8021153755201340819) -->
+ <skip />
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"Без обмежень"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"Оптимізовано"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"Обмежено"</string>
@@ -3846,6 +3824,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"Надати доступ до керування всіма файлами"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"Дозволити цьому додатку переглядати, змінювати та видаляти всі файли на цьому пристрої або інших підключених носіях пам\'яті. Після надання дозволу додаток може отримувати доступ до файлів без вашого відома."</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"Мають доступ до всіх файлів"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"Сповіщення на весь екран"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"Дозволити сповіщення на весь екран із цього додатка"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"Цьому додатку буде дозволено показувати сповіщення на весь екран, коли пристрій заблоковано. Додатки можуть використовувати це налаштування, щоб показувати будильники, сповіщення про вхідні дзвінки або інші термінові сповіщення."</string>
diff --git a/res/values-ur/strings.xml b/res/values-ur/strings.xml
index d06ed09..a6961f1 100644
--- a/res/values-ur/strings.xml
+++ b/res/values-ur/strings.xml
@@ -135,8 +135,11 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"اسٹائلس"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"آڈیو کا اشتراک"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"آڈیو کا اشتراک کریں"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
- <skip />
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"کالز اور الارمز"</string>
+ <string name="audio_sharing_streams_category_title" msgid="862958129650324581">"LE آڈیو سلسلہ سے منسلک کریں"</string>
+ <string name="audio_sharing_streams_pref_title" msgid="4636293245167657721">"قریبی آڈیو سلسلے"</string>
+ <string name="audio_sharing_streams_title" msgid="8269455097512153101">"آڈیو سلسلے"</string>
+ <string name="audio_sharing_streams_qr_code_summary" msgid="4231875597377863735">"QR کوڈ استعمال کر کے آڈیو سلسلہ سے منسلک کریں"</string>
<string name="date_and_time" msgid="1788358029823431692">"تاریخ اور وقت"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"پراکسی"</string>
<string name="proxy_clear_text" msgid="6529658759984031149">"صاف کریں"</string>
@@ -540,24 +543,15 @@
<string name="private_space_title" msgid="7078627930195569767">"نجی اسپیس"</string>
<string name="private_space_summary" msgid="8237652417163408001">"ایپس کو نجی فولڈر میں چھپائیں"</string>
<string name="private_space_one_lock_title" msgid="7306547190751832568">"اسکرین لاک کا استعمال کرتے ہوئے غیر مقفل کریں"</string>
- <!-- no translation found for private_space_hide_title (8687034008994037610) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_title (972581369094289386) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_summary (1052569521186403642) -->
- <skip />
- <!-- no translation found for privatespace_access_header (982809349769470185) -->
- <skip />
- <!-- no translation found for privatespace_search_description (983837656432484282) -->
- <skip />
- <!-- no translation found for privatespace_tap_tile_description (4146608898639668340) -->
- <skip />
- <!-- no translation found for privatespace_unlock_description (4132755357482447360) -->
- <skip />
- <!-- no translation found for privatespace_hide_off_summary (7227778747159633671) -->
- <skip />
- <!-- no translation found for privatespace_hide_on_summary (6136704537527640183) -->
- <skip />
+ <string name="private_space_hide_title" msgid="8687034008994037610">"مقفل ہونے پر چھپائیں"</string>
+ <string name="privatespace_hide_page_title" msgid="972581369094289386">"مقفل ہونے پر نجی اسپیس چھپائیں"</string>
+ <string name="privatespace_hide_page_summary" msgid="1052569521186403642">"دیگر لوگوں کو معلوم نہ ہوں کہ آپ کے آلے پر نجی اسپیس ہے، آپ اسے اپنی ایپس کی فہرست سے چھپا سکتے ہیں"</string>
+ <string name="privatespace_access_header" msgid="982809349769470185">"پوشیدہ ہونے پر نجی اسپیس تک رسائی حاصل کریں"</string>
+ <string name="privatespace_search_description" msgid="983837656432484282">"تلاش بار میں \'نجی اسپیس\' تلاش کریں"</string>
+ <string name="privatespace_tap_tile_description" msgid="4146608898639668340">"نجی اسپیس ٹائل پر تھپتھپائیں"</string>
+ <string name="privatespace_unlock_description" msgid="4132755357482447360">"اپنی نجی اسپیس کو غیر مقفل کریں"</string>
+ <string name="privatespace_hide_off_summary" msgid="7227778747159633671">"آف ہے"</string>
+ <string name="privatespace_hide_on_summary" msgid="6136704537527640183">"آن ہے"</string>
<string name="private_space_category_system" msgid="1286843321867285700">"سسٹم"</string>
<string name="private_space_create_title" msgid="47273568884806726">"نجی اسپیس بنائیں"</string>
<string name="private_space_delete_title" msgid="3075645119800272800">"نجی اسپیس حذف کریں"</string>
@@ -570,54 +564,30 @@
<string name="no_device_lock_summary" msgid="7653477413589207824">"نجی اسپیس استعمال کرنے کیلئے، اس آلہ پر سکرین لاک سیٹ کریں۔"</string>
<string name="no_device_lock_action_label" msgid="2640487005629001288">"اسکرین لاک سیٹ کریں"</string>
<string name="no_device_lock_cancel" msgid="4412602160321228863">"منسوخ کریں"</string>
- <!-- no translation found for privatespace_cancel_label (362351004019511784) -->
- <skip />
- <!-- no translation found for privatespace_setup_button_label (3696372546231047258) -->
- <skip />
- <!-- no translation found for privatespace_setup_title (177623114624330394) -->
- <skip />
- <!-- no translation found for privatespace_hide_apps_summary (4016518749055602268) -->
- <skip />
- <!-- no translation found for privatespace_how_title (8794102046435526065) -->
- <skip />
- <!-- no translation found for privatespace_access_bottom_text (1075244097441349030) -->
- <skip />
- <!-- no translation found for privatespace_protected_lock_text (7320604832432017423) -->
- <skip />
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_cancel_label" msgid="362351004019511784">"منسوخ کریں"</string>
+ <string name="privatespace_setup_button_label" msgid="3696372546231047258">"سیٹ اپ کریں"</string>
+ <string name="privatespace_setup_title" msgid="177623114624330394">"نجی اسپیس سیٹ اپ کریں"</string>
+ <string name="privatespace_hide_apps_summary" msgid="4016518749055602268">"نجی ایپس کو اس محفوظ اسپیس میں چھپائیں جس تک صرف آپ رسائی حاصل کر سکتے ہیں"</string>
+ <string name="privatespace_how_title" msgid="8794102046435526065">"اس کے کام کرنے کا طریقہ"</string>
+ <string name="privatespace_access_bottom_text" msgid="1075244097441349030">"آپ اپنی ایپس کی فہرست کے نچلے حصے سے نجی اسپیس تک رسائی حاصل کر سکتے ہیں"</string>
+ <string name="privatespace_protected_lock_text" msgid="7320604832432017423">"نجی اسپیس میں موجود ایپس کو بذریعہ لاک محفوظ کیا جاتا ہے"</string>
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"نجی اسپیس میں موجود ایپس کے مقفل ہونے پر ان کی اطلاعات پوشیدہ ہو جاتی ہیں"</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"نجی اسپیس کے مقفل ہونے پر، نجی اسپیس ایپس اجازتوں کے مینیجر، پرائیویسی ڈیش بورڈ اور دیگر ترتیبات میں ظاہر نہیں ہوں گی"</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"نجی اسپیس سیٹ اپ کی جا رہی ہے…"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"نجی اسپیس کو بذریعہ لاک محفوظ کیا جاتا ہے"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"نجی اسپیس ایپس کے استعمال کی معلومات اس وقت پوشیدہ ہوتی ہے جب یہ مقفل ہوتی ہے"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"اپنی ایپس کی فہرست سے نجی اسپیس تک رسائی حاصل کریں"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"نجی اسپیس سیٹ اپ نہیں کی جا سکی"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"ابھی دوبارہ کوشش کریں یا بعد میں واپس آئیں"</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"دوبارہ کوشش کریں"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"غیر مقفل کرنے کے لیے اسکرین لاک استعمال کریں؟"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"آپ نجی اسپیس کو اسی طرح غیر مقفل کر سکتے ہیں جس طرح آپ اپنے آلے کو غیر مقفل کرتے ہیں یا ایک مختلف قفل کا انتخاب سکتے ہیں"</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"اسکرین لاک استعمال کریں"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"نیا قفل منتخب کریں"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"سب کچھ تیار ہے!"</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"نجی اسپیس تک رسائی کے لیے، اپنی ہوم اسکرین کے نیچے سے اوپر کی طرف سوائپ کریں، پھر نیچے اسکرول کریں"</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"ہو گیا"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"نجی اسپیس تک رسائی حاصل کرنے کے لیے نیچے اسکرول کریں"</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"آپ <xliff:g id="COUNT">%d</xliff:g> فنگر پرنٹس شامل کر سکتے ہیں"</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"آپ فنگر پرنٹس کی زیادہ سے زیادہ تعداد شامل کر چکے ہیں"</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"مزید فنگر پرنٹس شامل نہیں کر سکتے"</string>
@@ -1135,8 +1105,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"فولڈ پر ایپس کا استعمال جاری رکھیں"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"ہموار ڈسپلے"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"کچھ مواد کے لیے <xliff:g id="ID_1">%1$d</xliff:g> Hz تک ریفریش ریٹ خودکار طور پر بڑھ جاتی ہے۔ بیٹری کے استعمال میں کرتی اضافہ ہیں"</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"زیادہ سے زیادہ ریفریش کی شرح پر مجبور کریں"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"اعلی ترین ریفریش کرنے کی بہتر شرح کے ليے ٹچ کی کارکردگی اور اینیمیشن کوالٹی۔ بیٹری کے استعمال میں اضافہ کرتا ہے۔"</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"اسکرین پر توجہ"</string>
@@ -1372,6 +1341,7 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"کمیونل ترتیبات"</string>
<string name="apn_settings" msgid="4295467389400441299">"APNs"</string>
<string name="apn_edit" msgid="2003683641840248741">"رسائی کے مقام میں ترمیم کریں"</string>
+ <string name="apn_add" msgid="9069613192201630934">"رسائی پوائنٹ شامل کریں"</string>
<string name="apn_not_set" msgid="8246646433109750293">"سیٹ نہيں ہے"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"سیٹ نہیں ہے"</string>
<string name="apn_name" msgid="6677695784108157953">"نام"</string>
@@ -2006,12 +1976,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"کھولنے کے لیے ایکسیسبیلٹی بٹن کا استعمال کریں"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"کھولنے کے لیے والیوم کی کلیدوں کو دبائے رکھیں"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"کھولنے کے لیے اسکرین پر تین بار تھپتھپائیں"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"کھولنے کے لیے دو انگلیوں سے تین بار تھپتھپائیں"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"کھولنے کے لیے اشارہ استعمال کریں"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"ایکسیسبیلٹی اشارے کا استعمال کریں"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"یہ خصوصیت استعمال کرنے کیلئے، اپنی اسکرین کے سب سے نیچے<xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> ایکسیسبیلٹی بٹن پر تھپتھپائیں۔\n\nخصوصیات کے درمیان سوئچ کرنے کے لیے ایکسیسبیلٹی بٹن کو ٹچ کریں اور دبائے رکھیں۔"</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"اس خصوصیت کا استعمال کرنے کے لیے، اپنی اسکرین پر ایکسیسبیلٹی بٹن پر تھپتھپائیں۔"</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"یہ خصوصیت استعمال کرنے کیلئے، والیوم کی دونوں کلیدوں کو دبائے رکھیں۔"</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"میگنیفکیشن شروع یا بند کرنے کے لیے، اپنی اسکرین پر کہیں بھی تین بار تھپتھپائیں۔"</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"میگنیفکیشن شروع یا اسٹاپ کرنے کے لیے، اپنی اسکرین پر کہیں بھی دو انگلیوں سے تین بار تھپتھپائیں۔"</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"یہ خصوصیت استعمال کرنے کیلئے، 2 انگلیوں سے اسکرین کے نیچے سے اوپر کی طرف سوائپ کریں۔\n\nخصوصیات کے درمیان سوئچ کرنے کے لیے، 2 انگلیوں سے اوپر کی طرف سوائپ کریں اور دبائے رکھیں۔"</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"یہ خصوصیت استعمال کرنے کیلئے، 3 انگلیوں سے اسکرین کے نیچے سے اوپر کی طرف سوائپ کریں۔\n\nخصوصیات کے درمیان سوئچ کرنے کے لیے، 3 انگلیوں سے اوپر کی طرف سوائپ کریں اور دبائے رکھیں۔"</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"ایکسیسبیلٹی خصوصیت استعمال کرنے کیلئے، 2 انگلیوں سے اسکرین کے نیچے سے اوپر کی طرف سوائپ کریں۔\n\nخصوصیات کے درمیان سوئچ کرنے کے لیے، 2 انگلیوں سے اوپر کی طرف سوائپ کریں اور دبائے رکھیں۔"</string>
@@ -2033,12 +2005,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"والیوم کی کلیدوں کو دبائیں رکھیں"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"والیوم کی کلیدوں کو دبائے رکھیں"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"والیوم کی دونوں کلیدوں کو دبائے رکھیں"</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"دو انگلیوں سے اسکرین پر تین بار تھپتھپائیں"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"دو انگلیوں سے اسکرین پر تین بار تھپتھپائیں"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"دو انگلیوں سے اسکرین پر تیزی سے {0,number,integer} بار تھپتھپائیں"</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"اسکرین پر تین بار تھپتھپائیں"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"اسکرین پر تین بار تھپتھپائیں"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"اسکرین پر فوری طور پر {0,number,integer} بار تھپتھپائیں۔ اس شارٹ کٹ سے آپ کا آلہ سست ہو سکتا ہے"</string>
@@ -2336,6 +2305,8 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"اگر آپ کسی ایپ کی پس منظر کی سرگرمی کو محدود کرتے ہیں تو یہ غلط برتاؤ کر سکتی ہے"</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"چونکہ یہ ایپ بیٹری کی کارکردگی کو بہتر بنانے کیلئے نہیں ہے، لہذا آپ اسے محدود نہیں کر سکتے ہیں۔\n\nایپ کو محدود کرنے کیلئے، پہلے بیٹری کی کارکردگی کو بہتر بنانے کو آن کریں۔"</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"بیٹری کے استعمال کا نظم کریں"</string>
+ <string name="manager_battery_usage_allow_background_usage_title" msgid="6294649996820358852">"پس منظر کے استعمال کی اجازت دیں"</string>
+ <string name="manager_battery_usage_allow_background_usage_summary" msgid="8021153755201340819">"ریئل ٹائم اپ ڈیٹس کے لیے فعال کریں، بیٹری بچانے کے لیے غیر فعال کریں"</string>
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"(پابندی کے بغیر)"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"بہتر کردہ"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"محدود کردہ"</string>
@@ -3846,6 +3817,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"سبھی فائلز کا نظم کرنے کیلئے رسائی کی اجازت دیں"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"اس ایپ کو اس آلہ یا کسی منسلک اسٹوریج والیوم کی تمام فائلز کو پڑھنے، اس میں ترمیم کرنے اور حذف کرنے کی اجازت دیں۔ اگر اجازت دی گئی تو ایپ آپ کو بتائے بغیر فائلز تک رسائی حاصل کر سکتی ہے۔"</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"سبھی فائلز تک رسائی حاصل کی جا سکتی ہے"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"پوری اسکرین کی اطلاعات"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"اس ایپ سے پوری اسکرین کی اطلاعات کی اجازت دیں"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"اس ایپ کو وہ اطلاعات دکھانے کی اجازت دیں جو آلے کے مقفل ہونے پر پوری اسکرین پر ظاہر ہوتی ہیں۔ ایپس ان کا استعمال الارمز، اِن کمنگ کالز یا دیگر فوری اطلاعات کو نمایاں کرنے کے لیے کر سکتی ہیں۔"</string>
diff --git a/res/values-uz/strings.xml b/res/values-uz/strings.xml
index 6830035..a43a3e5 100644
--- a/res/values-uz/strings.xml
+++ b/res/values-uz/strings.xml
@@ -137,6 +137,14 @@
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"Audioni ulashish"</string>
<!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
<skip />
+ <!-- no translation found for audio_sharing_streams_category_title (862958129650324581) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_pref_title (4636293245167657721) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_title (8269455097512153101) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_qr_code_summary (4231875597377863735) -->
+ <skip />
<string name="date_and_time" msgid="1788358029823431692">"Sana va vaqt"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"Proksi-server"</string>
<string name="proxy_clear_text" msgid="6529658759984031149">"Tozalash"</string>
@@ -540,24 +548,15 @@
<string name="private_space_title" msgid="7078627930195569767">"Maxfiy joy"</string>
<string name="private_space_summary" msgid="8237652417163408001">"Maxfiy jilddagi ilovalarni yashirish"</string>
<string name="private_space_one_lock_title" msgid="7306547190751832568">"Ekran qulfi bilan qulfni ochish"</string>
- <!-- no translation found for private_space_hide_title (8687034008994037610) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_title (972581369094289386) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_summary (1052569521186403642) -->
- <skip />
- <!-- no translation found for privatespace_access_header (982809349769470185) -->
- <skip />
- <!-- no translation found for privatespace_search_description (983837656432484282) -->
- <skip />
- <!-- no translation found for privatespace_tap_tile_description (4146608898639668340) -->
- <skip />
- <!-- no translation found for privatespace_unlock_description (4132755357482447360) -->
- <skip />
- <!-- no translation found for privatespace_hide_off_summary (7227778747159633671) -->
- <skip />
- <!-- no translation found for privatespace_hide_on_summary (6136704537527640183) -->
- <skip />
+ <string name="private_space_hide_title" msgid="8687034008994037610">"Qulflanganida berkitilsin"</string>
+ <string name="privatespace_hide_page_title" msgid="972581369094289386">"Qulflanganida Maxfiy joyni berkitish"</string>
+ <string name="privatespace_hide_page_summary" msgid="1052569521186403642">"Qurilmada Xavfsiz joy borligini boshqalar bilmasligi uchun ilovalar roʻyxatidan yashirish mumkin"</string>
+ <string name="privatespace_access_header" msgid="982809349769470185">"Berkitilganida Maxfiy joyga kirish"</string>
+ <string name="privatespace_search_description" msgid="983837656432484282">"Qidiruv satrida \"Maxfiy joy\"ni qidiring"</string>
+ <string name="privatespace_tap_tile_description" msgid="4146608898639668340">"Maxfiy joy katakchaisni bosing"</string>
+ <string name="privatespace_unlock_description" msgid="4132755357482447360">"Maxfiiy joyni ochish"</string>
+ <string name="privatespace_hide_off_summary" msgid="7227778747159633671">"Oʻchiq"</string>
+ <string name="privatespace_hide_on_summary" msgid="6136704537527640183">"Yoniq"</string>
<string name="private_space_category_system" msgid="1286843321867285700">"Tizim"</string>
<string name="private_space_create_title" msgid="47273568884806726">"Maxfiy joy yaratish"</string>
<string name="private_space_delete_title" msgid="3075645119800272800">"Maxfiy joyni oʻchirish"</string>
@@ -570,20 +569,13 @@
<string name="no_device_lock_summary" msgid="7653477413589207824">"Maxfiy joy ishlatish uchun bu qurilma ekran qulfini sozlang"</string>
<string name="no_device_lock_action_label" msgid="2640487005629001288">"Ekran qulfini sozlash"</string>
<string name="no_device_lock_cancel" msgid="4412602160321228863">"Bekor qilish"</string>
- <!-- no translation found for privatespace_cancel_label (362351004019511784) -->
- <skip />
- <!-- no translation found for privatespace_setup_button_label (3696372546231047258) -->
- <skip />
- <!-- no translation found for privatespace_setup_title (177623114624330394) -->
- <skip />
- <!-- no translation found for privatespace_hide_apps_summary (4016518749055602268) -->
- <skip />
- <!-- no translation found for privatespace_how_title (8794102046435526065) -->
- <skip />
- <!-- no translation found for privatespace_access_bottom_text (1075244097441349030) -->
- <skip />
- <!-- no translation found for privatespace_protected_lock_text (7320604832432017423) -->
- <skip />
+ <string name="privatespace_cancel_label" msgid="362351004019511784">"Bekor qilish"</string>
+ <string name="privatespace_setup_button_label" msgid="3696372546231047258">"Sozlash"</string>
+ <string name="privatespace_setup_title" msgid="177623114624330394">"Maxfiy joyni sozlash"</string>
+ <string name="privatespace_hide_apps_summary" msgid="4016518749055602268">"Shaxsiy ilovalarni faqat siz kira oladigan xavfsiz joyda yashiring"</string>
+ <string name="privatespace_how_title" msgid="8794102046435526065">"Bu qanday ishlaydi"</string>
+ <string name="privatespace_access_bottom_text" msgid="1075244097441349030">"Ilovalar roʻyxatining pastki qismidan Maxfiy joyga kirish mumkin"</string>
+ <string name="privatespace_protected_lock_text" msgid="7320604832432017423">"Maxfiy joydagi ilovalar qulf bilan himoyalangan"</string>
<!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
<skip />
<!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
@@ -1372,6 +1364,8 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"Umumiy sozlamalar"</string>
<string name="apn_settings" msgid="4295467389400441299">"APN"</string>
<string name="apn_edit" msgid="2003683641840248741">"Ulanish nuqtasini tahrirlash"</string>
+ <!-- no translation found for apn_add (9069613192201630934) -->
+ <skip />
<string name="apn_not_set" msgid="8246646433109750293">"Kiritilmagan"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"Berilmagan"</string>
<string name="apn_name" msgid="6677695784108157953">"Nomi"</string>
@@ -2006,12 +2000,16 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"Qulayliklar tugmasi bilan ochish"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"Ochish uchun ikkala tovush tugmasini bosib turing."</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"Ochish uchun ekranga uch marta bosing"</string>
+ <!-- no translation found for accessibility_tutorial_dialog_title_two_finger_triple (1090593773487065541) -->
+ <skip />
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"Imo-ishoralardan foydalaning"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"Qulaylik ishorasidan foydalanish"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"Bu funksiyadan foydalanish uchun ekraningiz pastidagi <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> maxsus imkoniyatlar tugmasi ustiga bosing.\n\nFunksiyalarni almashtirish uchun maxsus imkoniyatlar tugmasini bosib turing."</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"Bu funksiyadan foydalanish uchun ekrandagi Qulayliklar tugmasini bosing."</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"Bu funksiyadan foydalanish uchun ikkala tovush tugmasini bosib turing."</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"Kattalashtirishni boshlash yoki toʻxtatish uchun ekranning istalgan joyiga uch marta bosing."</string>
+ <!-- no translation found for accessibility_tutorial_dialog_message_two_finger_triple (6205072282308562361) -->
+ <skip />
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"Bu funksiyadan foydalanish uchun 2 ta barmoq bilan ekran pastidan tepaga suring.\n\nFunksiyalarni almashtirish uchun 2 ta barmoq bilan tepaga suring va ushlab turing."</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"Bu funksiyadan foydalanish uchun 3 ta barmoq bilan ekran pastidan tepaga suring.\n\nFunksiyalarni almashtirish uchun 3 ta barmoq bilan tepaga suring va ushlab turing."</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"Maxsus imkoniyatlardan foydalanish uchun 2 ta barmoq bilan ekran pastidan tepaga suring.\n\nFunksiyalarni almashtirish uchun 2 ta barmoq bilan tepaga suring va ushlab turing."</string>
@@ -2336,6 +2334,10 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"Bu ilovaning ishlashiga ta’sir ko‘rsatishi mumkin"</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"Bu ilova batareya sarfini optimallashtirish uchun sozlanmagani sababli uni cheklash imkonsiz.\n\nIlovani cheklash uchun avval batareya sarfini optimallashtirish funksiyasini yoqing."</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"Batareya sarfini boshqarish"</string>
+ <!-- no translation found for manager_battery_usage_allow_background_usage_title (6294649996820358852) -->
+ <skip />
+ <!-- no translation found for manager_battery_usage_allow_background_usage_summary (8021153755201340819) -->
+ <skip />
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"Cheklanmagan"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"Optimallangan"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"Cheklangan"</string>
@@ -3846,6 +3848,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"Barcha fayllarni boshqarishga ruxsat"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"Bu ilovaga mazkur qurilmadagi yoki ulangan xotira qurilmalaridagi barcha fayllarni oʻqish, tahrirlash va oʻchirib tashlash uchun ruxsat beriladi. Ruxsat berilgandan keyin ilova fayllardan sizning xabaringizsiz foydalana oladi."</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"Barcha fayllarga ruxsati bor ilova"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"Butun ekranda bildirishnomalar"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"Bu ilova bildirishnomalarini butun ekranda chiqishiga ruxsat berish"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"Bu ilovaga qurilma qulflanganida butun ekranni egallaydigan bildirishnoma chiqarishga ruxsat berish. Ilovalar uning yordamida signallar, kiruvchi chaqiruv yoki boshqa shoshilinch bildirishnomalarni ajratib koʻrsatishi mumkin."</string>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index d37e816..bb2db11 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -135,7 +135,14 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"Bút cảm ứng"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"Chia sẻ âm thanh"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"Chia sẻ âm thanh"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"Cuộc gọi và chuông báo"</string>
+ <!-- no translation found for audio_sharing_streams_category_title (862958129650324581) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_pref_title (4636293245167657721) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_title (8269455097512153101) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_qr_code_summary (4231875597377863735) -->
<skip />
<string name="date_and_time" msgid="1788358029823431692">"Ngày và giờ"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"Proxy"</string>
@@ -540,24 +547,15 @@
<string name="private_space_title" msgid="7078627930195569767">"Không gian riêng tư"</string>
<string name="private_space_summary" msgid="8237652417163408001">"Ẩn ứng dụng trong thư mục riêng tư"</string>
<string name="private_space_one_lock_title" msgid="7306547190751832568">"Mở khoá bằng phương thức khoá màn hình"</string>
- <!-- no translation found for private_space_hide_title (8687034008994037610) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_title (972581369094289386) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_summary (1052569521186403642) -->
- <skip />
- <!-- no translation found for privatespace_access_header (982809349769470185) -->
- <skip />
- <!-- no translation found for privatespace_search_description (983837656432484282) -->
- <skip />
- <!-- no translation found for privatespace_tap_tile_description (4146608898639668340) -->
- <skip />
- <!-- no translation found for privatespace_unlock_description (4132755357482447360) -->
- <skip />
- <!-- no translation found for privatespace_hide_off_summary (7227778747159633671) -->
- <skip />
- <!-- no translation found for privatespace_hide_on_summary (6136704537527640183) -->
- <skip />
+ <string name="private_space_hide_title" msgid="8687034008994037610">"Ẩn khi khoá"</string>
+ <string name="privatespace_hide_page_title" msgid="972581369094289386">"Ẩn Không gian riêng tư khi khoá"</string>
+ <string name="privatespace_hide_page_summary" msgid="1052569521186403642">"Ẩn Không gian riêng tư khỏi các ứng dụng để không ai biết"</string>
+ <string name="privatespace_access_header" msgid="982809349769470185">"Truy cập Không gian riêng tư khi tính năng này đang ẩn"</string>
+ <string name="privatespace_search_description" msgid="983837656432484282">"Tìm kiếm \"Không gian riêng tư\" trong thanh tìm kiếm"</string>
+ <string name="privatespace_tap_tile_description" msgid="4146608898639668340">"Nhấn vào ô Không gian riêng tư"</string>
+ <string name="privatespace_unlock_description" msgid="4132755357482447360">"Mở khoá Không gian riêng tư"</string>
+ <string name="privatespace_hide_off_summary" msgid="7227778747159633671">"Tắt"</string>
+ <string name="privatespace_hide_on_summary" msgid="6136704537527640183">"Bật"</string>
<string name="private_space_category_system" msgid="1286843321867285700">"Hệ thống"</string>
<string name="private_space_create_title" msgid="47273568884806726">"Tạo Không gian riêng tư"</string>
<string name="private_space_delete_title" msgid="3075645119800272800">"Xoá Không gian riêng tư"</string>
@@ -570,54 +568,30 @@
<string name="no_device_lock_summary" msgid="7653477413589207824">"Để dùng Không gian riêng tư, hãy đặt một phương thức khoá màn hình trên thiết bị này."</string>
<string name="no_device_lock_action_label" msgid="2640487005629001288">"Đặt phương thức khoá màn hình"</string>
<string name="no_device_lock_cancel" msgid="4412602160321228863">"Huỷ"</string>
- <!-- no translation found for privatespace_cancel_label (362351004019511784) -->
- <skip />
- <!-- no translation found for privatespace_setup_button_label (3696372546231047258) -->
- <skip />
- <!-- no translation found for privatespace_setup_title (177623114624330394) -->
- <skip />
- <!-- no translation found for privatespace_hide_apps_summary (4016518749055602268) -->
- <skip />
- <!-- no translation found for privatespace_how_title (8794102046435526065) -->
- <skip />
- <!-- no translation found for privatespace_access_bottom_text (1075244097441349030) -->
- <skip />
- <!-- no translation found for privatespace_protected_lock_text (7320604832432017423) -->
- <skip />
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_cancel_label" msgid="362351004019511784">"Huỷ"</string>
+ <string name="privatespace_setup_button_label" msgid="3696372546231047258">"Thiết lập"</string>
+ <string name="privatespace_setup_title" msgid="177623114624330394">"Thiết lập Không gian riêng tư"</string>
+ <string name="privatespace_hide_apps_summary" msgid="4016518749055602268">"Ẩn các ứng dụng riêng tư trong một không gian an toàn chỉ có bạn mới truy cập được"</string>
+ <string name="privatespace_how_title" msgid="8794102046435526065">"Cách thức hoạt động"</string>
+ <string name="privatespace_access_bottom_text" msgid="1075244097441349030">"Bạn có thể truy cập Không gian riêng tư từ cuối danh sách ứng dụng"</string>
+ <string name="privatespace_protected_lock_text" msgid="7320604832432017423">"Ứng dụng trong Không gian riêng tư được bảo vệ bởi cơ chế khoá"</string>
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"Thông báo của các ứng dụng trong Không gian riêng tư sẽ ẩn khi tính năng này đang khoá"</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"Các ứng dụng trong Không gian riêng tư sẽ không xuất hiện trong Trình quản lý quyền, Bảng tổng quan về quyền riêng tư, cũng như các chế độ cài đặt khác khi Không gian riêng tư đang khoá"</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"Đang thiết lập Không gian riêng tư…"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"Không gian riêng tư được bảo vệ bởi cơ chế khoá"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"Thông tin về mức độ sử dụng của các ứng dụng trong Không gian riêng tư sẽ ẩn khi tính năng này đang khoá"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"Truy cập Không gian riêng tư từ danh sách ứng dụng"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"Không thiết lập được Không gian riêng tư"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"Thử lại ngay bây giờ, hoặc để khi khác."</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"Thử lại"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"Dùng phương thức khoá màn hình để mở khoá?"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"Bạn có thể mở khoá Không gian riêng tư theo cùng cách mở khoá thiết bị của mình, hoặc chọn một phương thức khoá khác"</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"Dùng phương thức khoá màn hình"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"Chọn phương thức khoá mới"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"Đã hoàn tất!"</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"Để truy cập Không gian riêng tư, hãy vuốt lên từ cuối màn hình chính, rồi di chuyển xuống"</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"Xong"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"Di chuyển xuống để truy cập Không gian riêng tư"</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"Bạn có thể thêm tối đa <xliff:g id="COUNT">%d</xliff:g> vân tay"</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"Bạn đã thêm số vân tay tối đa"</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"Không thể thêm dấu vân tay khác"</string>
@@ -1135,8 +1109,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"Tiếp tục dùng ứng dụng sau khi gập điện thoại"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"Hình ảnh mượt"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"Tự động tăng tốc độ làm mới từ 60 lên đến <xliff:g id="ID_1">%1$d</xliff:g> Hz đối với một số nội dung. Chế độ cài đặt này sẽ làm tăng mức sử dụng pin."</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"Buộc chuyển sang tốc độ làm mới cao nhất"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"Tốc độ làm mới cao nhất giúp cải thiện khả năng phản hồi khi chạm và chất lượng ảnh động. Tính năng này làm tăng mức sử dụng pin."</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"Phát hiện ánh mắt"</string>
@@ -1372,6 +1345,8 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"Các chế độ cài đặt dùng chung"</string>
<string name="apn_settings" msgid="4295467389400441299">"APN"</string>
<string name="apn_edit" msgid="2003683641840248741">"Chỉnh sửa điểm truy cập"</string>
+ <!-- no translation found for apn_add (9069613192201630934) -->
+ <skip />
<string name="apn_not_set" msgid="8246646433109750293">"Chưa đặt"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"Chưa đặt"</string>
<string name="apn_name" msgid="6677695784108157953">"Tên"</string>
@@ -2006,12 +1981,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"Dùng nút hỗ trợ tiếp cận để mở"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"Giữ các phím âm lượng để mở"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"Nhấn 3 lần vào màn hình để mở"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"Hãy dùng 2 ngón tay nhấn 3 lần vào màn hình để mở"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"Dùng cử chỉ để mở"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"Sử dụng cử chỉ hỗ trợ tiếp cận"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"Để sử dụng tính năng này, hãy nhấn vào nút hỗ trợ tiếp cận <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> ở cuối màn hình.\n\nĐể chuyển đổi giữa các tính năng, hãy chạm và giữ nút hỗ trợ tiếp cận."</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"Để sử dụng tính năng này, hãy nhấn vào nút hỗ trợ tiếp cận trên màn hình."</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"Để sử dụng tính năng này, hãy nhấn và giữ cả hai phím âm lượng."</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"Để bắt đầu và dừng phóng to, hãy nhấn 3 lần vào bất cứ đâu trên màn hình."</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"Để bắt đầu và dừng phóng to, hãy dùng 2 ngón tay nhấn 3 lần vào bất cứ đâu trên màn hình."</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"Để sử dụng tính năng này, hãy dùng 2 ngón tay vuốt lên từ cuối màn hình.\n\nĐể chuyển đổi giữa các tính năng, hãy dùng 2 ngón tay vuốt lên và giữ."</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"Để sử dụng tính năng này, hãy dùng 3 ngón tay vuốt lên từ cuối màn hình.\n\nĐể chuyển đổi giữa các tính năng, hãy dùng 3 ngón tay vuốt lên và giữ."</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"Để sử dụng tính năng hỗ trợ tiếp cận, hãy dùng 2 ngón tay vuốt lên từ cuối màn hình.\n\nĐể chuyển đổi giữa các tính năng, hãy dùng 2 ngón tay vuốt lên và giữ."</string>
@@ -2033,12 +2010,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"Giữ phím âm lượng"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"giữ các phím âm lượng"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"Nhấn và giữ cả 2 phím âm lượng"</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"Dùng 2 ngón tay nhấn 3 lần vào màn hình"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"dùng 2 ngón tay nhấn 3 lần vào màn hình"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"Nhanh tay nhấn vào màn hình {0,number,integer} lần bằng 2 ngón tay"</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"Nhấn 3 lần vào màn hình"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"nhấn 3 lần vào màn hình"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"Nhấn nhanh vào màn hình {0,number,integer} lần. Phím tắt này có thể làm chậm thiết bị"</string>
@@ -2336,6 +2310,10 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"Nếu bạn giới hạn hoạt động nền cho một ứng dụng, ứng dụng đó có thể hoạt động không đúng cách"</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"Không thể hạn chế ứng dụng này vì bạn chưa đặt để tối ưu hóa pin.\n\nĐể hạn chế ứng dụng, trước tiên hãy bật tối ưu hóa pin."</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"Quản lý mức sử dụng pin"</string>
+ <!-- no translation found for manager_battery_usage_allow_background_usage_title (6294649996820358852) -->
+ <skip />
+ <!-- no translation found for manager_battery_usage_allow_background_usage_summary (8021153755201340819) -->
+ <skip />
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"Không hạn chế"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"Tối ưu hóa"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"Bị hạn chế"</string>
@@ -3846,6 +3824,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"Cho phép truy cập để quản lý tất cả các tệp"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"Cho phép ứng dụng này đọc, sửa đổi và xóa tất cả các tệp trên thiết bị này hoặc bất kỳ thiết bị lưu trữ nào đã kết nối. Nếu bạn cho phép, ứng dụng có thể truy cập vào các tệp mà không cần thông báo rõ ràng cho bạn."</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"Có thể truy cập vào tất cả các tệp"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"Thông báo toàn màn hình"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"Cho phép ứng dụng này hiển thị thông báo toàn màn hình"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"Cho phép ứng dụng hiển thị các thông báo chiếm toàn màn hình khi thiết bị đang khoá. Các ứng dụng có thể dùng những thông báo này để làm nổi bật chuông báo, cuộc gọi đến hoặc thông báo khẩn cấp khác."</string>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index 795a3b9..a5536f8 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -135,8 +135,11 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"触控笔"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"音频分享"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"分享音频"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
- <skip />
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"来电和闹钟"</string>
+ <string name="audio_sharing_streams_category_title" msgid="862958129650324581">"连接到 LE 音频流"</string>
+ <string name="audio_sharing_streams_pref_title" msgid="4636293245167657721">"附近的音频流"</string>
+ <string name="audio_sharing_streams_title" msgid="8269455097512153101">"音频流"</string>
+ <string name="audio_sharing_streams_qr_code_summary" msgid="4231875597377863735">"使用二维码连接到音频流"</string>
<string name="date_and_time" msgid="1788358029823431692">"日期和时间"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"代理"</string>
<string name="proxy_clear_text" msgid="6529658759984031149">"清除"</string>
@@ -540,24 +543,15 @@
<string name="private_space_title" msgid="7078627930195569767">"私密空间"</string>
<string name="private_space_summary" msgid="8237652417163408001">"将应用隐藏到私人文件夹中"</string>
<string name="private_space_one_lock_title" msgid="7306547190751832568">"使用屏幕解锁方式解锁"</string>
- <!-- no translation found for private_space_hide_title (8687034008994037610) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_title (972581369094289386) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_summary (1052569521186403642) -->
- <skip />
- <!-- no translation found for privatespace_access_header (982809349769470185) -->
- <skip />
- <!-- no translation found for privatespace_search_description (983837656432484282) -->
- <skip />
- <!-- no translation found for privatespace_tap_tile_description (4146608898639668340) -->
- <skip />
- <!-- no translation found for privatespace_unlock_description (4132755357482447360) -->
- <skip />
- <!-- no translation found for privatespace_hide_off_summary (7227778747159633671) -->
- <skip />
- <!-- no translation found for privatespace_hide_on_summary (6136704537527640183) -->
- <skip />
+ <string name="private_space_hide_title" msgid="8687034008994037610">"在锁定时隐藏"</string>
+ <string name="privatespace_hide_page_title" msgid="972581369094289386">"隐藏锁定的私密空间"</string>
+ <string name="privatespace_hide_page_summary" msgid="1052569521186403642">"如要防止其他人知道您的设备上有私密空间,您可以从应用列表中隐藏该空间"</string>
+ <string name="privatespace_access_header" msgid="982809349769470185">"访问隐藏的私密空间"</string>
+ <string name="privatespace_search_description" msgid="983837656432484282">"在搜索栏中搜索“私密空间”"</string>
+ <string name="privatespace_tap_tile_description" msgid="4146608898639668340">"点按私密空间功能块"</string>
+ <string name="privatespace_unlock_description" msgid="4132755357482447360">"解锁您的私密空间"</string>
+ <string name="privatespace_hide_off_summary" msgid="7227778747159633671">"关闭"</string>
+ <string name="privatespace_hide_on_summary" msgid="6136704537527640183">"开启"</string>
<string name="private_space_category_system" msgid="1286843321867285700">"系统"</string>
<string name="private_space_create_title" msgid="47273568884806726">"创建私密空间"</string>
<string name="private_space_delete_title" msgid="3075645119800272800">"删除私密空间"</string>
@@ -570,54 +564,30 @@
<string name="no_device_lock_summary" msgid="7653477413589207824">"若要使用“私密空间”功能,请在此设备上设置屏锁。"</string>
<string name="no_device_lock_action_label" msgid="2640487005629001288">"设置屏锁"</string>
<string name="no_device_lock_cancel" msgid="4412602160321228863">"取消"</string>
- <!-- no translation found for privatespace_cancel_label (362351004019511784) -->
- <skip />
- <!-- no translation found for privatespace_setup_button_label (3696372546231047258) -->
- <skip />
- <!-- no translation found for privatespace_setup_title (177623114624330394) -->
- <skip />
- <!-- no translation found for privatespace_hide_apps_summary (4016518749055602268) -->
- <skip />
- <!-- no translation found for privatespace_how_title (8794102046435526065) -->
- <skip />
- <!-- no translation found for privatespace_access_bottom_text (1075244097441349030) -->
- <skip />
- <!-- no translation found for privatespace_protected_lock_text (7320604832432017423) -->
- <skip />
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_cancel_label" msgid="362351004019511784">"取消"</string>
+ <string name="privatespace_setup_button_label" msgid="3696372546231047258">"设置"</string>
+ <string name="privatespace_setup_title" msgid="177623114624330394">"设置私密空间"</string>
+ <string name="privatespace_hide_apps_summary" msgid="4016518749055602268">"将私密应用隐藏在只有您可以访问的安全空间中"</string>
+ <string name="privatespace_how_title" msgid="8794102046435526065">"运作方式"</string>
+ <string name="privatespace_access_bottom_text" msgid="1075244097441349030">"您可以从应用列表底部访问私密空间"</string>
+ <string name="privatespace_protected_lock_text" msgid="7320604832432017423">"系统会通过锁定功能来保护私密空间中的应用"</string>
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"私密空间锁定后,系统会隐藏私密空间中应用的通知"</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"私密空间锁定后,私密空间应用不会出现在权限管理器、隐私信息中心和其他设置中"</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"设置私密空间…"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"系统会通过锁定功能来保护私密空间"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"私密空间应用锁定后,其使用情况信息处于隐藏状态"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"从应用列表访问私密空间"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"无法设置私密空间"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"立即重试,或稍后重试"</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"重试"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"使用屏锁解锁凭据?"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"您可以像解锁设备一样解锁私密空间,也可以选择其他锁定方式"</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"使用屏锁"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"选择新的锁定方式"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"一切就绪!"</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"要访问私密空间,请从主屏幕底部向上滑动,然后向下滚动"</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"完成"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"向下滚动,访问私密空间"</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"您最多可以添加 <xliff:g id="COUNT">%d</xliff:g> 个指纹"</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"您添加的指纹数量已达到上限"</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"无法添加更多的指纹"</string>
@@ -1135,8 +1105,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"折叠时继续使用应用"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"流畅画面"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"自动将某些内容的刷新频率调高到 <xliff:g id="ID_1">%1$d</xliff:g> Hz。使用这一设置会增加耗电量。"</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"强制使用峰值刷新频率"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"使用最高刷新频率可提升按触操作响应和动画质量,但会增加耗电量。"</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"屏幕感知"</string>
@@ -1372,6 +1341,7 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"通用设置"</string>
<string name="apn_settings" msgid="4295467389400441299">"APN"</string>
<string name="apn_edit" msgid="2003683641840248741">"修改接入点"</string>
+ <string name="apn_add" msgid="9069613192201630934">"添加接入点"</string>
<string name="apn_not_set" msgid="8246646433109750293">"未设置"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"未设置"</string>
<string name="apn_name" msgid="6677695784108157953">"名称"</string>
@@ -2006,12 +1976,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"使用“无障碍”按钮打开"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"按住两个音量键即可打开"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"点按屏幕 3 次即可打开"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"用两指点按屏幕三次即可打开"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"使用手势打开"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"使用无障碍功能启动手势"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"如需使用此功能,请点按屏幕底部的“无障碍”按钮 <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g>。\n\n轻触并按住“无障碍”按钮,即可在多项功能之间切换。"</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"如需使用此功能,请点按屏幕上的“无障碍”按钮。"</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"如需使用此功能,请同时按住两个音量键。"</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"要启动和停止放大功能,请在屏幕上的任意位置点按三次。"</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"要启动或停止放大功能,请在屏幕上的任意位置用两指点按三次。"</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"如需使用此功能,请用两根手指从屏幕底部向上滑动。\n\n用两根手指向上滑动并按住,即可在多项功能之间切换。"</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"如需使用此功能,请用三根手指从屏幕底部向上滑动。\n\n用三根手指向上滑动并按住,即可在多项功能之间切换。"</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"如需使用无障碍功能,请用两根手指从屏幕底部向上滑动。\n\n用两根手指向上滑动并按住,即可在多项功能之间切换。"</string>
@@ -2033,12 +2005,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"按住两个音量键"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"按住两个音量键"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"同时按住两个音量键"</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"用两指点按屏幕三次"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"用两指点按屏幕三次"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"用两指快速点按屏幕{0,number,integer}次"</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"点按屏幕三次"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"点按屏幕三次"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"在屏幕上快速点按 {0,number,integer} 次。此快捷方式可能会减慢设备的运行速度"</string>
@@ -2336,6 +2305,8 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"如果您限制某个应用的后台活动,可能会导致该应用出现异常"</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"由于此应用未设置为优化电池用量,因此您无法对其加以限制。\n\n要限制该应用,请先开启电池优化功能。"</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"管理电池用量"</string>
+ <string name="manager_battery_usage_allow_background_usage_title" msgid="6294649996820358852">"允许后台使用"</string>
+ <string name="manager_battery_usage_allow_background_usage_summary" msgid="8021153755201340819">"启用可接收实时更新,停用可节省电池电量"</string>
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"无限制"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"优化"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"受限"</string>
@@ -3846,6 +3817,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"授予管理所有文件的权限"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"允许此应用读取、修改和删除此设备或任何已连接存储卷上的所有文件。如果您授予该权限,应用无需明确通知您即可访问文件。"</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"可以访问所有文件"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"全屏通知"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"允许此应用显示全屏通知"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"允许此应用在设备锁定时显示占据整个屏幕空间的通知。应用可以利用全屏通知显示闹钟、来电或其他紧急通知。"</string>
diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml
index d4c43ae..5dc4d8a 100644
--- a/res/values-zh-rHK/strings.xml
+++ b/res/values-zh-rHK/strings.xml
@@ -135,7 +135,14 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"觸控筆"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"音訊分享功能"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"分享音訊"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"通話及鬧鐘"</string>
+ <!-- no translation found for audio_sharing_streams_category_title (862958129650324581) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_pref_title (4636293245167657721) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_title (8269455097512153101) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_qr_code_summary (4231875597377863735) -->
<skip />
<string name="date_and_time" msgid="1788358029823431692">"日期和時間"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"Proxy"</string>
@@ -540,24 +547,15 @@
<string name="private_space_title" msgid="7078627930195569767">"私人空間"</string>
<string name="private_space_summary" msgid="8237652417163408001">"將應用程式隱藏在私人資料夾"</string>
<string name="private_space_one_lock_title" msgid="7306547190751832568">"使用螢幕鎖定功能解鎖"</string>
- <!-- no translation found for private_space_hide_title (8687034008994037610) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_title (972581369094289386) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_summary (1052569521186403642) -->
- <skip />
- <!-- no translation found for privatespace_access_header (982809349769470185) -->
- <skip />
- <!-- no translation found for privatespace_search_description (983837656432484282) -->
- <skip />
- <!-- no translation found for privatespace_tap_tile_description (4146608898639668340) -->
- <skip />
- <!-- no translation found for privatespace_unlock_description (4132755357482447360) -->
- <skip />
- <!-- no translation found for privatespace_hide_off_summary (7227778747159633671) -->
- <skip />
- <!-- no translation found for privatespace_hide_on_summary (6136704537527640183) -->
- <skip />
+ <string name="private_space_hide_title" msgid="8687034008994037610">"在鎖定時隱藏"</string>
+ <string name="privatespace_hide_page_title" msgid="972581369094289386">"在鎖定時隱藏「私人空間」"</string>
+ <string name="privatespace_hide_page_summary" msgid="1052569521186403642">"如要防止其他使用者知道裝置上有「私人空間」,可以從應用程式清單中隱藏該空間"</string>
+ <string name="privatespace_access_header" msgid="982809349769470185">"存取隱藏的「私人空間」"</string>
+ <string name="privatespace_search_description" msgid="983837656432484282">"在搜尋列中搜尋「私人空間」"</string>
+ <string name="privatespace_tap_tile_description" msgid="4146608898639668340">"輕按「私人空間」圖塊"</string>
+ <string name="privatespace_unlock_description" msgid="4132755357482447360">"解鎖「私人空間」"</string>
+ <string name="privatespace_hide_off_summary" msgid="7227778747159633671">"關閉"</string>
+ <string name="privatespace_hide_on_summary" msgid="6136704537527640183">"開啟"</string>
<string name="private_space_category_system" msgid="1286843321867285700">"系統"</string>
<string name="private_space_create_title" msgid="47273568884806726">"建立「私人空間」"</string>
<string name="private_space_delete_title" msgid="3075645119800272800">"刪除「私人空間」"</string>
@@ -570,54 +568,30 @@
<string name="no_device_lock_summary" msgid="7653477413589207824">"如要使用「私人空間」,請在此裝置上設定螢幕鎖定功能。"</string>
<string name="no_device_lock_action_label" msgid="2640487005629001288">"設定螢幕鎖定功能"</string>
<string name="no_device_lock_cancel" msgid="4412602160321228863">"取消"</string>
- <!-- no translation found for privatespace_cancel_label (362351004019511784) -->
- <skip />
- <!-- no translation found for privatespace_setup_button_label (3696372546231047258) -->
- <skip />
- <!-- no translation found for privatespace_setup_title (177623114624330394) -->
- <skip />
- <!-- no translation found for privatespace_hide_apps_summary (4016518749055602268) -->
- <skip />
- <!-- no translation found for privatespace_how_title (8794102046435526065) -->
- <skip />
- <!-- no translation found for privatespace_access_bottom_text (1075244097441349030) -->
- <skip />
- <!-- no translation found for privatespace_protected_lock_text (7320604832432017423) -->
- <skip />
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_cancel_label" msgid="362351004019511784">"取消"</string>
+ <string name="privatespace_setup_button_label" msgid="3696372546231047258">"設定"</string>
+ <string name="privatespace_setup_title" msgid="177623114624330394">"設定「私人空間」"</string>
+ <string name="privatespace_hide_apps_summary" msgid="4016518749055602268">"將私人應用程式隱藏在只有你能存取的安全空間"</string>
+ <string name="privatespace_how_title" msgid="8794102046435526065">"運作方式"</string>
+ <string name="privatespace_access_bottom_text" msgid="1075244097441349030">"你可從應用程式清單底部存取「私人空間」"</string>
+ <string name="privatespace_protected_lock_text" msgid="7320604832432017423">"「私人空間」中的應用程式受鎖定功能保護"</string>
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"「私人空間」處於鎖定狀態時,系統會隱藏「私人空間」應用程式的通知"</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"「私人空間」處於鎖定狀態時,當中的應用程式就不會在權限管理工具、私隱資訊主頁和其他設定中顯示"</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"正在設定「私人空間」…"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"「私人空間」受鎖定功能保護"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"「私人空間」處於鎖定狀態時,系統會隱藏當中的應用程式使用情況資料"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"從應用程式清單存取「私人空間」"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"無法設定「私人空間」"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"請立即重試,或稍後再返回查看"</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"再試一次"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"要透過螢幕鎖定功能解鎖嗎?"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"你可使用解鎖裝置的方式來解鎖「私人空間」,或選擇其他鎖定設定"</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"使用螢幕鎖定方式"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"選擇新的鎖定設定"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"大功告成!"</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"如要存取「私人空間」,請從主畫面底部向上滑動,然後向下捲動。"</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"完成"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"向下捲動即可存取「私人空間」"</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"你最多可以加入 <xliff:g id="COUNT">%d</xliff:g> 個指紋"</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"你加入指紋的數目已達上限"</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"無法加入更多指紋"</string>
@@ -1135,8 +1109,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"在摺疊模式下繼續使用應用程式"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"流暢顯示"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"自動將部分內容的更新率調高至 <xliff:g id="ID_1">%1$d</xliff:g> Hz。電池用量會因而增加。"</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"強制使用最高重新整理頻率"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"最高的重新整理頻率,帶來更靈敏的觸控反應和更高畫質的動畫。這會增加電池用量。"</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"螢幕感知"</string>
@@ -1372,6 +1345,8 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"共用設定"</string>
<string name="apn_settings" msgid="4295467389400441299">"APN"</string>
<string name="apn_edit" msgid="2003683641840248741">"編輯接入點"</string>
+ <!-- no translation found for apn_add (9069613192201630934) -->
+ <skip />
<string name="apn_not_set" msgid="8246646433109750293">"未設定"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"未設定"</string>
<string name="apn_name" msgid="6677695784108157953">"名稱"</string>
@@ -2006,12 +1981,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"使用無障礙功能按鈕開啟"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"㩒住兩個音量鍵就可以打開"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"㩒螢幕 3 下就可以開"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"用兩隻手指喺螢幕上面㩒 3 下就可以打開"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"使用手勢即可開啟"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"使用無障礙手勢"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"要使用這項功能,請輕按螢幕底部的無障礙功能按鈕 <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g>。\n\n如要切換不同的功能,按住無障礙功能按鈕即可。"</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"要使用這項功能,請輕按螢幕上的無障礙功能按鈕。"</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"如果要使用呢項功能,請同時㩒住兩個音量鍵。"</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"如果要啟用同停用放大功能,請喺螢幕上面嘅任何一個地方㩒三下。"</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"如果要啟用同停用放大功能,請用兩隻手指喺螢幕上面嘅任何一個地方㩒 3 下。"</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"如果要使用呢項功能,請用 2 隻手指由螢幕底部向上掃。\n\n用 2 隻手指向上掃然後㩒住,就可以切換唔同功能。"</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"如果要使用呢項功能,請用 3 隻手指由螢幕底部向上掃。\n\n用 3 隻手指向上掃然後㩒住,就可以切換唔同功能。"</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"如果要使用無障礙功能,請用 2 隻手指由螢幕底部向上掃。\n\n用 2 隻手指向上掃然後㩒住,就可以切換唔同功能。"</string>
@@ -2033,12 +2010,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"按住音量鍵"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"按住音量鍵"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"同時按住兩個音量鍵"</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"兩指輕按螢幕三下"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"兩指輕按螢幕三下"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"用兩隻手指快速喺螢幕上面㩒 {0,number,integer} 下"</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"輕按螢幕三下"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"輕按螢幕三下"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"快速㩒螢幕 {0,number,integer} 下。呢個快速鍵可能會減慢裝置運作速度"</string>
@@ -2336,6 +2310,10 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"如果你限制應用程式的背景活動,應用程式可能無法正常運作"</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"由於此應用程式並未設定為優化電池,你無法限制其使用。\n\n如要限制應用程式,請先開啟電池優化功能。"</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"管理電池用量"</string>
+ <!-- no translation found for manager_battery_usage_allow_background_usage_title (6294649996820358852) -->
+ <skip />
+ <!-- no translation found for manager_battery_usage_allow_background_usage_summary (8021153755201340819) -->
+ <skip />
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"無限制"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"優化"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"限制"</string>
@@ -3846,6 +3824,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"允許存取以管理所有檔案"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"允許此應用程式讀取、修改和刪除此裝置或任何已連接的儲存空間卷宗上的所有檔案。如獲得權限,應用程式可能會在你不知情的情況下存取檔案。"</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"可存取所有檔案"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"全螢幕通知"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"允許此應用程式的全螢幕通知"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"允許此應用程式在裝置上鎖時顯示全螢幕通知。應用程式可能會利用這些通知突顯鬧鐘、來電或其他緊急通知。"</string>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index d488c74..3367a10 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -135,7 +135,14 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"觸控筆"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"音訊分享功能"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"分享音訊"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"通話與鬧鐘"</string>
+ <!-- no translation found for audio_sharing_streams_category_title (862958129650324581) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_pref_title (4636293245167657721) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_title (8269455097512153101) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_qr_code_summary (4231875597377863735) -->
<skip />
<string name="date_and_time" msgid="1788358029823431692">"日期和時間"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"Proxy"</string>
@@ -540,24 +547,15 @@
<string name="private_space_title" msgid="7078627930195569767">"私人空間"</string>
<string name="private_space_summary" msgid="8237652417163408001">"將應用程式隱藏在私人資料夾中"</string>
<string name="private_space_one_lock_title" msgid="7306547190751832568">"使用螢幕鎖定功能解鎖"</string>
- <!-- no translation found for private_space_hide_title (8687034008994037610) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_title (972581369094289386) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_summary (1052569521186403642) -->
- <skip />
- <!-- no translation found for privatespace_access_header (982809349769470185) -->
- <skip />
- <!-- no translation found for privatespace_search_description (983837656432484282) -->
- <skip />
- <!-- no translation found for privatespace_tap_tile_description (4146608898639668340) -->
- <skip />
- <!-- no translation found for privatespace_unlock_description (4132755357482447360) -->
- <skip />
- <!-- no translation found for privatespace_hide_off_summary (7227778747159633671) -->
- <skip />
- <!-- no translation found for privatespace_hide_on_summary (6136704537527640183) -->
- <skip />
+ <string name="private_space_hide_title" msgid="8687034008994037610">"在鎖定時隱藏"</string>
+ <string name="privatespace_hide_page_title" msgid="972581369094289386">"隱藏鎖定的私人空間"</string>
+ <string name="privatespace_hide_page_summary" msgid="1052569521186403642">"如要防止其他使用者知道裝置上有私人空間,可以從應用程式清單中隱藏該空間"</string>
+ <string name="privatespace_access_header" msgid="982809349769470185">"存取隱藏的私人空間"</string>
+ <string name="privatespace_search_description" msgid="983837656432484282">"在搜尋列中搜尋「私人空間」"</string>
+ <string name="privatespace_tap_tile_description" msgid="4146608898639668340">"輕觸私人空間設定方塊"</string>
+ <string name="privatespace_unlock_description" msgid="4132755357482447360">"解鎖私人空間"</string>
+ <string name="privatespace_hide_off_summary" msgid="7227778747159633671">"已關閉"</string>
+ <string name="privatespace_hide_on_summary" msgid="6136704537527640183">"已開啟"</string>
<string name="private_space_category_system" msgid="1286843321867285700">"系統"</string>
<string name="private_space_create_title" msgid="47273568884806726">"建立私人空間"</string>
<string name="private_space_delete_title" msgid="3075645119800272800">"刪除私人空間"</string>
@@ -570,54 +568,30 @@
<string name="no_device_lock_summary" msgid="7653477413589207824">"如要使用私人空間,請在這部裝置上設定螢幕鎖定功能。"</string>
<string name="no_device_lock_action_label" msgid="2640487005629001288">"設定螢幕鎖定功能"</string>
<string name="no_device_lock_cancel" msgid="4412602160321228863">"取消"</string>
- <!-- no translation found for privatespace_cancel_label (362351004019511784) -->
- <skip />
- <!-- no translation found for privatespace_setup_button_label (3696372546231047258) -->
- <skip />
- <!-- no translation found for privatespace_setup_title (177623114624330394) -->
- <skip />
- <!-- no translation found for privatespace_hide_apps_summary (4016518749055602268) -->
- <skip />
- <!-- no translation found for privatespace_how_title (8794102046435526065) -->
- <skip />
- <!-- no translation found for privatespace_access_bottom_text (1075244097441349030) -->
- <skip />
- <!-- no translation found for privatespace_protected_lock_text (7320604832432017423) -->
- <skip />
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_cancel_label" msgid="362351004019511784">"取消"</string>
+ <string name="privatespace_setup_button_label" msgid="3696372546231047258">"設定"</string>
+ <string name="privatespace_setup_title" msgid="177623114624330394">"設定私人空間"</string>
+ <string name="privatespace_hide_apps_summary" msgid="4016518749055602268">"將私人應用程式隱藏在只有你能存取的安全空間"</string>
+ <string name="privatespace_how_title" msgid="8794102046435526065">"運作方式"</string>
+ <string name="privatespace_access_bottom_text" msgid="1075244097441349030">"你可以從應用程式清單底部存取私人空間"</string>
+ <string name="privatespace_protected_lock_text" msgid="7320604832432017423">"私人空間中的應用程式會受到鎖定保護"</string>
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"私人空間處於鎖定狀態時,如果其中的應用程式發出通知,會遭到系統隱藏"</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"私人空間處於鎖定狀態時,其中的應用程式就不會顯示在權限管理工具、隱私資訊主頁和其他設定中"</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"正在設定私人空間…"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"私人空間會受到鎖定功能保護"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"私人空間處於鎖定狀態時,系統會隱藏其中應用程式的用量資訊"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"透過應用程式清單存取私人空間"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"無法設定私人空間"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"請立即重試,或稍後再返回查看"</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"再試一次"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"要透過螢幕鎖定功能解鎖嗎?"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"你可以用解鎖裝置的方式來解鎖私人空間,或選擇其他鎖定設定"</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"使用螢幕鎖定功能"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"選擇新的鎖定設定"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"大功告成!"</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"如要存取私人空間,請從主畫面底部向上滑動,然後向下捲動。"</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"完成"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"向下捲動即可存取私人空間"</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"你最多可以新增 <xliff:g id="COUNT">%d</xliff:g> 個指紋"</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"你新增的指紋數量已達上限"</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"無法新增其他指紋"</string>
@@ -1135,8 +1109,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"在摺疊狀態下繼續使用應用程式"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"流暢顯示"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"自動將某些內容的刷新率調高到 <xliff:g id="ID_1">%1$d</xliff:g> Hz。請注意,開啟這項設定會增加電池用量。"</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"強制使用最高重新整理頻率"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"強制使用最高重新整理頻率可提升觸控回應和動畫品質。請注意,開啟這項設定會增加電池用量。"</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"螢幕感知"</string>
@@ -1372,6 +1345,8 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"共通設定"</string>
<string name="apn_settings" msgid="4295467389400441299">"APN"</string>
<string name="apn_edit" msgid="2003683641840248741">"編輯存取點"</string>
+ <!-- no translation found for apn_add (9069613192201630934) -->
+ <skip />
<string name="apn_not_set" msgid="8246646433109750293">"未設定"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"未設定"</string>
<string name="apn_name" msgid="6677695784108157953">"名稱"</string>
@@ -2006,12 +1981,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"使用無障礙按鈕開啟"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"按住音量調高鍵和調低鍵即可開啟"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"輕觸螢幕三下即可開啟"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"用兩指輕觸螢幕三下即可開啟"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"使用手勢啟用無障礙服務"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"使用無障礙手勢"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"如要使用這項功能,請輕觸螢幕底部的無障礙工具按鈕 <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g>。\n\n如要切換不同的功能,請按住無障礙工具按鈕。"</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"如要使用這項功能,請輕觸畫面上的無障礙工具按鈕。"</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"如要使用這項功能,請同時按住音量調高鍵和調低鍵。"</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"如要啟用及停用放大功能,請在螢幕上的任何地方輕觸三下。"</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"如要啟用及停用放大功能,請在螢幕上的任何地方用兩指輕觸三下。"</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"如要使用這項功能,請用 2 指從螢幕底部向上滑動。\n\n如要切換不同的功能,請用 2 指向上滑動並按住。"</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"如要使用這項功能,請用 3 指從螢幕底部向上滑動。\n\n如要切換不同的功能,請用 3 指向上滑動並按住。"</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"如要使用無障礙功能,請用 2 指從螢幕底部向上滑動。\n\n如要切換不同的功能,請用 2 指向上滑動並按住。"</string>
@@ -2033,12 +2010,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"按住音量調高鍵和調低鍵"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"按住音量調高鍵和調低鍵"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"同時按住音量調高鍵和調低鍵"</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"用兩指輕觸螢幕三下"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"用兩指輕觸螢幕三下"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"用兩指快速輕觸螢幕 {0,number,integer} 下"</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"輕觸螢幕三下"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"輕觸螢幕三下"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"快速輕觸螢幕 {0,number,integer} 下。這個手勢可能會影響裝置的運作效能"</string>
@@ -2336,6 +2310,10 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"如果你限制應用程式的背景活動,應用程式可能無法正常運作"</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"由於這個應用程式並未設為最佳化電池用量,因此你無法加以限制。\n\n如要限制應用程式,請先開啟電池效能最佳化功能。"</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"管理電池用量"</string>
+ <!-- no translation found for manager_battery_usage_allow_background_usage_title (6294649996820358852) -->
+ <skip />
+ <!-- no translation found for manager_battery_usage_allow_background_usage_summary (8021153755201340819) -->
+ <skip />
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"無限制"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"最佳化"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"受限制"</string>
@@ -3846,6 +3824,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"授予管理所有檔案的權限"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"允許這個應用程式讀取、修改及刪除這部裝置或任何已連結儲存空間上的所有檔案。如果應用程式獲得授權,可能會在你不知情的情況下存取檔案。"</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"可以存取所有檔案"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"全螢幕通知"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"允許這個應用程式顯示全螢幕通知"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"允許這個應用程式在裝置鎖定時顯示全螢幕通知。應用程式可能會在這類通知中顯示鬧鐘、來電或其他緊急通知。"</string>
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index ad80255..70533e8 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -135,7 +135,14 @@
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"I-Stylus"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"Ukwabelana ngomsindo"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"Yabelana ngomsindo"</string>
- <!-- no translation found for calls_and_alarms_device_title (6993559028175454198) -->
+ <string name="calls_and_alarms_device_title" msgid="6993559028175454198">"Izingcingo nama-alamu"</string>
+ <!-- no translation found for audio_sharing_streams_category_title (862958129650324581) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_pref_title (4636293245167657721) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_title (8269455097512153101) -->
+ <skip />
+ <!-- no translation found for audio_sharing_streams_qr_code_summary (4231875597377863735) -->
<skip />
<string name="date_and_time" msgid="1788358029823431692">"Idethi nesikhathi"</string>
<string name="proxy_settings_title" msgid="4201866858226087066">"Ummeleli"</string>
@@ -540,24 +547,15 @@
<string name="private_space_title" msgid="7078627930195569767">"Isikhala Esiyimfihlo"</string>
<string name="private_space_summary" msgid="8237652417163408001">"Fihla ama-app kufolda eyimfihlo"</string>
<string name="private_space_one_lock_title" msgid="7306547190751832568">"Vula usebenzisa ukukhiya isikrini"</string>
- <!-- no translation found for private_space_hide_title (8687034008994037610) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_title (972581369094289386) -->
- <skip />
- <!-- no translation found for privatespace_hide_page_summary (1052569521186403642) -->
- <skip />
- <!-- no translation found for privatespace_access_header (982809349769470185) -->
- <skip />
- <!-- no translation found for privatespace_search_description (983837656432484282) -->
- <skip />
- <!-- no translation found for privatespace_tap_tile_description (4146608898639668340) -->
- <skip />
- <!-- no translation found for privatespace_unlock_description (4132755357482447360) -->
- <skip />
- <!-- no translation found for privatespace_hide_off_summary (7227778747159633671) -->
- <skip />
- <!-- no translation found for privatespace_hide_on_summary (6136704537527640183) -->
- <skip />
+ <string name="private_space_hide_title" msgid="8687034008994037610">"Fihla uma ikhiyiwe"</string>
+ <string name="privatespace_hide_page_title" msgid="972581369094289386">"Fihla Isikhala Esiyifihlo uma ikhiyile"</string>
+ <string name="privatespace_hide_page_summary" msgid="1052569521186403642">"Ukuvimbela abantu ukuthi bazi Isikhala Esiyimfihlo kwidivayisi yakho ungasifihla ohlwini lwama-app wakho"</string>
+ <string name="privatespace_access_header" msgid="982809349769470185">"Finyelela IsIkhala Esiyimfihlo uma sifihliwe"</string>
+ <string name="privatespace_search_description" msgid="983837656432484282">"Sesha \'Isikhala Esiyimfihlo\' ndaweni yokusesha"</string>
+ <string name="privatespace_tap_tile_description" msgid="4146608898639668340">"Thepha indawo Yesikhala Esiyimfihlo"</string>
+ <string name="privatespace_unlock_description" msgid="4132755357482447360">"Vula Isikhala sakho Esiyimfihlo"</string>
+ <string name="privatespace_hide_off_summary" msgid="7227778747159633671">"Valiwe"</string>
+ <string name="privatespace_hide_on_summary" msgid="6136704537527640183">"Vuliwe"</string>
<string name="private_space_category_system" msgid="1286843321867285700">"Isistimu"</string>
<string name="private_space_create_title" msgid="47273568884806726">"Sungula Isikhala Esiyimfihlo"</string>
<string name="private_space_delete_title" msgid="3075645119800272800">"Sula Isikhala Esiyimfihlo"</string>
@@ -570,54 +568,30 @@
<string name="no_device_lock_summary" msgid="7653477413589207824">"Ukuze usebenzise Isikhala Esigodliwe, setha ukukhiya kwesikrini kule divayisi."</string>
<string name="no_device_lock_action_label" msgid="2640487005629001288">"Setha ukukhiya isikrini"</string>
<string name="no_device_lock_cancel" msgid="4412602160321228863">"Khansela"</string>
- <!-- no translation found for privatespace_cancel_label (362351004019511784) -->
- <skip />
- <!-- no translation found for privatespace_setup_button_label (3696372546231047258) -->
- <skip />
- <!-- no translation found for privatespace_setup_title (177623114624330394) -->
- <skip />
- <!-- no translation found for privatespace_hide_apps_summary (4016518749055602268) -->
- <skip />
- <!-- no translation found for privatespace_how_title (8794102046435526065) -->
- <skip />
- <!-- no translation found for privatespace_access_bottom_text (1075244097441349030) -->
- <skip />
- <!-- no translation found for privatespace_protected_lock_text (7320604832432017423) -->
- <skip />
- <!-- no translation found for privatespace_hidden_notifications_text (8121285743543004812) -->
- <skip />
- <!-- no translation found for privatespace_apps_permission_text (4418511924151828812) -->
- <skip />
- <!-- no translation found for privatespace_setting_up_text (8532777749891406509) -->
- <skip />
- <!-- no translation found for privatespace_lock_protected_title (7409801274869666860) -->
- <skip />
- <!-- no translation found for privatespace_apps_hidden_title (6146605677591599107) -->
- <skip />
- <!-- no translation found for privatespace_access_from_apps_title (6787000636686810564) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_title (8658511165913662275) -->
- <skip />
- <!-- no translation found for privatespace_error_screen_summary (5679626031159521676) -->
- <skip />
- <!-- no translation found for privatespace_tryagain_label (4091466165724929876) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_title (7459425150560213662) -->
- <skip />
- <!-- no translation found for privatespace_lockscreen_summary (980268845497843861) -->
- <skip />
- <!-- no translation found for privatespace_use_screenlock_label (2775404941450049991) -->
- <skip />
- <!-- no translation found for privatespace_set_lock_label (6277529807188602545) -->
- <skip />
- <!-- no translation found for privatespace_success_title (4854425684898602993) -->
- <skip />
- <!-- no translation found for privatespace_access_text (8756118686974614618) -->
- <skip />
- <!-- no translation found for privatespace_done_label (5534818213879562387) -->
- <skip />
- <!-- no translation found for scrolldown_to_access (5160743933093369151) -->
- <skip />
+ <string name="privatespace_cancel_label" msgid="362351004019511784">"Khansela"</string>
+ <string name="privatespace_setup_button_label" msgid="3696372546231047258">"Setha"</string>
+ <string name="privatespace_setup_title" msgid="177623114624330394">"Setha Isikhala Esiyimfihlo"</string>
+ <string name="privatespace_hide_apps_summary" msgid="4016518749055602268">"Fihla ama-app ayimfihlo esikhaleni esivikelekile ukuze afinyelelwe nguwe kuphela"</string>
+ <string name="privatespace_how_title" msgid="8794102046435526065">"Indlela esebenza ngayo"</string>
+ <string name="privatespace_access_bottom_text" msgid="1075244097441349030">"Ungafinyelela Esikhaleni Esiyimfihlo ekugcineni koluhlu lama-app wakho"</string>
+ <string name="privatespace_protected_lock_text" msgid="7320604832432017423">"Ama-app Asesikhaleni Esiyimfihlo avikelwe ngokhiya"</string>
+ <string name="privatespace_hidden_notifications_text" msgid="8121285743543004812">"Izaziso ezisuka kuzinhlelo zokusebenza eziku-Private Space ziyafihlwa uma sikhiyiwe"</string>
+ <string name="privatespace_apps_permission_text" msgid="4418511924151828812">"Ama-app ayimfihlo e-Space ngeke zivele kumphathi wemvume, kudeshibhodi yobumfihlo, nezinye izilungiselelo lapho i-Private Space ikhiyiwe"</string>
+ <string name="privatespace_setting_up_text" msgid="8532777749891406509">"Isetha Isikhala Esiyimfihlo…"</string>
+ <string name="privatespace_lock_protected_title" msgid="7409801274869666860">"I-Private Space ivikelwe ingidi"</string>
+ <string name="privatespace_apps_hidden_title" msgid="6146605677591599107">"Ulwazi lokusetshenziswa lwama-app e-Private Space luyafihlwa uma lukhiyiwe"</string>
+ <string name="privatespace_access_from_apps_title" msgid="6787000636686810564">"Finyelela ku-Private Space ohlwini lwakho lwama-app"</string>
+ <string name="privatespace_error_screen_title" msgid="8658511165913662275">"Ayikwazanga ukumisa i-Private Space"</string>
+ <string name="privatespace_error_screen_summary" msgid="5679626031159521676">"Zama futhi manje, noma ubuye kamuva"</string>
+ <string name="privatespace_tryagain_label" msgid="4091466165724929876">"Zama Futhi"</string>
+ <string name="privatespace_lockscreen_title" msgid="7459425150560213662">"Sebenzisa ukukhiya isikrini ukuze uvule?"</string>
+ <string name="privatespace_lockscreen_summary" msgid="980268845497843861">"Ungakwazi ukuvula i-Private Space ngendlela efanayo ovula ngayo idivayisi yakho, noma ukhethe ukhiye ohlukile"</string>
+ <string name="privatespace_use_screenlock_label" msgid="2775404941450049991">"Sebenzisa ukukhiya isikrini"</string>
+ <string name="privatespace_set_lock_label" msgid="6277529807188602545">"Khetha isikhiya esisha"</string>
+ <string name="privatespace_success_title" msgid="4854425684898602993">"Usulungile!"</string>
+ <string name="privatespace_access_text" msgid="8756118686974614618">"Ukuze ufinyelele Isikhala Esiyimfihlo, swayiphela phezulu kusukela phansi kwesikrini sakho sasekhaya, bese uskrolela phansi"</string>
+ <string name="privatespace_done_label" msgid="5534818213879562387">"Kwenziwe"</string>
+ <string name="scrolldown_to_access" msgid="5160743933093369151">"Skrolela phansi ukuze ufinyelele Indawo Eyimfihlo"</string>
<string name="fingerprint_add_max" msgid="8639321019299347447">"Ungangeza izigxivizo zeminwe ezingafika kwezingu-<xliff:g id="COUNT">%d</xliff:g>"</string>
<string name="fingerprint_intro_error_max" msgid="4431784409732135610">"Ungeze inombolo ephezulu yezigxivizo zeminwe"</string>
<string name="fingerprint_intro_error_unknown" msgid="877005321503793963">"Ayikwazi ukwengeza izingxovizo zeminwe eziningi"</string>
@@ -1135,8 +1109,7 @@
<string name="display_white_balance_summary" msgid="7625456704950209050"></string>
<string name="fold_lock_behavior_title" msgid="786228803694268449">"Qhubeka usebenzisa kuma-app agoqiwe"</string>
<string name="peak_refresh_rate_title" msgid="1878771412897140903">"Isibonisi esibushelelezi"</string>
- <!-- no translation found for peak_refresh_rate_summary (3212309985294885790) -->
- <skip />
+ <string name="peak_refresh_rate_summary" msgid="3212309985294885790">"Ikhuphula ngokuzenzakalelayo izinga lokuvuselela lifike ku-<xliff:g id="ID_1">%1$d</xliff:g> Hz kokunye okuqukethwe. Ikhuphula ukusetshenziswa kwebhethri."</string>
<string name="force_high_refresh_rate_toggle" msgid="3325789621928312050">"Phoqelela isilinganiso sokuvuselela esiphakeme"</string>
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"Inani lokuvuselela eliphezulu kakhulu lokuphendula kokuthinta okuthuthukisiwe nekhwalithi yokugqwayiza. Ikhuphula ukusetshenziswa kwebhethri."</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"Ukunaka isikrini"</string>
@@ -1372,6 +1345,8 @@
<string name="communal_settings_summary" msgid="4923914136953940317">"Amasethingi omphakathi"</string>
<string name="apn_settings" msgid="4295467389400441299">"APNs"</string>
<string name="apn_edit" msgid="2003683641840248741">"Hlela indawo yokungena"</string>
+ <!-- no translation found for apn_add (9069613192201630934) -->
+ <skip />
<!-- unknown quoting pattern: original -1, translation 1 -->
<string name="apn_not_set" msgid="8246646433109750293">"&lt;Ayisethiwe&gt;"</string>
<string name="apn_not_set_for_mvno" msgid="1141490067313964640">"Ayisethiwe"</string>
@@ -2007,12 +1982,14 @@
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"Sebenzisa inkinobho yokufinyelela ukuze uvule"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"Bamba okhiye bevolumu ukuze uvule"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"Thepha kathathu isikrini ukuvula"</string>
+ <string name="accessibility_tutorial_dialog_title_two_finger_triple" msgid="1090593773487065541">"Isikrini sokuthepha esiphindwe kathathu seminwe emibili ukuze uvule"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"Sebenzisa ukuthinta ukuze uvule"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="6800684770875867559">"Sebenzisa ukufinyeleleka kokuthinta"</string>
<string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"Ukuze usebenzise lesi sici, thepha inkinobho yokufinyeleleka <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> ngezansi kwesikrini.\n\nUkushintsha phakathi kwezici, thinta futhi ubambe inkinobho yokufinyeleleka."</string>
<string name="accessibility_tutorial_dialog_message_floating_button" msgid="2551777208185138391">"Ukuze usebenzise lesi sici, thepha inkinobho yokufinyeleleka kusikrini sakho."</string>
<string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"Ukuze usebenzise lesi sici, cindezela futhi ubambe bobabili okhiye bevolumu."</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"Ukuqala nokumisa ukukhuliswa, thepha kathathu noma kuphi kusikrini."</string>
+ <string name="accessibility_tutorial_dialog_message_two_finger_triple" msgid="6205072282308562361">"Ukuze uqale futhi umise ukukhuliswa, thepha kathathu noma yikuphi esikrinini sakho ngeminwe emibili."</string>
<string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"Ukuze usebenzise lesi sici, swayiphela phezulu kusuka ezansi esikrinini ngeminwe emi-2.\n\nUkuze ushintshe phakathi kwezici, swayiphela phezulu ngeminwe emi-2 bese ubambe."</string>
<string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"Ukuze usebenzise lesi sici, swayiphela phezulu kusuka ezansi esikrinini ngeminwe emi-3.\n\nUkuze ushintshe phakathi kwezici, swayiphela phezulu ngeminwe emi-3 bese ubambe."</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"Ukuze usebenzise isici sokufinyelela, swayiphela phezulu kusuka ezansi esikrinini ngeminwe emi-2.\n\nUkuze ushintshe phakathi kwezici, swayiphela phezulu ngeminwe emi-2 bese ubambe."</string>
@@ -2034,12 +2011,9 @@
<string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"Bamba okhiye bevolomu"</string>
<string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"bamba okhiye bevolomu"</string>
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"Cindezela futhi ubambe bobabili okhiye bevolumu"</string>
- <!-- no translation found for accessibility_shortcut_edit_dialog_title_two_finger_triple_tap (6687765191490040899) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_two_finger_triple_tap_keyword (4200744613585702430) -->
- <skip />
- <!-- no translation found for accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap (2631127444247448793) -->
- <skip />
+ <string name="accessibility_shortcut_edit_dialog_title_two_finger_triple_tap" msgid="6687765191490040899">"Isikrini sokuthepha kathathu ngeminwe emibili"</string>
+ <string name="accessibility_shortcut_two_finger_triple_tap_keyword" msgid="4200744613585702430">"isikrini sokuthepha kathathu ngeminwe emibili"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_triple_tap" msgid="2631127444247448793">"Thepha ngokushesha isikrini izikhathi ezingu-{0,number,integer} ngeminwe emibili"</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"Isikrini sokuthepha kathathu"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="6863958573135995927">"isikrini sokuthepha kathathu"</string>
<string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"Thepha ngokushesha isikrini izikhathi ezingu-{0,number,integer}. Lesi sinqamuleli singase sehlise isivinini sedivayisi yakho"</string>
@@ -2337,6 +2311,10 @@
<string name="background_activity_warning_dialog_text" msgid="8202776985767701095">"Uma ukhawulela umsebenzi wangasemuva wohlelo lokusebenza, lungahle lungasebenzi kahle"</string>
<string name="background_activity_disabled_dialog_text" msgid="4053170297325882494">"Njengoba lolu hlelo lokusebenza lungasethiwe ukuze kulungiselelwe ibhethri, awukwazi ukulikhawulela.\n\nUkuze ukhawulele uhlelo lokusebenza, qala uvule ukulungiselelwa kwebhethri."</string>
<string name="manager_battery_usage_category_title" msgid="1493303237531629961">"Phatha ukusetshenziswa kwebhethri"</string>
+ <!-- no translation found for manager_battery_usage_allow_background_usage_title (6294649996820358852) -->
+ <skip />
+ <!-- no translation found for manager_battery_usage_allow_background_usage_summary (8021153755201340819) -->
+ <skip />
<string name="manager_battery_usage_unrestricted_title" msgid="2426486290463258032">"Akunamkhawulo"</string>
<string name="manager_battery_usage_optimized_title" msgid="8080765739761921817">"Kulungisiwe"</string>
<string name="manager_battery_usage_restricted_title" msgid="7702863764130323118">"Kuvinjelwe"</string>
@@ -3847,6 +3825,12 @@
<string name="permit_manage_external_storage" msgid="6928847280689401761">"Vumela ukufinyelela ukuze kuphathwe wonke amafayela"</string>
<string name="allow_manage_external_storage_description" msgid="5707948153603253225">"Vumela lolu hlelo lokusebenza ukuthi lufunde, lulungise luphinde lususe wonke amafayela kule divayisi noma kwamanye amavolumu axhunyiwe esitoreji. Uma linikeziwe, uhlelo lokusebenza lungafinyelela kumafayela ngaphandle kokwazi kwakho okusobala."</string>
<string name="filter_manage_external_storage" msgid="6751640571715343804">"Ingafinyelela kuwo wonke amafayela"</string>
+ <!-- no translation found for voice_activation_apps_title (7130045161611529825) -->
+ <skip />
+ <!-- no translation found for permit_voice_activation_apps (9152780172988949319) -->
+ <skip />
+ <!-- no translation found for allow_voice_activation_apps_description (6369745626995060656) -->
+ <skip />
<string name="full_screen_intent_title" msgid="747270185715224130">"Izaziso zesikrini esigcwele"</string>
<string name="permit_full_screen_intent" msgid="9035367640019960861">"Vumela izaziso zesikrini esigcwele ukusuka kule app"</string>
<string name="footer_description_full_screen_intent" msgid="7716518411349225528">"Vumela i-app ukuthi ibonise izaziso ezithatha isikrini esigcwele lapho idivayisi ikhiyiwe. Ama-app angasebenzisa lokhu ukuze agqamise ama-alamu, amakholi angenayo, noma ezinye izaziso eziphuthumayo."</string>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 7ed9ade..808ddc4 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -12630,9 +12630,9 @@
<!-- Summary of the preference to manage content protection settings -->
<string name="content_protection_preference_summary">Check app activity for phishing</string>
<!-- Title of the switch bar on the subpage of content protection settings -->
- <string name="content_protection_preference_user_consent_switch_title">Use scanning</string>
+ <string name="content_protection_preference_user_consent_switch_title">Use scanning for deceptive apps</string>
<!-- Title of the toggle switch of work apps on the subpage of content protection settings -->
- <string name="content_protection_preference_user_consent_work_profile_switch_title">Use scanning for work apps</string>
+ <string name="content_protection_preference_user_consent_work_profile_switch_title">Use scanning for deceptive apps for work</string>
<!-- Default summary of the subpage of content protection settings. Will be overlaid by OEM. -->
<string name="content_protection_preference_subpage_summary"></string>
diff --git a/src/com/android/settings/bluetooth/BluetoothPermissionActivity.java b/src/com/android/settings/bluetooth/BluetoothPermissionActivity.java
index fdd9e25..41606ba 100644
--- a/src/com/android/settings/bluetooth/BluetoothPermissionActivity.java
+++ b/src/com/android/settings/bluetooth/BluetoothPermissionActivity.java
@@ -24,10 +24,11 @@
import android.content.DialogInterface;
import android.content.Intent;
import android.content.IntentFilter;
+import android.content.pm.PackageManager.NameNotFoundException;
import android.os.Bundle;
-import android.text.TextUtils;
import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
+import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.Button;
@@ -209,6 +210,14 @@
@VisibleForTesting
void sendReplyIntentToReceiver(final boolean allowed, final boolean always) {
+ String bluetoothName;
+ try {
+ bluetoothName = Utils.findBluetoothPackageName(this);
+ } catch (NameNotFoundException e) {
+ Log.e(TAG, "Failed to find bluetooth package name", e);
+ return;
+ }
+
Intent intent = new Intent(BluetoothDevice.ACTION_CONNECTION_ACCESS_REPLY);
if (DEBUG) {
@@ -216,6 +225,7 @@
+ " mReturnPackage");
}
+ intent.setPackage(bluetoothName);
intent.putExtra(BluetoothDevice.EXTRA_CONNECTION_ACCESS_RESULT,
allowed ? BluetoothDevice.CONNECTION_ACCESS_YES
: BluetoothDevice.CONNECTION_ACCESS_NO);
diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDeviceAdapter.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDeviceAdapter.java
index 6d5b693..bc8ff21 100644
--- a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDeviceAdapter.java
+++ b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDeviceAdapter.java
@@ -30,10 +30,11 @@
public class AudioSharingDeviceAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private static final String TAG = "AudioSharingDeviceAdapter";
- private final ArrayList<String> mDevices;
+ private final ArrayList<AudioSharingDeviceItem> mDevices;
private final OnClickListener mOnClickListener;
- public AudioSharingDeviceAdapter(ArrayList<String> devices, OnClickListener listener) {
+ public AudioSharingDeviceAdapter(
+ ArrayList<AudioSharingDeviceItem> devices, OnClickListener listener) {
mDevices = devices;
mOnClickListener = listener;
}
@@ -48,8 +49,9 @@
public void bindView(int position) {
if (mButtonView != null) {
- mButtonView.setText(mDevices.get(position));
- mButtonView.setOnClickListener(v -> mOnClickListener.onClick(position));
+ mButtonView.setText(mDevices.get(position).getName());
+ mButtonView.setOnClickListener(
+ v -> mOnClickListener.onClick(mDevices.get(position)));
} else {
Log.w(TAG, "bind view skipped due to button view is null");
}
@@ -76,6 +78,6 @@
public interface OnClickListener {
/** Called when an item has been clicked. */
- void onClick(int position);
+ void onClick(AudioSharingDeviceItem item);
}
}
diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDeviceItem.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDeviceItem.java
new file mode 100644
index 0000000..a68117a
--- /dev/null
+++ b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDeviceItem.java
@@ -0,0 +1,67 @@
+/*
+ * 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.connecteddevice.audiosharing;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+public final class AudioSharingDeviceItem implements Parcelable {
+ private final String mName;
+ private final int mGroupId;
+
+ public AudioSharingDeviceItem(String name, int groupId) {
+ mName = name;
+ mGroupId = groupId;
+ }
+
+ public String getName() {
+ return mName;
+ }
+
+ public int getGroupId() {
+ return mGroupId;
+ }
+
+ public AudioSharingDeviceItem(Parcel in) {
+ mName = in.readString();
+ mGroupId = in.readInt();
+ }
+
+ @Override
+ public void writeToParcel(Parcel dest, int flags) {
+ dest.writeString(mName);
+ dest.writeInt(mGroupId);
+ }
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ public static final Creator<AudioSharingDeviceItem> CREATOR =
+ new Creator<AudioSharingDeviceItem>() {
+ @Override
+ public AudioSharingDeviceItem createFromParcel(Parcel in) {
+ return new AudioSharingDeviceItem(in);
+ }
+
+ @Override
+ public AudioSharingDeviceItem[] newArray(int size) {
+ return new AudioSharingDeviceItem[size];
+ }
+ };
+}
diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDialogFragment.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDialogFragment.java
index 1fd0b87..bcf0c12 100644
--- a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDialogFragment.java
+++ b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDialogFragment.java
@@ -34,11 +34,12 @@
import com.android.settings.flags.Flags;
import java.util.ArrayList;
+import java.util.Locale;
public class AudioSharingDialogFragment extends InstrumentedDialogFragment {
private static final String TAG = "AudioSharingDialog";
- private static final String BUNDLE_KEY_DEVICE_NAMES = "bundle_key_device_names";
+ private static final String BUNDLE_KEY_DEVICE_ITEMS = "bundle_key_device_names";
// The host creates an instance of this dialog fragment must implement this interface to receive
// event callbacks.
@@ -46,13 +47,11 @@
/**
* Called when users click the device item for sharing in the dialog.
*
- * @param position The position of the item clicked.
+ * @param item The device item clicked.
*/
- void onItemClick(int position);
+ void onItemClick(AudioSharingDeviceItem item);
- /**
- * Called when users click the cancel button in the dialog.
- */
+ /** Called when users click the cancel button in the dialog. */
void onCancelClick();
}
@@ -71,13 +70,15 @@
* @param host The Fragment this dialog will be hosted.
*/
public static void show(
- Fragment host, ArrayList<String> deviceNames, DialogEventListener listener) {
+ Fragment host,
+ ArrayList<AudioSharingDeviceItem> deviceItems,
+ DialogEventListener listener) {
if (!Flags.enableLeAudioSharing()) return;
final FragmentManager manager = host.getChildFragmentManager();
sListener = listener;
if (manager.findFragmentByTag(TAG) == null) {
final Bundle bundle = new Bundle();
- bundle.putStringArrayList(BUNDLE_KEY_DEVICE_NAMES, deviceNames);
+ bundle.putParcelableArrayList(BUNDLE_KEY_DEVICE_ITEMS, deviceItems);
AudioSharingDialogFragment dialog = new AudioSharingDialogFragment();
dialog.setArguments(bundle);
dialog.show(manager, TAG);
@@ -87,7 +88,8 @@
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
Bundle arguments = requireArguments();
- ArrayList<String> deviceNames = arguments.getStringArrayList(BUNDLE_KEY_DEVICE_NAMES);
+ ArrayList<AudioSharingDeviceItem> deviceItems =
+ arguments.getParcelableArrayList(BUNDLE_KEY_DEVICE_ITEMS);
final AlertDialog.Builder builder =
new AlertDialog.Builder(getActivity()).setTitle("Share audio").setCancelable(false);
mRootView =
@@ -95,29 +97,33 @@
.inflate(R.layout.dialog_audio_sharing, /* parent= */ null);
TextView subTitle1 = mRootView.findViewById(R.id.share_audio_subtitle1);
TextView subTitle2 = mRootView.findViewById(R.id.share_audio_subtitle2);
- if (deviceNames.isEmpty()) {
+ if (deviceItems.isEmpty()) {
subTitle1.setVisibility(View.INVISIBLE);
- subTitle2.setText("To start sharing audio, connect headphones that support LE audio");
+ subTitle2.setText(
+ "To start sharing audio, connect additional headphones that support LE audio");
builder.setNegativeButton(
"Close",
(dialog, which) -> {
sListener.onCancelClick();
});
- } else if (deviceNames.size() == 1) {
- // TODO: add real impl
- subTitle1.setText("1 devices connected");
- subTitle2.setText("placeholder");
} else {
- // TODO: add real impl
- subTitle1.setText("2 devices connected");
- subTitle2.setText("placeholder");
+ subTitle1.setText(
+ String.format(
+ Locale.US,
+ "%d additional device%s connected",
+ deviceItems.size(),
+ deviceItems.size() > 1 ? "" : "s"));
+ subTitle2.setText(
+ "The headphones you share audio with will hear videos and music playing on this"
+ + " phone");
}
RecyclerView recyclerView = mRootView.findViewById(R.id.btn_list);
recyclerView.setAdapter(
new AudioSharingDeviceAdapter(
- deviceNames,
- (int position) -> {
- sListener.onItemClick(position);
+ deviceItems,
+ (AudioSharingDeviceItem item) -> {
+ sListener.onItemClick(item);
+ dismiss();
}));
recyclerView.setLayoutManager(
new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false));
diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingSwitchBarController.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingSwitchBarController.java
index bd8027c..ff383a7 100644
--- a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingSwitchBarController.java
+++ b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingSwitchBarController.java
@@ -16,8 +16,13 @@
package com.android.settings.connecteddevice.audiosharing;
+import android.bluetooth.BluetoothCsipSetCoordinator;
+import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothLeBroadcast;
+import android.bluetooth.BluetoothLeBroadcastAssistant;
import android.bluetooth.BluetoothLeBroadcastMetadata;
+import android.bluetooth.BluetoothLeBroadcastReceiveState;
+import android.bluetooth.BluetoothProfile;
import android.content.Context;
import android.util.Log;
import android.widget.Switch;
@@ -31,12 +36,21 @@
import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.flags.Flags;
import com.android.settings.widget.SettingsMainSwitchBar;
+import com.android.settingslib.bluetooth.CachedBluetoothDevice;
+import com.android.settingslib.bluetooth.CachedBluetoothDeviceManager;
import com.android.settingslib.bluetooth.LocalBluetoothLeBroadcast;
+import com.android.settingslib.bluetooth.LocalBluetoothLeBroadcastAssistant;
import com.android.settingslib.bluetooth.LocalBluetoothManager;
import com.android.settingslib.utils.ThreadUtils;
import com.android.settingslib.widget.OnMainSwitchChangeListener;
+import com.google.common.collect.ImmutableList;
+
import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
import java.util.concurrent.Executor;
import java.util.concurrent.Executors;
@@ -47,8 +61,10 @@
private final SettingsMainSwitchBar mSwitchBar;
private final LocalBluetoothManager mBtManager;
private final LocalBluetoothLeBroadcast mBroadcast;
+ private final LocalBluetoothLeBroadcastAssistant mAssistant;
private final Executor mExecutor;
private DashboardFragment mFragment;
+ private List<BluetoothDevice> mTargetSinks = new ArrayList<>();
private final BluetoothLeBroadcast.Callback mBroadcastCallback =
new BluetoothLeBroadcast.Callback() {
@@ -79,7 +95,7 @@
+ broadcastId
+ ", metadata = "
+ metadata);
- // TODO: handle add sink if there are connected lea devices.
+ addSourceToTargetDevices(mTargetSinks);
}
@Override
@@ -113,11 +129,79 @@
public void onPlaybackStopped(int reason, int broadcastId) {}
};
+ private BluetoothLeBroadcastAssistant.Callback mBroadcastAssistantCallback =
+ new BluetoothLeBroadcastAssistant.Callback() {
+ @Override
+ public void onSearchStarted(int reason) {}
+
+ @Override
+ public void onSearchStartFailed(int reason) {}
+
+ @Override
+ public void onSearchStopped(int reason) {}
+
+ @Override
+ public void onSearchStopFailed(int reason) {}
+
+ @Override
+ public void onSourceFound(@NonNull BluetoothLeBroadcastMetadata source) {}
+
+ @Override
+ public void onSourceAdded(@NonNull BluetoothDevice sink, int sourceId, int reason) {
+ Log.d(
+ TAG,
+ "onSourceAdded(), sink = "
+ + sink
+ + ", sourceId = "
+ + sourceId
+ + ", reason = "
+ + reason);
+ }
+
+ @Override
+ public void onSourceAddFailed(
+ @NonNull BluetoothDevice sink,
+ @NonNull BluetoothLeBroadcastMetadata source,
+ int reason) {
+ Log.d(
+ TAG,
+ "onSourceAddFailed(), sink = "
+ + sink
+ + ", source = "
+ + source
+ + ", reason = "
+ + reason);
+ }
+
+ @Override
+ public void onSourceModified(
+ @NonNull BluetoothDevice sink, int sourceId, int reason) {}
+
+ @Override
+ public void onSourceModifyFailed(
+ @NonNull BluetoothDevice sink, int sourceId, int reason) {}
+
+ @Override
+ public void onSourceRemoved(
+ @NonNull BluetoothDevice sink, int sourceId, int reason) {}
+
+ @Override
+ public void onSourceRemoveFailed(
+ @NonNull BluetoothDevice sink, int sourceId, int reason) {}
+
+ @Override
+ public void onReceiveStateChanged(
+ BluetoothDevice sink,
+ int sourceId,
+ BluetoothLeBroadcastReceiveState state) {}
+ };
+
AudioSharingSwitchBarController(Context context, SettingsMainSwitchBar switchBar) {
super(context, PREF_KEY);
mSwitchBar = switchBar;
mBtManager = Utils.getLocalBtManager(context);
mBroadcast = mBtManager.getProfileManager().getLeAudioBroadcastProfile();
+ mAssistant = mBtManager.getProfileManager().getLeAudioBroadcastAssistantProfile();
mExecutor = Executors.newSingleThreadExecutor();
mSwitchBar.setChecked(isBroadcasting());
}
@@ -128,6 +212,9 @@
if (mBroadcast != null) {
mBroadcast.registerServiceCallBack(mExecutor, mBroadcastCallback);
}
+ if (mAssistant != null) {
+ mAssistant.registerServiceCallBack(mExecutor, mBroadcastAssistantCallback);
+ }
}
@Override
@@ -136,6 +223,9 @@
if (mBroadcast != null) {
mBroadcast.unregisterServiceCallBack(mBroadcastCallback);
}
+ if (mAssistant != null) {
+ mAssistant.unregisterServiceCallBack(mBroadcastAssistantCallback);
+ }
}
@Override
@@ -175,18 +265,49 @@
mSwitchBar.setEnabled(true);
return;
}
- ArrayList<String> deviceNames = new ArrayList<>();
+ Map<Integer, List<CachedBluetoothDevice>> groupedDevices = fetchConnectedDevicesByGroupId();
+ ArrayList<AudioSharingDeviceItem> deviceItems = new ArrayList<>();
+ Optional<Integer> activeGroupId = Optional.empty();
+ for (List<CachedBluetoothDevice> devices : groupedDevices.values()) {
+ // Use random device in the group to represent the group.
+ CachedBluetoothDevice device = devices.get(0);
+ // TODO: add BluetoothUtils.isActiveLeAudioDevice to avoid directly using isActiveDevice
+ if (device.isActiveDevice(BluetoothProfile.LE_AUDIO)) {
+ activeGroupId = Optional.of(device.getGroupId());
+ } else {
+ AudioSharingDeviceItem item =
+ new AudioSharingDeviceItem(device.getName(), device.getGroupId());
+ deviceItems.add(item);
+ }
+ }
+ mTargetSinks = new ArrayList<>();
+ activeGroupId.ifPresent(
+ gId -> {
+ if (groupedDevices.containsKey(gId)) {
+ for (CachedBluetoothDevice device : groupedDevices.get(gId)) {
+ mTargetSinks.add(device.getDevice());
+ }
+ }
+ });
AudioSharingDialogFragment.show(
mFragment,
- deviceNames,
+ deviceItems,
new AudioSharingDialogFragment.DialogEventListener() {
@Override
- public void onItemClick(int position) {
- // TODO: handle broadcast based on the dialog device item clicked
+ public void onItemClick(AudioSharingDeviceItem item) {
+ if (groupedDevices.containsKey(item.getGroupId())) {
+ for (CachedBluetoothDevice device :
+ groupedDevices.get(item.getGroupId())) {
+ mTargetSinks.add(device.getDevice());
+ }
+ }
+ // TODO: handle app source name for broadcasting.
+ mBroadcast.startBroadcast("test", /* language= */ null);
}
@Override
public void onCancelClick() {
+ // TODO: handle app source name for broadcasting.
mBroadcast.startBroadcast("test", /* language= */ null);
}
});
@@ -213,4 +334,51 @@
private boolean isBroadcasting() {
return mBroadcast != null && mBroadcast.isEnabled(null);
}
+
+ private Map<Integer, List<CachedBluetoothDevice>> fetchConnectedDevicesByGroupId() {
+ // TODO: filter out devices with le audio disabled.
+ List<BluetoothDevice> connectedDevices =
+ mAssistant == null ? ImmutableList.of() : mAssistant.getConnectedDevices();
+ Map<Integer, List<CachedBluetoothDevice>> groupedDevices = new HashMap<>();
+ CachedBluetoothDeviceManager cacheManager = mBtManager.getCachedDeviceManager();
+ for (BluetoothDevice device : connectedDevices) {
+ CachedBluetoothDevice cachedDevice = cacheManager.findDevice(device);
+ if (cachedDevice == null) {
+ Log.d(TAG, "Skip device due to not being cached: " + device.getAnonymizedAddress());
+ continue;
+ }
+ int groupId = cachedDevice.getGroupId();
+ if (groupId == BluetoothCsipSetCoordinator.GROUP_ID_INVALID) {
+ Log.d(TAG, "Skip device due to no valid group id");
+ continue;
+ }
+ if (!groupedDevices.containsKey(groupId)) {
+ groupedDevices.put(groupId, new ArrayList<>());
+ }
+ groupedDevices.get(groupId).add(cachedDevice);
+ }
+ return groupedDevices;
+ }
+
+ private void addSourceToTargetDevices(List<BluetoothDevice> sinks) {
+ if (sinks.isEmpty() || mBroadcast == null || mAssistant == null) {
+ Log.d(TAG, "Skip adding source to target.");
+ return;
+ }
+ BluetoothLeBroadcastMetadata broadcastMetadata =
+ mBroadcast.getLatestBluetoothLeBroadcastMetadata();
+ if (broadcastMetadata == null) {
+ Log.e(TAG, "Error: There is no broadcastMetadata.");
+ return;
+ }
+ for (BluetoothDevice sink : sinks) {
+ Log.d(
+ TAG,
+ "Add broadcast with broadcastId: "
+ + broadcastMetadata.getBroadcastId()
+ + "to the device: "
+ + sink.getAnonymizedAddress());
+ mAssistant.addSource(sink, broadcastMetadata, /* isGroupOp= */ false);
+ }
+ }
}
diff --git a/src/com/android/settings/display/darkmode/DarkModeCustomBedtimePreferenceController.java b/src/com/android/settings/display/darkmode/DarkModeCustomBedtimePreferenceController.java
index c6e379c..488befb 100644
--- a/src/com/android/settings/display/darkmode/DarkModeCustomBedtimePreferenceController.java
+++ b/src/com/android/settings/display/darkmode/DarkModeCustomBedtimePreferenceController.java
@@ -20,6 +20,7 @@
import android.app.UiModeManager;
import android.content.Context;
+import android.content.Intent;
import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;
@@ -52,7 +53,12 @@
super.displayPreference(screen);
mFooterPreference = screen.findPreference(getPreferenceKey());
mFooterPreference.setLearnMoreAction(
- v -> v.getContext().startActivity(mBedtimeSettings.getBedtimeSettingsIntent()));
+ v -> {
+ Intent bedtimeSettingsIntent = mBedtimeSettings.getBedtimeSettingsIntent();
+ if (bedtimeSettingsIntent != null) {
+ v.getContext().startActivity(bedtimeSettingsIntent);
+ }
+ });
mFooterPreference.setLearnMoreText(
mContext.getString(R.string.dark_ui_bedtime_footer_action));
}
diff --git a/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java b/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java
index 5262ba9..86ef3cf 100644
--- a/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java
+++ b/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java
@@ -61,15 +61,15 @@
import java.util.concurrent.Executors;
/**
- * Power usage detail fragment for each app, this fragment contains
- *
- * 1. Detail battery usage information for app(i.e. usage time, usage amount)
+ * Power usage detail fragment for each app, this fragment contains <br>
+ * <br>
+ * 1. Detail battery usage information for app(i.e. usage time, usage amount) <br>
* 2. Battery related controls for app(i.e uninstall, force stop)
*/
-public class AdvancedPowerUsageDetail extends DashboardFragment implements
- ButtonActionDialogFragment.AppButtonsDialogListener,
- Preference.OnPreferenceClickListener,
- Preference.OnPreferenceChangeListener {
+public class AdvancedPowerUsageDetail extends DashboardFragment
+ implements ButtonActionDialogFragment.AppButtonsDialogListener,
+ Preference.OnPreferenceClickListener,
+ Preference.OnPreferenceChangeListener {
public static final String TAG = "AdvancedPowerDetail";
public static final String EXTRA_UID = "extra_uid";
public static final String EXTRA_PACKAGE_NAME = "extra_package_name";
@@ -96,23 +96,17 @@
private AppButtonsPreferenceController mAppButtonsPreferenceController;
private PowerUsageTimeController mPowerUsageTimeController;
- @VisibleForTesting
- LayoutPreference mHeaderPreference;
- @VisibleForTesting
- ApplicationsState mState;
- @VisibleForTesting
- ApplicationsState.AppEntry mAppEntry;
- @VisibleForTesting
- BatteryOptimizeUtils mBatteryOptimizeUtils;
- @VisibleForTesting
- PrimarySwitchPreference mAllowBackgroundUsagePreference;
- @VisibleForTesting
- @BatteryOptimizeUtils.OptimizationMode
+ @VisibleForTesting LayoutPreference mHeaderPreference;
+ @VisibleForTesting ApplicationsState mState;
+ @VisibleForTesting ApplicationsState.AppEntry mAppEntry;
+ @VisibleForTesting BatteryOptimizeUtils mBatteryOptimizeUtils;
+ @VisibleForTesting PrimarySwitchPreference mAllowBackgroundUsagePreference;
+
+ @VisibleForTesting @BatteryOptimizeUtils.OptimizationMode
int mOptimizationMode = BatteryOptimizeUtils.MODE_UNKNOWN;
- @VisibleForTesting
- BackupManager mBackupManager;
- @VisibleForTesting
- StringBuilder mLogStringBuilder;
+
+ @VisibleForTesting BackupManager mBackupManager;
+ @VisibleForTesting StringBuilder mLogStringBuilder;
// A wrapper class to carry LaunchBatteryDetailPage required arguments.
private static final class LaunchBatteryDetailPageArgs {
@@ -134,9 +128,14 @@
/** Launches battery details page for an individual battery consumer fragment. */
public static void startBatteryDetailPage(
- Context context, int sourceMetricsCategory,
- BatteryDiffEntry diffEntry, String usagePercent, String slotInformation,
- boolean showTimeInformation, String anomalyHintPrefKey, String anomalyHintText) {
+ Context context,
+ int sourceMetricsCategory,
+ BatteryDiffEntry diffEntry,
+ String usagePercent,
+ String slotInformation,
+ boolean showTimeInformation,
+ String anomalyHintPrefKey,
+ String anomalyHintText) {
final LaunchBatteryDetailPageArgs launchArgs = new LaunchBatteryDetailPageArgs();
// configure the launch argument.
launchArgs.mUsagePercent = usagePercent;
@@ -159,8 +158,11 @@
}
/** Launches battery details page for an individual battery consumer. */
- public static void startBatteryDetailPage(Activity caller,
- InstrumentedPreferenceFragment fragment, BatteryEntry entry, String usagePercent) {
+ public static void startBatteryDetailPage(
+ Activity caller,
+ InstrumentedPreferenceFragment fragment,
+ BatteryEntry entry,
+ String usagePercent) {
final LaunchBatteryDetailPageArgs launchArgs = new LaunchBatteryDetailPageArgs();
// configure the launch argument.
launchArgs.mUsagePercent = usagePercent;
@@ -197,8 +199,10 @@
args.putBoolean(EXTRA_SHOW_TIME_INFO, launchArgs.mShowTimeInformation);
args.putString(EXTRA_ANOMALY_HINT_PREF_KEY, launchArgs.mAnomalyHintPrefKey);
args.putString(EXTRA_ANOMALY_HINT_TEXT, launchArgs.mAnomalyHintText);
- final int userId = launchArgs.mIsUserEntry ? ActivityManager.getCurrentUser()
- : UserHandle.getUserId(launchArgs.mUid);
+ final int userId =
+ launchArgs.mIsUserEntry
+ ? ActivityManager.getCurrentUser()
+ : UserHandle.getUserId(launchArgs.mUid);
new SubSettingLauncher(context)
.setDestination(AdvancedPowerUsageDetail.class.getName())
@@ -209,11 +213,11 @@
.launch();
}
- /**
- * Start packageName's battery detail page.
- */
+ /** Start packageName's battery detail page. */
public static void startBatteryDetailPage(
- Activity caller, Instrumentable instrumentable, String packageName,
+ Activity caller,
+ Instrumentable instrumentable,
+ String packageName,
UserHandle userHandle) {
final Bundle args = new Bundle(3);
final PackageManager packageManager = caller.getPackageManager();
@@ -261,15 +265,18 @@
initHeader();
mOptimizationMode = mBatteryOptimizeUtils.getAppOptimizationMode();
initFooter();
- mExecutor.execute(() -> {
- final String packageName = BatteryUtils
- .getLoggingPackageName(getContext(), mBatteryOptimizeUtils.getPackageName());
- FeatureFactory.getFeatureFactory().getMetricsFeatureProvider()
- .action(
- getContext(),
- SettingsEnums.OPEN_APP_BATTERY_USAGE,
- packageName);
- });
+ mExecutor.execute(
+ () -> {
+ final String packageName =
+ BatteryUtils.getLoggingPackageName(
+ getContext(), mBatteryOptimizeUtils.getPackageName());
+ FeatureFactory.getFeatureFactory()
+ .getMetricsFeatureProvider()
+ .action(
+ getContext(),
+ SettingsEnums.OPEN_APP_BATTERY_USAGE,
+ packageName);
+ });
mLogStringBuilder = new StringBuilder("onResume mode = ").append(mOptimizationMode);
}
@@ -282,22 +289,23 @@
mLogStringBuilder.append(", onPause mode = ").append(currentOptimizeMode);
logMetricCategory(currentOptimizeMode);
- mExecutor.execute(() -> {
- BatteryOptimizeLogUtils.writeLog(
- getContext().getApplicationContext(),
- Action.LEAVE,
- BatteryOptimizeLogUtils.getPackageNameWithUserId(
- mBatteryOptimizeUtils.getPackageName(), UserHandle.myUserId()),
- mLogStringBuilder.toString());
- });
+ mExecutor.execute(
+ () -> {
+ BatteryOptimizeLogUtils.writeLog(
+ getContext().getApplicationContext(),
+ Action.LEAVE,
+ BatteryOptimizeLogUtils.getPackageNameWithUserId(
+ mBatteryOptimizeUtils.getPackageName(), UserHandle.myUserId()),
+ mLogStringBuilder.toString());
+ });
Log.d(TAG, "Leave with mode: " + currentOptimizeMode);
}
@VisibleForTesting
void notifyBackupManager() {
if (mOptimizationMode != mBatteryOptimizeUtils.getAppOptimizationMode()) {
- final BackupManager backupManager = mBackupManager != null
- ? mBackupManager : new BackupManager(getContext());
+ final BackupManager backupManager =
+ mBackupManager != null ? mBackupManager : new BackupManager(getContext());
backupManager.dataChanged();
}
}
@@ -307,10 +315,11 @@
final View appSnippet = mHeaderPreference.findViewById(R.id.entity_header);
final Activity context = getActivity();
final Bundle bundle = getArguments();
- EntityHeaderController controller = EntityHeaderController
- .newInstance(context, this, appSnippet)
- .setButtonActions(EntityHeaderController.ActionType.ACTION_NONE,
- EntityHeaderController.ActionType.ACTION_NONE);
+ EntityHeaderController controller =
+ EntityHeaderController.newInstance(context, this, appSnippet)
+ .setButtonActions(
+ EntityHeaderController.ActionType.ACTION_NONE,
+ EntityHeaderController.ActionType.ACTION_NONE);
if (mAppEntry == null) {
controller.setLabel(bundle.getString(EXTRA_LABEL));
@@ -334,8 +343,12 @@
final long backgroundTimeMs = bundle.getLong(EXTRA_BACKGROUND_TIME);
final String anomalyHintPrefKey = bundle.getString(EXTRA_ANOMALY_HINT_PREF_KEY);
final String anomalyHintText = bundle.getString(EXTRA_ANOMALY_HINT_TEXT);
- mPowerUsageTimeController.handleScreenTimeUpdated(slotTime, screenOnTimeInMs,
- backgroundTimeMs, anomalyHintPrefKey, anomalyHintText);
+ mPowerUsageTimeController.handleScreenTimeUpdated(
+ slotTime,
+ screenOnTimeInMs,
+ backgroundTimeMs,
+ anomalyHintPrefKey,
+ anomalyHintText);
}
controller.done(true /* rebindActions */);
}
@@ -387,9 +400,15 @@
final int uid = bundle.getInt(EXTRA_UID, 0);
final String packageName = bundle.getString(EXTRA_PACKAGE_NAME);
- mAppButtonsPreferenceController = new AppButtonsPreferenceController(
- (SettingsActivity) getActivity(), this, getSettingsLifecycle(),
- packageName, mState, REQUEST_UNINSTALL, REQUEST_REMOVE_DEVICE_ADMIN);
+ mAppButtonsPreferenceController =
+ new AppButtonsPreferenceController(
+ (SettingsActivity) getActivity(),
+ this,
+ getSettingsLifecycle(),
+ packageName,
+ mState,
+ REQUEST_UNINSTALL,
+ REQUEST_REMOVE_DEVICE_ADMIN);
if (bundle.getBoolean(EXTRA_SHOW_TIME_INFO, false)) {
mPowerUsageTimeController = new PowerUsageTimeController(getContext());
controllers.add(mPowerUsageTimeController);
@@ -461,17 +480,20 @@
return;
}
int finalMetricCategory = metricCategory;
- mExecutor.execute(() -> {
- String packageName = BatteryUtils
- .getLoggingPackageName(getContext(), mBatteryOptimizeUtils.getPackageName());
- FeatureFactory.getFeatureFactory().getMetricsFeatureProvider()
- .action(
- /* attribution */ SettingsEnums.OPEN_APP_BATTERY_USAGE,
- /* action */ finalMetricCategory,
- /* pageId */ SettingsEnums.OPEN_APP_BATTERY_USAGE,
- packageName,
- getArguments().getInt(EXTRA_POWER_USAGE_AMOUNT));
- });
+ mExecutor.execute(
+ () -> {
+ String packageName =
+ BatteryUtils.getLoggingPackageName(
+ getContext(), mBatteryOptimizeUtils.getPackageName());
+ FeatureFactory.getFeatureFactory()
+ .getMetricsFeatureProvider()
+ .action(
+ /* attribution */ SettingsEnums.OPEN_APP_BATTERY_USAGE,
+ /* action */ finalMetricCategory,
+ /* pageId */ SettingsEnums.OPEN_APP_BATTERY_USAGE,
+ packageName,
+ getArguments().getInt(EXTRA_POWER_USAGE_AMOUNT));
+ });
}
private void onCreateBackgroundUsageState(String packageName) {
diff --git a/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetailActivity.java b/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetailActivity.java
index 67f2323..3ef2c0c 100644
--- a/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetailActivity.java
+++ b/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetailActivity.java
@@ -29,14 +29,11 @@
import androidx.appcompat.app.AppCompatActivity;
-import com.android.settings.core.SubSettingLauncher;
-import com.android.settings.fuelgauge.AdvancedPowerUsageDetail;
import com.android.settings.R;
import com.android.settings.Utils;
+import com.android.settings.core.SubSettingLauncher;
-/**
- * Trampoline activity for launching the {@link AdvancedPowerUsageDetail} fragment.
- */
+/** Trampoline activity for launching the {@link AdvancedPowerUsageDetail} fragment. */
public class AdvancedPowerUsageDetailActivity extends AppCompatActivity {
private static final String TAG = "AdvancedPowerDetailActivity";
diff --git a/src/com/android/settings/fuelgauge/AllowBackgroundPreferenceController.java b/src/com/android/settings/fuelgauge/AllowBackgroundPreferenceController.java
index d722bad..ab9a9e0 100644
--- a/src/com/android/settings/fuelgauge/AllowBackgroundPreferenceController.java
+++ b/src/com/android/settings/fuelgauge/AllowBackgroundPreferenceController.java
@@ -53,8 +53,9 @@
public void updateState(Preference preference) {
preference.setEnabled(mBatteryOptimizeUtils.isOptimizeModeMutable());
- final boolean isAllowBackground = mBatteryOptimizeUtils.getAppOptimizationMode()
- != BatteryOptimizeUtils.MODE_RESTRICTED;
+ final boolean isAllowBackground =
+ mBatteryOptimizeUtils.getAppOptimizationMode()
+ != BatteryOptimizeUtils.MODE_RESTRICTED;
setChecked(preference, isAllowBackground);
}
diff --git a/src/com/android/settings/fuelgauge/AutoRestrictionPreferenceController.java b/src/com/android/settings/fuelgauge/AutoRestrictionPreferenceController.java
index 8ed4c54..318f230 100644
--- a/src/com/android/settings/fuelgauge/AutoRestrictionPreferenceController.java
+++ b/src/com/android/settings/fuelgauge/AutoRestrictionPreferenceController.java
@@ -24,11 +24,9 @@
import com.android.settings.core.BasePreferenceController;
import com.android.settings.overlay.FeatureFactory;
-/**
- * Controller to change and update the auto restriction toggle
- */
-public class AutoRestrictionPreferenceController extends BasePreferenceController implements
- Preference.OnPreferenceChangeListener {
+/** Controller to change and update the auto restriction toggle */
+public class AutoRestrictionPreferenceController extends BasePreferenceController
+ implements Preference.OnPreferenceChangeListener {
private static final String KEY_SMART_BATTERY = "auto_restriction";
private static final int ON = 1;
private static final int OFF = 0;
@@ -50,15 +48,20 @@
@Override
public void updateState(Preference preference) {
super.updateState(preference);
- final boolean smartBatteryOn = Settings.Global.getInt(mContext.getContentResolver(),
- Settings.Global.APP_AUTO_RESTRICTION_ENABLED, ON) == ON;
+ final boolean smartBatteryOn =
+ Settings.Global.getInt(
+ mContext.getContentResolver(),
+ Settings.Global.APP_AUTO_RESTRICTION_ENABLED,
+ ON)
+ == ON;
((TwoStatePreference) preference).setChecked(smartBatteryOn);
}
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
final boolean smartBatteryOn = (Boolean) newValue;
- Settings.Global.putInt(mContext.getContentResolver(),
+ Settings.Global.putInt(
+ mContext.getContentResolver(),
Settings.Global.APP_AUTO_RESTRICTION_ENABLED,
smartBatteryOn ? ON : OFF);
return true;
diff --git a/src/com/android/settings/fuelgauge/BatteryActiveView.java b/src/com/android/settings/fuelgauge/BatteryActiveView.java
index 4856b3d..a9aa6a4 100644
--- a/src/com/android/settings/fuelgauge/BatteryActiveView.java
+++ b/src/com/android/settings/fuelgauge/BatteryActiveView.java
@@ -63,13 +63,15 @@
return;
}
mPaint.setColor(color);
- canvas.drawRect(start / period * getWidth(), 0, end / period * getWidth(), getHeight(),
- mPaint);
+ canvas.drawRect(
+ start / period * getWidth(), 0, end / period * getWidth(), getHeight(), mPaint);
}
public interface BatteryActiveProvider {
boolean hasData();
+
long getPeriod();
+
SparseIntArray getColorArray();
}
}
diff --git a/src/com/android/settings/fuelgauge/BatteryBackupHelper.java b/src/com/android/settings/fuelgauge/BatteryBackupHelper.java
index 821501c..797b7ad 100644
--- a/src/com/android/settings/fuelgauge/BatteryBackupHelper.java
+++ b/src/com/android/settings/fuelgauge/BatteryBackupHelper.java
@@ -52,6 +52,7 @@
public final class BatteryBackupHelper implements BackupHelper {
/** An inditifier for {@link BackupHelper}. */
public static final String TAG = "BatteryBackupHelper";
+
// Definition for the device build information.
public static final String KEY_BUILD_BRAND = "device_build_brand";
public static final String KEY_BUILD_PRODUCT = "device_build_product";
@@ -70,17 +71,12 @@
static final String DELIMITER_MODE = ":";
static final String KEY_OPTIMIZATION_LIST = "optimization_mode_list";
- @VisibleForTesting
- ArraySet<ApplicationInfo> mTestApplicationInfoList = null;
+ @VisibleForTesting ArraySet<ApplicationInfo> mTestApplicationInfoList = null;
- @VisibleForTesting
- PowerAllowlistBackend mPowerAllowlistBackend;
- @VisibleForTesting
- IDeviceIdleController mIDeviceIdleController;
- @VisibleForTesting
- IPackageManager mIPackageManager;
- @VisibleForTesting
- BatteryOptimizeUtils mBatteryOptimizeUtils;
+ @VisibleForTesting PowerAllowlistBackend mPowerAllowlistBackend;
+ @VisibleForTesting IDeviceIdleController mIDeviceIdleController;
+ @VisibleForTesting IPackageManager mIPackageManager;
+ @VisibleForTesting BatteryOptimizeUtils mBatteryOptimizeUtils;
private byte[] mOptimizationModeBytes;
private boolean mVerifyMigrateConfiguration = false;
@@ -95,8 +91,8 @@
}
@Override
- public void performBackup(ParcelFileDescriptor oldState, BackupDataOutput data,
- ParcelFileDescriptor newState) {
+ public void performBackup(
+ ParcelFileDescriptor oldState, BackupDataOutput data, ParcelFileDescriptor newState) {
if (!isOwner() || data == null) {
Log.w(TAG, "ignore performBackup() for non-owner or empty data");
return;
@@ -149,8 +145,7 @@
}
@Override
- public void writeNewStateDescription(ParcelFileDescriptor newState) {
- }
+ public void writeNewStateDescription(ParcelFileDescriptor newState) {}
private List<String> getFullPowerList() {
final long timestamp = System.currentTimeMillis();
@@ -166,8 +161,11 @@
Log.w(TAG, "no data found in the getFullPowerList()");
return new ArrayList<>();
}
- Log.d(TAG, String.format("getFullPowerList() size=%d in %d/ms",
- allowlistedApps.length, (System.currentTimeMillis() - timestamp)));
+ Log.d(
+ TAG,
+ String.format(
+ "getFullPowerList() size=%d in %d/ms",
+ allowlistedApps.length, (System.currentTimeMillis() - timestamp)));
return Arrays.asList(allowlistedApps);
}
@@ -187,27 +185,34 @@
for (ApplicationInfo info : applications) {
final int mode = BatteryOptimizeUtils.getMode(appOps, info.uid, info.packageName);
@BatteryOptimizeUtils.OptimizationMode
- final int optimizationMode = BatteryOptimizeUtils.getAppOptimizationMode(
- mode, allowlistedApps.contains(info.packageName));
+ final int optimizationMode =
+ BatteryOptimizeUtils.getAppOptimizationMode(
+ mode, allowlistedApps.contains(info.packageName));
// Ignores default optimized/unknown state or system/default apps.
if (optimizationMode == BatteryOptimizeUtils.MODE_OPTIMIZED
|| optimizationMode == BatteryOptimizeUtils.MODE_UNKNOWN
|| isSystemOrDefaultApp(info.packageName, info.uid)) {
continue;
}
- final String packageOptimizeMode =
- info.packageName + DELIMITER_MODE + optimizationMode;
+ final String packageOptimizeMode = info.packageName + DELIMITER_MODE + optimizationMode;
builder.append(packageOptimizeMode + DELIMITER);
Log.d(TAG, "backupOptimizationMode: " + packageOptimizeMode);
BatteryOptimizeLogUtils.writeLog(
- sharedPreferences, Action.BACKUP, info.packageName,
+ sharedPreferences,
+ Action.BACKUP,
+ info.packageName,
/* actionDescription */ "mode: " + optimizationMode);
backupCount++;
}
writeBackupData(data, KEY_OPTIMIZATION_LIST, builder.toString());
- Log.d(TAG, String.format("backup getInstalledApplications():%d count=%d in %d/ms",
- applications.size(), backupCount, (System.currentTimeMillis() - timestamp)));
+ Log.d(
+ TAG,
+ String.format(
+ "backup getInstalledApplications():%d count=%d in %d/ms",
+ applications.size(),
+ backupCount,
+ (System.currentTimeMillis() - timestamp)));
}
@VisibleForTesting
@@ -225,8 +230,8 @@
}
int restoreCount = 0;
for (int index = 0; index < appConfigurations.length; index++) {
- final String[] results = appConfigurations[index]
- .split(BatteryBackupHelper.DELIMITER_MODE);
+ final String[] results =
+ appConfigurations[index].split(BatteryBackupHelper.DELIMITER_MODE);
// Example format: com.android.systemui:2 we should have length=2
if (results == null || results.length != 2) {
Log.w(TAG, "invalid raw data found:" + appConfigurations[index]);
@@ -244,15 +249,17 @@
try {
optimizationMode = Integer.parseInt(results[1]);
} catch (NumberFormatException e) {
- Log.e(TAG, "failed to parse the optimization mode: "
- + appConfigurations[index], e);
+ Log.e(TAG, "failed to parse the optimization mode: " + appConfigurations[index], e);
continue;
}
restoreOptimizationMode(packageName, optimizationMode);
restoreCount++;
}
- Log.d(TAG, String.format("restoreOptimizationMode() count=%d in %d/ms",
- restoreCount, (System.currentTimeMillis() - timestamp)));
+ Log.d(
+ TAG,
+ String.format(
+ "restoreOptimizationMode() count=%d in %d/ms",
+ restoreCount, (System.currentTimeMillis() - timestamp)));
return restoreCount;
}
@@ -319,8 +326,9 @@
if (mIDeviceIdleController != null) {
return mIDeviceIdleController;
}
- mIDeviceIdleController = IDeviceIdleController.Stub.asInterface(
- ServiceManager.getService(DEVICE_IDLE_SERVICE));
+ mIDeviceIdleController =
+ IDeviceIdleController.Stub.asInterface(
+ ServiceManager.getService(DEVICE_IDLE_SERVICE));
return mIDeviceIdleController;
}
@@ -374,8 +382,7 @@
return dataBytes;
}
- private static void writeBackupData(
- BackupDataOutput data, String dataKey, String dataContent) {
+ private static void writeBackupData(BackupDataOutput data, String dataKey, String dataContent) {
if (dataContent == null || dataContent.isEmpty()) {
return;
}
diff --git a/src/com/android/settings/fuelgauge/BatteryBroadcastReceiver.java b/src/com/android/settings/fuelgauge/BatteryBroadcastReceiver.java
index 79ecd40..324f897 100644
--- a/src/com/android/settings/fuelgauge/BatteryBroadcastReceiver.java
+++ b/src/com/android/settings/fuelgauge/BatteryBroadcastReceiver.java
@@ -34,19 +34,19 @@
import java.lang.annotation.RetentionPolicy;
/**
- * Use this broadcastReceiver to listen to the battery change and it will invoke
- * {@link OnBatteryChangedListener}
+ * Use this broadcastReceiver to listen to the battery change and it will invoke {@link
+ * OnBatteryChangedListener}
*/
public class BatteryBroadcastReceiver extends BroadcastReceiver {
private static final String TAG = "BatteryBroadcastRcvr";
+
/**
- * Callback if any of the monitored fields has been changed:
- *
- * Battery level(e.g. 100%->99%)
- * Battery status(e.g. plugged->unplugged)
- * Battery saver(e.g. off->on)
- * Battery health(e.g. good->overheat)
+ * Callback if any of the monitored fields has been changed: <br>
+ * <br>
+ * Battery level(e.g. 100%->99%) Battery status(e.g. plugged->unplugged) <br>
+ * Battery saver(e.g.off->on) <br>
+ * Battery health(e.g. good->overheat) <br>
* Battery charging status(e.g. default->long life)
*/
public interface OnBatteryChangedListener {
@@ -54,13 +54,15 @@
}
@Retention(RetentionPolicy.SOURCE)
- @IntDef({BatteryUpdateType.MANUAL,
- BatteryUpdateType.BATTERY_LEVEL,
- BatteryUpdateType.BATTERY_SAVER,
- BatteryUpdateType.BATTERY_STATUS,
- BatteryUpdateType.BATTERY_HEALTH,
- BatteryUpdateType.CHARGING_STATUS,
- BatteryUpdateType.BATTERY_NOT_PRESENT})
+ @IntDef({
+ BatteryUpdateType.MANUAL,
+ BatteryUpdateType.BATTERY_LEVEL,
+ BatteryUpdateType.BATTERY_SAVER,
+ BatteryUpdateType.BATTERY_STATUS,
+ BatteryUpdateType.BATTERY_HEALTH,
+ BatteryUpdateType.CHARGING_STATUS,
+ BatteryUpdateType.BATTERY_NOT_PRESENT
+ })
public @interface BatteryUpdateType {
int MANUAL = 0;
int BATTERY_LEVEL = 1;
@@ -71,14 +73,10 @@
int BATTERY_NOT_PRESENT = 6;
}
- @VisibleForTesting
- String mBatteryLevel;
- @VisibleForTesting
- String mBatteryStatus;
- @VisibleForTesting
- int mChargingStatus;
- @VisibleForTesting
- int mBatteryHealth;
+ @VisibleForTesting String mBatteryLevel;
+ @VisibleForTesting String mBatteryStatus;
+ @VisibleForTesting int mChargingStatus;
+ @VisibleForTesting int mBatteryHealth;
private OnBatteryChangedListener mBatteryListener;
private Context mContext;
@@ -102,8 +100,8 @@
intentFilter.addAction(BatteryUtils.BYPASS_DOCK_DEFENDER_ACTION);
intentFilter.addAction(UsbManager.ACTION_USB_PORT_COMPLIANCE_CHANGED);
- final Intent intent = mContext.registerReceiver(this, intentFilter,
- Context.RECEIVER_EXPORTED);
+ final Intent intent =
+ mContext.registerReceiver(this, intentFilter, Context.RECEIVER_EXPORTED);
updateBatteryStatus(intent, true /* forceUpdate */);
}
@@ -121,10 +119,13 @@
final String batteryLevel = Utils.getBatteryPercentage(intent);
final String batteryStatus =
Utils.getBatteryStatus(mContext, intent, /* compactStatus= */ false);
- final int chargingStatus = intent.getIntExtra(
- BatteryManager.EXTRA_CHARGING_STATUS, BatteryManager.CHARGING_POLICY_DEFAULT);
- final int batteryHealth = intent.getIntExtra(
- BatteryManager.EXTRA_HEALTH, BatteryManager.BATTERY_HEALTH_UNKNOWN);
+ final int chargingStatus =
+ intent.getIntExtra(
+ BatteryManager.EXTRA_CHARGING_STATUS,
+ BatteryManager.CHARGING_POLICY_DEFAULT);
+ final int batteryHealth =
+ intent.getIntExtra(
+ BatteryManager.EXTRA_HEALTH, BatteryManager.BATTERY_HEALTH_UNKNOWN);
Log.d(
TAG,
"Battery changed: level: "
@@ -144,7 +145,7 @@
mBatteryListener.onBatteryChanged(BatteryUpdateType.CHARGING_STATUS);
} else if (batteryHealth != mBatteryHealth) {
mBatteryListener.onBatteryChanged(BatteryUpdateType.BATTERY_HEALTH);
- } else if(!batteryLevel.equals(mBatteryLevel)) {
+ } else if (!batteryLevel.equals(mBatteryLevel)) {
mBatteryListener.onBatteryChanged(BatteryUpdateType.BATTERY_LEVEL);
} else if (!batteryStatus.equals(mBatteryStatus)) {
mBatteryListener.onBatteryChanged(BatteryUpdateType.BATTERY_STATUS);
diff --git a/src/com/android/settings/fuelgauge/BatteryHeaderPreferenceController.java b/src/com/android/settings/fuelgauge/BatteryHeaderPreferenceController.java
index a8335a9..d0b57fd 100644
--- a/src/com/android/settings/fuelgauge/BatteryHeaderPreferenceController.java
+++ b/src/com/android/settings/fuelgauge/BatteryHeaderPreferenceController.java
@@ -34,21 +34,16 @@
import com.android.settingslib.Utils;
import com.android.settingslib.widget.UsageProgressBarPreference;
-/**
- * Controller that update the battery header view
- */
+/** Controller that update the battery header view */
public class BatteryHeaderPreferenceController extends BasePreferenceController
implements PreferenceControllerMixin, BatteryPreferenceController {
private static final String TAG = "BatteryHeaderPreferenceController";
- @VisibleForTesting
- static final String KEY_BATTERY_HEADER = "battery_header";
+ @VisibleForTesting static final String KEY_BATTERY_HEADER = "battery_header";
private static final int BATTERY_MAX_LEVEL = 100;
- @VisibleForTesting
- BatteryStatusFeatureProvider mBatteryStatusFeatureProvider;
- @VisibleForTesting
- UsageProgressBarPreference mBatteryUsageProgressBarPref;
+ @VisibleForTesting BatteryStatusFeatureProvider mBatteryStatusFeatureProvider;
+ @VisibleForTesting UsageProgressBarPreference mBatteryUsageProgressBarPref;
private BatteryTip mBatteryTip;
private final PowerManager mPowerManager;
@@ -56,8 +51,8 @@
public BatteryHeaderPreferenceController(Context context, String key) {
super(context, key);
mPowerManager = context.getSystemService(PowerManager.class);
- mBatteryStatusFeatureProvider = FeatureFactory.getFeatureFactory()
- .getBatteryStatusFeatureProvider();
+ mBatteryStatusFeatureProvider =
+ FeatureFactory.getFeatureFactory().getBatteryStatusFeatureProvider();
}
@Override
@@ -96,12 +91,11 @@
R.string.battery_state_and_duration, info.statusLabel, info.remainingLabel);
} else if (mPowerManager.isPowerSaveMode()) {
// Power save mode is on
- final String powerSaverOn = mContext.getString(
- R.string.battery_tip_early_heads_up_done_title);
+ final String powerSaverOn =
+ mContext.getString(R.string.battery_tip_early_heads_up_done_title);
return mContext.getString(
R.string.battery_state_and_duration, powerSaverOn, info.remainingLabel);
- } else if (mBatteryTip != null
- && mBatteryTip.getType() == BatteryTip.TipType.LOW_BATTERY) {
+ } else if (mBatteryTip != null && mBatteryTip.getType() == BatteryTip.TipType.LOW_BATTERY) {
// Low battery state
final String lowBattery = mContext.getString(R.string.low_battery_summary);
return mContext.getString(
@@ -122,9 +116,7 @@
mBatteryUsageProgressBarPref.setPercent(info.batteryLevel, BATTERY_MAX_LEVEL);
}
- /**
- * Callback which receives text for the summary line.
- */
+ /** Callback which receives text for the summary line. */
public void updateBatteryStatus(String label, BatteryInfo info) {
final CharSequence summary = label != null ? label : generateLabel(info);
mBatteryUsageProgressBarPref.setBottomSummary(summary);
@@ -132,8 +124,8 @@
}
public void quickUpdateHeaderPreference() {
- Intent batteryBroadcast = com.android.settingslib.fuelgauge.BatteryUtils
- .getBatteryIntent(mContext);
+ Intent batteryBroadcast =
+ com.android.settingslib.fuelgauge.BatteryUtils.getBatteryIntent(mContext);
final int batteryLevel = Utils.getBatteryLevel(batteryBroadcast);
final boolean discharging =
batteryBroadcast.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1) == 0;
@@ -142,9 +134,7 @@
mBatteryUsageProgressBarPref.setPercent(batteryLevel, BATTERY_MAX_LEVEL);
}
- /**
- * Update summary when battery tips changed.
- */
+ /** Update summary when battery tips changed. */
public void updateHeaderByBatteryTips(BatteryTip batteryTip, BatteryInfo batteryInfo) {
mBatteryTip = batteryTip;
@@ -154,7 +144,8 @@
}
private CharSequence formatBatteryPercentageText(int batteryLevel) {
- return TextUtils.expandTemplate(mContext.getText(R.string.battery_header_title_alternate),
+ return TextUtils.expandTemplate(
+ mContext.getText(R.string.battery_header_title_alternate),
NumberFormat.getIntegerInstance().format(batteryLevel));
}
}
diff --git a/src/com/android/settings/fuelgauge/BatteryInfo.java b/src/com/android/settings/fuelgauge/BatteryInfo.java
index 50ce579..ea8ef8d 100644
--- a/src/com/android/settings/fuelgauge/BatteryInfo.java
+++ b/src/com/android/settings/fuelgauge/BatteryInfo.java
@@ -68,93 +68,110 @@
public void bindHistory(final UsageView view, BatteryDataParser... parsers) {
final Context context = view.getContext();
- BatteryDataParser parser = new BatteryDataParser() {
- SparseIntArray points = new SparseIntArray();
- long startTime;
- int lastTime = -1;
- byte lastLevel;
+ BatteryDataParser parser =
+ new BatteryDataParser() {
+ SparseIntArray mPoints = new SparseIntArray();
+ long mStartTime;
+ int mLastTime = -1;
+ byte mLastLevel;
- @Override
- public void onParsingStarted(long startTime, long endTime) {
- this.startTime = startTime;
- timePeriod = endTime - startTime;
- view.clearPaths();
- // Initially configure the graph for history only.
- view.configureGraph((int) timePeriod, 100);
- }
+ @Override
+ public void onParsingStarted(long startTime, long endTime) {
+ this.mStartTime = startTime;
+ timePeriod = endTime - startTime;
+ view.clearPaths();
+ // Initially configure the graph for history only.
+ view.configureGraph((int) timePeriod, 100);
+ }
- @Override
- public void onDataPoint(long time, HistoryItem record) {
- lastTime = (int) time;
- lastLevel = record.batteryLevel;
- points.put(lastTime, lastLevel);
- }
+ @Override
+ public void onDataPoint(long time, HistoryItem record) {
+ mLastTime = (int) time;
+ mLastLevel = record.batteryLevel;
+ mPoints.put(mLastTime, mLastLevel);
+ }
- @Override
- public void onDataGap() {
- if (points.size() > 1) {
- view.addPath(points);
- }
- points.clear();
- }
+ @Override
+ public void onDataGap() {
+ if (mPoints.size() > 1) {
+ view.addPath(mPoints);
+ }
+ mPoints.clear();
+ }
- @Override
- public void onParsingDone() {
- onDataGap();
+ @Override
+ public void onParsingDone() {
+ onDataGap();
- // Add projection if we have an estimate.
- if (remainingTimeUs != 0) {
- PowerUsageFeatureProvider provider =
- FeatureFactory.getFeatureFactory().getPowerUsageFeatureProvider();
- if (!mCharging && provider.isEnhancedBatteryPredictionEnabled(context)) {
- points = provider.getEnhancedBatteryPredictionCurve(context, startTime);
- } else {
- // Linear extrapolation.
- if (lastTime >= 0) {
- points.put(lastTime, lastLevel);
- points.put((int) (timePeriod +
- PowerUtil.convertUsToMs(remainingTimeUs)),
- mCharging ? 100 : 0);
+ // Add projection if we have an estimate.
+ if (remainingTimeUs != 0) {
+ PowerUsageFeatureProvider provider =
+ FeatureFactory.getFeatureFactory()
+ .getPowerUsageFeatureProvider();
+ if (!mCharging
+ && provider.isEnhancedBatteryPredictionEnabled(context)) {
+ mPoints =
+ provider.getEnhancedBatteryPredictionCurve(
+ context, mStartTime);
+ } else {
+ // Linear extrapolation.
+ if (mLastTime >= 0) {
+ mPoints.put(mLastTime, mLastLevel);
+ mPoints.put(
+ (int)
+ (timePeriod
+ + PowerUtil.convertUsToMs(
+ remainingTimeUs)),
+ mCharging ? 100 : 0);
+ }
+ }
+ }
+
+ // If we have a projection, reconfigure the graph to show it.
+ if (mPoints != null && mPoints.size() > 0) {
+ int maxTime = mPoints.keyAt(mPoints.size() - 1);
+ view.configureGraph(maxTime, 100);
+ view.addProjectedPath(mPoints);
}
}
- }
-
- // If we have a projection, reconfigure the graph to show it.
- if (points != null && points.size() > 0) {
- int maxTime = points.keyAt(points.size() - 1);
- view.configureGraph(maxTime, 100);
- view.addProjectedPath(points);
- }
- }
- };
+ };
BatteryDataParser[] parserList = new BatteryDataParser[parsers.length + 1];
for (int i = 0; i < parsers.length; i++) {
parserList[i] = parsers[i];
}
parserList[parsers.length] = parser;
parseBatteryHistory(parserList);
- String timeString = context.getString(com.android.settingslib.R.string.charge_length_format,
- Formatter.formatShortElapsedTime(context, timePeriod));
+ String timeString =
+ context.getString(
+ com.android.settingslib.R.string.charge_length_format,
+ Formatter.formatShortElapsedTime(context, timePeriod));
String remaining = "";
if (remainingTimeUs != 0) {
- remaining = context.getString(com.android.settingslib.R.string.remaining_length_format,
- Formatter.formatShortElapsedTime(context, remainingTimeUs / 1000));
+ remaining =
+ context.getString(
+ com.android.settingslib.R.string.remaining_length_format,
+ Formatter.formatShortElapsedTime(context, remainingTimeUs / 1000));
}
- view.setBottomLabels(new CharSequence[]{timeString, remaining});
+ view.setBottomLabels(new CharSequence[] {timeString, remaining});
}
- public static void getBatteryInfo(final Context context, final Callback callback,
- boolean shortString) {
- BatteryInfo.getBatteryInfo(context, callback, /* batteryUsageStats */ null, shortString);
+ /** Gets battery info */
+ public static void getBatteryInfo(
+ final Context context, final Callback callback, boolean shortString) {
+ BatteryInfo.getBatteryInfo(context, callback, /* batteryUsageStats */ null, shortString);
}
static long getSettingsChargeTimeRemaining(final Context context) {
return Settings.Global.getLong(
context.getContentResolver(),
- com.android.settingslib.fuelgauge.BatteryUtils.GLOBAL_TIME_TO_FULL_MILLIS, -1);
+ com.android.settingslib.fuelgauge.BatteryUtils.GLOBAL_TIME_TO_FULL_MILLIS,
+ -1);
}
- public static void getBatteryInfo(final Context context, final Callback callback,
+ /** Gets battery info */
+ public static void getBatteryInfo(
+ final Context context,
+ final Callback callback,
@Nullable final BatteryUsageStats batteryUsageStats,
boolean shortString) {
new AsyncTask<Void, Void, BatteryInfo>() {
@@ -166,8 +183,9 @@
stats = batteryUsageStats;
} else {
try {
- stats = context.getSystemService(BatteryStatsManager.class)
- .getBatteryUsageStats();
+ stats =
+ context.getSystemService(BatteryStatsManager.class)
+ .getBatteryUsageStats();
shouldCloseBatteryUsageStats = true;
} catch (RuntimeException e) {
Log.e(TAG, "getBatteryInfo() from getBatteryUsageStats()", e);
@@ -175,8 +193,7 @@
stats = new BatteryUsageStats.Builder(new String[0]).build();
}
}
- final BatteryInfo batteryInfo =
- getBatteryInfo(context, stats, shortString);
+ final BatteryInfo batteryInfo = getBatteryInfo(context, stats, shortString);
if (shouldCloseBatteryUsageStats) {
try {
stats.close();
@@ -196,23 +213,22 @@
}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
- /**
- * Creates a BatteryInfo based on BatteryUsageStats
- */
+ /** Creates a BatteryInfo based on BatteryUsageStats */
@WorkerThread
- public static BatteryInfo getBatteryInfo(final Context context,
- @NonNull final BatteryUsageStats batteryUsageStats, boolean shortString) {
+ public static BatteryInfo getBatteryInfo(
+ final Context context,
+ @NonNull final BatteryUsageStats batteryUsageStats,
+ boolean shortString) {
final long batteryStatsTime = System.currentTimeMillis();
BatteryUtils.logRuntime(LOG_TAG, "time for getStats", batteryStatsTime);
final long startTime = System.currentTimeMillis();
PowerUsageFeatureProvider provider =
FeatureFactory.getFeatureFactory().getPowerUsageFeatureProvider();
- final long elapsedRealtimeUs =
- PowerUtil.convertMsToUs(SystemClock.elapsedRealtime());
+ final long elapsedRealtimeUs = PowerUtil.convertMsToUs(SystemClock.elapsedRealtime());
- final Intent batteryBroadcast = context.registerReceiver(null,
- new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
+ final Intent batteryBroadcast =
+ context.registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
// 0 means we are discharging, anything else means charging
final boolean discharging =
batteryBroadcast.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1) == 0;
@@ -221,40 +237,65 @@
Estimate estimate = provider.getEnhancedBatteryPrediction(context);
if (estimate != null) {
Estimate.storeCachedEstimate(context, estimate);
- BatteryUtils
- .logRuntime(LOG_TAG, "time for enhanced BatteryInfo", startTime);
- return BatteryInfo.getBatteryInfo(context, batteryBroadcast, batteryUsageStats,
- estimate, elapsedRealtimeUs, shortString);
+ BatteryUtils.logRuntime(LOG_TAG, "time for enhanced BatteryInfo", startTime);
+ return BatteryInfo.getBatteryInfo(
+ context,
+ batteryBroadcast,
+ batteryUsageStats,
+ estimate,
+ elapsedRealtimeUs,
+ shortString);
}
}
final long prediction = discharging ? batteryUsageStats.getBatteryTimeRemainingMs() : 0;
- final Estimate estimate = new Estimate(
- prediction,
- false, /* isBasedOnUsage */
- EstimateKt.AVERAGE_TIME_TO_DISCHARGE_UNKNOWN);
+ final Estimate estimate =
+ new Estimate(
+ prediction,
+ false, /* isBasedOnUsage */
+ EstimateKt.AVERAGE_TIME_TO_DISCHARGE_UNKNOWN);
BatteryUtils.logRuntime(LOG_TAG, "time for regular BatteryInfo", startTime);
- return BatteryInfo.getBatteryInfo(context, batteryBroadcast, batteryUsageStats,
- estimate, elapsedRealtimeUs, shortString);
+ return BatteryInfo.getBatteryInfo(
+ context,
+ batteryBroadcast,
+ batteryUsageStats,
+ estimate,
+ elapsedRealtimeUs,
+ shortString);
}
@WorkerThread
- public static BatteryInfo getBatteryInfoOld(Context context, Intent batteryBroadcast,
- BatteryUsageStats batteryUsageStats, long elapsedRealtimeUs, boolean shortString) {
- Estimate estimate = new Estimate(
- batteryUsageStats.getBatteryTimeRemainingMs(),
- false,
- EstimateKt.AVERAGE_TIME_TO_DISCHARGE_UNKNOWN);
- return getBatteryInfo(context, batteryBroadcast, batteryUsageStats, estimate,
- elapsedRealtimeUs, shortString);
+ public static BatteryInfo getBatteryInfoOld(
+ Context context,
+ Intent batteryBroadcast,
+ BatteryUsageStats batteryUsageStats,
+ long elapsedRealtimeUs,
+ boolean shortString) {
+ Estimate estimate =
+ new Estimate(
+ batteryUsageStats.getBatteryTimeRemainingMs(),
+ false,
+ EstimateKt.AVERAGE_TIME_TO_DISCHARGE_UNKNOWN);
+ return getBatteryInfo(
+ context,
+ batteryBroadcast,
+ batteryUsageStats,
+ estimate,
+ elapsedRealtimeUs,
+ shortString);
}
@WorkerThread
- public static BatteryInfo getBatteryInfo(Context context, Intent batteryBroadcast,
- @NonNull BatteryUsageStats batteryUsageStats, Estimate estimate,
- long elapsedRealtimeUs, boolean shortString) {
+ public static BatteryInfo getBatteryInfo(
+ Context context,
+ Intent batteryBroadcast,
+ @NonNull BatteryUsageStats batteryUsageStats,
+ Estimate estimate,
+ long elapsedRealtimeUs,
+ boolean shortString) {
final long startTime = System.currentTimeMillis();
- final boolean isCompactStatus = context.getResources().getBoolean(
- com.android.settings.R.bool.config_use_compact_battery_status);
+ final boolean isCompactStatus =
+ context.getResources()
+ .getBoolean(com.android.settings.R.bool.config_use_compact_battery_status);
BatteryInfo info = new BatteryInfo();
info.mBatteryUsageStats = batteryUsageStats;
info.batteryLevel = Utils.getBatteryLevel(batteryBroadcast);
@@ -262,25 +303,32 @@
info.pluggedStatus = batteryBroadcast.getIntExtra(BatteryManager.EXTRA_PLUGGED, 0);
info.mCharging = info.pluggedStatus != 0;
info.averageTimeToDischarge = estimate.getAverageDischargeTime();
- info.isBatteryDefender = batteryBroadcast.getIntExtra(
- BatteryManager.EXTRA_CHARGING_STATUS, BatteryManager.CHARGING_POLICY_DEFAULT)
- == BatteryManager.CHARGING_POLICY_ADAPTIVE_LONGLIFE;
+ info.isBatteryDefender =
+ batteryBroadcast.getIntExtra(
+ BatteryManager.EXTRA_CHARGING_STATUS,
+ BatteryManager.CHARGING_POLICY_DEFAULT)
+ == BatteryManager.CHARGING_POLICY_ADAPTIVE_LONGLIFE;
info.statusLabel = Utils.getBatteryStatus(context, batteryBroadcast, isCompactStatus);
- info.batteryStatus = batteryBroadcast.getIntExtra(
- BatteryManager.EXTRA_STATUS, BatteryManager.BATTERY_STATUS_UNKNOWN);
+ info.batteryStatus =
+ batteryBroadcast.getIntExtra(
+ BatteryManager.EXTRA_STATUS, BatteryManager.BATTERY_STATUS_UNKNOWN);
if (!info.mCharging) {
updateBatteryInfoDischarging(context, shortString, estimate, info);
} else {
- updateBatteryInfoCharging(context, batteryBroadcast, batteryUsageStats,
- info, isCompactStatus);
+ updateBatteryInfoCharging(
+ context, batteryBroadcast, batteryUsageStats, info, isCompactStatus);
}
BatteryUtils.logRuntime(LOG_TAG, "time for getBatteryInfo", startTime);
return info;
}
- private static void updateBatteryInfoCharging(Context context, Intent batteryBroadcast,
- BatteryUsageStats stats, BatteryInfo info, boolean compactStatus) {
+ private static void updateBatteryInfoCharging(
+ Context context,
+ Intent batteryBroadcast,
+ BatteryUsageStats stats,
+ BatteryInfo info,
+ boolean compactStatus) {
final Resources resources = context.getResources();
final long chargeTimeMs = stats.getChargeTimeRemainingMs();
if (getSettingsChargeTimeRemaining(context) != chargeTimeMs) {
@@ -290,59 +338,76 @@
chargeTimeMs);
}
- final int status = batteryBroadcast.getIntExtra(BatteryManager.EXTRA_STATUS,
- BatteryManager.BATTERY_STATUS_UNKNOWN);
+ final int status =
+ batteryBroadcast.getIntExtra(
+ BatteryManager.EXTRA_STATUS, BatteryManager.BATTERY_STATUS_UNKNOWN);
info.discharging = false;
info.suggestionLabel = null;
int dockDefenderMode = BatteryUtils.getCurrentDockDefenderMode(context, info);
- if ((info.isBatteryDefender && status != BatteryManager.BATTERY_STATUS_FULL
- && dockDefenderMode == BatteryUtils.DockDefenderMode.DISABLED)
+ if ((info.isBatteryDefender
+ && status != BatteryManager.BATTERY_STATUS_FULL
+ && dockDefenderMode == BatteryUtils.DockDefenderMode.DISABLED)
|| dockDefenderMode == BatteryUtils.DockDefenderMode.ACTIVE) {
// Battery defender active, battery charging paused
info.remainingLabel = null;
int chargingLimitedResId = com.android.settingslib.R.string.power_charging_limited;
info.chargeLabel = context.getString(chargingLimitedResId, info.batteryPercentString);
- } else if ((chargeTimeMs > 0 && status != BatteryManager.BATTERY_STATUS_FULL
- && dockDefenderMode == BatteryUtils.DockDefenderMode.DISABLED)
+ } else if ((chargeTimeMs > 0
+ && status != BatteryManager.BATTERY_STATUS_FULL
+ && dockDefenderMode == BatteryUtils.DockDefenderMode.DISABLED)
|| dockDefenderMode == BatteryUtils.DockDefenderMode.TEMPORARILY_BYPASSED) {
// Battery is charging to full
info.remainingTimeUs = PowerUtil.convertMsToUs(chargeTimeMs);
- final CharSequence timeString = StringUtil.formatElapsedTime(context,
- (double) PowerUtil.convertUsToMs(info.remainingTimeUs), false /* withSeconds */,
- true /* collapseTimeUnit */);
+ final CharSequence timeString =
+ StringUtil.formatElapsedTime(
+ context,
+ (double) PowerUtil.convertUsToMs(info.remainingTimeUs),
+ false /* withSeconds */,
+ true /* collapseTimeUnit */);
int resId = com.android.settingslib.R.string.power_charging_duration;
- info.remainingLabel = chargeTimeMs <= 0 ? null : context.getString(
- com.android.settingslib.R.string.power_remaining_charging_duration_only,
- timeString);
- info.chargeLabel = chargeTimeMs <= 0 ? info.batteryPercentString
- : context.getString(resId, info.batteryPercentString, timeString);
+ info.remainingLabel =
+ chargeTimeMs <= 0
+ ? null
+ : context.getString(
+ com.android.settingslib.R.string
+ .power_remaining_charging_duration_only,
+ timeString);
+ info.chargeLabel =
+ chargeTimeMs <= 0
+ ? info.batteryPercentString
+ : context.getString(resId, info.batteryPercentString, timeString);
} else if (dockDefenderMode == BatteryUtils.DockDefenderMode.FUTURE_BYPASS) {
// Dock defender will be triggered in the future, charging will be optimized.
- info.chargeLabel = context.getString(
- com.android.settingslib.R.string.power_charging_future_paused,
- info.batteryPercentString);
+ info.chargeLabel =
+ context.getString(
+ com.android.settingslib.R.string.power_charging_future_paused,
+ info.batteryPercentString);
} else {
- final String chargeStatusLabel = Utils.getBatteryStatus(context, batteryBroadcast,
- compactStatus);
+ final String chargeStatusLabel =
+ Utils.getBatteryStatus(context, batteryBroadcast, compactStatus);
info.remainingLabel = null;
- info.chargeLabel = info.batteryLevel == 100 ? info.batteryPercentString :
- resources.getString(com.android.settingslib.R.string.power_charging,
- info.batteryPercentString, chargeStatusLabel);
+ info.chargeLabel =
+ info.batteryLevel == 100
+ ? info.batteryPercentString
+ : resources.getString(
+ com.android.settingslib.R.string.power_charging,
+ info.batteryPercentString,
+ chargeStatusLabel);
}
}
- private static void updateBatteryInfoDischarging(Context context, boolean shortString,
- Estimate estimate, BatteryInfo info) {
+ private static void updateBatteryInfoDischarging(
+ Context context, boolean shortString, Estimate estimate, BatteryInfo info) {
final long drainTimeUs = PowerUtil.convertMsToUs(estimate.getEstimateMillis());
if (drainTimeUs > 0) {
info.remainingTimeUs = drainTimeUs;
- info.remainingLabel = PowerUtil.getBatteryRemainingShortStringFormatted(
- context,
- PowerUtil.convertUsToMs(drainTimeUs)
- );
+ info.remainingLabel =
+ PowerUtil.getBatteryRemainingShortStringFormatted(
+ context, PowerUtil.convertUsToMs(drainTimeUs));
info.chargeLabel = info.remainingLabel;
- info.suggestionLabel = PowerUtil.getBatteryTipStringFormatted(
- context, PowerUtil.convertUsToMs(drainTimeUs));
+ info.suggestionLabel =
+ PowerUtil.getBatteryTipStringFormatted(
+ context, PowerUtil.convertUsToMs(drainTimeUs));
} else {
info.remainingLabel = null;
info.suggestionLabel = null;
@@ -361,8 +426,8 @@
}
/**
- * Iterates over battery history included in the BatteryUsageStats that this object
- * was initialized with.
+ * Iterates over battery history included in the BatteryUsageStats that this object was
+ * initialized with.
*/
public void parseBatteryHistory(BatteryDataParser... parsers) {
long startWalltime = 0;
@@ -384,8 +449,7 @@
first = false;
historyStart = rec.time;
}
- if (rec.cmd == HistoryItem.CMD_CURRENT_TIME
- || rec.cmd == HistoryItem.CMD_RESET) {
+ if (rec.cmd == HistoryItem.CMD_CURRENT_TIME || rec.cmd == HistoryItem.CMD_RESET) {
// If there is a ridiculously large jump in time, then we won't be
// able to create a good chart with that data, so just ignore the
// times we got before and pretend like our data extends back from
@@ -447,7 +511,7 @@
if (rec.cmd != HistoryItem.CMD_OVERFLOW
&& (rec.cmd != HistoryItem.CMD_CURRENT_TIME
- || Math.abs(lastWalltime - curWalltime) > (60 * 60 * 1000))) {
+ || Math.abs(lastWalltime - curWalltime) > (60 * 60 * 1000))) {
for (int j = 0; j < parsers.length; j++) {
parsers[j].onDataGap();
}
diff --git a/src/com/android/settings/fuelgauge/BatteryInfoLoader.java b/src/com/android/settings/fuelgauge/BatteryInfoLoader.java
index ffee462..5ea94f8 100644
--- a/src/com/android/settings/fuelgauge/BatteryInfoLoader.java
+++ b/src/com/android/settings/fuelgauge/BatteryInfoLoader.java
@@ -26,11 +26,10 @@
* automatically grab enhanced battery estimates if available or fall back to the system estimate
* when not available.
*/
-public class BatteryInfoLoader extends AsyncLoaderCompat<BatteryInfo>{
+public class BatteryInfoLoader extends AsyncLoaderCompat<BatteryInfo> {
private static final String LOG_TAG = "BatteryInfoLoader";
- @VisibleForTesting
- BatteryUtils mBatteryUtils;
+ @VisibleForTesting BatteryUtils mBatteryUtils;
public BatteryInfoLoader(Context context) {
super(context);
@@ -38,9 +37,7 @@
}
@Override
- protected void onDiscardResult(BatteryInfo result) {
-
- }
+ protected void onDiscardResult(BatteryInfo result) {}
@Override
public BatteryInfo loadInBackground() {
diff --git a/src/com/android/settings/fuelgauge/BatteryMeterView.java b/src/com/android/settings/fuelgauge/BatteryMeterView.java
index 1cd9f71..ecd8a1b 100644
--- a/src/com/android/settings/fuelgauge/BatteryMeterView.java
+++ b/src/com/android/settings/fuelgauge/BatteryMeterView.java
@@ -29,14 +29,10 @@
import com.android.settingslib.graph.ThemedBatteryDrawable;
public class BatteryMeterView extends ImageView {
- @VisibleForTesting
- BatteryMeterDrawable mDrawable;
- @VisibleForTesting
- ColorFilter mErrorColorFilter;
- @VisibleForTesting
- ColorFilter mAccentColorFilter;
- @VisibleForTesting
- ColorFilter mForegroundColorFilter;
+ @VisibleForTesting BatteryMeterDrawable mDrawable;
+ @VisibleForTesting ColorFilter mErrorColorFilter;
+ @VisibleForTesting ColorFilter mAccentColorFilter;
+ @VisibleForTesting ColorFilter mForegroundColorFilter;
public BatteryMeterView(Context context) {
this(context, null, 0);
@@ -51,12 +47,15 @@
final int frameColor =
context.getColor(com.android.settingslib.R.color.meter_background_color);
- mAccentColorFilter = Utils.getAlphaInvariantColorFilterForColor(
- Utils.getColorAttrDefaultColor(context, android.R.attr.colorAccent));
- mErrorColorFilter = Utils.getAlphaInvariantColorFilterForColor(
- context.getColor(R.color.battery_icon_color_error));
- mForegroundColorFilter = Utils.getAlphaInvariantColorFilterForColor(
- Utils.getColorAttrDefaultColor(context, android.R.attr.colorForeground));
+ mAccentColorFilter =
+ Utils.getAlphaInvariantColorFilterForColor(
+ Utils.getColorAttrDefaultColor(context, android.R.attr.colorAccent));
+ mErrorColorFilter =
+ Utils.getAlphaInvariantColorFilterForColor(
+ context.getColor(R.color.battery_icon_color_error));
+ mForegroundColorFilter =
+ Utils.getAlphaInvariantColorFilterForColor(
+ Utils.getColorAttrDefaultColor(context, android.R.attr.colorForeground));
mDrawable = new BatteryMeterDrawable(context, frameColor);
mDrawable.setColorFilter(mAccentColorFilter);
setImageDrawable(mDrawable);
@@ -108,10 +107,10 @@
public BatteryMeterDrawable(Context context, int frameColor) {
super(context, frameColor);
- mIntrinsicWidth = context.getResources()
- .getDimensionPixelSize(R.dimen.battery_meter_width);
- mIntrinsicHeight = context.getResources()
- .getDimensionPixelSize(R.dimen.battery_meter_height);
+ mIntrinsicWidth =
+ context.getResources().getDimensionPixelSize(R.dimen.battery_meter_width);
+ mIntrinsicHeight =
+ context.getResources().getDimensionPixelSize(R.dimen.battery_meter_height);
}
public BatteryMeterDrawable(Context context, int frameColor, int width, int height) {
diff --git a/src/com/android/settings/fuelgauge/BatteryOptimizeLogUtils.java b/src/com/android/settings/fuelgauge/BatteryOptimizeLogUtils.java
index d093d35..afdae8e 100644
--- a/src/com/android/settings/fuelgauge/BatteryOptimizeLogUtils.java
+++ b/src/com/android/settings/fuelgauge/BatteryOptimizeLogUtils.java
@@ -34,8 +34,7 @@
private static final String BATTERY_OPTIMIZE_FILE_NAME = "battery_optimize_historical_logs";
private static final String LOGS_KEY = "battery_optimize_logs_key";
- @VisibleForTesting
- static final int MAX_ENTRIES = 40;
+ @VisibleForTesting static final int MAX_ENTRIES = 40;
private BatteryOptimizeLogUtils() {}
@@ -45,8 +44,11 @@
writeLog(getSharedPreferences(context), action, packageName, actionDescription);
}
- static void writeLog(SharedPreferences sharedPreferences, Action action,
- String packageName, String actionDescription) {
+ static void writeLog(
+ SharedPreferences sharedPreferences,
+ Action action,
+ String packageName,
+ String actionDescription) {
writeLog(
sharedPreferences,
BatteryOptimizeHistoricalLogEntry.newBuilder()
@@ -70,10 +72,7 @@
String loggingContent =
Base64.encodeToString(newLogBuilder.build().toByteArray(), Base64.DEFAULT);
- sharedPreferences
- .edit()
- .putString(LOGS_KEY, loggingContent)
- .apply();
+ sharedPreferences.edit().putString(LOGS_KEY, loggingContent).apply();
}
private static BatteryOptimizeHistoricalLog parseLogFromString(String storedLogs) {
@@ -107,9 +106,11 @@
}
private static String toString(BatteryOptimizeHistoricalLogEntry entry) {
- return String.format("%s\t%s\taction:%s\tevent:%s",
+ return String.format(
+ "%s\t%s\taction:%s\tevent:%s",
ConvertUtils.utcToLocalTimeForLogging(entry.getTimestamp()),
- entry.getPackageName(), entry.getAction(),
+ entry.getPackageName(),
+ entry.getAction(),
entry.getActionDescription());
}
diff --git a/src/com/android/settings/fuelgauge/BatteryOptimizeUtils.java b/src/com/android/settings/fuelgauge/BatteryOptimizeUtils.java
index 003f771..6d3bd6b 100644
--- a/src/com/android/settings/fuelgauge/BatteryOptimizeUtils.java
+++ b/src/com/android/settings/fuelgauge/BatteryOptimizeUtils.java
@@ -62,24 +62,26 @@
// If current user is admin, match apps from all users. Otherwise, only match the currect user.
private static final int RETRIEVE_FLAG_ADMIN =
PackageManager.MATCH_ANY_USER
- | PackageManager.MATCH_DISABLED_COMPONENTS
- | PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS;
+ | PackageManager.MATCH_DISABLED_COMPONENTS
+ | PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS;
private static final int RETRIEVE_FLAG =
PackageManager.MATCH_DISABLED_COMPONENTS
- | PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS;
+ | PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS;
// Optimization modes.
- static final int MODE_UNKNOWN = 0;
- static final int MODE_RESTRICTED = 1;
- static final int MODE_UNRESTRICTED = 2;
- static final int MODE_OPTIMIZED = 3;
+ public static final int MODE_UNKNOWN = 0;
+ public static final int MODE_RESTRICTED = 1;
+ public static final int MODE_UNRESTRICTED = 2;
+ public static final int MODE_OPTIMIZED = 3;
- @IntDef(prefix = {"MODE_"}, value = {
- MODE_UNKNOWN,
- MODE_RESTRICTED,
- MODE_UNRESTRICTED,
- MODE_OPTIMIZED,
- })
+ @IntDef(
+ prefix = {"MODE_"},
+ value = {
+ MODE_UNKNOWN,
+ MODE_RESTRICTED,
+ MODE_UNRESTRICTED,
+ MODE_OPTIMIZED,
+ })
@Retention(RetentionPolicy.SOURCE)
static @interface OptimizationMode {}
@@ -118,8 +120,12 @@
/** Resets optimization mode for all applications. */
public static void resetAppOptimizationMode(
Context context, IPackageManager ipm, AppOpsManager aom) {
- resetAppOptimizationMode(context, ipm, aom,
- PowerAllowlistBackend.getInstance(context), BatteryUtils.getInstance(context));
+ resetAppOptimizationMode(
+ context,
+ ipm,
+ aom,
+ PowerAllowlistBackend.getInstance(context),
+ BatteryUtils.getInstance(context));
}
/** Sets the {@link OptimizationMode} for associated app. */
@@ -138,17 +144,13 @@
|| mBatteryUtils.getPackageUid(mPackageName) == BatteryUtils.UID_NULL;
}
- /**
- * Return {@code true} if this package is system or default active app.
- */
+ /** Return {@code true} if this package is system or default active app. */
public boolean isSystemOrDefaultApp() {
mPowerAllowListBackend.refreshList();
return isSystemOrDefaultApp(mContext, mPowerAllowListBackend, mPackageName, mUid);
}
- /**
- * Return {@code true} if the optimization mode of this package can be changed
- */
+ /** Return {@code true} if the optimization mode of this package can be changed */
public boolean isOptimizeModeMutable() {
return !isDisabledForOptimizeModeOnly() && !isSystemOrDefaultApp();
}
@@ -162,9 +164,7 @@
&& getAppOptimizationMode() != BatteryOptimizeUtils.MODE_RESTRICTED;
}
- /**
- * Gets the list of installed applications.
- */
+ /** Gets the list of installed applications. */
public static ArraySet<ApplicationInfo> getInstalledApplications(
Context context, IPackageManager ipm) {
final ArraySet<ApplicationInfo> applications = new ArraySet<>();
@@ -172,9 +172,10 @@
for (UserInfo userInfo : um.getProfiles(UserHandle.myUserId())) {
try {
@SuppressWarnings("unchecked")
- final ParceledListSlice<ApplicationInfo> infoList = ipm.getInstalledApplications(
- userInfo.isAdmin() ? RETRIEVE_FLAG_ADMIN : RETRIEVE_FLAG,
- userInfo.id);
+ final ParceledListSlice<ApplicationInfo> infoList =
+ ipm.getInstalledApplications(
+ userInfo.isAdmin() ? RETRIEVE_FLAG_ADMIN : RETRIEVE_FLAG,
+ userInfo.id);
if (infoList != null) {
applications.addAll(infoList.getList());
}
@@ -185,15 +186,19 @@
}
// Removes the application which is disabled by the system.
applications.removeIf(
- info -> info.enabledSetting != PackageManager.COMPONENT_ENABLED_STATE_DISABLED_USER
- && !info.enabled);
+ info ->
+ info.enabledSetting != PackageManager.COMPONENT_ENABLED_STATE_DISABLED_USER
+ && !info.enabled);
return applications;
}
@VisibleForTesting
static void resetAppOptimizationMode(
- Context context, IPackageManager ipm, AppOpsManager aom,
- PowerAllowlistBackend allowlistBackend, BatteryUtils batteryUtils) {
+ Context context,
+ IPackageManager ipm,
+ AppOpsManager aom,
+ PowerAllowlistBackend allowlistBackend,
+ BatteryUtils batteryUtils) {
final ArraySet<ApplicationInfo> applications = getInstalledApplications(context, ipm);
if (applications == null || applications.isEmpty()) {
Log.w(TAG, "no data found in the getInstalledApplications()");
@@ -203,11 +208,13 @@
allowlistBackend.refreshList();
// Resets optimization mode for each application.
for (ApplicationInfo info : applications) {
- final int mode = aom.checkOpNoThrow(
- AppOpsManager.OP_RUN_ANY_IN_BACKGROUND, info.uid, info.packageName);
+ final int mode =
+ aom.checkOpNoThrow(
+ AppOpsManager.OP_RUN_ANY_IN_BACKGROUND, info.uid, info.packageName);
@OptimizationMode
- final int optimizationMode = getAppOptimizationMode(
- mode, allowlistBackend.isAllowlisted(info.packageName, info.uid));
+ final int optimizationMode =
+ getAppOptimizationMode(
+ mode, allowlistBackend.isAllowlisted(info.packageName, info.uid));
// Ignores default optimized/unknown state or system/default apps.
if (optimizationMode == MODE_OPTIMIZED
|| optimizationMode == MODE_UNKNOWN
@@ -217,8 +224,14 @@
}
// Resets to the default mode: MODE_OPTIMIZED.
- setAppUsageStateInternal(context, MODE_OPTIMIZED, info.uid, info.packageName,
- batteryUtils, allowlistBackend, Action.RESET);
+ setAppUsageStateInternal(
+ context,
+ MODE_OPTIMIZED,
+ info.uid,
+ info.packageName,
+ batteryUtils,
+ allowlistBackend,
+ Action.RESET);
}
}
@@ -244,25 +257,33 @@
static List<String> getForceBatteryOptimizeModeList(Context context) {
if (sBatteryOptimizeModeList == null) {
- sBatteryOptimizeModeList = Arrays.asList(
- context.getResources().getStringArray(
- R.array.config_force_battery_optimize_mode_apps));
+ sBatteryOptimizeModeList =
+ Arrays.asList(
+ context.getResources()
+ .getStringArray(
+ R.array.config_force_battery_optimize_mode_apps));
}
return sBatteryOptimizeModeList;
}
static List<String> getForceBatteryUnrestrictModeList(Context context) {
if (sBatteryUnrestrictModeList == null) {
- sBatteryUnrestrictModeList = Arrays.asList(
- context.getResources().getStringArray(
- R.array.config_force_battery_unrestrict_mode_apps));
+ sBatteryUnrestrictModeList =
+ Arrays.asList(
+ context.getResources()
+ .getStringArray(
+ R.array.config_force_battery_unrestrict_mode_apps));
}
return sBatteryUnrestrictModeList;
}
private static void setAppUsageStateInternal(
- Context context, @OptimizationMode int mode, int uid, String packageName,
- BatteryUtils batteryUtils, PowerAllowlistBackend powerAllowlistBackend,
+ Context context,
+ @OptimizationMode int mode,
+ int uid,
+ String packageName,
+ BatteryUtils batteryUtils,
+ PowerAllowlistBackend powerAllowlistBackend,
Action action) {
if (mode == MODE_UNKNOWN) {
Log.d(TAG, "set unknown app optimization mode.");
@@ -276,16 +297,29 @@
mode == MODE_RESTRICTED ? AppOpsManager.MODE_IGNORED : AppOpsManager.MODE_ALLOWED;
final boolean allowListed = mode == MODE_UNRESTRICTED;
- setAppOptimizationModeInternal(context, appOpsManagerMode, allowListed, uid,
- packageName, batteryUtils, powerAllowlistBackend, action);
+ setAppOptimizationModeInternal(
+ context,
+ appOpsManagerMode,
+ allowListed,
+ uid,
+ packageName,
+ batteryUtils,
+ powerAllowlistBackend,
+ action);
}
private static void setAppOptimizationModeInternal(
- Context context, int appStandbyMode, boolean allowListed, int uid, String packageName,
- BatteryUtils batteryUtils, PowerAllowlistBackend powerAllowlistBackend,
+ Context context,
+ int appStandbyMode,
+ boolean allowListed,
+ int uid,
+ String packageName,
+ BatteryUtils batteryUtils,
+ PowerAllowlistBackend powerAllowlistBackend,
Action action) {
- final String packageNameKey = BatteryOptimizeLogUtils
- .getPackageNameWithUserId(packageName, UserHandle.myUserId());
+ final String packageNameKey =
+ BatteryOptimizeLogUtils.getPackageNameWithUserId(
+ packageName, UserHandle.myUserId());
try {
batteryUtils.setForceAppStandby(uid, packageName, appStandbyMode);
if (allowListed) {
@@ -299,24 +333,27 @@
Log.e(TAG, "set OPTIMIZATION MODE failed for " + packageName, e);
}
BatteryOptimizeLogUtils.writeLog(
- context,
- action,
- packageNameKey,
- createLogEvent(appStandbyMode, allowListed));
+ context, action, packageNameKey, createLogEvent(appStandbyMode, allowListed));
}
private void refreshState() {
mPowerAllowListBackend.refreshList();
mAllowListed = mPowerAllowListBackend.isAllowlisted(mPackageName, mUid);
- mMode = mAppOpsManager
- .checkOpNoThrow(AppOpsManager.OP_RUN_ANY_IN_BACKGROUND, mUid, mPackageName);
- Log.d(TAG, String.format("refresh %s state, allowlisted = %s, mode = %d",
- mPackageName, mAllowListed, mMode));
+ mMode =
+ mAppOpsManager.checkOpNoThrow(
+ AppOpsManager.OP_RUN_ANY_IN_BACKGROUND, mUid, mPackageName);
+ Log.d(
+ TAG,
+ String.format(
+ "refresh %s state, allowlisted = %s, mode = %d",
+ mPackageName, mAllowListed, mMode));
}
private static String createLogEvent(int appStandbyMode, boolean allowListed) {
- return appStandbyMode < 0 ? "Apply optimize setting ERROR" :
- String.format("\tStandbyMode: %s, allowListed: %s, mode: %s",
+ return appStandbyMode < 0
+ ? "Apply optimize setting ERROR"
+ : String.format(
+ "\tStandbyMode: %s, allowListed: %s, mode: %s",
appStandbyMode,
allowListed,
getAppOptimizationMode(appStandbyMode, allowListed));
diff --git a/src/com/android/settings/fuelgauge/BatteryPreferenceController.java b/src/com/android/settings/fuelgauge/BatteryPreferenceController.java
index badf5c8..08ad1d1 100644
--- a/src/com/android/settings/fuelgauge/BatteryPreferenceController.java
+++ b/src/com/android/settings/fuelgauge/BatteryPreferenceController.java
@@ -16,15 +16,12 @@
package com.android.settings.fuelgauge;
-/**
- * Common interface for a preference controller that updates battery status
- */
+/** Common interface for a preference controller that updates battery status */
public interface BatteryPreferenceController {
/**
- * Updates the label for the preference controller. If the label is null, the
- * implementation should revert back to the original label based on the
- * battery info.
+ * Updates the label for the preference controller. If the label is null, the implementation
+ * should revert back to the original label based on the battery info.
*/
void updateBatteryStatus(String label, BatteryInfo info);
}
diff --git a/src/com/android/settings/fuelgauge/BatterySaverController.java b/src/com/android/settings/fuelgauge/BatterySaverController.java
index c712ab0..70abfbc 100644
--- a/src/com/android/settings/fuelgauge/BatterySaverController.java
+++ b/src/com/android/settings/fuelgauge/BatterySaverController.java
@@ -35,22 +35,20 @@
import com.android.settingslib.core.lifecycle.events.OnStop;
import com.android.settingslib.fuelgauge.BatterySaverUtils;
-/**
- * Controller to update the battery saver entry preference.
- */
+/** Controller to update the battery saver entry preference. */
public class BatterySaverController extends BasePreferenceController
implements LifecycleObserver, OnStart, OnStop, BatterySaverReceiver.BatterySaverListener {
private static final String KEY_BATTERY_SAVER = "battery_saver_summary";
private final BatterySaverReceiver mBatteryStateChangeReceiver;
private final PowerManager mPowerManager;
private Preference mBatterySaverPref;
- private final ContentObserver mObserver = new ContentObserver(
- new Handler(Looper.getMainLooper())) {
- @Override
- public void onChange(boolean selfChange) {
- updateSummary();
- }
- };
+ private final ContentObserver mObserver =
+ new ContentObserver(new Handler(Looper.getMainLooper())) {
+ @Override
+ public void onChange(boolean selfChange) {
+ updateSummary();
+ }
+ };
public BatterySaverController(Context context) {
super(context, KEY_BATTERY_SAVER);
@@ -79,9 +77,11 @@
@Override
public void onStart() {
- mContext.getContentResolver().registerContentObserver(
- Settings.Global.getUriFor(Settings.Global.LOW_POWER_MODE_TRIGGER_LEVEL),
- true /* notifyForDescendants */, mObserver);
+ mContext.getContentResolver()
+ .registerContentObserver(
+ Settings.Global.getUriFor(Settings.Global.LOW_POWER_MODE_TRIGGER_LEVEL),
+ true /* notifyForDescendants */,
+ mObserver);
mBatteryStateChangeReceiver.setListening(true);
updateSummary();
@@ -101,15 +101,20 @@
}
final ContentResolver resolver = mContext.getContentResolver();
- final int mode = Settings.Global.getInt(resolver,
- Global.AUTOMATIC_POWER_SAVE_MODE, PowerManager.POWER_SAVE_MODE_TRIGGER_PERCENTAGE);
+ final int mode =
+ Settings.Global.getInt(
+ resolver,
+ Global.AUTOMATIC_POWER_SAVE_MODE,
+ PowerManager.POWER_SAVE_MODE_TRIGGER_PERCENTAGE);
if (mode == PowerManager.POWER_SAVE_MODE_TRIGGER_PERCENTAGE) {
- final int percent = Settings.Global.getInt(resolver,
- Settings.Global.LOW_POWER_MODE_TRIGGER_LEVEL, 0);
- return percent != 0 ?
- mContext.getString(R.string.battery_saver_off_scheduled_summary,
- Utils.formatPercentage(percent)) :
- mContext.getString(R.string.battery_saver_off_summary);
+ final int percent =
+ Settings.Global.getInt(
+ resolver, Settings.Global.LOW_POWER_MODE_TRIGGER_LEVEL, 0);
+ return percent != 0
+ ? mContext.getString(
+ R.string.battery_saver_off_scheduled_summary,
+ Utils.formatPercentage(percent))
+ : mContext.getString(R.string.battery_saver_off_summary);
} else {
return mContext.getString(R.string.battery_saver_pref_auto_routine_summary);
}
@@ -127,6 +132,5 @@
}
@Override
- public void onBatteryChanged(boolean pluggedIn) {
- }
+ public void onBatteryChanged(boolean pluggedIn) {}
}
diff --git a/src/com/android/settings/fuelgauge/BatterySaverDrawable.java b/src/com/android/settings/fuelgauge/BatterySaverDrawable.java
index ce29361..bde1335 100644
--- a/src/com/android/settings/fuelgauge/BatterySaverDrawable.java
+++ b/src/com/android/settings/fuelgauge/BatterySaverDrawable.java
@@ -23,9 +23,7 @@
import com.android.settingslib.Utils;
import com.android.settingslib.graph.BatteryMeterDrawableBase;
-/**
- * Drawable that shows a static battery saver icon - a full battery symbol and a plus sign.
- */
+/** Drawable that shows a static battery saver icon - a full battery symbol and a plus sign. */
public class BatterySaverDrawable extends BatteryMeterDrawableBase {
private static final int MAX_BATTERY = 100;
diff --git a/src/com/android/settings/fuelgauge/BatterySaverModeVoiceActivity.java b/src/com/android/settings/fuelgauge/BatterySaverModeVoiceActivity.java
index c4e5ce6..fb12dbe 100644
--- a/src/com/android/settings/fuelgauge/BatterySaverModeVoiceActivity.java
+++ b/src/com/android/settings/fuelgauge/BatterySaverModeVoiceActivity.java
@@ -27,8 +27,8 @@
import com.android.settingslib.fuelgauge.BatterySaverUtils;
/**
- * Activity for modifying the {@link android.os.PowerManager} power save mode
- * setting using the Voice Interaction API.
+ * Activity for modifying the {@link android.os.PowerManager} power save mode setting using the
+ * Voice Interaction API.
*/
public class BatterySaverModeVoiceActivity extends VoiceSettingsActivity {
private static final String TAG = "BatterySaverModeVoiceActivity";
@@ -36,9 +36,11 @@
@Override
protected boolean onVoiceSettingInteraction(Intent intent) {
if (intent.hasExtra(EXTRA_BATTERY_SAVER_MODE_ENABLED)) {
- if (BatterySaverUtils.setPowerSaveMode(this,
+ if (BatterySaverUtils.setPowerSaveMode(
+ this,
intent.getBooleanExtra(EXTRA_BATTERY_SAVER_MODE_ENABLED, false),
- /*needFirstTimeWarning=*/ true, SAVER_ENABLED_VOICE)) {
+ /* needFirstTimeWarning= */ true,
+ SAVER_ENABLED_VOICE)) {
notifySuccess(null);
} else {
Log.v(TAG, "Unable to set power mode");
diff --git a/src/com/android/settings/fuelgauge/BatterySaverReceiver.java b/src/com/android/settings/fuelgauge/BatterySaverReceiver.java
index bf5c51b..7537c54 100644
--- a/src/com/android/settings/fuelgauge/BatterySaverReceiver.java
+++ b/src/com/android/settings/fuelgauge/BatterySaverReceiver.java
@@ -71,6 +71,7 @@
public interface BatterySaverListener {
void onPowerSaveModeChanged();
+
void onBatteryChanged(boolean pluggedIn);
}
}
diff --git a/src/com/android/settings/fuelgauge/BatterySettingsMigrateChecker.java b/src/com/android/settings/fuelgauge/BatterySettingsMigrateChecker.java
index b41e153..5d9d047 100644
--- a/src/com/android/settings/fuelgauge/BatterySettingsMigrateChecker.java
+++ b/src/com/android/settings/fuelgauge/BatterySettingsMigrateChecker.java
@@ -34,8 +34,7 @@
public final class BatterySettingsMigrateChecker extends BroadcastReceiver {
private static final String TAG = "BatterySettingsMigrateChecker";
- @VisibleForTesting
- static BatteryOptimizeUtils sBatteryOptimizeUtils = null;
+ @VisibleForTesting static BatteryOptimizeUtils sBatteryOptimizeUtils = null;
@Override
public void onReceive(Context context, Intent intent) {
@@ -71,31 +70,38 @@
Context context,
@BatteryOptimizeUtils.OptimizationMode int optimizationMode,
List<String> allowList) {
- allowList.forEach(packageName -> {
- final BatteryOptimizeUtils batteryOptimizeUtils =
- BatteryBackupHelper.newBatteryOptimizeUtils(context, packageName,
- /* testOptimizeUtils */ sBatteryOptimizeUtils);
- if (batteryOptimizeUtils == null) {
- return;
- }
- if (batteryOptimizeUtils.getAppOptimizationMode() != optimizationMode) {
- Log.w(TAG, "Reset " + packageName + " battery mode into " + optimizationMode);
- batteryOptimizeUtils.setAppUsageState(
- optimizationMode,
- BatteryOptimizeHistoricalLogEntry.Action.FORCE_RESET);
- }
- });
+ allowList.forEach(
+ packageName -> {
+ final BatteryOptimizeUtils batteryOptimizeUtils =
+ BatteryBackupHelper.newBatteryOptimizeUtils(
+ context,
+ packageName,
+ /* testOptimizeUtils */ sBatteryOptimizeUtils);
+ if (batteryOptimizeUtils == null) {
+ return;
+ }
+ if (batteryOptimizeUtils.getAppOptimizationMode() != optimizationMode) {
+ Log.w(
+ TAG,
+ "Reset " + packageName + " battery mode into " + optimizationMode);
+ batteryOptimizeUtils.setAppUsageState(
+ optimizationMode,
+ BatteryOptimizeHistoricalLogEntry.Action.FORCE_RESET);
+ }
+ });
}
static void verifySaverConfiguration(Context context) {
Log.d(TAG, "invoke verifySaverConfiguration()");
final ContentResolver resolver = context.getContentResolver();
- final int threshold = Settings.Global.getInt(resolver,
- Settings.Global.LOW_POWER_MODE_TRIGGER_LEVEL, 0);
+ final int threshold =
+ Settings.Global.getInt(resolver, Settings.Global.LOW_POWER_MODE_TRIGGER_LEVEL, 0);
// Force refine the invalid scheduled battery level.
if (threshold < BatterySaverScheduleRadioButtonsController.TRIGGER_LEVEL_MIN
&& threshold > 0) {
- Settings.Global.putInt(resolver, Settings.Global.LOW_POWER_MODE_TRIGGER_LEVEL,
+ Settings.Global.putInt(
+ resolver,
+ Settings.Global.LOW_POWER_MODE_TRIGGER_LEVEL,
BatterySaverScheduleRadioButtonsController.TRIGGER_LEVEL_MIN);
Log.w(TAG, "Reset invalid scheduled battery level from: " + threshold);
}
diff --git a/src/com/android/settings/fuelgauge/BatteryStatusFeatureProvider.java b/src/com/android/settings/fuelgauge/BatteryStatusFeatureProvider.java
index 46f00c7..b6b3b35 100644
--- a/src/com/android/settings/fuelgauge/BatteryStatusFeatureProvider.java
+++ b/src/com/android/settings/fuelgauge/BatteryStatusFeatureProvider.java
@@ -16,14 +16,9 @@
package com.android.settings.fuelgauge;
-/**
- * Feature Provider used to retrieve battery status
- */
+/** Feature Provider used to retrieve battery status */
public interface BatteryStatusFeatureProvider {
- /**
- * Trigger a battery status update; return false if built-in status should be used.
- */
- boolean triggerBatteryStatusUpdate(
- BatteryPreferenceController controller, BatteryInfo info);
+ /** Trigger a battery status update; return false if built-in status should be used. */
+ boolean triggerBatteryStatusUpdate(BatteryPreferenceController controller, BatteryInfo info);
}
diff --git a/src/com/android/settings/fuelgauge/BatteryStatusFeatureProviderImpl.java b/src/com/android/settings/fuelgauge/BatteryStatusFeatureProviderImpl.java
index dc4b5db..11c4628 100644
--- a/src/com/android/settings/fuelgauge/BatteryStatusFeatureProviderImpl.java
+++ b/src/com/android/settings/fuelgauge/BatteryStatusFeatureProviderImpl.java
@@ -18,9 +18,7 @@
import android.content.Context;
-/**
- * Used to override battery status string in Battery Header.
- */
+/** Used to override battery status string in Battery Header. */
public class BatteryStatusFeatureProviderImpl implements BatteryStatusFeatureProvider {
protected Context mContext;
diff --git a/src/com/android/settings/fuelgauge/BatteryUtils.java b/src/com/android/settings/fuelgauge/BatteryUtils.java
index c38af07..5a808f2 100644
--- a/src/com/android/settings/fuelgauge/BatteryUtils.java
+++ b/src/com/android/settings/fuelgauge/BatteryUtils.java
@@ -70,15 +70,15 @@
import java.time.format.FormatStyle;
import java.util.List;
-/**
- * Utils for battery operation
- */
+/** Utils for battery operation */
public class BatteryUtils {
public static final int UID_ZERO = 0;
public static final int UID_NULL = -1;
public static final int SDK_NULL = -1;
+
/** Special UID value for data usage by removed apps. */
public static final int UID_REMOVED_APPS = -4;
+
/** Special UID value for data usage by tethering. */
public static final int UID_TETHERING = -5;
@@ -91,11 +91,7 @@
private static final String PACKAGE_NAME_NONE = "none";
@Retention(RetentionPolicy.SOURCE)
- @IntDef({StatusType.SCREEN_USAGE,
- StatusType.FOREGROUND,
- StatusType.BACKGROUND,
- StatusType.ALL
- })
+ @IntDef({StatusType.SCREEN_USAGE, StatusType.FOREGROUND, StatusType.BACKGROUND, StatusType.ALL})
public @interface StatusType {
int SCREEN_USAGE = 0;
int FOREGROUND = 1;
@@ -104,10 +100,12 @@
}
@Retention(RetentionPolicy.SOURCE)
- @IntDef({DockDefenderMode.FUTURE_BYPASS,
- DockDefenderMode.ACTIVE,
- DockDefenderMode.TEMPORARILY_BYPASSED,
- DockDefenderMode.DISABLED})
+ @IntDef({
+ DockDefenderMode.FUTURE_BYPASS,
+ DockDefenderMode.ACTIVE,
+ DockDefenderMode.TEMPORARILY_BYPASSED,
+ DockDefenderMode.DISABLED
+ })
public @interface DockDefenderMode {
int FUTURE_BYPASS = 0;
int ACTIVE = 1;
@@ -122,8 +120,7 @@
private AppOpsManager mAppOpsManager;
private Context mContext;
- @VisibleForTesting
- PowerUsageFeatureProvider mPowerUsageFeatureProvider;
+ @VisibleForTesting PowerUsageFeatureProvider mPowerUsageFeatureProvider;
public static BatteryUtils getInstance(Context context) {
if (sInstance == null || sInstance.isDataCorrupted()) {
@@ -147,8 +144,9 @@
sInstance = null;
}
- public long getProcessTimeMs(@StatusType int type, @Nullable BatteryStats.Uid uid,
- int which) {
+
+ /** Gets the process time */
+ public long getProcessTimeMs(@StatusType int type, @Nullable BatteryStats.Uid uid, int which) {
if (uid == null) {
return 0;
}
@@ -192,8 +190,9 @@
private long getProcessBackgroundTimeMs(BatteryStats.Uid uid, int which) {
final long rawRealTimeUs = PowerUtil.convertMsToUs(SystemClock.elapsedRealtime());
- final long timeUs = uid.getProcessStateTime(
- BatteryStats.Uid.PROCESS_STATE_BACKGROUND, rawRealTimeUs, which);
+ final long timeUs =
+ uid.getProcessStateTime(
+ BatteryStats.Uid.PROCESS_STATE_BACKGROUND, rawRealTimeUs, which);
Log.v(TAG, "package: " + mPackageManager.getNameForUid(uid.getUid()));
Log.v(TAG, "background time(us): " + timeUs);
@@ -207,17 +206,17 @@
}
/**
- * Returns true if the specified battery consumer should be excluded from the summary
- * battery consumption list.
+ * Returns true if the specified battery consumer should be excluded from the summary battery
+ * consumption list.
*/
public boolean shouldHideUidBatteryConsumer(UidBatteryConsumer consumer) {
- return shouldHideUidBatteryConsumer(consumer,
- mPackageManager.getPackagesForUid(consumer.getUid()));
+ return shouldHideUidBatteryConsumer(
+ consumer, mPackageManager.getPackagesForUid(consumer.getUid()));
}
/**
- * Returns true if the specified battery consumer should be excluded from the summary
- * battery consumption list.
+ * Returns true if the specified battery consumer should be excluded from the summary battery
+ * consumption list.
*/
public boolean shouldHideUidBatteryConsumer(UidBatteryConsumer consumer, String[] packages) {
return mPowerUsageFeatureProvider.isTypeSystem(consumer.getUid(), packages)
@@ -225,20 +224,16 @@
}
/**
- * Returns true if the specified battery consumer should be excluded from
- * battery consumption lists, either short or full.
+ * Returns true if the specified battery consumer should be excluded from battery consumption
+ * lists, either short or full.
*/
- public boolean shouldHideUidBatteryConsumerUnconditionally(UidBatteryConsumer consumer,
- String[] packages) {
+ public boolean shouldHideUidBatteryConsumerUnconditionally(
+ UidBatteryConsumer consumer, String[] packages) {
final int uid = consumer.getUid();
- return uid == UID_TETHERING
- ? false
- : uid < 0 || isHiddenSystemModule(packages);
+ return uid == UID_TETHERING ? false : uid < 0 || isHiddenSystemModule(packages);
}
- /**
- * Returns true if one the specified packages belongs to a hidden system module.
- */
+ /** Returns true if one the specified packages belongs to a hidden system module. */
public boolean isHiddenSystemModule(String[] packages) {
if (packages != null) {
for (int i = 0, length = packages.length; i < length; i++) {
@@ -253,14 +248,14 @@
/**
* Calculate the power usage percentage for an app
*
- * @param powerUsageMah power used by the app
- * @param totalPowerMah total power used in the system
+ * @param powerUsageMah power used by the app
+ * @param totalPowerMah total power used in the system
* @param dischargeAmount The discharge amount calculated by {@link BatteryStats}
* @return A percentage value scaled by {@paramref dischargeAmount}
* @see BatteryStats#getDischargeAmount(int)
*/
- public double calculateBatteryPercent(double powerUsageMah, double totalPowerMah,
- int dischargeAmount) {
+ public double calculateBatteryPercent(
+ double powerUsageMah, double totalPowerMah, int dischargeAmount) {
if (totalPowerMah == 0) {
return 0;
}
@@ -272,9 +267,8 @@
* Find the package name for a {@link android.os.BatteryStats.Uid}
*
* @param uid id to get the package name
- * @return the package name. If there are multiple packages related to
- * given id, return the first one. Or return null if there are no known
- * packages with the given id
+ * @return the package name. If there are multiple packages related to given id, return the
+ * first one. Or return null if there are no known packages with the given id
* @see PackageManager#getPackagesForUid(int)
*/
public String getPackageName(int uid) {
@@ -290,8 +284,8 @@
*/
public int getTargetSdkVersion(final String packageName) {
try {
- ApplicationInfo info = mPackageManager.getApplicationInfo(packageName,
- PackageManager.GET_META_DATA);
+ ApplicationInfo info =
+ mPackageManager.getApplicationInfo(packageName, PackageManager.GET_META_DATA);
return info.targetSdkVersion;
} catch (PackageManager.NameNotFoundException e) {
@@ -301,28 +295,26 @@
return SDK_NULL;
}
- /**
- * Check whether background restriction is enabled
- */
- public boolean isBackgroundRestrictionEnabled(final int targetSdkVersion, final int uid,
- final String packageName) {
+ /** Check whether background restriction is enabled */
+ public boolean isBackgroundRestrictionEnabled(
+ final int targetSdkVersion, final int uid, final String packageName) {
if (targetSdkVersion >= Build.VERSION_CODES.O) {
return true;
}
- final int mode = mAppOpsManager
- .checkOpNoThrow(AppOpsManager.OP_RUN_IN_BACKGROUND, uid, packageName);
+ final int mode =
+ mAppOpsManager.checkOpNoThrow(AppOpsManager.OP_RUN_IN_BACKGROUND, uid, packageName);
return mode == AppOpsManager.MODE_IGNORED || mode == AppOpsManager.MODE_ERRORED;
}
/**
* Calculate the time since last full charge, including the device off time
*
- * @param batteryUsageStats class that contains the data
- * @param currentTimeMs current wall time
+ * @param batteryUsageStats class that contains the data
+ * @param currentTimeMs current wall time
* @return time in millis
*/
- public long calculateLastFullChargeTime(BatteryUsageStats batteryUsageStats,
- long currentTimeMs) {
+ public long calculateLastFullChargeTime(
+ BatteryUsageStats batteryUsageStats, long currentTimeMs) {
return currentTimeMs - batteryUsageStats.getStatsStartTimestamp();
}
@@ -330,9 +322,7 @@
Log.d(tag, message + ": " + (System.currentTimeMillis() - startTime) + "ms");
}
- /**
- * Return {@code true} if battery defender is on and charging.
- */
+ /** Return {@code true} if battery defender is on and charging. */
public static boolean isBatteryDefenderOn(BatteryInfo batteryInfo) {
return batteryInfo.isBatteryDefender && !batteryInfo.discharging;
}
@@ -341,13 +331,14 @@
* Find package uid from package name
*
* @param packageName used to find the uid
- * @return uid for packageName, or {@link #UID_NULL} if exception happens or
- * {@code packageName} is null
+ * @return uid for packageName, or {@link #UID_NULL} if exception happens or {@code packageName}
+ * is null
*/
public int getPackageUid(String packageName) {
try {
- return packageName == null ? UID_NULL : mPackageManager.getPackageUid(packageName,
- PackageManager.GET_META_DATA);
+ return packageName == null
+ ? UID_NULL
+ : mPackageManager.getPackageUid(packageName, PackageManager.GET_META_DATA);
} catch (PackageManager.NameNotFoundException e) {
return UID_NULL;
}
@@ -367,16 +358,18 @@
return (T) protoClass.getDefaultInstanceForType();
}
try {
- return (T) protoClass.getParserForType()
- .parseFrom(Base64.decode(serializedProto, Base64.DEFAULT));
+ return (T)
+ protoClass
+ .getParserForType()
+ .parseFrom(Base64.decode(serializedProto, Base64.DEFAULT));
} catch (InvalidProtocolBufferException e) {
Log.e(TAG, "Failed to deserialize proto class", e);
return (T) protoClass.getDefaultInstanceForType();
}
}
- public void setForceAppStandby(int uid, String packageName,
- int mode) {
+ /** Sets force app standby mode */
+ public void setForceAppStandby(int uid, String packageName, int mode) {
final boolean isPreOApp = isPreOApp(packageName);
if (isPreOApp) {
// Control whether app could run in the background if it is pre O app
@@ -385,22 +378,27 @@
// Control whether app could run jobs in the background
mAppOpsManager.setMode(AppOpsManager.OP_RUN_ANY_IN_BACKGROUND, uid, packageName, mode);
- ThreadUtils.postOnBackgroundThread(() -> {
- final BatteryDatabaseManager batteryDatabaseManager = BatteryDatabaseManager
- .getInstance(mContext);
- if (mode == AppOpsManager.MODE_IGNORED) {
- batteryDatabaseManager.insertAction(AnomalyDatabaseHelper.ActionType.RESTRICTION,
- uid, packageName, System.currentTimeMillis());
- } else if (mode == AppOpsManager.MODE_ALLOWED) {
- batteryDatabaseManager.deleteAction(AnomalyDatabaseHelper.ActionType.RESTRICTION,
- uid, packageName);
- }
- });
+ ThreadUtils.postOnBackgroundThread(
+ () -> {
+ final BatteryDatabaseManager batteryDatabaseManager =
+ BatteryDatabaseManager.getInstance(mContext);
+ if (mode == AppOpsManager.MODE_IGNORED) {
+ batteryDatabaseManager.insertAction(
+ AnomalyDatabaseHelper.ActionType.RESTRICTION,
+ uid,
+ packageName,
+ System.currentTimeMillis());
+ } else if (mode == AppOpsManager.MODE_ALLOWED) {
+ batteryDatabaseManager.deleteAction(
+ AnomalyDatabaseHelper.ActionType.RESTRICTION, uid, packageName);
+ }
+ });
}
public boolean isForceAppStandbyEnabled(int uid, String packageName) {
- return mAppOpsManager.checkOpNoThrow(AppOpsManager.OP_RUN_ANY_IN_BACKGROUND, uid,
- packageName) == AppOpsManager.MODE_IGNORED;
+ return mAppOpsManager.checkOpNoThrow(
+ AppOpsManager.OP_RUN_ANY_IN_BACKGROUND, uid, packageName)
+ == AppOpsManager.MODE_IGNORED;
}
public boolean clearForceAppStandby(String packageName) {
@@ -415,12 +413,13 @@
@WorkerThread
public BatteryInfo getBatteryInfo(final String tag) {
- final BatteryStatsManager systemService = mContext.getSystemService(
- BatteryStatsManager.class);
+ final BatteryStatsManager systemService =
+ mContext.getSystemService(BatteryStatsManager.class);
BatteryUsageStats batteryUsageStats;
try {
- batteryUsageStats = systemService.getBatteryUsageStats(
- new BatteryUsageStatsQuery.Builder().includeBatteryHistory().build());
+ batteryUsageStats =
+ systemService.getBatteryUsageStats(
+ new BatteryUsageStatsQuery.Builder().includeBatteryHistory().build());
} catch (RuntimeException e) {
Log.e(TAG, "getBatteryInfo() error from getBatteryUsageStats()", e);
// Use default BatteryUsageStats.
@@ -432,23 +431,29 @@
// Stuff we always need to get BatteryInfo
final Intent batteryBroadcast = getBatteryIntent(mContext);
- final long elapsedRealtimeUs = PowerUtil.convertMsToUs(
- SystemClock.elapsedRealtime());
+ final long elapsedRealtimeUs = PowerUtil.convertMsToUs(SystemClock.elapsedRealtime());
BatteryInfo batteryInfo;
Estimate estimate = getEnhancedEstimate();
// couldn't get estimate from cache or provider, use fallback
if (estimate == null) {
- estimate = new Estimate(
- batteryUsageStats.getBatteryTimeRemainingMs(),
- false /* isBasedOnUsage */,
- EstimateKt.AVERAGE_TIME_TO_DISCHARGE_UNKNOWN);
+ estimate =
+ new Estimate(
+ batteryUsageStats.getBatteryTimeRemainingMs(),
+ false /* isBasedOnUsage */,
+ EstimateKt.AVERAGE_TIME_TO_DISCHARGE_UNKNOWN);
}
BatteryUtils.logRuntime(tag, "BatteryInfoLoader post query", startTime);
- batteryInfo = BatteryInfo.getBatteryInfo(mContext, batteryBroadcast,
- batteryUsageStats, estimate, elapsedRealtimeUs, false /* shortString */);
+ batteryInfo =
+ BatteryInfo.getBatteryInfo(
+ mContext,
+ batteryBroadcast,
+ batteryUsageStats,
+ estimate,
+ elapsedRealtimeUs,
+ false /* shortString */);
BatteryUtils.logRuntime(tag, "BatteryInfoLoader.loadInBackground", startTime);
try {
@@ -463,9 +468,9 @@
Estimate getEnhancedEstimate() {
// Align the same logic in the BatteryControllerImpl.updateEstimate()
Estimate estimate = Estimate.getCachedEstimateIfAvailable(mContext);
- if (estimate == null &&
- mPowerUsageFeatureProvider != null &&
- mPowerUsageFeatureProvider.isEnhancedBatteryPredictionEnabled(mContext)) {
+ if (estimate == null
+ && mPowerUsageFeatureProvider != null
+ && mPowerUsageFeatureProvider.isEnhancedBatteryPredictionEnabled(mContext)) {
estimate = mPowerUsageFeatureProvider.getEnhancedBatteryPrediction(mContext);
if (estimate != null) {
Estimate.storeCachedEstimate(mContext, estimate);
@@ -500,8 +505,8 @@
public boolean isPreOApp(final String packageName) {
try {
- ApplicationInfo info = mPackageManager.getApplicationInfo(packageName,
- PackageManager.GET_META_DATA);
+ ApplicationInfo info =
+ mPackageManager.getApplicationInfo(packageName, PackageManager.GET_META_DATA);
return info.targetSdkVersion < Build.VERSION_CODES.O;
} catch (PackageManager.NameNotFoundException e) {
@@ -525,18 +530,17 @@
return false;
}
- /**
- * Return {@code true} if we should hide anomaly app represented by {@code uid}
- */
- public boolean shouldHideAnomaly(PowerAllowlistBackend powerAllowlistBackend, int uid,
- AnomalyInfo anomalyInfo) {
+ /** Return {@code true} if we should hide anomaly app represented by {@code uid} */
+ public boolean shouldHideAnomaly(
+ PowerAllowlistBackend powerAllowlistBackend, int uid, AnomalyInfo anomalyInfo) {
final String[] packageNames = mPackageManager.getPackagesForUid(uid);
if (ArrayUtils.isEmpty(packageNames)) {
// Don't show it if app has been uninstalled
return true;
}
- return isSystemUid(uid) || powerAllowlistBackend.isAllowlisted(packageNames, uid)
+ return isSystemUid(uid)
+ || powerAllowlistBackend.isAllowlisted(packageNames, uid)
|| (isSystemApp(mPackageManager, packageNames) && !hasLauncherEntry(packageNames))
|| (isExcessiveBackgroundAnomaly(anomalyInfo) && !isPreOApp(packageNames));
}
@@ -554,8 +558,8 @@
private boolean isSystemApp(PackageManager packageManager, String[] packageNames) {
for (String packageName : packageNames) {
try {
- final ApplicationInfo info = packageManager.getApplicationInfo(packageName,
- 0 /* flags */);
+ final ApplicationInfo info =
+ packageManager.getApplicationInfo(packageName, 0 /* flags */);
if ((info.flags & ApplicationInfo.FLAG_SYSTEM) != 0) {
return true;
}
@@ -577,11 +581,13 @@
// components
// with ComponentInfo#directBootAware == false will be filtered. We should
// explicitly include both direct boot aware and unaware components here.
- final List<ResolveInfo> resolveInfos = mPackageManager.queryIntentActivities(launchIntent,
- PackageManager.MATCH_DISABLED_COMPONENTS
- | PackageManager.MATCH_DIRECT_BOOT_AWARE
- | PackageManager.MATCH_DIRECT_BOOT_UNAWARE
- | PackageManager.MATCH_SYSTEM_ONLY);
+ final List<ResolveInfo> resolveInfos =
+ mPackageManager.queryIntentActivities(
+ launchIntent,
+ PackageManager.MATCH_DISABLED_COMPONENTS
+ | PackageManager.MATCH_DIRECT_BOOT_AWARE
+ | PackageManager.MATCH_DIRECT_BOOT_UNAWARE
+ | PackageManager.MATCH_SYSTEM_ONLY);
for (int i = 0, size = resolveInfos.size(); i < size; i++) {
final ResolveInfo resolveInfo = resolveInfos.get(i);
if (ArrayUtils.contains(packageNames, resolveInfo.activityInfo.packageName)) {
@@ -598,8 +604,8 @@
*/
public long getAppLongVersionCode(String packageName) {
try {
- final PackageInfo packageInfo = mPackageManager.getPackageInfo(packageName,
- 0 /* flags */);
+ final PackageInfo packageInfo =
+ mPackageManager.getPackageInfo(packageName, 0 /* flags */);
return packageInfo.getLongVersionCode();
} catch (PackageManager.NameNotFoundException e) {
Log.e(TAG, "Cannot find package: " + packageName, e);
@@ -626,7 +632,8 @@
/** Gets the logging package name. */
public static String getLoggingPackageName(Context context, String originalPackingName) {
return BatteryUtils.isAppInstalledFromGooglePlayStore(context, originalPackingName)
- ? originalPackingName : PACKAGE_NAME_NONE;
+ ? originalPackingName
+ : PACKAGE_NAME_NONE;
}
/** Gets the latest sticky battery intent from the Android system. */
@@ -637,12 +644,14 @@
/** Gets the current dock defender mode */
public static int getCurrentDockDefenderMode(Context context, BatteryInfo batteryInfo) {
if (batteryInfo.pluggedStatus == BatteryManager.BATTERY_PLUGGED_DOCK) {
- if (Settings.Global.getInt(context.getContentResolver(),
- SETTINGS_GLOBAL_DOCK_DEFENDER_BYPASS, 0) == 1) {
+ if (Settings.Global.getInt(
+ context.getContentResolver(), SETTINGS_GLOBAL_DOCK_DEFENDER_BYPASS, 0)
+ == 1) {
return DockDefenderMode.TEMPORARILY_BYPASSED;
- } else if (batteryInfo.isBatteryDefender && FeatureFactory.getFeatureFactory()
- .getPowerUsageFeatureProvider()
- .isExtraDefend()) {
+ } else if (batteryInfo.isBatteryDefender
+ && FeatureFactory.getFeatureFactory()
+ .getPowerUsageFeatureProvider()
+ .isExtraDefend()) {
return DockDefenderMode.ACTIVE;
} else if (!batteryInfo.isBatteryDefender) {
return DockDefenderMode.FUTURE_BYPASS;
@@ -651,59 +660,82 @@
return DockDefenderMode.DISABLED;
}
- /** Formats elapsed time without commas in between. */
+ /** Formats elapsed time without commas in between. */
public static CharSequence formatElapsedTimeWithoutComma(
Context context, double millis, boolean withSeconds, boolean collapseTimeUnit) {
return StringUtil.formatElapsedTime(context, millis, withSeconds, collapseTimeUnit)
- .toString().replaceAll(",", "");
+ .toString()
+ .replaceAll(",", "");
}
/** Builds the battery usage time summary. */
- public static String buildBatteryUsageTimeSummary(final Context context, final boolean isSystem,
- final long foregroundUsageTimeInMs, final long backgroundUsageTimeInMs,
+ public static String buildBatteryUsageTimeSummary(
+ final Context context,
+ final boolean isSystem,
+ final long foregroundUsageTimeInMs,
+ final long backgroundUsageTimeInMs,
final long screenOnTimeInMs) {
StringBuilder summary = new StringBuilder();
if (isSystem) {
final long totalUsageTimeInMs = foregroundUsageTimeInMs + backgroundUsageTimeInMs;
if (totalUsageTimeInMs != 0) {
- summary.append(buildBatteryUsageTimeInfo(context, totalUsageTimeInMs,
- R.string.battery_usage_total_less_than_one_minute,
- R.string.battery_usage_for_total_time));
+ summary.append(
+ buildBatteryUsageTimeInfo(
+ context,
+ totalUsageTimeInMs,
+ R.string.battery_usage_total_less_than_one_minute,
+ R.string.battery_usage_for_total_time));
}
} else {
if (screenOnTimeInMs != 0) {
- summary.append(buildBatteryUsageTimeInfo(context, screenOnTimeInMs,
- R.string.battery_usage_screen_time_less_than_one_minute,
- R.string.battery_usage_screen_time));
+ summary.append(
+ buildBatteryUsageTimeInfo(
+ context,
+ screenOnTimeInMs,
+ R.string.battery_usage_screen_time_less_than_one_minute,
+ R.string.battery_usage_screen_time));
}
if (screenOnTimeInMs != 0 && backgroundUsageTimeInMs != 0) {
summary.append('\n');
}
if (backgroundUsageTimeInMs != 0) {
- summary.append(buildBatteryUsageTimeInfo(context, backgroundUsageTimeInMs,
- R.string.battery_usage_background_less_than_one_minute,
- R.string.battery_usage_for_background_time));
+ summary.append(
+ buildBatteryUsageTimeInfo(
+ context,
+ backgroundUsageTimeInMs,
+ R.string.battery_usage_background_less_than_one_minute,
+ R.string.battery_usage_for_background_time));
}
}
return summary.toString();
}
+
/** Format the date of battery related info */
public static CharSequence getBatteryInfoFormattedDate(long dateInMs) {
final Instant instant = Instant.ofEpochMilli(dateInMs);
- final String localDate = instant.atZone(ZoneId.systemDefault()).toLocalDate().format(
- DateTimeFormatter.ofLocalizedDate(FormatStyle.LONG));
+ final String localDate =
+ instant.atZone(ZoneId.systemDefault())
+ .toLocalDate()
+ .format(DateTimeFormatter.ofLocalizedDate(FormatStyle.LONG));
return localDate;
}
/** Builds the battery usage time information for one timestamp. */
- private static String buildBatteryUsageTimeInfo(final Context context, long timeInMs,
- final int lessThanOneMinuteResId, final int normalResId) {
+ private static String buildBatteryUsageTimeInfo(
+ final Context context,
+ long timeInMs,
+ final int lessThanOneMinuteResId,
+ final int normalResId) {
if (timeInMs < DateUtils.MINUTE_IN_MILLIS) {
return context.getString(lessThanOneMinuteResId);
}
- final CharSequence timeSequence = formatElapsedTimeWithoutComma(
- context, (double) timeInMs, /*withSeconds=*/ false, /*collapseTimeUnit=*/ false);
+ final CharSequence timeSequence =
+ formatElapsedTimeWithoutComma(
+ context,
+ (double) timeInMs,
+ /* withSeconds= */ false,
+ /* collapseTimeUnit= */ false);
return context.getString(normalResId, timeSequence);
}
}
diff --git a/src/com/android/settings/fuelgauge/DebugEstimatesLoader.java b/src/com/android/settings/fuelgauge/DebugEstimatesLoader.java
index dda83a8..a68a4de 100644
--- a/src/com/android/settings/fuelgauge/DebugEstimatesLoader.java
+++ b/src/com/android/settings/fuelgauge/DebugEstimatesLoader.java
@@ -40,9 +40,7 @@
}
@Override
- protected void onDiscardResult(List<BatteryInfo> result) {
-
- }
+ protected void onDiscardResult(List<BatteryInfo> result) {}
@Override
public List<BatteryInfo> loadInBackground() {
@@ -51,29 +49,39 @@
FeatureFactory.getFeatureFactory().getPowerUsageFeatureProvider();
// get stuff we'll need for both BatteryInfo
- final long elapsedRealtimeUs = PowerUtil.convertMsToUs(
- SystemClock.elapsedRealtime());
- Intent batteryBroadcast = getContext().registerReceiver(null,
- new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
+ final long elapsedRealtimeUs = PowerUtil.convertMsToUs(SystemClock.elapsedRealtime());
+ Intent batteryBroadcast =
+ getContext()
+ .registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
BatteryUsageStats batteryUsageStats;
try {
- batteryUsageStats = context.getSystemService(BatteryStatsManager.class)
- .getBatteryUsageStats();
+ batteryUsageStats =
+ context.getSystemService(BatteryStatsManager.class).getBatteryUsageStats();
} catch (RuntimeException e) {
Log.e(TAG, "getBatteryInfo() from getBatteryUsageStats()", e);
// Use default BatteryUsageStats.
batteryUsageStats = new BatteryUsageStats.Builder(new String[0]).build();
}
- BatteryInfo oldinfo = BatteryInfo.getBatteryInfoOld(getContext(), batteryBroadcast,
- batteryUsageStats, elapsedRealtimeUs, false);
+ BatteryInfo oldinfo =
+ BatteryInfo.getBatteryInfoOld(
+ getContext(),
+ batteryBroadcast,
+ batteryUsageStats,
+ elapsedRealtimeUs,
+ false);
Estimate estimate = powerUsageFeatureProvider.getEnhancedBatteryPrediction(context);
if (estimate == null) {
estimate = new Estimate(0, false, EstimateKt.AVERAGE_TIME_TO_DISCHARGE_UNKNOWN);
}
- BatteryInfo newInfo = BatteryInfo.getBatteryInfo(getContext(), batteryBroadcast,
- batteryUsageStats,
- estimate, elapsedRealtimeUs, false);
+ BatteryInfo newInfo =
+ BatteryInfo.getBatteryInfo(
+ getContext(),
+ batteryBroadcast,
+ batteryUsageStats,
+ estimate,
+ elapsedRealtimeUs,
+ false);
List<BatteryInfo> infos = new ArrayList<>();
infos.add(oldinfo);
diff --git a/src/com/android/settings/fuelgauge/HighPowerDetail.java b/src/com/android/settings/fuelgauge/HighPowerDetail.java
index dc9150a..b2585a6 100644
--- a/src/com/android/settings/fuelgauge/HighPowerDetail.java
+++ b/src/com/android/settings/fuelgauge/HighPowerDetail.java
@@ -40,23 +40,18 @@
import com.android.settingslib.applications.ApplicationsState.AppEntry;
import com.android.settingslib.fuelgauge.PowerAllowlistBackend;
-public class HighPowerDetail extends InstrumentedDialogFragment implements OnClickListener,
- View.OnClickListener {
+public class HighPowerDetail extends InstrumentedDialogFragment
+ implements OnClickListener, View.OnClickListener {
private static final String ARG_DEFAULT_ON = "default_on";
- @VisibleForTesting
- PowerAllowlistBackend mBackend;
- @VisibleForTesting
- BatteryUtils mBatteryUtils;
- @VisibleForTesting
- String mPackageName;
- @VisibleForTesting
- int mPackageUid;
+ @VisibleForTesting PowerAllowlistBackend mBackend;
+ @VisibleForTesting BatteryUtils mBatteryUtils;
+ @VisibleForTesting String mPackageName;
+ @VisibleForTesting int mPackageUid;
private CharSequence mLabel;
private boolean mDefaultOn;
- @VisibleForTesting
- boolean mIsEnabled;
+ @VisibleForTesting boolean mIsEnabled;
private Checkable mOptionOn;
private Checkable mOptionOff;
@@ -85,10 +80,13 @@
}
public Checkable setup(View view, boolean on) {
- ((TextView) view.findViewById(android.R.id.title)).setText(on
- ? R.string.ignore_optimizations_on : R.string.ignore_optimizations_off);
- ((TextView) view.findViewById(android.R.id.summary)).setText(on
- ? R.string.ignore_optimizations_on_desc : R.string.ignore_optimizations_off_desc);
+ ((TextView) view.findViewById(android.R.id.title))
+ .setText(on ? R.string.ignore_optimizations_on : R.string.ignore_optimizations_off);
+ ((TextView) view.findViewById(android.R.id.summary))
+ .setText(
+ on
+ ? R.string.ignore_optimizations_on_desc
+ : R.string.ignore_optimizations_off_desc);
view.setClickable(true);
view.setOnClickListener(this);
if (!on && mBackend.isSysAllowlisted(mPackageName)) {
@@ -99,10 +97,11 @@
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
- AlertDialog.Builder b = new AlertDialog.Builder(getContext())
- .setTitle(mLabel)
- .setNegativeButton(R.string.cancel, null)
- .setView(R.layout.ignore_optimizations_content);
+ AlertDialog.Builder b =
+ new AlertDialog.Builder(getContext())
+ .setTitle(mLabel)
+ .setNegativeButton(R.string.cancel, null)
+ .setView(R.layout.ignore_optimizations_content);
if (!mBackend.isSysAllowlisted(mPackageName)) {
b.setPositiveButton(R.string.done, this);
}
@@ -141,8 +140,8 @@
if (newValue != oldValue) {
logSpecialPermissionChange(newValue, mPackageName, getContext());
if (newValue) {
- mBatteryUtils.setForceAppStandby(mPackageUid, mPackageName,
- AppOpsManager.MODE_ALLOWED);
+ mBatteryUtils.setForceAppStandby(
+ mPackageUid, mPackageName, AppOpsManager.MODE_ALLOWED);
mBackend.addApp(mPackageName);
} else {
mBackend.removeApp(mPackageName);
@@ -153,10 +152,13 @@
@VisibleForTesting
static void logSpecialPermissionChange(boolean allowlist, String packageName, Context context) {
- int logCategory = allowlist ? SettingsEnums.APP_SPECIAL_PERMISSION_BATTERY_DENY
- : SettingsEnums.APP_SPECIAL_PERMISSION_BATTERY_ALLOW;
- FeatureFactory.getFeatureFactory().getMetricsFeatureProvider().action(context, logCategory,
- packageName);
+ int logCategory =
+ allowlist
+ ? SettingsEnums.APP_SPECIAL_PERMISSION_BATTERY_DENY
+ : SettingsEnums.APP_SPECIAL_PERMISSION_BATTERY_ALLOW;
+ FeatureFactory.getFeatureFactory()
+ .getMetricsFeatureProvider()
+ .action(context, logCategory, packageName);
}
@Override
@@ -177,8 +179,8 @@
}
@VisibleForTesting
- static CharSequence getSummary(Context context, PowerAllowlistBackend powerAllowlist,
- String pkg, int uid) {
+ static CharSequence getSummary(
+ Context context, PowerAllowlistBackend powerAllowlist, String pkg, int uid) {
return context.getString(
powerAllowlist.isSysAllowlisted(pkg) || powerAllowlist.isDefaultActiveApp(pkg, uid)
? R.string.high_power_system
diff --git a/src/com/android/settings/fuelgauge/InactiveApps.java b/src/com/android/settings/fuelgauge/InactiveApps.java
index a629fce..465a9d8 100644
--- a/src/com/android/settings/fuelgauge/InactiveApps.java
+++ b/src/com/android/settings/fuelgauge/InactiveApps.java
@@ -47,15 +47,16 @@
public class InactiveApps extends SettingsPreferenceFragment
implements Preference.OnPreferenceChangeListener {
- private static final CharSequence[] FULL_SETTABLE_BUCKETS_NAMES =
- {"ACTIVE", "WORKING_SET", "FREQUENT", "RARE", "RESTRICTED"};
+ private static final CharSequence[] FULL_SETTABLE_BUCKETS_NAMES = {
+ "ACTIVE", "WORKING_SET", "FREQUENT", "RARE", "RESTRICTED"
+ };
private static final CharSequence[] FULL_SETTABLE_BUCKETS_VALUES = {
- Integer.toString(STANDBY_BUCKET_ACTIVE),
- Integer.toString(STANDBY_BUCKET_WORKING_SET),
- Integer.toString(STANDBY_BUCKET_FREQUENT),
- Integer.toString(STANDBY_BUCKET_RARE),
- Integer.toString(STANDBY_BUCKET_RESTRICTED)
+ Integer.toString(STANDBY_BUCKET_ACTIVE),
+ Integer.toString(STANDBY_BUCKET_WORKING_SET),
+ Integer.toString(STANDBY_BUCKET_FREQUENT),
+ Integer.toString(STANDBY_BUCKET_RARE),
+ Integer.toString(STANDBY_BUCKET_RESTRICTED)
};
private UsageStatsManager mUsageStats;
@@ -118,7 +119,7 @@
return possibleBuckets;
}
if (minBucket < STANDBY_BUCKET_ACTIVE) {
- return new CharSequence[]{};
+ return new CharSequence[] {};
}
// Use FULL_SETTABLE_BUCKETS_VALUES since we're searching using the int value. The index
// should apply no matter which array we're going to copy from.
@@ -133,13 +134,20 @@
static String bucketToName(int bucket) {
switch (bucket) {
- case STANDBY_BUCKET_EXEMPTED: return "EXEMPTED";
- case STANDBY_BUCKET_ACTIVE: return "ACTIVE";
- case STANDBY_BUCKET_WORKING_SET: return "WORKING_SET";
- case STANDBY_BUCKET_FREQUENT: return "FREQUENT";
- case STANDBY_BUCKET_RARE: return "RARE";
- case STANDBY_BUCKET_RESTRICTED: return "RESTRICTED";
- case STANDBY_BUCKET_NEVER: return "NEVER";
+ case STANDBY_BUCKET_EXEMPTED:
+ return "EXEMPTED";
+ case STANDBY_BUCKET_ACTIVE:
+ return "ACTIVE";
+ case STANDBY_BUCKET_WORKING_SET:
+ return "WORKING_SET";
+ case STANDBY_BUCKET_FREQUENT:
+ return "FREQUENT";
+ case STANDBY_BUCKET_RARE:
+ return "RARE";
+ case STANDBY_BUCKET_RESTRICTED:
+ return "RESTRICTED";
+ case STANDBY_BUCKET_NEVER:
+ return "NEVER";
}
return "";
}
@@ -148,13 +156,13 @@
final Resources res = getActivity().getResources();
final int appBucket = mUsageStats.getAppStandbyBucket(p.getKey());
final String bucketName = bucketToName(appBucket);
- p.setSummary(res.getString(
- com.android.settingslib.R.string.standby_bucket_summary, bucketName));
+ p.setSummary(
+ res.getString(com.android.settingslib.R.string.standby_bucket_summary, bucketName));
// Buckets outside of the range of the dynamic ones are only used for special
// purposes and can either not be changed out of, or might have undesirable
// side-effects in combination with other assumptions.
- final boolean changeable = appBucket >= STANDBY_BUCKET_ACTIVE
- && appBucket <= STANDBY_BUCKET_RESTRICTED;
+ final boolean changeable =
+ appBucket >= STANDBY_BUCKET_ACTIVE && appBucket <= STANDBY_BUCKET_RESTRICTED;
if (changeable) {
p.setValue(Integer.toString(appBucket));
}
diff --git a/src/com/android/settings/fuelgauge/OptimizedPreferenceController.java b/src/com/android/settings/fuelgauge/OptimizedPreferenceController.java
index 3fed00c..a26ab7a 100644
--- a/src/com/android/settings/fuelgauge/OptimizedPreferenceController.java
+++ b/src/com/android/settings/fuelgauge/OptimizedPreferenceController.java
@@ -30,10 +30,8 @@
private static final String TAG = "OPTIMIZED_PREF";
- @VisibleForTesting
- static final String KEY_OPTIMIZED_PREF = "optimized_preference";
- @VisibleForTesting
- BatteryOptimizeUtils mBatteryOptimizeUtils;
+ @VisibleForTesting static final String KEY_OPTIMIZED_PREF = "optimized_preference";
+ @VisibleForTesting BatteryOptimizeUtils mBatteryOptimizeUtils;
public OptimizedPreferenceController(Context context, int uid, String packageName) {
super(context);
@@ -49,9 +47,10 @@
public void updateState(Preference preference) {
preference.setEnabled(mBatteryOptimizeUtils.isSelectorPreferenceEnabled());
- final boolean isOptimized = mBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()
- || mBatteryOptimizeUtils.getAppOptimizationMode()
- == BatteryOptimizeUtils.MODE_OPTIMIZED;
+ final boolean isOptimized =
+ mBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()
+ || mBatteryOptimizeUtils.getAppOptimizationMode()
+ == BatteryOptimizeUtils.MODE_OPTIMIZED;
((SelectorWithWidgetPreference) preference).setChecked(isOptimized);
}
diff --git a/src/com/android/settings/fuelgauge/PowerBackgroundUsageDetail.java b/src/com/android/settings/fuelgauge/PowerBackgroundUsageDetail.java
index 3bf4562..664d916 100644
--- a/src/com/android/settings/fuelgauge/PowerBackgroundUsageDetail.java
+++ b/src/com/android/settings/fuelgauge/PowerBackgroundUsageDetail.java
@@ -16,7 +16,6 @@
package com.android.settings.fuelgauge;
-
import static com.android.settings.fuelgauge.BatteryOptimizeHistoricalLogEntry.Action;
import android.app.Activity;
@@ -53,12 +52,9 @@
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
-/**
- * Allow background usage fragment for each app
- */
-public class PowerBackgroundUsageDetail extends DashboardFragment implements
- SelectorWithWidgetPreference.OnClickListener,
- OnMainSwitchChangeListener {
+/** Allow background usage fragment for each app */
+public class PowerBackgroundUsageDetail extends DashboardFragment
+ implements SelectorWithWidgetPreference.OnClickListener, OnMainSwitchChangeListener {
private static final String TAG = "PowerBackgroundUsageDetail";
public static final String EXTRA_UID = "extra_uid";
@@ -74,28 +70,18 @@
private final ExecutorService mExecutor = Executors.newSingleThreadExecutor();
- @VisibleForTesting
- LayoutPreference mHeaderPreference;
- @VisibleForTesting
- ApplicationsState mState;
- @VisibleForTesting
- ApplicationsState.AppEntry mAppEntry;
- @VisibleForTesting
- BatteryOptimizeUtils mBatteryOptimizeUtils;
- @VisibleForTesting
- SelectorWithWidgetPreference mOptimizePreference;
- @VisibleForTesting
- SelectorWithWidgetPreference mUnrestrictedPreference;
- @VisibleForTesting
- MainSwitchPreference mMainSwitchPreference;
- @VisibleForTesting
- FooterPreference mFooterPreference;
- @VisibleForTesting
- BackupManager mBackupManager;
- @VisibleForTesting
- StringBuilder mLogStringBuilder;
- @VisibleForTesting
- @BatteryOptimizeUtils.OptimizationMode
+ @VisibleForTesting LayoutPreference mHeaderPreference;
+ @VisibleForTesting ApplicationsState mState;
+ @VisibleForTesting ApplicationsState.AppEntry mAppEntry;
+ @VisibleForTesting BatteryOptimizeUtils mBatteryOptimizeUtils;
+ @VisibleForTesting SelectorWithWidgetPreference mOptimizePreference;
+ @VisibleForTesting SelectorWithWidgetPreference mUnrestrictedPreference;
+ @VisibleForTesting MainSwitchPreference mMainSwitchPreference;
+ @VisibleForTesting FooterPreference mFooterPreference;
+ @VisibleForTesting BackupManager mBackupManager;
+ @VisibleForTesting StringBuilder mLogStringBuilder;
+
+ @VisibleForTesting @BatteryOptimizeUtils.OptimizationMode
int mOptimizationMode = BatteryOptimizeUtils.MODE_UNKNOWN;
@Override
@@ -124,15 +110,18 @@
initHeader();
mOptimizationMode = mBatteryOptimizeUtils.getAppOptimizationMode();
initFooter();
- mExecutor.execute(() -> {
- String packageName = BatteryUtils
- .getLoggingPackageName(getContext(), mBatteryOptimizeUtils.getPackageName());
- FeatureFactory.getFeatureFactory().getMetricsFeatureProvider()
- .action(
- getContext(),
- SettingsEnums.OPEN_APP_BATTERY_USAGE,
- packageName);
- });
+ mExecutor.execute(
+ () -> {
+ String packageName =
+ BatteryUtils.getLoggingPackageName(
+ getContext(), mBatteryOptimizeUtils.getPackageName());
+ FeatureFactory.getFeatureFactory()
+ .getMetricsFeatureProvider()
+ .action(
+ getContext(),
+ SettingsEnums.OPEN_APP_BATTERY_USAGE,
+ packageName);
+ });
mLogStringBuilder = new StringBuilder("onResume mode = ").append(mOptimizationMode);
}
@@ -145,14 +134,15 @@
mLogStringBuilder.append(", onPause mode = ").append(currentOptimizeMode);
logMetricCategory(currentOptimizeMode);
- mExecutor.execute(() -> {
- BatteryOptimizeLogUtils.writeLog(
- getContext().getApplicationContext(),
- Action.LEAVE,
- BatteryOptimizeLogUtils.getPackageNameWithUserId(
- mBatteryOptimizeUtils.getPackageName(), UserHandle.myUserId()),
- mLogStringBuilder.toString());
- });
+ mExecutor.execute(
+ () -> {
+ BatteryOptimizeLogUtils.writeLog(
+ getContext().getApplicationContext(),
+ Action.LEAVE,
+ BatteryOptimizeLogUtils.getPackageNameWithUserId(
+ mBatteryOptimizeUtils.getPackageName(), UserHandle.myUserId()),
+ mLogStringBuilder.toString());
+ });
Log.d(TAG, "Leave with mode: " + currentOptimizeMode);
}
@@ -209,8 +199,8 @@
@VisibleForTesting
void notifyBackupManager() {
if (mOptimizationMode != mBatteryOptimizeUtils.getAppOptimizationMode()) {
- final BackupManager backupManager = mBackupManager != null
- ? mBackupManager : new BackupManager(getContext());
+ final BackupManager backupManager =
+ mBackupManager != null ? mBackupManager : new BackupManager(getContext());
backupManager.dataChanged();
}
}
@@ -228,8 +218,7 @@
}
}
- static void startPowerBackgroundUsageDetailPage(
- Context context, Bundle args) {
+ static void startPowerBackgroundUsageDetailPage(Context context, Bundle args) {
new SubSettingLauncher(context)
.setDestination(PowerBackgroundUsageDetail.class.getName())
.setArguments(args)
@@ -242,10 +231,11 @@
final View appSnippet = mHeaderPreference.findViewById(R.id.entity_header);
final Activity context = getActivity();
final Bundle bundle = getArguments();
- EntityHeaderController controller = EntityHeaderController
- .newInstance(context, this, appSnippet)
- .setButtonActions(EntityHeaderController.ActionType.ACTION_NONE,
- EntityHeaderController.ActionType.ACTION_NONE);
+ EntityHeaderController controller =
+ EntityHeaderController.newInstance(context, this, appSnippet)
+ .setButtonActions(
+ EntityHeaderController.ActionType.ACTION_NONE,
+ EntityHeaderController.ActionType.ACTION_NONE);
if (mAppEntry == null) {
controller.setLabel(bundle.getString(EXTRA_LABEL));
@@ -275,23 +265,26 @@
if (mBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()) {
// Present optimized only string when the package name is invalid.
stateString = context.getString(R.string.manager_battery_usage_optimized_only);
- footerString = context.getString(
- R.string.manager_battery_usage_footer_limited, stateString);
+ footerString =
+ context.getString(R.string.manager_battery_usage_footer_limited, stateString);
} else if (mBatteryOptimizeUtils.isSystemOrDefaultApp()) {
// Present unrestricted only string when the package is system or default active app.
stateString = context.getString(R.string.manager_battery_usage_unrestricted_only);
- footerString = context.getString(
- R.string.manager_battery_usage_footer_limited, stateString);
+ footerString =
+ context.getString(R.string.manager_battery_usage_footer_limited, stateString);
} else {
// Present default string to normal app.
footerString = context.getString(R.string.manager_battery_usage_footer);
}
mFooterPreference.setTitle(footerString);
- final Intent helpIntent = HelpUtils.getHelpIntent(context, context.getString(
- R.string.help_url_app_usage_settings), /*backupContext=*/ "");
+ final Intent helpIntent =
+ HelpUtils.getHelpIntent(
+ context,
+ context.getString(R.string.help_url_app_usage_settings),
+ /* backupContext= */ "");
if (helpIntent != null) {
- mFooterPreference.setLearnMoreAction(v ->
- startActivityForResult(helpIntent, /*requestCode=*/ 0));
+ mFooterPreference.setLearnMoreAction(
+ v -> startActivityForResult(helpIntent, /* requestCode= */ 0));
mFooterPreference.setLearnMoreText(
context.getString(R.string.manager_battery_usage_link_a11y));
}
@@ -307,12 +300,13 @@
mUnrestrictedPreference.setOnClickListener(this);
mMainSwitchPreference.addOnSwitchChangeListener(this);
- mBatteryOptimizeUtils = new BatteryOptimizeUtils(
- getContext(), getArguments().getInt(EXTRA_UID), packageName);
+ mBatteryOptimizeUtils =
+ new BatteryOptimizeUtils(
+ getContext(), getArguments().getInt(EXTRA_UID), packageName);
}
- private void updateSelectorPreferenceState(SelectorWithWidgetPreference preference,
- String selectedKey) {
+ private void updateSelectorPreferenceState(
+ SelectorWithWidgetPreference preference, String selectedKey) {
preference.setChecked(TextUtils.equals(selectedKey, preference.getKey()));
}
@@ -336,16 +330,19 @@
return;
}
int finalMetricCategory = metricCategory;
- mExecutor.execute(() -> {
- String packageName = BatteryUtils
- .getLoggingPackageName(getContext(), mBatteryOptimizeUtils.getPackageName());
- FeatureFactory.getFeatureFactory().getMetricsFeatureProvider()
- .action(
- /* attribution */ SettingsEnums.OPEN_APP_BATTERY_USAGE,
- /* action */ finalMetricCategory,
- /* pageId */ SettingsEnums.OPEN_APP_BATTERY_USAGE,
- packageName,
- getArguments().getInt(EXTRA_POWER_USAGE_AMOUNT));
- });
+ mExecutor.execute(
+ () -> {
+ String packageName =
+ BatteryUtils.getLoggingPackageName(
+ getContext(), mBatteryOptimizeUtils.getPackageName());
+ FeatureFactory.getFeatureFactory()
+ .getMetricsFeatureProvider()
+ .action(
+ /* attribution */ SettingsEnums.OPEN_APP_BATTERY_USAGE,
+ /* action */ finalMetricCategory,
+ /* pageId */ SettingsEnums.OPEN_APP_BATTERY_USAGE,
+ packageName,
+ getArguments().getInt(EXTRA_POWER_USAGE_AMOUNT));
+ });
}
}
diff --git a/src/com/android/settings/fuelgauge/PowerUsageFeatureProvider.java b/src/com/android/settings/fuelgauge/PowerUsageFeatureProvider.java
index 4253ca6..a2ee3e4 100644
--- a/src/com/android/settings/fuelgauge/PowerUsageFeatureProvider.java
+++ b/src/com/android/settings/fuelgauge/PowerUsageFeatureProvider.java
@@ -28,19 +28,13 @@
import java.util.List;
import java.util.Set;
-/**
- * Feature Provider used in power usage
- */
+/** Feature Provider used in power usage */
public interface PowerUsageFeatureProvider {
- /**
- * Check whether the battery usage button is enabled in the battery page
- */
+ /** Check whether the battery usage button is enabled in the battery page */
boolean isBatteryUsageEnabled();
- /**
- * Check whether the battery tips card is enabled in the battery usage page
- */
+ /** Check whether the battery tips card is enabled in the battery usage page */
boolean isBatteryTipsEnabled();
/**
@@ -48,39 +42,25 @@
*/
double getBatteryUsageListScreenOnTimeThresholdInMs();
- /**
- * Returns a threshold (mA) for the minimal comsume power in battery usage list
- */
+ /** Returns a threshold (mA) for the minimal comsume power in battery usage list */
double getBatteryUsageListConsumePowerThreshold();
- /**
- * Returns an allowlist of app names combined into the system-apps item
- */
+ /** Returns an allowlist of app names combined into the system-apps item */
List<String> getSystemAppsAllowlist();
- /**
- * Check whether location setting is enabled
- */
+ /** Check whether location setting is enabled */
boolean isLocationSettingEnabled(String[] packages);
- /**
- * Gets an {@link Intent} to show additional battery info
- */
+ /** Gets an {@link Intent} to show additional battery info */
Intent getAdditionalBatteryInfoIntent();
- /**
- * Check whether it is type service
- */
+ /** Check whether it is type service */
boolean isTypeService(int uid);
- /**
- * Check whether it is type system
- */
+ /** Check whether it is type system */
boolean isTypeSystem(int uid, String[] packages);
- /**
- * Returns an improved prediction for battery time remaining
- */
+ /** Returns an improved prediction for battery time remaining */
Estimate getEnhancedBatteryPrediction(Context context);
/**
@@ -90,14 +70,10 @@
*/
SparseIntArray getEnhancedBatteryPredictionCurve(Context context, long zeroTime);
- /**
- * Checks whether the toggle for enhanced battery predictions is enabled
- */
+ /** Checks whether the toggle for enhanced battery predictions is enabled */
boolean isEnhancedBatteryPredictionEnabled(Context context);
- /**
- * Checks whether debugging should be enabled for battery estimates
- */
+ /** Checks whether debugging should be enabled for battery estimates */
boolean isEstimateDebugEnabled();
/**
@@ -115,88 +91,54 @@
*/
String getOldEstimateDebugString(String timeRemaining);
- /**
- * Checks whether smart battery feature is supported in this device
- */
+ /** Checks whether smart battery feature is supported in this device */
boolean isSmartBatterySupported();
- /**
- * Checks whether we should show usage information by slots or not
- */
+ /** Checks whether we should show usage information by slots or not */
boolean isChartGraphSlotsEnabled(Context context);
- /**
- * Returns {@code true} if current defender mode is extra defend
- */
+ /** Returns {@code true} if current defender mode is extra defend */
boolean isExtraDefend();
- /**
- * Returns {@code true} if delay the hourly job when device is booting
- */
+ /** Returns {@code true} if delay the hourly job when device is booting */
boolean delayHourlyJobWhenBooting();
- /**
- * Insert settings configuration data for anomaly detection
- */
+ /** Insert settings configuration data for anomaly detection */
void insertSettingsData(Context context, double displayDrain);
- /**
- * Returns {@link Bundle} for settings anomaly detection result
- */
+ /** Returns {@link Bundle} for settings anomaly detection result */
PowerAnomalyEventList detectSettingsAnomaly(Context context, double displayDrain);
- /**
- * Gets an intent for one time bypass charge limited to resume charging.
- */
+ /** Gets an intent for one time bypass charge limited to resume charging. */
Intent getResumeChargeIntent(boolean isDockDefender);
- /**
- * Returns the intent action used to mark as the full charge start event.
- */
+ /** Returns the intent action used to mark as the full charge start event. */
String getFullChargeIntentAction();
- /**
- * Returns {@link Set} for the system component ids which are combined into others
- */
+ /** Returns {@link Set} for the system component ids which are combined into others */
Set<Integer> getOthersSystemComponentSet();
- /**
- * Returns {@link Set} for the custom system component names which are combined into others
- */
+ /** Returns {@link Set} for the custom system component names which are combined into others */
Set<String> getOthersCustomComponentNameSet();
- /**
- * Returns {@link Set} for hiding system component ids in the usage screen
- */
+ /** Returns {@link Set} for hiding system component ids in the usage screen */
Set<Integer> getHideSystemComponentSet();
- /**
- * Returns {@link Set} for hiding application package names in the usage screen
- */
+ /** Returns {@link Set} for hiding application package names in the usage screen */
Set<String> getHideApplicationSet();
- /**
- * Returns {@link Set} for hiding applications background usage time
- */
+ /** Returns {@link Set} for hiding applications background usage time */
Set<String> getHideBackgroundUsageTimeSet();
- /**
- * Returns {@link Set} for ignoring task root class names for screen on time
- */
+ /** Returns {@link Set} for ignoring task root class names for screen on time */
Set<String> getIgnoreScreenOnTimeTaskRootSet();
- /**
- * Returns the customized device build information for data backup
- */
+ /** Returns the customized device build information for data backup */
String getBuildMetadata1(Context context);
- /**
- * Returns the customized device build information for data backup
- */
+ /** Returns the customized device build information for data backup */
String getBuildMetadata2(Context context);
- /**
- * Whether the app optimization mode is valid to restore
- */
+ /** Whether the app optimization mode is valid to restore */
boolean isValidToRestoreOptimizationMode(ArrayMap<String, String> deviceInfoMap);
}
diff --git a/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java b/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java
index 5931e206..2e2cf12 100644
--- a/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java
+++ b/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java
@@ -39,8 +39,9 @@
private static final String PACKAGE_CALENDAR_PROVIDER = "com.android.providers.calendar";
private static final String PACKAGE_MEDIA_PROVIDER = "com.android.providers.media";
- private static final String[] PACKAGES_SYSTEM = {PACKAGE_MEDIA_PROVIDER,
- PACKAGE_CALENDAR_PROVIDER, SYSTEMUI_PACKAGE_NAME};
+ private static final String[] PACKAGES_SYSTEM = {
+ PACKAGE_MEDIA_PROVIDER, PACKAGE_CALENDAR_PROVIDER, SYSTEMUI_PACKAGE_NAME
+ };
protected PackageManager mPackageManager;
protected Context mContext;
@@ -137,8 +138,8 @@
@Override
public boolean isSmartBatterySupported() {
- return mContext.getResources().getBoolean(
- com.android.internal.R.bool.config_smart_battery_available);
+ return mContext.getResources()
+ .getBoolean(com.android.internal.R.bool.config_smart_battery_available);
}
@Override
diff --git a/src/com/android/settings/fuelgauge/PowerUsageTimeController.java b/src/com/android/settings/fuelgauge/PowerUsageTimeController.java
index 5ee15fb..0dfdd5d 100644
--- a/src/com/android/settings/fuelgauge/PowerUsageTimeController.java
+++ b/src/com/android/settings/fuelgauge/PowerUsageTimeController.java
@@ -36,12 +36,9 @@
private static final String KEY_SCREEN_TIME_PREF = "battery_usage_screen_time";
private static final String KEY_BACKGROUND_TIME_PREF = "battery_usage_background_time";
- @VisibleForTesting
- PreferenceCategory mPowerUsageTimeCategory;
- @VisibleForTesting
- PowerUsageTimePreference mScreenTimePreference;
- @VisibleForTesting
- PowerUsageTimePreference mBackgroundTimePreference;
+ @VisibleForTesting PreferenceCategory mPowerUsageTimeCategory;
+ @VisibleForTesting PowerUsageTimePreference mScreenTimePreference;
+ @VisibleForTesting PowerUsageTimePreference mBackgroundTimePreference;
public PowerUsageTimeController(Context context) {
super(context, KEY_POWER_USAGE_TIME);
@@ -61,22 +58,37 @@
mPowerUsageTimeCategory.setVisible(false);
}
- void handleScreenTimeUpdated(final String slotTime,
- final long screenOnTimeInMs, final long backgroundTimeInMs,
- final String anomalyHintPrefKey, final String anomalyHintText) {
- final boolean isShowScreenOnTime = showTimePreference(
- mScreenTimePreference, R.string.power_usage_detail_screen_time,
- screenOnTimeInMs, anomalyHintPrefKey, anomalyHintText);
- final boolean isShowBackgroundTime = showTimePreference(
- mBackgroundTimePreference, R.string.power_usage_detail_background_time,
- backgroundTimeInMs, anomalyHintPrefKey, anomalyHintText);
+ void handleScreenTimeUpdated(
+ final String slotTime,
+ final long screenOnTimeInMs,
+ final long backgroundTimeInMs,
+ final String anomalyHintPrefKey,
+ final String anomalyHintText) {
+ final boolean isShowScreenOnTime =
+ showTimePreference(
+ mScreenTimePreference,
+ R.string.power_usage_detail_screen_time,
+ screenOnTimeInMs,
+ anomalyHintPrefKey,
+ anomalyHintText);
+ final boolean isShowBackgroundTime =
+ showTimePreference(
+ mBackgroundTimePreference,
+ R.string.power_usage_detail_background_time,
+ backgroundTimeInMs,
+ anomalyHintPrefKey,
+ anomalyHintText);
if (isShowScreenOnTime || isShowBackgroundTime) {
showCategoryTitle(slotTime);
}
}
- boolean showTimePreference(PowerUsageTimePreference preference,
- int titleResId, long summaryTimeMs, String anomalyHintKey, String anomalyHintText) {
+ boolean showTimePreference(
+ PowerUsageTimePreference preference,
+ int titleResId,
+ long summaryTimeMs,
+ String anomalyHintKey,
+ String anomalyHintText) {
if (preference == null
|| (summaryTimeMs == 0 && !TextUtils.equals(anomalyHintKey, preference.getKey()))) {
return false;
@@ -94,15 +106,19 @@
if (timeInMs < DateUtils.MINUTE_IN_MILLIS) {
return mContext.getString(R.string.power_usage_time_less_than_one_minute);
}
- return formatElapsedTimeWithoutComma(mContext, (double) timeInMs,
- /*withSeconds=*/ false, /*collapseTimeUnit=*/ false);
+ return formatElapsedTimeWithoutComma(
+ mContext,
+ (double) timeInMs,
+ /* withSeconds= */ false,
+ /* collapseTimeUnit= */ false);
}
@VisibleForTesting
void showCategoryTitle(String slotTimestamp) {
- mPowerUsageTimeCategory.setTitle(slotTimestamp == null
- ? mContext.getString(R.string.battery_app_usage)
- : mContext.getString(R.string.battery_app_usage_for, slotTimestamp));
+ mPowerUsageTimeCategory.setTitle(
+ slotTimestamp == null
+ ? mContext.getString(R.string.battery_app_usage)
+ : mContext.getString(R.string.battery_app_usage_for, slotTimestamp));
mPowerUsageTimeCategory.setVisible(true);
}
}
diff --git a/src/com/android/settings/fuelgauge/PowerUsageTimePreference.java b/src/com/android/settings/fuelgauge/PowerUsageTimePreference.java
index 16f8be2..16c7770 100644
--- a/src/com/android/settings/fuelgauge/PowerUsageTimePreference.java
+++ b/src/com/android/settings/fuelgauge/PowerUsageTimePreference.java
@@ -28,18 +28,13 @@
import com.android.settings.R;
-/**
- * Custom preference for displaying the app power usage time.
- */
+/** Custom preference for displaying the app power usage time. */
public class PowerUsageTimePreference extends Preference {
private static final String TAG = "PowerUsageTimePreference";
- @VisibleForTesting
- CharSequence mTimeTitle;
- @VisibleForTesting
- CharSequence mTimeSummary;
- @VisibleForTesting
- CharSequence mAnomalyHintText;
+ @VisibleForTesting CharSequence mTimeTitle;
+ @VisibleForTesting CharSequence mTimeSummary;
+ @VisibleForTesting CharSequence mAnomalyHintText;
public PowerUsageTimePreference(Context context, AttributeSet attrs) {
super(context, attrs);
diff --git a/src/com/android/settings/fuelgauge/RequestIgnoreBatteryOptimizations.java b/src/com/android/settings/fuelgauge/RequestIgnoreBatteryOptimizations.java
index 9ef8c8c..d948cc0 100644
--- a/src/com/android/settings/fuelgauge/RequestIgnoreBatteryOptimizations.java
+++ b/src/com/android/settings/fuelgauge/RequestIgnoreBatteryOptimizations.java
@@ -31,8 +31,8 @@
import com.android.internal.app.AlertController;
import com.android.settings.R;
-public class RequestIgnoreBatteryOptimizations extends AlertActivity implements
- DialogInterface.OnClickListener {
+public class RequestIgnoreBatteryOptimizations extends AlertActivity
+ implements DialogInterface.OnClickListener {
private static final String TAG = "RequestIgnoreBatteryOptimizations";
private static final boolean DEBUG = false;
@@ -42,22 +42,24 @@
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- getWindow().addSystemFlags(android.view.WindowManager.LayoutParams
- .SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS);
+ getWindow()
+ .addSystemFlags(
+ android.view.WindowManager.LayoutParams
+ .SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS);
mPowerWhitelistManager = getSystemService(PowerWhitelistManager.class);
Uri data = getIntent().getData();
if (data == null) {
- debugLog("No data supplied for IGNORE_BATTERY_OPTIMIZATION_SETTINGS in: "
- + getIntent());
+ debugLog(
+ "No data supplied for IGNORE_BATTERY_OPTIMIZATION_SETTINGS in: " + getIntent());
finish();
return;
}
mPackageName = data.getSchemeSpecificPart();
if (mPackageName == null) {
- debugLog("No data supplied for IGNORE_BATTERY_OPTIMIZATION_SETTINGS in: "
- + getIntent());
+ debugLog(
+ "No data supplied for IGNORE_BATTERY_OPTIMIZATION_SETTINGS in: " + getIntent());
finish();
return;
}
@@ -69,11 +71,16 @@
return;
}
- if (getPackageManager().checkPermission(
- Manifest.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS, mPackageName)
+ if (getPackageManager()
+ .checkPermission(
+ Manifest.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS,
+ mPackageName)
!= PackageManager.PERMISSION_GRANTED) {
- debugLog("Requested package " + mPackageName + " does not hold permission "
- + Manifest.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
+ debugLog(
+ "Requested package "
+ + mPackageName
+ + " does not hold permission "
+ + Manifest.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
finish();
return;
}
@@ -88,9 +95,12 @@
}
final AlertController.AlertParams p = mAlertParams;
- final CharSequence appLabel = ai.loadSafeLabel(getPackageManager(),
- PackageItemInfo.DEFAULT_MAX_LABEL_SIZE_PX, PackageItemInfo.SAFE_LABEL_FLAG_TRIM
- | PackageItemInfo.SAFE_LABEL_FLAG_FIRST_LINE);
+ final CharSequence appLabel =
+ ai.loadSafeLabel(
+ getPackageManager(),
+ PackageItemInfo.DEFAULT_MAX_LABEL_SIZE_PX,
+ PackageItemInfo.SAFE_LABEL_FLAG_TRIM
+ | PackageItemInfo.SAFE_LABEL_FLAG_FIRST_LINE);
p.mTitle = getText(R.string.high_power_prompt_title);
p.mMessage = getString(R.string.high_power_prompt_body, appLabel);
p.mPositiveButtonText = getText(R.string.allow);
diff --git a/src/com/android/settings/fuelgauge/RestrictAppPreferenceController.java b/src/com/android/settings/fuelgauge/RestrictAppPreferenceController.java
index e17119f..ea59afa 100644
--- a/src/com/android/settings/fuelgauge/RestrictAppPreferenceController.java
+++ b/src/com/android/settings/fuelgauge/RestrictAppPreferenceController.java
@@ -35,15 +35,11 @@
import java.util.List;
-/**
- * Controller to change and update the smart battery toggle
- */
+/** Controller to change and update the smart battery toggle */
public class RestrictAppPreferenceController extends BasePreferenceController {
- @VisibleForTesting
- static final String KEY_RESTRICT_APP = "restricted_app";
+ @VisibleForTesting static final String KEY_RESTRICT_APP = "restricted_app";
- @VisibleForTesting
- List<AppInfo> mAppInfos;
+ @VisibleForTesting List<AppInfo> mAppInfos;
private AppOpsManager mAppOpsManager;
private InstrumentedPreferenceFragment mPreferenceFragment;
private UserManager mUserManager;
@@ -65,7 +61,8 @@
@Override
public int getAvailabilityStatus() {
- return mAppInfos.size() > 0 && !mEnableAppBatteryUsagePage ? AVAILABLE
+ return mAppInfos.size() > 0 && !mEnableAppBatteryUsagePage
+ ? AVAILABLE
: CONDITIONALLY_UNAVAILABLE;
}
@@ -76,17 +73,17 @@
final int num = mAppInfos.size();
// Fragment change RestrictedAppsList after onPause(), UI needs to be updated in onResume()
preference.setVisible(num > 0);
- preference.setSummary(StringUtil.getIcuPluralsString(mContext, num,
- R.string.restricted_app_summary));
+ preference.setSummary(
+ StringUtil.getIcuPluralsString(mContext, num, R.string.restricted_app_summary));
}
@Override
public boolean handlePreferenceTreeClick(Preference preference) {
if (getPreferenceKey().equals(preference.getKey())) {
// start fragment
- RestrictedAppDetails.startRestrictedAppDetails(mPreferenceFragment,
- mAppInfos);
- FeatureFactory.getFeatureFactory().getMetricsFeatureProvider()
+ RestrictedAppDetails.startRestrictedAppDetails(mPreferenceFragment, mAppInfos);
+ FeatureFactory.getFeatureFactory()
+ .getMetricsFeatureProvider()
.action(mContext, SettingsEnums.OPEN_APP_RESTRICTED_LIST);
return true;
}
diff --git a/src/com/android/settings/fuelgauge/RestrictedAppDetails.java b/src/com/android/settings/fuelgauge/RestrictedAppDetails.java
index 8cc59d0..82c92de 100644
--- a/src/com/android/settings/fuelgauge/RestrictedAppDetails.java
+++ b/src/com/android/settings/fuelgauge/RestrictedAppDetails.java
@@ -52,36 +52,28 @@
import java.util.List;
-/**
- * Fragment to show a list of anomaly apps, where user could handle these anomalies
- */
-public class RestrictedAppDetails extends DashboardFragment implements
- BatteryTipPreferenceController.BatteryTipListener {
+/** Fragment to show a list of anomaly apps, where user could handle these anomalies */
+public class RestrictedAppDetails extends DashboardFragment
+ implements BatteryTipPreferenceController.BatteryTipListener {
public static final String TAG = "RestrictedAppDetails";
- @VisibleForTesting
- static final String EXTRA_APP_INFO_LIST = "app_info_list";
+ @VisibleForTesting static final String EXTRA_APP_INFO_LIST = "app_info_list";
private static final String KEY_PREF_RESTRICTED_APP_LIST = "restrict_app_list";
private static final long TIME_NULL = -1;
- @VisibleForTesting
- List<AppInfo> mAppInfos;
- @VisibleForTesting
- IconDrawableFactory mIconDrawableFactory;
- @VisibleForTesting
- PreferenceGroup mRestrictedAppListGroup;
- @VisibleForTesting
- BatteryUtils mBatteryUtils;
- @VisibleForTesting
- PackageManager mPackageManager;
- @VisibleForTesting
- BatteryDatabaseManager mBatteryDatabaseManager;
+ @VisibleForTesting List<AppInfo> mAppInfos;
+ @VisibleForTesting IconDrawableFactory mIconDrawableFactory;
+ @VisibleForTesting PreferenceGroup mRestrictedAppListGroup;
+ @VisibleForTesting BatteryUtils mBatteryUtils;
+ @VisibleForTesting PackageManager mPackageManager;
+ @VisibleForTesting BatteryDatabaseManager mBatteryDatabaseManager;
private MetricsFeatureProvider mMetricsFeatureProvider;
- public static void startRestrictedAppDetails(InstrumentedPreferenceFragment fragment,
- List<AppInfo> appInfos) {
+ /** Starts restricted app details page */
+ public static void startRestrictedAppDetails(
+ InstrumentedPreferenceFragment fragment, List<AppInfo> appInfos) {
final Bundle args = new Bundle();
args.putParcelableList(EXTRA_APP_INFO_LIST, appInfos);
@@ -104,8 +96,7 @@
mIconDrawableFactory = IconDrawableFactory.newInstance(context);
mBatteryUtils = BatteryUtils.getInstance(context);
mBatteryDatabaseManager = BatteryDatabaseManager.getInstance(context);
- mMetricsFeatureProvider =
- FeatureFactory.getFeatureFactory().getMetricsFeatureProvider();
+ mMetricsFeatureProvider = FeatureFactory.getFeatureFactory().getMetricsFeatureProvider();
refreshUi();
}
@@ -144,39 +135,50 @@
void refreshUi() {
mRestrictedAppListGroup.removeAll();
final Context context = getPrefContext();
- final SparseLongArray timestampArray = mBatteryDatabaseManager
- .queryActionTime(AnomalyDatabaseHelper.ActionType.RESTRICTION);
+ final SparseLongArray timestampArray =
+ mBatteryDatabaseManager.queryActionTime(
+ AnomalyDatabaseHelper.ActionType.RESTRICTION);
final long now = System.currentTimeMillis();
for (int i = 0, size = mAppInfos.size(); i < size; i++) {
final CheckBoxPreference checkBoxPreference = new AppCheckBoxPreference(context);
final AppInfo appInfo = mAppInfos.get(i);
try {
- final ApplicationInfo applicationInfo = mPackageManager.getApplicationInfoAsUser(
- appInfo.packageName, 0 /* flags */, UserHandle.getUserId(appInfo.uid));
+ final ApplicationInfo applicationInfo =
+ mPackageManager.getApplicationInfoAsUser(
+ appInfo.packageName,
+ 0 /* flags */,
+ UserHandle.getUserId(appInfo.uid));
checkBoxPreference.setChecked(
mBatteryUtils.isForceAppStandbyEnabled(appInfo.uid, appInfo.packageName));
checkBoxPreference.setTitle(mPackageManager.getApplicationLabel(applicationInfo));
checkBoxPreference.setIcon(
- Utils.getBadgedIcon(mIconDrawableFactory, mPackageManager,
+ Utils.getBadgedIcon(
+ mIconDrawableFactory,
+ mPackageManager,
appInfo.packageName,
UserHandle.getUserId(appInfo.uid)));
checkBoxPreference.setKey(getKeyFromAppInfo(appInfo));
- checkBoxPreference.setOnPreferenceChangeListener((pref, value) -> {
- final BatteryTipDialogFragment fragment = createDialogFragment(appInfo,
- (Boolean) value);
- fragment.setTargetFragment(this, 0 /* requestCode */);
- fragment.show(getFragmentManager(), TAG);
- mMetricsFeatureProvider.action(getContext(),
- SettingsEnums.ACTION_APP_RESTRICTED_LIST_UNCHECKED,
- appInfo.packageName);
- return false;
- });
+ checkBoxPreference.setOnPreferenceChangeListener(
+ (pref, value) -> {
+ final BatteryTipDialogFragment fragment =
+ createDialogFragment(appInfo, (Boolean) value);
+ fragment.setTargetFragment(this, 0 /* requestCode */);
+ fragment.show(getFragmentManager(), TAG);
+ mMetricsFeatureProvider.action(
+ getContext(),
+ SettingsEnums.ACTION_APP_RESTRICTED_LIST_UNCHECKED,
+ appInfo.packageName);
+ return false;
+ });
final long timestamp = timestampArray.get(appInfo.uid, TIME_NULL);
if (timestamp != TIME_NULL) {
- checkBoxPreference.setSummary(getString(R.string.restricted_app_time_summary,
- StringUtil.formatRelativeTime(context, now - timestamp, false)));
+ checkBoxPreference.setSummary(
+ getString(
+ R.string.restricted_app_time_summary,
+ StringUtil.formatRelativeTime(
+ context, now - timestamp, false)));
}
final CharSequence test = checkBoxPreference.getSummaryOn();
mRestrictedAppListGroup.addPreference(checkBoxPreference);
@@ -196,8 +198,9 @@
appInfo = ((UnrestrictAppTip) batteryTip).getUnrestrictAppInfo();
}
- CheckBoxPreference preference = (CheckBoxPreference) mRestrictedAppListGroup
- .findPreference(getKeyFromAppInfo(appInfo));
+ CheckBoxPreference preference =
+ (CheckBoxPreference)
+ mRestrictedAppListGroup.findPreference(getKeyFromAppInfo(appInfo));
if (preference != null) {
preference.setChecked(isRestricted);
}
@@ -205,12 +208,12 @@
@VisibleForTesting
BatteryTipDialogFragment createDialogFragment(AppInfo appInfo, boolean toRestrict) {
- final BatteryTip batteryTip = toRestrict
- ? new RestrictAppTip(BatteryTip.StateType.NEW, appInfo)
- : new UnrestrictAppTip(BatteryTip.StateType.NEW, appInfo);
+ final BatteryTip batteryTip =
+ toRestrict
+ ? new RestrictAppTip(BatteryTip.StateType.NEW, appInfo)
+ : new UnrestrictAppTip(BatteryTip.StateType.NEW, appInfo);
- return BatteryTipDialogFragment.newInstance(
- batteryTip, getMetricsCategory());
+ return BatteryTipDialogFragment.newInstance(batteryTip, getMetricsCategory());
}
@VisibleForTesting
diff --git a/src/com/android/settings/fuelgauge/SmartBatteryPreferenceController.java b/src/com/android/settings/fuelgauge/SmartBatteryPreferenceController.java
index 7afd119..ba292f2 100644
--- a/src/com/android/settings/fuelgauge/SmartBatteryPreferenceController.java
+++ b/src/com/android/settings/fuelgauge/SmartBatteryPreferenceController.java
@@ -28,11 +28,9 @@
import com.android.settings.core.BasePreferenceController;
import com.android.settings.overlay.FeatureFactory;
-/**
- * Controller to change and update the smart battery toggle
- */
-public class SmartBatteryPreferenceController extends BasePreferenceController implements
- Preference.OnPreferenceChangeListener {
+/** Controller to change and update the smart battery toggle */
+public class SmartBatteryPreferenceController extends BasePreferenceController
+ implements Preference.OnPreferenceChangeListener {
private static final String KEY_SMART_BATTERY = "smart_battery";
private static final int ON = 1;
@@ -70,16 +68,22 @@
@Override
public void updateState(Preference preference) {
super.updateState(preference);
- final boolean smartBatteryOn = Settings.Global.getInt(mContext.getContentResolver(),
- Settings.Global.ADAPTIVE_BATTERY_MANAGEMENT_ENABLED, ON) == ON;
+ final boolean smartBatteryOn =
+ Settings.Global.getInt(
+ mContext.getContentResolver(),
+ Settings.Global.ADAPTIVE_BATTERY_MANAGEMENT_ENABLED,
+ ON)
+ == ON;
((TwoStatePreference) preference).setChecked(smartBatteryOn);
}
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
final boolean smartBatteryOn = (Boolean) newValue;
- Settings.Global.putInt(mContext.getContentResolver(),
- Settings.Global.ADAPTIVE_BATTERY_MANAGEMENT_ENABLED, smartBatteryOn ? ON : OFF);
+ Settings.Global.putInt(
+ mContext.getContentResolver(),
+ Settings.Global.ADAPTIVE_BATTERY_MANAGEMENT_ENABLED,
+ smartBatteryOn ? ON : OFF);
return true;
}
}
diff --git a/src/com/android/settings/fuelgauge/SmartBatterySettings.java b/src/com/android/settings/fuelgauge/SmartBatterySettings.java
index 88b1fc9..44dba9a 100644
--- a/src/com/android/settings/fuelgauge/SmartBatterySettings.java
+++ b/src/com/android/settings/fuelgauge/SmartBatterySettings.java
@@ -32,9 +32,7 @@
import java.util.Arrays;
import java.util.List;
-/**
- * Fragment to show smart battery and restricted app controls
- */
+/** Fragment to show smart battery and restricted app controls */
@SearchIndexable(forTarget = SearchIndexable.ALL & ~SearchIndexable.ARC)
public class SmartBatterySettings extends DashboardFragment {
public static final String TAG = "SmartBatterySettings";
@@ -65,12 +63,12 @@
}
private static List<AbstractPreferenceController> buildPreferenceControllers(
- Context context, SettingsActivity settingsActivity,
+ Context context,
+ SettingsActivity settingsActivity,
InstrumentedPreferenceFragment fragment) {
final List<AbstractPreferenceController> controllers = new ArrayList<>();
if (settingsActivity != null && fragment != null) {
- controllers.add(
- new RestrictAppPreferenceController(fragment));
+ controllers.add(new RestrictAppPreferenceController(fragment));
} else {
controllers.add(new RestrictAppPreferenceController(context));
}
diff --git a/src/com/android/settings/fuelgauge/TopLevelBatteryPreferenceController.java b/src/com/android/settings/fuelgauge/TopLevelBatteryPreferenceController.java
index b514888..0f54f3e 100644
--- a/src/com/android/settings/fuelgauge/TopLevelBatteryPreferenceController.java
+++ b/src/com/android/settings/fuelgauge/TopLevelBatteryPreferenceController.java
@@ -34,15 +34,13 @@
import com.android.settingslib.core.lifecycle.events.OnStop;
import com.android.settingslib.utils.ThreadUtils;
-public class TopLevelBatteryPreferenceController extends BasePreferenceController implements
- LifecycleObserver, OnStart, OnStop, BatteryPreferenceController {
+public class TopLevelBatteryPreferenceController extends BasePreferenceController
+ implements LifecycleObserver, OnStart, OnStop, BatteryPreferenceController {
private static final String TAG = "TopLvBatteryPrefControl";
- @VisibleForTesting
- Preference mPreference;
- @VisibleForTesting
- protected boolean mIsBatteryPresent = true;
+ @VisibleForTesting Preference mPreference;
+ @VisibleForTesting protected boolean mIsBatteryPresent = true;
private final BatteryBroadcastReceiver mBatteryBroadcastReceiver;
@@ -53,28 +51,33 @@
public TopLevelBatteryPreferenceController(Context context, String preferenceKey) {
super(context, preferenceKey);
mBatteryBroadcastReceiver = new BatteryBroadcastReceiver(mContext);
- mBatteryBroadcastReceiver.setBatteryChangedListener(type -> {
- Log.d(TAG, "onBatteryChanged: type=" + type);
- if (type == BatteryBroadcastReceiver.BatteryUpdateType.BATTERY_NOT_PRESENT) {
- mIsBatteryPresent = false;
- }
- BatteryInfo.getBatteryInfo(mContext, info -> {
- Log.d(TAG, "getBatteryInfo: " + info);
- mBatteryInfo = info;
- updateState(mPreference);
- // Update the preference summary text to the latest state.
- setSummaryAsync(info);
- }, true /* shortString */);
- });
+ mBatteryBroadcastReceiver.setBatteryChangedListener(
+ type -> {
+ Log.d(TAG, "onBatteryChanged: type=" + type);
+ if (type == BatteryBroadcastReceiver.BatteryUpdateType.BATTERY_NOT_PRESENT) {
+ mIsBatteryPresent = false;
+ }
+ BatteryInfo.getBatteryInfo(
+ mContext,
+ info -> {
+ Log.d(TAG, "getBatteryInfo: " + info);
+ mBatteryInfo = info;
+ updateState(mPreference);
+ // Update the preference summary text to the latest state.
+ setSummaryAsync(info);
+ },
+ true /* shortString */);
+ });
- mBatteryStatusFeatureProvider = FeatureFactory.getFeatureFactory()
- .getBatteryStatusFeatureProvider();
+ mBatteryStatusFeatureProvider =
+ FeatureFactory.getFeatureFactory().getBatteryStatusFeatureProvider();
}
@Override
public int getAvailabilityStatus() {
return mContext.getResources().getBoolean(R.bool.config_show_top_level_battery)
- ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
+ ? AVAILABLE
+ : UNSUPPORTED_ON_DEVICE;
}
@Override
@@ -106,13 +109,17 @@
return getDashboardLabel(mContext, mBatteryInfo, batteryStatusUpdate);
}
- protected CharSequence getDashboardLabel(Context context, BatteryInfo info,
- boolean batteryStatusUpdate) {
+ protected CharSequence getDashboardLabel(
+ Context context, BatteryInfo info, boolean batteryStatusUpdate) {
if (info == null || context == null) {
return null;
}
- Log.d(TAG, "getDashboardLabel: " + mBatteryStatusLabel + " batteryStatusUpdate="
- + batteryStatusUpdate);
+ Log.d(
+ TAG,
+ "getDashboardLabel: "
+ + mBatteryStatusLabel
+ + " batteryStatusUpdate="
+ + batteryStatusUpdate);
if (batteryStatusUpdate) {
setSummaryAsync(info);
@@ -121,19 +128,24 @@
}
private void setSummaryAsync(BatteryInfo info) {
- ThreadUtils.postOnBackgroundThread(() -> {
- // Return false if built-in status should be used, will use updateBatteryStatus()
- // method to inject the customized battery status label.
- final boolean triggerBatteryStatusUpdate =
- mBatteryStatusFeatureProvider.triggerBatteryStatusUpdate(this, info);
- ThreadUtils.postOnMainThread(() -> {
- if (!triggerBatteryStatusUpdate) {
- mBatteryStatusLabel = null; // will generateLabel()
- }
- mPreference.setSummary(
- mBatteryStatusLabel == null ? generateLabel(info) : mBatteryStatusLabel);
- });
- });
+ ThreadUtils.postOnBackgroundThread(
+ () -> {
+ // Return false if built-in status should be used, will use
+ // updateBatteryStatus()
+ // method to inject the customized battery status label.
+ final boolean triggerBatteryStatusUpdate =
+ mBatteryStatusFeatureProvider.triggerBatteryStatusUpdate(this, info);
+ ThreadUtils.postOnMainThread(
+ () -> {
+ if (!triggerBatteryStatusUpdate) {
+ mBatteryStatusLabel = null; // will generateLabel()
+ }
+ mPreference.setSummary(
+ mBatteryStatusLabel == null
+ ? generateLabel(info)
+ : mBatteryStatusLabel);
+ });
+ });
}
private CharSequence generateLabel(BatteryInfo info) {
@@ -156,9 +168,7 @@
}
}
- /**
- * Callback which receives text for the label.
- */
+ /** Callback which receives text for the label. */
@Override
public void updateBatteryStatus(String label, BatteryInfo info) {
mBatteryStatusLabel = label; // Null if adaptive charging is not active
diff --git a/src/com/android/settings/fuelgauge/UnrestrictedPreferenceController.java b/src/com/android/settings/fuelgauge/UnrestrictedPreferenceController.java
index b06b7e2..652941b 100644
--- a/src/com/android/settings/fuelgauge/UnrestrictedPreferenceController.java
+++ b/src/com/android/settings/fuelgauge/UnrestrictedPreferenceController.java
@@ -30,8 +30,7 @@
private static final String TAG = "UNRESTRICTED_PREF";
- @VisibleForTesting
- static final String KEY_UNRESTRICTED_PREF = "unrestricted_preference";
+ @VisibleForTesting static final String KEY_UNRESTRICTED_PREF = "unrestricted_preference";
@VisibleForTesting BatteryOptimizeUtils mBatteryOptimizeUtils;
@@ -44,8 +43,9 @@
public void updateState(Preference preference) {
preference.setEnabled(mBatteryOptimizeUtils.isSelectorPreferenceEnabled());
- final boolean isUnrestricted = mBatteryOptimizeUtils.getAppOptimizationMode()
- == BatteryOptimizeUtils.MODE_UNRESTRICTED;
+ final boolean isUnrestricted =
+ mBatteryOptimizeUtils.getAppOptimizationMode()
+ == BatteryOptimizeUtils.MODE_UNRESTRICTED;
((SelectorWithWidgetPreference) preference).setChecked(isUnrestricted);
}
diff --git a/src/com/android/settings/fuelgauge/batterysaver/BatterySaverButtonPreferenceController.java b/src/com/android/settings/fuelgauge/batterysaver/BatterySaverButtonPreferenceController.java
index be364ee..5c57c0c 100644
--- a/src/com/android/settings/fuelgauge/batterysaver/BatterySaverButtonPreferenceController.java
+++ b/src/com/android/settings/fuelgauge/batterysaver/BatterySaverButtonPreferenceController.java
@@ -37,12 +37,9 @@
import com.android.settingslib.fuelgauge.BatterySaverUtils;
import com.android.settingslib.widget.MainSwitchPreference;
-/**
- * Controller to update the battery saver button
- */
-public class BatterySaverButtonPreferenceController extends
- TogglePreferenceController implements LifecycleObserver, OnStart, OnStop,
- BatterySaverReceiver.BatterySaverListener {
+/** Controller to update the battery saver button */
+public class BatterySaverButtonPreferenceController extends TogglePreferenceController
+ implements LifecycleObserver, OnStart, OnStop, BatterySaverReceiver.BatterySaverListener {
private static final long SWITCH_ANIMATION_DURATION = 350L;
private final BatterySaverReceiver mBatterySaverReceiver;
@@ -104,8 +101,8 @@
@Override
public boolean setChecked(boolean stateOn) {
- return BatterySaverUtils.setPowerSaveMode(mContext, stateOn,
- false /* needFirstTimeWarning */, SAVER_ENABLED_SETTINGS);
+ return BatterySaverUtils.setPowerSaveMode(
+ mContext, stateOn, false /* needFirstTimeWarning */, SAVER_ENABLED_SETTINGS);
}
@Override
@@ -115,8 +112,7 @@
@Override
public void onPowerSaveModeChanged() {
- mHandler.postDelayed(() -> onPowerSaveModeChangedInternal(),
- SWITCH_ANIMATION_DURATION);
+ mHandler.postDelayed(() -> onPowerSaveModeChangedInternal(), SWITCH_ANIMATION_DURATION);
}
private void onPowerSaveModeChangedInternal() {
diff --git a/src/com/android/settings/fuelgauge/batterysaver/BatterySaverSchedulePreferenceController.java b/src/com/android/settings/fuelgauge/batterysaver/BatterySaverSchedulePreferenceController.java
index dce1903..ebec5cf 100644
--- a/src/com/android/settings/fuelgauge/batterysaver/BatterySaverSchedulePreferenceController.java
+++ b/src/com/android/settings/fuelgauge/batterysaver/BatterySaverSchedulePreferenceController.java
@@ -32,17 +32,14 @@
import com.android.settingslib.fuelgauge.BatterySaverUtils;
/**
- * Simple controller to navigate users to the scheduling page from
- * "Settings > Battery > Battery Saver". Also updates the summary for preference based on
- * the currently selected settings.
+ * Simple controller to navigate users to the scheduling page from "Settings > Battery > Battery
+ * Saver". Also updates the summary for preference based on the currently selected settings.
*/
public class BatterySaverSchedulePreferenceController extends BasePreferenceController {
- @VisibleForTesting
- Preference mBatterySaverSchedulePreference;
+ @VisibleForTesting Preference mBatterySaverSchedulePreference;
public static final String KEY_BATTERY_SAVER_SCHEDULE = "battery_saver_schedule";
-
public BatterySaverSchedulePreferenceController(Context context) {
super(context, KEY_BATTERY_SAVER_SCHEDULE);
BatterySaverUtils.revertScheduleToNoneIfNeeded(context);
@@ -66,7 +63,8 @@
if (KEY_PERCENTAGE.equals(mode)) {
final int threshold =
Settings.Global.getInt(resolver, Global.LOW_POWER_MODE_TRIGGER_LEVEL, 0);
- return mContext.getString(R.string.battery_saver_auto_percentage_summary,
+ return mContext.getString(
+ R.string.battery_saver_auto_percentage_summary,
Utils.formatPercentage(threshold));
}
return mContext.getText(R.string.battery_saver_auto_no_schedule);
diff --git a/src/com/android/settings/fuelgauge/batterysaver/BatterySaverScheduleRadioButtonsController.java b/src/com/android/settings/fuelgauge/batterysaver/BatterySaverScheduleRadioButtonsController.java
index 4266bea..45c1be0 100644
--- a/src/com/android/settings/fuelgauge/batterysaver/BatterySaverScheduleRadioButtonsController.java
+++ b/src/com/android/settings/fuelgauge/batterysaver/BatterySaverScheduleRadioButtonsController.java
@@ -31,12 +31,12 @@
/**
* Responds to user actions in the Settings > Battery > Set a Schedule Screen
*
- * Note that this is not a preference controller since that screen does not inherit from
+ * <p>Note that this is not a preference controller since that screen does not inherit from
* DashboardFragment.
*
- * Will call the appropriate power manager APIs and modify the correct settings to enable
- * users to control their automatic battery saver toggling preferences.
- * See {@link Settings.Global#AUTOMATIC_POWER_SAVE_MODE} for more details.
+ * <p>Will call the appropriate power manager APIs and modify the correct settings to enable users
+ * to control their automatic battery saver toggling preferences. See {@link
+ * Settings.Global#AUTOMATIC_POWER_SAVE_MODE} for more details.
*/
public class BatterySaverScheduleRadioButtonsController {
private static final String TAG = "BatterySaverScheduleRadioButtonsController";
@@ -46,8 +46,8 @@
private Context mContext;
private BatterySaverScheduleSeekBarController mSeekBarController;
- public BatterySaverScheduleRadioButtonsController(Context context,
- BatterySaverScheduleSeekBarController seekbar) {
+ public BatterySaverScheduleRadioButtonsController(
+ Context context, BatterySaverScheduleSeekBarController seekbar) {
mContext = context;
mSeekBarController = seekbar;
}
@@ -67,10 +67,11 @@
case KEY_PERCENTAGE:
triggerLevel = TRIGGER_LEVEL_MIN;
confirmationExtras.putBoolean(BatterySaverUtils.EXTRA_CONFIRM_TEXT_ONLY, true);
- confirmationExtras.putInt(BatterySaverUtils.EXTRA_POWER_SAVE_MODE_TRIGGER,
+ confirmationExtras.putInt(
+ BatterySaverUtils.EXTRA_POWER_SAVE_MODE_TRIGGER,
PowerManager.POWER_SAVE_MODE_TRIGGER_PERCENTAGE);
- confirmationExtras.putInt(BatterySaverUtils.EXTRA_POWER_SAVE_MODE_TRIGGER_LEVEL,
- triggerLevel);
+ confirmationExtras.putInt(
+ BatterySaverUtils.EXTRA_POWER_SAVE_MODE_TRIGGER_LEVEL, triggerLevel);
break;
default:
throw new IllegalStateException(
@@ -79,7 +80,7 @@
if (!TextUtils.equals(key, KEY_NO_SCHEDULE)
&& BatterySaverUtils.maybeShowBatterySaverConfirmation(
- mContext, confirmationExtras)) {
+ mContext, confirmationExtras)) {
// reset this if we need to show the confirmation message
mode = PowerManager.POWER_SAVE_MODE_TRIGGER_PERCENTAGE;
triggerLevel = 0;
diff --git a/src/com/android/settings/fuelgauge/batterysaver/BatterySaverScheduleSeekBarController.java b/src/com/android/settings/fuelgauge/batterysaver/BatterySaverScheduleSeekBarController.java
index 687221e..8580f6e 100644
--- a/src/com/android/settings/fuelgauge/batterysaver/BatterySaverScheduleSeekBarController.java
+++ b/src/com/android/settings/fuelgauge/batterysaver/BatterySaverScheduleSeekBarController.java
@@ -35,30 +35,28 @@
import com.android.settingslib.fuelgauge.BatterySaverUtils;
/**
- * Responds to user actions in the Settings > Battery > Set a Schedule Screen for the seekbar.
- * Note that this seekbar is only visible when the radio button selected is "Percentage".
+ * Responds to user actions in the Settings > Battery > Set a Schedule Screen for the seekbar. Note
+ * that this seekbar is only visible when the radio button selected is "Percentage".
*
- * Note that this is not a preference controller since that screen does not inherit from
+ * <p>Note that this is not a preference controller since that screen does not inherit from
* DashboardFragment.
*
- * Will call the appropriate power manager APIs and modify the correct settings to enable
- * users to control their automatic battery saver toggling preferences.
- * See {@link Settings.Global#AUTOMATIC_POWER_SAVE_MODE} for more details.
+ * <p>Will call the appropriate power manager APIs and modify the correct settings to enable users
+ * to control their automatic battery saver toggling preferences. See {@link
+ * Settings.Global#AUTOMATIC_POWER_SAVE_MODE} for more details.
*/
-public class BatterySaverScheduleSeekBarController implements
- OnPreferenceChangeListener, OnSeekBarChangeListener {
+public class BatterySaverScheduleSeekBarController
+ implements OnPreferenceChangeListener, OnSeekBarChangeListener {
public static final int MAX_SEEKBAR_VALUE = 15;
public static final int MIN_SEEKBAR_VALUE = 2;
public static final String KEY_BATTERY_SAVER_SEEK_BAR = "battery_saver_seek_bar";
private static final int LEVEL_UNIT_SCALE = 5;
- @VisibleForTesting
- public SeekBarPreference mSeekBarPreference;
+ @VisibleForTesting public SeekBarPreference mSeekBarPreference;
private Context mContext;
- @VisibleForTesting
- int mPercentage;
+ @VisibleForTesting int mPercentage;
public BatterySaverScheduleSeekBarController(Context context) {
mContext = context;
@@ -93,7 +91,8 @@
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
if (mPercentage > 0) {
- Settings.Global.putInt(mContext.getContentResolver(),
+ Settings.Global.putInt(
+ mContext.getContentResolver(),
Global.LOW_POWER_MODE_TRIGGER_LEVEL,
mPercentage);
}
@@ -108,8 +107,7 @@
final int currentSeekbarValue = Math.max(threshold / 5, MIN_SEEKBAR_VALUE);
mSeekBarPreference.setVisible(true);
mSeekBarPreference.setProgress(currentSeekbarValue);
- final CharSequence stateDescription = formatStateDescription(
- currentSeekbarValue * 5);
+ final CharSequence stateDescription = formatStateDescription(currentSeekbarValue * 5);
mSeekBarPreference.setTitle(stateDescription);
mSeekBarPreference.overrideSeekBarStateDescription(stateDescription);
} else {
@@ -130,7 +128,7 @@
}
private CharSequence formatStateDescription(int percentage) {
- return mContext.getString(R.string.battery_saver_seekbar_title,
- Utils.formatPercentage(percentage));
+ return mContext.getString(
+ R.string.battery_saver_seekbar_title, Utils.formatPercentage(percentage));
}
}
diff --git a/src/com/android/settings/fuelgauge/batterysaver/BatterySaverScheduleSettings.java b/src/com/android/settings/fuelgauge/batterysaver/BatterySaverScheduleSettings.java
index 2d841bd..cded470 100644
--- a/src/com/android/settings/fuelgauge/batterysaver/BatterySaverScheduleSettings.java
+++ b/src/com/android/settings/fuelgauge/batterysaver/BatterySaverScheduleSettings.java
@@ -49,32 +49,32 @@
import java.util.List;
/**
- * Fragment that allows users to customize their automatic battery saver mode settings.
- *
- * Location: Settings > Battery > Battery Saver > Set a Schedule
+ * Fragment that allows users to customize their automatic battery saver mode settings. <br>
+ * <br>
+ * Location: Settings > Battery > Battery Saver > Set a Schedule <br>
* See {@link BatterySaverSchedulePreferenceController} for the controller that manages navigation
- * to this screen from "Settings > Battery > Battery Saver" and the summary.
- * See {@link BatterySaverScheduleRadioButtonsController} &
- * {@link BatterySaverScheduleSeekBarController} for the controller that manages user
- * interactions in this screen.
+ * to this screen from "Settings > Battery > Battery Saver" and the summary. <br>
+ * See {@link BatterySaverScheduleRadioButtonsController} & {@link
+ * BatterySaverScheduleSeekBarController} for the controller that manages user interactions in this
+ * screen.
*/
public class BatterySaverScheduleSettings extends RadioButtonPickerFragment {
public BatterySaverScheduleRadioButtonsController mRadioButtonController;
- @VisibleForTesting
- Context mContext;
+ @VisibleForTesting Context mContext;
private int mSaverPercentage;
private String mSaverScheduleKey;
private BatterySaverScheduleSeekBarController mSeekBarController;
@VisibleForTesting
- final ContentObserver mSettingsObserver = new ContentObserver(new Handler()) {
- @Override
- public void onChange(boolean selfChange, Uri uri) {
- getPreferenceScreen().removeAll();
- updateCandidates();
- }
- };
+ final ContentObserver mSettingsObserver =
+ new ContentObserver(new Handler()) {
+ @Override
+ public void onChange(boolean selfChange, Uri uri) {
+ getPreferenceScreen().removeAll();
+ updateCandidates();
+ }
+ };
@Override
protected int getPreferenceScreenResId() {
@@ -85,18 +85,19 @@
public void onAttach(Context context) {
super.onAttach(context);
mSeekBarController = new BatterySaverScheduleSeekBarController(context);
- mRadioButtonController = new BatterySaverScheduleRadioButtonsController(
- context, mSeekBarController);
+ mRadioButtonController =
+ new BatterySaverScheduleRadioButtonsController(context, mSeekBarController);
mContext = context;
}
@Override
public void onResume() {
super.onResume();
- mContext.getContentResolver().registerContentObserver(
- Settings.Secure.getUriFor(Settings.Secure.LOW_POWER_WARNING_ACKNOWLEDGED),
- false,
- mSettingsObserver);
+ mContext.getContentResolver()
+ .registerContentObserver(
+ Settings.Secure.getUriFor(Settings.Secure.LOW_POWER_WARNING_ACKNOWLEDGED),
+ false,
+ mSettingsObserver);
mSaverScheduleKey = BatterySaverUtils.getBatterySaverScheduleKey(mContext);
mSaverPercentage = getSaverPercentage();
}
@@ -124,24 +125,30 @@
protected List<? extends CandidateInfo> getCandidates() {
Context context = getContext();
List<CandidateInfo> candidates = Lists.newArrayList();
- candidates.add(new BatterySaverScheduleCandidateInfo(
- context.getText(R.string.battery_saver_auto_no_schedule),
- /* summary */ null,
- KEY_NO_SCHEDULE,
- /* enabled */ true));
+ candidates.add(
+ new BatterySaverScheduleCandidateInfo(
+ context.getText(R.string.battery_saver_auto_no_schedule),
+ /* summary */ null,
+ KEY_NO_SCHEDULE,
+ /* enabled */ true));
BatterySaverUtils.revertScheduleToNoneIfNeeded(context);
- candidates.add(new BatterySaverScheduleCandidateInfo(
- context.getText(R.string.battery_saver_auto_percentage),
- /* summary */ null,
- KEY_PERCENTAGE,
- /* enabled */ true));
+ candidates.add(
+ new BatterySaverScheduleCandidateInfo(
+ context.getText(R.string.battery_saver_auto_percentage),
+ /* summary */ null,
+ KEY_PERCENTAGE,
+ /* enabled */ true));
return candidates;
}
@Override
- public void bindPreferenceExtra(SelectorWithWidgetPreference pref, String key,
- CandidateInfo info, String defaultKey, String systemDefaultKey) {
+ public void bindPreferenceExtra(
+ SelectorWithWidgetPreference pref,
+ String key,
+ CandidateInfo info,
+ String defaultKey,
+ String systemDefaultKey) {
final BatterySaverScheduleCandidateInfo candidateInfo =
(BatterySaverScheduleCandidateInfo) info;
final CharSequence summary = candidateInfo.getSummary();
@@ -174,14 +181,16 @@
private void logPowerSaver() {
final int currentSaverPercentage = getSaverPercentage();
- final String currentSaverScheduleKey = BatterySaverUtils.getBatterySaverScheduleKey(
- mContext);
+ final String currentSaverScheduleKey =
+ BatterySaverUtils.getBatterySaverScheduleKey(mContext);
if (mSaverScheduleKey.equals(currentSaverScheduleKey)
&& mSaverPercentage == currentSaverPercentage) {
return;
}
- FeatureFactory.getFeatureFactory().getMetricsFeatureProvider()
- .action(SettingsEnums.FUELGAUGE_BATTERY_SAVER,
+ FeatureFactory.getFeatureFactory()
+ .getMetricsFeatureProvider()
+ .action(
+ SettingsEnums.FUELGAUGE_BATTERY_SAVER,
SettingsEnums.FIELD_BATTERY_SAVER_SCHEDULE_TYPE,
SettingsEnums.FIELD_BATTERY_SAVER_PERCENTAGE_VALUE,
currentSaverScheduleKey,
@@ -189,8 +198,8 @@
}
private int getSaverPercentage() {
- return Settings.Global.getInt(mContext.getContentResolver(),
- Settings.Global.LOW_POWER_MODE_TRIGGER_LEVEL, -1);
+ return Settings.Global.getInt(
+ mContext.getContentResolver(), Settings.Global.LOW_POWER_MODE_TRIGGER_LEVEL, -1);
}
static class BatterySaverScheduleCandidateInfo extends CandidateInfo {
@@ -199,8 +208,8 @@
private final CharSequence mSummary;
private final String mKey;
- BatterySaverScheduleCandidateInfo(CharSequence label, CharSequence summary, String key,
- boolean enabled) {
+ BatterySaverScheduleCandidateInfo(
+ CharSequence label, CharSequence summary, String key, boolean enabled) {
super(enabled);
mLabel = label;
mKey = key;
diff --git a/src/com/android/settings/fuelgauge/batterysaver/BatterySaverSettings.java b/src/com/android/settings/fuelgauge/batterysaver/BatterySaverSettings.java
index c86775f..8e281de 100644
--- a/src/com/android/settings/fuelgauge/batterysaver/BatterySaverSettings.java
+++ b/src/com/android/settings/fuelgauge/batterysaver/BatterySaverSettings.java
@@ -28,9 +28,7 @@
import com.android.settingslib.search.SearchIndexable;
import com.android.settingslib.widget.FooterPreference;
-/**
- * Battery saver settings page
- */
+/** Battery saver settings page */
@SearchIndexable(forTarget = SearchIndexable.ALL & ~SearchIndexable.ARC)
public class BatterySaverSettings extends DashboardFragment {
private static final String TAG = "BatterySaverSettings";
@@ -63,9 +61,7 @@
return R.string.help_url_battery_saver_settings;
}
- /**
- * For Search.
- */
+ /** For Search. */
public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
new BaseSearchIndexProvider(R.xml.battery_saver_settings);
@@ -83,13 +79,17 @@
void addHelpLink() {
FooterPreference pref = getPreferenceScreen().findPreference(KEY_FOOTER_PREFERENCE);
if (pref != null) {
- pref.setLearnMoreAction(v -> {
- mMetricsFeatureProvider.action(getContext(),
- SettingsEnums.ACTION_APP_BATTERY_LEARN_MORE);
- startActivityForResult(HelpUtils.getHelpIntent(getContext(),
- getString(R.string.help_url_battery_saver_settings),
- /*backupContext=*/ ""), /*requestCode=*/ 0);
- });
+ pref.setLearnMoreAction(
+ v -> {
+ mMetricsFeatureProvider.action(
+ getContext(), SettingsEnums.ACTION_APP_BATTERY_LEARN_MORE);
+ startActivityForResult(
+ HelpUtils.getHelpIntent(
+ getContext(),
+ getString(R.string.help_url_battery_saver_settings),
+ /* backupContext= */ ""),
+ /* requestCode= */ 0);
+ });
pref.setLearnMoreText(getString(R.string.battery_saver_link_a11y));
}
}
diff --git a/src/com/android/settings/fuelgauge/batterysaver/BatterySaverStickyPreferenceController.java b/src/com/android/settings/fuelgauge/batterysaver/BatterySaverStickyPreferenceController.java
index 0a39909..dea4e4d 100644
--- a/src/com/android/settings/fuelgauge/batterysaver/BatterySaverStickyPreferenceController.java
+++ b/src/com/android/settings/fuelgauge/batterysaver/BatterySaverStickyPreferenceController.java
@@ -12,8 +12,8 @@
import com.android.settings.core.PreferenceControllerMixin;
import com.android.settings.core.TogglePreferenceController;
-public class BatterySaverStickyPreferenceController extends TogglePreferenceController implements
- PreferenceControllerMixin, Preference.OnPreferenceChangeListener {
+public class BatterySaverStickyPreferenceController extends TogglePreferenceController
+ implements PreferenceControllerMixin, Preference.OnPreferenceChangeListener {
private static final int DEFAULT_STICKY_SHUTOFF_LEVEL = 90;
private Context mContext;
@@ -25,34 +25,46 @@
@Override
public boolean isChecked() {
- return Settings.Global.getInt(mContext.getContentResolver(),
- Global.LOW_POWER_MODE_STICKY_AUTO_DISABLE_ENABLED, 1) == 1;
+ return Settings.Global.getInt(
+ mContext.getContentResolver(),
+ Global.LOW_POWER_MODE_STICKY_AUTO_DISABLE_ENABLED,
+ 1)
+ == 1;
}
@Override
public boolean setChecked(boolean isChecked) {
- Settings.Global.putInt(mContext.getContentResolver(),
- Global.LOW_POWER_MODE_STICKY_AUTO_DISABLE_ENABLED,
- isChecked ? 1 : 0);
+ Settings.Global.putInt(
+ mContext.getContentResolver(),
+ Global.LOW_POWER_MODE_STICKY_AUTO_DISABLE_ENABLED,
+ isChecked ? 1 : 0);
return true;
}
@Override
protected void refreshSummary(Preference preference) {
super.refreshSummary(preference);
- final int stickyShutoffLevel = Settings.Global.getInt(mContext.getContentResolver(),
- Global.LOW_POWER_MODE_STICKY_AUTO_DISABLE_LEVEL, DEFAULT_STICKY_SHUTOFF_LEVEL);
+ final int stickyShutoffLevel =
+ Settings.Global.getInt(
+ mContext.getContentResolver(),
+ Global.LOW_POWER_MODE_STICKY_AUTO_DISABLE_LEVEL,
+ DEFAULT_STICKY_SHUTOFF_LEVEL);
final String formatPercentage = Utils.formatPercentage(stickyShutoffLevel);
- preference.setTitle(mContext.getString(R.string.battery_saver_sticky_title_percentage,
- formatPercentage));
- preference.setSummary(mContext.getString(R.string.battery_saver_sticky_description_new,
- formatPercentage));
+ preference.setTitle(
+ mContext.getString(
+ R.string.battery_saver_sticky_title_percentage, formatPercentage));
+ preference.setSummary(
+ mContext.getString(
+ R.string.battery_saver_sticky_description_new, formatPercentage));
}
@Override
public void updateState(Preference preference) {
- int setting = Settings.Global.getInt(mContext.getContentResolver(),
- Global.LOW_POWER_MODE_STICKY_AUTO_DISABLE_ENABLED, 1);
+ int setting =
+ Settings.Global.getInt(
+ mContext.getContentResolver(),
+ Global.LOW_POWER_MODE_STICKY_AUTO_DISABLE_ENABLED,
+ 1);
((TwoStatePreference) preference).setChecked(setting == 1);
refreshSummary(preference);
diff --git a/src/com/android/settings/fuelgauge/batterytip/AnomalyCleanupJobService.java b/src/com/android/settings/fuelgauge/batterytip/AnomalyCleanupJobService.java
index bb73142..0eaed17 100644
--- a/src/com/android/settings/fuelgauge/batterytip/AnomalyCleanupJobService.java
+++ b/src/com/android/settings/fuelgauge/batterytip/AnomalyCleanupJobService.java
@@ -35,8 +35,7 @@
public class AnomalyCleanupJobService extends JobService {
private static final String TAG = "AnomalyCleanUpJobService";
- @VisibleForTesting
- static final long CLEAN_UP_FREQUENCY_MS = TimeUnit.DAYS.toMillis(1);
+ @VisibleForTesting static final long CLEAN_UP_FREQUENCY_MS = TimeUnit.DAYS.toMillis(1);
public static void scheduleCleanUp(Context context) {
final JobScheduler jobScheduler = context.getSystemService(JobScheduler.class);
@@ -52,23 +51,24 @@
// Don't schedule it if it already exists, to make sure it runs periodically even after
// reboot
- if (pending == null && jobScheduler.schedule(jobBuilder.build())
- != JobScheduler.RESULT_SUCCESS) {
+ if (pending == null
+ && jobScheduler.schedule(jobBuilder.build()) != JobScheduler.RESULT_SUCCESS) {
Log.i(TAG, "Anomaly clean up job service schedule failed.");
}
}
@Override
public boolean onStartJob(JobParameters params) {
- final BatteryDatabaseManager batteryDatabaseManager = BatteryDatabaseManager
- .getInstance(this);
+ final BatteryDatabaseManager batteryDatabaseManager =
+ BatteryDatabaseManager.getInstance(this);
final BatteryTipPolicy policy = new BatteryTipPolicy(this);
- ThreadUtils.postOnBackgroundThread(() -> {
- batteryDatabaseManager.deleteAllAnomaliesBeforeTimeStamp(
- System.currentTimeMillis() - TimeUnit.DAYS.toMillis(
- policy.dataHistoryRetainDay));
- jobFinished(params, false /* wantsReschedule */);
- });
+ ThreadUtils.postOnBackgroundThread(
+ () -> {
+ batteryDatabaseManager.deleteAllAnomaliesBeforeTimeStamp(
+ System.currentTimeMillis()
+ - TimeUnit.DAYS.toMillis(policy.dataHistoryRetainDay));
+ jobFinished(params, false /* wantsReschedule */);
+ });
return true;
}
diff --git a/src/com/android/settings/fuelgauge/batterytip/AnomalyConfigJobService.java b/src/com/android/settings/fuelgauge/batterytip/AnomalyConfigJobService.java
index ad02c3a..fe75c8e 100644
--- a/src/com/android/settings/fuelgauge/batterytip/AnomalyConfigJobService.java
+++ b/src/com/android/settings/fuelgauge/batterytip/AnomalyConfigJobService.java
@@ -44,8 +44,7 @@
public static final String KEY_ANOMALY_CONFIG_VERSION = "anomaly_config_version";
private static final int DEFAULT_VERSION = 0;
- @VisibleForTesting
- static final long CONFIG_UPDATE_FREQUENCY_MS = TimeUnit.DAYS.toMillis(1);
+ @VisibleForTesting static final long CONFIG_UPDATE_FREQUENCY_MS = TimeUnit.DAYS.toMillis(1);
public static void scheduleConfigUpdate(Context context) {
final JobScheduler jobScheduler = context.getSystemService(JobScheduler.class);
@@ -61,24 +60,25 @@
// Don't schedule it if it already exists, to make sure it runs periodically even after
// reboot
- if (pending == null && jobScheduler.schedule(jobBuilder.build())
- != JobScheduler.RESULT_SUCCESS) {
+ if (pending == null
+ && jobScheduler.schedule(jobBuilder.build()) != JobScheduler.RESULT_SUCCESS) {
Log.i(TAG, "Anomaly config update job service schedule failed.");
}
}
@Override
public boolean onStartJob(JobParameters params) {
- ThreadUtils.postOnBackgroundThread(() -> {
- final StatsManager statsManager = getSystemService(StatsManager.class);
- checkAnomalyConfig(statsManager);
- try {
- BatteryTipUtils.uploadAnomalyPendingIntent(this, statsManager);
- } catch (StatsManager.StatsUnavailableException e) {
- Log.w(TAG, "Failed to uploadAnomalyPendingIntent.", e);
- }
- jobFinished(params, false /* wantsReschedule */);
- });
+ ThreadUtils.postOnBackgroundThread(
+ () -> {
+ final StatsManager statsManager = getSystemService(StatsManager.class);
+ checkAnomalyConfig(statsManager);
+ try {
+ BatteryTipUtils.uploadAnomalyPendingIntent(this, statsManager);
+ } catch (StatsManager.StatsUnavailableException e) {
+ Log.w(TAG, "Failed to uploadAnomalyPendingIntent.", e);
+ }
+ jobFinished(params, false /* wantsReschedule */);
+ });
return true;
}
@@ -90,37 +90,48 @@
@VisibleForTesting
synchronized void checkAnomalyConfig(StatsManager statsManager) {
- final SharedPreferences sharedPreferences = getSharedPreferences(PREF_DB,
- Context.MODE_PRIVATE);
- final int currentVersion = sharedPreferences.getInt(KEY_ANOMALY_CONFIG_VERSION,
- DEFAULT_VERSION);
- final int newVersion = Settings.Global.getInt(getContentResolver(),
- Settings.Global.ANOMALY_CONFIG_VERSION, DEFAULT_VERSION);
- final String rawConfig = Settings.Global.getString(getContentResolver(),
- Settings.Global.ANOMALY_CONFIG);
+ final SharedPreferences sharedPreferences =
+ getSharedPreferences(PREF_DB, Context.MODE_PRIVATE);
+ final int currentVersion =
+ sharedPreferences.getInt(KEY_ANOMALY_CONFIG_VERSION, DEFAULT_VERSION);
+ final int newVersion =
+ Settings.Global.getInt(
+ getContentResolver(),
+ Settings.Global.ANOMALY_CONFIG_VERSION,
+ DEFAULT_VERSION);
+ final String rawConfig =
+ Settings.Global.getString(getContentResolver(), Settings.Global.ANOMALY_CONFIG);
Log.i(TAG, "CurrentVersion: " + currentVersion + " new version: " + newVersion);
if (newVersion > currentVersion) {
try {
statsManager.removeConfig(StatsManagerConfig.ANOMALY_CONFIG_KEY);
} catch (StatsManager.StatsUnavailableException e) {
- Log.i(TAG, "When updating anomaly config, failed to first remove the old config "
- + StatsManagerConfig.ANOMALY_CONFIG_KEY, e);
+ Log.i(
+ TAG,
+ "When updating anomaly config, failed to first remove the old config "
+ + StatsManagerConfig.ANOMALY_CONFIG_KEY,
+ e);
}
if (!TextUtils.isEmpty(rawConfig)) {
try {
final byte[] config = Base64.decode(rawConfig, Base64.DEFAULT);
statsManager.addConfig(StatsManagerConfig.ANOMALY_CONFIG_KEY, config);
- Log.i(TAG, "Upload the anomaly config. configKey: "
- + StatsManagerConfig.ANOMALY_CONFIG_KEY);
+ Log.i(
+ TAG,
+ "Upload the anomaly config. configKey: "
+ + StatsManagerConfig.ANOMALY_CONFIG_KEY);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putInt(KEY_ANOMALY_CONFIG_VERSION, newVersion);
editor.commit();
} catch (IllegalArgumentException e) {
Log.e(TAG, "Anomaly raw config is in wrong format", e);
} catch (StatsManager.StatsUnavailableException e) {
- Log.i(TAG, "Upload of anomaly config failed for configKey "
- + StatsManagerConfig.ANOMALY_CONFIG_KEY, e);
+ Log.i(
+ TAG,
+ "Upload of anomaly config failed for configKey "
+ + StatsManagerConfig.ANOMALY_CONFIG_KEY,
+ e);
}
}
}
diff --git a/src/com/android/settings/fuelgauge/batterytip/AnomalyConfigReceiver.java b/src/com/android/settings/fuelgauge/batterytip/AnomalyConfigReceiver.java
index 369e613..538b047 100644
--- a/src/com/android/settings/fuelgauge/batterytip/AnomalyConfigReceiver.java
+++ b/src/com/android/settings/fuelgauge/batterytip/AnomalyConfigReceiver.java
@@ -23,8 +23,8 @@
import android.util.Log;
/**
- * Receive broadcast when {@link StatsManager} restart, then check the anomaly config and
- * prepare info for {@link StatsManager}
+ * Receive broadcast when {@link StatsManager} restart, then check the anomaly config and prepare
+ * info for {@link StatsManager}
*/
public class AnomalyConfigReceiver extends BroadcastReceiver {
private static final String TAG = "AnomalyConfigReceiver";
diff --git a/src/com/android/settings/fuelgauge/batterytip/AnomalyDatabaseHelper.java b/src/com/android/settings/fuelgauge/batterytip/AnomalyDatabaseHelper.java
index 349a419..6ec516e 100644
--- a/src/com/android/settings/fuelgauge/batterytip/AnomalyDatabaseHelper.java
+++ b/src/com/android/settings/fuelgauge/batterytip/AnomalyDatabaseHelper.java
@@ -26,9 +26,7 @@
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
-/**
- * Database controls the anomaly logging(e.g. packageName, anomalyType and time)
- */
+/** Database controls the anomaly logging(e.g. packageName, anomalyType and time) */
public class AnomalyDatabaseHelper extends SQLiteOpenHelper {
private static final String TAG = "BatteryDatabaseHelper";
@@ -36,9 +34,7 @@
private static final int DATABASE_VERSION = 5;
@Retention(RetentionPolicy.SOURCE)
- @IntDef({State.NEW,
- State.HANDLED,
- State.AUTO_HANDLED})
+ @IntDef({State.NEW, State.HANDLED, State.AUTO_HANDLED})
public @interface State {
int NEW = 0;
int HANDLED = 1;
@@ -57,81 +53,92 @@
}
public interface AnomalyColumns {
- /**
- * The package name of the anomaly app
- */
+ /** The package name of the anomaly app */
String PACKAGE_NAME = "package_name";
- /**
- * The uid of the anomaly app
- */
+
+ /** The uid of the anomaly app */
String UID = "uid";
+
/**
* The type of the anomaly app
+ *
* @see StatsManagerConfig.AnomalyType
*/
String ANOMALY_TYPE = "anomaly_type";
+
/**
* The state of the anomaly app
+ *
* @see State
*/
String ANOMALY_STATE = "anomaly_state";
- /**
- * The time when anomaly happens
- */
+
+ /** The time when anomaly happens */
String TIME_STAMP_MS = "time_stamp_ms";
}
private static final String CREATE_ANOMALY_TABLE =
- "CREATE TABLE " + Tables.TABLE_ANOMALY +
- "(" +
- AnomalyColumns.UID +
- " INTEGER NOT NULL, " +
- AnomalyColumns.PACKAGE_NAME +
- " TEXT, " +
- AnomalyColumns.ANOMALY_TYPE +
- " INTEGER NOT NULL, " +
- AnomalyColumns.ANOMALY_STATE +
- " INTEGER NOT NULL, " +
- AnomalyColumns.TIME_STAMP_MS +
- " INTEGER NOT NULL, " +
- " PRIMARY KEY (" + AnomalyColumns.UID + "," + AnomalyColumns.ANOMALY_TYPE + ","
- + AnomalyColumns.ANOMALY_STATE + "," + AnomalyColumns.TIME_STAMP_MS + ")"
+ "CREATE TABLE "
+ + Tables.TABLE_ANOMALY
+ + "("
+ + AnomalyColumns.UID
+ + " INTEGER NOT NULL, "
+ + AnomalyColumns.PACKAGE_NAME
+ + " TEXT, "
+ + AnomalyColumns.ANOMALY_TYPE
+ + " INTEGER NOT NULL, "
+ + AnomalyColumns.ANOMALY_STATE
+ + " INTEGER NOT NULL, "
+ + AnomalyColumns.TIME_STAMP_MS
+ + " INTEGER NOT NULL, "
+ + " PRIMARY KEY ("
+ + AnomalyColumns.UID
+ + ","
+ + AnomalyColumns.ANOMALY_TYPE
+ + ","
+ + AnomalyColumns.ANOMALY_STATE
+ + ","
+ + AnomalyColumns.TIME_STAMP_MS
+ + ")"
+ ")";
-
public interface ActionColumns {
- /**
- * The package name of an app been performed an action
- */
+ /** The package name of an app been performed an action */
String PACKAGE_NAME = "package_name";
- /**
- * The uid of an app been performed an action
- */
+
+ /** The uid of an app been performed an action */
String UID = "uid";
+
/**
* The type of user action
+ *
* @see ActionType
*/
String ACTION_TYPE = "action_type";
- /**
- * The time when action been performed
- */
+
+ /** The time when action been performed */
String TIME_STAMP_MS = "time_stamp_ms";
}
private static final String CREATE_ACTION_TABLE =
- "CREATE TABLE " + Tables.TABLE_ACTION +
- "(" +
- ActionColumns.UID +
- " INTEGER NOT NULL, " +
- ActionColumns.PACKAGE_NAME +
- " TEXT, " +
- ActionColumns.ACTION_TYPE +
- " INTEGER NOT NULL, " +
- ActionColumns.TIME_STAMP_MS +
- " INTEGER NOT NULL, " +
- " PRIMARY KEY (" + ActionColumns.ACTION_TYPE + "," + ActionColumns.UID + ","
- + ActionColumns.PACKAGE_NAME + ")"
+ "CREATE TABLE "
+ + Tables.TABLE_ACTION
+ + "("
+ + ActionColumns.UID
+ + " INTEGER NOT NULL, "
+ + ActionColumns.PACKAGE_NAME
+ + " TEXT, "
+ + ActionColumns.ACTION_TYPE
+ + " INTEGER NOT NULL, "
+ + ActionColumns.TIME_STAMP_MS
+ + " INTEGER NOT NULL, "
+ + " PRIMARY KEY ("
+ + ActionColumns.ACTION_TYPE
+ + ","
+ + ActionColumns.UID
+ + ","
+ + ActionColumns.PACKAGE_NAME
+ + ")"
+ ")";
private static AnomalyDatabaseHelper sSingleton;
@@ -155,8 +162,14 @@
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
if (oldVersion < DATABASE_VERSION) {
- Log.w(TAG, "Detected schema version '" + oldVersion + "'. " +
- "Index needs to be rebuilt for schema version '" + newVersion + "'.");
+ Log.w(
+ TAG,
+ "Detected schema version '"
+ + oldVersion
+ + "'. "
+ + "Index needs to be rebuilt for schema version '"
+ + newVersion
+ + "'.");
// We need to drop the tables and recreate them
reconstruct(db);
}
@@ -164,8 +177,14 @@
@Override
public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) {
- Log.w(TAG, "Detected schema version '" + oldVersion + "'. " +
- "Index needs to be rebuilt for schema version '" + newVersion + "'.");
+ Log.w(
+ TAG,
+ "Detected schema version '"
+ + oldVersion
+ + "'. "
+ + "Index needs to be rebuilt for schema version '"
+ + newVersion
+ + "'.");
// We need to drop the tables and recreate them
reconstruct(db);
}
diff --git a/src/com/android/settings/fuelgauge/batterytip/AnomalyDetectionJobService.java b/src/com/android/settings/fuelgauge/batterytip/AnomalyDetectionJobService.java
index 34fd72d..b1018ba 100644
--- a/src/com/android/settings/fuelgauge/batterytip/AnomalyDetectionJobService.java
+++ b/src/com/android/settings/fuelgauge/batterytip/AnomalyDetectionJobService.java
@@ -57,22 +57,20 @@
public class AnomalyDetectionJobService extends JobService {
private static final String TAG = "AnomalyDetectionService";
private static final int ON = 1;
- @VisibleForTesting
- static final int UID_NULL = -1;
- @VisibleForTesting
- static final int STATSD_UID_FILED = 1;
- @VisibleForTesting
- static final long MAX_DELAY_MS = TimeUnit.MINUTES.toMillis(30);
+ @VisibleForTesting static final int UID_NULL = -1;
+ @VisibleForTesting static final int STATSD_UID_FILED = 1;
+ @VisibleForTesting static final long MAX_DELAY_MS = TimeUnit.MINUTES.toMillis(30);
private final Object mLock = new Object();
+
@GuardedBy("mLock")
@VisibleForTesting
boolean mIsJobCanceled = false;
public static void scheduleAnomalyDetection(Context context, Intent intent) {
final JobScheduler jobScheduler = context.getSystemService(JobScheduler.class);
- final ComponentName component = new ComponentName(context,
- AnomalyDetectionJobService.class);
+ final ComponentName component =
+ new ComponentName(context, AnomalyDetectionJobService.class);
final JobInfo.Builder jobBuilder =
new JobInfo.Builder(R.integer.job_anomaly_detection, component)
.setOverrideDeadline(MAX_DELAY_MS);
@@ -88,30 +86,40 @@
synchronized (mLock) {
mIsJobCanceled = false;
}
- ThreadUtils.postOnBackgroundThread(() -> {
- final Context context = AnomalyDetectionJobService.this;
- final BatteryDatabaseManager batteryDatabaseManager =
- BatteryDatabaseManager.getInstance(this);
- final BatteryTipPolicy policy = new BatteryTipPolicy(this);
- final BatteryUtils batteryUtils = BatteryUtils.getInstance(this);
- final ContentResolver contentResolver = getContentResolver();
- final UserManager userManager = getSystemService(UserManager.class);
- final PowerAllowlistBackend powerAllowlistBackend =
- PowerAllowlistBackend.getInstance(context);
- final PowerUsageFeatureProvider powerUsageFeatureProvider =
- FeatureFactory.getFeatureFactory().getPowerUsageFeatureProvider();
- final MetricsFeatureProvider metricsFeatureProvider =
- FeatureFactory.getFeatureFactory().getMetricsFeatureProvider();
+ ThreadUtils.postOnBackgroundThread(
+ () -> {
+ final Context context = AnomalyDetectionJobService.this;
+ final BatteryDatabaseManager batteryDatabaseManager =
+ BatteryDatabaseManager.getInstance(this);
+ final BatteryTipPolicy policy = new BatteryTipPolicy(this);
+ final BatteryUtils batteryUtils = BatteryUtils.getInstance(this);
+ final ContentResolver contentResolver = getContentResolver();
+ final UserManager userManager = getSystemService(UserManager.class);
+ final PowerAllowlistBackend powerAllowlistBackend =
+ PowerAllowlistBackend.getInstance(context);
+ final PowerUsageFeatureProvider powerUsageFeatureProvider =
+ FeatureFactory.getFeatureFactory().getPowerUsageFeatureProvider();
+ final MetricsFeatureProvider metricsFeatureProvider =
+ FeatureFactory.getFeatureFactory().getMetricsFeatureProvider();
- for (JobWorkItem item = dequeueWork(params); item != null; item = dequeueWork(params)) {
- saveAnomalyToDatabase(context, userManager,
- batteryDatabaseManager, batteryUtils, policy, powerAllowlistBackend,
- contentResolver, powerUsageFeatureProvider, metricsFeatureProvider,
- item.getIntent().getExtras());
+ for (JobWorkItem item = dequeueWork(params);
+ item != null;
+ item = dequeueWork(params)) {
+ saveAnomalyToDatabase(
+ context,
+ userManager,
+ batteryDatabaseManager,
+ batteryUtils,
+ policy,
+ powerAllowlistBackend,
+ contentResolver,
+ powerUsageFeatureProvider,
+ metricsFeatureProvider,
+ item.getIntent().getExtras());
- completeWork(params, item);
- }
- });
+ completeWork(params, item);
+ }
+ });
return true;
}
@@ -125,34 +133,49 @@
}
@VisibleForTesting
- void saveAnomalyToDatabase(Context context, UserManager userManager,
- BatteryDatabaseManager databaseManager, BatteryUtils batteryUtils,
- BatteryTipPolicy policy, PowerAllowlistBackend powerAllowlistBackend,
- ContentResolver contentResolver, PowerUsageFeatureProvider powerUsageFeatureProvider,
- MetricsFeatureProvider metricsFeatureProvider, Bundle bundle) {
+ void saveAnomalyToDatabase(
+ Context context,
+ UserManager userManager,
+ BatteryDatabaseManager databaseManager,
+ BatteryUtils batteryUtils,
+ BatteryTipPolicy policy,
+ PowerAllowlistBackend powerAllowlistBackend,
+ ContentResolver contentResolver,
+ PowerUsageFeatureProvider powerUsageFeatureProvider,
+ MetricsFeatureProvider metricsFeatureProvider,
+ Bundle bundle) {
// The Example of intentDimsValue is: 35:{1:{1:{1:10013|}|}|}
final StatsDimensionsValue intentDimsValue =
bundle.getParcelable(StatsManager.EXTRA_STATS_DIMENSIONS_VALUE);
- final long timeMs = bundle.getLong(AnomalyDetectionReceiver.KEY_ANOMALY_TIMESTAMP,
- System.currentTimeMillis());
- final ArrayList<String> cookies = bundle.getStringArrayList(
- StatsManager.EXTRA_STATS_BROADCAST_SUBSCRIBER_COOKIES);
- final AnomalyInfo anomalyInfo = new AnomalyInfo(
- !ArrayUtils.isEmpty(cookies) ? cookies.get(0) : "");
+ final long timeMs =
+ bundle.getLong(
+ AnomalyDetectionReceiver.KEY_ANOMALY_TIMESTAMP, System.currentTimeMillis());
+ final ArrayList<String> cookies =
+ bundle.getStringArrayList(StatsManager.EXTRA_STATS_BROADCAST_SUBSCRIBER_COOKIES);
+ final AnomalyInfo anomalyInfo =
+ new AnomalyInfo(!ArrayUtils.isEmpty(cookies) ? cookies.get(0) : "");
Log.i(TAG, "Extra stats value: " + intentDimsValue.toString());
try {
final int uid = extractUidFromStatsDimensionsValue(intentDimsValue);
- final boolean autoFeatureOn = powerUsageFeatureProvider.isSmartBatterySupported()
- ? Settings.Global.getInt(contentResolver,
- Settings.Global.ADAPTIVE_BATTERY_MANAGEMENT_ENABLED, ON) == ON
- : Settings.Global.getInt(contentResolver,
- Settings.Global.APP_AUTO_RESTRICTION_ENABLED, ON) == ON;
+ final boolean autoFeatureOn =
+ powerUsageFeatureProvider.isSmartBatterySupported()
+ ? Settings.Global.getInt(
+ contentResolver,
+ Settings.Global.ADAPTIVE_BATTERY_MANAGEMENT_ENABLED,
+ ON)
+ == ON
+ : Settings.Global.getInt(
+ contentResolver,
+ Settings.Global.APP_AUTO_RESTRICTION_ENABLED,
+ ON)
+ == ON;
final String packageName = batteryUtils.getPackageName(uid);
final long versionCode = batteryUtils.getAppLongVersionCode(packageName);
final String versionedPackage = packageName + "/" + versionCode;
if (batteryUtils.shouldHideAnomaly(powerAllowlistBackend, uid, anomalyInfo)) {
- metricsFeatureProvider.action(SettingsEnums.PAGE_UNKNOWN,
+ metricsFeatureProvider.action(
+ SettingsEnums.PAGE_UNKNOWN,
SettingsEnums.ACTION_ANOMALY_IGNORED,
SettingsEnums.PAGE_UNKNOWN,
versionedPackage,
@@ -160,17 +183,23 @@
} else {
if (autoFeatureOn && anomalyInfo.autoRestriction) {
// Auto restrict this app
- batteryUtils.setForceAppStandby(uid, packageName,
- AppOpsManager.MODE_IGNORED);
- databaseManager.insertAnomaly(uid, packageName, anomalyInfo.anomalyType,
+ batteryUtils.setForceAppStandby(uid, packageName, AppOpsManager.MODE_IGNORED);
+ databaseManager.insertAnomaly(
+ uid,
+ packageName,
+ anomalyInfo.anomalyType,
AnomalyDatabaseHelper.State.AUTO_HANDLED,
timeMs);
} else {
- databaseManager.insertAnomaly(uid, packageName, anomalyInfo.anomalyType,
+ databaseManager.insertAnomaly(
+ uid,
+ packageName,
+ anomalyInfo.anomalyType,
AnomalyDatabaseHelper.State.NEW,
timeMs);
}
- metricsFeatureProvider.action(SettingsEnums.PAGE_UNKNOWN,
+ metricsFeatureProvider.action(
+ SettingsEnums.PAGE_UNKNOWN,
SettingsEnums.ACTION_ANOMALY_TRIGGERED,
SettingsEnums.PAGE_UNKNOWN,
versionedPackage,
@@ -183,12 +212,12 @@
}
/**
- * Extract the uid from {@link StatsDimensionsValue}
- *
- * The uid dimension has the format: 1:<int> inside the tuple list. Here are some examples:
- * 1. Excessive bg anomaly: 27:{1:10089|}
- * 2. Wakeup alarm anomaly: 35:{1:{1:{1:10013|}|}|}
- * 3. Bluetooth anomaly: 3:{1:{1:{1:10140|}|}|}
+ * Extract the uid from {@link StatsDimensionsValue} <br>
+ * <br>
+ * The uid dimension has the format: {1:int} inside the tuple list. Here are some examples: <br>
+ * 1.Excessive bg anomaly: 27:{1:10089|} <br>
+ * 2.Wakeup alarm anomaly: 35:{1:{1:{1:10013|}|}|} <br>
+ * 3.Bluetooth anomaly: 3:{1:{1:{1:10140|}|}|}
*/
@VisibleForTesting
int extractUidFromStatsDimensionsValue(StatsDimensionsValue statsDimensionsValue) {
diff --git a/src/com/android/settings/fuelgauge/batterytip/AnomalyDetectionReceiver.java b/src/com/android/settings/fuelgauge/batterytip/AnomalyDetectionReceiver.java
index b1bb73a..0d43add 100644
--- a/src/com/android/settings/fuelgauge/batterytip/AnomalyDetectionReceiver.java
+++ b/src/com/android/settings/fuelgauge/batterytip/AnomalyDetectionReceiver.java
@@ -23,9 +23,7 @@
import android.os.Bundle;
import android.util.Log;
-/**
- * Receive the anomaly info from {@link StatsManager}
- */
+/** Receive the anomaly info from {@link StatsManager} */
public class AnomalyDetectionReceiver extends BroadcastReceiver {
private static final String TAG = "SettingsAnomalyReceiver";
@@ -35,10 +33,16 @@
public void onReceive(Context context, Intent intent) {
final long configUid = intent.getLongExtra(StatsManager.EXTRA_STATS_CONFIG_UID, -1);
final long configKey = intent.getLongExtra(StatsManager.EXTRA_STATS_CONFIG_KEY, -1);
- final long subscriptionId = intent.getLongExtra(StatsManager.EXTRA_STATS_SUBSCRIPTION_ID,
- -1);
- Log.i(TAG, "Anomaly intent received. configUid = " + configUid + " configKey = "
- + configKey + " subscriptionId = " + subscriptionId);
+ final long subscriptionId =
+ intent.getLongExtra(StatsManager.EXTRA_STATS_SUBSCRIPTION_ID, -1);
+ Log.i(
+ TAG,
+ "Anomaly intent received. configUid = "
+ + configUid
+ + " configKey = "
+ + configKey
+ + " subscriptionId = "
+ + subscriptionId);
final Bundle bundle = intent.getExtras();
if (bundle == null) {
diff --git a/src/com/android/settings/fuelgauge/batterytip/AnomalyInfo.java b/src/com/android/settings/fuelgauge/batterytip/AnomalyInfo.java
index fc15706..da277c6 100644
--- a/src/com/android/settings/fuelgauge/batterytip/AnomalyInfo.java
+++ b/src/com/android/settings/fuelgauge/batterytip/AnomalyInfo.java
@@ -19,9 +19,7 @@
import android.util.KeyValueListParser;
import android.util.Log;
-/**
- * Model class to parse and store anomaly info from statsd.
- */
+/** Model class to parse and store anomaly info from statsd. */
public class AnomalyInfo {
private static final String TAG = "AnomalyInfo";
@@ -37,5 +35,4 @@
anomalyType = parser.getInt(KEY_ANOMALY_TYPE, -1);
autoRestriction = parser.getBoolean(KEY_AUTO_RESTRICTION, false);
}
-
}
diff --git a/src/com/android/settings/fuelgauge/batterytip/AppInfo.java b/src/com/android/settings/fuelgauge/batterytip/AppInfo.java
index e79b874..8166a3d 100644
--- a/src/com/android/settings/fuelgauge/batterytip/AppInfo.java
+++ b/src/com/android/settings/fuelgauge/batterytip/AppInfo.java
@@ -25,16 +25,17 @@
import java.util.Objects;
-/**
- * Model class stores app info(e.g. package name, type..) that used in battery tip
- */
+/** Model class stores app info(e.g. package name, type..) that used in battery tip */
public class AppInfo implements Comparable<AppInfo>, Parcelable {
public final String packageName;
+
/**
* Anomaly type of the app
+ *
* @see StatsManagerConfig.AnomalyType
*/
public final ArraySet<Integer> anomalyTypes;
+
public final long screenOnTimeMs;
public final int uid;
@@ -73,7 +74,11 @@
@Override
public String toString() {
- return "packageName=" + packageName + ",anomalyTypes=" + anomalyTypes + ",screenTime="
+ return "packageName="
+ + packageName
+ + ",anomalyTypes="
+ + anomalyTypes
+ + ",screenTime="
+ screenOnTimeMs;
}
@@ -93,15 +98,16 @@
&& TextUtils.equals(packageName, other.packageName);
}
- public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {
- public AppInfo createFromParcel(Parcel in) {
- return new AppInfo(in);
- }
+ public static final Parcelable.Creator CREATOR =
+ new Parcelable.Creator() {
+ public AppInfo createFromParcel(Parcel in) {
+ return new AppInfo(in);
+ }
- public AppInfo[] newArray(int size) {
- return new AppInfo[size];
- }
- };
+ public AppInfo[] newArray(int size) {
+ return new AppInfo[size];
+ }
+ };
public static final class Builder {
private ArraySet<Integer> mAnomalyTypes = new ArraySet<>();
@@ -133,4 +139,4 @@
return new AppInfo(this);
}
}
-}
\ No newline at end of file
+}
diff --git a/src/com/android/settings/fuelgauge/batterytip/BatteryDatabaseManager.java b/src/com/android/settings/fuelgauge/batterytip/BatteryDatabaseManager.java
index bb69999..2b0ba45 100644
--- a/src/com/android/settings/fuelgauge/batterytip/BatteryDatabaseManager.java
+++ b/src/com/android/settings/fuelgauge/batterytip/BatteryDatabaseManager.java
@@ -47,8 +47,8 @@
/**
* Database manager for battery data. Now it only contains anomaly data stored in {@link AppInfo}.
*
- * This manager may be accessed by multi-threads. All the database related methods are synchronized
- * so each operation won't be interfered by other threads.
+ * <p>This manager may be accessed by multi-threads. All the database related methods are
+ * synchronized so each operation won't be interfered by other threads.
*/
public class BatteryDatabaseManager {
private static BatteryDatabaseManager sSingleton;
@@ -74,16 +74,15 @@
/**
* Insert an anomaly log to database.
*
- * @param uid the uid of the app
- * @param packageName the package name of the app
- * @param type the type of the anomaly
+ * @param uid the uid of the app
+ * @param packageName the package name of the app
+ * @param type the type of the anomaly
* @param anomalyState the state of the anomaly
- * @param timestampMs the time when it is happened
+ * @param timestampMs the time when it is happened
* @return {@code true} if insert operation succeed
*/
- public synchronized boolean insertAnomaly(int uid, String packageName, int type,
- int anomalyState,
- long timestampMs) {
+ public synchronized boolean insertAnomaly(
+ int uid, String packageName, int type, int anomalyState, long timestampMs) {
final SQLiteDatabase db = mDatabaseHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(UID, uid);
@@ -105,22 +104,31 @@
final String orderBy = AnomalyDatabaseHelper.AnomalyColumns.TIME_STAMP_MS + " DESC";
final Map<Integer, AppInfo.Builder> mAppInfoBuilders = new ArrayMap<>();
final String selection = TIME_STAMP_MS + " > ? AND " + ANOMALY_STATE + " = ? ";
- final String[] selectionArgs = new String[]{String.valueOf(timestampMsAfter),
- String.valueOf(state)};
+ final String[] selectionArgs =
+ new String[] {String.valueOf(timestampMsAfter), String.valueOf(state)};
- try (Cursor cursor = db.query(TABLE_ANOMALY, projection, selection, selectionArgs,
- null /* groupBy */, null /* having */, orderBy)) {
+ try (Cursor cursor =
+ db.query(
+ TABLE_ANOMALY,
+ projection,
+ selection,
+ selectionArgs,
+ null /* groupBy */,
+ null /* having */,
+ orderBy)) {
while (cursor.moveToNext()) {
final int uid = cursor.getInt(cursor.getColumnIndex(UID));
if (!mAppInfoBuilders.containsKey(uid)) {
- final AppInfo.Builder builder = new AppInfo.Builder()
- .setUid(uid)
- .setPackageName(
- cursor.getString(cursor.getColumnIndex(PACKAGE_NAME)));
+ final AppInfo.Builder builder =
+ new AppInfo.Builder()
+ .setUid(uid)
+ .setPackageName(
+ cursor.getString(cursor.getColumnIndex(PACKAGE_NAME)));
mAppInfoBuilders.put(uid, builder);
}
- mAppInfoBuilders.get(uid).addAnomalyType(
- cursor.getInt(cursor.getColumnIndex(ANOMALY_TYPE)));
+ mAppInfoBuilders
+ .get(uid)
+ .addAnomalyType(cursor.getInt(cursor.getColumnIndex(ANOMALY_TYPE)));
}
}
@@ -133,15 +141,15 @@
public synchronized void deleteAllAnomaliesBeforeTimeStamp(long timestampMs) {
final SQLiteDatabase db = mDatabaseHelper.getWritableDatabase();
- db.delete(TABLE_ANOMALY, TIME_STAMP_MS + " < ?",
- new String[]{String.valueOf(timestampMs)});
+ db.delete(
+ TABLE_ANOMALY, TIME_STAMP_MS + " < ?", new String[] {String.valueOf(timestampMs)});
}
/**
* Update the type of anomalies to {@code state}
*
* @param appInfos represents the anomalies
- * @param state which state to update to
+ * @param state which state to update to
*/
public synchronized void updateAnomalies(List<AppInfo> appInfos, int state) {
if (!appInfos.isEmpty()) {
@@ -154,8 +162,14 @@
final SQLiteDatabase db = mDatabaseHelper.getWritableDatabase();
final ContentValues values = new ContentValues();
values.put(ANOMALY_STATE, state);
- db.update(TABLE_ANOMALY, values, PACKAGE_NAME + " IN (" + TextUtils.join(",",
- Collections.nCopies(appInfos.size(), "?")) + ")", whereArgs);
+ db.update(
+ TABLE_ANOMALY,
+ values,
+ PACKAGE_NAME
+ + " IN ("
+ + TextUtils.join(",", Collections.nCopies(appInfos.size(), "?"))
+ + ")",
+ whereArgs);
}
}
@@ -171,10 +185,17 @@
final SQLiteDatabase db = mDatabaseHelper.getReadableDatabase();
final String[] projection = {ActionColumns.UID, ActionColumns.TIME_STAMP_MS};
final String selection = ActionColumns.ACTION_TYPE + " = ? ";
- final String[] selectionArgs = new String[]{String.valueOf(type)};
+ final String[] selectionArgs = new String[] {String.valueOf(type)};
- try (Cursor cursor = db.query(TABLE_ACTION, projection, selection, selectionArgs,
- null /* groupBy */, null /* having */, null /* orderBy */)) {
+ try (Cursor cursor =
+ db.query(
+ TABLE_ACTION,
+ projection,
+ selection,
+ selectionArgs,
+ null /* groupBy */,
+ null /* having */,
+ null /* orderBy */)) {
final int uidIndex = cursor.getColumnIndex(ActionColumns.UID);
final int timestampIndex = cursor.getColumnIndex(ActionColumns.TIME_STAMP_MS);
@@ -188,11 +209,12 @@
return timeStamps;
}
- /**
- * Insert an action, or update it if already existed
- */
- public synchronized boolean insertAction(@AnomalyDatabaseHelper.ActionType int type,
- int uid, String packageName, long timestampMs) {
+ /** Insert an action, or update it if already existed */
+ public synchronized boolean insertAction(
+ @AnomalyDatabaseHelper.ActionType int type,
+ int uid,
+ String packageName,
+ long timestampMs) {
final SQLiteDatabase db = mDatabaseHelper.getWritableDatabase();
final ContentValues values = new ContentValues();
values.put(ActionColumns.UID, uid);
@@ -203,17 +225,21 @@
return db.insertWithOnConflict(TABLE_ACTION, null, values, CONFLICT_REPLACE) != -1;
}
- /**
- * Remove an action
- */
- public synchronized boolean deleteAction(@AnomalyDatabaseHelper.ActionType int type,
- int uid, String packageName) {
+ /** Remove an action */
+ public synchronized boolean deleteAction(
+ @AnomalyDatabaseHelper.ActionType int type, int uid, String packageName) {
SQLiteDatabase db = mDatabaseHelper.getWritableDatabase();
final String where =
- ActionColumns.ACTION_TYPE + " = ? AND " + ActionColumns.UID + " = ? AND "
- + ActionColumns.PACKAGE_NAME + " = ? ";
- final String[] whereArgs = new String[]{String.valueOf(type), String.valueOf(uid),
- String.valueOf(packageName)};
+ ActionColumns.ACTION_TYPE
+ + " = ? AND "
+ + ActionColumns.UID
+ + " = ? AND "
+ + ActionColumns.PACKAGE_NAME
+ + " = ? ";
+ final String[] whereArgs =
+ new String[] {
+ String.valueOf(type), String.valueOf(uid), String.valueOf(packageName)
+ };
return db.delete(TABLE_ACTION, where, whereArgs) != 0;
}
diff --git a/src/com/android/settings/fuelgauge/batterytip/BatteryTipDialogFragment.java b/src/com/android/settings/fuelgauge/batterytip/BatteryTipDialogFragment.java
index 3989e89..73b7523 100644
--- a/src/com/android/settings/fuelgauge/batterytip/BatteryTipDialogFragment.java
+++ b/src/com/android/settings/fuelgauge/batterytip/BatteryTipDialogFragment.java
@@ -46,19 +46,15 @@
import java.util.List;
-/**
- * Dialog Fragment to show action dialog for each anomaly
- */
-public class BatteryTipDialogFragment extends InstrumentedDialogFragment implements
- DialogInterface.OnClickListener {
+/** Dialog Fragment to show action dialog for each anomaly */
+public class BatteryTipDialogFragment extends InstrumentedDialogFragment
+ implements DialogInterface.OnClickListener {
private static final String ARG_BATTERY_TIP = "battery_tip";
private static final String ARG_METRICS_KEY = "metrics_key";
- @VisibleForTesting
- BatteryTip mBatteryTip;
- @VisibleForTesting
- int mMetricsKey;
+ @VisibleForTesting BatteryTip mBatteryTip;
+ @VisibleForTesting int mMetricsKey;
public static BatteryTipDialogFragment newInstance(BatteryTip batteryTip, int metricsKey) {
BatteryTipDialogFragment dialogFragment = new BatteryTipDialogFragment();
@@ -87,16 +83,17 @@
.create();
case BatteryTip.TipType.HIGH_DEVICE_USAGE:
final HighUsageTip highUsageTip = (HighUsageTip) mBatteryTip;
- final RecyclerView view = (RecyclerView) LayoutInflater.from(context).inflate(
- R.layout.recycler_view,
- null);
+ final RecyclerView view =
+ (RecyclerView)
+ LayoutInflater.from(context).inflate(R.layout.recycler_view, null);
view.setLayoutManager(new LinearLayoutManager(context));
- view.setAdapter(new HighUsageAdapter(context,
- highUsageTip.getHighUsageAppList()));
+ view.setAdapter(new HighUsageAdapter(context, highUsageTip.getHighUsageAppList()));
return new AlertDialog.Builder(context)
- .setMessage(getString(R.string.battery_tip_dialog_message,
- highUsageTip.getHighUsageAppList().size()))
+ .setMessage(
+ getString(
+ R.string.battery_tip_dialog_message,
+ highUsageTip.getHighUsageAppList().size()))
.setView(view)
.setPositiveButton(android.R.string.ok, null)
.create();
@@ -104,14 +101,19 @@
final RestrictAppTip restrictAppTip = (RestrictAppTip) mBatteryTip;
final List<AppInfo> restrictedAppList = restrictAppTip.getRestrictAppList();
final int num = restrictedAppList.size();
- final CharSequence appLabel = Utils.getApplicationLabel(context,
- restrictedAppList.get(0).packageName);
+ final CharSequence appLabel =
+ Utils.getApplicationLabel(context, restrictedAppList.get(0).packageName);
- final AlertDialog.Builder builder = new AlertDialog.Builder(context)
- .setTitle(StringUtil.getIcuPluralsString(context, num,
- R.string.battery_tip_restrict_app_dialog_title))
- .setPositiveButton(R.string.battery_tip_restrict_app_dialog_ok, this)
- .setNegativeButton(android.R.string.cancel, null);
+ final AlertDialog.Builder builder =
+ new AlertDialog.Builder(context)
+ .setTitle(
+ StringUtil.getIcuPluralsString(
+ context,
+ num,
+ R.string.battery_tip_restrict_app_dialog_title))
+ .setPositiveButton(
+ R.string.battery_tip_restrict_app_dialog_ok, this)
+ .setNegativeButton(android.R.string.cancel, null);
if (num == 1) {
builder.setMessage(
getString(R.string.battery_tip_restrict_app_dialog_message, appLabel));
@@ -119,22 +121,25 @@
builder.setMessage(
getString(
R.string.battery_tip_restrict_apps_less_than_5_dialog_message));
- final RecyclerView restrictionView = (RecyclerView) LayoutInflater.from(
- context).inflate(R.layout.recycler_view, null);
+ final RecyclerView restrictionView =
+ (RecyclerView)
+ LayoutInflater.from(context)
+ .inflate(R.layout.recycler_view, null);
restrictionView.setLayoutManager(new LinearLayoutManager(context));
restrictionView.setAdapter(new HighUsageAdapter(context, restrictedAppList));
builder.setView(restrictionView);
} else {
- builder.setMessage(context.getString(
- R.string.battery_tip_restrict_apps_more_than_5_dialog_message,
- restrictAppTip.getRestrictAppsString(context)));
+ builder.setMessage(
+ context.getString(
+ R.string.battery_tip_restrict_apps_more_than_5_dialog_message,
+ restrictAppTip.getRestrictAppsString(context)));
}
return builder.create();
case BatteryTip.TipType.REMOVE_APP_RESTRICTION:
final UnrestrictAppTip unrestrictAppTip = (UnrestrictAppTip) mBatteryTip;
- final CharSequence name = Utils.getApplicationLabel(context,
- unrestrictAppTip.getPackageName());
+ final CharSequence name =
+ Utils.getApplicationLabel(context, unrestrictAppTip.getPackageName());
return new AlertDialog.Builder(context)
.setTitle(getString(R.string.battery_tip_unrestrict_app_dialog_title))
@@ -158,9 +163,11 @@
if (lsn == null) {
return;
}
- final BatteryTipAction action = BatteryTipUtils.getActionForBatteryTip(mBatteryTip,
- (SettingsActivity) getActivity(),
- (InstrumentedPreferenceFragment) getTargetFragment());
+ final BatteryTipAction action =
+ BatteryTipUtils.getActionForBatteryTip(
+ mBatteryTip,
+ (SettingsActivity) getActivity(),
+ (InstrumentedPreferenceFragment) getTargetFragment());
if (action != null) {
action.handlePositiveAction(mMetricsKey);
}
@@ -168,10 +175,12 @@
}
private boolean isPluggedIn() {
- final Intent batteryIntent = getContext().registerReceiver(null /* receiver */,
- new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
- return batteryIntent != null && batteryIntent.getIntExtra(
- BatteryManager.EXTRA_PLUGGED, 0) != 0;
+ final Intent batteryIntent =
+ getContext()
+ .registerReceiver(
+ null /* receiver */,
+ new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
+ return batteryIntent != null
+ && batteryIntent.getIntExtra(BatteryManager.EXTRA_PLUGGED, 0) != 0;
}
-
}
diff --git a/src/com/android/settings/fuelgauge/batterytip/BatteryTipLoader.java b/src/com/android/settings/fuelgauge/batterytip/BatteryTipLoader.java
index 34c431a..9fc0ce1 100644
--- a/src/com/android/settings/fuelgauge/batterytip/BatteryTipLoader.java
+++ b/src/com/android/settings/fuelgauge/batterytip/BatteryTipLoader.java
@@ -29,10 +29,7 @@
import com.android.settings.fuelgauge.batterytip.detectors.HighUsageDetector;
import com.android.settings.fuelgauge.batterytip.detectors.IncompatibleChargerDetector;
import com.android.settings.fuelgauge.batterytip.detectors.LowBatteryDetector;
-import com.android.settings.fuelgauge.batterytip.detectors.SmartBatteryDetector;
import com.android.settings.fuelgauge.batterytip.tips.BatteryTip;
-import com.android.settings.fuelgauge.batterytip.tips.LowBatteryTip;
-import com.android.settingslib.fuelgauge.EstimateKt;
import com.android.settingslib.utils.AsyncLoaderCompat;
import java.util.ArrayList;
@@ -47,8 +44,7 @@
private static final String TAG = "BatteryTipLoader";
private BatteryUsageStats mBatteryUsageStats;
- @VisibleForTesting
- BatteryUtils mBatteryUtils;
+ @VisibleForTesting BatteryUtils mBatteryUtils;
public BatteryTipLoader(Context context, BatteryUsageStats batteryUsageStats) {
super(context);
@@ -75,6 +71,5 @@
}
@Override
- protected void onDiscardResult(List<BatteryTip> result) {
- }
+ protected void onDiscardResult(List<BatteryTip> result) {}
}
diff --git a/src/com/android/settings/fuelgauge/batterytip/BatteryTipPolicy.java b/src/com/android/settings/fuelgauge/batterytip/BatteryTipPolicy.java
index 3fbbf5b..2feaad5 100644
--- a/src/com/android/settings/fuelgauge/batterytip/BatteryTipPolicy.java
+++ b/src/com/android/settings/fuelgauge/batterytip/BatteryTipPolicy.java
@@ -25,10 +25,7 @@
import java.time.Duration;
-/**
- * Class to store the policy for battery tips, which comes from
- * {@link Settings.Global}
- */
+/** Class to store the policy for battery tips, which comes from {@link Settings.Global} */
public class BatteryTipPolicy {
public static final String TAG = "BatteryTipPolicy";
@@ -102,9 +99,9 @@
public final long highUsagePeriodMs;
/**
- * The battery draining threshold to detect whether device is heavily used.
- * If battery drains more than {@link #highUsageBatteryDraining} in last {@link
- * #highUsagePeriodMs}, treat device as heavily used.
+ * The battery draining threshold to detect whether device is heavily used. If battery drains
+ * more than {@link #highUsageBatteryDraining} in last {@link #highUsagePeriodMs}, treat device
+ * as heavily used.
*
* @see Settings.Global#BATTERY_TIP_CONSTANTS
* @see #KEY_HIGH_USAGE_BATTERY_DRAINING
@@ -171,8 +168,8 @@
/**
* Battery drain percentage threshold for excessive background anomaly(i.e. 10%)
*
- * This is an additional check for excessive background, to check whether battery drain
- * for an app is larger than x%
+ * <p>This is an additional check for excessive background, to check whether battery drain for
+ * an app is larger than x%
*
* @see Settings.Global#BATTERY_TIP_CONSTANTS
* @see #KEY_EXCESSIVE_BG_DRAIN_PERCENTAGE
@@ -220,8 +217,9 @@
@VisibleForTesting
BatteryTipPolicy(Context context, KeyValueListParser parser) {
mParser = parser;
- final String value = Settings.Global.getString(context.getContentResolver(),
- Settings.Global.BATTERY_TIP_CONSTANTS);
+ final String value =
+ Settings.Global.getString(
+ context.getContentResolver(), Settings.Global.BATTERY_TIP_CONSTANTS);
try {
mParser.setString(value);
@@ -234,8 +232,8 @@
batterySaverTipEnabled = mParser.getBoolean(KEY_BATTERY_SAVER_TIP_ENABLED, true);
highUsageEnabled = mParser.getBoolean(KEY_HIGH_USAGE_ENABLED, true);
highUsageAppCount = mParser.getInt(KEY_HIGH_USAGE_APP_COUNT, 3);
- highUsagePeriodMs = mParser.getLong(KEY_HIGH_USAGE_PERIOD_MS,
- Duration.ofHours(2).toMillis());
+ highUsagePeriodMs =
+ mParser.getLong(KEY_HIGH_USAGE_PERIOD_MS, Duration.ofHours(2).toMillis());
highUsageBatteryDraining = mParser.getInt(KEY_HIGH_USAGE_BATTERY_DRAINING, 25);
appRestrictionEnabled = mParser.getBoolean(KEY_APP_RESTRICTION_ENABLED, true);
appRestrictionActiveHour = mParser.getInt(KEY_APP_RESTRICTION_ACTIVE_HOUR, 24);
@@ -251,5 +249,4 @@
testSmartBatteryTip = mParser.getBoolean(KEY_TEST_SMART_BATTERY_TIP, false);
testLowBatteryTip = mParser.getBoolean(KEY_TEST_LOW_BATTERY_TIP, false);
}
-
}
diff --git a/src/com/android/settings/fuelgauge/batterytip/BatteryTipPreferenceController.java b/src/com/android/settings/fuelgauge/batterytip/BatteryTipPreferenceController.java
index 4b1f645..57dd578 100644
--- a/src/com/android/settings/fuelgauge/batterytip/BatteryTipPreferenceController.java
+++ b/src/com/android/settings/fuelgauge/batterytip/BatteryTipPreferenceController.java
@@ -40,9 +40,7 @@
import java.util.Map;
import java.util.Optional;
-/**
- * Controller in charge of the battery tip group
- */
+/** Controller in charge of the battery tip group */
public class BatteryTipPreferenceController extends BasePreferenceController {
public static final String PREF_NAME = "battery_tip";
@@ -57,10 +55,8 @@
private SettingsActivity mSettingsActivity;
private MetricsFeatureProvider mMetricsFeatureProvider;
private boolean mNeedUpdate;
- @VisibleForTesting
- CardPreference mCardPreference;
- @VisibleForTesting
- Context mPrefContext;
+ @VisibleForTesting CardPreference mCardPreference;
+ @VisibleForTesting Context mPrefContext;
InstrumentedPreferenceFragment mFragment;
public BatteryTipPreferenceController(Context context, String preferenceKey) {
@@ -122,13 +118,15 @@
final BatteryTip batteryTip = mBatteryTipMap.get(preference.getKey());
if (batteryTip != null) {
if (batteryTip.shouldShowDialog()) {
- BatteryTipDialogFragment dialogFragment = BatteryTipDialogFragment.newInstance(
- batteryTip, mFragment.getMetricsCategory());
+ BatteryTipDialogFragment dialogFragment =
+ BatteryTipDialogFragment.newInstance(
+ batteryTip, mFragment.getMetricsCategory());
dialogFragment.setTargetFragment(mFragment, REQUEST_ANOMALY_ACTION);
dialogFragment.show(mFragment.getFragmentManager(), TAG);
} else {
- final BatteryTipAction action = BatteryTipUtils.getActionForBatteryTip(batteryTip,
- mSettingsActivity, mFragment);
+ final BatteryTipAction action =
+ BatteryTipUtils.getActionForBatteryTip(
+ batteryTip, mSettingsActivity, mFragment);
if (action != null) {
action.handlePositiveAction(mFragment.getMetricsCategory());
}
@@ -183,13 +181,11 @@
return visibleBatteryTip.orElse(null);
}
- /**
- * Listener to give the control back to target fragment
- */
+ /** Listener to give the control back to target fragment */
public interface BatteryTipListener {
/**
- * This method is invoked once battery tip is handled, then target fragment could do
- * extra work.
+ * This method is invoked once battery tip is handled, then target fragment could do extra
+ * work.
*
* @param batteryTip that has been handled
*/
diff --git a/src/com/android/settings/fuelgauge/batterytip/BatteryTipUtils.java b/src/com/android/settings/fuelgauge/batterytip/BatteryTipUtils.java
index 61e0fb1..d65bd26 100644
--- a/src/com/android/settings/fuelgauge/batterytip/BatteryTipUtils.java
+++ b/src/com/android/settings/fuelgauge/batterytip/BatteryTipUtils.java
@@ -48,15 +48,13 @@
public class BatteryTipUtils {
private static final int REQUEST_CODE = 0;
- /**
- * Get a list of restricted apps with {@link AppOpsManager#OP_RUN_ANY_IN_BACKGROUND}
- */
+ /** Get a list of restricted apps with {@link AppOpsManager#OP_RUN_ANY_IN_BACKGROUND} */
@NonNull
- public static List<AppInfo> getRestrictedAppsList(AppOpsManager appOpsManager,
- UserManager userManager) {
+ public static List<AppInfo> getRestrictedAppsList(
+ AppOpsManager appOpsManager, UserManager userManager) {
final List<UserHandle> userHandles = userManager.getUserProfiles();
- final List<AppOpsManager.PackageOps> packageOpsList = appOpsManager.getPackagesForOps(
- new int[]{AppOpsManager.OP_RUN_ANY_IN_BACKGROUND});
+ final List<AppOpsManager.PackageOps> packageOpsList =
+ appOpsManager.getPackagesForOps(new int[] {AppOpsManager.OP_RUN_ANY_IN_BACKGROUND});
final List<AppInfo> appInfos = new ArrayList<>();
for (int i = 0, size = CollectionUtils.size(packageOpsList); i < size; i++) {
@@ -69,11 +67,12 @@
}
if (entry.getMode() != AppOpsManager.MODE_ALLOWED
&& userHandles.contains(
- new UserHandle(UserHandle.getUserId(packageOps.getUid())))) {
- appInfos.add(new AppInfo.Builder()
- .setPackageName(packageOps.getPackageName())
- .setUid(packageOps.getUid())
- .build());
+ new UserHandle(UserHandle.getUserId(packageOps.getUid())))) {
+ appInfos.add(
+ new AppInfo.Builder()
+ .setPackageName(packageOps.getPackageName())
+ .setUid(packageOps.getUid())
+ .build());
}
}
}
@@ -89,8 +88,10 @@
* @param fragment used to populate {@link BatteryTipAction}
* @return an action for {@code batteryTip}
*/
- public static BatteryTipAction getActionForBatteryTip(BatteryTip batteryTip,
- SettingsActivity settingsActivity, InstrumentedPreferenceFragment fragment) {
+ public static BatteryTipAction getActionForBatteryTip(
+ BatteryTip batteryTip,
+ SettingsActivity settingsActivity,
+ InstrumentedPreferenceFragment fragment) {
switch (batteryTip.getType()) {
case BatteryTip.TipType.SMART_BATTERY_MANAGER:
return new SmartBatteryAction(settingsActivity, fragment);
@@ -112,26 +113,33 @@
/**
* Upload the {@link PendingIntent} to {@link StatsManager} for anomaly detection
+ *
* @throws StatsManager.StatsUnavailableException if failed to communicate with stats service
*/
public static void uploadAnomalyPendingIntent(Context context, StatsManager statsManager)
throws StatsManager.StatsUnavailableException {
final Intent extraIntent = new Intent(context, AnomalyDetectionReceiver.class);
- final PendingIntent pendingIntent = PendingIntent.getBroadcast(context, REQUEST_CODE,
- extraIntent, PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_MUTABLE);
- statsManager.setBroadcastSubscriber(pendingIntent,
- StatsManagerConfig.ANOMALY_CONFIG_KEY, StatsManagerConfig.SUBSCRIBER_ID);
+ final PendingIntent pendingIntent =
+ PendingIntent.getBroadcast(
+ context,
+ REQUEST_CODE,
+ extraIntent,
+ PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_MUTABLE);
+ statsManager.setBroadcastSubscriber(
+ pendingIntent,
+ StatsManagerConfig.ANOMALY_CONFIG_KEY,
+ StatsManagerConfig.SUBSCRIBER_ID);
}
- /**
- * Detect and return anomaly apps after {@code timeAfterMs}
- */
+ /** Detect and return anomaly apps after {@code timeAfterMs} */
public static List<AppInfo> detectAnomalies(Context context, long timeAfterMs) {
- final List<AppInfo> highUsageApps = BatteryDatabaseManager.getInstance(context)
- .queryAllAnomalies(timeAfterMs, AnomalyDatabaseHelper.State.NEW);
+ final List<AppInfo> highUsageApps =
+ BatteryDatabaseManager.getInstance(context)
+ .queryAllAnomalies(timeAfterMs, AnomalyDatabaseHelper.State.NEW);
// Remove it if it doesn't have label or been restricted
- highUsageApps.removeIf(AppLabelPredicate.getInstance(context)
- .or(AppRestrictionPredicate.getInstance(context)));
+ highUsageApps.removeIf(
+ AppLabelPredicate.getInstance(context)
+ .or(AppRestrictionPredicate.getInstance(context)));
return highUsageApps;
}
diff --git a/src/com/android/settings/fuelgauge/batterytip/HighUsageAdapter.java b/src/com/android/settings/fuelgauge/batterytip/HighUsageAdapter.java
index cb7b14e..3f8f8e1 100644
--- a/src/com/android/settings/fuelgauge/batterytip/HighUsageAdapter.java
+++ b/src/com/android/settings/fuelgauge/batterytip/HighUsageAdapter.java
@@ -33,9 +33,7 @@
import java.util.List;
-/**
- * Adapter for the high usage app list
- */
+/** Adapter for the high usage app list */
public class HighUsageAdapter extends RecyclerView.Adapter<HighUsageAdapter.ViewHolder> {
private final Context mContext;
private final IconDrawableFactory mIconDrawableFactory;
@@ -66,8 +64,8 @@
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
- final View view = LayoutInflater.from(mContext).inflate(R.layout.app_high_usage_item,
- parent, false);
+ final View view =
+ LayoutInflater.from(mContext).inflate(R.layout.app_high_usage_item, parent, false);
return new ViewHolder(view);
}
@@ -75,7 +73,10 @@
public void onBindViewHolder(ViewHolder holder, int position) {
final AppInfo app = mHighUsageAppList.get(position);
holder.appIcon.setImageDrawable(
- Utils.getBadgedIcon(mIconDrawableFactory, mPackageManager, app.packageName,
+ Utils.getBadgedIcon(
+ mIconDrawableFactory,
+ mPackageManager,
+ app.packageName,
UserHandle.getUserId(app.uid)));
CharSequence label = Utils.getApplicationLabel(mContext, app.packageName);
if (label == null) {
@@ -89,4 +90,4 @@
public int getItemCount() {
return mHighUsageAppList.size();
}
-}
\ No newline at end of file
+}
diff --git a/src/com/android/settings/fuelgauge/batterytip/HighUsageDataParser.java b/src/com/android/settings/fuelgauge/batterytip/HighUsageDataParser.java
index d5710c2..76f5abc 100644
--- a/src/com/android/settings/fuelgauge/batterytip/HighUsageDataParser.java
+++ b/src/com/android/settings/fuelgauge/batterytip/HighUsageDataParser.java
@@ -20,20 +20,17 @@
import com.android.settings.fuelgauge.BatteryInfo;
-/**
- * DataParser used to go through battery data and detect whether battery is
- * heavily used.
- */
+/** DataParser used to go through battery data and detect whether battery is heavily used. */
public class HighUsageDataParser implements BatteryInfo.BatteryDataParser {
- /**
- * time period to check the battery usage
- */
+ /** Time period to check the battery usage */
private final long mTimePeriodMs;
+
/**
- * treat device as heavily used if battery usage is more than {@code threshold}. 1 means 1%
+ * Treat device as heavily used if battery usage is more than {@code threshold}. 1 means 1%
* battery usage.
*/
private int mThreshold;
+
private long mEndTimeMs;
private byte mEndBatteryLevel;
private byte mLastPeriodBatteryLevel;
@@ -69,11 +66,8 @@
mBatteryDrain = mLastPeriodBatteryLevel - mEndBatteryLevel;
}
- /**
- * Return {@code true} if the battery drain in {@link #mTimePeriodMs} is too much
- */
+ /** Return {@code true} if the battery drain in {@link #mTimePeriodMs} is too much */
public boolean isDeviceHeavilyUsed() {
return mBatteryDrain > mThreshold;
}
}
-
diff --git a/src/com/android/settings/fuelgauge/batterytip/StatsManagerConfig.java b/src/com/android/settings/fuelgauge/batterytip/StatsManagerConfig.java
index 153aa40..e18d11d 100644
--- a/src/com/android/settings/fuelgauge/batterytip/StatsManagerConfig.java
+++ b/src/com/android/settings/fuelgauge/batterytip/StatsManagerConfig.java
@@ -21,244 +21,197 @@
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
-/**
- * This class provides all the configs needed if we want to use {@link android.app.StatsManager}
- */
+/** This class provides all the configs needed if we want to use {@link android.app.StatsManager} */
public class StatsManagerConfig {
/**
- * The key that represents the anomaly config.
- * This value is used in {@link android.app.StatsManager#addConfig(long, byte[])}
+ * The key that represents the anomaly config. This value is used in {@link
+ * android.app.StatsManager#addConfig(long, byte[])}
*/
public static final long ANOMALY_CONFIG_KEY = 1;
- /**
- * The key that represents subscriber, which is settings app.
- */
+ /** The key that represents subscriber, which is settings app. */
public static final long SUBSCRIBER_ID = 1;
@Retention(RetentionPolicy.SOURCE)
- @IntDef({AnomalyType.NULL,
- AnomalyType.UNKNOWN_REASON,
- AnomalyType.EXCESSIVE_WAKELOCK_ALL_SCREEN_OFF,
- AnomalyType.EXCESSIVE_WAKEUPS_IN_BACKGROUND,
- AnomalyType.EXCESSIVE_UNOPTIMIZED_BLE_SCAN,
- AnomalyType.EXCESSIVE_BACKGROUND_SERVICE,
- AnomalyType.EXCESSIVE_WIFI_SCAN,
- AnomalyType.EXCESSIVE_FLASH_WRITES,
- AnomalyType.EXCESSIVE_MEMORY_IN_BACKGROUND,
- AnomalyType.EXCESSIVE_DAVEY_RATE,
- AnomalyType.EXCESSIVE_JANKY_FRAMES,
- AnomalyType.SLOW_COLD_START_TIME,
- AnomalyType.SLOW_HOT_START_TIME,
- AnomalyType.SLOW_WARM_START_TIME,
- AnomalyType.EXCESSIVE_BACKGROUND_SYNCS,
- AnomalyType.EXCESSIVE_GPS_SCANS_IN_BACKGROUND,
- AnomalyType.EXCESSIVE_JOB_SCHEDULING,
- AnomalyType.EXCESSIVE_MOBILE_NETWORK_IN_BACKGROUND,
- AnomalyType.EXCESSIVE_WIFI_LOCK_TIME,
- AnomalyType.JOB_TIMED_OUT,
- AnomalyType.LONG_UNOPTIMIZED_BLE_SCAN,
- AnomalyType.BACKGROUND_ANR,
- AnomalyType.BACKGROUND_CRASH_RATE,
- AnomalyType.EXCESSIVE_ANR_LOOPING,
- AnomalyType.EXCESSIVE_ANRS,
- AnomalyType.EXCESSIVE_CRASH_RATE,
- AnomalyType.EXCESSIVE_CRASH_LOOPING,
- AnomalyType.NUMBER_OF_OPEN_FILES,
- AnomalyType.EXCESSIVE_CAMERA_USAGE_IN_BACKGROUND,
- AnomalyType.EXCESSIVE_CONTACT_ACCESS,
- AnomalyType.EXCESSIVE_AUDIO_IN_BACKGROUND,
- AnomalyType.EXCESSIVE_CRASH_ANR_IN_BACKGROUND,
- AnomalyType.BATTERY_DRAIN_FROM_UNUSED_APP,
+ @IntDef({
+ AnomalyType.NULL,
+ AnomalyType.UNKNOWN_REASON,
+ AnomalyType.EXCESSIVE_WAKELOCK_ALL_SCREEN_OFF,
+ AnomalyType.EXCESSIVE_WAKEUPS_IN_BACKGROUND,
+ AnomalyType.EXCESSIVE_UNOPTIMIZED_BLE_SCAN,
+ AnomalyType.EXCESSIVE_BACKGROUND_SERVICE,
+ AnomalyType.EXCESSIVE_WIFI_SCAN,
+ AnomalyType.EXCESSIVE_FLASH_WRITES,
+ AnomalyType.EXCESSIVE_MEMORY_IN_BACKGROUND,
+ AnomalyType.EXCESSIVE_DAVEY_RATE,
+ AnomalyType.EXCESSIVE_JANKY_FRAMES,
+ AnomalyType.SLOW_COLD_START_TIME,
+ AnomalyType.SLOW_HOT_START_TIME,
+ AnomalyType.SLOW_WARM_START_TIME,
+ AnomalyType.EXCESSIVE_BACKGROUND_SYNCS,
+ AnomalyType.EXCESSIVE_GPS_SCANS_IN_BACKGROUND,
+ AnomalyType.EXCESSIVE_JOB_SCHEDULING,
+ AnomalyType.EXCESSIVE_MOBILE_NETWORK_IN_BACKGROUND,
+ AnomalyType.EXCESSIVE_WIFI_LOCK_TIME,
+ AnomalyType.JOB_TIMED_OUT,
+ AnomalyType.LONG_UNOPTIMIZED_BLE_SCAN,
+ AnomalyType.BACKGROUND_ANR,
+ AnomalyType.BACKGROUND_CRASH_RATE,
+ AnomalyType.EXCESSIVE_ANR_LOOPING,
+ AnomalyType.EXCESSIVE_ANRS,
+ AnomalyType.EXCESSIVE_CRASH_RATE,
+ AnomalyType.EXCESSIVE_CRASH_LOOPING,
+ AnomalyType.NUMBER_OF_OPEN_FILES,
+ AnomalyType.EXCESSIVE_CAMERA_USAGE_IN_BACKGROUND,
+ AnomalyType.EXCESSIVE_CONTACT_ACCESS,
+ AnomalyType.EXCESSIVE_AUDIO_IN_BACKGROUND,
+ AnomalyType.EXCESSIVE_CRASH_ANR_IN_BACKGROUND,
+ AnomalyType.BATTERY_DRAIN_FROM_UNUSED_APP,
})
public @interface AnomalyType {
- /**
- * This represents an error condition in the anomaly detection.
- */
+ /** This represents an error condition in the anomaly detection. */
int NULL = -1;
- /**
- * The anomaly type does not match any other defined type.
- */
+ /** The anomaly type does not match any other defined type. */
int UNKNOWN_REASON = 0;
/**
- * The application held a partial (screen off) wake lock for a period of time that
- * exceeded the threshold with the screen off when not charging.
+ * The application held a partial (screen off) wake lock for a period of time that exceeded
+ * the threshold with the screen off when not charging.
*/
int EXCESSIVE_WAKELOCK_ALL_SCREEN_OFF = 1;
/**
- * The application exceeded the maximum number of wakeups while in the background
- * when not charging.
+ * The application exceeded the maximum number of wakeups while in the background when not
+ * charging.
*/
int EXCESSIVE_WAKEUPS_IN_BACKGROUND = 2;
- /**
- * The application did unoptimized Bluetooth scans too frequently when not charging.
- */
+ /** The application did unoptimized Bluetooth scans too frequently when not charging. */
int EXCESSIVE_UNOPTIMIZED_BLE_SCAN = 3;
/**
- * The application ran in the background for a period of time that exceeded the
- * threshold.
+ * The application ran in the background for a period of time that exceeded the threshold.
*/
int EXCESSIVE_BACKGROUND_SERVICE = 4;
- /**
- * The application exceeded the maximum number of wifi scans when not charging.
- */
+ /** The application exceeded the maximum number of wifi scans when not charging. */
int EXCESSIVE_WIFI_SCAN = 5;
- /**
- * The application exceed the maximum number of flash writes
- */
+ /** The application exceed the maximum number of flash writes */
int EXCESSIVE_FLASH_WRITES = 6;
/**
- * The application used more than the maximum memory, while not spending any time
- * in the foreground.
+ * The application used more than the maximum memory, while not spending any time in the
+ * foreground.
*/
int EXCESSIVE_MEMORY_IN_BACKGROUND = 7;
/**
- * The application exceeded the maximum percentage of frames with a render rate of
- * greater than 700ms.
+ * The application exceeded the maximum percentage of frames with a render rate of greater
+ * than 700ms.
*/
int EXCESSIVE_DAVEY_RATE = 8;
/**
- * The application exceeded the maximum percentage of frames with a render rate
- * greater than 16ms.
+ * The application exceeded the maximum percentage of frames with a render rate greater than
+ * 16ms.
*/
int EXCESSIVE_JANKY_FRAMES = 9;
/**
- * The application exceeded the maximum cold start time - the app has not been
- * launched since last system start, died or was killed.
+ * The application exceeded the maximum cold start time - the app has not been launched
+ * since last system start, died or was killed.
*/
int SLOW_COLD_START_TIME = 10;
/**
- * The application exceeded the maximum hot start time - the app and activity are
- * already in memory.
+ * The application exceeded the maximum hot start time - the app and activity are already in
+ * memory.
*/
int SLOW_HOT_START_TIME = 11;
/**
- * The application exceeded the maximum warm start time - the app was already in
- * memory but the activity wasn’t created yet or was removed from memory.
+ * The application exceeded the maximum warm start time - the app was already in memory but
+ * the activity wasn’t created yet or was removed from memory.
*/
int SLOW_WARM_START_TIME = 12;
- /**
- * The application exceeded the maximum number of syncs while in the background.
- */
+ /** The application exceeded the maximum number of syncs while in the background. */
int EXCESSIVE_BACKGROUND_SYNCS = 13;
- /**
- * The application exceeded the maximum number of gps scans while in the background.
- */
+ /** The application exceeded the maximum number of gps scans while in the background. */
int EXCESSIVE_GPS_SCANS_IN_BACKGROUND = 14;
- /**
- * The application scheduled more than the maximum number of jobs while not charging.
- */
+ /** The application scheduled more than the maximum number of jobs while not charging. */
int EXCESSIVE_JOB_SCHEDULING = 15;
/**
- * The application exceeded the maximum amount of mobile network traffic while in
- * the background.
+ * The application exceeded the maximum amount of mobile network traffic while in the
+ * background.
*/
int EXCESSIVE_MOBILE_NETWORK_IN_BACKGROUND = 16;
/**
- * The application held the WiFi lock for more than the maximum amount of time while
- * not charging.
+ * The application held the WiFi lock for more than the maximum amount of time while not
+ * charging.
*/
int EXCESSIVE_WIFI_LOCK_TIME = 17;
- /**
- * The application scheduled a job that ran longer than the maximum amount of time.
- */
+ /** The application scheduled a job that ran longer than the maximum amount of time. */
int JOB_TIMED_OUT = 18;
/**
- * The application did an unoptimized Bluetooth scan that exceeded the maximum
- * time while in the background.
+ * The application did an unoptimized Bluetooth scan that exceeded the maximum time while in
+ * the background.
*/
int LONG_UNOPTIMIZED_BLE_SCAN = 19;
- /**
- * The application exceeded the maximum ANR rate while in the background.
- */
+ /** The application exceeded the maximum ANR rate while in the background. */
int BACKGROUND_ANR = 20;
- /**
- * The application exceeded the maximum crash rate while in the background.
- */
+ /** The application exceeded the maximum crash rate while in the background. */
int BACKGROUND_CRASH_RATE = 21;
- /**
- * The application exceeded the maximum ANR-looping rate.
- */
+ /** The application exceeded the maximum ANR-looping rate. */
int EXCESSIVE_ANR_LOOPING = 22;
- /**
- * The application exceeded the maximum ANR rate.
- */
+ /** The application exceeded the maximum ANR rate. */
int EXCESSIVE_ANRS = 23;
- /**
- * The application exceeded the maximum crash rate.
- */
+ /** The application exceeded the maximum crash rate. */
int EXCESSIVE_CRASH_RATE = 24;
- /**
- * The application exceeded the maximum crash-looping rate.
- */
+ /** The application exceeded the maximum crash-looping rate. */
int EXCESSIVE_CRASH_LOOPING = 25;
- /**
- * The application crashed because no more file descriptors were available.
- */
+ /** The application crashed because no more file descriptors were available. */
int NUMBER_OF_OPEN_FILES = 26;
- /**
- * The application used an excessive amount of CPU while in a
- * background process state.
- */
+ /** The application used an excessive amount of CPU while in a background process state. */
int EXCESSIVE_CPU_USAGE_IN_BACKGROUND = 27;
/**
- * The application kept the camera open for an excessive amount
- * of time while in a bckground process state.
+ * The application kept the camera open for an excessive amount of time while in a bckground
+ * process state.
*/
int EXCESSIVE_CAMERA_USAGE_IN_BACKGROUND = 28;
- /**
- * The application has accessed the contacts content provider an
- * excessive amount.
- */
+ /** The application has accessed the contacts content provider an excessive amount. */
int EXCESSIVE_CONTACT_ACCESS = 29;
- /**
- * The application has played too much audio while in a background
- * process state.
- */
+ /** The application has played too much audio while in a background process state. */
int EXCESSIVE_AUDIO_IN_BACKGROUND = 30;
/**
- * The application has crashed or ANRed too many times while in a
- * background process state.
+ * The application has crashed or ANRed too many times while in a background process state.
*/
int EXCESSIVE_CRASH_ANR_IN_BACKGROUND = 31;
/**
- * An application which has not been used by the user recently
- * was detected to cause an excessive amount of battery drain.
+ * An application which has not been used by the user recently was detected to cause an
+ * excessive amount of battery drain.
*/
int BATTERY_DRAIN_FROM_UNUSED_APP = 32;
}
-
}
diff --git a/src/com/android/settings/fuelgauge/batterytip/actions/BatterySaverAction.java b/src/com/android/settings/fuelgauge/batterytip/actions/BatterySaverAction.java
index 6f823e9..42b1c2d 100644
--- a/src/com/android/settings/fuelgauge/batterytip/actions/BatterySaverAction.java
+++ b/src/com/android/settings/fuelgauge/batterytip/actions/BatterySaverAction.java
@@ -28,14 +28,12 @@
super(context);
}
- /**
- * Handle the action when user clicks positive button
- */
+ /** Handle the action when user clicks positive button */
@Override
public void handlePositiveAction(int metricsKey) {
- BatterySaverUtils.setPowerSaveMode(mContext, true, /*needFirstTimeWarning*/ true,
- SAVER_ENABLED_UNKNOWN);
- mMetricsFeatureProvider.action(mContext,
- SettingsEnums.ACTION_TIP_TURN_ON_BATTERY_SAVER, metricsKey);
+ BatterySaverUtils.setPowerSaveMode(
+ mContext, true, /*needFirstTimeWarning*/ true, SAVER_ENABLED_UNKNOWN);
+ mMetricsFeatureProvider.action(
+ mContext, SettingsEnums.ACTION_TIP_TURN_ON_BATTERY_SAVER, metricsKey);
}
}
diff --git a/src/com/android/settings/fuelgauge/batterytip/actions/BatteryTipAction.java b/src/com/android/settings/fuelgauge/batterytip/actions/BatteryTipAction.java
index 65aa076..66f9c44 100644
--- a/src/com/android/settings/fuelgauge/batterytip/actions/BatteryTipAction.java
+++ b/src/com/android/settings/fuelgauge/batterytip/actions/BatteryTipAction.java
@@ -33,8 +33,6 @@
mMetricsFeatureProvider = FeatureFactory.getFeatureFactory().getMetricsFeatureProvider();
}
- /**
- * Handle the action when user clicks positive button
- */
+ /** Handle the action when user clicks positive button */
public abstract void handlePositiveAction(int metricsKey);
}
diff --git a/src/com/android/settings/fuelgauge/batterytip/actions/OpenBatterySaverAction.java b/src/com/android/settings/fuelgauge/batterytip/actions/OpenBatterySaverAction.java
index 1bc2ebf..9073086 100644
--- a/src/com/android/settings/fuelgauge/batterytip/actions/OpenBatterySaverAction.java
+++ b/src/com/android/settings/fuelgauge/batterytip/actions/OpenBatterySaverAction.java
@@ -22,23 +22,18 @@
import com.android.settings.core.SubSettingLauncher;
import com.android.settings.fuelgauge.batterysaver.BatterySaverSettings;
-/**
- *
- * Action to open the {@link com.android.settings.fuelgauge.batterysaver.BatterySaverSettings}
- */
+/** Action to open the {@link com.android.settings.fuelgauge.batterysaver.BatterySaverSettings} */
public class OpenBatterySaverAction extends BatteryTipAction {
public OpenBatterySaverAction(Context context) {
super(context);
}
- /**
- * Handle the action when user clicks positive button
- */
+ /** Handle the action when user clicks positive button */
@Override
public void handlePositiveAction(int metricsKey) {
- mMetricsFeatureProvider.action(mContext,
- SettingsEnums.ACTION_TIP_OPEN_BATTERY_SAVER_PAGE, metricsKey);
+ mMetricsFeatureProvider.action(
+ mContext, SettingsEnums.ACTION_TIP_OPEN_BATTERY_SAVER_PAGE, metricsKey);
new SubSettingLauncher(mContext)
.setDestination(BatterySaverSettings.class.getName())
.setSourceMetricsCategory(metricsKey)
diff --git a/src/com/android/settings/fuelgauge/batterytip/actions/OpenRestrictAppFragmentAction.java b/src/com/android/settings/fuelgauge/batterytip/actions/OpenRestrictAppFragmentAction.java
index f0d9f28..30c318e 100644
--- a/src/com/android/settings/fuelgauge/batterytip/actions/OpenRestrictAppFragmentAction.java
+++ b/src/com/android/settings/fuelgauge/batterytip/actions/OpenRestrictAppFragmentAction.java
@@ -30,35 +30,32 @@
import java.util.List;
-/**
- * Action to open the {@link com.android.settings.fuelgauge.RestrictedAppDetails}
- */
+/** Action to open the {@link com.android.settings.fuelgauge.RestrictedAppDetails} */
public class OpenRestrictAppFragmentAction extends BatteryTipAction {
private final RestrictAppTip mRestrictAppTip;
private final InstrumentedPreferenceFragment mFragment;
- @VisibleForTesting
- BatteryDatabaseManager mBatteryDatabaseManager;
+ @VisibleForTesting BatteryDatabaseManager mBatteryDatabaseManager;
- public OpenRestrictAppFragmentAction(InstrumentedPreferenceFragment fragment,
- RestrictAppTip tip) {
+ public OpenRestrictAppFragmentAction(
+ InstrumentedPreferenceFragment fragment, RestrictAppTip tip) {
super(fragment.getContext());
mFragment = fragment;
mRestrictAppTip = tip;
mBatteryDatabaseManager = BatteryDatabaseManager.getInstance(mContext);
}
- /**
- * Handle the action when user clicks positive button
- */
+ /** Handle the action when user clicks positive button */
@Override
public void handlePositiveAction(int metricsKey) {
- mMetricsFeatureProvider.action(mContext,
- SettingsEnums.ACTION_TIP_OPEN_APP_RESTRICTION_PAGE, metricsKey);
+ mMetricsFeatureProvider.action(
+ mContext, SettingsEnums.ACTION_TIP_OPEN_APP_RESTRICTION_PAGE, metricsKey);
final List<AppInfo> mAppInfos = mRestrictAppTip.getRestrictAppList();
RestrictedAppDetails.startRestrictedAppDetails(mFragment, mAppInfos);
// Mark all the anomalies as handled, so it won't show up again.
- ThreadUtils.postOnBackgroundThread(() -> mBatteryDatabaseManager.updateAnomalies(mAppInfos,
- AnomalyDatabaseHelper.State.HANDLED));
+ ThreadUtils.postOnBackgroundThread(
+ () ->
+ mBatteryDatabaseManager.updateAnomalies(
+ mAppInfos, AnomalyDatabaseHelper.State.HANDLED));
}
}
diff --git a/src/com/android/settings/fuelgauge/batterytip/actions/RestrictAppAction.java b/src/com/android/settings/fuelgauge/batterytip/actions/RestrictAppAction.java
index 33ac5df..83abf49 100644
--- a/src/com/android/settings/fuelgauge/batterytip/actions/RestrictAppAction.java
+++ b/src/com/android/settings/fuelgauge/batterytip/actions/RestrictAppAction.java
@@ -31,15 +31,11 @@
import java.util.List;
-/**
- * Action to restrict the apps, then app is not allowed to run in the background.
- */
+/** Action to restrict the apps, then app is not allowed to run in the background. */
public class RestrictAppAction extends BatteryTipAction {
private RestrictAppTip mRestrictAppTip;
- @VisibleForTesting
- BatteryDatabaseManager mBatteryDatabaseManager;
- @VisibleForTesting
- BatteryUtils mBatteryUtils;
+ @VisibleForTesting BatteryDatabaseManager mBatteryDatabaseManager;
+ @VisibleForTesting BatteryUtils mBatteryUtils;
public RestrictAppAction(Context context, RestrictAppTip tip) {
super(context);
@@ -48,9 +44,7 @@
mBatteryDatabaseManager = BatteryDatabaseManager.getInstance(context);
}
- /**
- * Handle the action when user clicks positive button
- */
+ /** Handle the action when user clicks positive button */
@Override
public void handlePositiveAction(int metricsKey) {
final List<AppInfo> appInfos = mRestrictAppTip.getRestrictAppList();
@@ -59,18 +53,19 @@
final AppInfo appInfo = appInfos.get(i);
final String packageName = appInfo.packageName;
// Force app standby, then app can't run in the background
- mBatteryUtils.setForceAppStandby(appInfo.uid, packageName,
- AppOpsManager.MODE_IGNORED);
+ mBatteryUtils.setForceAppStandby(appInfo.uid, packageName, AppOpsManager.MODE_IGNORED);
if (CollectionUtils.isEmpty(appInfo.anomalyTypes)) {
// Only log context if there is no anomaly type
- mMetricsFeatureProvider.action(SettingsEnums.PAGE_UNKNOWN,
+ mMetricsFeatureProvider.action(
+ SettingsEnums.PAGE_UNKNOWN,
SettingsEnums.ACTION_TIP_RESTRICT_APP,
metricsKey,
packageName,
0);
} else {
for (int type : appInfo.anomalyTypes) {
- mMetricsFeatureProvider.action(SettingsEnums.PAGE_UNKNOWN,
+ mMetricsFeatureProvider.action(
+ SettingsEnums.PAGE_UNKNOWN,
SettingsEnums.ACTION_TIP_RESTRICT_APP,
metricsKey,
packageName,
diff --git a/src/com/android/settings/fuelgauge/batterytip/actions/SmartBatteryAction.java b/src/com/android/settings/fuelgauge/batterytip/actions/SmartBatteryAction.java
index f6b9c94..55c0031 100644
--- a/src/com/android/settings/fuelgauge/batterytip/actions/SmartBatteryAction.java
+++ b/src/com/android/settings/fuelgauge/batterytip/actions/SmartBatteryAction.java
@@ -36,20 +36,18 @@
mFragment = fragment;
}
- /**
- * Handle the action when user clicks positive button
- */
+ /** Handle the action when user clicks positive button */
@Override
public void handlePositiveAction(int metricsKey) {
- mMetricsFeatureProvider.action(mContext,
- SettingsEnums.ACTION_TIP_OPEN_SMART_BATTERY, metricsKey);
+ mMetricsFeatureProvider.action(
+ mContext, SettingsEnums.ACTION_TIP_OPEN_SMART_BATTERY, metricsKey);
new SubSettingLauncher(mSettingsActivity)
- .setSourceMetricsCategory(mFragment instanceof Instrumentable
- ? ((Instrumentable) mFragment).getMetricsCategory()
- : Instrumentable.METRICS_CATEGORY_UNKNOWN)
+ .setSourceMetricsCategory(
+ mFragment instanceof Instrumentable
+ ? ((Instrumentable) mFragment).getMetricsCategory()
+ : Instrumentable.METRICS_CATEGORY_UNKNOWN)
.setDestination(SmartBatterySettings.class.getName())
.setTitleRes(R.string.smart_battery_manager_title)
.launch();
-
}
}
diff --git a/src/com/android/settings/fuelgauge/batterytip/actions/UnrestrictAppAction.java b/src/com/android/settings/fuelgauge/batterytip/actions/UnrestrictAppAction.java
index 0ef2c0f..1d959bf 100644
--- a/src/com/android/settings/fuelgauge/batterytip/actions/UnrestrictAppAction.java
+++ b/src/com/android/settings/fuelgauge/batterytip/actions/UnrestrictAppAction.java
@@ -26,13 +26,10 @@
import com.android.settings.fuelgauge.batterytip.AppInfo;
import com.android.settings.fuelgauge.batterytip.tips.UnrestrictAppTip;
-/**
- * Action to clear the restriction to the app
- */
+/** Action to clear the restriction to the app */
public class UnrestrictAppAction extends BatteryTipAction {
private UnrestrictAppTip mUnRestrictAppTip;
- @VisibleForTesting
- BatteryUtils mBatteryUtils;
+ @VisibleForTesting BatteryUtils mBatteryUtils;
public UnrestrictAppAction(Context context, UnrestrictAppTip tip) {
super(context);
@@ -40,15 +37,13 @@
mBatteryUtils = BatteryUtils.getInstance(context);
}
- /**
- * Handle the action when user clicks positive button
- */
+ /** Handle the action when user clicks positive button */
@Override
public void handlePositiveAction(int metricsKey) {
final AppInfo appInfo = mUnRestrictAppTip.getUnrestrictAppInfo();
// Clear force app standby, then app can run in the background
- mBatteryUtils.setForceAppStandby(appInfo.uid, appInfo.packageName,
- AppOpsManager.MODE_ALLOWED);
+ mBatteryUtils.setForceAppStandby(
+ appInfo.uid, appInfo.packageName, AppOpsManager.MODE_ALLOWED);
mMetricsFeatureProvider.action(
SettingsEnums.PAGE_UNKNOWN,
SettingsEnums.ACTION_TIP_UNRESTRICT_APP,
diff --git a/src/com/android/settings/fuelgauge/batterytip/detectors/BatteryDefenderDetector.java b/src/com/android/settings/fuelgauge/batterytip/detectors/BatteryDefenderDetector.java
index 55d2ee4..db572cd 100644
--- a/src/com/android/settings/fuelgauge/batterytip/detectors/BatteryDefenderDetector.java
+++ b/src/com/android/settings/fuelgauge/batterytip/detectors/BatteryDefenderDetector.java
@@ -23,9 +23,7 @@
import com.android.settings.fuelgauge.batterytip.tips.BatteryTip;
import com.android.settings.overlay.FeatureFactory;
-/**
- * Detect whether the battery is overheated
- */
+/** Detect whether the battery is overheated */
public class BatteryDefenderDetector implements BatteryTipDetector {
private final BatteryInfo mBatteryInfo;
private final Context mContext;
@@ -37,11 +35,13 @@
@Override
public BatteryTip detect() {
- final boolean isBasicBatteryDefend = mBatteryInfo.isBatteryDefender
- && !FeatureFactory.getFeatureFactory().getPowerUsageFeatureProvider()
- .isExtraDefend();
- final int state = isBasicBatteryDefend
- ? BatteryTip.StateType.NEW : BatteryTip.StateType.INVISIBLE;
+ final boolean isBasicBatteryDefend =
+ mBatteryInfo.isBatteryDefender
+ && !FeatureFactory.getFeatureFactory()
+ .getPowerUsageFeatureProvider()
+ .isExtraDefend();
+ final int state =
+ isBasicBatteryDefend ? BatteryTip.StateType.NEW : BatteryTip.StateType.INVISIBLE;
final boolean isPluggedIn = mBatteryInfo.pluggedStatus != 0;
return new BatteryDefenderTip(state, isPluggedIn);
}
diff --git a/src/com/android/settings/fuelgauge/batterytip/detectors/DockDefenderDetector.java b/src/com/android/settings/fuelgauge/batterytip/detectors/DockDefenderDetector.java
index 8a839d3..14aeecd 100644
--- a/src/com/android/settings/fuelgauge/batterytip/detectors/DockDefenderDetector.java
+++ b/src/com/android/settings/fuelgauge/batterytip/detectors/DockDefenderDetector.java
@@ -23,9 +23,7 @@
import com.android.settings.fuelgauge.batterytip.tips.BatteryTip;
import com.android.settings.fuelgauge.batterytip.tips.DockDefenderTip;
-/**
- * Detect whether the dock defender mode is enabled.
- */
+/** Detect whether the dock defender mode is enabled. */
public class DockDefenderDetector implements BatteryTipDetector {
private final BatteryInfo mBatteryInfo;
private final Context mContext;
@@ -44,5 +42,4 @@
: BatteryTip.StateType.INVISIBLE,
mode);
}
-
}
diff --git a/src/com/android/settings/fuelgauge/batterytip/detectors/HighUsageDetector.java b/src/com/android/settings/fuelgauge/batterytip/detectors/HighUsageDetector.java
index 8126dcc..8866346 100644
--- a/src/com/android/settings/fuelgauge/batterytip/detectors/HighUsageDetector.java
+++ b/src/com/android/settings/fuelgauge/batterytip/detectors/HighUsageDetector.java
@@ -38,8 +38,8 @@
import java.util.concurrent.TimeUnit;
/**
- * Detector whether to show summary tip. This detector should be executed as the last
- * {@link BatteryTipDetector} since it need the most up-to-date {@code visibleTips}
+ * Detector whether to show summary tip. This detector should be executed as the last {@link
+ * BatteryTipDetector} since it need the most up-to-date {@code visibleTips}
*/
public class HighUsageDetector implements BatteryTipDetector {
private static final String TAG = "HighUsageDetector";
@@ -48,29 +48,31 @@
private BatteryUsageStats mBatteryUsageStats;
private final BatteryInfo mBatteryInfo;
private List<AppInfo> mHighUsageAppList;
- @VisibleForTesting
- HighUsageDataParser mDataParser;
- @VisibleForTesting
- BatteryUtils mBatteryUtils;
- @VisibleForTesting
- boolean mDischarging;
+ @VisibleForTesting HighUsageDataParser mDataParser;
+ @VisibleForTesting BatteryUtils mBatteryUtils;
+ @VisibleForTesting boolean mDischarging;
- public HighUsageDetector(Context context, BatteryTipPolicy policy,
- BatteryUsageStats batteryUsageStats, BatteryInfo batteryInfo) {
+ public HighUsageDetector(
+ Context context,
+ BatteryTipPolicy policy,
+ BatteryUsageStats batteryUsageStats,
+ BatteryInfo batteryInfo) {
mPolicy = policy;
mBatteryUsageStats = batteryUsageStats;
mBatteryInfo = batteryInfo;
mHighUsageAppList = new ArrayList<>();
mBatteryUtils = BatteryUtils.getInstance(context);
- mDataParser = new HighUsageDataParser(mPolicy.highUsagePeriodMs,
- mPolicy.highUsageBatteryDraining);
+ mDataParser =
+ new HighUsageDataParser(
+ mPolicy.highUsagePeriodMs, mPolicy.highUsageBatteryDraining);
mDischarging = batteryInfo.discharging;
}
@Override
public BatteryTip detect() {
- final long lastFullChargeTimeMs = mBatteryUtils.calculateLastFullChargeTime(
- mBatteryUsageStats, System.currentTimeMillis());
+ final long lastFullChargeTimeMs =
+ mBatteryUtils.calculateLastFullChargeTime(
+ mBatteryUsageStats, System.currentTimeMillis());
if (mPolicy.highUsageEnabled && mDischarging) {
parseBatteryData();
if (mDataParser.isDeviceHeavilyUsed() || mPolicy.testHighUsageTip) {
@@ -80,22 +82,25 @@
mBatteryUsageStats.getUidBatteryConsumers();
// Sort by descending power
uidBatteryConsumers.sort(
- (consumer1, consumer2) -> Double.compare(consumer2.getConsumedPower(),
- consumer1.getConsumedPower()));
+ (consumer1, consumer2) ->
+ Double.compare(
+ consumer2.getConsumedPower(),
+ consumer1.getConsumedPower()));
for (UidBatteryConsumer consumer : uidBatteryConsumers) {
- final double percent = mBatteryUtils.calculateBatteryPercent(
- consumer.getConsumedPower(), totalPower, dischargeAmount);
+ final double percent =
+ mBatteryUtils.calculateBatteryPercent(
+ consumer.getConsumedPower(), totalPower, dischargeAmount);
if ((percent + 0.5f < 1f)
|| mBatteryUtils.shouldHideUidBatteryConsumer(consumer)) {
// Don't show it if we should hide or usage percentage is lower than 1%
continue;
}
- mHighUsageAppList.add(new AppInfo.Builder()
- .setUid(consumer.getUid())
- .setPackageName(
- mBatteryUtils.getPackageName(consumer.getUid()))
- .build());
+ mHighUsageAppList.add(
+ new AppInfo.Builder()
+ .setUid(consumer.getUid())
+ .setPackageName(mBatteryUtils.getPackageName(consumer.getUid()))
+ .build());
if (mHighUsageAppList.size() >= mPolicy.highUsageAppCount) {
break;
}
@@ -103,10 +108,11 @@
// When in test mode, add an app if necessary
if (mPolicy.testHighUsageTip && mHighUsageAppList.isEmpty()) {
- mHighUsageAppList.add(new AppInfo.Builder()
- .setPackageName(SETTINGS_PACKAGE_NAME)
- .setScreenOnTimeMs(TimeUnit.HOURS.toMillis(3))
- .build());
+ mHighUsageAppList.add(
+ new AppInfo.Builder()
+ .setPackageName(SETTINGS_PACKAGE_NAME)
+ .setScreenOnTimeMs(TimeUnit.HOURS.toMillis(3))
+ .build());
}
}
}
diff --git a/src/com/android/settings/fuelgauge/batterytip/detectors/IncompatibleChargerDetector.java b/src/com/android/settings/fuelgauge/batterytip/detectors/IncompatibleChargerDetector.java
index cfd9a2c..5a9e4f3 100644
--- a/src/com/android/settings/fuelgauge/batterytip/detectors/IncompatibleChargerDetector.java
+++ b/src/com/android/settings/fuelgauge/batterytip/detectors/IncompatibleChargerDetector.java
@@ -34,12 +34,12 @@
@Override
public BatteryTip detect() {
- final boolean isIncompatibleCharging =
- Utils.containsIncompatibleChargers(mContext, TAG);
- final int state = isIncompatibleCharging
- ? BatteryTip.StateType.NEW : BatteryTip.StateType.INVISIBLE;
- Log.d(TAG, "detect() state= " + state + " isIncompatibleCharging: "
- + isIncompatibleCharging);
+ final boolean isIncompatibleCharging = Utils.containsIncompatibleChargers(mContext, TAG);
+ final int state =
+ isIncompatibleCharging ? BatteryTip.StateType.NEW : BatteryTip.StateType.INVISIBLE;
+ Log.d(
+ TAG,
+ "detect() state= " + state + " isIncompatibleCharging: " + isIncompatibleCharging);
return new IncompatibleChargerTip(state);
}
}
diff --git a/src/com/android/settings/fuelgauge/batterytip/detectors/LowBatteryDetector.java b/src/com/android/settings/fuelgauge/batterytip/detectors/LowBatteryDetector.java
index 9e970d2..1ce5a8e 100644
--- a/src/com/android/settings/fuelgauge/batterytip/detectors/LowBatteryDetector.java
+++ b/src/com/android/settings/fuelgauge/batterytip/detectors/LowBatteryDetector.java
@@ -23,22 +23,23 @@
import com.android.settings.fuelgauge.batterytip.tips.BatteryTip;
import com.android.settings.fuelgauge.batterytip.tips.LowBatteryTip;
-/**
- * Detect whether the battery is too low
- */
+/** Detect whether the battery is too low */
public class LowBatteryDetector implements BatteryTipDetector {
private final BatteryInfo mBatteryInfo;
private final BatteryTipPolicy mPolicy;
private final boolean mIsPowerSaveMode;
private final int mWarningLevel;
-
- public LowBatteryDetector(Context context, BatteryTipPolicy policy, BatteryInfo batteryInfo,
+ public LowBatteryDetector(
+ Context context,
+ BatteryTipPolicy policy,
+ BatteryInfo batteryInfo,
boolean isPowerSaveMode) {
mPolicy = policy;
mBatteryInfo = batteryInfo;
- mWarningLevel = context.getResources().getInteger(
- com.android.internal.R.integer.config_lowBatteryWarningLevel);
+ mWarningLevel =
+ context.getResources()
+ .getInteger(com.android.internal.R.integer.config_lowBatteryWarningLevel);
mIsPowerSaveMode = isPowerSaveMode;
}
diff --git a/src/com/android/settings/fuelgauge/batterytip/detectors/SmartBatteryDetector.java b/src/com/android/settings/fuelgauge/batterytip/detectors/SmartBatteryDetector.java
index 0487ac3..7f9dcd6 100644
--- a/src/com/android/settings/fuelgauge/batterytip/detectors/SmartBatteryDetector.java
+++ b/src/com/android/settings/fuelgauge/batterytip/detectors/SmartBatteryDetector.java
@@ -25,9 +25,7 @@
import com.android.settings.fuelgauge.batterytip.tips.BatteryTip;
import com.android.settings.fuelgauge.batterytip.tips.SmartBatteryTip;
-/**
- * Detect whether to show smart battery tip.
- */
+/** Detect whether to show smart battery tip. */
public class SmartBatteryDetector implements BatteryTipDetector {
private static final int EXPECTED_BATTERY_LEVEL = 30;
@@ -36,8 +34,12 @@
private final ContentResolver mContentResolver;
private final boolean mIsPowerSaveMode;
- public SmartBatteryDetector(Context context, BatteryTipPolicy policy, BatteryInfo batteryInfo,
- ContentResolver contentResolver, boolean isPowerSaveMode) {
+ public SmartBatteryDetector(
+ Context context,
+ BatteryTipPolicy policy,
+ BatteryInfo batteryInfo,
+ ContentResolver contentResolver,
+ boolean isPowerSaveMode) {
mPolicy = policy;
mBatteryInfo = batteryInfo;
mContentResolver = contentResolver;
@@ -46,14 +48,18 @@
@Override
public BatteryTip detect() {
- final boolean smartBatteryOff = Settings.Global.getInt(mContentResolver,
- Settings.Global.ADAPTIVE_BATTERY_MANAGEMENT_ENABLED, 1) == 0;
+ final boolean smartBatteryOff =
+ Settings.Global.getInt(
+ mContentResolver,
+ Settings.Global.ADAPTIVE_BATTERY_MANAGEMENT_ENABLED,
+ 1)
+ == 0;
final boolean isUnderExpectedBatteryLevel =
mBatteryInfo.batteryLevel <= EXPECTED_BATTERY_LEVEL;
// Show it if in test or smart battery is off.
final boolean enableSmartBatteryTip =
smartBatteryOff && !mIsPowerSaveMode && isUnderExpectedBatteryLevel
- || mPolicy.testSmartBatteryTip;
+ || mPolicy.testSmartBatteryTip;
final int state =
enableSmartBatteryTip ? BatteryTip.StateType.NEW : BatteryTip.StateType.INVISIBLE;
return new SmartBatteryTip(state);
diff --git a/src/com/android/settings/fuelgauge/batterytip/tips/AppLabelPredicate.java b/src/com/android/settings/fuelgauge/batterytip/tips/AppLabelPredicate.java
index 1444b12..5bd4dc0 100644
--- a/src/com/android/settings/fuelgauge/batterytip/tips/AppLabelPredicate.java
+++ b/src/com/android/settings/fuelgauge/batterytip/tips/AppLabelPredicate.java
@@ -23,9 +23,7 @@
import java.util.function.Predicate;
-/**
- * {@link Predicate} for {@link AppInfo} to check whether it has label
- */
+/** {@link Predicate} for {@link AppInfo} to check whether it has label */
public class AppLabelPredicate implements Predicate<AppInfo> {
private static AppLabelPredicate sInstance;
diff --git a/src/com/android/settings/fuelgauge/batterytip/tips/AppRestrictionPredicate.java b/src/com/android/settings/fuelgauge/batterytip/tips/AppRestrictionPredicate.java
index 43a4d90..a08953c 100644
--- a/src/com/android/settings/fuelgauge/batterytip/tips/AppRestrictionPredicate.java
+++ b/src/com/android/settings/fuelgauge/batterytip/tips/AppRestrictionPredicate.java
@@ -23,9 +23,7 @@
import java.util.function.Predicate;
-/**
- * {@link Predicate} for {@link AppInfo} to check whether it is restricted.
- */
+/** {@link Predicate} for {@link AppInfo} to check whether it is restricted. */
public class AppRestrictionPredicate implements Predicate<AppInfo> {
private static AppRestrictionPredicate sInstance;
@@ -46,7 +44,8 @@
@Override
public boolean test(AppInfo appInfo) {
// Return true if app already been restricted
- return mAppOpsManager.checkOpNoThrow(AppOpsManager.OP_RUN_ANY_IN_BACKGROUND,
- appInfo.uid, appInfo.packageName) == AppOpsManager.MODE_IGNORED;
+ return mAppOpsManager.checkOpNoThrow(
+ AppOpsManager.OP_RUN_ANY_IN_BACKGROUND, appInfo.uid, appInfo.packageName)
+ == AppOpsManager.MODE_IGNORED;
}
}
diff --git a/src/com/android/settings/fuelgauge/batterytip/tips/BatteryDefenderTip.java b/src/com/android/settings/fuelgauge/batterytip/tips/BatteryDefenderTip.java
index 536e5f8..b5ec522 100644
--- a/src/com/android/settings/fuelgauge/batterytip/tips/BatteryDefenderTip.java
+++ b/src/com/android/settings/fuelgauge/batterytip/tips/BatteryDefenderTip.java
@@ -30,9 +30,7 @@
import com.android.settingslib.HelpUtils;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
-/**
- * Tip to show current battery is overheated
- */
+/** Tip to show current battery is overheated */
public class BatteryDefenderTip extends BatteryTip {
private static final String TAG = "BatteryDefenderTip";
@@ -70,8 +68,7 @@
@Override
public void log(Context context, MetricsFeatureProvider metricsFeatureProvider) {
- metricsFeatureProvider.action(context, SettingsEnums.ACTION_BATTERY_DEFENDER_TIP,
- mState);
+ metricsFeatureProvider.action(context, SettingsEnums.ACTION_BATTERY_DEFENDER_TIP, mState);
}
@Override
@@ -97,14 +94,17 @@
cardPreference.setSecondaryButtonText(context.getString(R.string.learn_more));
cardPreference.setSecondaryButtonClickListener(
- button -> button.startActivityForResult(
- HelpUtils.getHelpIntent(
- context,
- context.getString(R.string.help_url_battery_defender),
- /* backupContext */ ""), /* requestCode */ 0));
+ button ->
+ button.startActivityForResult(
+ HelpUtils.getHelpIntent(
+ context,
+ context.getString(R.string.help_url_battery_defender),
+ /* backupContext */ ""), /* requestCode */
+ 0));
cardPreference.setSecondaryButtonVisible(true);
- cardPreference.setSecondaryButtonContentDescription(context.getString(
- R.string.battery_tip_limited_temporarily_sec_button_content_description));
+ cardPreference.setSecondaryButtonContentDescription(
+ context.getString(
+ R.string.battery_tip_limited_temporarily_sec_button_content_description));
}
private void resumeCharging(Context context) {
@@ -119,13 +119,14 @@
Log.i(TAG, "send resume charging broadcast intent=" + intent);
}
- public static final Creator CREATOR = new Creator() {
- public BatteryTip createFromParcel(Parcel in) {
- return new BatteryDefenderTip(in);
- }
+ public static final Creator CREATOR =
+ new Creator() {
+ public BatteryTip createFromParcel(Parcel in) {
+ return new BatteryDefenderTip(in);
+ }
- public BatteryTip[] newArray(int size) {
- return new BatteryDefenderTip[size];
- }
- };
+ public BatteryTip[] newArray(int size) {
+ return new BatteryDefenderTip[size];
+ }
+ };
}
diff --git a/src/com/android/settings/fuelgauge/batterytip/tips/BatteryTip.java b/src/com/android/settings/fuelgauge/batterytip/tips/BatteryTip.java
index fdafca6..1345032 100644
--- a/src/com/android/settings/fuelgauge/batterytip/tips/BatteryTip.java
+++ b/src/com/android/settings/fuelgauge/batterytip/tips/BatteryTip.java
@@ -35,32 +35,35 @@
/**
* Base model for a battery tip(e.g. suggest user to turn on battery saver)
*
- * Each {@link BatteryTip} contains basic data(e.g. title, summary, icon) as well as the
+ * <p>Each {@link BatteryTip} contains basic data(e.g. title, summary, icon) as well as the
* pre-defined action(e.g. turn on battery saver)
*/
public abstract class BatteryTip implements Comparable<BatteryTip>, Parcelable {
+
@Retention(RetentionPolicy.SOURCE)
- @IntDef({StateType.NEW,
- StateType.HANDLED,
- StateType.INVISIBLE})
+ @IntDef({StateType.NEW, StateType.HANDLED, StateType.INVISIBLE})
public @interface StateType {
+
int NEW = 0;
int HANDLED = 1;
int INVISIBLE = 2;
}
@Retention(RetentionPolicy.SOURCE)
- @IntDef({TipType.SUMMARY,
- TipType.BATTERY_SAVER,
- TipType.HIGH_DEVICE_USAGE,
- TipType.SMART_BATTERY_MANAGER,
- TipType.APP_RESTRICTION,
- TipType.REDUCED_BATTERY,
- TipType.LOW_BATTERY,
- TipType.REMOVE_APP_RESTRICTION,
- TipType.BATTERY_DEFENDER,
- TipType.DOCK_DEFENDER,
- TipType.INCOMPATIBLE_CHARGER})
+ @IntDef({
+ TipType.SUMMARY,
+ TipType.BATTERY_SAVER,
+ TipType.HIGH_DEVICE_USAGE,
+ TipType.SMART_BATTERY_MANAGER,
+ TipType.APP_RESTRICTION,
+ TipType.REDUCED_BATTERY,
+ TipType.LOW_BATTERY,
+ TipType.REMOVE_APP_RESTRICTION,
+ TipType.BATTERY_DEFENDER,
+ TipType.DOCK_DEFENDER,
+ TipType.INCOMPATIBLE_CHARGER,
+ TipType.BATTERY_WARNING
+ })
public @interface TipType {
int SMART_BATTERY_MANAGER = 0;
int APP_RESTRICTION = 1;
@@ -73,10 +76,11 @@
int BATTERY_DEFENDER = 8;
int DOCK_DEFENDER = 9;
int INCOMPATIBLE_CHARGER = 10;
+ int BATTERY_WARNING = 11;
}
- @VisibleForTesting
- static final SparseIntArray TIP_ORDER;
+ @VisibleForTesting static final SparseIntArray TIP_ORDER;
+
static {
TIP_ORDER = new SparseIntArray();
TIP_ORDER.append(TipType.BATTERY_SAVER, 0);
@@ -90,26 +94,26 @@
TIP_ORDER.append(TipType.SMART_BATTERY_MANAGER, 8);
TIP_ORDER.append(TipType.REDUCED_BATTERY, 9);
TIP_ORDER.append(TipType.REMOVE_APP_RESTRICTION, 10);
+ TIP_ORDER.append(TipType.BATTERY_WARNING, 11);
}
private static final String KEY_PREFIX = "key_battery_tip";
- protected int mType;
protected int mState;
+ protected int mType;
protected boolean mShowDialog;
- /**
- * Whether we need to update battery tip when configuration change
- */
+
+ /** Whether we need to update battery tip when configuration change */
protected boolean mNeedUpdate;
- BatteryTip(Parcel in) {
+ public BatteryTip(Parcel in) {
mType = in.readInt();
mState = in.readInt();
mShowDialog = in.readBoolean();
mNeedUpdate = in.readBoolean();
}
- BatteryTip(int type, int state, boolean showDialog) {
+ public BatteryTip(int type, int state, boolean showDialog) {
mType = type;
mState = state;
mShowDialog = showDialog;
@@ -146,15 +150,14 @@
/**
* Check whether data is still make sense. If not, try recover.
+ *
* @param context used to do validate check
*/
public void validateCheck(Context context) {
// do nothing
}
- /**
- * Log the battery tip
- */
+ /** Log the battery tip */
public abstract void log(Context context, MetricsFeatureProvider metricsFeatureProvider);
public void updatePreference(Preference preference) {
@@ -203,7 +206,7 @@
return "type=" + mType + " state=" + mState;
}
- CardPreference castToCardPreferenceSafely(Preference preference) {
+ public CardPreference castToCardPreferenceSafely(Preference preference) {
return preference instanceof CardPreference ? (CardPreference) preference : null;
}
}
diff --git a/src/com/android/settings/fuelgauge/batterytip/tips/DockDefenderTip.java b/src/com/android/settings/fuelgauge/batterytip/tips/DockDefenderTip.java
index c8cb8f2..2458351 100644
--- a/src/com/android/settings/fuelgauge/batterytip/tips/DockDefenderTip.java
+++ b/src/com/android/settings/fuelgauge/batterytip/tips/DockDefenderTip.java
@@ -32,9 +32,7 @@
import com.android.settingslib.HelpUtils;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
-/**
- * Tip to show dock defender status
- */
+/** Tip to show dock defender status */
public class DockDefenderTip extends BatteryTip {
private static final String TAG = "DockDefenderTip";
private int mMode;
@@ -84,8 +82,9 @@
@Override
public int getIconId() {
- return mMode == DockDefenderMode.ACTIVE ? R.drawable.ic_battery_status_protected_24dp :
- R.drawable.ic_battery_dock_defender_untriggered_24dp;
+ return mMode == DockDefenderMode.ACTIVE
+ ? R.drawable.ic_battery_status_protected_24dp
+ : R.drawable.ic_battery_dock_defender_untriggered_24dp;
}
@Override
@@ -98,8 +97,7 @@
@Override
public void log(Context context, MetricsFeatureProvider metricsFeatureProvider) {
- metricsFeatureProvider.action(context, SettingsEnums.ACTION_DOCK_DEFENDER_TIP,
- mState);
+ metricsFeatureProvider.action(context, SettingsEnums.ACTION_DOCK_DEFENDER_TIP, mState);
}
@Override
@@ -119,15 +117,19 @@
case DockDefenderMode.ACTIVE:
cardPreference.setPrimaryButtonText(
context.getString(R.string.battery_tip_charge_to_full_button));
- cardPreference.setPrimaryButtonClickListener(unused -> {
- resumeCharging(context);
- mMode = DockDefenderMode.TEMPORARILY_BYPASSED;
- context.sendBroadcast(new Intent().setAction(
- BatteryUtils.BYPASS_DOCK_DEFENDER_ACTION).setPackage(
- context.getPackageName()).addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY
- | Intent.FLAG_RECEIVER_FOREGROUND));
- updatePreference(preference);
- });
+ cardPreference.setPrimaryButtonClickListener(
+ unused -> {
+ resumeCharging(context);
+ mMode = DockDefenderMode.TEMPORARILY_BYPASSED;
+ context.sendBroadcast(
+ new Intent()
+ .setAction(BatteryUtils.BYPASS_DOCK_DEFENDER_ACTION)
+ .setPackage(context.getPackageName())
+ .addFlags(
+ Intent.FLAG_RECEIVER_REGISTERED_ONLY
+ | Intent.FLAG_RECEIVER_FOREGROUND));
+ updatePreference(preference);
+ });
cardPreference.setPrimaryButtonVisible(true);
break;
case DockDefenderMode.TEMPORARILY_BYPASSED:
@@ -140,15 +142,17 @@
cardPreference.setSecondaryButtonText(context.getString(R.string.learn_more));
cardPreference.setSecondaryButtonClickListener(
- button -> button.startActivityForResult(
- HelpUtils.getHelpIntent(
- context,
- context.getString(R.string.help_url_dock_defender),
- /* backupContext */ ""), /* requestCode */ 0));
+ button ->
+ button.startActivityForResult(
+ HelpUtils.getHelpIntent(
+ context,
+ context.getString(R.string.help_url_dock_defender),
+ /* backupContext */ ""), /* requestCode */
+ 0));
cardPreference.setSecondaryButtonVisible(true);
- cardPreference.setSecondaryButtonContentDescription(context.getString(
- R.string.battery_tip_limited_temporarily_sec_button_content_description));
-
+ cardPreference.setSecondaryButtonContentDescription(
+ context.getString(
+ R.string.battery_tip_limited_temporarily_sec_button_content_description));
}
private void resumeCharging(Context context) {
@@ -163,13 +167,14 @@
Log.i(TAG, "send resume charging broadcast intent=" + intent);
}
- public static final Creator CREATOR = new Creator() {
- public BatteryTip createFromParcel(Parcel in) {
- return new DockDefenderTip(in);
- }
+ public static final Creator CREATOR =
+ new Creator() {
+ public BatteryTip createFromParcel(Parcel in) {
+ return new DockDefenderTip(in);
+ }
- public BatteryTip[] newArray(int size) {
- return new DockDefenderTip[size];
- }
- };
+ public BatteryTip[] newArray(int size) {
+ return new DockDefenderTip[size];
+ }
+ };
}
diff --git a/src/com/android/settings/fuelgauge/batterytip/tips/HighUsageTip.java b/src/com/android/settings/fuelgauge/batterytip/tips/HighUsageTip.java
index 47938fb..44e4f5c 100644
--- a/src/com/android/settings/fuelgauge/batterytip/tips/HighUsageTip.java
+++ b/src/com/android/settings/fuelgauge/batterytip/tips/HighUsageTip.java
@@ -29,17 +29,16 @@
import java.util.List;
-/**
- * Tip to show general summary about battery life
- */
+/** Tip to show general summary about battery life */
public class HighUsageTip extends BatteryTip {
private final long mLastFullChargeTimeMs;
- @VisibleForTesting
- final List<AppInfo> mHighUsageAppList;
+ @VisibleForTesting final List<AppInfo> mHighUsageAppList;
public HighUsageTip(long lastFullChargeTimeMs, List<AppInfo> appList) {
- super(TipType.HIGH_DEVICE_USAGE, appList.isEmpty() ? StateType.INVISIBLE : StateType.NEW,
+ super(
+ TipType.HIGH_DEVICE_USAGE,
+ appList.isEmpty() ? StateType.INVISIBLE : StateType.NEW,
true /* showDialog */);
mLastFullChargeTimeMs = lastFullChargeTimeMs;
mHighUsageAppList = appList;
@@ -81,13 +80,11 @@
@Override
public void log(Context context, MetricsFeatureProvider metricsFeatureProvider) {
- metricsFeatureProvider.action(context, SettingsEnums.ACTION_HIGH_USAGE_TIP,
- mState);
+ metricsFeatureProvider.action(context, SettingsEnums.ACTION_HIGH_USAGE_TIP, mState);
for (int i = 0, size = mHighUsageAppList.size(); i < size; i++) {
final AppInfo appInfo = mHighUsageAppList.get(i);
- metricsFeatureProvider.action(context,
- SettingsEnums.ACTION_HIGH_USAGE_TIP_LIST,
- appInfo.packageName);
+ metricsFeatureProvider.action(
+ context, SettingsEnums.ACTION_HIGH_USAGE_TIP_LIST, appInfo.packageName);
}
}
@@ -112,14 +109,14 @@
return stringBuilder.toString();
}
- public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {
- public BatteryTip createFromParcel(Parcel in) {
- return new HighUsageTip(in);
- }
+ public static final Parcelable.Creator CREATOR =
+ new Parcelable.Creator() {
+ public BatteryTip createFromParcel(Parcel in) {
+ return new HighUsageTip(in);
+ }
- public BatteryTip[] newArray(int size) {
- return new HighUsageTip[size];
- }
- };
-
+ public BatteryTip[] newArray(int size) {
+ return new HighUsageTip[size];
+ }
+ };
}
diff --git a/src/com/android/settings/fuelgauge/batterytip/tips/IncompatibleChargerTip.java b/src/com/android/settings/fuelgauge/batterytip/tips/IncompatibleChargerTip.java
index 48cfb7a..ca42141 100644
--- a/src/com/android/settings/fuelgauge/batterytip/tips/IncompatibleChargerTip.java
+++ b/src/com/android/settings/fuelgauge/batterytip/tips/IncompatibleChargerTip.java
@@ -62,8 +62,8 @@
@Override
public void log(Context context, MetricsFeatureProvider metricsFeatureProvider) {
- metricsFeatureProvider.action(context, SettingsEnums.ACTION_INCOMPATIBLE_CHARGING_TIP,
- mState);
+ metricsFeatureProvider.action(
+ context, SettingsEnums.ACTION_INCOMPATIBLE_CHARGING_TIP, mState);
}
@Override
@@ -79,23 +79,26 @@
cardPreference.setSelectable(false);
cardPreference.setPrimaryButtonText(context.getString(R.string.learn_more));
cardPreference.setPrimaryButtonClickListener(
- button -> button.startActivityForResult(
- HelpUtils.getHelpIntent(
- context,
- context.getString(R.string.help_url_incompatible_charging),
- /* backupContext */ ""), /* requestCode */ 0));
+ button ->
+ button.startActivityForResult(
+ HelpUtils.getHelpIntent(
+ context,
+ context.getString(R.string.help_url_incompatible_charging),
+ /* backupContext */ ""), /* requestCode */
+ 0));
cardPreference.setPrimaryButtonVisible(true);
- cardPreference.setPrimaryButtonContentDescription(context.getString(
- R.string.battery_tip_incompatible_charging_content_description));
+ cardPreference.setPrimaryButtonContentDescription(
+ context.getString(R.string.battery_tip_incompatible_charging_content_description));
}
- public static final Creator CREATOR = new Creator() {
- public BatteryTip createFromParcel(Parcel in) {
- return new IncompatibleChargerTip(in);
- }
+ public static final Creator CREATOR =
+ new Creator() {
+ public BatteryTip createFromParcel(Parcel in) {
+ return new IncompatibleChargerTip(in);
+ }
- public BatteryTip[] newArray(int size) {
- return new IncompatibleChargerTip[size];
- }
- };
+ public BatteryTip[] newArray(int size) {
+ return new IncompatibleChargerTip[size];
+ }
+ };
}
diff --git a/src/com/android/settings/fuelgauge/batterytip/tips/LowBatteryTip.java b/src/com/android/settings/fuelgauge/batterytip/tips/LowBatteryTip.java
index aeff7e9..3073d12 100644
--- a/src/com/android/settings/fuelgauge/batterytip/tips/LowBatteryTip.java
+++ b/src/com/android/settings/fuelgauge/batterytip/tips/LowBatteryTip.java
@@ -62,28 +62,27 @@
@Override
public void log(Context context, MetricsFeatureProvider metricsFeatureProvider) {
- metricsFeatureProvider.action(context, SettingsEnums.ACTION_LOW_BATTERY_TIP,
- mState);
+ metricsFeatureProvider.action(context, SettingsEnums.ACTION_LOW_BATTERY_TIP, mState);
}
@Override
public void updateState(BatteryTip tip) {
final LowBatteryTip lowBatteryTip = (LowBatteryTip) tip;
- mState = lowBatteryTip.mPowerSaveModeOn
- ? StateType.INVISIBLE : lowBatteryTip.getState();
+ mState = lowBatteryTip.mPowerSaveModeOn ? StateType.INVISIBLE : lowBatteryTip.getState();
}
boolean isPowerSaveModeOn() {
return mPowerSaveModeOn;
}
- public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {
- public BatteryTip createFromParcel(Parcel in) {
- return new LowBatteryTip(in);
- }
+ public static final Parcelable.Creator CREATOR =
+ new Parcelable.Creator() {
+ public BatteryTip createFromParcel(Parcel in) {
+ return new LowBatteryTip(in);
+ }
- public BatteryTip[] newArray(int size) {
- return new LowBatteryTip[size];
- }
- };
+ public BatteryTip[] newArray(int size) {
+ return new LowBatteryTip[size];
+ }
+ };
}
diff --git a/src/com/android/settings/fuelgauge/batterytip/tips/RestrictAppTip.java b/src/com/android/settings/fuelgauge/batterytip/tips/RestrictAppTip.java
index cba614b..2b74dd2 100644
--- a/src/com/android/settings/fuelgauge/batterytip/tips/RestrictAppTip.java
+++ b/src/com/android/settings/fuelgauge/batterytip/tips/RestrictAppTip.java
@@ -34,9 +34,7 @@
import java.util.List;
import java.util.Map;
-/**
- * Tip to suggest user to restrict some bad apps
- */
+/** Tip to suggest user to restrict some bad apps */
public class RestrictAppTip extends BatteryTip {
private List<AppInfo> mRestrictAppList;
@@ -62,27 +60,32 @@
@Override
public CharSequence getTitle(Context context) {
final int num = mRestrictAppList.size();
- final CharSequence appLabel = num > 0 ? Utils.getApplicationLabel(context,
- mRestrictAppList.get(0).packageName) : "";
+ final CharSequence appLabel =
+ num > 0
+ ? Utils.getApplicationLabel(context, mRestrictAppList.get(0).packageName)
+ : "";
Map<String, Object> arguments = new ArrayMap<>();
arguments.put("count", num);
arguments.put("label", appLabel);
return mState == StateType.HANDLED
- ? StringUtil.getIcuPluralsString(context, arguments,
- R.string.battery_tip_restrict_handled_title)
- : StringUtil.getIcuPluralsString(context, arguments,
- R.string.battery_tip_restrict_title);
+ ? StringUtil.getIcuPluralsString(
+ context, arguments, R.string.battery_tip_restrict_handled_title)
+ : StringUtil.getIcuPluralsString(
+ context, arguments, R.string.battery_tip_restrict_title);
}
@Override
public CharSequence getSummary(Context context) {
final int num = mRestrictAppList.size();
- final CharSequence appLabel = num > 0 ? Utils.getApplicationLabel(context,
- mRestrictAppList.get(0).packageName) : "";
- final int resId = mState == StateType.HANDLED
- ? R.string.battery_tip_restrict_handled_summary
- : R.string.battery_tip_restrict_summary;
+ final CharSequence appLabel =
+ num > 0
+ ? Utils.getApplicationLabel(context, mRestrictAppList.get(0).packageName)
+ : "";
+ final int resId =
+ mState == StateType.HANDLED
+ ? R.string.battery_tip_restrict_handled_summary
+ : R.string.battery_tip_restrict_summary;
Map<String, Object> arguments = new ArrayMap<>();
arguments.put("count", num);
arguments.put("label", appLabel);
@@ -127,13 +130,13 @@
@Override
public void log(Context context, MetricsFeatureProvider metricsFeatureProvider) {
- metricsFeatureProvider.action(context, SettingsEnums.ACTION_APP_RESTRICTION_TIP,
- mState);
+ metricsFeatureProvider.action(context, SettingsEnums.ACTION_APP_RESTRICTION_TIP, mState);
if (mState == StateType.NEW) {
for (int i = 0, size = mRestrictAppList.size(); i < size; i++) {
final AppInfo appInfo = mRestrictAppList.get(i);
for (Integer anomalyType : appInfo.anomalyTypes) {
- metricsFeatureProvider.action(SettingsEnums.PAGE_UNKNOWN,
+ metricsFeatureProvider.action(
+ SettingsEnums.PAGE_UNKNOWN,
SettingsEnums.ACTION_APP_RESTRICTION_TIP_LIST,
SettingsEnums.PAGE_UNKNOWN,
appInfo.packageName,
@@ -147,14 +150,11 @@
return mRestrictAppList;
}
- /**
- * Construct the app list string(e.g. app1, app2, and app3)
- */
+ /** Construct the app list string(e.g. app1, app2, and app3) */
public CharSequence getRestrictAppsString(Context context) {
final List<CharSequence> appLabels = new ArrayList<>();
for (int i = 0, size = mRestrictAppList.size(); i < size; i++) {
- appLabels.add(Utils.getApplicationLabel(context,
- mRestrictAppList.get(i).packageName));
+ appLabels.add(Utils.getApplicationLabel(context, mRestrictAppList.get(i).packageName));
}
return ListFormatter.getInstance().format(appLabels);
@@ -179,13 +179,14 @@
dest.writeTypedList(mRestrictAppList);
}
- public static final Creator CREATOR = new Creator() {
- public BatteryTip createFromParcel(Parcel in) {
- return new RestrictAppTip(in);
- }
+ public static final Creator CREATOR =
+ new Creator() {
+ public BatteryTip createFromParcel(Parcel in) {
+ return new RestrictAppTip(in);
+ }
- public BatteryTip[] newArray(int size) {
- return new RestrictAppTip[size];
- }
- };
+ public BatteryTip[] newArray(int size) {
+ return new RestrictAppTip[size];
+ }
+ };
}
diff --git a/src/com/android/settings/fuelgauge/batterytip/tips/SmartBatteryTip.java b/src/com/android/settings/fuelgauge/batterytip/tips/SmartBatteryTip.java
index 0593e88..c99653b 100644
--- a/src/com/android/settings/fuelgauge/batterytip/tips/SmartBatteryTip.java
+++ b/src/com/android/settings/fuelgauge/batterytip/tips/SmartBatteryTip.java
@@ -23,9 +23,7 @@
import com.android.settings.R;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
-/**
- * Tip to suggest turn on smart battery if it is not on
- */
+/** Tip to suggest turn on smart battery if it is not on */
public class SmartBatteryTip extends BatteryTip {
public SmartBatteryTip(@StateType int state) {
@@ -58,18 +56,17 @@
@Override
public void log(Context context, MetricsFeatureProvider metricsFeatureProvider) {
- metricsFeatureProvider.action(context, SettingsEnums.ACTION_SMART_BATTERY_TIP,
- mState);
+ metricsFeatureProvider.action(context, SettingsEnums.ACTION_SMART_BATTERY_TIP, mState);
}
- public static final Creator CREATOR = new Creator() {
- public BatteryTip createFromParcel(Parcel in) {
- return new SmartBatteryTip(in);
- }
+ public static final Creator CREATOR =
+ new Creator() {
+ public BatteryTip createFromParcel(Parcel in) {
+ return new SmartBatteryTip(in);
+ }
- public BatteryTip[] newArray(int size) {
- return new SmartBatteryTip[size];
- }
- };
-
+ public BatteryTip[] newArray(int size) {
+ return new SmartBatteryTip[size];
+ }
+ };
}
diff --git a/src/com/android/settings/fuelgauge/batterytip/tips/UnrestrictAppTip.java b/src/com/android/settings/fuelgauge/batterytip/tips/UnrestrictAppTip.java
index 3c560f8..7b5caeb 100644
--- a/src/com/android/settings/fuelgauge/batterytip/tips/UnrestrictAppTip.java
+++ b/src/com/android/settings/fuelgauge/batterytip/tips/UnrestrictAppTip.java
@@ -84,13 +84,14 @@
dest.writeParcelable(mAppInfo, flags);
}
- public static final Creator CREATOR = new Creator() {
- public BatteryTip createFromParcel(Parcel in) {
- return new UnrestrictAppTip(in);
- }
+ public static final Creator CREATOR =
+ new Creator() {
+ public BatteryTip createFromParcel(Parcel in) {
+ return new UnrestrictAppTip(in);
+ }
- public BatteryTip[] newArray(int size) {
- return new UnrestrictAppTip[size];
- }
- };
+ public BatteryTip[] newArray(int size) {
+ return new UnrestrictAppTip[size];
+ }
+ };
}
diff --git a/src/com/android/settings/fuelgauge/batteryusage/AnomalyEventWrapper.java b/src/com/android/settings/fuelgauge/batteryusage/AnomalyEventWrapper.java
index 5e30d7a..13c8a91 100644
--- a/src/com/android/settings/fuelgauge/batteryusage/AnomalyEventWrapper.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/AnomalyEventWrapper.java
@@ -48,7 +48,8 @@
mResourceIndex = mPowerAnomalyEvent.getKey().getNumber();
}
- private <T> T getInfo(Function<WarningBannerInfo, T> warningBannerInfoSupplier,
+ private <T> T getInfo(
+ Function<WarningBannerInfo, T> warningBannerInfoSupplier,
Function<WarningItemInfo, T> warningItemInfoSupplier) {
if (warningBannerInfoSupplier != null && mPowerAnomalyEvent.hasWarningBannerInfo()) {
return warningBannerInfoSupplier.apply(mPowerAnomalyEvent.getWarningBannerInfo());
@@ -60,15 +61,19 @@
private int getResourceId(int resourceId, int resourceIndex, String defType) {
final String key = getStringFromArrayResource(resourceId, resourceIndex);
- return TextUtils.isEmpty(key) ? 0
+ return TextUtils.isEmpty(key)
+ ? 0
: mContext.getResources().getIdentifier(key, defType, mContext.getPackageName());
}
- private String getString(Function<WarningBannerInfo, String> warningBannerInfoSupplier,
+ private String getString(
+ Function<WarningBannerInfo, String> warningBannerInfoSupplier,
Function<WarningItemInfo, String> warningItemInfoSupplier,
- int resourceId, int resourceIndex) {
+ int resourceId,
+ int resourceIndex) {
final String string = getInfo(warningBannerInfoSupplier, warningItemInfoSupplier);
- return (!TextUtils.isEmpty(string) || resourceId <= 0) ? string
+ return (!TextUtils.isEmpty(string) || resourceId <= 0)
+ ? string
: getStringFromArrayResource(resourceId, resourceIndex);
}
@@ -78,7 +83,8 @@
}
final String[] stringArray = mContext.getResources().getStringArray(resourceId);
return (resourceIndex >= 0 && resourceIndex < stringArray.length)
- ? stringArray[resourceIndex] : null;
+ ? stringArray[resourceIndex]
+ : null;
}
void setRelatedBatteryDiffEntry(BatteryDiffEntry batteryDiffEntry) {
@@ -98,13 +104,13 @@
}
String getTitleString() {
- final String titleStringFromProto = getInfo(WarningBannerInfo::getTitleString,
- WarningItemInfo::getTitleString);
+ final String titleStringFromProto =
+ getInfo(WarningBannerInfo::getTitleString, WarningItemInfo::getTitleString);
if (!TextUtils.isEmpty(titleStringFromProto)) {
return titleStringFromProto;
}
- final int titleFormatResId = getResourceId(R.array.power_anomaly_title_ids,
- mResourceIndex, "string");
+ final int titleFormatResId =
+ getResourceId(R.array.power_anomaly_title_ids, mResourceIndex, "string");
if (mPowerAnomalyEvent.hasWarningBannerInfo()) {
return mContext.getString(titleFormatResId);
} else if (mPowerAnomalyEvent.hasWarningItemInfo() && mRelatedBatteryDiffEntry != null) {
@@ -115,20 +121,24 @@
}
String getMainBtnString() {
- return getString(WarningBannerInfo::getMainButtonString,
+ return getString(
+ WarningBannerInfo::getMainButtonString,
WarningItemInfo::getMainButtonString,
- R.array.power_anomaly_main_btn_strings, mResourceIndex);
+ R.array.power_anomaly_main_btn_strings,
+ mResourceIndex);
}
String getDismissBtnString() {
- return getString(WarningBannerInfo::getCancelButtonString,
+ return getString(
+ WarningBannerInfo::getCancelButtonString,
WarningItemInfo::getCancelButtonString,
- R.array.power_anomaly_dismiss_btn_strings, mResourceIndex);
+ R.array.power_anomaly_dismiss_btn_strings,
+ mResourceIndex);
}
String getAnomalyHintString() {
- final String anomalyHintStringFromProto = getInfo(null,
- WarningItemInfo::getWarningInfoString);
+ final String anomalyHintStringFromProto =
+ getInfo(null, WarningItemInfo::getWarningInfoString);
return TextUtils.isEmpty(anomalyHintStringFromProto)
? getStringFromArrayResource(R.array.power_anomaly_hint_messages, mResourceIndex)
: anomalyHintStringFromProto;
@@ -148,8 +158,9 @@
String getAnomalyEntryKey() {
return mPowerAnomalyEvent.hasWarningItemInfo()
- && mPowerAnomalyEvent.getWarningItemInfo().hasItemKey()
- ? mPowerAnomalyEvent.getWarningItemInfo().getItemKey() : null;
+ && mPowerAnomalyEvent.getWarningItemInfo().hasItemKey()
+ ? mPowerAnomalyEvent.getWarningItemInfo().getItemKey()
+ : null;
}
boolean hasSubSettingLauncher() {
@@ -163,23 +174,24 @@
if (mSubSettingLauncher != null) {
return mSubSettingLauncher;
}
- final String destinationClassName = getInfo(
- WarningBannerInfo::getMainButtonDestination, null);
+ final String destinationClassName =
+ getInfo(WarningBannerInfo::getMainButtonDestination, null);
if (!TextUtils.isEmpty(destinationClassName)) {
- final Integer sourceMetricsCategory = getInfo(
- WarningBannerInfo::getMainButtonSourceMetricsCategory, null);
- final String preferenceHighlightKey = getInfo(
- WarningBannerInfo::getMainButtonSourceHighlightKey, null);
+ final Integer sourceMetricsCategory =
+ getInfo(WarningBannerInfo::getMainButtonSourceMetricsCategory, null);
+ final String preferenceHighlightKey =
+ getInfo(WarningBannerInfo::getMainButtonSourceHighlightKey, null);
Bundle arguments = Bundle.EMPTY;
if (!TextUtils.isEmpty(preferenceHighlightKey)) {
arguments = new Bundle(1);
- arguments.putString(SettingsActivity.EXTRA_FRAGMENT_ARG_KEY,
- preferenceHighlightKey);
+ arguments.putString(
+ SettingsActivity.EXTRA_FRAGMENT_ARG_KEY, preferenceHighlightKey);
}
- mSubSettingLauncher = new SubSettingLauncher(mContext)
- .setDestination(destinationClassName)
- .setSourceMetricsCategory(sourceMetricsCategory)
- .setArguments(arguments);
+ mSubSettingLauncher =
+ new SubSettingLauncher(mContext)
+ .setDestination(destinationClassName)
+ .setSourceMetricsCategory(sourceMetricsCategory)
+ .setArguments(arguments);
}
return mSubSettingLauncher;
}
@@ -199,13 +211,13 @@
return null;
}
final WarningItemInfo warningItemInfo = mPowerAnomalyEvent.getWarningItemInfo();
- final Long startTimestamp = warningItemInfo.hasStartTimestamp()
- ? warningItemInfo.getStartTimestamp() : null;
- final Long endTimestamp = warningItemInfo.hasEndTimestamp()
- ? warningItemInfo.getEndTimestamp() : null;
+ final Long startTimestamp =
+ warningItemInfo.hasStartTimestamp() ? warningItemInfo.getStartTimestamp() : null;
+ final Long endTimestamp =
+ warningItemInfo.hasEndTimestamp() ? warningItemInfo.getEndTimestamp() : null;
if (startTimestamp != null && endTimestamp != null) {
- mHighlightSlotPair = batteryLevelData
- .getIndexByTimestamps(startTimestamp, endTimestamp);
+ mHighlightSlotPair =
+ batteryLevelData.getIndexByTimestamps(startTimestamp, endTimestamp);
if (mHighlightSlotPair.first == BatteryChartViewModel.SELECTED_INDEX_INVALID
|| mHighlightSlotPair.second == BatteryChartViewModel.SELECTED_INDEX_INVALID) {
// Drop invalid mHighlightSlotPair index
diff --git a/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceController.java b/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceController.java
index bb6593c..8ae8edd 100644
--- a/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceController.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceController.java
@@ -55,8 +55,12 @@
/** Controls the update for chart graph and the list items. */
public class BatteryChartPreferenceController extends AbstractPreferenceController
- implements PreferenceControllerMixin, LifecycleObserver, OnCreate, OnDestroy,
- OnSaveInstanceState, OnResume {
+ implements PreferenceControllerMixin,
+ LifecycleObserver,
+ OnCreate,
+ OnDestroy,
+ OnSaveInstanceState,
+ OnResume {
private static final String TAG = "BatteryChartPreferenceController";
private static final String PREFERENCE_KEY = "battery_chart";
@@ -73,22 +77,14 @@
void onSelectedIndexUpdated();
}
- @VisibleForTesting
- Context mPrefContext;
- @VisibleForTesting
- TextView mChartSummaryTextView;
- @VisibleForTesting
- BatteryChartView mDailyChartView;
- @VisibleForTesting
- BatteryChartView mHourlyChartView;
- @VisibleForTesting
- int mDailyChartIndex = BatteryChartViewModel.SELECTED_INDEX_ALL;
- @VisibleForTesting
- int mHourlyChartIndex = BatteryChartViewModel.SELECTED_INDEX_ALL;
- @VisibleForTesting
- int mDailyHighlightSlotIndex = BatteryChartViewModel.SELECTED_INDEX_INVALID;
- @VisibleForTesting
- int mHourlyHighlightSlotIndex = BatteryChartViewModel.SELECTED_INDEX_INVALID;
+ @VisibleForTesting Context mPrefContext;
+ @VisibleForTesting TextView mChartSummaryTextView;
+ @VisibleForTesting BatteryChartView mDailyChartView;
+ @VisibleForTesting BatteryChartView mHourlyChartView;
+ @VisibleForTesting int mDailyChartIndex = BatteryChartViewModel.SELECTED_INDEX_ALL;
+ @VisibleForTesting int mHourlyChartIndex = BatteryChartViewModel.SELECTED_INDEX_ALL;
+ @VisibleForTesting int mDailyHighlightSlotIndex = BatteryChartViewModel.SELECTED_INDEX_INVALID;
+ @VisibleForTesting int mHourlyHighlightSlotIndex = BatteryChartViewModel.SELECTED_INDEX_INVALID;
private boolean mIs24HourFormat;
private View mBatteryChartViewGroup;
@@ -100,13 +96,14 @@
private final MetricsFeatureProvider mMetricsFeatureProvider;
private final Handler mHandler = new Handler(Looper.getMainLooper());
private final AnimatorListenerAdapter mHourlyChartFadeInAdapter =
- createHourlyChartAnimatorListenerAdapter(/*visible=*/ true);
+ createHourlyChartAnimatorListenerAdapter(/* visible= */ true);
private final AnimatorListenerAdapter mHourlyChartFadeOutAdapter =
- createHourlyChartAnimatorListenerAdapter(/*visible=*/ false);
+ createHourlyChartAnimatorListenerAdapter(/* visible= */ false);
@VisibleForTesting
final DailyChartLabelTextGenerator mDailyChartLabelTextGenerator =
new DailyChartLabelTextGenerator();
+
@VisibleForTesting
final HourlyChartLabelTextGenerator mHourlyChartLabelTextGenerator =
new HourlyChartLabelTextGenerator();
@@ -116,8 +113,7 @@
super(context);
mActivity = activity;
mIs24HourFormat = DateFormat.is24HourFormat(context);
- mMetricsFeatureProvider =
- FeatureFactory.getFeatureFactory().getMetricsFeatureProvider();
+ mMetricsFeatureProvider = FeatureFactory.getFeatureFactory().getMetricsFeatureProvider();
if (lifecycle != null) {
lifecycle.addObserver(this);
}
@@ -128,12 +124,13 @@
if (savedInstanceState == null) {
return;
}
- mDailyChartIndex =
- savedInstanceState.getInt(KEY_DAILY_CHART_INDEX, mDailyChartIndex);
- mHourlyChartIndex =
- savedInstanceState.getInt(KEY_HOURLY_CHART_INDEX, mHourlyChartIndex);
- Log.d(TAG, String.format("onCreate() dailyIndex=%d hourlyIndex=%d",
- mDailyChartIndex, mHourlyChartIndex));
+ mDailyChartIndex = savedInstanceState.getInt(KEY_DAILY_CHART_INDEX, mDailyChartIndex);
+ mHourlyChartIndex = savedInstanceState.getInt(KEY_HOURLY_CHART_INDEX, mHourlyChartIndex);
+ Log.d(
+ TAG,
+ String.format(
+ "onCreate() dailyIndex=%d hourlyIndex=%d",
+ mDailyChartIndex, mHourlyChartIndex));
}
@Override
@@ -149,8 +146,11 @@
}
savedInstance.putInt(KEY_DAILY_CHART_INDEX, mDailyChartIndex);
savedInstance.putInt(KEY_HOURLY_CHART_INDEX, mHourlyChartIndex);
- Log.d(TAG, String.format("onSaveInstanceState() dailyIndex=%d hourlyIndex=%d",
- mDailyChartIndex, mHourlyChartIndex));
+ Log.d(
+ TAG,
+ String.format(
+ "onSaveInstanceState() dailyIndex=%d hourlyIndex=%d",
+ mDailyChartIndex, mHourlyChartIndex));
}
@Override
@@ -158,7 +158,7 @@
if (mActivity == null || mActivity.isChangingConfigurations()) {
BatteryDiffEntry.clearCache();
}
- mHandler.removeCallbacksAndMessages(/*token=*/ null);
+ mHandler.removeCallbacksAndMessages(/* token= */ null);
}
@Override
@@ -204,19 +204,22 @@
refreshUi();
return;
}
- mDailyViewModel = new BatteryChartViewModel(
- batteryLevelData.getDailyBatteryLevels().getLevels(),
- batteryLevelData.getDailyBatteryLevels().getTimestamps(),
- BatteryChartViewModel.AxisLabelPosition.CENTER_OF_TRAPEZOIDS,
- mDailyChartLabelTextGenerator);
+ mDailyViewModel =
+ new BatteryChartViewModel(
+ batteryLevelData.getDailyBatteryLevels().getLevels(),
+ batteryLevelData.getDailyBatteryLevels().getTimestamps(),
+ BatteryChartViewModel.AxisLabelPosition.CENTER_OF_TRAPEZOIDS,
+ mDailyChartLabelTextGenerator);
mHourlyViewModels = new ArrayList<>();
for (BatteryLevelData.PeriodBatteryLevelData hourlyBatteryLevelsPerDay :
batteryLevelData.getHourlyBatteryLevelsPerDay()) {
- mHourlyViewModels.add(new BatteryChartViewModel(
- hourlyBatteryLevelsPerDay.getLevels(),
- hourlyBatteryLevelsPerDay.getTimestamps(),
- BatteryChartViewModel.AxisLabelPosition.BETWEEN_TRAPEZOIDS,
- mHourlyChartLabelTextGenerator.updateSpecialCaseContext(batteryLevelData)));
+ mHourlyViewModels.add(
+ new BatteryChartViewModel(
+ hourlyBatteryLevelsPerDay.getLevels(),
+ hourlyBatteryLevelsPerDay.getTimestamps(),
+ BatteryChartViewModel.AxisLabelPosition.BETWEEN_TRAPEZOIDS,
+ mHourlyChartLabelTextGenerator.updateSpecialCaseContext(
+ batteryLevelData)));
}
refreshUi();
}
@@ -248,17 +251,21 @@
}
mDailyChartIndex = mDailyHighlightSlotIndex;
mHourlyChartIndex = mHourlyHighlightSlotIndex;
- Log.d(TAG, String.format("onDailyChartSelect:%d, onHourlyChartSelect:%d",
- mDailyChartIndex, mHourlyChartIndex));
+ Log.d(
+ TAG,
+ String.format(
+ "onDailyChartSelect:%d, onHourlyChartSelect:%d",
+ mDailyChartIndex, mHourlyChartIndex));
refreshUi();
- mHandler.post(() -> mDailyChartView.announceForAccessibility(
- getAccessibilityAnnounceMessage()));
+ mHandler.post(
+ () -> mDailyChartView.announceForAccessibility(getAccessibilityAnnounceMessage()));
if (mOnSelectedIndexUpdatedListener != null) {
mOnSelectedIndexUpdatedListener.onSelectedIndexUpdated();
}
}
- void setBatteryChartView(@NonNull final BatteryChartView dailyChartView,
+ void setBatteryChartView(
+ @NonNull final BatteryChartView dailyChartView,
@NonNull final BatteryChartView hourlyChartView) {
final View parentView = (View) dailyChartView.getParent();
if (parentView != null && parentView.getId() == R.id.battery_chart_group) {
@@ -270,58 +277,67 @@
}
if (mBatteryChartViewGroup != null) {
final View grandparentView = (View) mBatteryChartViewGroup.getParent();
- mChartSummaryTextView = grandparentView != null
- ? grandparentView.findViewById(R.id.chart_summary) : null;
+ mChartSummaryTextView =
+ grandparentView != null
+ ? grandparentView.findViewById(R.id.chart_summary)
+ : null;
}
}
- private void setBatteryChartViewInner(@NonNull final BatteryChartView dailyChartView,
+ private void setBatteryChartViewInner(
+ @NonNull final BatteryChartView dailyChartView,
@NonNull final BatteryChartView hourlyChartView) {
mDailyChartView = dailyChartView;
- mDailyChartView.setOnSelectListener(trapezoidIndex -> {
- if (mDailyChartIndex == trapezoidIndex) {
- return;
- }
- Log.d(TAG, "onDailyChartSelect:" + trapezoidIndex);
- mDailyChartIndex = trapezoidIndex;
- mHourlyChartIndex = BatteryChartViewModel.SELECTED_INDEX_ALL;
- refreshUi();
- mHandler.post(() -> mDailyChartView.announceForAccessibility(
- getAccessibilityAnnounceMessage()));
- mMetricsFeatureProvider.action(
- mPrefContext,
- trapezoidIndex == BatteryChartViewModel.SELECTED_INDEX_ALL
- ? SettingsEnums.ACTION_BATTERY_USAGE_DAILY_SHOW_ALL
- : SettingsEnums.ACTION_BATTERY_USAGE_DAILY_TIME_SLOT,
- mDailyChartIndex);
- if (mOnSelectedIndexUpdatedListener != null) {
- mOnSelectedIndexUpdatedListener.onSelectedIndexUpdated();
- }
- });
+ mDailyChartView.setOnSelectListener(
+ trapezoidIndex -> {
+ if (mDailyChartIndex == trapezoidIndex) {
+ return;
+ }
+ Log.d(TAG, "onDailyChartSelect:" + trapezoidIndex);
+ mDailyChartIndex = trapezoidIndex;
+ mHourlyChartIndex = BatteryChartViewModel.SELECTED_INDEX_ALL;
+ refreshUi();
+ mHandler.post(
+ () ->
+ mDailyChartView.announceForAccessibility(
+ getAccessibilityAnnounceMessage()));
+ mMetricsFeatureProvider.action(
+ mPrefContext,
+ trapezoidIndex == BatteryChartViewModel.SELECTED_INDEX_ALL
+ ? SettingsEnums.ACTION_BATTERY_USAGE_DAILY_SHOW_ALL
+ : SettingsEnums.ACTION_BATTERY_USAGE_DAILY_TIME_SLOT,
+ mDailyChartIndex);
+ if (mOnSelectedIndexUpdatedListener != null) {
+ mOnSelectedIndexUpdatedListener.onSelectedIndexUpdated();
+ }
+ });
mHourlyChartView = hourlyChartView;
- mHourlyChartView.setOnSelectListener(trapezoidIndex -> {
- if (mDailyChartIndex == BatteryChartViewModel.SELECTED_INDEX_ALL) {
- // This will happen when a daily slot and an hour slot are clicked together.
- return;
- }
- if (mHourlyChartIndex == trapezoidIndex) {
- return;
- }
- Log.d(TAG, "onHourlyChartSelect:" + trapezoidIndex);
- mHourlyChartIndex = trapezoidIndex;
- refreshUi();
- mHandler.post(() -> mHourlyChartView.announceForAccessibility(
- getAccessibilityAnnounceMessage()));
- mMetricsFeatureProvider.action(
- mPrefContext,
- trapezoidIndex == BatteryChartViewModel.SELECTED_INDEX_ALL
- ? SettingsEnums.ACTION_BATTERY_USAGE_SHOW_ALL
- : SettingsEnums.ACTION_BATTERY_USAGE_TIME_SLOT,
- mHourlyChartIndex);
- if (mOnSelectedIndexUpdatedListener != null) {
- mOnSelectedIndexUpdatedListener.onSelectedIndexUpdated();
- }
- });
+ mHourlyChartView.setOnSelectListener(
+ trapezoidIndex -> {
+ if (mDailyChartIndex == BatteryChartViewModel.SELECTED_INDEX_ALL) {
+ // This will happen when a daily slot and an hour slot are clicked together.
+ return;
+ }
+ if (mHourlyChartIndex == trapezoidIndex) {
+ return;
+ }
+ Log.d(TAG, "onHourlyChartSelect:" + trapezoidIndex);
+ mHourlyChartIndex = trapezoidIndex;
+ refreshUi();
+ mHandler.post(
+ () ->
+ mHourlyChartView.announceForAccessibility(
+ getAccessibilityAnnounceMessage()));
+ mMetricsFeatureProvider.action(
+ mPrefContext,
+ trapezoidIndex == BatteryChartViewModel.SELECTED_INDEX_ALL
+ ? SettingsEnums.ACTION_BATTERY_USAGE_SHOW_ALL
+ : SettingsEnums.ACTION_BATTERY_USAGE_TIME_SLOT,
+ mHourlyChartIndex);
+ if (mOnSelectedIndexUpdatedListener != null) {
+ mOnSelectedIndexUpdatedListener.onSelectedIndexUpdated();
+ }
+ });
refreshUi();
}
@@ -371,18 +387,18 @@
if (mDailyChartIndex == BatteryChartViewModel.SELECTED_INDEX_ALL) {
// Multiple days are selected, hide the hourly chart view.
- animateBatteryHourlyChartView(/*visible=*/ false);
+ animateBatteryHourlyChartView(/* visible= */ false);
} else {
- animateBatteryHourlyChartView(/*visible=*/ true);
- final BatteryChartViewModel hourlyViewModel =
- mHourlyViewModels.get(mDailyChartIndex);
+ animateBatteryHourlyChartView(/* visible= */ true);
+ final BatteryChartViewModel hourlyViewModel = mHourlyViewModels.get(mDailyChartIndex);
if (mHourlyChartIndex >= hourlyViewModel.size()) {
mHourlyChartIndex = BatteryChartViewModel.SELECTED_INDEX_ALL;
}
hourlyViewModel.setSelectedIndex(mHourlyChartIndex);
- hourlyViewModel.setHighlightSlotIndex((mDailyChartIndex == mDailyHighlightSlotIndex)
- ? mHourlyHighlightSlotIndex
- : BatteryChartViewModel.SELECTED_INDEX_INVALID);
+ hourlyViewModel.setHighlightSlotIndex(
+ (mDailyChartIndex == mDailyHighlightSlotIndex)
+ ? mHourlyHighlightSlotIndex
+ : BatteryChartViewModel.SELECTED_INDEX_INVALID);
mHourlyChartView.setViewModel(hourlyViewModel);
}
}
@@ -401,8 +417,8 @@
return selectedDayText;
}
- final String selectedHourText = mHourlyViewModels.get(mDailyChartIndex).getFullText(
- mHourlyChartIndex);
+ final String selectedHourText =
+ mHourlyViewModels.get(mDailyChartIndex).getFullText(mHourlyChartIndex);
if (isBatteryLevelDataInOneDay()) {
return selectedHourText;
}
@@ -422,7 +438,10 @@
private void animateBatteryChartViewGroup() {
if (mBatteryChartViewGroup != null && mBatteryChartViewGroup.getAlpha() == 0) {
- mBatteryChartViewGroup.animate().alpha(1f).setDuration(FADE_IN_ANIMATION_DURATION)
+ mBatteryChartViewGroup
+ .animate()
+ .alpha(1f)
+ .setDuration(FADE_IN_ANIMATION_DURATION)
.start();
}
}
@@ -435,13 +454,15 @@
if (visible) {
mHourlyChartView.setVisibility(View.VISIBLE);
- mHourlyChartView.animate()
+ mHourlyChartView
+ .animate()
.alpha(1f)
.setDuration(FADE_IN_ANIMATION_DURATION)
.setListener(mHourlyChartFadeInAdapter)
.start();
} else {
- mHourlyChartView.animate()
+ mHourlyChartView
+ .animate()
.alpha(0f)
.setDuration(FADE_OUT_ANIMATION_DURATION)
.setListener(mHourlyChartFadeOutAdapter)
@@ -467,6 +488,7 @@
mHourlyChartView.setVisibility(visibility);
}
}
+
@Override
public void onAnimationCancel(Animator animation) {
super.onAnimationCancel(animation);
@@ -483,7 +505,7 @@
private boolean isAllSelected() {
return (isBatteryLevelDataInOneDay()
- || mDailyChartIndex == BatteryChartViewModel.SELECTED_INDEX_ALL)
+ || mDailyChartIndex == BatteryChartViewModel.SELECTED_INDEX_ALL)
&& mHourlyChartIndex == BatteryChartViewModel.SELECTED_INDEX_ALL;
}
@@ -493,8 +515,9 @@
return 0;
}
List<Long> dailyTimestamps = batteryLevelData.getDailyBatteryLevels().getTimestamps();
- return (int) ((dailyTimestamps.get(dailyTimestamps.size() - 1) - dailyTimestamps.get(0))
- / DateUtils.HOUR_IN_MILLIS);
+ return (int)
+ ((dailyTimestamps.get(dailyTimestamps.size() - 1) - dailyTimestamps.get(0))
+ / DateUtils.HOUR_IN_MILLIS);
}
/** Used for {@link AppBatteryPreferenceController}. */
@@ -505,17 +528,21 @@
if (batteryHistoryMap == null || batteryHistoryMap.isEmpty()) {
return null;
}
- Log.d(TAG, String.format("getBatterySinceLastFullChargeUsageData() size=%d time=%d/ms",
- batteryHistoryMap.size(), (System.currentTimeMillis() - start)));
+ Log.d(
+ TAG,
+ String.format(
+ "getBatterySinceLastFullChargeUsageData() size=%d time=%d/ms",
+ batteryHistoryMap.size(), (System.currentTimeMillis() - start)));
final Map<Integer, Map<Integer, BatteryDiffData>> batteryUsageData =
DataProcessor.getBatteryUsageData(context, batteryHistoryMap);
if (batteryUsageData == null) {
return null;
}
- BatteryDiffData allBatteryDiffData = batteryUsageData.get(
- BatteryChartViewModel.SELECTED_INDEX_ALL).get(
- BatteryChartViewModel.SELECTED_INDEX_ALL);
+ BatteryDiffData allBatteryDiffData =
+ batteryUsageData
+ .get(BatteryChartViewModel.SELECTED_INDEX_ALL)
+ .get(BatteryChartViewModel.SELECTED_INDEX_ALL);
return allBatteryDiffData == null ? null : allBatteryDiffData.getAppDiffEntryList();
}
@@ -546,23 +573,23 @@
return null;
}
- private final class DailyChartLabelTextGenerator implements
- BatteryChartViewModel.LabelTextGenerator {
+ private final class DailyChartLabelTextGenerator
+ implements BatteryChartViewModel.LabelTextGenerator {
@Override
public String generateText(List<Long> timestamps, int index) {
- return ConvertUtils.utcToLocalTimeDayOfWeek(mContext,
- timestamps.get(index), /* isAbbreviation= */ true);
+ return ConvertUtils.utcToLocalTimeDayOfWeek(
+ mContext, timestamps.get(index), /* isAbbreviation= */ true);
}
@Override
public String generateFullText(List<Long> timestamps, int index) {
- return ConvertUtils.utcToLocalTimeDayOfWeek(mContext,
- timestamps.get(index), /* isAbbreviation= */ false);
+ return ConvertUtils.utcToLocalTimeDayOfWeek(
+ mContext, timestamps.get(index), /* isAbbreviation= */ false);
}
}
- private final class HourlyChartLabelTextGenerator implements
- BatteryChartViewModel.LabelTextGenerator {
+ private final class HourlyChartLabelTextGenerator
+ implements BatteryChartViewModel.LabelTextGenerator {
private static final int FULL_CHARGE_BATTERY_LEVEL = 100;
private boolean mIsFromFullCharge;
@@ -593,8 +620,10 @@
public String generateFullText(List<Long> timestamps, int index) {
return index == timestamps.size() - 1
? generateText(timestamps, index)
- : mContext.getString(R.string.battery_usage_timestamps_hyphen,
- generateText(timestamps, index), generateText(timestamps, index + 1));
+ : mContext.getString(
+ R.string.battery_usage_timestamps_hyphen,
+ generateText(timestamps, index),
+ generateText(timestamps, index + 1));
}
HourlyChartLabelTextGenerator updateSpecialCaseContext(
@@ -604,8 +633,10 @@
this.mIsFromFullCharge =
firstDayLevelData.getLevels().get(0) == FULL_CHARGE_BATTERY_LEVEL;
this.mFistTimestamp = firstDayLevelData.getTimestamps().get(0);
- this.mLatestTimestamp = getLast(getLast(
- batteryLevelData.getHourlyBatteryLevelsPerDay()).getTimestamps());
+ this.mLatestTimestamp =
+ getLast(
+ getLast(batteryLevelData.getHourlyBatteryLevelsPerDay())
+ .getTimestamps());
return this;
}
}
diff --git a/src/com/android/settings/fuelgauge/batteryusage/BatteryChartView.java b/src/com/android/settings/fuelgauge/batteryusage/BatteryChartView.java
index bb468fe..ad5d420 100644
--- a/src/com/android/settings/fuelgauge/batteryusage/BatteryChartView.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/BatteryChartView.java
@@ -74,7 +74,7 @@
private final String[] mPercentages = getPercentages();
private final Rect mIndent = new Rect();
- private final Rect[] mPercentageBounds = new Rect[]{new Rect(), new Rect(), new Rect()};
+ private final Rect[] mPercentageBounds = new Rect[] {new Rect(), new Rect(), new Rect()};
private final List<Rect> mAxisLabelsBounds = new ArrayList<>();
private final Set<Integer> mLabelDrawnIndexes = new ArraySet<>();
private final int mLayoutDirection =
@@ -106,11 +106,9 @@
private AccessibilityNodeProvider mAccessibilityNodeProvider;
private BatteryChartView.OnSelectListener mOnSelectListener;
- @VisibleForTesting
- TrapezoidSlot[] mTrapezoidSlots;
+ @VisibleForTesting TrapezoidSlot[] mTrapezoidSlots;
// Records the location to calculate selected index.
- @VisibleForTesting
- float mTouchUpEventX = Float.MIN_VALUE;
+ @VisibleForTesting float mTouchUpEventX = Float.MIN_VALUE;
public BatteryChartView(Context context) {
super(context, null);
@@ -133,9 +131,13 @@
return;
}
- Log.d(TAG, String.format(
- "setViewModel(): size: %d, selectedIndex: %d, getHighlightSlotIndex: %d",
- viewModel.size(), viewModel.selectedIndex(), viewModel.getHighlightSlotIndex()));
+ Log.d(
+ TAG,
+ String.format(
+ "setViewModel(): size: %d, selectedIndex: %d, getHighlightSlotIndex: %d",
+ viewModel.size(),
+ viewModel.selectedIndex(),
+ viewModel.getHighlightSlotIndex()));
mViewModel = viewModel;
initializeAxisLabelsBounds();
initializeTrapezoidSlots(viewModel.size() - 1);
@@ -169,7 +171,9 @@
mTextPaint.setTextAlign(Paint.Align.LEFT);
for (int index = 0; index < mPercentages.length; index++) {
mTextPaint.getTextBounds(
- mPercentages[index], 0, mPercentages[index].length(),
+ mPercentages[index],
+ 0,
+ mPercentages[index].length(),
mPercentageBounds[index]);
}
// Updates the indent configurations.
@@ -292,7 +296,8 @@
// Selects all if users click the same trapezoid item two times.
mOnSelectListener.onSelect(
index == mViewModel.selectedIndex()
- ? BatteryChartViewModel.SELECTED_INDEX_ALL : index);
+ ? BatteryChartViewModel.SELECTED_INDEX_ALL
+ : index);
}
view.performHapticFeedback(HapticFeedbackConstants.CONTEXT_CLICK);
}
@@ -327,8 +332,9 @@
setBackgroundColor(Color.TRANSPARENT);
mTrapezoidSolidColor = Utils.getColorAccentDefaultColor(context);
mTrapezoidColor = Utils.getDisabled(context, mTrapezoidSolidColor);
- mTrapezoidHoverColor = Utils.getColorAttrDefaultColor(context,
- com.android.internal.R.attr.materialColorSecondaryContainer);
+ mTrapezoidHoverColor =
+ Utils.getColorAttrDefaultColor(
+ context, com.android.internal.R.attr.materialColorSecondaryContainer);
// Initializes the divider line paint.
final Resources resources = getContext().getResources();
mDividerWidth = resources.getDimensionPixelSize(R.dimen.chartview_divider_width);
@@ -353,25 +359,26 @@
// Initializes for drawing text information.
mTextPadding = resources.getDimensionPixelSize(R.dimen.chartview_text_padding);
// Initializes the padding top for drawing text information.
- mTransomViewHeight = resources.getDimensionPixelSize(
- R.dimen.chartview_transom_layout_height);
+ mTransomViewHeight =
+ resources.getDimensionPixelSize(R.dimen.chartview_transom_layout_height);
}
private void initializeTransomPaint() {
- if (mTransomLinePaint != null && mTransomSelectedSlotPaint != null
+ if (mTransomLinePaint != null
+ && mTransomSelectedSlotPaint != null
&& mTransomIcon != null) {
return;
}
// Initializes the transom line paint.
final Resources resources = getContext().getResources();
- final int transomLineWidth = resources.getDimensionPixelSize(
- R.dimen.chartview_transom_width);
+ final int transomLineWidth =
+ resources.getDimensionPixelSize(R.dimen.chartview_transom_width);
final int transomRadius = resources.getDimensionPixelSize(R.dimen.chartview_transom_radius);
mTransomPadding = transomRadius * .5f;
mTransomTop = resources.getDimensionPixelSize(R.dimen.chartview_transom_padding_top);
mTransomLineDefaultColor = Utils.getDisabled(mContext, DIVIDER_COLOR);
- mTransomLineSelectedColor = resources.getColor(
- R.color.color_battery_anomaly_yellow_selector);
+ mTransomLineSelectedColor =
+ resources.getColor(R.color.color_battery_anomaly_yellow_selector);
final int slotHighlightColor = Utils.getDisabled(mContext, mTransomLineSelectedColor);
mTransomIconSize = resources.getDimensionPixelSize(R.dimen.chartview_transom_icon_size);
mTransomLinePaint = new Paint();
@@ -396,18 +403,16 @@
final float availableSpace = bottomOffsetY - topOffsetY;
mDividerPaint.setColor(DIVIDER_COLOR);
- final float dividerOffsetUnit =
- availableSpace / (float) (HORIZONTAL_DIVIDER_COUNT - 1);
+ final float dividerOffsetUnit = availableSpace / (float) (HORIZONTAL_DIVIDER_COUNT - 1);
// Draws 5 divider lines.
for (int index = 0; index < HORIZONTAL_DIVIDER_COUNT; index++) {
float offsetY = topOffsetY + dividerOffsetUnit * index;
- canvas.drawLine(mIndent.left, offsetY,
- mIndent.left + width, offsetY, mDividerPaint);
+ canvas.drawLine(mIndent.left, offsetY, mIndent.left + width, offsetY, mDividerPaint);
// Draws percentage text only for 100% / 50% / 0%
if (index % 2 == 0) {
- drawPercentage(canvas, /*index=*/ (index + 1) / 2, offsetY);
+ drawPercentage(canvas, /* index= */ (index + 1) / 2, offsetY);
}
}
}
@@ -438,21 +443,23 @@
Rect[] axisLabelDisplayAreas;
switch (mViewModel.axisLabelPosition()) {
case CENTER_OF_TRAPEZOIDS:
- axisLabelDisplayAreas = getAxisLabelDisplayAreas(
- /* size= */ mViewModel.size() - 1,
- /* baselineX= */ mIndent.left + mDividerWidth + unitWidth * .5f,
- /* offsetX= */ mDividerWidth + unitWidth,
- baselineY,
- /* shiftFirstAndLast= */ false);
+ axisLabelDisplayAreas =
+ getAxisLabelDisplayAreas(
+ /* size= */ mViewModel.size() - 1,
+ /* baselineX= */ mIndent.left + mDividerWidth + unitWidth * .5f,
+ /* offsetX= */ mDividerWidth + unitWidth,
+ baselineY,
+ /* shiftFirstAndLast= */ false);
break;
case BETWEEN_TRAPEZOIDS:
default:
- axisLabelDisplayAreas = getAxisLabelDisplayAreas(
- /* size= */ mViewModel.size(),
- /* baselineX= */ mIndent.left + mDividerWidth * .5f,
- /* offsetX= */ mDividerWidth + unitWidth,
- baselineY,
- /* shiftFirstAndLast= */ true);
+ axisLabelDisplayAreas =
+ getAxisLabelDisplayAreas(
+ /* size= */ mViewModel.size(),
+ /* baselineX= */ mIndent.left + mDividerWidth * .5f,
+ /* offsetX= */ mDividerWidth + unitWidth,
+ baselineY,
+ /* shiftFirstAndLast= */ true);
break;
}
drawAxisLabels(canvas, axisLabelDisplayAreas, baselineY);
@@ -481,8 +488,12 @@
}
/** Gets all the axis label texts displaying area positions if they are shown. */
- private Rect[] getAxisLabelDisplayAreas(final int size, final float baselineX,
- final float offsetX, final float baselineY, final boolean shiftFirstAndLast) {
+ private Rect[] getAxisLabelDisplayAreas(
+ final int size,
+ final float baselineX,
+ final float offsetX,
+ final float baselineY,
+ final boolean shiftFirstAndLast) {
final Rect[] result = new Rect[size];
for (int index = 0; index < result.length; index++) {
final float width = mAxisLabelsBounds.get(index).width();
@@ -522,8 +533,11 @@
* labels and then recursively draw the 3 parts. If there are any overlaps, skip drawing and go
* back to the uplevel of the recursion.
*/
- private void drawAxisLabelsBetweenStartIndexAndEndIndex(Canvas canvas,
- final Rect[] displayAreas, final int startIndex, final int endIndex,
+ private void drawAxisLabelsBetweenStartIndexAndEndIndex(
+ Canvas canvas,
+ final Rect[] displayAreas,
+ final int startIndex,
+ final int endIndex,
final float baselineY) {
if (endIndex - startIndex <= 1) {
return;
@@ -576,15 +590,12 @@
mTextPaint.setTextAlign(Paint.Align.CENTER);
// Reverse the sort of axis labels for RTL
if (isRTL()) {
- index = mViewModel.axisLabelPosition() == BETWEEN_TRAPEZOIDS
- ? mViewModel.size() - index - 1 // for hourly
- : mViewModel.size() - index - 2; // for daily
+ index =
+ mViewModel.axisLabelPosition() == BETWEEN_TRAPEZOIDS
+ ? mViewModel.size() - index - 1 // for hourly
+ : mViewModel.size() - index - 2; // for daily
}
- canvas.drawText(
- mViewModel.getText(index),
- displayArea.centerX(),
- baselineY,
- mTextPaint);
+ canvas.drawText(mViewModel.getText(index), displayArea.centerX(), baselineY, mTextPaint);
mLabelDrawnIndexes.add(index);
}
@@ -594,8 +605,7 @@
return;
}
final float trapezoidBottom =
- getHeight() - mIndent.bottom - mDividerHeight - mDividerWidth
- - mTrapezoidVOffset;
+ getHeight() - mIndent.bottom - mDividerHeight - mDividerWidth - mTrapezoidVOffset;
final float availableSpace =
trapezoidBottom - mDividerWidth * .5f - mIndent.top - mTrapezoidVOffset;
final float unitHeight = availableSpace / 100f;
@@ -608,17 +618,24 @@
continue;
}
// Configures the trapezoid paint color.
- final int trapezoidColor = (mViewModel.selectedIndex() == index
- || mViewModel.selectedIndex() == BatteryChartViewModel.SELECTED_INDEX_ALL)
- ? mTrapezoidSolidColor : mTrapezoidColor;
- final boolean isHoverState = mHoveredIndex == index && isValidToDraw(mViewModel,
- mHoveredIndex);
+ final int trapezoidColor =
+ (mViewModel.selectedIndex() == index
+ || mViewModel.selectedIndex()
+ == BatteryChartViewModel.SELECTED_INDEX_ALL)
+ ? mTrapezoidSolidColor
+ : mTrapezoidColor;
+ final boolean isHoverState =
+ mHoveredIndex == index && isValidToDraw(mViewModel, mHoveredIndex);
mTrapezoidPaint.setColor(isHoverState ? mTrapezoidHoverColor : trapezoidColor);
- float leftTop = round(
- trapezoidBottom - requireNonNull(mViewModel.getLevel(index)) * unitHeight);
- float rightTop = round(trapezoidBottom
- - requireNonNull(mViewModel.getLevel(index + 1)) * unitHeight);
+ float leftTop =
+ round(
+ trapezoidBottom
+ - requireNonNull(mViewModel.getLevel(index)) * unitHeight);
+ float rightTop =
+ round(
+ trapezoidBottom
+ - requireNonNull(mViewModel.getLevel(index + 1)) * unitHeight);
// Mirror the shape of the trapezoid for RTL
if (isRTL()) {
float temp = leftTop;
@@ -639,8 +656,9 @@
}
private boolean isHighlightSlotValid() {
- return mViewModel != null && mViewModel.getHighlightSlotIndex()
- != BatteryChartViewModel.SELECTED_INDEX_INVALID;
+ return mViewModel != null
+ && mViewModel.getHighlightSlotIndex()
+ != BatteryChartViewModel.SELECTED_INDEX_INVALID;
}
private void drawTransomLine(Canvas canvas) {
@@ -652,10 +670,13 @@
mTransomLinePaint.setColor(mTransomLineDefaultColor);
final int width = getWidth() - abs(mIndent.width());
final float transomOffset = mTrapezoidHOffset + mDividerWidth * .5f + mTransomPadding;
- final float trapezoidBottom = getHeight() - mIndent.bottom - mDividerHeight - mDividerWidth
- - mTrapezoidVOffset;
- canvas.drawLine(mIndent.left + transomOffset, mTransomTop,
- mIndent.left + width - transomOffset, mTransomTop,
+ final float trapezoidBottom =
+ getHeight() - mIndent.bottom - mDividerHeight - mDividerWidth - mTrapezoidVOffset;
+ canvas.drawLine(
+ mIndent.left + transomOffset,
+ mTransomTop,
+ mIndent.left + width - transomOffset,
+ mTransomTop,
mTransomLinePaint);
drawTransomIcon(canvas);
// Draw selected segment of transom line and a highlight slot
@@ -663,22 +684,28 @@
final int index = mViewModel.getHighlightSlotIndex();
final float startX = mTrapezoidSlots[index].mLeft;
final float endX = mTrapezoidSlots[index].mRight;
- canvas.drawLine(startX + mTransomPadding, mTransomTop,
- endX - mTransomPadding, mTransomTop,
+ canvas.drawLine(
+ startX + mTransomPadding,
+ mTransomTop,
+ endX - mTransomPadding,
+ mTransomTop,
mTransomLinePaint);
- canvas.drawRect(startX, mTransomTop, endX, trapezoidBottom,
- mTransomSelectedSlotPaint);
+ canvas.drawRect(startX, mTransomTop, endX, trapezoidBottom, mTransomSelectedSlotPaint);
}
private void drawTransomIcon(Canvas canvas) {
if (mTransomIcon == null) {
return;
}
- final int left = isRTL()
- ? mIndent.left - mTextPadding - mTransomIconSize
- : getWidth() - abs(mIndent.width()) + mTextPadding;
- mTransomIcon.setBounds(left, mTransomTop - mTransomIconSize / 2,
- left + mTransomIconSize, mTransomTop + mTransomIconSize / 2);
+ final int left =
+ isRTL()
+ ? mIndent.left - mTextPadding - mTransomIconSize
+ : getWidth() - abs(mIndent.width()) + mTextPadding;
+ mTransomIcon.setBounds(
+ left,
+ mTransomTop - mTransomIconSize / 2,
+ left + mTransomIconSize,
+ mTransomTop + mTransomIconSize / 2);
mTransomIcon.draw(canvas);
}
@@ -689,8 +716,7 @@
}
for (int index = 0; index < mTrapezoidSlots.length; index++) {
final TrapezoidSlot slot = mTrapezoidSlots[index];
- if (x >= slot.mLeft - mTrapezoidHOffset
- && x <= slot.mRight + mTrapezoidHOffset) {
+ if (x >= slot.mLeft - mTrapezoidHOffset && x <= slot.mRight + mTrapezoidHOffset) {
return index;
}
}
@@ -712,9 +738,7 @@
private static boolean isTrapezoidIndexValid(
@NonNull BatteryChartViewModel viewModel, int trapezoidIndex) {
- return viewModel != null
- && trapezoidIndex >= 0
- && trapezoidIndex < viewModel.size() - 1;
+ return viewModel != null && trapezoidIndex >= 0 && trapezoidIndex < viewModel.size() - 1;
}
private static boolean isValidToDraw(BatteryChartViewModel viewModel, int trapezoidIndex) {
@@ -733,10 +757,11 @@
}
private static String[] getPercentages() {
- return new String[]{
- formatPercentage(/*percentage=*/ 100, /*round=*/ true),
- formatPercentage(/*percentage=*/ 50, /*round=*/ true),
- formatPercentage(/*percentage=*/ 0, /*round=*/ true)};
+ return new String[] {
+ formatPercentage(/* percentage= */ 100, /* round= */ true),
+ formatPercentage(/* percentage= */ 50, /* round= */ true),
+ formatPercentage(/* percentage= */ 0, /* round= */ true)
+ };
}
private class BatteryChartAccessibilityNodeProvider extends AccessibilityNodeProvider {
@@ -772,8 +797,7 @@
}
@Override
- public boolean performAction(int virtualViewId, int action,
- @Nullable Bundle arguments) {
+ public boolean performAction(int virtualViewId, int action, @Nullable Bundle arguments) {
if (virtualViewId == AccessibilityNodeProvider.HOST_VIEW_ID) {
return performAccessibilityAction(action, arguments);
}
@@ -783,11 +807,12 @@
return true;
case AccessibilityNodeInfo.ACTION_ACCESSIBILITY_FOCUS:
- return sendAccessibilityEvent(virtualViewId,
- AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUSED);
+ return sendAccessibilityEvent(
+ virtualViewId, AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUSED);
case AccessibilityNodeInfo.ACTION_CLEAR_ACCESSIBILITY_FOCUS:
- return sendAccessibilityEvent(virtualViewId,
+ return sendAccessibilityEvent(
+ virtualViewId,
AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUS_CLEARED);
default:
diff --git a/src/com/android/settings/fuelgauge/batteryusage/BatteryChartViewModel.java b/src/com/android/settings/fuelgauge/batteryusage/BatteryChartViewModel.java
index bf8a771..6ec01a4 100644
--- a/src/com/android/settings/fuelgauge/batteryusage/BatteryChartViewModel.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/BatteryChartViewModel.java
@@ -57,14 +57,18 @@
private int mSelectedIndex = SELECTED_INDEX_ALL;
private int mHighlightSlotIndex = SELECTED_INDEX_INVALID;
- BatteryChartViewModel(@NonNull List<Integer> levels, @NonNull List<Long> timestamps,
+ BatteryChartViewModel(
+ @NonNull List<Integer> levels,
+ @NonNull List<Long> timestamps,
@NonNull AxisLabelPosition axisLabelPosition,
@NonNull LabelTextGenerator labelTextGenerator) {
Preconditions.checkArgument(
levels.size() == timestamps.size() && levels.size() >= MIN_LEVELS_DATA_SIZE,
- String.format(Locale.ENGLISH,
+ String.format(
+ Locale.ENGLISH,
"Invalid BatteryChartViewModel levels.size: %d, timestamps.size: %d.",
- levels.size(), timestamps.size()));
+ levels.size(),
+ timestamps.size()));
mLevels = levels;
mTimestamps = timestamps;
mAxisLabelPosition = axisLabelPosition;
diff --git a/src/com/android/settings/fuelgauge/batteryusage/BatteryDiffEntry.java b/src/com/android/settings/fuelgauge/batteryusage/BatteryDiffEntry.java
index b186c60..a8be398 100644
--- a/src/com/android/settings/fuelgauge/batteryusage/BatteryDiffEntry.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/BatteryDiffEntry.java
@@ -64,8 +64,7 @@
private static final Map<String, Pair<Integer, Integer>> SPECIAL_ENTRY_MAP =
Map.of(
SYSTEM_APPS_KEY,
- Pair.create(
- R.string.battery_usage_system_apps, R.drawable.ic_power_system),
+ Pair.create(R.string.battery_usage_system_apps, R.drawable.ic_power_system),
UNINSTALLED_APPS_KEY,
Pair.create(
R.string.battery_usage_uninstalled_apps,
@@ -100,16 +99,11 @@
private UserManager mUserManager;
private String mDefaultPackageName = null;
- @VisibleForTesting
- int mAppIconId;
- @VisibleForTesting
- String mAppLabel = null;
- @VisibleForTesting
- Drawable mAppIcon = null;
- @VisibleForTesting
- boolean mIsLoaded = false;
- @VisibleForTesting
- boolean mValidForRestriction = true;
+ @VisibleForTesting int mAppIconId;
+ @VisibleForTesting String mAppLabel = null;
+ @VisibleForTesting Drawable mAppIcon = null;
+ @VisibleForTesting boolean mIsLoaded = false;
+ @VisibleForTesting boolean mValidForRestriction = true;
public BatteryDiffEntry(
Context context,
@@ -150,12 +144,24 @@
}
public BatteryDiffEntry(Context context, String key, String legacyLabel, int consumerType) {
- this(context, /*uid=*/ 0, /*userId=*/ 0, key, /*isHidden=*/ false, /*componentId=*/ -1,
- /*legacyPackageName=*/ null, legacyLabel, consumerType,
- /*foregroundUsageTimeInMs=*/ 0, /*backgroundUsageTimeInMs=*/ 0,
- /*screenOnTimeInMs=*/ 0, /*consumePower=*/ 0, /*foregroundUsageConsumePower=*/ 0,
- /*foregroundServiceUsageConsumePower=*/ 0, /*backgroundUsageConsumePower=*/ 0,
- /*cachedUsageConsumePower=*/ 0);
+ this(
+ context,
+ /* uid= */ 0,
+ /* userId= */ 0,
+ key,
+ /* isHidden= */ false,
+ /* componentId= */ -1,
+ /* legacyPackageName= */ null,
+ legacyLabel,
+ consumerType,
+ /* foregroundUsageTimeInMs= */ 0,
+ /* backgroundUsageTimeInMs= */ 0,
+ /* screenOnTimeInMs= */ 0,
+ /* consumePower= */ 0,
+ /* foregroundUsageConsumePower= */ 0,
+ /* foregroundServiceUsageConsumePower= */ 0,
+ /* backgroundUsageConsumePower= */ 0,
+ /* cachedUsageConsumePower= */ 0);
}
/** Sets the total consumed power in a specific time slot. */
@@ -286,7 +292,8 @@
/** Whether the current BatteryDiffEntry is uninstalled app or not. */
public boolean isUninstalledEntry() {
final String packageName = getPackageName();
- if (TextUtils.isEmpty(packageName) || isSystemEntry()
+ if (TextUtils.isEmpty(packageName)
+ || isSystemEntry()
// Some special package UIDs could be 0. Those packages are not installed by users.
|| mUid == BatteryUtils.UID_ZERO) {
return false;
@@ -468,8 +475,9 @@
mAppIcon = nameAndIcon.mIcon;
}
- final BatteryEntry.NameAndIcon nameAndIcon = BatteryEntry.loadNameAndIcon(
- mContext, uid, /*batteryEntry=*/ null, packageName, mAppLabel, mAppIcon);
+ final BatteryEntry.NameAndIcon nameAndIcon =
+ BatteryEntry.loadNameAndIcon(
+ mContext, uid, /* batteryEntry= */ null, packageName, mAppLabel, mAppIcon);
// Clears BatteryEntry internal cache since we will have another one.
BatteryEntry.clearUidCache();
if (nameAndIcon != null) {
@@ -489,25 +497,48 @@
@Override
public String toString() {
- final StringBuilder builder = new StringBuilder()
- .append("BatteryDiffEntry{")
- .append(String.format("\n\tname=%s restrictable=%b",
- mAppLabel, mValidForRestriction))
- .append(String.format("\n\tconsume=%.2f%% %f/%f",
- mPercentage, mConsumePower, mTotalConsumePower))
- .append(String.format("\n\tconsume power= foreground:%f foregroundService:%f",
- mForegroundUsageConsumePower, mForegroundServiceUsageConsumePower))
- .append(String.format("\n\tconsume power= background:%f cached:%f",
- mBackgroundUsageConsumePower, mCachedUsageConsumePower))
- .append(String.format("\n\ttime= foreground:%s background:%s screen-on:%s",
- StringUtil.formatElapsedTime(mContext, (double) mForegroundUsageTimeInMs,
- /*withSeconds=*/ true, /*collapseTimeUnit=*/ false),
- StringUtil.formatElapsedTime(mContext, (double) mBackgroundUsageTimeInMs,
- /*withSeconds=*/ true, /*collapseTimeUnit=*/ false),
- StringUtil.formatElapsedTime(mContext, (double) mScreenOnTimeInMs,
- /*withSeconds=*/ true, /*collapseTimeUnit=*/ false)))
- .append(String.format("\n\tpackage:%s|%s uid:%d userId:%d",
- mLegacyPackageName, getPackageName(), mUid, mUserId));
+ final StringBuilder builder =
+ new StringBuilder()
+ .append("BatteryDiffEntry{")
+ .append(
+ String.format(
+ "\n\tname=%s restrictable=%b",
+ mAppLabel, mValidForRestriction))
+ .append(
+ String.format(
+ "\n\tconsume=%.2f%% %f/%f",
+ mPercentage, mConsumePower, mTotalConsumePower))
+ .append(
+ String.format(
+ "\n\tconsume power= foreground:%f foregroundService:%f",
+ mForegroundUsageConsumePower,
+ mForegroundServiceUsageConsumePower))
+ .append(
+ String.format(
+ "\n\tconsume power= background:%f cached:%f",
+ mBackgroundUsageConsumePower, mCachedUsageConsumePower))
+ .append(
+ String.format(
+ "\n\ttime= foreground:%s background:%s screen-on:%s",
+ StringUtil.formatElapsedTime(
+ mContext,
+ (double) mForegroundUsageTimeInMs,
+ /* withSeconds= */ true,
+ /* collapseTimeUnit= */ false),
+ StringUtil.formatElapsedTime(
+ mContext,
+ (double) mBackgroundUsageTimeInMs,
+ /* withSeconds= */ true,
+ /* collapseTimeUnit= */ false),
+ StringUtil.formatElapsedTime(
+ mContext,
+ (double) mScreenOnTimeInMs,
+ /* withSeconds= */ true,
+ /* collapseTimeUnit= */ false)))
+ .append(
+ String.format(
+ "\n\tpackage:%s|%s uid:%d userId:%d",
+ mLegacyPackageName, getPackageName(), mUid, mUserId));
return builder.toString();
}
diff --git a/src/com/android/settings/fuelgauge/batteryusage/BatteryEntry.java b/src/com/android/settings/fuelgauge/batteryusage/BatteryEntry.java
index 5d87302..751e7ad 100644
--- a/src/com/android/settings/fuelgauge/batteryusage/BatteryEntry.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/BatteryEntry.java
@@ -45,8 +45,7 @@
import java.util.Locale;
/**
- * Wraps the power usage data of a BatterySipper with information about package name
- * and icon image.
+ * Wraps the power usage data of a BatterySipper with information about package name and icon image.
*/
public class BatteryEntry {
@@ -58,11 +57,10 @@
public final int mIconId;
public NameAndIcon(String name, Drawable icon, int iconId) {
- this(name, /*packageName=*/ null, icon, iconId);
+ this(name, /* packageName= */ null, icon, iconId);
}
- public NameAndIcon(
- String name, String packageName, Drawable icon, int iconId) {
+ public NameAndIcon(String name, String packageName, Drawable icon, int iconId) {
this.mName = name;
this.mIcon = icon;
this.mIconId = iconId;
@@ -78,17 +76,20 @@
static final int BATTERY_USAGE_INDEX_BACKGROUND = 2;
static final int BATTERY_USAGE_INDEX_CACHED = 3;
- static final Dimensions[] BATTERY_DIMENSIONS = new Dimensions[] {
- new Dimensions(
- BatteryConsumer.POWER_COMPONENT_ANY, BatteryConsumer.PROCESS_STATE_FOREGROUND),
- new Dimensions(
- BatteryConsumer.POWER_COMPONENT_ANY,
- BatteryConsumer.PROCESS_STATE_FOREGROUND_SERVICE),
- new Dimensions(
- BatteryConsumer.POWER_COMPONENT_ANY, BatteryConsumer.PROCESS_STATE_BACKGROUND),
- new Dimensions(
- BatteryConsumer.POWER_COMPONENT_ANY, BatteryConsumer.PROCESS_STATE_CACHED),
- };
+ static final Dimensions[] BATTERY_DIMENSIONS =
+ new Dimensions[] {
+ new Dimensions(
+ BatteryConsumer.POWER_COMPONENT_ANY,
+ BatteryConsumer.PROCESS_STATE_FOREGROUND),
+ new Dimensions(
+ BatteryConsumer.POWER_COMPONENT_ANY,
+ BatteryConsumer.PROCESS_STATE_FOREGROUND_SERVICE),
+ new Dimensions(
+ BatteryConsumer.POWER_COMPONENT_ANY,
+ BatteryConsumer.PROCESS_STATE_BACKGROUND),
+ new Dimensions(
+ BatteryConsumer.POWER_COMPONENT_ANY, BatteryConsumer.PROCESS_STATE_CACHED),
+ };
static final ArrayMap<String, UidToDetail> sUidCache = new ArrayMap<>();
@@ -106,10 +107,8 @@
private final BatteryConsumer mBatteryConsumer;
private final int mUid;
private final boolean mIsHidden;
- @ConvertUtils.ConsumerType
- private final int mConsumerType;
- @BatteryConsumer.PowerComponent
- private final int mPowerComponentId;
+ @ConvertUtils.ConsumerType private final int mConsumerType;
+ @BatteryConsumer.PowerComponent private final int mPowerComponentId;
private long mUsageDurationMs;
private long mTimeInForegroundMs;
private long mTimeInBackgroundMs;
@@ -131,13 +130,25 @@
Drawable mIcon;
}
- public BatteryEntry(Context context, UserManager um, BatteryConsumer batteryConsumer,
- boolean isHidden, int uid, String[] packages, String packageName) {
+ public BatteryEntry(
+ Context context,
+ UserManager um,
+ BatteryConsumer batteryConsumer,
+ boolean isHidden,
+ int uid,
+ String[] packages,
+ String packageName) {
this(context, um, batteryConsumer, isHidden, uid, packages, packageName, true);
}
- public BatteryEntry(Context context, UserManager um, BatteryConsumer batteryConsumer,
- boolean isHidden, int uid, String[] packages, String packageName,
+ public BatteryEntry(
+ Context context,
+ UserManager um,
+ BatteryConsumer batteryConsumer,
+ boolean isHidden,
+ int uid,
+ String[] packages,
+ String packageName,
boolean loadDataInBackground) {
mContext = context;
mBatteryConsumer = batteryConsumer;
@@ -156,8 +167,10 @@
if (packages != null && packages.length == 1) {
mDefaultPackageName = packages[0];
} else {
- mDefaultPackageName = isSystemUid(uid)
- ? PACKAGE_SYSTEM : uidBatteryConsumer.getPackageWithHighestDrain();
+ mDefaultPackageName =
+ isSystemUid(uid)
+ ? PACKAGE_SYSTEM
+ : uidBatteryConsumer.getPackageWithHighestDrain();
}
}
if (mDefaultPackageName != null) {
@@ -167,8 +180,10 @@
pm.getApplicationInfo(mDefaultPackageName, 0 /* no flags */);
mName = pm.getApplicationLabel(appInfo).toString();
} catch (NameNotFoundException e) {
- Log.d(TAG, "PackageManager failed to retrieve ApplicationInfo for: "
- + mDefaultPackageName);
+ Log.d(
+ TAG,
+ "PackageManager failed to retrieve ApplicationInfo for: "
+ + mDefaultPackageName);
mName = mDefaultPackageName;
}
}
@@ -176,20 +191,26 @@
uidBatteryConsumer.getTimeInStateMs(UidBatteryConsumer.STATE_FOREGROUND);
mTimeInBackgroundMs =
uidBatteryConsumer.getTimeInStateMs(UidBatteryConsumer.STATE_BACKGROUND);
- mConsumedPowerInForeground = safeGetConsumedPower(
- uidBatteryConsumer, BATTERY_DIMENSIONS[BATTERY_USAGE_INDEX_FOREGROUND]);
- mConsumedPowerInForegroundService = safeGetConsumedPower(
- uidBatteryConsumer, BATTERY_DIMENSIONS[BATTERY_USAGE_INDEX_FOREGROUND_SERVICE]);
- mConsumedPowerInBackground = safeGetConsumedPower(
- uidBatteryConsumer, BATTERY_DIMENSIONS[BATTERY_USAGE_INDEX_BACKGROUND]);
- mConsumedPowerInCached = safeGetConsumedPower(
- uidBatteryConsumer, BATTERY_DIMENSIONS[BATTERY_USAGE_INDEX_CACHED]);
+ mConsumedPowerInForeground =
+ safeGetConsumedPower(
+ uidBatteryConsumer, BATTERY_DIMENSIONS[BATTERY_USAGE_INDEX_FOREGROUND]);
+ mConsumedPowerInForegroundService =
+ safeGetConsumedPower(
+ uidBatteryConsumer,
+ BATTERY_DIMENSIONS[BATTERY_USAGE_INDEX_FOREGROUND_SERVICE]);
+ mConsumedPowerInBackground =
+ safeGetConsumedPower(
+ uidBatteryConsumer, BATTERY_DIMENSIONS[BATTERY_USAGE_INDEX_BACKGROUND]);
+ mConsumedPowerInCached =
+ safeGetConsumedPower(
+ uidBatteryConsumer, BATTERY_DIMENSIONS[BATTERY_USAGE_INDEX_CACHED]);
} else if (batteryConsumer instanceof UserBatteryConsumer) {
mUid = Process.INVALID_UID;
mConsumerType = ConvertUtils.CONSUMER_TYPE_USER_BATTERY;
mConsumedPower = batteryConsumer.getConsumedPower();
- final NameAndIcon nameAndIcon = getNameAndIconFromUserId(
- context, ((UserBatteryConsumer) batteryConsumer).getUserId());
+ final NameAndIcon nameAndIcon =
+ getNameAndIconFromUserId(
+ context, ((UserBatteryConsumer) batteryConsumer).getUserId());
mIcon = nameAndIcon.mIcon;
mName = nameAndIcon.mName;
} else {
@@ -198,8 +219,12 @@
}
/** Battery entry for a power component of AggregateBatteryConsumer */
- public BatteryEntry(Context context, int powerComponentId, double devicePowerMah,
- long usageDurationMs, boolean isHidden) {
+ public BatteryEntry(
+ Context context,
+ int powerComponentId,
+ double devicePowerMah,
+ long usageDurationMs,
+ boolean isHidden) {
mContext = context;
mBatteryConsumer = null;
mUid = Process.INVALID_UID;
@@ -209,8 +234,7 @@
mUsageDurationMs = usageDurationMs;
mConsumerType = ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY;
- final NameAndIcon nameAndIcon =
- getNameAndIconFromPowerComponent(context, powerComponentId);
+ final NameAndIcon nameAndIcon = getNameAndIconFromPowerComponent(context, powerComponentId);
mIconId = nameAndIcon.mIconId;
mName = nameAndIcon.mName;
if (mIconId != 0) {
@@ -219,7 +243,10 @@
}
/** Battery entry for a custom power component of AggregateBatteryConsumer */
- public BatteryEntry(Context context, int powerComponentId, String powerComponentName,
+ public BatteryEntry(
+ Context context,
+ int powerComponentId,
+ String powerComponentName,
double devicePowerMah) {
mContext = context;
mBatteryConsumer = null;
@@ -266,8 +293,8 @@
}
final PackageManager pm = context.getPackageManager();
- final String[] packages = isSystemUid(uid)
- ? new String[]{PACKAGE_SYSTEM} : pm.getPackagesForUid(uid);
+ final String[] packages =
+ isSystemUid(uid) ? new String[] {PACKAGE_SYSTEM} : pm.getPackagesForUid(uid);
if (packages != null) {
final String[] packageLabels = new String[packages.length];
System.arraycopy(packages, 0, packageLabels, 0, packages.length);
@@ -277,11 +304,15 @@
final int userId = UserHandle.getUserId(uid);
for (int i = 0; i < packageLabels.length; i++) {
try {
- final ApplicationInfo ai = ipm.getApplicationInfo(packageLabels[i],
- 0 /* no flags */, userId);
+ final ApplicationInfo ai =
+ ipm.getApplicationInfo(packageLabels[i], 0 /* no flags */, userId);
if (ai == null) {
- Log.d(TAG, "Retrieving null app info for package "
- + packageLabels[i] + ", user " + userId);
+ Log.d(
+ TAG,
+ "Retrieving null app info for package "
+ + packageLabels[i]
+ + ", user "
+ + userId);
continue;
}
final CharSequence label = ai.loadLabel(pm);
@@ -294,8 +325,13 @@
break;
}
} catch (RemoteException e) {
- Log.d(TAG, "Error while retrieving app info for package "
- + packageLabels[i] + ", user " + userId, e);
+ Log.d(
+ TAG,
+ "Error while retrieving app info for package "
+ + packageLabels[i]
+ + ", user "
+ + userId,
+ e);
}
}
@@ -307,13 +343,17 @@
try {
final PackageInfo pi = ipm.getPackageInfo(pkgName, 0, userId);
if (pi == null) {
- Log.d(TAG, "Retrieving null package info for package "
- + pkgName + ", user " + userId);
+ Log.d(
+ TAG,
+ "Retrieving null package info for package "
+ + pkgName
+ + ", user "
+ + userId);
continue;
}
if (pi.sharedUserLabel != 0) {
- final CharSequence nm = pm.getText(pkgName,
- pi.sharedUserLabel, pi.applicationInfo);
+ final CharSequence nm =
+ pm.getText(pkgName, pi.sharedUserLabel, pi.applicationInfo);
if (nm != null) {
name = nm.toString();
if (pi.applicationInfo.icon != 0) {
@@ -324,8 +364,13 @@
}
}
} catch (RemoteException e) {
- Log.d(TAG, "Error while retrieving package info for package "
- + pkgName + ", user " + userId, e);
+ Log.d(
+ TAG,
+ "Error while retrieving package info for package "
+ + pkgName
+ + ", user "
+ + userId,
+ e);
}
}
}
@@ -342,7 +387,7 @@
utd.mPackageName = defaultPackageName;
sUidCache.put(uidString, utd);
- return new NameAndIcon(name, defaultPackageName, icon, /*iconId=*/ 0);
+ return new NameAndIcon(name, defaultPackageName, icon, /* iconId= */ 0);
}
/** Returns a string that uniquely identifies this battery consumer. */
@@ -375,16 +420,13 @@
}
/**
- * Returns the package name that should be used to represent the UID described
- * by this entry.
+ * Returns the package name that should be used to represent the UID described by this entry.
*/
public String getDefaultPackageName() {
return mDefaultPackageName;
}
- /**
- * Returns the UID of the app described by this entry.
- */
+ /** Returns the UID of the app described by this entry. */
public int getUid() {
return mUid;
}
@@ -407,9 +449,7 @@
}
}
- /**
- * Returns total amount of power (in milli-amp-hours) that is attributed to this entry.
- */
+ /** Returns total amount of power (in milli-amp-hours) that is attributed to this entry. */
public double getConsumedPower() {
return mConsumedPower;
}
@@ -462,25 +502,30 @@
}
/**
- * Adds the consumed power of the supplied BatteryConsumer to this entry. Also
- * uses its package with highest drain, if necessary.
+ * Adds the consumed power of the supplied BatteryConsumer to this entry. Also uses its package
+ * with highest drain, if necessary.
*/
public void add(BatteryConsumer batteryConsumer) {
mConsumedPower += batteryConsumer.getConsumedPower();
if (batteryConsumer instanceof UidBatteryConsumer) {
UidBatteryConsumer uidBatteryConsumer = (UidBatteryConsumer) batteryConsumer;
- mTimeInForegroundMs += uidBatteryConsumer.getTimeInStateMs(
- UidBatteryConsumer.STATE_FOREGROUND);
- mTimeInBackgroundMs += uidBatteryConsumer.getTimeInStateMs(
- UidBatteryConsumer.STATE_BACKGROUND);
- mConsumedPowerInForeground += safeGetConsumedPower(
- uidBatteryConsumer, BATTERY_DIMENSIONS[BATTERY_USAGE_INDEX_FOREGROUND]);
- mConsumedPowerInForegroundService += safeGetConsumedPower(
- uidBatteryConsumer, BATTERY_DIMENSIONS[BATTERY_USAGE_INDEX_FOREGROUND_SERVICE]);
- mConsumedPowerInBackground += safeGetConsumedPower(
- uidBatteryConsumer, BATTERY_DIMENSIONS[BATTERY_USAGE_INDEX_BACKGROUND]);
- mConsumedPowerInCached += safeGetConsumedPower(
- uidBatteryConsumer, BATTERY_DIMENSIONS[BATTERY_USAGE_INDEX_CACHED]);
+ mTimeInForegroundMs +=
+ uidBatteryConsumer.getTimeInStateMs(UidBatteryConsumer.STATE_FOREGROUND);
+ mTimeInBackgroundMs +=
+ uidBatteryConsumer.getTimeInStateMs(UidBatteryConsumer.STATE_BACKGROUND);
+ mConsumedPowerInForeground +=
+ safeGetConsumedPower(
+ uidBatteryConsumer, BATTERY_DIMENSIONS[BATTERY_USAGE_INDEX_FOREGROUND]);
+ mConsumedPowerInForegroundService +=
+ safeGetConsumedPower(
+ uidBatteryConsumer,
+ BATTERY_DIMENSIONS[BATTERY_USAGE_INDEX_FOREGROUND_SERVICE]);
+ mConsumedPowerInBackground +=
+ safeGetConsumedPower(
+ uidBatteryConsumer, BATTERY_DIMENSIONS[BATTERY_USAGE_INDEX_BACKGROUND]);
+ mConsumedPowerInCached +=
+ safeGetConsumedPower(
+ uidBatteryConsumer, BATTERY_DIMENSIONS[BATTERY_USAGE_INDEX_CACHED]);
if (mDefaultPackageName == null) {
mDefaultPackageName = uidBatteryConsumer.getPackageWithHighestDrain();
}
@@ -488,8 +533,7 @@
}
/** Gets name and icon resource from UserBatteryConsumer userId. */
- public static NameAndIcon getNameAndIconFromUserId(
- Context context, final int userId) {
+ public static NameAndIcon getNameAndIconFromUserId(Context context, final int userId) {
UserManager um = context.getSystemService(UserManager.class);
UserInfo info = um.getUserInfo(userId);
@@ -499,27 +543,27 @@
icon = Utils.getUserIcon(context, um, info);
name = Utils.getUserLabel(context, info);
} else {
- name = context.getResources().getString(
- R.string.running_process_item_removed_user_label);
+ name =
+ context.getResources()
+ .getString(R.string.running_process_item_removed_user_label);
}
return new NameAndIcon(name, icon, 0 /* iconId */);
}
/** Gets name and icon resource from UidBatteryConsumer uid. */
- public static NameAndIcon getNameAndIconFromUid(
- Context context, String name, final int uid) {
+ public static NameAndIcon getNameAndIconFromUid(Context context, String name, final int uid) {
Drawable icon = context.getDrawable(R.drawable.ic_power_system);
if (uid == 0) {
- name = context.getResources()
- .getString(com.android.settingslib.R.string.process_kernel_label);
+ name =
+ context.getResources()
+ .getString(com.android.settingslib.R.string.process_kernel_label);
} else if (uid == BatteryUtils.UID_REMOVED_APPS) {
name = context.getResources().getString(R.string.process_removed_apps);
} else if (uid == BatteryUtils.UID_TETHERING) {
name = context.getResources().getString(R.string.process_network_tethering);
} else if ("mediaserver".equals(name)) {
name = context.getResources().getString(R.string.process_mediaserver_label);
- } else if ("dex2oat".equals(name) || "dex2oat32".equals(name)
- || "dex2oat64".equals(name)) {
+ } else if ("dex2oat".equals(name) || "dex2oat32".equals(name) || "dex2oat64".equals(name)) {
name = context.getResources().getString(R.string.process_dex2oat_label);
}
return new NameAndIcon(name, icon, 0 /* iconId */);
@@ -531,12 +575,12 @@
String name;
int iconId;
switch (powerComponentId) {
- // Please see go/battery-usage-system-component-map
- case BatteryConsumer.POWER_COMPONENT_SCREEN: // id: 0
+ // Please see go/battery-usage-system-component-map
+ case BatteryConsumer.POWER_COMPONENT_SCREEN: // id: 0
name = context.getResources().getString(R.string.power_screen);
iconId = R.drawable.ic_settings_display;
break;
- case BatteryConsumer.POWER_COMPONENT_CPU: // id: 1
+ case BatteryConsumer.POWER_COMPONENT_CPU: // id: 1
name = context.getResources().getString(R.string.power_cpu);
iconId = R.drawable.ic_settings_cpu;
break;
@@ -544,11 +588,11 @@
name = context.getResources().getString(R.string.power_bluetooth);
iconId = R.drawable.ic_settings_bluetooth;
break;
- case BatteryConsumer.POWER_COMPONENT_CAMERA: // id: 3
+ case BatteryConsumer.POWER_COMPONENT_CAMERA: // id: 3
name = context.getResources().getString(R.string.power_camera);
iconId = R.drawable.ic_settings_camera;
break;
- case BatteryConsumer.POWER_COMPONENT_FLASHLIGHT: // id: 6
+ case BatteryConsumer.POWER_COMPONENT_FLASHLIGHT: // id: 6
name = context.getResources().getString(R.string.power_flashlight);
iconId = R.drawable.ic_settings_flashlight;
break;
@@ -556,25 +600,30 @@
name = context.getResources().getString(R.string.power_cell);
iconId = R.drawable.ic_settings_cellular;
break;
- case BatteryConsumer.POWER_COMPONENT_GNSS: // id: 10
+ case BatteryConsumer.POWER_COMPONENT_GNSS: // id: 10
name = context.getResources().getString(R.string.power_gps);
iconId = R.drawable.ic_settings_gps;
break;
- case BatteryConsumer.POWER_COMPONENT_WIFI: // id: 11
+ case BatteryConsumer.POWER_COMPONENT_WIFI: // id: 11
name = context.getResources().getString(R.string.power_wifi);
iconId = R.drawable.ic_settings_wireless_no_theme;
break;
- case BatteryConsumer.POWER_COMPONENT_PHONE: // id: 14
+ case BatteryConsumer.POWER_COMPONENT_PHONE: // id: 14
name = context.getResources().getString(R.string.power_phone);
iconId = R.drawable.ic_settings_voice_calls;
break;
- case BatteryConsumer.POWER_COMPONENT_AMBIENT_DISPLAY: // id :15
+ case BatteryConsumer.POWER_COMPONENT_AMBIENT_DISPLAY: // id :15
name = context.getResources().getString(R.string.ambient_display_screen_title);
iconId = R.drawable.ic_settings_aod;
break;
default:
- Log.w(TAG, "unknown attribute:" + DebugUtils.constantToString(
- BatteryConsumer.class, "POWER_COMPONENT_", powerComponentId));
+ Log.w(
+ TAG,
+ "unknown attribute:"
+ + DebugUtils.constantToString(
+ BatteryConsumer.class,
+ "POWER_COMPONENT_",
+ powerComponentId));
name = null;
iconId = R.drawable.ic_power_system;
break;
diff --git a/src/com/android/settings/fuelgauge/batteryusage/BatteryHistEntry.java b/src/com/android/settings/fuelgauge/batteryusage/BatteryHistEntry.java
index 6f78566..97cdc34 100644
--- a/src/com/android/settings/fuelgauge/batteryusage/BatteryHistEntry.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/BatteryHistEntry.java
@@ -29,6 +29,7 @@
/** Keys for accessing {@link ContentValues} or {@link Cursor}. */
public static final String KEY_UID = "uid";
+
public static final String KEY_USER_ID = "userId";
public static final String KEY_PACKAGE_NAME = "packageName";
public static final String KEY_TIMESTAMP = "timestamp";
@@ -57,10 +58,8 @@
public final double mPercentOfTotal;
public final long mForegroundUsageTimeInMs;
public final long mBackgroundUsageTimeInMs;
- @BatteryConsumer.PowerComponent
- public final int mDrainType;
- @ConvertUtils.ConsumerType
- public final int mConsumerType;
+ @BatteryConsumer.PowerComponent public final int mDrainType;
+ @ConvertUtils.ConsumerType public final int mConsumerType;
// Records the battery intent relative information.
public final int mBatteryLevel;
public final int mBatteryStatus;
@@ -190,25 +189,45 @@
@Override
public String toString() {
final String recordAtDateTime = ConvertUtils.utcToLocalTimeForLogging(mTimestamp);
- final StringBuilder builder = new StringBuilder()
- .append("\nBatteryHistEntry{")
- .append(String.format("\n\tpackage=%s|label=%s|uid=%d|userId=%d|isHidden=%b",
- mPackageName, mAppLabel, mUid, mUserId, mIsHidden))
- .append(String.format("\n\ttimestamp=%s|zoneId=%s|bootTimestamp=%d",
- recordAtDateTime, mZoneId, Duration.ofMillis(mBootTimestamp).getSeconds()))
- .append(String.format("\n\tusage=%f|total=%f|consume=%f",
- mPercentOfTotal, mTotalPower, mConsumePower))
- .append(String.format("\n\tforeground=%f|foregroundService=%f",
- mForegroundUsageConsumePower, mForegroundServiceUsageConsumePower))
- .append(String.format("\n\tbackground=%f|cached=%f",
- mBackgroundUsageConsumePower, mCachedUsageConsumePower))
- .append(String.format("\n\telapsedTime=%d|%d",
- Duration.ofMillis(mForegroundUsageTimeInMs).getSeconds(),
- Duration.ofMillis(mBackgroundUsageTimeInMs).getSeconds()))
- .append(String.format("\n\tdrainType=%d|consumerType=%d",
- mDrainType, mConsumerType))
- .append(String.format("\n\tbattery=%d|status=%d|health=%d\n}",
- mBatteryLevel, mBatteryStatus, mBatteryHealth));
+ final StringBuilder builder =
+ new StringBuilder()
+ .append("\nBatteryHistEntry{")
+ .append(
+ String.format(
+ "\n\tpackage=%s|label=%s|uid=%d|userId=%d|isHidden=%b",
+ mPackageName, mAppLabel, mUid, mUserId, mIsHidden))
+ .append(
+ String.format(
+ "\n\ttimestamp=%s|zoneId=%s|bootTimestamp=%d",
+ recordAtDateTime,
+ mZoneId,
+ Duration.ofMillis(mBootTimestamp).getSeconds()))
+ .append(
+ String.format(
+ "\n\tusage=%f|total=%f|consume=%f",
+ mPercentOfTotal, mTotalPower, mConsumePower))
+ .append(
+ String.format(
+ "\n\tforeground=%f|foregroundService=%f",
+ mForegroundUsageConsumePower,
+ mForegroundServiceUsageConsumePower))
+ .append(
+ String.format(
+ "\n\tbackground=%f|cached=%f",
+ mBackgroundUsageConsumePower, mCachedUsageConsumePower))
+ .append(
+ String.format(
+ "\n\telapsedTime=%d|%d",
+ Duration.ofMillis(mForegroundUsageTimeInMs).getSeconds(),
+ Duration.ofMillis(mBackgroundUsageTimeInMs).getSeconds()))
+ .append(
+ String.format(
+ "\n\tdrainType=%d|consumerType=%d",
+ mDrainType, mConsumerType))
+ .append(
+ String.format(
+ "\n\tbattery=%d|status=%d|health=%d\n}",
+ mBatteryLevel, mBatteryStatus, mBatteryHealth));
return builder.toString();
}
@@ -270,65 +289,81 @@
double ratio,
BatteryHistEntry lowerHistEntry,
BatteryHistEntry upperHistEntry) {
- final double totalPower = interpolate(
- lowerHistEntry == null ? 0 : lowerHistEntry.mTotalPower,
- upperHistEntry.mTotalPower,
- ratio);
- final double consumePower = interpolate(
- lowerHistEntry == null ? 0 : lowerHistEntry.mConsumePower,
- upperHistEntry.mConsumePower,
- ratio);
- final double foregroundUsageConsumePower = interpolate(
- lowerHistEntry == null ? 0 : lowerHistEntry.mForegroundUsageConsumePower,
- upperHistEntry.mForegroundUsageConsumePower,
- ratio);
- final double foregroundServiceUsageConsumePower = interpolate(
- lowerHistEntry == null ? 0 : lowerHistEntry.mForegroundServiceUsageConsumePower,
- upperHistEntry.mForegroundServiceUsageConsumePower,
- ratio);
- final double backgroundUsageConsumePower = interpolate(
- lowerHistEntry == null ? 0 : lowerHistEntry.mBackgroundUsageConsumePower,
- upperHistEntry.mBackgroundUsageConsumePower,
- ratio);
- final double cachedUsageConsumePower = interpolate(
- lowerHistEntry == null ? 0 : lowerHistEntry.mCachedUsageConsumePower,
- upperHistEntry.mCachedUsageConsumePower,
- ratio);
- final double foregroundUsageTimeInMs = interpolate(
- (double) (lowerHistEntry == null ? 0 : lowerHistEntry.mForegroundUsageTimeInMs),
- (double) upperHistEntry.mForegroundUsageTimeInMs,
- ratio);
- final double backgroundUsageTimeInMs = interpolate(
- (double) (lowerHistEntry == null ? 0 : lowerHistEntry.mBackgroundUsageTimeInMs),
- (double) upperHistEntry.mBackgroundUsageTimeInMs,
- ratio);
+ final double totalPower =
+ interpolate(
+ lowerHistEntry == null ? 0 : lowerHistEntry.mTotalPower,
+ upperHistEntry.mTotalPower,
+ ratio);
+ final double consumePower =
+ interpolate(
+ lowerHistEntry == null ? 0 : lowerHistEntry.mConsumePower,
+ upperHistEntry.mConsumePower,
+ ratio);
+ final double foregroundUsageConsumePower =
+ interpolate(
+ lowerHistEntry == null ? 0 : lowerHistEntry.mForegroundUsageConsumePower,
+ upperHistEntry.mForegroundUsageConsumePower,
+ ratio);
+ final double foregroundServiceUsageConsumePower =
+ interpolate(
+ lowerHistEntry == null
+ ? 0
+ : lowerHistEntry.mForegroundServiceUsageConsumePower,
+ upperHistEntry.mForegroundServiceUsageConsumePower,
+ ratio);
+ final double backgroundUsageConsumePower =
+ interpolate(
+ lowerHistEntry == null ? 0 : lowerHistEntry.mBackgroundUsageConsumePower,
+ upperHistEntry.mBackgroundUsageConsumePower,
+ ratio);
+ final double cachedUsageConsumePower =
+ interpolate(
+ lowerHistEntry == null ? 0 : lowerHistEntry.mCachedUsageConsumePower,
+ upperHistEntry.mCachedUsageConsumePower,
+ ratio);
+ final double foregroundUsageTimeInMs =
+ interpolate(
+ (double)
+ (lowerHistEntry == null
+ ? 0
+ : lowerHistEntry.mForegroundUsageTimeInMs),
+ (double) upperHistEntry.mForegroundUsageTimeInMs,
+ ratio);
+ final double backgroundUsageTimeInMs =
+ interpolate(
+ (double)
+ (lowerHistEntry == null
+ ? 0
+ : lowerHistEntry.mBackgroundUsageTimeInMs),
+ (double) upperHistEntry.mBackgroundUsageTimeInMs,
+ ratio);
// Checks whether there is any abnormal cases!
if (upperHistEntry.mConsumePower < consumePower
|| upperHistEntry.mForegroundUsageConsumePower < foregroundUsageConsumePower
|| upperHistEntry.mForegroundServiceUsageConsumePower
- < foregroundServiceUsageConsumePower
+ < foregroundServiceUsageConsumePower
|| upperHistEntry.mBackgroundUsageConsumePower < backgroundUsageConsumePower
|| upperHistEntry.mCachedUsageConsumePower < cachedUsageConsumePower
|| upperHistEntry.mForegroundUsageTimeInMs < foregroundUsageTimeInMs
|| upperHistEntry.mBackgroundUsageTimeInMs < backgroundUsageTimeInMs) {
if (DEBUG) {
- Log.w(TAG, String.format(
- "abnormal interpolation:\nupper:%s\nlower:%s",
- upperHistEntry, lowerHistEntry));
+ Log.w(
+ TAG,
+ String.format(
+ "abnormal interpolation:\nupper:%s\nlower:%s",
+ upperHistEntry, lowerHistEntry));
}
}
final double batteryLevel =
lowerHistEntry == null
? upperHistEntry.mBatteryLevel
: interpolate(
- lowerHistEntry.mBatteryLevel,
- upperHistEntry.mBatteryLevel,
- ratio);
+ lowerHistEntry.mBatteryLevel, upperHistEntry.mBatteryLevel, ratio);
return new BatteryHistEntry(
upperHistEntry,
- /*bootTimestamp=*/ upperHistEntry.mBootTimestamp
- - (upperTimestamp - slotTimestamp),
- /*timestamp=*/ slotTimestamp,
+ /* bootTimestamp= */ upperHistEntry.mBootTimestamp
+ - (upperTimestamp - slotTimestamp),
+ /* timestamp= */ slotTimestamp,
totalPower,
consumePower,
foregroundUsageConsumePower,
diff --git a/src/com/android/settings/fuelgauge/batteryusage/BatteryHistoryPreference.java b/src/com/android/settings/fuelgauge/batteryusage/BatteryHistoryPreference.java
index d64bf34..2063f2d 100644
--- a/src/com/android/settings/fuelgauge/batteryusage/BatteryHistoryPreference.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/BatteryHistoryPreference.java
@@ -26,9 +26,7 @@
import com.android.settings.R;
import com.android.settings.fuelgauge.BatteryUtils;
-/**
- * Custom preference for displaying the battery level as chart graph.
- */
+/** Custom preference for displaying the battery level as chart graph. */
public class BatteryHistoryPreference extends Preference {
private static final String TAG = "BatteryHistoryPreference";
diff --git a/src/com/android/settings/fuelgauge/batteryusage/BatteryLevelData.java b/src/com/android/settings/fuelgauge/batteryusage/BatteryLevelData.java
index 09d66c7..231c730 100644
--- a/src/com/android/settings/fuelgauge/batteryusage/BatteryLevelData.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/BatteryLevelData.java
@@ -47,13 +47,14 @@
private final List<Integer> mLevels;
public PeriodBatteryLevelData(
- @NonNull Map<Long, Integer> batteryLevelMap,
- @NonNull List<Long> timestamps) {
+ @NonNull Map<Long, Integer> batteryLevelMap, @NonNull List<Long> timestamps) {
mTimestamps = timestamps;
mLevels = new ArrayList<>(timestamps.size());
for (Long timestamp : timestamps) {
- mLevels.add(batteryLevelMap.containsKey(timestamp)
- ? batteryLevelMap.get(timestamp) : BATTERY_LEVEL_UNKNOWN);
+ mLevels.add(
+ batteryLevelMap.containsKey(timestamp)
+ ? batteryLevelMap.get(timestamp)
+ : BATTERY_LEVEL_UNKNOWN);
}
}
@@ -67,8 +68,11 @@
@Override
public String toString() {
- return String.format(Locale.ENGLISH, "timestamps: %s; levels: %s",
- Objects.toString(mTimestamps), Objects.toString(mLevels));
+ return String.format(
+ Locale.ENGLISH,
+ "timestamps: %s; levels: %s",
+ Objects.toString(mTimestamps),
+ Objects.toString(mLevels));
}
private int getIndexByTimestamps(long startTimestamp, long endTimestamp) {
@@ -83,14 +87,15 @@
}
/**
- * There could be 2 cases for the daily battery levels:
+ * There could be 2 cases for the daily battery levels: <br>
* 1) length is 2: The usage data is within 1 day. Only contains start and end data, such as
- * data of 2022-01-01 06:00 and 2022-01-01 16:00.
+ * data of 2022-01-01 06:00 and 2022-01-01 16:00. <br>
* 2) length > 2: The usage data is more than 1 days. The data should be the start, end and 0am
- * data of every day between the start and end, such as data of 2022-01-01 06:00,
- * 2022-01-02 00:00, 2022-01-03 00:00 and 2022-01-03 08:00.
+ * data of every day between the start and end, such as data of 2022-01-01 06:00, 2022-01-02
+ * 00:00, 2022-01-03 00:00 and 2022-01-03 08:00.
*/
private final PeriodBatteryLevelData mDailyBatteryLevels;
+
// The size of hourly data must be the size of daily data - 1.
private final List<PeriodBatteryLevelData> mHourlyBatteryLevelsPerDay;
@@ -118,8 +123,9 @@
final int hourlyHighlightIndex =
(dailyHighlightIndex == BatteryChartViewModel.SELECTED_INDEX_INVALID)
? BatteryChartViewModel.SELECTED_INDEX_INVALID
- : mHourlyBatteryLevelsPerDay.get(dailyHighlightIndex)
- .getIndexByTimestamps(startTimestamp, endTimestamp);
+ : mHourlyBatteryLevelsPerDay
+ .get(dailyHighlightIndex)
+ .getIndexByTimestamps(startTimestamp, endTimestamp);
return Pair.create(dailyHighlightIndex, hourlyHighlightIndex);
}
@@ -133,14 +139,16 @@
@Override
public String toString() {
- return String.format(Locale.ENGLISH,
+ return String.format(
+ Locale.ENGLISH,
"dailyBatteryLevels: %s; hourlyBatteryLevelsPerDay: %s",
Objects.toString(mDailyBatteryLevels),
Objects.toString(mHourlyBatteryLevelsPerDay));
}
@Nullable
- static BatteryLevelData combine(@Nullable BatteryLevelData existingBatteryLevelData,
+ static BatteryLevelData combine(
+ @Nullable BatteryLevelData existingBatteryLevelData,
List<BatteryEvent> batteryLevelRecordEvents) {
final Map<Long, Integer> batteryLevelMap = new ArrayMap<>(batteryLevelRecordEvents.size());
for (BatteryEvent event : batteryLevelRecordEvents) {
@@ -152,7 +160,8 @@
for (int dayIndex = 0; dayIndex < multiDaysData.size(); dayIndex++) {
PeriodBatteryLevelData oneDayData = multiDaysData.get(dayIndex);
for (int hourIndex = 0; hourIndex < oneDayData.getLevels().size(); hourIndex++) {
- batteryLevelMap.put(oneDayData.getTimestamps().get(hourIndex),
+ batteryLevelMap.put(
+ oneDayData.getTimestamps().get(hourIndex),
oneDayData.getLevels().get(hourIndex));
}
}
@@ -163,11 +172,10 @@
/**
* Computes expected daily timestamp slots.
*
- * The valid result should be composed of 3 parts:
- * 1) start timestamp
- * 2) every 00:00 timestamp (default timezone) between the start and end
- * 3) end timestamp
- * Otherwise, returns an empty list.
+ * <p>The valid result should be composed of 3 parts: <br>
+ * 1) start timestamp <br>
+ * 2) every 00:00 timestamp (default timezone) between the start and end <br>
+ * 3) end timestamp Otherwise, returns an empty list.
*/
@VisibleForTesting
static List<Long> getDailyTimestamps(final List<Long> timestampList) {
@@ -176,7 +184,8 @@
final List<Long> dailyTimestampList = new ArrayList<>();
final long startTimestamp = timestampList.get(0);
final long endTimestamp = timestampList.get(timestampList.size() - 1);
- for (long timestamp = startTimestamp; timestamp < endTimestamp;
+ for (long timestamp = startTimestamp;
+ timestamp < endTimestamp;
timestamp = TimestampUtils.getNextDayTimestamp(timestamp)) {
dailyTimestampList.add(timestamp);
}
@@ -193,7 +202,8 @@
hourlyTimestampsPerDay.add(startTime);
for (long timestamp = TimestampUtils.getNextEvenHourTimestamp(startTime);
- timestamp < endTime; timestamp += TIME_SLOT) {
+ timestamp < endTime;
+ timestamp += TIME_SLOT) {
hourlyTimestampsPerDay.add(timestamp);
}
hourlyTimestampsPerDay.add(endTime);
@@ -203,4 +213,3 @@
return hourlyTimestamps;
}
}
-
diff --git a/src/com/android/settings/fuelgauge/batteryusage/BatteryTipsCardPreference.java b/src/com/android/settings/fuelgauge/batteryusage/BatteryTipsCardPreference.java
index 2c799fa..7eec816 100644
--- a/src/com/android/settings/fuelgauge/batteryusage/BatteryTipsCardPreference.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/BatteryTipsCardPreference.java
@@ -34,9 +34,7 @@
import com.google.android.material.button.MaterialButton;
-/**
- * A preference for displaying the battery tips card view.
- */
+/** A preference for displaying the battery tips card view. */
public class BatteryTipsCardPreference extends Preference implements View.OnClickListener {
private static final String TAG = "BatteryTipsCardPreference";
@@ -55,10 +53,8 @@
private int mIconResourceId = 0;
private int mMainButtonStrokeColorResourceId = 0;
- @VisibleForTesting
- CharSequence mMainButtonLabel;
- @VisibleForTesting
- CharSequence mDismissButtonLabel;
+ @VisibleForTesting CharSequence mMainButtonLabel;
+ @VisibleForTesting CharSequence mDismissButtonLabel;
public BatteryTipsCardPreference(Context context, AttributeSet attrs) {
super(context, attrs);
@@ -76,9 +72,7 @@
mOnRejectListener = listener;
}
- /**
- * Sets the icon in tips card.
- */
+ /** Sets the icon in tips card. */
public void setIconResourceId(int resourceId) {
if (mIconResourceId != resourceId) {
mIconResourceId = resourceId;
@@ -86,9 +80,7 @@
}
}
- /**
- * Sets the stroke color of main button in tips card.
- */
+ /** Sets the stroke color of main button in tips card. */
public void setMainButtonStrokeColorResourceId(int resourceId) {
if (mMainButtonStrokeColorResourceId != resourceId) {
mMainButtonStrokeColorResourceId = resourceId;
@@ -96,9 +88,7 @@
}
}
- /**
- * Sets the label of main button in tips card.
- */
+ /** Sets the label of main button in tips card. */
public void setMainButtonLabel(CharSequence label) {
if (!TextUtils.equals(mMainButtonLabel, label)) {
mMainButtonLabel = label;
@@ -106,9 +96,7 @@
}
}
- /**
- * Sets the label of dismiss button in tips card.
- */
+ /** Sets the label of dismiss button in tips card. */
public void setDismissButtonLabel(CharSequence label) {
if (!TextUtils.equals(mDismissButtonLabel, label)) {
mDismissButtonLabel = label;
diff --git a/src/com/android/settings/fuelgauge/batteryusage/BatteryTipsController.java b/src/com/android/settings/fuelgauge/batteryusage/BatteryTipsController.java
index 44b2421..5a1fb26 100644
--- a/src/com/android/settings/fuelgauge/batteryusage/BatteryTipsController.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/BatteryTipsController.java
@@ -51,12 +51,9 @@
private OnAnomalyConfirmListener mOnAnomalyConfirmListener;
private OnAnomalyRejectListener mOnAnomalyRejectListener;
- @VisibleForTesting
- BatteryTipsCardPreference mCardPreference;
- @VisibleForTesting
- AnomalyEventWrapper mAnomalyEventWrapper = null;
- @VisibleForTesting
- Boolean mIsAcceptable = false;
+ @VisibleForTesting BatteryTipsCardPreference mCardPreference;
+ @VisibleForTesting AnomalyEventWrapper mAnomalyEventWrapper = null;
+ @VisibleForTesting Boolean mIsAcceptable = false;
public BatteryTipsController(Context context) {
super(context, ROOT_PREFERENCE_KEY);
@@ -94,7 +91,8 @@
}
mCardPreference.setVisible(false);
mMetricsFeatureProvider.action(
- mContext, SettingsEnums.ACTION_BATTERY_TIPS_CARD_ACCEPT,
+ mContext,
+ SettingsEnums.ACTION_BATTERY_TIPS_CARD_ACCEPT,
mAnomalyEventWrapper.getEventId());
}
@@ -117,28 +115,31 @@
}
// Set battery tips card listener
- mCardPreference.setOnConfirmListener(() -> {
- mCardPreference.setVisible(false);
- if (mOnAnomalyConfirmListener != null) {
- mOnAnomalyConfirmListener.onAnomalyConfirm();
- } else if (mAnomalyEventWrapper.launchSubSetting()) {
- mMetricsFeatureProvider.action(
- mContext, SettingsEnums.ACTION_BATTERY_TIPS_CARD_ACCEPT, eventId);
- }
- });
- mCardPreference.setOnRejectListener(() -> {
- mCardPreference.setVisible(false);
- if (mOnAnomalyRejectListener != null) {
- mOnAnomalyRejectListener.onAnomalyReject();
- }
- // For anomaly events with same record key, dismissed until next time full charged.
- final String dismissRecordKey = mAnomalyEventWrapper.getDismissRecordKey();
- if (!TextUtils.isEmpty(dismissRecordKey)) {
- DatabaseUtils.setDismissedPowerAnomalyKeys(mContext, dismissRecordKey);
- }
- mMetricsFeatureProvider.action(
- mContext, SettingsEnums.ACTION_BATTERY_TIPS_CARD_DISMISS, eventId);
- });
+ mCardPreference.setOnConfirmListener(
+ () -> {
+ mCardPreference.setVisible(false);
+ if (mOnAnomalyConfirmListener != null) {
+ mOnAnomalyConfirmListener.onAnomalyConfirm();
+ } else if (mAnomalyEventWrapper.launchSubSetting()) {
+ mMetricsFeatureProvider.action(
+ mContext, SettingsEnums.ACTION_BATTERY_TIPS_CARD_ACCEPT, eventId);
+ }
+ });
+ mCardPreference.setOnRejectListener(
+ () -> {
+ mCardPreference.setVisible(false);
+ if (mOnAnomalyRejectListener != null) {
+ mOnAnomalyRejectListener.onAnomalyReject();
+ }
+ // For anomaly events with same record key, dismissed until next time full
+ // charged.
+ final String dismissRecordKey = mAnomalyEventWrapper.getDismissRecordKey();
+ if (!TextUtils.isEmpty(dismissRecordKey)) {
+ DatabaseUtils.setDismissedPowerAnomalyKeys(mContext, dismissRecordKey);
+ }
+ mMetricsFeatureProvider.action(
+ mContext, SettingsEnums.ACTION_BATTERY_TIPS_CARD_DISMISS, eventId);
+ });
mCardPreference.setVisible(true);
mMetricsFeatureProvider.action(
diff --git a/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownController.java b/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownController.java
index 983524f..d6f8709 100644
--- a/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownController.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownController.java
@@ -58,7 +58,7 @@
/** Controller for battery usage breakdown preference group. */
public class BatteryUsageBreakdownController extends BasePreferenceController
- implements LifecycleObserver, OnResume, OnDestroy {
+ implements LifecycleObserver, OnResume, OnDestroy {
private static final String TAG = "BatteryUsageBreakdownController";
private static final String ROOT_PREFERENCE_KEY = "battery_usage_breakdown";
private static final String FOOTER_PREFERENCE_KEY = "battery_usage_footer";
@@ -74,45 +74,33 @@
private final MetricsFeatureProvider mMetricsFeatureProvider;
private final Handler mHandler = new Handler(Looper.getMainLooper());
- @VisibleForTesting
- final Map<String, Preference> mPreferenceCache = new ArrayMap<>();
+ @VisibleForTesting final Map<String, Preference> mPreferenceCache = new ArrayMap<>();
private int mSpinnerPosition;
private String mSlotTimestamp;
- @VisibleForTesting
- Context mPrefContext;
- @VisibleForTesting
- PreferenceCategory mRootPreference;
- @VisibleForTesting
- SpinnerPreference mSpinnerPreference;
- @VisibleForTesting
- PreferenceGroup mAppListPreferenceGroup;
- @VisibleForTesting
- FooterPreference mFooterPreference;
- @VisibleForTesting
- BatteryDiffData mBatteryDiffData;
- @VisibleForTesting
- String mPercentLessThanThresholdText;
- @VisibleForTesting
- boolean mIsHighlightSlot;
- @VisibleForTesting
- String mAnomalyEventId;
- @VisibleForTesting
- String mAnomalyEntryKey;
- @VisibleForTesting
- String mAnomalyHintString;
- @VisibleForTesting
- String mAnomalyHintPrefKey;
+ @VisibleForTesting Context mPrefContext;
+ @VisibleForTesting PreferenceCategory mRootPreference;
+ @VisibleForTesting SpinnerPreference mSpinnerPreference;
+ @VisibleForTesting PreferenceGroup mAppListPreferenceGroup;
+ @VisibleForTesting FooterPreference mFooterPreference;
+ @VisibleForTesting BatteryDiffData mBatteryDiffData;
+ @VisibleForTesting String mPercentLessThanThresholdText;
+ @VisibleForTesting boolean mIsHighlightSlot;
+ @VisibleForTesting String mAnomalyEventId;
+ @VisibleForTesting String mAnomalyEntryKey;
+ @VisibleForTesting String mAnomalyHintString;
+ @VisibleForTesting String mAnomalyHintPrefKey;
public BatteryUsageBreakdownController(
- Context context, Lifecycle lifecycle, SettingsActivity activity,
+ Context context,
+ Lifecycle lifecycle,
+ SettingsActivity activity,
InstrumentedPreferenceFragment fragment) {
super(context, ROOT_PREFERENCE_KEY);
mActivity = activity;
mFragment = fragment;
- mMetricsFeatureProvider =
- FeatureFactory.getFeatureFactory().getMetricsFeatureProvider();
+ mMetricsFeatureProvider = FeatureFactory.getFeatureFactory().getMetricsFeatureProvider();
if (lifecycle != null) {
lifecycle.addObserver(this);
}
@@ -133,7 +121,7 @@
@Override
public void onDestroy() {
- mHandler.removeCallbacksAndMessages(/*token=*/ null);
+ mHandler.removeCallbacksAndMessages(/* token= */ null);
mPreferenceCache.clear();
mAppListPreferenceGroup.removeAll();
}
@@ -149,14 +137,17 @@
}
private boolean isAnomalyBatteryDiffEntry(BatteryDiffEntry entry) {
- return mIsHighlightSlot && mAnomalyEntryKey != null
+ return mIsHighlightSlot
+ && mAnomalyEntryKey != null
&& mAnomalyEntryKey.equals(entry.getKey());
}
private String getActionKey(BatteryDiffEntry entry) {
- final String actionKey = TextUtils.isEmpty(entry.getPackageName())
- ? PACKAGE_NAME_NONE : entry.getPackageName();
- return !isAnomalyBatteryDiffEntry(entry) ? actionKey : actionKey + "|" + mAnomalyEventId;
+ final String actionKey =
+ TextUtils.isEmpty(entry.getPackageName())
+ ? PACKAGE_NAME_NONE
+ : entry.getPackageName();
+ return !isAnomalyBatteryDiffEntry(entry) ? actionKey : actionKey + "|" + mAnomalyEventId;
}
@Override
@@ -174,15 +165,24 @@
/* pageId */ SettingsEnums.OPEN_BATTERY_USAGE,
getActionKey(diffEntry),
(int) Math.round(diffEntry.getPercentage()));
- Log.d(TAG, String.format("handleClick() label=%s key=%s package=%s",
- diffEntry.getAppLabel(), diffEntry.getKey(), diffEntry.getPackageName()));
- final String anomalyHintPrefKey = isAnomalyBatteryDiffEntry(diffEntry)
- ? mAnomalyHintPrefKey : null;
- final String anomalyHintText = isAnomalyBatteryDiffEntry(diffEntry)
- ? mAnomalyHintString : null;
- AdvancedPowerUsageDetail.startBatteryDetailPage(mActivity, mFragment.getMetricsCategory(),
- diffEntry, powerPref.getPercentage(), mSlotTimestamp,
- /*showTimeInformation=*/ true, anomalyHintPrefKey, anomalyHintText);
+ Log.d(
+ TAG,
+ String.format(
+ "handleClick() label=%s key=%s package=%s",
+ diffEntry.getAppLabel(), diffEntry.getKey(), diffEntry.getPackageName()));
+ final String anomalyHintPrefKey =
+ isAnomalyBatteryDiffEntry(diffEntry) ? mAnomalyHintPrefKey : null;
+ final String anomalyHintText =
+ isAnomalyBatteryDiffEntry(diffEntry) ? mAnomalyHintString : null;
+ AdvancedPowerUsageDetail.startBatteryDetailPage(
+ mActivity,
+ mFragment.getMetricsCategory(),
+ diffEntry,
+ powerPref.getPercentage(),
+ mSlotTimestamp,
+ /* showTimeInformation= */ true,
+ anomalyHintPrefKey,
+ anomalyHintText);
return true;
}
@@ -194,15 +194,16 @@
mSpinnerPreference = screen.findPreference(SPINNER_PREFERENCE_KEY);
mAppListPreferenceGroup = screen.findPreference(APP_LIST_PREFERENCE_KEY);
mFooterPreference = screen.findPreference(FOOTER_PREFERENCE_KEY);
- mPercentLessThanThresholdText = mPrefContext.getString(
- R.string.battery_usage_less_than_percent,
- Utils.formatPercentage(BatteryDiffData.SMALL_PERCENTAGE_THRESHOLD, false));
+ mPercentLessThanThresholdText =
+ mPrefContext.getString(
+ R.string.battery_usage_less_than_percent,
+ Utils.formatPercentage(BatteryDiffData.SMALL_PERCENTAGE_THRESHOLD, false));
mAppListPreferenceGroup.setOrderingAsAdded(false);
mSpinnerPreference.initializeSpinner(
- new String[]{
- mPrefContext.getString(R.string.battery_usage_spinner_view_by_apps),
- mPrefContext.getString(R.string.battery_usage_spinner_view_by_systems)
+ new String[] {
+ mPrefContext.getString(R.string.battery_usage_spinner_view_by_apps),
+ mPrefContext.getString(R.string.battery_usage_spinner_view_by_systems)
},
new AdapterView.OnItemSelectedListener() {
@Override
@@ -210,35 +211,38 @@
AdapterView<?> parent, View view, int position, long id) {
if (mSpinnerPosition != position) {
mSpinnerPosition = position;
- mHandler.post(() -> {
- removeAndCacheAllUnusedPreferences();
- addAllPreferences();
- mMetricsFeatureProvider.action(
- mPrefContext,
- SettingsEnums.ACTION_BATTERY_USAGE_SPINNER,
- mSpinnerPosition);
- });
+ mHandler.post(
+ () -> {
+ removeAndCacheAllUnusedPreferences();
+ addAllPreferences();
+ mMetricsFeatureProvider.action(
+ mPrefContext,
+ SettingsEnums.ACTION_BATTERY_USAGE_SPINNER,
+ mSpinnerPosition);
+ });
}
}
@Override
- public void onNothingSelected(AdapterView<?> parent) {
- }
+ public void onNothingSelected(AdapterView<?> parent) {}
});
}
/**
* Updates UI when the battery usage is updated.
- * @param slotUsageData The battery usage diff data for the selected slot. This is used in
- * the app list.
+ *
+ * @param slotUsageData The battery usage diff data for the selected slot. This is used in the
+ * app list.
* @param slotTimestamp The selected slot timestamp information. This is used in the battery
- * usage breakdown category.
- * @param isAllUsageDataEmpty Whether all the battery usage data is null or empty. This is
- * used when showing the footer.
+ * usage breakdown category.
+ * @param isAllUsageDataEmpty Whether all the battery usage data is null or empty. This is used
+ * when showing the footer.
*/
void handleBatteryUsageUpdated(
- BatteryDiffData slotUsageData, String slotTimestamp,
- boolean isAllUsageDataEmpty, boolean isHighlightSlot,
+ BatteryDiffData slotUsageData,
+ String slotTimestamp,
+ boolean isAllUsageDataEmpty,
+ boolean isHighlightSlot,
Optional<AnomalyEventWrapper> optionalAnomalyEventWrapper) {
mBatteryDiffData = slotUsageData;
mSlotTimestamp = slotTimestamp;
@@ -247,14 +251,15 @@
if (optionalAnomalyEventWrapper != null) {
final AnomalyEventWrapper anomalyEventWrapper =
optionalAnomalyEventWrapper.orElse(null);
- mAnomalyEventId = anomalyEventWrapper != null
- ? anomalyEventWrapper.getEventId() : null;
- mAnomalyEntryKey = anomalyEventWrapper != null
- ? anomalyEventWrapper.getAnomalyEntryKey() : null;
- mAnomalyHintString = anomalyEventWrapper != null
- ? anomalyEventWrapper.getAnomalyHintString() : null;
- mAnomalyHintPrefKey = anomalyEventWrapper != null
- ? anomalyEventWrapper.getAnomalyHintPrefKey() : null;
+ mAnomalyEventId = anomalyEventWrapper != null ? anomalyEventWrapper.getEventId() : null;
+ mAnomalyEntryKey =
+ anomalyEventWrapper != null ? anomalyEventWrapper.getAnomalyEntryKey() : null;
+ mAnomalyHintString =
+ anomalyEventWrapper != null ? anomalyEventWrapper.getAnomalyHintString() : null;
+ mAnomalyHintPrefKey =
+ anomalyEventWrapper != null
+ ? anomalyEventWrapper.getAnomalyHintPrefKey()
+ : null;
}
showCategoryTitle(slotTimestamp);
@@ -263,35 +268,39 @@
}
private void showCategoryTitle(String slotTimestamp) {
- mRootPreference.setTitle(slotTimestamp == null
- ? mPrefContext.getString(
- R.string.battery_usage_breakdown_title_since_last_full_charge)
- : mPrefContext.getString(
- R.string.battery_usage_breakdown_title_for_slot, slotTimestamp));
+ mRootPreference.setTitle(
+ slotTimestamp == null
+ ? mPrefContext.getString(
+ R.string.battery_usage_breakdown_title_since_last_full_charge)
+ : mPrefContext.getString(
+ R.string.battery_usage_breakdown_title_for_slot, slotTimestamp));
mRootPreference.setVisible(true);
}
private void showFooterPreference(boolean isAllBatteryUsageEmpty) {
- mFooterPreference.setTitle(mPrefContext.getString(
- isAllBatteryUsageEmpty
- ? R.string.battery_usage_screen_footer_empty
- : R.string.battery_usage_screen_footer));
+ mFooterPreference.setTitle(
+ mPrefContext.getString(
+ isAllBatteryUsageEmpty
+ ? R.string.battery_usage_screen_footer_empty
+ : R.string.battery_usage_screen_footer));
mFooterPreference.setVisible(true);
}
private void showSpinnerAndAppList() {
if (mBatteryDiffData == null) {
- mHandler.post(() -> {
- removeAndCacheAllUnusedPreferences();
- });
+ mHandler.post(
+ () -> {
+ removeAndCacheAllUnusedPreferences();
+ });
return;
}
mSpinnerPreference.setVisible(true);
mAppListPreferenceGroup.setVisible(true);
- mHandler.post(() -> {
- removeAndCacheAllUnusedPreferences();
- addAllPreferences();
- });
+ mHandler.post(
+ () -> {
+ removeAndCacheAllUnusedPreferences();
+ addAllPreferences();
+ });
}
private List<BatteryDiffEntry> getBatteryDiffEntries() {
@@ -348,8 +357,11 @@
}
prefIndex++;
}
- Log.d(TAG, String.format("addAllPreferences() is finished in %d/ms",
- (System.currentTimeMillis() - start)));
+ Log.d(
+ TAG,
+ String.format(
+ "addAllPreferences() is finished in %d/ms",
+ (System.currentTimeMillis() - start)));
}
@VisibleForTesting
@@ -372,8 +384,7 @@
}
@VisibleForTesting
- void setPreferencePercentage(
- PowerGaugePreference preference, BatteryDiffEntry entry) {
+ void setPreferencePercentage(PowerGaugePreference preference, BatteryDiffEntry entry) {
preference.setPercentage(
entry.getPercentage() < BatteryDiffData.SMALL_PERCENTAGE_THRESHOLD
? mPercentLessThanThresholdText
@@ -383,11 +394,13 @@
}
@VisibleForTesting
- void setPreferenceSummary(
- PowerGaugePreference preference, BatteryDiffEntry entry) {
+ void setPreferenceSummary(PowerGaugePreference preference, BatteryDiffEntry entry) {
preference.setSummary(
- BatteryUtils.buildBatteryUsageTimeSummary(mPrefContext, entry.isSystemEntry(),
- entry.mForegroundUsageTimeInMs, entry.mBackgroundUsageTimeInMs,
+ BatteryUtils.buildBatteryUsageTimeSummary(
+ mPrefContext,
+ entry.isSystemEntry(),
+ entry.mForegroundUsageTimeInMs,
+ entry.mBackgroundUsageTimeInMs,
entry.mScreenOnTimeInMs));
}
}
diff --git a/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBroadcastReceiver.java b/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBroadcastReceiver.java
index 006928a..9fb70fa 100644
--- a/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBroadcastReceiver.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBroadcastReceiver.java
@@ -36,23 +36,23 @@
/** A {@link BatteryUsageBroadcastReceiver} for battery usage data requesting. */
public final class BatteryUsageBroadcastReceiver extends BroadcastReceiver {
private static final String TAG = "BatteryUsageBroadcastReceiver";
+
/** An intent action to request Settings to clear cache data. */
public static final String ACTION_CLEAR_BATTERY_CACHE_DATA =
"com.android.settings.battery.action.CLEAR_BATTERY_CACHE_DATA";
+
/** An intent action for power is plugging. */
public static final String ACTION_BATTERY_PLUGGING =
"com.android.settings.battery.action.ACTION_BATTERY_PLUGGING";
+
/** An intent action for power is unplugging. */
public static final String ACTION_BATTERY_UNPLUGGING =
"com.android.settings.battery.action.ACTION_BATTERY_UNPLUGGING";
- @VisibleForTesting
- static long sBroadcastDelayFromBoot = Duration.ofMinutes(40).toMillis();
- @VisibleForTesting
- static boolean sIsDebugMode = Build.TYPE.equals("userdebug");
+ @VisibleForTesting static long sBroadcastDelayFromBoot = Duration.ofMinutes(40).toMillis();
+ @VisibleForTesting static boolean sIsDebugMode = Build.TYPE.equals("userdebug");
- @VisibleForTesting
- boolean mFetchBatteryUsageData = false;
+ @VisibleForTesting boolean mFetchBatteryUsageData = false;
private final ExecutorService mExecutor = Executors.newSingleThreadExecutor();
@@ -68,9 +68,10 @@
return;
}
DatabaseUtils.recordDateTime(context, action);
- final String fullChargeIntentAction = FeatureFactory.getFeatureFactory()
- .getPowerUsageFeatureProvider()
- .getFullChargeIntentAction();
+ final String fullChargeIntentAction =
+ FeatureFactory.getFeatureFactory()
+ .getPowerUsageFeatureProvider()
+ .getFullChargeIntentAction();
switch (action) {
case Intent.ACTION_BATTERY_LEVEL_CHANGED:
// Only when fullChargeIntentAction is ACTION_BATTERY_LEVEL_CHANGED,
@@ -117,13 +118,16 @@
final long broadcastDelay = sBroadcastDelayFromBoot - SystemClock.elapsedRealtime();
// If current boot time is smaller than expected delay, cancel sending the broadcast.
if (delayHourlyJobWhenBooting && broadcastDelay > 0) {
- Log.d(TAG, "cancel sendBroadcastToFetchUsageData when broadcastDelay is "
- + broadcastDelay + "ms.");
+ Log.d(
+ TAG,
+ "cancel sendBroadcastToFetchUsageData when broadcastDelay is "
+ + broadcastDelay
+ + "ms.");
return;
}
mFetchBatteryUsageData = true;
- BatteryUsageDataLoader.enqueueWork(context, /*isFullChargeStart=*/ true);
+ BatteryUsageDataLoader.enqueueWork(context, /* isFullChargeStart= */ true);
BootBroadcastReceiver.invokeJobRecheck(context);
}
@@ -131,7 +135,11 @@
final long timestamp = System.currentTimeMillis();
final Intent intent = BatteryUtils.getBatteryIntent(context);
final int batteryLevel = BatteryStatus.getBatteryLevel(intent);
- mExecutor.execute(() -> DatabaseUtils.sendBatteryEventData(context,
- ConvertUtils.convertToBatteryEvent(timestamp, batteryEventType, batteryLevel)));
+ mExecutor.execute(
+ () ->
+ DatabaseUtils.sendBatteryEventData(
+ context,
+ ConvertUtils.convertToBatteryEvent(
+ timestamp, batteryEventType, batteryLevel)));
}
}
diff --git a/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageContentProvider.java b/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageContentProvider.java
index edba7c4..4f2ee79 100644
--- a/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageContentProvider.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageContentProvider.java
@@ -53,6 +53,7 @@
/** Codes */
private static final int BATTERY_STATE_CODE = 1;
+
private static final int APP_USAGE_LATEST_TIMESTAMP_CODE = 2;
private static final int APP_USAGE_EVENT_CODE = 3;
private static final int BATTERY_EVENT_CODE = 4;
@@ -67,32 +68,32 @@
static {
sUriMatcher.addURI(
DatabaseUtils.AUTHORITY,
- /*path=*/ DatabaseUtils.BATTERY_STATE_TABLE,
- /*code=*/ BATTERY_STATE_CODE);
+ /* path= */ DatabaseUtils.BATTERY_STATE_TABLE,
+ /* code= */ BATTERY_STATE_CODE);
sUriMatcher.addURI(
DatabaseUtils.AUTHORITY,
- /*path=*/ DatabaseUtils.APP_USAGE_LATEST_TIMESTAMP_PATH,
- /*code=*/ APP_USAGE_LATEST_TIMESTAMP_CODE);
+ /* path= */ DatabaseUtils.APP_USAGE_LATEST_TIMESTAMP_PATH,
+ /* code= */ APP_USAGE_LATEST_TIMESTAMP_CODE);
sUriMatcher.addURI(
DatabaseUtils.AUTHORITY,
- /*path=*/ DatabaseUtils.APP_USAGE_EVENT_TABLE,
- /*code=*/ APP_USAGE_EVENT_CODE);
+ /* path= */ DatabaseUtils.APP_USAGE_EVENT_TABLE,
+ /* code= */ APP_USAGE_EVENT_CODE);
sUriMatcher.addURI(
DatabaseUtils.AUTHORITY,
- /*path=*/ DatabaseUtils.BATTERY_EVENT_TABLE,
- /*code=*/ BATTERY_EVENT_CODE);
+ /* path= */ DatabaseUtils.BATTERY_EVENT_TABLE,
+ /* code= */ BATTERY_EVENT_CODE);
sUriMatcher.addURI(
DatabaseUtils.AUTHORITY,
- /*path=*/ DatabaseUtils.LAST_FULL_CHARGE_TIMESTAMP_PATH,
- /*code=*/ LAST_FULL_CHARGE_TIMESTAMP_CODE);
+ /* path= */ DatabaseUtils.LAST_FULL_CHARGE_TIMESTAMP_PATH,
+ /* code= */ LAST_FULL_CHARGE_TIMESTAMP_CODE);
sUriMatcher.addURI(
DatabaseUtils.AUTHORITY,
- /*path=*/ DatabaseUtils.BATTERY_STATE_LATEST_TIMESTAMP_PATH,
- /*code=*/ BATTERY_STATE_LATEST_TIMESTAMP_CODE);
+ /* path= */ DatabaseUtils.BATTERY_STATE_LATEST_TIMESTAMP_PATH,
+ /* code= */ BATTERY_STATE_LATEST_TIMESTAMP_CODE);
sUriMatcher.addURI(
DatabaseUtils.AUTHORITY,
- /*path=*/ DatabaseUtils.BATTERY_USAGE_SLOT_TABLE,
- /*code=*/ BATTERY_USAGE_SLOT_CODE);
+ /* path= */ DatabaseUtils.BATTERY_USAGE_SLOT_TABLE,
+ /* code= */ BATTERY_USAGE_SLOT_CODE);
}
private Clock mClock;
@@ -177,7 +178,7 @@
throw new IllegalArgumentException("unknown URI: " + uri);
}
} catch (RuntimeException e) {
- if (e instanceof IllegalArgumentException) {
+ if (e instanceof IllegalArgumentException) {
throw e;
}
Log.e(TAG, "insert() from:" + uri + " error:", e);
@@ -208,8 +209,10 @@
} catch (RuntimeException e) {
Log.e(TAG, "query() from:" + uri + " error:", e);
}
- Log.d(TAG, String.format("getLastFullChargeTimestamp() in %d/ms",
- mClock.millis() - timestamp));
+ Log.d(
+ TAG,
+ String.format(
+ "getLastFullChargeTimestamp() in %d/ms", mClock.millis() - timestamp));
return cursor;
}
@@ -222,8 +225,11 @@
} catch (RuntimeException e) {
Log.e(TAG, "query() from:" + uri + " error:", e);
}
- Log.d(TAG, String.format("getBatteryStateLatestTimestamp() no later than %d in %d/ms",
- queryTimestamp, mClock.millis() - timestamp));
+ Log.d(
+ TAG,
+ String.format(
+ "getBatteryStateLatestTimestamp() no later than %d in %d/ms",
+ queryTimestamp, mClock.millis() - timestamp));
return cursor;
}
@@ -236,8 +242,11 @@
} catch (RuntimeException e) {
Log.e(TAG, "query() from:" + uri + " error:", e);
}
- Log.d(TAG, String.format("getBatteryStates() after %d in %d/ms",
- queryTimestamp, mClock.millis() - timestamp));
+ Log.d(
+ TAG,
+ String.format(
+ "getBatteryStates() after %d in %d/ms",
+ queryTimestamp, mClock.millis() - timestamp));
return cursor;
}
@@ -270,8 +279,11 @@
} catch (RuntimeException e) {
Log.e(TAG, "query() from:" + uri + " error:", e);
}
- Log.d(TAG, String.format("getAppUsageLatestTimestamp() for user %d in %d/ms",
- queryUserId, (mClock.millis() - timestamp)));
+ Log.d(
+ TAG,
+ String.format(
+ "getAppUsageLatestTimestamp() for user %d in %d/ms",
+ queryUserId, (mClock.millis() - timestamp)));
return cursor;
}
diff --git a/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageDataLoader.java b/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageDataLoader.java
index 4a336eb..ead580b 100644
--- a/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageDataLoader.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageDataLoader.java
@@ -39,21 +39,18 @@
private static final String TAG = "BatteryUsageDataLoader";
// For testing only.
- @VisibleForTesting
- static Supplier<List<BatteryEntry>> sFakeBatteryEntryListSupplier;
- @VisibleForTesting
- static Supplier<Map<Long, UsageEvents>> sFakeAppUsageEventsSupplier;
- @VisibleForTesting
- static Supplier<List<AppUsageEvent>> sFakeUsageEventsListSupplier;
+ @VisibleForTesting static Supplier<List<BatteryEntry>> sFakeBatteryEntryListSupplier;
+ @VisibleForTesting static Supplier<Map<Long, UsageEvents>> sFakeAppUsageEventsSupplier;
+ @VisibleForTesting static Supplier<List<AppUsageEvent>> sFakeUsageEventsListSupplier;
- private BatteryUsageDataLoader() {
- }
+ private BatteryUsageDataLoader() {}
static void enqueueWork(final Context context, final boolean isFullChargeStart) {
- AsyncTask.execute(() -> {
- Log.d(TAG, "loadUsageDataSafely() in the AsyncTask");
- loadUsageDataSafely(context.getApplicationContext(), isFullChargeStart);
- });
+ AsyncTask.execute(
+ () -> {
+ Log.d(TAG, "loadUsageDataSafely() in the AsyncTask");
+ loadUsageDataSafely(context.getApplicationContext(), isFullChargeStart);
+ });
}
@VisibleForTesting
@@ -62,19 +59,21 @@
final long currentTime = System.currentTimeMillis();
final BatteryUsageStats batteryUsageStats = DataProcessor.getBatteryUsageStats(context);
final List<BatteryEntry> batteryEntryList =
- sFakeBatteryEntryListSupplier != null ? sFakeBatteryEntryListSupplier.get()
- : DataProcessor.generateBatteryEntryListFromBatteryUsageStats(context,
- batteryUsageStats);
+ sFakeBatteryEntryListSupplier != null
+ ? sFakeBatteryEntryListSupplier.get()
+ : DataProcessor.generateBatteryEntryListFromBatteryUsageStats(
+ context, batteryUsageStats);
if (batteryEntryList == null || batteryEntryList.isEmpty()) {
Log.w(TAG, "getBatteryEntryList() returns null or empty content");
}
final long elapsedTime = System.currentTimeMillis() - currentTime;
Log.d(TAG, String.format("getBatteryUsageStats() in %d/ms", elapsedTime));
if (isFullChargeStart) {
- DatabaseUtils.recordDateTime(
- context, DatabaseUtils.KEY_LAST_LOAD_FULL_CHARGE_TIME);
- DatabaseUtils.sendBatteryEventData(context, ConvertUtils.convertToBatteryEvent(
- currentTime, BatteryEventType.FULL_CHARGED, 100));
+ DatabaseUtils.recordDateTime(context, DatabaseUtils.KEY_LAST_LOAD_FULL_CHARGE_TIME);
+ DatabaseUtils.sendBatteryEventData(
+ context,
+ ConvertUtils.convertToBatteryEvent(
+ currentTime, BatteryEventType.FULL_CHARGED, 100));
DatabaseUtils.removeDismissedPowerAnomalyKeys(context);
}
@@ -105,8 +104,11 @@
return;
}
final long elapsedTime = System.currentTimeMillis() - start;
- Log.d(TAG, String.format("loadAppUsageData() size=%d in %d/ms", appUsageEventList.size(),
- elapsedTime));
+ Log.d(
+ TAG,
+ String.format(
+ "loadAppUsageData() size=%d in %d/ms",
+ appUsageEventList.size(), elapsedTime));
// Uploads the AppUsageEvent data into database.
DatabaseUtils.sendAppUsageEventData(context, appUsageEventList);
}
@@ -114,18 +116,28 @@
private static void preprocessBatteryUsageSlots(final Context context) {
final long start = System.currentTimeMillis();
final Handler handler = new Handler(Looper.getMainLooper());
- final BatteryLevelData batteryLevelData = DataProcessManager.getBatteryLevelData(
- context, handler, /*isFromPeriodJob=*/ true,
- batteryDiffDataMap -> {
- DatabaseUtils.sendBatteryUsageSlotData(context,
- ConvertUtils.convertToBatteryUsageSlotList(batteryDiffDataMap));
- if (batteryDiffDataMap.values().stream().anyMatch(data ->
- data != null && (!data.getAppDiffEntryList().isEmpty()
- || !data.getSystemDiffEntryList().isEmpty()))) {
- FeatureFactory.getFeatureFactory().getPowerUsageFeatureProvider()
- .detectSettingsAnomaly(context, /* displayDrain= */ 0);
- }
- });
+ final BatteryLevelData batteryLevelData =
+ DataProcessManager.getBatteryLevelData(
+ context,
+ handler,
+ /* isFromPeriodJob= */ true,
+ batteryDiffDataMap -> {
+ DatabaseUtils.sendBatteryUsageSlotData(
+ context,
+ ConvertUtils.convertToBatteryUsageSlotList(batteryDiffDataMap));
+ if (batteryDiffDataMap.values().stream()
+ .anyMatch(
+ data ->
+ data != null
+ && (!data.getSystemDiffEntryList()
+ .isEmpty()
+ || !data.getAppDiffEntryList()
+ .isEmpty()))) {
+ FeatureFactory.getFeatureFactory()
+ .getPowerUsageFeatureProvider()
+ .detectSettingsAnomaly(context, /* displayDrain= */ 0);
+ }
+ });
if (batteryLevelData == null) {
Log.d(TAG, "preprocessBatteryUsageSlots() no new battery usage data.");
return;
@@ -133,9 +145,11 @@
DatabaseUtils.sendBatteryEventData(
context, ConvertUtils.convertToBatteryEventList(batteryLevelData));
- Log.d(TAG, String.format(
- "preprocessBatteryUsageSlots() batteryLevelData=%s in %d/ms",
- batteryLevelData, System.currentTimeMillis() - start));
+ Log.d(
+ TAG,
+ String.format(
+ "preprocessBatteryUsageSlots() batteryLevelData=%s in %d/ms",
+ batteryLevelData, System.currentTimeMillis() - start));
}
private static void loadUsageDataSafely(
@@ -148,8 +162,10 @@
loadAppUsageData(context);
preprocessBatteryUsageSlots(context);
}
- Log.d(TAG, String.format(
- "loadUsageDataSafely() in %d/ms", System.currentTimeMillis() - start));
+ Log.d(
+ TAG,
+ String.format(
+ "loadUsageDataSafely() in %d/ms", System.currentTimeMillis() - start));
} catch (RuntimeException e) {
Log.e(TAG, "loadUsageData:", e);
}
diff --git a/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageStatsLoader.java b/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageStatsLoader.java
index 7f112ae..26cd096 100644
--- a/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageStatsLoader.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageStatsLoader.java
@@ -24,9 +24,7 @@
import com.android.settingslib.utils.AsyncLoaderCompat;
-/**
- * Loader to get new {@link BatteryUsageStats} in the background
- */
+/** Loader to get new {@link BatteryUsageStats} in the background */
public class BatteryUsageStatsLoader extends AsyncLoaderCompat<BatteryUsageStats> {
private static final String TAG = "BatteryUsageStatsLoader";
private final BatteryStatsManager mBatteryStatsManager;
@@ -55,6 +53,5 @@
}
@Override
- protected void onDiscardResult(BatteryUsageStats result) {
- }
+ protected void onDiscardResult(BatteryUsageStats result) {}
}
diff --git a/src/com/android/settings/fuelgauge/batteryusage/BootBroadcastReceiver.java b/src/com/android/settings/fuelgauge/batteryusage/BootBroadcastReceiver.java
index dc8dfb6..94f9dc3 100644
--- a/src/com/android/settings/fuelgauge/batteryusage/BootBroadcastReceiver.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/BootBroadcastReceiver.java
@@ -103,6 +103,6 @@
}
private static void refreshJobs(Context context) {
- PeriodicJobManager.getInstance(context).refreshJob(/*fromBoot=*/ true);
+ PeriodicJobManager.getInstance(context).refreshJob(/* fromBoot= */ true);
}
}
diff --git a/src/com/android/settings/fuelgauge/batteryusage/ConvertUtils.java b/src/com/android/settings/fuelgauge/batteryusage/ConvertUtils.java
index 4eef3a0..ae93734 100644
--- a/src/com/android/settings/fuelgauge/batteryusage/ConvertUtils.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/ConvertUtils.java
@@ -57,15 +57,16 @@
/** A fake package name to represent no BatteryEntry data. */
public static final String FAKE_PACKAGE_NAME = "fake_package";
- @IntDef(prefix = {"CONSUMER_TYPE"}, value = {
- CONSUMER_TYPE_UNKNOWN,
- CONSUMER_TYPE_UID_BATTERY,
- CONSUMER_TYPE_USER_BATTERY,
- CONSUMER_TYPE_SYSTEM_BATTERY,
- })
+ @IntDef(
+ prefix = {"CONSUMER_TYPE"},
+ value = {
+ CONSUMER_TYPE_UNKNOWN,
+ CONSUMER_TYPE_UID_BATTERY,
+ CONSUMER_TYPE_USER_BATTERY,
+ CONSUMER_TYPE_SYSTEM_BATTERY,
+ })
@Retention(RetentionPolicy.SOURCE)
- public @interface ConsumerType {
- }
+ public @interface ConsumerType {}
public static final int CONSUMER_TYPE_UNKNOWN = 0;
public static final int CONSUMER_TYPE_UID_BATTERY = 1;
@@ -75,11 +76,9 @@
public static final int DEFAULT_USAGE_SOURCE = UsageStatsManager.USAGE_SOURCE_CURRENT_ACTIVITY;
public static final int EMPTY_USAGE_SOURCE = -1;
- @VisibleForTesting
- static int sUsageSource = EMPTY_USAGE_SOURCE;
+ @VisibleForTesting static int sUsageSource = EMPTY_USAGE_SOURCE;
- private ConvertUtils() {
- }
+ private ConvertUtils() {}
/** Whether {@code consumerType} is app consumer or not. */
public static boolean isUidConsumer(final int consumerType) {
@@ -109,17 +108,19 @@
final ContentValues values = new ContentValues();
if (entry != null && batteryUsageStats != null) {
values.put(BatteryHistEntry.KEY_UID, Long.valueOf(entry.getUid()));
- values.put(BatteryHistEntry.KEY_USER_ID,
+ values.put(
+ BatteryHistEntry.KEY_USER_ID,
Long.valueOf(UserHandle.getUserId(entry.getUid())));
final String packageName = entry.getDefaultPackageName();
values.put(BatteryHistEntry.KEY_PACKAGE_NAME, packageName != null ? packageName : "");
- values.put(BatteryHistEntry.KEY_CONSUMER_TYPE,
- Integer.valueOf(entry.getConsumerType()));
+ values.put(
+ BatteryHistEntry.KEY_CONSUMER_TYPE, Integer.valueOf(entry.getConsumerType()));
} else {
values.put(BatteryHistEntry.KEY_PACKAGE_NAME, FAKE_PACKAGE_NAME);
}
values.put(BatteryHistEntry.KEY_TIMESTAMP, Long.valueOf(timestamp));
- values.put(BatteryHistEntry.KEY_IS_FULL_CHARGE_CYCLE_START,
+ values.put(
+ BatteryHistEntry.KEY_IS_FULL_CHARGE_CYCLE_START,
Boolean.valueOf(isFullChargeStart));
final BatteryInformation batteryInformation =
constructBatteryInformation(
@@ -129,7 +130,8 @@
batteryStatus,
batteryHealth,
bootTimestamp);
- values.put(BatteryHistEntry.KEY_BATTERY_INFORMATION,
+ values.put(
+ BatteryHistEntry.KEY_BATTERY_INFORMATION,
convertBatteryInformationToString(batteryInformation));
// Save the BatteryInformation unencoded string into database for debugging.
if (Build.TYPE.equals("userdebug")) {
@@ -166,7 +168,8 @@
final BatteryUsageSlot batteryUsageSlot) {
final ContentValues values = new ContentValues(2);
values.put(BatteryUsageSlotEntity.KEY_TIMESTAMP, batteryUsageSlot.getStartTimestamp());
- values.put(BatteryUsageSlotEntity.KEY_BATTERY_USAGE_SLOT,
+ values.put(
+ BatteryUsageSlotEntity.KEY_BATTERY_USAGE_SLOT,
Base64.encodeToString(batteryUsageSlot.toByteArray(), Base64.DEFAULT));
return values;
}
@@ -200,33 +203,36 @@
/** Converts to {@link BatteryHistEntry} */
public static BatteryHistEntry convertToBatteryHistEntry(
- BatteryEntry entry,
- BatteryUsageStats batteryUsageStats) {
+ BatteryEntry entry, BatteryUsageStats batteryUsageStats) {
return new BatteryHistEntry(
convertBatteryEntryToContentValues(
entry,
batteryUsageStats,
- /*batteryLevel=*/ 0,
- /*batteryStatus=*/ 0,
- /*batteryHealth=*/ 0,
- /*bootTimestamp=*/ 0,
- /*timestamp=*/ 0,
- /*isFullChargeStart=*/ false));
+ /* batteryLevel= */ 0,
+ /* batteryStatus= */ 0,
+ /* batteryHealth= */ 0,
+ /* bootTimestamp= */ 0,
+ /* timestamp= */ 0,
+ /* isFullChargeStart= */ false));
}
/** Converts from {@link Event} to {@link AppUsageEvent} */
@Nullable
public static AppUsageEvent convertToAppUsageEvent(
- Context context, IUsageStatsManager usageStatsManager, final Event event,
+ Context context,
+ IUsageStatsManager usageStatsManager,
+ final Event event,
final long userId) {
final String packageName = event.getPackageName();
if (packageName == null) {
// See b/190609174: Event package names should never be null, but sometimes they are.
// Note that system events like device shutting down should still come with the android
// package name.
- Log.w(TAG, String.format(
- "Ignoring a usage event with null package name (timestamp=%d, type=%d)",
- event.getTimeStamp(), event.getEventType()));
+ Log.w(
+ TAG,
+ String.format(
+ "Ignoring a usage event with null package name (timestamp=%d, type=%d)",
+ event.getTimeStamp(), event.getEventType()));
return null;
}
@@ -246,13 +252,16 @@
getEffectivePackageName(
context, usageStatsManager, packageName, taskRootPackageName);
try {
- final long uid = context
- .getPackageManager()
- .getPackageUidAsUser(effectivePackageName, (int) userId);
+ final long uid =
+ context.getPackageManager()
+ .getPackageUidAsUser(effectivePackageName, (int) userId);
appUsageEventBuilder.setUid(uid);
} catch (PackageManager.NameNotFoundException e) {
- Log.w(TAG, String.format(
- "Fail to get uid for package %s of user %d)", event.getPackageName(), userId));
+ Log.w(
+ TAG,
+ String.format(
+ "Fail to get uid for package %s of user %d)",
+ event.getPackageName(), userId));
return null;
}
@@ -300,8 +309,7 @@
eventBuilder.setTimestamp(getLongFromCursor(cursor, BatteryEventEntity.KEY_TIMESTAMP));
eventBuilder.setType(
BatteryEventType.forNumber(
- getIntegerFromCursor(
- cursor, BatteryEventEntity.KEY_BATTERY_EVENT_TYPE)));
+ getIntegerFromCursor(cursor, BatteryEventEntity.KEY_BATTERY_EVENT_TYPE)));
eventBuilder.setBatteryLevel(
getIntegerFromCursor(cursor, BatteryEventEntity.KEY_BATTERY_LEVEL));
return eventBuilder.build();
@@ -315,10 +323,11 @@
batteryLevelData.getHourlyBatteryLevelsPerDay();
for (BatteryLevelData.PeriodBatteryLevelData oneDayData : levelDataList) {
for (int hourIndex = 0; hourIndex < oneDayData.getLevels().size() - 1; hourIndex++) {
- batteryEventList.add(convertToBatteryEvent(
- oneDayData.getTimestamps().get(hourIndex),
- BatteryEventType.EVEN_HOUR,
- oneDayData.getLevels().get(hourIndex)));
+ batteryEventList.add(
+ convertToBatteryEvent(
+ oneDayData.getTimestamps().get(hourIndex),
+ BatteryEventType.EVEN_HOUR,
+ oneDayData.getLevels().get(hourIndex)));
}
}
return batteryEventList;
@@ -329,8 +338,9 @@
final BatteryUsageSlot defaultInstance = BatteryUsageSlot.getDefaultInstance();
final int columnIndex =
cursor.getColumnIndex(BatteryUsageSlotEntity.KEY_BATTERY_USAGE_SLOT);
- return columnIndex < 0 ? defaultInstance : BatteryUtils.parseProtoFromString(
- cursor.getString(columnIndex), defaultInstance);
+ return columnIndex < 0
+ ? defaultInstance
+ : BatteryUtils.parseProtoFromString(cursor.getString(columnIndex), defaultInstance);
}
/** Converts from {@link Map<Long, BatteryDiffData>} to {@link List<BatteryUsageSlot>} */
@@ -343,18 +353,22 @@
return batteryUsageSlotList;
}
- /** Converts UTC timestamp to local time string for logging only, so use the US locale for
- * better readability in debugging. */
+ /**
+ * Converts UTC timestamp to local time string for logging only, so use the US locale for better
+ * readability in debugging.
+ */
public static String utcToLocalTimeForLogging(long timestamp) {
final Locale locale = Locale.US;
- final String pattern =
- DateFormat.getBestDateTimePattern(locale, "MMM dd,yyyy HH:mm:ss");
+ final String pattern = DateFormat.getBestDateTimePattern(locale, "MMM dd,yyyy HH:mm:ss");
return DateFormat.format(pattern, timestamp).toString();
}
/** Converts UTC timestamp to local time hour data. */
- public static String utcToLocalTimeHour(final Context context, final long timestamp,
- final boolean is24HourFormat, final boolean showMinute) {
+ public static String utcToLocalTimeHour(
+ final Context context,
+ final long timestamp,
+ final boolean is24HourFormat,
+ final boolean showMinute) {
final Locale locale = getLocale(context);
// e.g. for 12-hour format: 9 PM
// e.g. for 24-hour format: 09:00
@@ -367,8 +381,8 @@
public static String utcToLocalTimeDayOfWeek(
final Context context, final long timestamp, final boolean isAbbreviation) {
final Locale locale = getLocale(context);
- final String pattern = DateFormat.getBestDateTimePattern(locale,
- isAbbreviation ? "E" : "EEEE");
+ final String pattern =
+ DateFormat.getBestDateTimePattern(locale, isAbbreviation ? "E" : "EEEE");
return DateFormat.format(pattern, timestamp).toString();
}
@@ -377,10 +391,8 @@
if (context == null) {
return Locale.getDefault();
}
- final LocaleList locales =
- context.getResources().getConfiguration().getLocales();
- return locales != null && !locales.isEmpty() ? locales.get(0)
- : Locale.getDefault();
+ final LocaleList locales = context.getResources().getConfiguration().getLocales();
+ return locales != null && !locales.isEmpty() ? locales.get(0) : Locale.getDefault();
}
/**
@@ -396,14 +408,14 @@
*/
@VisibleForTesting
static String getEffectivePackageName(
- Context context, IUsageStatsManager usageStatsManager, final String packageName,
+ Context context,
+ IUsageStatsManager usageStatsManager,
+ final String packageName,
final String taskRootPackageName) {
final int usageSource = getUsageSource(context, usageStatsManager);
switch (usageSource) {
case UsageStatsManager.USAGE_SOURCE_TASK_ROOT_ACTIVITY:
- return !TextUtils.isEmpty(taskRootPackageName)
- ? taskRootPackageName
- : packageName;
+ return !TextUtils.isEmpty(taskRootPackageName) ? taskRootPackageName : packageName;
case UsageStatsManager.USAGE_SOURCE_CURRENT_ACTIVITY:
return packageName;
default:
@@ -432,9 +444,13 @@
try {
String taskRootPackageName = event.getTaskRootPackageName();
if (taskRootPackageName == null) {
- Log.w(TAG, String.format(
- "Null task root in event with timestamp %d, type=%d, package %s",
- event.getTimeStamp(), event.getEventType(), event.getPackageName()));
+ Log.w(
+ TAG,
+ String.format(
+ "Null task root in event with timestamp %d, type=%d, package %s",
+ event.getTimeStamp(),
+ event.getEventType(),
+ event.getPackageName()));
}
return taskRootPackageName;
} catch (NoSuchMethodError e) {
@@ -464,21 +480,24 @@
}
private static BatteryUsageDiff convertToBatteryUsageDiff(BatteryDiffEntry batteryDiffEntry) {
- BatteryUsageDiff.Builder builder = BatteryUsageDiff.newBuilder()
- .setUid(batteryDiffEntry.mUid)
- .setUserId(batteryDiffEntry.mUserId)
- .setIsHidden(batteryDiffEntry.mIsHidden)
- .setComponentId(batteryDiffEntry.mComponentId)
- .setConsumerType(batteryDiffEntry.mConsumerType)
- .setConsumePower(batteryDiffEntry.mConsumePower)
- .setForegroundUsageConsumePower(batteryDiffEntry.mForegroundUsageConsumePower)
- .setBackgroundUsageConsumePower(batteryDiffEntry.mBackgroundUsageConsumePower)
- .setForegroundServiceUsageConsumePower(
- batteryDiffEntry.mForegroundServiceUsageConsumePower)
- .setCachedUsageConsumePower(batteryDiffEntry.mCachedUsageConsumePower)
- .setForegroundUsageTime(batteryDiffEntry.mForegroundUsageTimeInMs)
- .setBackgroundUsageTime(batteryDiffEntry.mBackgroundUsageTimeInMs)
- .setScreenOnTime(batteryDiffEntry.mScreenOnTimeInMs);
+ BatteryUsageDiff.Builder builder =
+ BatteryUsageDiff.newBuilder()
+ .setUid(batteryDiffEntry.mUid)
+ .setUserId(batteryDiffEntry.mUserId)
+ .setIsHidden(batteryDiffEntry.mIsHidden)
+ .setComponentId(batteryDiffEntry.mComponentId)
+ .setConsumerType(batteryDiffEntry.mConsumerType)
+ .setConsumePower(batteryDiffEntry.mConsumePower)
+ .setForegroundUsageConsumePower(
+ batteryDiffEntry.mForegroundUsageConsumePower)
+ .setBackgroundUsageConsumePower(
+ batteryDiffEntry.mBackgroundUsageConsumePower)
+ .setForegroundServiceUsageConsumePower(
+ batteryDiffEntry.mForegroundServiceUsageConsumePower)
+ .setCachedUsageConsumePower(batteryDiffEntry.mCachedUsageConsumePower)
+ .setForegroundUsageTime(batteryDiffEntry.mForegroundUsageTimeInMs)
+ .setBackgroundUsageTime(batteryDiffEntry.mBackgroundUsageTimeInMs)
+ .setScreenOnTime(batteryDiffEntry.mScreenOnTimeInMs);
if (batteryDiffEntry.mKey != null) {
builder.setKey(batteryDiffEntry.mKey);
}
@@ -496,12 +515,13 @@
if (batteryDiffData == null) {
return BatteryUsageSlot.getDefaultInstance();
}
- final BatteryUsageSlot.Builder builder = BatteryUsageSlot.newBuilder()
- .setStartTimestamp(batteryDiffData.getStartTimestamp())
- .setEndTimestamp(batteryDiffData.getEndTimestamp())
- .setStartBatteryLevel(batteryDiffData.getStartBatteryLevel())
- .setEndBatteryLevel(batteryDiffData.getEndBatteryLevel())
- .setScreenOnTime(batteryDiffData.getScreenOnTime());
+ final BatteryUsageSlot.Builder builder =
+ BatteryUsageSlot.newBuilder()
+ .setStartTimestamp(batteryDiffData.getStartTimestamp())
+ .setEndTimestamp(batteryDiffData.getEndTimestamp())
+ .setStartBatteryLevel(batteryDiffData.getStartBatteryLevel())
+ .setEndBatteryLevel(batteryDiffData.getEndBatteryLevel())
+ .setScreenOnTime(batteryDiffData.getScreenOnTime());
for (BatteryDiffEntry batteryDiffEntry : batteryDiffData.getAppDiffEntryList()) {
builder.addAppUsage(convertToBatteryUsageDiff(batteryDiffEntry));
}
@@ -557,7 +577,7 @@
systemDiffEntries,
systemAppsPackageNames,
systemAppsUids,
- /*isAccumulated=*/ false);
+ /* isAccumulated= */ false);
}
private static BatteryInformation constructBatteryInformation(
@@ -568,15 +588,13 @@
final int batteryHealth,
final long bootTimestamp) {
final DeviceBatteryState deviceBatteryState =
- DeviceBatteryState
- .newBuilder()
+ DeviceBatteryState.newBuilder()
.setBatteryLevel(batteryLevel)
.setBatteryStatus(batteryStatus)
.setBatteryHealth(batteryHealth)
.build();
final BatteryInformation.Builder batteryInformationBuilder =
- BatteryInformation
- .newBuilder()
+ BatteryInformation.newBuilder()
.setDeviceBatteryState(deviceBatteryState)
.setBootTimestamp(bootTimestamp)
.setZoneId(TimeZone.getDefault().getID());
diff --git a/src/com/android/settings/fuelgauge/batteryusage/DataProcessManager.java b/src/com/android/settings/fuelgauge/batteryusage/DataProcessManager.java
index 99cf354..b3bcb47 100644
--- a/src/com/android/settings/fuelgauge/batteryusage/DataProcessManager.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/DataProcessManager.java
@@ -41,27 +41,29 @@
/**
* Manages the async tasks to process battery and app usage data.
*
- * For now, there exist 4 async tasks in this manager:
+ * <p>For now, there exist 4 async tasks in this manager:
+ *
* <ul>
- * <li>loadCurrentBatteryHistoryMap: load the latest battery history data from battery stats
- * service.</li>
- * <li>loadCurrentAppUsageList: load the latest app usage data (last timestamp in database - now)
- * from usage stats service.</li>
- * <li>loadDatabaseAppUsageList: load the necessary app usage data (after last full charge) from
- * database</li>
- * <li>loadAndApplyBatteryMapFromServiceOnly: load all the battery history data (should be after
- * last full charge) from battery stats service and apply the callback function directly</li>
+ * <li>loadCurrentBatteryHistoryMap: load the latest battery history data from battery stats
+ * service.
+ * <li>loadCurrentAppUsageList: load the latest app usage data (last timestamp in database - now)
+ * from usage stats service.
+ * <li>loadDatabaseAppUsageList: load the necessary app usage data (after last full charge) from
+ * database
+ * <li>loadAndApplyBatteryMapFromServiceOnly: load all the battery history data (should be after
+ * last full charge) from battery stats service and apply the callback function directly
* </ul>
*
* If there is battery level data, the first 3 async tasks will be started at the same time.
+ *
* <ul>
- * <li>After loadCurrentAppUsageList and loadDatabaseAppUsageList complete, which means all app
- * usage data has been loaded, the intermediate usage result will be generated.</li>
- * <li>Then after all 3 async tasks complete, the battery history data and app usage data will be
- * combined to generate final data used for UI rendering. And the callback function will be
- * applied.</li>
- * <li>If current user is locked, which means we couldn't get the latest app usage data,
- * screen-on time will not be shown in the UI and empty screen-on time data will be returned.</li>
+ * <li>After loadCurrentAppUsageList and loadDatabaseAppUsageList complete, which means all app
+ * usage data has been loaded, the intermediate usage result will be generated.
+ * <li>Then after all 3 async tasks complete, the battery history data and app usage data will be
+ * combined to generate final data used for UI rendering. And the callback function will be
+ * applied.
+ * <li>If current user is locked, which means we couldn't get the latest app usage data, screen-on
+ * time will not be shown in the UI and empty screen-on time data will be returned.
* </ul>
*
* If there is no battery level data, the 4th async task will be started only and the usage map
@@ -73,8 +75,7 @@
List.of(BatteryEventType.POWER_CONNECTED, BatteryEventType.POWER_DISCONNECTED);
// For testing only.
- @VisibleForTesting
- static Map<Long, Map<String, BatteryHistEntry>> sFakeBatteryHistoryMap;
+ @VisibleForTesting static Map<Long, Map<String, BatteryHistEntry>> sFakeBatteryHistoryMap;
// Raw start timestamp with round to the nearest hour.
private final long mRawStartTimestamp;
@@ -101,24 +102,24 @@
/**
* The indexed {@link AppUsagePeriod} list data for each corresponding time slot.
- * <p>{@code Long} stands for the userId.</p>
- * <p>{@code String} stands for the packageName.</p>
+ *
+ * <p>{@code Long} stands for the userId.
+ *
+ * <p>{@code String} stands for the packageName.
*/
private Map<Integer, Map<Integer, Map<Long, Map<String, List<AppUsagePeriod>>>>>
mAppUsagePeriodMap;
/**
- * A callback listener when all the data is processed.
- * This happens when all the async tasks complete and generate the final callback.
+ * A callback listener when all the data is processed. This happens when all the async tasks
+ * complete and generate the final callback.
*/
public interface OnBatteryDiffDataMapLoadedListener {
/** The callback function when all the data is processed. */
void onBatteryDiffDataMapLoaded(Map<Long, BatteryDiffData> batteryDiffDataMap);
}
- /**
- * Constructor when there exists battery level data.
- */
+ /** Constructor when there exists battery level data. */
DataProcessManager(
Context context,
Handler handler,
@@ -137,9 +138,7 @@
mBatteryHistoryMap = batteryHistoryMap;
}
- /**
- * Constructor when there is no battery level data.
- */
+ /** Constructor when there is no battery level data. */
DataProcessManager(
Context context,
Handler handler,
@@ -157,16 +156,12 @@
mShowScreenOnTime = false;
}
- /**
- * Starts the async tasks to load battery history data and app usage data.
- */
+ /** Starts the async tasks to load battery history data and app usage data. */
public void start() {
- start(/*isFromPeriodJob=*/ false);
+ start(/* isFromPeriodJob= */ false);
}
- /**
- * Starts the async tasks to load battery history data and app usage data.
- */
+ /** Starts the async tasks to load battery history data and app usage data. */
public void start(boolean isFromPeriodJob) {
// If we have battery level data, load the battery history map and app usage simultaneously.
if (mHourlyBatteryLevelsPerDay != null) {
@@ -236,10 +231,13 @@
final long startTime = System.currentTimeMillis();
// Loads the current battery usage data from the battery stats service.
final Map<String, BatteryHistEntry> currentBatteryHistoryMap =
- DataProcessor.getCurrentBatteryHistoryMapFromStatsService(
- mContext);
- Log.d(TAG, String.format("execute loadCurrentBatteryHistoryMap size=%d in %d/ms",
- currentBatteryHistoryMap.size(), (System.currentTimeMillis() - startTime)));
+ DataProcessor.getCurrentBatteryHistoryMapFromStatsService(mContext);
+ Log.d(
+ TAG,
+ String.format(
+ "execute loadCurrentBatteryHistoryMap size=%d in %d/ms",
+ currentBatteryHistoryMap.size(),
+ (System.currentTimeMillis() - startTime)));
return currentBatteryHistoryMap;
}
@@ -248,10 +246,11 @@
final Map<String, BatteryHistEntry> currentBatteryHistoryMap) {
if (mBatteryHistoryMap != null) {
// Replaces the placeholder in mBatteryHistoryMap.
- for (Map.Entry<Long, Map<String, BatteryHistEntry>> mapEntry
- : mBatteryHistoryMap.entrySet()) {
- if (mapEntry.getValue().containsKey(
- DataProcessor.CURRENT_TIME_BATTERY_HISTORY_PLACEHOLDER)) {
+ for (Map.Entry<Long, Map<String, BatteryHistEntry>> mapEntry :
+ mBatteryHistoryMap.entrySet()) {
+ if (mapEntry.getValue()
+ .containsKey(
+ DataProcessor.CURRENT_TIME_BATTERY_HISTORY_PLACEHOLDER)) {
mapEntry.setValue(currentBatteryHistoryMap);
}
}
@@ -302,14 +301,17 @@
final List<AppUsageEvent> appUsageEventList =
DataProcessor.generateAppUsageEventListFromUsageEvents(
mContext, usageEventsMap);
- Log.d(TAG, String.format("execute loadCurrentAppUsageList size=%d in %d/ms",
- appUsageEventList.size(), (System.currentTimeMillis() - startTime)));
+ Log.d(
+ TAG,
+ String.format(
+ "execute loadCurrentAppUsageList size=%d in %d/ms",
+ appUsageEventList.size(),
+ (System.currentTimeMillis() - startTime)));
return appUsageEventList;
}
@Override
- protected void onPostExecute(
- final List<AppUsageEvent> currentAppUsageList) {
+ protected void onPostExecute(final List<AppUsageEvent> currentAppUsageList) {
if (currentAppUsageList == null || currentAppUsageList.isEmpty()) {
Log.d(TAG, "currentAppUsageList is null or empty");
} else {
@@ -333,16 +335,21 @@
// Loads the app usage data from the database.
final List<AppUsageEvent> appUsageEventList =
DatabaseUtils.getAppUsageEventForUsers(
- mContext, Calendar.getInstance(), getCurrentUserIds(),
+ mContext,
+ Calendar.getInstance(),
+ getCurrentUserIds(),
mRawStartTimestamp);
- Log.d(TAG, String.format("execute loadDatabaseAppUsageList size=%d in %d/ms",
- appUsageEventList.size(), (System.currentTimeMillis() - startTime)));
+ Log.d(
+ TAG,
+ String.format(
+ "execute loadDatabaseAppUsageList size=%d in %d/ms",
+ appUsageEventList.size(),
+ (System.currentTimeMillis() - startTime)));
return appUsageEventList;
}
@Override
- protected void onPostExecute(
- final List<AppUsageEvent> databaseAppUsageList) {
+ protected void onPostExecute(final List<AppUsageEvent> databaseAppUsageList) {
if (databaseAppUsageList == null || databaseAppUsageList.isEmpty()) {
Log.d(TAG, "databaseAppUsageList is null or empty");
} else {
@@ -362,17 +369,20 @@
// Loads the battery event data from the database.
final List<BatteryEvent> batteryEventList =
DatabaseUtils.getBatteryEvents(
- mContext, Calendar.getInstance(), mRawStartTimestamp,
+ mContext,
+ Calendar.getInstance(),
+ mRawStartTimestamp,
POWER_CONNECTION_EVENTS);
- Log.d(TAG, String.format(
- "execute loadPowerConnectionBatteryEventList size=%d in %d/ms",
- batteryEventList.size(), (System.currentTimeMillis() - startTime)));
+ Log.d(
+ TAG,
+ String.format(
+ "execute loadPowerConnectionBatteryEventList size=%d in %d/ms",
+ batteryEventList.size(), (System.currentTimeMillis() - startTime)));
return batteryEventList;
}
@Override
- protected void onPostExecute(
- final List<BatteryEvent> batteryEventList) {
+ protected void onPostExecute(final List<BatteryEvent> batteryEventList) {
if (batteryEventList == null || batteryEventList.isEmpty()) {
Log.d(TAG, "batteryEventList is null or empty");
} else {
@@ -394,8 +404,12 @@
final List<BatteryUsageSlot> batteryUsageSlotList =
DatabaseUtils.getBatteryUsageSlots(
mContext, Calendar.getInstance(), mLastFullChargeTimestamp);
- Log.d(TAG, String.format("execute loadBatteryUsageSlotList size=%d in %d/ms",
- batteryUsageSlotList.size(), (System.currentTimeMillis() - startTime)));
+ Log.d(
+ TAG,
+ String.format(
+ "execute loadBatteryUsageSlotList size=%d in %d/ms",
+ batteryUsageSlotList.size(),
+ (System.currentTimeMillis() - startTime)));
return batteryUsageSlotList;
}
@@ -420,11 +434,16 @@
final long startTime = System.currentTimeMillis();
final Map<Long, BatteryDiffData> batteryDiffDataMap =
DataProcessor.getBatteryDiffDataMapFromStatsService(
- mContext, mRawStartTimestamp, getSystemAppsPackageNames(),
+ mContext,
+ mRawStartTimestamp,
+ getSystemAppsPackageNames(),
getSystemAppsUids());
- Log.d(TAG, String.format(
- "execute loadAndApplyBatteryMapFromServiceOnly size=%d in %d/ms",
- batteryDiffDataMap.size(), (System.currentTimeMillis() - startTime)));
+ Log.d(
+ TAG,
+ String.format(
+ "execute loadAndApplyBatteryMapFromServiceOnly size=%d in %d/ms",
+ batteryDiffDataMap.size(),
+ (System.currentTimeMillis() - startTime)));
return batteryDiffDataMap;
}
@@ -432,9 +451,10 @@
protected void onPostExecute(final Map<Long, BatteryDiffData> batteryDiffDataMap) {
// Post results back to main thread to refresh UI.
if (mHandler != null && mCallbackFunction != null) {
- mHandler.post(() -> {
- mCallbackFunction.onBatteryDiffDataMapLoaded(batteryDiffDataMap);
- });
+ mHandler.post(
+ () -> {
+ mCallbackFunction.onBatteryDiffDataMapLoaded(batteryDiffDataMap);
+ });
}
}
}.execute();
@@ -456,8 +476,12 @@
}
// Generates the indexed AppUsagePeriod list data for each corresponding time slot for
// further use.
- mAppUsagePeriodMap = DataProcessor.generateAppUsagePeriodMap(
- mContext, mHourlyBatteryLevelsPerDay, mAppUsageEventList, mBatteryEventList);
+ mAppUsagePeriodMap =
+ DataProcessor.generateAppUsagePeriodMap(
+ mContext,
+ mHourlyBatteryLevelsPerDay,
+ mAppUsageEventList,
+ mBatteryEventList);
}
private void tryToGenerateFinalDataAndApplyCallback() {
@@ -479,18 +503,28 @@
final long startTime = System.currentTimeMillis();
final Map<Long, BatteryDiffData> batteryDiffDataMap = new ArrayMap<>();
for (BatteryUsageSlot batteryUsageSlot : mBatteryUsageSlotList) {
- batteryDiffDataMap.put(batteryUsageSlot.getStartTimestamp(),
+ batteryDiffDataMap.put(
+ batteryUsageSlot.getStartTimestamp(),
ConvertUtils.convertToBatteryDiffData(
- mContext, batteryUsageSlot, getSystemAppsPackageNames(),
+ mContext,
+ batteryUsageSlot,
+ getSystemAppsPackageNames(),
getSystemAppsUids()));
}
- batteryDiffDataMap.putAll(DataProcessor.getBatteryDiffDataMap(mContext,
- mHourlyBatteryLevelsPerDay, mBatteryHistoryMap, mAppUsagePeriodMap,
- getSystemAppsPackageNames(), getSystemAppsUids()));
+ batteryDiffDataMap.putAll(
+ DataProcessor.getBatteryDiffDataMap(
+ mContext,
+ mHourlyBatteryLevelsPerDay,
+ mBatteryHistoryMap,
+ mAppUsagePeriodMap,
+ getSystemAppsPackageNames(),
+ getSystemAppsUids()));
- Log.d(TAG, String.format(
- "execute generateFinalDataAndApplyCallback size=%d in %d/ms",
- batteryDiffDataMap.size(), System.currentTimeMillis() - startTime));
+ Log.d(
+ TAG,
+ String.format(
+ "execute generateFinalDataAndApplyCallback size=%d in %d/ms",
+ batteryDiffDataMap.size(), System.currentTimeMillis() - startTime));
return batteryDiffDataMap;
}
@@ -498,9 +532,10 @@
protected void onPostExecute(final Map<Long, BatteryDiffData> batteryDiffDataMap) {
// Post results back to main thread to refresh UI.
if (mHandler != null && mCallbackFunction != null) {
- mHandler.post(() -> {
- mCallbackFunction.onBatteryDiffDataMapLoaded(batteryDiffDataMap);
- });
+ mHandler.post(
+ () -> {
+ mCallbackFunction.onBatteryDiffDataMapLoaded(batteryDiffDataMap);
+ });
}
}
}.execute();
@@ -537,8 +572,7 @@
}
private int getWorkProfileUserId() {
- final UserHandle userHandle =
- Utils.getManagedProfile(mUserManager);
+ final UserHandle userHandle = Utils.getManagedProfile(mUserManager);
return userHandle != null ? userHandle.getIdentifier() : Integer.MIN_VALUE;
}
@@ -558,8 +592,8 @@
/**
* @return Returns battery level data and start async task to compute battery diff usage data
- * and load app labels + icons.
- * Returns null if the input is invalid or not having at least 2 hours data.
+ * and load app labels + icons. Returns null if the input is invalid or not having at least
+ * 2 hours data.
*/
@Nullable
public static BatteryLevelData getBatteryLevelData(
@@ -571,16 +605,28 @@
final long lastFullChargeTime = DatabaseUtils.getLastFullChargeTime(context);
final List<BatteryEvent> batteryLevelRecordEvents =
DatabaseUtils.getBatteryEvents(
- context, Calendar.getInstance(), lastFullChargeTime,
+ context,
+ Calendar.getInstance(),
+ lastFullChargeTime,
DatabaseUtils.BATTERY_LEVEL_RECORD_EVENTS);
- final long startTimestamp = batteryLevelRecordEvents.isEmpty()
- ? lastFullChargeTime : batteryLevelRecordEvents.get(0).getTimestamp();
- final BatteryLevelData batteryLevelData = getPeriodBatteryLevelData(context, handler,
- startTimestamp, lastFullChargeTime, isFromPeriodJob,
- onBatteryUsageMapLoadedListener);
- Log.d(TAG, String.format("execute getBatteryLevelData in %d/ms,"
- + " batteryLevelRecordEvents.size=%d",
- (System.currentTimeMillis() - start), batteryLevelRecordEvents.size()));
+ final long startTimestamp =
+ batteryLevelRecordEvents.isEmpty()
+ ? lastFullChargeTime
+ : batteryLevelRecordEvents.get(0).getTimestamp();
+ final BatteryLevelData batteryLevelData =
+ getPeriodBatteryLevelData(
+ context,
+ handler,
+ startTimestamp,
+ lastFullChargeTime,
+ isFromPeriodJob,
+ onBatteryUsageMapLoadedListener);
+ Log.d(
+ TAG,
+ String.format(
+ "execute getBatteryLevelData in %d/ms,"
+ + " batteryLevelRecordEvents.size=%d",
+ (System.currentTimeMillis() - start), batteryLevelRecordEvents.size()));
return isFromPeriodJob
? batteryLevelData
@@ -595,8 +641,11 @@
final boolean isFromPeriodJob,
final OnBatteryDiffDataMapLoadedListener onBatteryDiffDataMapLoadedListener) {
final long currentTime = System.currentTimeMillis();
- Log.d(TAG, String.format("getPeriodBatteryLevelData() startTimestamp=%s",
- ConvertUtils.utcToLocalTimeForLogging(startTimestamp)));
+ Log.d(
+ TAG,
+ String.format(
+ "getPeriodBatteryLevelData() startTimestamp=%s",
+ ConvertUtils.utcToLocalTimeForLogging(startTimestamp)));
if (isFromPeriodJob
&& startTimestamp >= TimestampUtils.getLastEvenHourTimestamp(currentTime)) {
// Nothing needs to be loaded for period job.
@@ -605,9 +654,13 @@
handler = handler != null ? handler : new Handler(Looper.getMainLooper());
final Map<Long, Map<String, BatteryHistEntry>> batteryHistoryMap =
- sFakeBatteryHistoryMap != null ? sFakeBatteryHistoryMap
- : DatabaseUtils.getHistoryMapSinceLatestRecordBeforeQueryTimestamp(context,
- Calendar.getInstance(), startTimestamp, lastFullChargeTime);
+ sFakeBatteryHistoryMap != null
+ ? sFakeBatteryHistoryMap
+ : DatabaseUtils.getHistoryMapSinceLatestRecordBeforeQueryTimestamp(
+ context,
+ Calendar.getInstance(),
+ startTimestamp,
+ lastFullChargeTime);
if (batteryHistoryMap == null || batteryHistoryMap.isEmpty()) {
Log.d(TAG, "batteryHistoryMap is null in getPeriodBatteryLevelData()");
new DataProcessManager(context, handler, onBatteryDiffDataMapLoadedListener).start();
@@ -629,13 +682,14 @@
// Start the async task to compute diff usage data and load labels and icons.
new DataProcessManager(
- context,
- handler,
- startTimestamp,
- lastFullChargeTime,
- onBatteryDiffDataMapLoadedListener,
- batteryLevelData.getHourlyBatteryLevelsPerDay(),
- processedBatteryHistoryMap).start(isFromPeriodJob);
+ context,
+ handler,
+ startTimestamp,
+ lastFullChargeTime,
+ onBatteryDiffDataMapLoadedListener,
+ batteryLevelData.getHourlyBatteryLevelsPerDay(),
+ processedBatteryHistoryMap)
+ .start(isFromPeriodJob);
return batteryLevelData;
}
diff --git a/src/com/android/settings/fuelgauge/batteryusage/DataProcessor.java b/src/com/android/settings/fuelgauge/batteryusage/DataProcessor.java
index 6099192..d8f0a77 100644
--- a/src/com/android/settings/fuelgauge/batteryusage/DataProcessor.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/DataProcessor.java
@@ -104,14 +104,11 @@
static final Comparator<BatteryEvent> BATTERY_EVENT_TIMESTAMP_COMPARATOR =
Comparator.comparing(BatteryEvent::getTimestamp);
- @VisibleForTesting
- static boolean sDebug = false;
+ @VisibleForTesting static boolean sDebug = false;
- @VisibleForTesting
- static long sTestCurrentTimeMillis = 0;
+ @VisibleForTesting static long sTestCurrentTimeMillis = 0;
- @VisibleForTesting
- static Set<String> sTestSystemAppsPackageNames;
+ @VisibleForTesting static Set<String> sTestSystemAppsPackageNames;
@VisibleForTesting
static IUsageStatsManager sUsageStatsManager =
@@ -128,12 +125,11 @@
Map<Integer, Map<Integer, BatteryDiffData>> batteryCallbackData);
}
- private DataProcessor() {
- }
+ private DataProcessor() {}
/**
- * @return Returns battery usage data of different entries.
- * Returns null if the input is invalid or there is no enough data.
+ * @return Returns battery usage data of different entries. <br>
+ * Returns null if the input is invalid or there is no enough data.
*/
@Nullable
public static Map<Integer, Map<Integer, BatteryDiffData>> getBatteryUsageData(
@@ -153,32 +149,31 @@
final Map<String, BatteryHistEntry> currentBatteryHistoryMap =
getCurrentBatteryHistoryMapFromStatsService(context);
// Replaces the placeholder in processedBatteryHistoryMap.
- for (Map.Entry<Long, Map<String, BatteryHistEntry>> mapEntry
- : processedBatteryHistoryMap.entrySet()) {
+ for (Map.Entry<Long, Map<String, BatteryHistEntry>> mapEntry :
+ processedBatteryHistoryMap.entrySet()) {
if (mapEntry.getValue().containsKey(CURRENT_TIME_BATTERY_HISTORY_PLACEHOLDER)) {
mapEntry.setValue(currentBatteryHistoryMap);
}
}
return batteryLevelData == null
? null
- : generateBatteryUsageMap(context,
- getBatteryDiffDataMap(context,
+ : generateBatteryUsageMap(
+ context,
+ getBatteryDiffDataMap(
+ context,
batteryLevelData.getHourlyBatteryLevelsPerDay(),
processedBatteryHistoryMap,
- /*appUsagePeriodMap=*/ null,
+ /* appUsagePeriodMap= */ null,
getSystemAppsPackageNames(context),
getSystemAppsUids(context)),
batteryLevelData);
}
- /**
- * Gets the {@link BatteryUsageStats} from system service.
- */
+ /** Gets the {@link BatteryUsageStats} from system service. */
@Nullable
public static BatteryUsageStats getBatteryUsageStats(final Context context) {
final BatteryUsageStatsQuery batteryUsageStatsQuery =
- new BatteryUsageStatsQuery
- .Builder()
+ new BatteryUsageStatsQuery.Builder()
.includeBatteryHistory()
.includeProcessStateData()
.build();
@@ -186,9 +181,7 @@
.getBatteryUsageStats(batteryUsageStatsQuery);
}
- /**
- * Gets the {@link UsageEvents} from system service for all unlocked users.
- */
+ /** Gets the {@link UsageEvents} from system service for all unlocked users. */
@Nullable
public static Map<Long, UsageEvents> getAppUsageEvents(Context context) {
final long start = System.currentTimeMillis();
@@ -204,21 +197,20 @@
final long sixDaysAgoTimestamp =
DatabaseUtils.getTimestampSixDaysAgo(Calendar.getInstance());
for (final UserInfo user : userManager.getAliveUsers()) {
- final UsageEvents events = getAppUsageEventsForUser(
- context, userManager, user.id, sixDaysAgoTimestamp);
+ final UsageEvents events =
+ getAppUsageEventsForUser(context, userManager, user.id, sixDaysAgoTimestamp);
if (events != null) {
resultMap.put(Long.valueOf(user.id), events);
}
}
final long elapsedTime = System.currentTimeMillis() - start;
- Log.d(TAG, String.format("getAppUsageEvents() for all unlocked users in %d/ms",
- elapsedTime));
+ Log.d(
+ TAG,
+ String.format("getAppUsageEvents() for all unlocked users in %d/ms", elapsedTime));
return resultMap.isEmpty() ? null : resultMap;
}
- /**
- * Gets the {@link UsageEvents} from system service for the specific user.
- */
+ /** Gets the {@link UsageEvents} from system service for the specific user. */
@Nullable
public static UsageEvents getAppUsageEventsForUser(
Context context, final int userID, final long startTimestampOfLevelData) {
@@ -234,17 +226,17 @@
final long sixDaysAgoTimestamp =
DatabaseUtils.getTimestampSixDaysAgo(Calendar.getInstance());
final long earliestTimestamp = Math.max(sixDaysAgoTimestamp, startTimestampOfLevelData);
- final UsageEvents events = getAppUsageEventsForUser(
- context, userManager, userID, earliestTimestamp);
+ final UsageEvents events =
+ getAppUsageEventsForUser(context, userManager, userID, earliestTimestamp);
final long elapsedTime = System.currentTimeMillis() - start;
- Log.d(TAG, String.format("getAppUsageEventsForUser() for user %d in %d/ms",
- userID, elapsedTime));
+ Log.d(
+ TAG,
+ String.format(
+ "getAppUsageEventsForUser() for user %d in %d/ms", userID, elapsedTime));
return events;
}
- /**
- * Closes the {@link BatteryUsageStats} after using it.
- */
+ /** Closes the {@link BatteryUsageStats} after using it. */
public static void closeBatteryUsageStats(BatteryUsageStats batteryUsageStats) {
if (batteryUsageStats != null) {
try {
@@ -260,18 +252,20 @@
* Attributes the list of {@link AppUsageEvent} into hourly time slots and reformat them into
* {@link AppUsagePeriod} for easier use in the following process.
*
- * <p>There could be 2 cases of the returned value:</p>
+ * <p>There could be 2 cases of the returned value:
+ *
* <ul>
- * <li>null: empty or invalid data.</li>
- * <li>non-null: must be a 2d map and composed by:
- * <p> [0][0] ~ [maxDailyIndex][maxHourlyIndex]</p></li>
+ * <li>null: empty or invalid data.
+ * <li>non-null: must be a 2d map and composed by:
+ * <p>[0][0] ~ [maxDailyIndex][maxHourlyIndex]
* </ul>
*
- * <p>The structure is consistent with the battery usage map returned by
- * {@code generateBatteryUsageMap}.</p>
+ * <p>The structure is consistent with the battery usage map returned by {@code
+ * generateBatteryUsageMap}.
*
- * <p>{@code Long} stands for the userId.</p>
- * <p>{@code String} stands for the packageName.</p>
+ * <p>{@code Long} stands for the userId.
+ *
+ * <p>{@code String} stands for the packageName.
*/
@Nullable
public static Map<Integer, Map<Integer, Map<Long, Map<String, List<AppUsagePeriod>>>>>
@@ -310,16 +304,18 @@
// The value could be null when there is no data in the hourly slot.
dailyMap.put(
hourlyIndex,
- buildAppUsagePeriodList(context, hourlyAppUsageEventList, batteryEventList,
- startTimestamp, endTimestamp));
+ buildAppUsagePeriodList(
+ context,
+ hourlyAppUsageEventList,
+ batteryEventList,
+ startTimestamp,
+ endTimestamp));
}
}
return resultMap;
}
- /**
- * Generates the list of {@link AppUsageEvent} from the supplied {@link UsageEvents}.
- */
+ /** Generates the list of {@link AppUsageEvent} from the supplied {@link UsageEvents}. */
public static List<AppUsageEvent> generateAppUsageEventListFromUsageEvents(
Context context, Map<Long, UsageEvents> usageEventsMap) {
final List<AppUsageEvent> appUsageEventList = new ArrayList<>();
@@ -342,12 +338,14 @@
final String taskRootClassName = event.getTaskRootClassName();
if (!TextUtils.isEmpty(taskRootClassName)
&& ignoreScreenOnTimeTaskRootSet.contains(taskRootClassName)) {
- Log.w(TAG, String.format(
- "Ignoring a usage event with task root class name %s, "
- + "(timestamp=%d, type=%d)",
- taskRootClassName,
- event.getTimeStamp(),
- event.getEventType()));
+ Log.w(
+ TAG,
+ String.format(
+ "Ignoring a usage event with task root class name %s, "
+ + "(timestamp=%d, type=%d)",
+ taskRootClassName,
+ event.getTimeStamp(),
+ event.getEventType()));
break;
}
final AppUsageEvent appUsageEvent =
@@ -363,19 +361,18 @@
}
}
}
- Log.w(TAG, String.format(
- "Read %d relevant events (%d total) from UsageStatsManager", numEventsFetched,
- numAllEventsFetched));
+ Log.w(
+ TAG,
+ String.format(
+ "Read %d relevant events (%d total) from UsageStatsManager",
+ numEventsFetched, numAllEventsFetched));
return appUsageEventList;
}
- /**
- * Generates the list of {@link BatteryEntry} from the supplied {@link BatteryUsageStats}.
- */
+ /** Generates the list of {@link BatteryEntry} from the supplied {@link BatteryUsageStats}. */
@Nullable
public static List<BatteryEntry> generateBatteryEntryListFromBatteryUsageStats(
- final Context context,
- @Nullable final BatteryUsageStats batteryUsageStats) {
+ final Context context, @Nullable final BatteryUsageStats batteryUsageStats) {
if (batteryUsageStats == null) {
Log.w(TAG, "batteryUsageStats is null content");
return null;
@@ -385,13 +382,18 @@
}
final BatteryUtils batteryUtils = BatteryUtils.getInstance(context);
final int dischargePercentage = Math.max(0, batteryUsageStats.getDischargePercentage());
- final List<BatteryEntry> usageList = getCoalescedUsageList(
- context, batteryUtils, batteryUsageStats, /*loadDataInBackground=*/ false);
+ final List<BatteryEntry> usageList =
+ getCoalescedUsageList(
+ context,
+ batteryUtils,
+ batteryUsageStats,
+ /* loadDataInBackground= */ false);
final double totalPower = batteryUsageStats.getConsumedPower();
for (int i = 0; i < usageList.size(); i++) {
final BatteryEntry entry = usageList.get(i);
- final double percentOfTotal = batteryUtils.calculateBatteryPercent(
- entry.getConsumedPower(), totalPower, dischargePercentage);
+ final double percentOfTotal =
+ batteryUtils.calculateBatteryPercent(
+ entry.getConsumedPower(), totalPower, dischargePercentage);
entry.mPercent = percentOfTotal;
}
return usageList;
@@ -404,19 +406,19 @@
final Context context) {
final List<BatteryHistEntry> batteryHistEntryList =
getBatteryHistListFromFromStatsService(context);
- return batteryHistEntryList == null ? new ArrayMap<>()
+ return batteryHistEntryList == null
+ ? new ArrayMap<>()
: batteryHistEntryList.stream().collect(Collectors.toMap(e -> e.getKey(), e -> e));
}
/**
* @return Returns the processed history map which has interpolated to every hour data.
- * The start timestamp is the first timestamp in batteryHistoryMap. The end timestamp is current
- * time. The keys of processed history map should contain every hour between the start and end
- * timestamp. If there's no data in some key, the value will be the empty map.
+ * <p>The start timestamp is the first timestamp in batteryHistoryMap. The end timestamp is
+ * current time. The keys of processed history map should contain every hour between the
+ * start and end timestamp. If there's no data in some key, the value will be the empty map.
*/
static Map<Long, Map<String, BatteryHistEntry>> getHistoryMapWithExpectedTimestamps(
- Context context,
- final Map<Long, Map<String, BatteryHistEntry>> batteryHistoryMap) {
+ Context context, final Map<Long, Map<String, BatteryHistEntry>> batteryHistoryMap) {
final long startTime = System.currentTimeMillis();
final List<Long> rawTimestampList = new ArrayList<>(batteryHistoryMap.keySet());
final Map<Long, Map<String, BatteryHistEntry>> resultMap = new ArrayMap();
@@ -429,8 +431,11 @@
final List<Long> expectedTimestampList = getTimestampSlots(rawTimestampList, currentTime);
interpolateHistory(
context, rawTimestampList, expectedTimestampList, batteryHistoryMap, resultMap);
- Log.d(TAG, String.format("getHistoryMapWithExpectedTimestamps() size=%d in %d/ms",
- resultMap.size(), (System.currentTimeMillis() - startTime)));
+ Log.d(
+ TAG,
+ String.format(
+ "getHistoryMapWithExpectedTimestamps() size=%d in %d/ms",
+ resultMap.size(), (System.currentTimeMillis() - startTime)));
return resultMap;
}
@@ -470,7 +475,8 @@
}
timestampSlots.add(startTimestamp);
for (long timestamp = TimestampUtils.getNextHourTimestamp(startTimestamp);
- timestamp < endTimestamp; timestamp += DateUtils.HOUR_IN_MILLIS) {
+ timestamp < endTimestamp;
+ timestamp += DateUtils.HOUR_IN_MILLIS) {
timestampSlots.add(timestamp);
}
timestampSlots.add(endTimestamp);
@@ -496,16 +502,17 @@
@VisibleForTesting
static long[] findNearestTimestamp(final List<Long> timestamps, final long target) {
- final long[] results = new long[]{Long.MIN_VALUE, Long.MAX_VALUE};
+ final long[] results = new long[] {Long.MIN_VALUE, Long.MAX_VALUE};
// Searches the nearest lower and upper timestamp value.
- timestamps.forEach(timestamp -> {
- if (timestamp <= target && timestamp > results[0]) {
- results[0] = timestamp;
- }
- if (timestamp >= target && timestamp < results[1]) {
- results[1] = timestamp;
- }
- });
+ timestamps.forEach(
+ timestamp -> {
+ if (timestamp <= target && timestamp > results[0]) {
+ results[0] = timestamp;
+ }
+ if (timestamp >= target && timestamp < results[1]) {
+ results[1] = timestamp;
+ }
+ });
// Uses zero value to represent invalid searching result.
results[0] = results[0] == Long.MIN_VALUE ? 0 : results[0];
results[1] = results[1] == Long.MAX_VALUE ? 0 : results[1];
@@ -547,7 +554,8 @@
slotBatteryHistoryList.add(
batteryHistoryMap.getOrDefault(startTimestamp, EMPTY_BATTERY_MAP));
for (Long timestamp = TimestampUtils.getNextHourTimestamp(startTimestamp);
- timestamp < endTimestamp; timestamp += DateUtils.HOUR_IN_MILLIS) {
+ timestamp < endTimestamp;
+ timestamp += DateUtils.HOUR_IN_MILLIS) {
slotBatteryHistoryList.add(
batteryHistoryMap.getOrDefault(timestamp, EMPTY_BATTERY_MAP));
}
@@ -567,7 +575,7 @@
systemAppsPackageNames,
systemAppsUids,
appUsagePeriodMap == null
- || appUsagePeriodMap.get(dailyIndex) == null
+ || appUsagePeriodMap.get(dailyIndex) == null
? null
: appUsagePeriodMap.get(dailyIndex).get(hourlyIndex),
slotBatteryHistoryList);
@@ -579,17 +587,16 @@
/**
* @return Returns the indexed battery usage data for each corresponding time slot.
- *
- * <p>There could be 2 cases of the returned value:</p>
- * <ul>
- * <li> null: empty or invalid data.</li>
- * <li> 1 part: if batteryLevelData is null.</li>
- * <p> [SELECTED_INDEX_ALL][SELECTED_INDEX_ALL]</p>
- * <li> 3 parts: if batteryLevelData is not null.</li>
- * <p> 1 - [SELECTED_INDEX_ALL][SELECTED_INDEX_ALL]</p>
- * <p> 2 - [0][SELECTED_INDEX_ALL] ~ [maxDailyIndex][SELECTED_INDEX_ALL]</p>
- * <p> 3 - [0][0] ~ [maxDailyIndex][maxHourlyIndex]</p>
- * </ul>
+ * <p>There could be 2 cases of the returned value:
+ * <ul>
+ * <li>null: empty or invalid data.
+ * <li>1 part: if batteryLevelData is null.
+ * <p>[SELECTED_INDEX_ALL][SELECTED_INDEX_ALL]
+ * <li>3 parts: if batteryLevelData is not null.
+ * <p>1 - [SELECTED_INDEX_ALL][SELECTED_INDEX_ALL]
+ * <p>2 - [0][SELECTED_INDEX_ALL] ~ [maxDailyIndex][SELECTED_INDEX_ALL]
+ * <p>3 - [0][0] ~ [maxDailyIndex][maxHourlyIndex]
+ * </ul>
*/
static Map<Integer, Map<Integer, BatteryDiffData>> generateBatteryUsageMap(
final Context context,
@@ -630,9 +637,17 @@
final List<BatteryDiffEntry> systemEntries = new ArrayList<>();
if (batteryHistEntryList == null || batteryHistEntryList.isEmpty()) {
Log.w(TAG, "batteryHistEntryList is null or empty in generateBatteryDiffData()");
- return new BatteryDiffData(context, startTimestamp, getCurrentTimeMillis(),
- /* startBatteryLevel =*/ 100, getCurrentLevel(context), /* screenOnTime= */ 0L,
- appEntries, systemEntries, systemAppsPackageNames, systemAppsUids,
+ return new BatteryDiffData(
+ context,
+ startTimestamp,
+ getCurrentTimeMillis(),
+ /* startBatteryLevel= */ 100,
+ getCurrentLevel(context),
+ /* screenOnTime= */ 0L,
+ appEntries,
+ systemEntries,
+ systemAppsPackageNames,
+ systemAppsUids,
/* isAccumulated= */ false);
}
final int currentUserId = context.getUserId();
@@ -642,30 +657,31 @@
userHandle != null ? userHandle.getIdentifier() : Integer.MIN_VALUE;
for (BatteryHistEntry entry : batteryHistEntryList) {
- final boolean isFromOtherUsers = isConsumedFromOtherUsers(
- currentUserId, workProfileUserId, entry);
+ final boolean isFromOtherUsers =
+ isConsumedFromOtherUsers(currentUserId, workProfileUserId, entry);
// Not show other users' battery usage data.
if (isFromOtherUsers) {
continue;
} else {
- final BatteryDiffEntry currentBatteryDiffEntry = new BatteryDiffEntry(
- context,
- entry.mUid,
- entry.mUserId,
- entry.getKey(),
- entry.mIsHidden,
- entry.mDrainType,
- entry.mPackageName,
- entry.mAppLabel,
- entry.mConsumerType,
- entry.mForegroundUsageTimeInMs,
- entry.mBackgroundUsageTimeInMs,
- /*screenOnTimeInMs=*/ 0,
- entry.mConsumePower,
- entry.mForegroundUsageConsumePower,
- entry.mForegroundServiceUsageConsumePower,
- entry.mBackgroundUsageConsumePower,
- entry.mCachedUsageConsumePower);
+ final BatteryDiffEntry currentBatteryDiffEntry =
+ new BatteryDiffEntry(
+ context,
+ entry.mUid,
+ entry.mUserId,
+ entry.getKey(),
+ entry.mIsHidden,
+ entry.mDrainType,
+ entry.mPackageName,
+ entry.mAppLabel,
+ entry.mConsumerType,
+ entry.mForegroundUsageTimeInMs,
+ entry.mBackgroundUsageTimeInMs,
+ /* screenOnTimeInMs= */ 0,
+ entry.mConsumePower,
+ entry.mForegroundUsageConsumePower,
+ entry.mForegroundServiceUsageConsumePower,
+ entry.mBackgroundUsageConsumePower,
+ entry.mCachedUsageConsumePower);
if (currentBatteryDiffEntry.isSystemEntry()) {
systemEntries.add(currentBatteryDiffEntry);
} else {
@@ -673,21 +689,33 @@
}
}
}
- return new BatteryDiffData(context, startTimestamp, getCurrentTimeMillis(),
- /* startBatteryLevel =*/ 100, getCurrentLevel(context), /* screenOnTime= */ 0L,
- appEntries, systemEntries, systemAppsPackageNames, systemAppsUids,
+ return new BatteryDiffData(
+ context,
+ startTimestamp,
+ getCurrentTimeMillis(),
+ /* startBatteryLevel= */ 100,
+ getCurrentLevel(context),
+ /* screenOnTime= */ 0L,
+ appEntries,
+ systemEntries,
+ systemAppsPackageNames,
+ systemAppsUids,
/* isAccumulated= */ false);
}
/**
- * <p>{@code Long} stands for the userId.</p>
- * <p>{@code String} stands for the packageName.</p>
+ * {@code Long} stands for the userId.
+ *
+ * <p>{@code String} stands for the packageName.
*/
@VisibleForTesting
@Nullable
static Map<Long, Map<String, List<AppUsagePeriod>>> buildAppUsagePeriodList(
- Context context, final List<AppUsageEvent> appUsageEvents,
- final List<BatteryEvent> batteryEventList, final long startTime, final long endTime) {
+ Context context,
+ final List<AppUsageEvent> appUsageEvents,
+ final List<BatteryEvent> batteryEventList,
+ final long startTime,
+ final long endTime) {
if (appUsageEvents.isEmpty()) {
return null;
}
@@ -726,11 +754,12 @@
// The same instance must have same userId and packageName.
final AppUsageEvent firstEvent = usageEvents.get(0);
final long eventUserId = firstEvent.getUserId();
- final String packageName = getEffectivePackageName(
- context,
- sUsageStatsManager,
- firstEvent.getPackageName(),
- firstEvent.getTaskRootPackageName());
+ final String packageName =
+ getEffectivePackageName(
+ context,
+ sUsageStatsManager,
+ firstEvent.getPackageName(),
+ firstEvent.getTaskRootPackageName());
usageEvents.addAll(deviceEvents);
// Sorts the usageEvents in ascending order based on the timestamp before computing the
// period.
@@ -752,7 +781,7 @@
if (allUsagePeriods.get(userId) == null) {
continue;
}
- for (final String packageName: allUsagePeriods.get(userId).keySet()) {
+ for (final String packageName : allUsagePeriods.get(userId).keySet()) {
Collections.sort(
allUsagePeriods.get(userId).get(packageName),
Comparator.comparing(AppUsagePeriod::getStartTime));
@@ -811,8 +840,7 @@
@VisibleForTesting
static List<AppUsagePeriod> excludePowerConnectedTimeFromAppUsagePeriodList(
- final List<AppUsagePeriod> usagePeriodList,
- final List<BatteryEvent> batteryEventList) {
+ final List<AppUsagePeriod> usagePeriodList, final List<BatteryEvent> batteryEventList) {
final List<AppUsagePeriod> resultList = new ArrayList<>();
int index = 0;
for (AppUsagePeriod inputPeriod : usagePeriodList) {
@@ -840,10 +868,11 @@
if (batteryEvent.getType() == BatteryEventType.POWER_CONNECTED
&& lastStartTime != 0) {
- resultList.add(AppUsagePeriod.newBuilder()
- .setStartTime(lastStartTime)
- .setEndTime(batteryEvent.getTimestamp())
- .build());
+ resultList.add(
+ AppUsagePeriod.newBuilder()
+ .setStartTime(lastStartTime)
+ .setEndTime(batteryEvent.getTimestamp())
+ .build());
lastStartTime = 0;
} else if (batteryEvent.getType() == BatteryEventType.POWER_DISCONNECTED) {
lastStartTime = batteryEvent.getTimestamp();
@@ -851,10 +880,11 @@
index++;
}
if (lastStartTime != 0) {
- resultList.add(AppUsagePeriod.newBuilder()
- .setStartTime(lastStartTime)
- .setEndTime(inputPeriod.getEndTime())
- .build());
+ resultList.add(
+ AppUsagePeriod.newBuilder()
+ .setStartTime(lastStartTime)
+ .setEndTime(inputPeriod.getEndTime())
+ .build());
}
}
return resultList;
@@ -873,13 +903,19 @@
}
static Map<Long, BatteryDiffData> getBatteryDiffDataMapFromStatsService(
- final Context context, final long startTimestamp,
+ final Context context,
+ final long startTimestamp,
@NonNull final Set<String> systemAppsPackageNames,
@NonNull final Set<Integer> systemAppsUids) {
Map<Long, BatteryDiffData> batteryDiffDataMap = new ArrayMap<>(1);
- batteryDiffDataMap.put(startTimestamp, generateBatteryDiffData(
- context, startTimestamp, getBatteryHistListFromFromStatsService(context),
- systemAppsPackageNames, systemAppsUids));
+ batteryDiffDataMap.put(
+ startTimestamp,
+ generateBatteryDiffData(
+ context,
+ startTimestamp,
+ getBatteryHistListFromFromStatsService(context),
+ systemAppsPackageNames,
+ systemAppsUids));
return batteryDiffDataMap;
}
@@ -892,23 +928,25 @@
final BatteryDiffData batteryUsageMapForAll =
batteryUsageMap.get(SELECTED_INDEX_ALL).get(SELECTED_INDEX_ALL);
if (batteryUsageMapForAll != null) {
- batteryUsageMapForAll.getAppDiffEntryList().forEach(
- entry -> entry.loadLabelAndIcon());
- batteryUsageMapForAll.getSystemDiffEntryList().forEach(
- entry -> entry.loadLabelAndIcon());
+ batteryUsageMapForAll.getAppDiffEntryList().forEach(entry -> entry.loadLabelAndIcon());
+ batteryUsageMapForAll
+ .getSystemDiffEntryList()
+ .forEach(entry -> entry.loadLabelAndIcon());
}
}
static Set<String> getSystemAppsPackageNames(Context context) {
- return sTestSystemAppsPackageNames != null ? sTestSystemAppsPackageNames
+ return sTestSystemAppsPackageNames != null
+ ? sTestSystemAppsPackageNames
: AppListRepositoryUtil.getSystemPackageNames(context, context.getUserId());
}
static Set<Integer> getSystemAppsUids(Context context) {
Set<Integer> result = new ArraySet<>(1);
try {
- result.add(context.getPackageManager().getUidForSharedUser(
- ANDROID_CORE_APPS_SHARED_USER_ID));
+ result.add(
+ context.getPackageManager()
+ .getUidForSharedUser(ANDROID_CORE_APPS_SHARED_USER_ID));
} catch (PackageManager.NameNotFoundException e) {
// No Android Core Apps
}
@@ -916,10 +954,10 @@
}
/**
- * Generates the list of {@link AppUsageEvent} within the specific time range.
- * The buffer is added to make sure the app usage calculation near the boundaries is correct.
+ * Generates the list of {@link AppUsageEvent} within the specific time range. The buffer is
+ * added to make sure the app usage calculation near the boundaries is correct.
*
- * Note: The appUsageEventList should have been sorted when calling this function.
+ * <p>Note: The appUsageEventList should have been sorted when calling this function.
*/
private static List<AppUsageEvent> getAppUsageEventListWithinTimeRangeWithBuffer(
final List<AppUsageEvent> appUsageEventList, final long startTime, final long endTime) {
@@ -978,17 +1016,13 @@
packageNameMap.get(packageName).addAll(usagePeriodList);
}
- /**
- * Returns the start time that gives {@code usagePeriod} the default usage duration.
- */
+ /** Returns the start time that gives {@code usagePeriod} the default usage duration. */
private static long getStartTimeForIncompleteUsagePeriod(
final AppUsagePeriodOrBuilder usagePeriod) {
return usagePeriod.getEndTime() - DEFAULT_USAGE_DURATION_FOR_INCOMPLETE_INTERVAL;
}
- /**
- * Returns the end time that gives {@code usagePeriod} the default usage duration.
- */
+ /** Returns the end time that gives {@code usagePeriod} the default usage duration. */
private static long getEndTimeForIncompleteUsagePeriod(
final AppUsagePeriodOrBuilder usagePeriod, final long eventTime) {
return Math.min(
@@ -998,7 +1032,9 @@
@Nullable
private static UsageEvents getAppUsageEventsForUser(
- Context context, final UserManager userManager, final int userID,
+ Context context,
+ final UserManager userManager,
+ final int userID,
final long earliestTimestamp) {
final String callingPackage = context.getPackageName();
final long now = System.currentTimeMillis();
@@ -1008,27 +1044,34 @@
Log.w(TAG, "fail to load app usage event for user :" + userID + " because locked");
return null;
}
- final long startTime = DatabaseUtils.getAppUsageStartTimestampOfUser(
- context, userID, earliestTimestamp);
+ final long startTime =
+ DatabaseUtils.getAppUsageStartTimestampOfUser(context, userID, earliestTimestamp);
return loadAppUsageEventsForUserFromService(
sUsageStatsManager, startTime, now, userID, callingPackage);
}
@Nullable
private static UsageEvents loadAppUsageEventsForUserFromService(
- final IUsageStatsManager usageStatsManager, final long startTime, final long endTime,
- final int userId, final String callingPackage) {
+ final IUsageStatsManager usageStatsManager,
+ final long startTime,
+ final long endTime,
+ final int userId,
+ final String callingPackage) {
final long start = System.currentTimeMillis();
UsageEvents events = null;
try {
- events = usageStatsManager.queryEventsForUser(
- startTime, endTime, userId, callingPackage);
+ events =
+ usageStatsManager.queryEventsForUser(
+ startTime, endTime, userId, callingPackage);
} catch (RemoteException e) {
Log.e(TAG, "Error fetching usage events: ", e);
}
final long elapsedTime = System.currentTimeMillis() - start;
- Log.d(TAG, String.format("getAppUsageEventsForUser(): %d from %d to %d in %d/ms", userId,
- startTime, endTime, elapsedTime));
+ Log.d(
+ TAG,
+ String.format(
+ "getAppUsageEventsForUser(): %d from %d to %d in %d/ms",
+ userId, startTime, endTime, elapsedTime));
return events;
}
@@ -1059,13 +1102,14 @@
return null;
}
return batteryEntryList.stream()
- .filter(entry -> {
- final long foregroundMs = entry.getTimeInForegroundMs();
- final long backgroundMs = entry.getTimeInBackgroundMs();
- return entry.getConsumedPower() > 0
- || (entry.getConsumedPower() == 0
- && (foregroundMs != 0 || backgroundMs != 0));
- })
+ .filter(
+ entry -> {
+ final long foregroundMs = entry.getTimeInForegroundMs();
+ final long backgroundMs = entry.getTimeInBackgroundMs();
+ return entry.getConsumedPower() > 0
+ || (entry.getConsumedPower() == 0
+ && (foregroundMs != 0 || backgroundMs != 0));
+ })
.map(entry -> ConvertUtils.convertToBatteryHistEntry(entry, batteryUsageStats))
.collect(Collectors.toList());
}
@@ -1089,10 +1133,15 @@
resultMap.put(startTimestamp, batteryHistoryMap.get(startTimestamp));
for (int index = 1; index < expectedTimestampSlotsSize - 1; index++) {
- interpolateHistoryForSlot(context, expectedTimestampSlots.get(index), rawTimestampList,
- batteryHistoryMap, resultMap);
+ interpolateHistoryForSlot(
+ context,
+ expectedTimestampSlots.get(index),
+ rawTimestampList,
+ batteryHistoryMap,
+ resultMap);
}
- resultMap.put(endTimestamp,
+ resultMap.put(
+ endTimestamp,
Map.of(CURRENT_TIME_BATTERY_HISTORY_PLACEHOLDER, EMPTY_BATTERY_HIST_ENTRY));
}
@@ -1183,7 +1232,7 @@
BatteryHistEntry.interpolate(
currentSlot,
upperTimestamp,
- /*ratio=*/ timestampDiff / timestampLength,
+ /* ratio= */ timestampDiff / timestampLength,
lowerEntry,
upperEntry);
newHistEntryMap.put(entryKey, newEntry);
@@ -1201,8 +1250,10 @@
final long timestamp) {
final Map<String, BatteryHistEntry> entryMap = processedBatteryHistoryMap.get(timestamp);
if (entryMap == null || entryMap.isEmpty()) {
- Log.e(TAG, "abnormal entry list in the timestamp:"
- + ConvertUtils.utcToLocalTimeForLogging(timestamp));
+ Log.e(
+ TAG,
+ "abnormal entry list in the timestamp:"
+ + ConvertUtils.utcToLocalTimeForLogging(timestamp));
return BATTERY_LEVEL_UNKNOWN;
}
// The current time battery history hasn't been loaded yet, returns the current battery
@@ -1262,11 +1313,11 @@
}
private static void insertAllUsageDiffData(
- final Context context,
- final Map<Integer, Map<Integer, BatteryDiffData>> resultMap) {
+ final Context context, final Map<Integer, Map<Integer, BatteryDiffData>> resultMap) {
final List<BatteryDiffData> diffDataList = new ArrayList<>();
- resultMap.keySet().forEach(
- key -> diffDataList.add(resultMap.get(key).get(SELECTED_INDEX_ALL)));
+ resultMap
+ .keySet()
+ .forEach(key -> diffDataList.add(resultMap.get(key).get(SELECTED_INDEX_ALL)));
final Map<Integer, BatteryDiffData> allUsageMap = new ArrayMap<>();
allUsageMap.put(SELECTED_INDEX_ALL, getAccumulatedUsageDiffData(context, diffDataList));
resultMap.put(SELECTED_INDEX_ALL, allUsageMap);
@@ -1302,8 +1353,7 @@
}
}
}
- slotScreenOnTime =
- Math.min(slotDuration, getScreenOnTime(flatAppUsagePeriodList));
+ slotScreenOnTime = Math.min(slotDuration, getScreenOnTime(flatAppUsagePeriodList));
}
final List<BatteryDiffEntry> appEntries = new ArrayList<>();
@@ -1316,9 +1366,18 @@
// We should not get the empty list since we have at least one fake data to record
// the battery level and status in each time slot, the empty list is used to
// represent there is no enough data to apply interpolation arithmetic.
- return new BatteryDiffData(context, startTimestamp, endTimestamp, startBatteryLevel,
- endBatteryLevel, /* screenOnTime= */ 0L, appEntries, systemEntries,
- systemAppsPackageNames, systemAppsUids, /* isAccumulated= */ false);
+ return new BatteryDiffData(
+ context,
+ startTimestamp,
+ endTimestamp,
+ startBatteryLevel,
+ endBatteryLevel,
+ /* screenOnTime= */ 0L,
+ appEntries,
+ systemEntries,
+ systemAppsPackageNames,
+ systemAppsUids,
+ /* isAccumulated= */ false);
}
allBatteryHistEntryKeys.addAll(slotBatteryHistMap.keySet());
}
@@ -1344,8 +1403,9 @@
}
// Not show other users' battery usage data.
- final boolean isFromOtherUsers = isConsumedFromOtherUsers(
- currentUserId, workProfileUserId, selectedBatteryEntry);
+ final boolean isFromOtherUsers =
+ isConsumedFromOtherUsers(
+ currentUserId, workProfileUserId, selectedBatteryEntry);
if (isFromOtherUsers) {
continue;
}
@@ -1369,10 +1429,7 @@
getDiffValue(
currentEntry.mBackgroundUsageTimeInMs,
nextEntry.mBackgroundUsageTimeInMs);
- consumePower +=
- getDiffValue(
- currentEntry.mConsumePower,
- nextEntry.mConsumePower);
+ consumePower += getDiffValue(currentEntry.mConsumePower, nextEntry.mConsumePower);
foregroundUsageConsumePower +=
getDiffValue(
currentEntry.mForegroundUsageConsumePower,
@@ -1396,27 +1453,25 @@
foregroundUsageTimeInMs = slotScreenOnTime;
}
// Excludes entry since we don't have enough data to calculate.
- if (foregroundUsageTimeInMs == 0
- && backgroundUsageTimeInMs == 0
- && consumePower == 0) {
+ if (foregroundUsageTimeInMs == 0 && backgroundUsageTimeInMs == 0 && consumePower == 0) {
continue;
}
// Forces refine the cumulative value since it may introduce deviation error since we
// will apply the interpolation arithmetic.
- final float totalUsageTimeInMs =
- foregroundUsageTimeInMs + backgroundUsageTimeInMs;
+ final float totalUsageTimeInMs = foregroundUsageTimeInMs + backgroundUsageTimeInMs;
if (totalUsageTimeInMs > slotDuration) {
final float ratio = slotDuration / totalUsageTimeInMs;
if (sDebug) {
- Log.w(TAG, String.format("abnormal usage time %d|%d for:\n%s",
- Duration.ofMillis(foregroundUsageTimeInMs).getSeconds(),
- Duration.ofMillis(backgroundUsageTimeInMs).getSeconds(),
- selectedBatteryEntry));
+ Log.w(
+ TAG,
+ String.format(
+ "abnormal usage time %d|%d for:\n%s",
+ Duration.ofMillis(foregroundUsageTimeInMs).getSeconds(),
+ Duration.ofMillis(backgroundUsageTimeInMs).getSeconds(),
+ selectedBatteryEntry));
}
- foregroundUsageTimeInMs =
- Math.round(foregroundUsageTimeInMs * ratio);
- backgroundUsageTimeInMs =
- Math.round(backgroundUsageTimeInMs * ratio);
+ foregroundUsageTimeInMs = Math.round(foregroundUsageTimeInMs * ratio);
+ backgroundUsageTimeInMs = Math.round(backgroundUsageTimeInMs * ratio);
consumePower = consumePower * ratio;
foregroundUsageConsumePower = foregroundUsageConsumePower * ratio;
foregroundServiceUsageConsumePower = foregroundServiceUsageConsumePower * ratio;
@@ -1425,42 +1480,53 @@
}
// Compute the screen on time and make sure it won't exceed the threshold.
- final long screenOnTime = Math.min(
- (long) slotDuration,
- getScreenOnTime(
- appUsageMap,
- selectedBatteryEntry.mUserId,
- selectedBatteryEntry.mPackageName));
+ final long screenOnTime =
+ Math.min(
+ (long) slotDuration,
+ getScreenOnTime(
+ appUsageMap,
+ selectedBatteryEntry.mUserId,
+ selectedBatteryEntry.mPackageName));
// Make sure the background + screen-on time will not exceed the threshold.
- backgroundUsageTimeInMs = Math.min(
- backgroundUsageTimeInMs, (long) slotDuration - screenOnTime);
- final BatteryDiffEntry currentBatteryDiffEntry = new BatteryDiffEntry(
- context,
- selectedBatteryEntry.mUid,
- selectedBatteryEntry.mUserId,
- selectedBatteryEntry.getKey(),
- selectedBatteryEntry.mIsHidden,
- selectedBatteryEntry.mDrainType,
- selectedBatteryEntry.mPackageName,
- selectedBatteryEntry.mAppLabel,
- selectedBatteryEntry.mConsumerType,
- foregroundUsageTimeInMs,
- backgroundUsageTimeInMs,
- screenOnTime,
- consumePower,
- foregroundUsageConsumePower,
- foregroundServiceUsageConsumePower,
- backgroundUsageConsumePower,
- cachedUsageConsumePower);
+ backgroundUsageTimeInMs =
+ Math.min(backgroundUsageTimeInMs, (long) slotDuration - screenOnTime);
+ final BatteryDiffEntry currentBatteryDiffEntry =
+ new BatteryDiffEntry(
+ context,
+ selectedBatteryEntry.mUid,
+ selectedBatteryEntry.mUserId,
+ selectedBatteryEntry.getKey(),
+ selectedBatteryEntry.mIsHidden,
+ selectedBatteryEntry.mDrainType,
+ selectedBatteryEntry.mPackageName,
+ selectedBatteryEntry.mAppLabel,
+ selectedBatteryEntry.mConsumerType,
+ foregroundUsageTimeInMs,
+ backgroundUsageTimeInMs,
+ screenOnTime,
+ consumePower,
+ foregroundUsageConsumePower,
+ foregroundServiceUsageConsumePower,
+ backgroundUsageConsumePower,
+ cachedUsageConsumePower);
if (currentBatteryDiffEntry.isSystemEntry()) {
systemEntries.add(currentBatteryDiffEntry);
} else {
appEntries.add(currentBatteryDiffEntry);
}
}
- return new BatteryDiffData(context, startTimestamp, endTimestamp, startBatteryLevel,
- endBatteryLevel, slotScreenOnTime, appEntries, systemEntries,
- systemAppsPackageNames, systemAppsUids, /* isAccumulated= */ false);
+ return new BatteryDiffData(
+ context,
+ startTimestamp,
+ endTimestamp,
+ startBatteryLevel,
+ endBatteryLevel,
+ slotScreenOnTime,
+ appEntries,
+ systemEntries,
+ systemAppsPackageNames,
+ systemAppsUids,
+ /* isAccumulated= */ false);
}
private static long getScreenOnTime(@Nullable final List<AppUsagePeriod> appUsagePeriodList) {
@@ -1557,15 +1623,22 @@
}
}
- return new BatteryDiffData(context, startTimestamp, endTimestamp, startBatteryLevel,
- endBatteryLevel, totalScreenOnTime, appEntries, systemEntries,
+ return new BatteryDiffData(
+ context,
+ startTimestamp,
+ endTimestamp,
+ startBatteryLevel,
+ endBatteryLevel,
+ totalScreenOnTime,
+ appEntries,
+ systemEntries,
/* systemAppsPackageNames= */ new ArraySet<>(),
- /* systemAppsUids= */ new ArraySet<>(), /* isAccumulated= */ true);
+ /* systemAppsUids= */ new ArraySet<>(),
+ /* isAccumulated= */ true);
}
private static void computeUsageDiffDataPerEntry(
- final BatteryDiffEntry entry,
- final Map<String, BatteryDiffEntry> diffEntryMap) {
+ final BatteryDiffEntry entry, final Map<String, BatteryDiffEntry> diffEntryMap) {
final String key = entry.getKey();
final BatteryDiffEntry oldBatteryDiffEntry = diffEntryMap.get(key);
// Creates new BatteryDiffEntry if we don't have it.
@@ -1573,16 +1646,13 @@
diffEntryMap.put(key, entry.clone());
} else {
// Sums up some field data into the existing one.
- oldBatteryDiffEntry.mForegroundUsageTimeInMs +=
- entry.mForegroundUsageTimeInMs;
- oldBatteryDiffEntry.mBackgroundUsageTimeInMs +=
- entry.mBackgroundUsageTimeInMs;
- oldBatteryDiffEntry.mScreenOnTimeInMs +=
- entry.mScreenOnTimeInMs;
+ oldBatteryDiffEntry.mForegroundUsageTimeInMs += entry.mForegroundUsageTimeInMs;
+ oldBatteryDiffEntry.mBackgroundUsageTimeInMs += entry.mBackgroundUsageTimeInMs;
+ oldBatteryDiffEntry.mScreenOnTimeInMs += entry.mScreenOnTimeInMs;
oldBatteryDiffEntry.mConsumePower += entry.mConsumePower;
oldBatteryDiffEntry.mForegroundUsageConsumePower += entry.mForegroundUsageConsumePower;
- oldBatteryDiffEntry.mForegroundServiceUsageConsumePower
- += entry.mForegroundServiceUsageConsumePower;
+ oldBatteryDiffEntry.mForegroundServiceUsageConsumePower +=
+ entry.mForegroundServiceUsageConsumePower;
oldBatteryDiffEntry.mBackgroundUsageConsumePower += entry.mBackgroundUsageConsumePower;
oldBatteryDiffEntry.mCachedUsageConsumePower += entry.mCachedUsageConsumePower;
}
@@ -1591,8 +1661,9 @@
private static boolean shouldShowBatteryAttributionList(final Context context) {
final PowerProfile powerProfile = new PowerProfile(context);
// Cheap hack to try to figure out if the power_profile.xml was populated.
- final double averagePowerForOrdinal = powerProfile.getAveragePowerForOrdinal(
- PowerProfile.POWER_GROUP_DISPLAY_SCREEN_FULL, 0);
+ final double averagePowerForOrdinal =
+ powerProfile.getAveragePowerForOrdinal(
+ PowerProfile.POWER_GROUP_DISPLAY_SCREEN_FULL, 0);
final boolean shouldShowBatteryAttributionList =
averagePowerForOrdinal >= MIN_AVERAGE_POWER_THRESHOLD_MILLI_AMP;
if (!shouldShowBatteryAttributionList) {
@@ -1602,13 +1673,14 @@
}
/**
- * We want to coalesce some UIDs. For example, dex2oat runs under a shared gid that
- * exists for all users of the same app. We detect this case and merge the power use
- * for dex2oat to the device OWNER's use of the app.
+ * We want to coalesce some UIDs. For example, dex2oat runs under a shared gid that exists for
+ * all users of the same app. We detect this case and merge the power use for dex2oat to the
+ * device OWNER's use of the app.
*
* @return A sorted list of apps using power.
*/
- private static List<BatteryEntry> getCoalescedUsageList(final Context context,
+ private static List<BatteryEntry> getCoalescedUsageList(
+ final Context context,
final BatteryUtils batteryUtils,
final BatteryUsageStats batteryUsageStats,
final boolean loadDataInBackground) {
@@ -1621,8 +1693,9 @@
// Sort to have all apps with "real" UIDs first, followed by apps that are supposed
// to be combined with the real ones.
- uidBatteryConsumers.sort(Comparator.comparingInt(
- consumer -> consumer.getUid() == getRealUid(consumer) ? 0 : 1));
+ uidBatteryConsumers.sort(
+ Comparator.comparingInt(
+ consumer -> consumer.getUid() == getRealUid(consumer) ? 0 : 1));
for (int i = 0, size = uidBatteryConsumers.size(); i < size; i++) {
final UidBatteryConsumer consumer = uidBatteryConsumers.get(i);
@@ -1637,8 +1710,17 @@
final int index = batteryEntryList.indexOfKey(uid);
if (index < 0) {
// New entry.
- batteryEntryList.put(uid, new BatteryEntry(context, userManager, consumer,
- isHidden, uid, packages, null, loadDataInBackground));
+ batteryEntryList.put(
+ uid,
+ new BatteryEntry(
+ context,
+ userManager,
+ consumer,
+ isHidden,
+ uid,
+ packages,
+ null,
+ loadDataInBackground));
} else {
// Combine BatterySippers if we already have one with this UID.
final BatteryEntry existingSipper = batteryEntryList.valueAt(index);
@@ -1646,33 +1728,50 @@
}
}
- final BatteryConsumer deviceConsumer = batteryUsageStats.getAggregateBatteryConsumer(
- BatteryUsageStats.AGGREGATE_BATTERY_CONSUMER_SCOPE_DEVICE);
+ final BatteryConsumer deviceConsumer =
+ batteryUsageStats.getAggregateBatteryConsumer(
+ BatteryUsageStats.AGGREGATE_BATTERY_CONSUMER_SCOPE_DEVICE);
- for (int componentId = 0; componentId < BatteryConsumer.POWER_COMPONENT_COUNT;
+ for (int componentId = 0;
+ componentId < BatteryConsumer.POWER_COMPONENT_COUNT;
componentId++) {
- results.add(new BatteryEntry(context, componentId,
- deviceConsumer.getConsumedPower(componentId),
- deviceConsumer.getUsageDurationMillis(componentId),
- componentId == POWER_COMPONENT_SYSTEM_SERVICES
- || componentId == POWER_COMPONENT_WAKELOCK));
+ results.add(
+ new BatteryEntry(
+ context,
+ componentId,
+ deviceConsumer.getConsumedPower(componentId),
+ deviceConsumer.getUsageDurationMillis(componentId),
+ componentId == POWER_COMPONENT_SYSTEM_SERVICES
+ || componentId == POWER_COMPONENT_WAKELOCK));
}
for (int componentId = BatteryConsumer.FIRST_CUSTOM_POWER_COMPONENT_ID;
- componentId < BatteryConsumer.FIRST_CUSTOM_POWER_COMPONENT_ID
- + deviceConsumer.getCustomPowerComponentCount();
+ componentId
+ < BatteryConsumer.FIRST_CUSTOM_POWER_COMPONENT_ID
+ + deviceConsumer.getCustomPowerComponentCount();
componentId++) {
- results.add(new BatteryEntry(context, componentId,
- deviceConsumer.getCustomPowerComponentName(componentId),
- deviceConsumer.getConsumedPowerForCustomComponent(componentId)));
+ results.add(
+ new BatteryEntry(
+ context,
+ componentId,
+ deviceConsumer.getCustomPowerComponentName(componentId),
+ deviceConsumer.getConsumedPowerForCustomComponent(componentId)));
}
final List<UserBatteryConsumer> userBatteryConsumers =
batteryUsageStats.getUserBatteryConsumers();
for (int i = 0, size = userBatteryConsumers.size(); i < size; i++) {
final UserBatteryConsumer consumer = userBatteryConsumers.get(i);
- results.add(new BatteryEntry(context, userManager, consumer, /* isHidden */ true,
- Process.INVALID_UID, null, null, loadDataInBackground));
+ results.add(
+ new BatteryEntry(
+ context,
+ userManager,
+ consumer, /* isHidden */
+ true,
+ Process.INVALID_UID,
+ null,
+ null,
+ loadDataInBackground));
}
final int numUidSippers = batteryEntryList.size();
@@ -1692,8 +1791,10 @@
// Check if this UID is a shared GID. If so, we combine it with the OWNER's
// actual app UID.
if (isSharedGid(consumer.getUid())) {
- realUid = UserHandle.getUid(UserHandle.USER_SYSTEM,
- UserHandle.getAppIdFromSharedAppGid(consumer.getUid()));
+ realUid =
+ UserHandle.getUid(
+ UserHandle.USER_SYSTEM,
+ UserHandle.getAppIdFromSharedAppGid(consumer.getUid()));
}
// Check if this UID is a system UID (mediaserver, logd, nfc, drm, etc).
@@ -1727,8 +1828,13 @@
for (int dailyIndex = 0; dailyIndex < hourlyBatteryLevelsPerDay.size(); dailyIndex++) {
if (batteryUsageMap.get(dailyIndex) == null
|| !batteryUsageMap.get(dailyIndex).containsKey(SELECTED_INDEX_ALL)) {
- Log.e(TAG, "no [" + dailyIndex + "][SELECTED_INDEX_ALL] in batteryUsageMap, "
- + "daily size is: " + hourlyBatteryLevelsPerDay.size());
+ Log.e(
+ TAG,
+ "no ["
+ + dailyIndex
+ + "][SELECTED_INDEX_ALL] in batteryUsageMap, "
+ + "daily size is: "
+ + hourlyBatteryLevelsPerDay.size());
return false;
}
if (hourlyBatteryLevelsPerDay.get(dailyIndex) == null) {
@@ -1738,8 +1844,15 @@
// Length of hourly usage map should be the length of hourly level data - 1.
for (int hourlyIndex = 0; hourlyIndex < timestamps.size() - 1; hourlyIndex++) {
if (!batteryUsageMap.get(dailyIndex).containsKey(hourlyIndex)) {
- Log.e(TAG, "no [" + dailyIndex + "][" + hourlyIndex + "] in batteryUsageMap, "
- + "hourly size is: " + (timestamps.size() - 1));
+ Log.e(
+ TAG,
+ "no ["
+ + dailyIndex
+ + "]["
+ + hourlyIndex
+ + "] in batteryUsageMap, "
+ + "hourly size is: "
+ + (timestamps.size() - 1));
return false;
}
}
@@ -1759,11 +1872,19 @@
return sTestCurrentTimeMillis > 0 ? sTestCurrentTimeMillis : System.currentTimeMillis();
}
- private static void log(Context context, final String content, final long timestamp,
+ private static void log(
+ Context context,
+ final String content,
+ final long timestamp,
final BatteryHistEntry entry) {
if (sDebug) {
- Log.d(TAG, String.format(entry != null ? "%s %s:\n%s" : "%s %s:%s",
- ConvertUtils.utcToLocalTimeForLogging(timestamp), content, entry));
+ Log.d(
+ TAG,
+ String.format(
+ entry != null ? "%s %s:\n%s" : "%s %s:%s",
+ ConvertUtils.utcToLocalTimeForLogging(timestamp),
+ content,
+ entry));
}
}
}
diff --git a/src/com/android/settings/fuelgauge/batteryusage/DatabaseUtils.java b/src/com/android/settings/fuelgauge/batteryusage/DatabaseUtils.java
index d099843..f96ed5b 100644
--- a/src/com/android/settings/fuelgauge/batteryusage/DatabaseUtils.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/DatabaseUtils.java
@@ -15,6 +15,7 @@
*/
package com.android.settings.fuelgauge.batteryusage;
+
import static com.android.settings.fuelgauge.batteryusage.ConvertUtils.utcToLocalTimeForLogging;
import android.app.usage.IUsageStatsManager;
@@ -65,8 +66,9 @@
private static final String TAG = "DatabaseUtils";
private static final String SHARED_PREFS_FILE = "battery_usage_shared_prefs";
- /** Clear memory threshold for device booting phase. **/
+ /** Clear memory threshold for device booting phase. */
private static final long CLEAR_MEMORY_THRESHOLD_MS = Duration.ofMinutes(5).toMillis();
+
private static final long CLEAR_MEMORY_DELAYED_MS = Duration.ofSeconds(2).toMillis();
private static final long INVALID_TIMESTAMP = 0L;
@@ -78,28 +80,39 @@
/** An authority name of the battery content provider. */
public static final String AUTHORITY = "com.android.settings.battery.usage.provider";
+
/** A table name for app usage events. */
public static final String APP_USAGE_EVENT_TABLE = "AppUsageEvent";
+
/** A table name for battery events. */
public static final String BATTERY_EVENT_TABLE = "BatteryEvent";
+
/** A table name for battery usage history. */
public static final String BATTERY_STATE_TABLE = "BatteryState";
+
/** A table name for battery usage slot. */
public static final String BATTERY_USAGE_SLOT_TABLE = "BatteryUsageSlot";
+
/** A path name for last full charge time query. */
public static final String LAST_FULL_CHARGE_TIMESTAMP_PATH = "lastFullChargeTimestamp";
+
/** A path name for querying the latest record timestamp in battery state table. */
public static final String BATTERY_STATE_LATEST_TIMESTAMP_PATH = "batteryStateLatestTimestamp";
+
/** A path name for app usage latest timestamp query. */
public static final String APP_USAGE_LATEST_TIMESTAMP_PATH = "appUsageLatestTimestamp";
- /** Key for query parameter timestamp used in BATTERY_CONTENT_URI **/
+
+ /** Key for query parameter timestamp used in BATTERY_CONTENT_URI */
public static final String QUERY_KEY_TIMESTAMP = "timestamp";
- /** Key for query parameter userid used in APP_USAGE_EVENT_URI **/
+
+ /** Key for query parameter userid used in APP_USAGE_EVENT_URI */
public static final String QUERY_KEY_USERID = "userid";
- /** Key for query parameter battery event type used in BATTERY_EVENT_URI **/
+
+ /** Key for query parameter battery event type used in BATTERY_EVENT_URI */
public static final String QUERY_BATTERY_EVENT_TYPE = "batteryEventType";
public static final long INVALID_USER_ID = Integer.MIN_VALUE;
+
/**
* The buffer hours to query app usage events that may have begun or ended out of the final
* desired time frame.
@@ -113,6 +126,7 @@
.authority(AUTHORITY)
.appendPath(APP_USAGE_EVENT_TABLE)
.build();
+
/** A content URI to access battery events data. */
public static final Uri BATTERY_EVENT_URI =
new Uri.Builder()
@@ -120,6 +134,7 @@
.authority(AUTHORITY)
.appendPath(BATTERY_EVENT_TABLE)
.build();
+
/** A content URI to access battery usage states data. */
public static final Uri BATTERY_CONTENT_URI =
new Uri.Builder()
@@ -127,6 +142,7 @@
.authority(AUTHORITY)
.appendPath(BATTERY_STATE_TABLE)
.build();
+
/** A content URI to access battery usage slots data. */
public static final Uri BATTERY_USAGE_SLOT_URI =
new Uri.Builder()
@@ -139,11 +155,9 @@
List.of(BatteryEventType.FULL_CHARGED, BatteryEventType.EVEN_HOUR);
// For testing only.
- @VisibleForTesting
- static Supplier<Cursor> sFakeSupplier;
+ @VisibleForTesting static Supplier<Cursor> sFakeSupplier;
- private DatabaseUtils() {
- }
+ private DatabaseUtils() {}
/** Returns true if current user is a work profile user. */
public static boolean isWorkProfile(Context context) {
@@ -161,15 +175,17 @@
.scheme(ContentResolver.SCHEME_CONTENT)
.authority(AUTHORITY)
.appendPath(APP_USAGE_LATEST_TIMESTAMP_PATH)
- .appendQueryParameter(
- QUERY_KEY_USERID, Long.toString(userId))
+ .appendQueryParameter(QUERY_KEY_USERID, Long.toString(userId))
.build();
- final long latestTimestamp = loadLongFromContentProvider(
- context, appUsageLatestTimestampUri, /*defaultValue=*/ INVALID_TIMESTAMP);
+ final long latestTimestamp =
+ loadLongFromContentProvider(
+ context, appUsageLatestTimestampUri, /* defaultValue= */ INVALID_TIMESTAMP);
final String latestTimestampString = utcToLocalTimeForLogging(latestTimestamp);
- Log.d(TAG, String.format(
- "getAppUsageStartTimestampOfUser() userId=%d latestTimestamp=%s in %d/ms",
- userId, latestTimestampString, (System.currentTimeMillis() - startTime)));
+ Log.d(
+ TAG,
+ String.format(
+ "getAppUsageStartTimestampOfUser() userId=%d latestTimestamp=%s in %d/ms",
+ userId, latestTimestampString, (System.currentTimeMillis() - startTime)));
// Use (latestTimestamp + 1) here to avoid loading the events of the latestTimestamp
// repeatedly.
return Math.max(latestTimestamp + 1, earliestTimestamp);
@@ -188,25 +204,30 @@
final long queryTimestamp =
Math.max(rawStartTimestamp, sixDaysAgoTimestamp) - USAGE_QUERY_BUFFER_HOURS;
Log.d(TAG, "sixDaysAgoTimestamp: " + utcToLocalTimeForLogging(sixDaysAgoTimestamp));
- final String queryUserIdString = userIds.stream()
- .map(userId -> String.valueOf(userId))
- .collect(Collectors.joining(","));
+ final String queryUserIdString =
+ userIds.stream()
+ .map(userId -> String.valueOf(userId))
+ .collect(Collectors.joining(","));
// Builds the content uri everytime to avoid cache.
final Uri appUsageEventUri =
new Uri.Builder()
.scheme(ContentResolver.SCHEME_CONTENT)
.authority(AUTHORITY)
.appendPath(APP_USAGE_EVENT_TABLE)
- .appendQueryParameter(
- QUERY_KEY_TIMESTAMP, Long.toString(queryTimestamp))
+ .appendQueryParameter(QUERY_KEY_TIMESTAMP, Long.toString(queryTimestamp))
.appendQueryParameter(QUERY_KEY_USERID, queryUserIdString)
.build();
- final List<AppUsageEvent> appUsageEventList = loadListFromContentProvider(
- context, appUsageEventUri, ConvertUtils::convertToAppUsageEvent);
- Log.d(TAG, String.format("getAppUsageEventForUser userId=%s size=%d in %d/ms",
- queryUserIdString, appUsageEventList.size(),
- (System.currentTimeMillis() - startTime)));
+ final List<AppUsageEvent> appUsageEventList =
+ loadListFromContentProvider(
+ context, appUsageEventUri, ConvertUtils::convertToAppUsageEvent);
+ Log.d(
+ TAG,
+ String.format(
+ "getAppUsageEventForUser userId=%s size=%d in %d/ms",
+ queryUserIdString,
+ appUsageEventList.size(),
+ (System.currentTimeMillis() - startTime)));
return appUsageEventList;
}
@@ -220,25 +241,29 @@
final long sixDaysAgoTimestamp = getTimestampSixDaysAgo(calendar);
final long queryTimestamp = Math.max(rawStartTimestamp, sixDaysAgoTimestamp);
Log.d(TAG, "getBatteryEvents for timestamp: " + queryTimestamp);
- final String queryBatteryEventTypesString = queryBatteryEventTypes.stream()
- .map(type -> String.valueOf(type.getNumber()))
- .collect(Collectors.joining(","));
+ final String queryBatteryEventTypesString =
+ queryBatteryEventTypes.stream()
+ .map(type -> String.valueOf(type.getNumber()))
+ .collect(Collectors.joining(","));
// Builds the content uri everytime to avoid cache.
final Uri batteryEventUri =
new Uri.Builder()
.scheme(ContentResolver.SCHEME_CONTENT)
.authority(AUTHORITY)
.appendPath(BATTERY_EVENT_TABLE)
- .appendQueryParameter(
- QUERY_KEY_TIMESTAMP, Long.toString(queryTimestamp))
+ .appendQueryParameter(QUERY_KEY_TIMESTAMP, Long.toString(queryTimestamp))
.appendQueryParameter(
QUERY_BATTERY_EVENT_TYPE, queryBatteryEventTypesString)
.build();
- final List<BatteryEvent> batteryEventList = loadListFromContentProvider(
- context, batteryEventUri, ConvertUtils::convertToBatteryEvent);
- Log.d(TAG, String.format("getBatteryEvents size=%d in %d/ms", batteryEventList.size(),
- (System.currentTimeMillis() - startTime)));
+ final List<BatteryEvent> batteryEventList =
+ loadListFromContentProvider(
+ context, batteryEventUri, ConvertUtils::convertToBatteryEvent);
+ Log.d(
+ TAG,
+ String.format(
+ "getBatteryEvents size=%d in %d/ms",
+ batteryEventList.size(), (System.currentTimeMillis() - startTime)));
return batteryEventList;
}
@@ -246,9 +271,7 @@
* Returns the battery usage slot data after {@code rawStartTimestamp} in battery event table.
*/
public static List<BatteryUsageSlot> getBatteryUsageSlots(
- Context context,
- final Calendar calendar,
- final long rawStartTimestamp) {
+ Context context, final Calendar calendar, final long rawStartTimestamp) {
final long startTime = System.currentTimeMillis();
final long sixDaysAgoTimestamp = getTimestampSixDaysAgo(calendar);
final long queryTimestamp = Math.max(rawStartTimestamp, sixDaysAgoTimestamp);
@@ -259,14 +282,17 @@
.scheme(ContentResolver.SCHEME_CONTENT)
.authority(AUTHORITY)
.appendPath(BATTERY_USAGE_SLOT_TABLE)
- .appendQueryParameter(
- QUERY_KEY_TIMESTAMP, Long.toString(queryTimestamp))
+ .appendQueryParameter(QUERY_KEY_TIMESTAMP, Long.toString(queryTimestamp))
.build();
- final List<BatteryUsageSlot> batteryUsageSlotList = loadListFromContentProvider(
- context, batteryUsageSlotUri, ConvertUtils::convertToBatteryUsageSlot);
- Log.d(TAG, String.format("getBatteryUsageSlots size=%d in %d/ms",
- batteryUsageSlotList.size(), (System.currentTimeMillis() - startTime)));
+ final List<BatteryUsageSlot> batteryUsageSlotList =
+ loadListFromContentProvider(
+ context, batteryUsageSlotUri, ConvertUtils::convertToBatteryUsageSlot);
+ Log.d(
+ TAG,
+ String.format(
+ "getBatteryUsageSlots size=%d in %d/ms",
+ batteryUsageSlotList.size(), (System.currentTimeMillis() - startTime)));
return batteryUsageSlotList;
}
@@ -280,12 +306,15 @@
.authority(AUTHORITY)
.appendPath(LAST_FULL_CHARGE_TIMESTAMP_PATH)
.build();
- final long lastFullChargeTime = loadLongFromContentProvider(
- context, lastFullChargeTimeUri, /*defaultValue=*/ INVALID_TIMESTAMP);
+ final long lastFullChargeTime =
+ loadLongFromContentProvider(
+ context, lastFullChargeTimeUri, /* defaultValue= */ INVALID_TIMESTAMP);
final String lastFullChargeTimeString = utcToLocalTimeForLogging(lastFullChargeTime);
- Log.d(TAG, String.format(
- "getLastFullChargeTime() lastFullChargeTime=%s in %d/ms",
- lastFullChargeTimeString, (System.currentTimeMillis() - startTime)));
+ Log.d(
+ TAG,
+ String.format(
+ "getLastFullChargeTime() lastFullChargeTime=%s in %d/ms",
+ lastFullChargeTimeString, (System.currentTimeMillis() - startTime)));
return lastFullChargeTime;
}
@@ -300,16 +329,21 @@
.scheme(ContentResolver.SCHEME_CONTENT)
.authority(AUTHORITY)
.appendPath(BATTERY_STATE_LATEST_TIMESTAMP_PATH)
- .appendQueryParameter(
- QUERY_KEY_TIMESTAMP, Long.toString(queryTimestamp))
+ .appendQueryParameter(QUERY_KEY_TIMESTAMP, Long.toString(queryTimestamp))
.build();
- final long batteryStateLatestTimestamp = loadLongFromContentProvider(
- context, batteryStateLatestTimestampUri, /*defaultValue=*/ INVALID_TIMESTAMP);
+ final long batteryStateLatestTimestamp =
+ loadLongFromContentProvider(
+ context,
+ batteryStateLatestTimestampUri,
+ /* defaultValue= */ INVALID_TIMESTAMP);
final String batteryStateLatestTimestampString =
utcToLocalTimeForLogging(batteryStateLatestTimestamp);
- Log.d(TAG, String.format(
- "getBatteryStateLatestTimestamp() batteryStateLatestTimestamp=%s in %d/ms",
- batteryStateLatestTimestampString, (System.currentTimeMillis() - startTime)));
+ Log.d(
+ TAG,
+ String.format(
+ "getBatteryStateLatestTimestamp() batteryStateLatestTimestamp=%s in %d/ms",
+ batteryStateLatestTimestampString,
+ (System.currentTimeMillis() - startTime)));
return batteryStateLatestTimestamp;
}
@@ -324,12 +358,12 @@
.scheme(ContentResolver.SCHEME_CONTENT)
.authority(AUTHORITY)
.appendPath(BATTERY_STATE_TABLE)
- .appendQueryParameter(
- QUERY_KEY_TIMESTAMP, Long.toString(queryTimestamp))
+ .appendQueryParameter(QUERY_KEY_TIMESTAMP, Long.toString(queryTimestamp))
.build();
- final List<BatteryHistEntry> batteryHistEntryList = loadListFromContentProvider(
- context, batteryStateUri, cursor -> new BatteryHistEntry(cursor));
+ final List<BatteryHistEntry> batteryHistEntryList =
+ loadListFromContentProvider(
+ context, batteryStateUri, cursor -> new BatteryHistEntry(cursor));
final Map<Long, Map<String, BatteryHistEntry>> resultMap = new ArrayMap();
for (final BatteryHistEntry entry : batteryHistEntryList) {
final long timestamp = entry.mTimestamp;
@@ -346,27 +380,37 @@
if (resultMap == null || resultMap.isEmpty()) {
Log.d(TAG, "getBatteryHistoryMap() returns empty or null");
} else {
- Log.d(TAG, String.format("getBatteryHistoryMap() size=%d in %d/ms",
- resultMap.size(), (System.currentTimeMillis() - startTime)));
+ Log.d(
+ TAG,
+ String.format(
+ "getBatteryHistoryMap() size=%d in %d/ms",
+ resultMap.size(), (System.currentTimeMillis() - startTime)));
}
return resultMap;
}
/**
- * Returns the battery history map since the latest record no later than the given timestamp.
- * If there is no record before the given timestamp or the given timestamp is before last full
+ * Returns the battery history map since the latest record no later than the given timestamp. If
+ * there is no record before the given timestamp or the given timestamp is before last full
* charge time, returns the history map since last full charge time.
*/
public static Map<Long, Map<String, BatteryHistEntry>>
- getHistoryMapSinceLatestRecordBeforeQueryTimestamp(Context context, Calendar calendar,
- final long queryTimestamp, final long lastFullChargeTime) {
+ getHistoryMapSinceLatestRecordBeforeQueryTimestamp(
+ Context context,
+ Calendar calendar,
+ final long queryTimestamp,
+ final long lastFullChargeTime) {
final long sixDaysAgoTimestamp = getTimestampSixDaysAgo(calendar);
Log.d(TAG, "sixDaysAgoTimestamp: " + utcToLocalTimeForLogging(sixDaysAgoTimestamp));
final long batteryStateLatestTimestamp =
- queryTimestamp == 0L ? 0L : getBatteryStateLatestTimestampBeforeQueryTimestamp(
- context, queryTimestamp);
- final long maxTimestamp = Math.max(Math.max(
- sixDaysAgoTimestamp, lastFullChargeTime), batteryStateLatestTimestamp);
+ queryTimestamp == 0L
+ ? 0L
+ : getBatteryStateLatestTimestampBeforeQueryTimestamp(
+ context, queryTimestamp);
+ final long maxTimestamp =
+ Math.max(
+ Math.max(sixDaysAgoTimestamp, lastFullChargeTime),
+ batteryStateLatestTimestamp);
return getHistoryMapSinceQueryTimestamp(context, maxTimestamp);
}
@@ -380,36 +424,39 @@
/** Clears all data in the battery usage database. */
public static void clearAll(Context context) {
- AsyncTask.execute(() -> {
- try {
- final BatteryStateDatabase database = BatteryStateDatabase
- .getInstance(context.getApplicationContext());
- database.appUsageEventDao().clearAll();
- database.batteryEventDao().clearAll();
- database.batteryStateDao().clearAll();
- database.batteryUsageSlotDao().clearAll();
- } catch (RuntimeException e) {
- Log.e(TAG, "clearAll() failed", e);
- }
- });
+ AsyncTask.execute(
+ () -> {
+ try {
+ final BatteryStateDatabase database =
+ BatteryStateDatabase.getInstance(context.getApplicationContext());
+ database.appUsageEventDao().clearAll();
+ database.batteryEventDao().clearAll();
+ database.batteryStateDao().clearAll();
+ database.batteryUsageSlotDao().clearAll();
+ } catch (RuntimeException e) {
+ Log.e(TAG, "clearAll() failed", e);
+ }
+ });
}
/** Clears all out-of-date data in the battery usage database. */
public static void clearExpiredDataIfNeeded(Context context) {
- AsyncTask.execute(() -> {
- try {
- final BatteryStateDatabase database = BatteryStateDatabase
- .getInstance(context.getApplicationContext());
- final long earliestTimestamp = Clock.systemUTC().millis()
- - Duration.ofDays(DATA_RETENTION_INTERVAL_DAY).toMillis();
- database.appUsageEventDao().clearAllBefore(earliestTimestamp);
- database.batteryEventDao().clearAllBefore(earliestTimestamp);
- database.batteryStateDao().clearAllBefore(earliestTimestamp);
- database.batteryUsageSlotDao().clearAllBefore(earliestTimestamp);
- } catch (RuntimeException e) {
- Log.e(TAG, "clearAllBefore() failed", e);
- }
- });
+ AsyncTask.execute(
+ () -> {
+ try {
+ final BatteryStateDatabase database =
+ BatteryStateDatabase.getInstance(context.getApplicationContext());
+ final long earliestTimestamp =
+ Clock.systemUTC().millis()
+ - Duration.ofDays(DATA_RETENTION_INTERVAL_DAY).toMillis();
+ database.appUsageEventDao().clearAllBefore(earliestTimestamp);
+ database.batteryEventDao().clearAllBefore(earliestTimestamp);
+ database.batteryStateDao().clearAllBefore(earliestTimestamp);
+ database.batteryUsageSlotDao().clearAllBefore(earliestTimestamp);
+ } catch (RuntimeException e) {
+ Log.e(TAG, "clearAllBefore() failed", e);
+ }
+ });
}
/** Clears all data and jobs if current timestamp is out of the range of last recorded job. */
@@ -458,9 +505,9 @@
if (isWorkProfile(context)) {
try {
return context.createPackageContextAsUser(
- /*packageName=*/ context.getPackageName(),
- /*flags=*/ 0,
- /*user=*/ context.getSystemService(UserManager.class)
+ /* packageName= */ context.getPackageName(),
+ /* flags= */ 0,
+ /* user= */ context.getSystemService(UserManager.class)
.getProfileParent(context.getUser()));
} catch (PackageManager.NameNotFoundException e) {
Log.e(TAG, "context.createPackageContextAsUser() fail:", e);
@@ -477,8 +524,11 @@
final List<ContentValues> valuesList = new ArrayList<>();
appUsageEventList.stream()
.filter(appUsageEvent -> appUsageEvent.hasUid())
- .forEach(appUsageEvent -> valuesList.add(
- ConvertUtils.convertAppUsageEventToContentValues(appUsageEvent)));
+ .forEach(
+ appUsageEvent ->
+ valuesList.add(
+ ConvertUtils.convertAppUsageEventToContentValues(
+ appUsageEvent)));
int size = 0;
final ContentResolver resolver = context.getContentResolver();
// Inserts all ContentValues into battery provider.
@@ -487,14 +537,17 @@
valuesList.toArray(valuesArray);
try {
size = resolver.bulkInsert(APP_USAGE_EVENT_URI, valuesArray);
- resolver.notifyChange(APP_USAGE_EVENT_URI, /*observer=*/ null);
+ resolver.notifyChange(APP_USAGE_EVENT_URI, /* observer= */ null);
Log.d(TAG, "insert() app usage events data into database");
} catch (Exception e) {
Log.e(TAG, "bulkInsert() app usage data into database error:", e);
}
}
- Log.d(TAG, String.format("sendAppUsageEventData() size=%d in %d/ms",
- size, (System.currentTimeMillis() - startTime)));
+ Log.d(
+ TAG,
+ String.format(
+ "sendAppUsageEventData() size=%d in %d/ms",
+ size, (System.currentTimeMillis() - startTime)));
clearMemory();
return valuesList;
}
@@ -510,8 +563,11 @@
} catch (Exception e) {
Log.e(TAG, "insert() battery event data into database error:", e);
}
- Log.d(TAG, String.format("sendBatteryEventData() in %d/ms",
- (System.currentTimeMillis() - startTime)));
+ Log.d(
+ TAG,
+ String.format(
+ "sendBatteryEventData() in %d/ms",
+ (System.currentTimeMillis() - startTime)));
clearMemory();
return contentValues;
}
@@ -522,8 +578,11 @@
// Creates the ContentValues list to insert them into provider.
final List<ContentValues> valuesList = new ArrayList<>();
batteryEventList.stream()
- .forEach(batteryEvent -> valuesList.add(
- ConvertUtils.convertBatteryEventToContentValues(batteryEvent)));
+ .forEach(
+ batteryEvent ->
+ valuesList.add(
+ ConvertUtils.convertBatteryEventToContentValues(
+ batteryEvent)));
int size = 0;
final ContentResolver resolver = context.getContentResolver();
// Inserts all ContentValues into battery provider.
@@ -532,14 +591,17 @@
valuesList.toArray(valuesArray);
try {
size = resolver.bulkInsert(BATTERY_EVENT_URI, valuesArray);
- resolver.notifyChange(BATTERY_EVENT_URI, /*observer=*/ null);
+ resolver.notifyChange(BATTERY_EVENT_URI, /* observer= */ null);
Log.d(TAG, "insert() battery event data into database");
} catch (Exception e) {
Log.e(TAG, "bulkInsert() battery event data into database error:", e);
}
}
- Log.d(TAG, String.format("sendBatteryEventData() size=%d in %d/ms",
- size, (System.currentTimeMillis() - startTime)));
+ Log.d(
+ TAG,
+ String.format(
+ "sendBatteryEventData() size=%d in %d/ms",
+ size, (System.currentTimeMillis() - startTime)));
clearMemory();
return valuesList;
}
@@ -550,8 +612,11 @@
// Creates the ContentValues list to insert them into provider.
final List<ContentValues> valuesList = new ArrayList<>();
batteryUsageSlotList.stream()
- .forEach(batteryUsageSlot -> valuesList.add(
- ConvertUtils.convertBatteryUsageSlotToContentValues(batteryUsageSlot)));
+ .forEach(
+ batteryUsageSlot ->
+ valuesList.add(
+ ConvertUtils.convertBatteryUsageSlotToContentValues(
+ batteryUsageSlot)));
int size = 0;
final ContentResolver resolver = context.getContentResolver();
// Inserts all ContentValues into battery provider.
@@ -560,14 +625,17 @@
valuesList.toArray(valuesArray);
try {
size = resolver.bulkInsert(BATTERY_USAGE_SLOT_URI, valuesArray);
- resolver.notifyChange(BATTERY_USAGE_SLOT_URI, /*observer=*/ null);
+ resolver.notifyChange(BATTERY_USAGE_SLOT_URI, /* observer= */ null);
Log.d(TAG, "insert() battery usage slots data into database");
} catch (Exception e) {
Log.e(TAG, "bulkInsert() battery usage slots data into database error:", e);
}
}
- Log.d(TAG, String.format("sendBatteryUsageSlotData() size=%d in %d/ms",
- size, (System.currentTimeMillis() - startTime)));
+ Log.d(
+ TAG,
+ String.format(
+ "sendBatteryUsageSlotData() size=%d in %d/ms",
+ size, (System.currentTimeMillis() - startTime)));
clearMemory();
return valuesList;
}
@@ -586,10 +654,12 @@
return null;
}
final int batteryLevel = BatteryStatus.getBatteryLevel(intent);
- final int batteryStatus = intent.getIntExtra(
- BatteryManager.EXTRA_STATUS, BatteryManager.BATTERY_STATUS_UNKNOWN);
- final int batteryHealth = intent.getIntExtra(
- BatteryManager.EXTRA_HEALTH, BatteryManager.BATTERY_HEALTH_UNKNOWN);
+ final int batteryStatus =
+ intent.getIntExtra(
+ BatteryManager.EXTRA_STATUS, BatteryManager.BATTERY_STATUS_UNKNOWN);
+ final int batteryHealth =
+ intent.getIntExtra(
+ BatteryManager.EXTRA_HEALTH, BatteryManager.BATTERY_HEALTH_UNKNOWN);
// We should use the same timestamp for each data snapshot.
final long snapshotBootTimestamp = SystemClock.elapsedRealtime();
@@ -597,30 +667,35 @@
final List<ContentValues> valuesList = new ArrayList<>();
if (batteryEntryList != null) {
batteryEntryList.stream()
- .filter(entry -> {
- final long foregroundMs = entry.getTimeInForegroundMs();
- final long backgroundMs = entry.getTimeInBackgroundMs();
- if (entry.getConsumedPower() == 0
- && (foregroundMs != 0
- || backgroundMs != 0)) {
- Log.w(TAG, String.format(
- "no consumed power but has running time for %s time=%d|%d",
- entry.getLabel(), foregroundMs, backgroundMs));
- }
- return entry.getConsumedPower() != 0
- || foregroundMs != 0
- || backgroundMs != 0;
- })
- .forEach(entry -> valuesList.add(
- ConvertUtils.convertBatteryEntryToContentValues(
- entry,
- batteryUsageStats,
- batteryLevel,
- batteryStatus,
- batteryHealth,
- snapshotBootTimestamp,
- snapshotTimestamp,
- isFullChargeStart)));
+ .filter(
+ entry -> {
+ final long foregroundMs = entry.getTimeInForegroundMs();
+ final long backgroundMs = entry.getTimeInBackgroundMs();
+ if (entry.getConsumedPower() == 0
+ && (foregroundMs != 0 || backgroundMs != 0)) {
+ Log.w(
+ TAG,
+ String.format(
+ "no consumed power but has running time for %s"
+ + " time=%d|%d",
+ entry.getLabel(), foregroundMs, backgroundMs));
+ }
+ return entry.getConsumedPower() != 0
+ || foregroundMs != 0
+ || backgroundMs != 0;
+ })
+ .forEach(
+ entry ->
+ valuesList.add(
+ ConvertUtils.convertBatteryEntryToContentValues(
+ entry,
+ batteryUsageStats,
+ batteryLevel,
+ batteryStatus,
+ batteryHealth,
+ snapshotBootTimestamp,
+ snapshotTimestamp,
+ isFullChargeStart)));
}
int size = 1;
@@ -632,8 +707,10 @@
valuesList.toArray(valuesArray);
try {
size = resolver.bulkInsert(BATTERY_CONTENT_URI, valuesArray);
- Log.d(TAG, "insert() battery states data into database with isFullChargeStart:"
- + isFullChargeStart);
+ Log.d(
+ TAG,
+ "insert() battery states data into database with isFullChargeStart:"
+ + isFullChargeStart);
} catch (Exception e) {
Log.e(TAG, "bulkInsert() data into database error:", e);
}
@@ -641,8 +718,8 @@
// Inserts one fake data into battery provider.
final ContentValues contentValues =
ConvertUtils.convertBatteryEntryToContentValues(
- /*entry=*/ null,
- /*batteryUsageStats=*/ null,
+ /* entry= */ null,
+ /* batteryUsageStats= */ null,
batteryLevel,
batteryStatus,
batteryHealth,
@@ -651,21 +728,23 @@
isFullChargeStart);
try {
resolver.insert(BATTERY_CONTENT_URI, contentValues);
- Log.d(TAG, "insert() data into database with isFullChargeStart:"
- + isFullChargeStart);
+ Log.d(
+ TAG,
+ "insert() data into database with isFullChargeStart:" + isFullChargeStart);
} catch (Exception e) {
Log.e(TAG, "insert() data into database error:", e);
}
valuesList.add(contentValues);
}
- resolver.notifyChange(BATTERY_CONTENT_URI, /*observer=*/ null);
+ resolver.notifyChange(BATTERY_CONTENT_URI, /* observer= */ null);
BatteryUsageLogUtils.writeLog(
- context,
- Action.INSERT_USAGE_DATA,
- "size=" + size + " " + errorMessage);
- Log.d(TAG, String.format("sendBatteryEntryData() size=%d in %d/ms",
- size, (System.currentTimeMillis() - startTime)));
+ context, Action.INSERT_USAGE_DATA, "size=" + size + " " + errorMessage);
+ Log.d(
+ TAG,
+ String.format(
+ "sendBatteryEntryData() size=%d in %d/ms",
+ size, (System.currentTimeMillis() - startTime)));
if (isFullChargeStart) {
recordDateTime(context, KEY_LAST_UPLOAD_FULL_CHARGE_TIME);
}
@@ -675,25 +754,30 @@
/** Dump all required data into {@link PrintWriter}. */
public static void dump(Context context, PrintWriter writer) {
- writeString(context, writer, "BatteryLevelChanged",
- Intent.ACTION_BATTERY_LEVEL_CHANGED);
- writeString(context, writer, "BatteryPlugging",
+ writeString(context, writer, "BatteryLevelChanged", Intent.ACTION_BATTERY_LEVEL_CHANGED);
+ writeString(
+ context,
+ writer,
+ "BatteryPlugging",
BatteryUsageBroadcastReceiver.ACTION_BATTERY_PLUGGING);
- writeString(context, writer, "BatteryUnplugging",
+ writeString(
+ context,
+ writer,
+ "BatteryUnplugging",
BatteryUsageBroadcastReceiver.ACTION_BATTERY_UNPLUGGING);
- writeString(context, writer, "ClearBatteryCacheData",
+ writeString(
+ context,
+ writer,
+ "ClearBatteryCacheData",
BatteryUsageBroadcastReceiver.ACTION_CLEAR_BATTERY_CACHE_DATA);
- writeString(context, writer, "LastLoadFullChargeTime",
- KEY_LAST_LOAD_FULL_CHARGE_TIME);
- writeString(context, writer, "LastUploadFullChargeTime",
- KEY_LAST_UPLOAD_FULL_CHARGE_TIME);
- writeString(context, writer, "DismissedPowerAnomalyKeys",
- KEY_DISMISSED_POWER_ANOMALY_KEYS);
+ writeString(context, writer, "LastLoadFullChargeTime", KEY_LAST_LOAD_FULL_CHARGE_TIME);
+ writeString(context, writer, "LastUploadFullChargeTime", KEY_LAST_UPLOAD_FULL_CHARGE_TIME);
+ writeString(context, writer, "DismissedPowerAnomalyKeys", KEY_DISMISSED_POWER_ANOMALY_KEYS);
}
static SharedPreferences getSharedPreferences(Context context) {
- return context.getApplicationContext().getSharedPreferences(
- SHARED_PREFS_FILE, Context.MODE_PRIVATE);
+ return context.getApplicationContext()
+ .getSharedPreferences(SHARED_PREFS_FILE, Context.MODE_PRIVATE);
}
static void removeUsageSource(Context context) {
@@ -711,8 +795,8 @@
static int getUsageSource(Context context, IUsageStatsManager usageStatsManager) {
final SharedPreferences sharedPreferences = getSharedPreferences(context);
if (sharedPreferences != null && sharedPreferences.contains(KEY_LAST_USAGE_SOURCE)) {
- return sharedPreferences
- .getInt(KEY_LAST_USAGE_SOURCE, ConvertUtils.DEFAULT_USAGE_SOURCE);
+ return sharedPreferences.getInt(
+ KEY_LAST_USAGE_SOURCE, ConvertUtils.DEFAULT_USAGE_SOURCE);
}
int usageSource = ConvertUtils.DEFAULT_USAGE_SOURCE;
@@ -747,7 +831,8 @@
if (sharedPreferences != null) {
final Set<String> dismissedPowerAnomalyKeys = getDismissedPowerAnomalyKeys(context);
dismissedPowerAnomalyKeys.add(dismissedPowerAnomalyKey);
- sharedPreferences.edit()
+ sharedPreferences
+ .edit()
.putStringSet(KEY_DISMISSED_POWER_ANOMALY_KEYS, dismissedPowerAnomalyKeys)
.apply();
}
@@ -769,22 +854,32 @@
if (context == null) {
return defaultValue;
}
- try (Cursor cursor = sFakeSupplier != null ? sFakeSupplier.get() :
- context.getContentResolver().query(uri, null, null, null)) {
+ try (Cursor cursor =
+ sFakeSupplier != null
+ ? sFakeSupplier.get()
+ : context.getContentResolver().query(uri, null, null, null)) {
return (cursor == null || cursor.getCount() == 0)
- ? defaultValue : cursorReader.apply(cursor);
+ ? defaultValue
+ : cursorReader.apply(cursor);
}
}
private static long loadLongFromContentProvider(
Context context, Uri uri, final long defaultValue) {
- return loadFromContentProvider(context, uri, defaultValue,
- cursor -> cursor.moveToFirst() ? cursor.getLong(/*columnIndex=*/ 0) : defaultValue);
+ return loadFromContentProvider(
+ context,
+ uri,
+ defaultValue,
+ cursor ->
+ cursor.moveToFirst() ? cursor.getLong(/* columnIndex= */ 0) : defaultValue);
}
private static <E> List<E> loadListFromContentProvider(
Context context, Uri uri, Function<Cursor, E> converter) {
- return loadFromContentProvider(context, uri, new ArrayList<>(),
+ return loadFromContentProvider(
+ context,
+ uri,
+ new ArrayList<>(),
cursor -> {
final List<E> list = new ArrayList<>();
while (cursor.moveToNext()) {
@@ -808,11 +903,13 @@
return;
}
final Handler mainHandler = new Handler(Looper.getMainLooper());
- mainHandler.postDelayed(() -> {
- System.gc();
- System.runFinalization();
- System.gc();
- Log.w(TAG, "invoke clearMemory()");
- }, CLEAR_MEMORY_DELAYED_MS);
+ mainHandler.postDelayed(
+ () -> {
+ System.gc();
+ System.runFinalization();
+ System.gc();
+ Log.w(TAG, "invoke clearMemory()");
+ },
+ CLEAR_MEMORY_DELAYED_MS);
}
}
diff --git a/src/com/android/settings/fuelgauge/batteryusage/PeriodicJobManager.java b/src/com/android/settings/fuelgauge/batteryusage/PeriodicJobManager.java
index 7fb2c56..b2c72bf 100644
--- a/src/com/android/settings/fuelgauge/batteryusage/PeriodicJobManager.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/PeriodicJobManager.java
@@ -41,11 +41,9 @@
private final Context mContext;
private final AlarmManager mAlarmManager;
- @VisibleForTesting
- static final int DATA_FETCH_INTERVAL_MINUTE = 60;
+ @VisibleForTesting static final int DATA_FETCH_INTERVAL_MINUTE = 60;
- @VisibleForTesting
- static long sBroadcastDelayFromBoot = Duration.ofMinutes(40).toMillis();
+ @VisibleForTesting static long sBroadcastDelayFromBoot = Duration.ofMinutes(40).toMillis();
@VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
void reset() {
@@ -68,7 +66,9 @@
/** Schedules the next alarm job if it is available. */
public void refreshJob(final boolean fromBoot) {
if (mAlarmManager == null) {
- BatteryUsageLogUtils.writeLog(mContext, Action.SCHEDULE_JOB,
+ BatteryUsageLogUtils.writeLog(
+ mContext,
+ Action.SCHEDULE_JOB,
"cannot schedule next alarm job due to AlarmManager is null");
Log.e(TAG, "cannot schedule next alarm job");
return;
@@ -82,7 +82,9 @@
AlarmManager.RTC_WAKEUP, triggerAtMillis, pendingIntent);
final String utcToLocalTime = ConvertUtils.utcToLocalTimeForLogging(triggerAtMillis);
- BatteryUsageLogUtils.writeLog(mContext, Action.SCHEDULE_JOB,
+ BatteryUsageLogUtils.writeLog(
+ mContext,
+ Action.SCHEDULE_JOB,
String.format("triggerTime=%s, fromBoot=%b", utcToLocalTime, fromBoot));
Log.d(TAG, "schedule next alarm job at " + utcToLocalTime);
}
diff --git a/src/com/android/settings/fuelgauge/batteryusage/PeriodicJobReceiver.java b/src/com/android/settings/fuelgauge/batteryusage/PeriodicJobReceiver.java
index dccca43..bd77feb 100644
--- a/src/com/android/settings/fuelgauge/batteryusage/PeriodicJobReceiver.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/PeriodicJobReceiver.java
@@ -36,7 +36,9 @@
try {
loadDataAndRefreshJob(context, intent);
} catch (Exception e) {
- BatteryUsageLogUtils.writeLog(context, Action.SCHEDULE_JOB,
+ BatteryUsageLogUtils.writeLog(
+ context,
+ Action.SCHEDULE_JOB,
String.format("loadDataAndRefreshJob() failed: %s", e));
}
}
@@ -48,15 +50,15 @@
return;
}
if (DatabaseUtils.isWorkProfile(context)) {
- BatteryUsageLogUtils.writeLog(context, Action.SCHEDULE_JOB,
- "do not refresh job for work profile");
+ BatteryUsageLogUtils.writeLog(
+ context, Action.SCHEDULE_JOB, "do not refresh job for work profile");
Log.w(TAG, "do not refresh job for work profile action=" + action);
return;
}
BatteryUsageLogUtils.writeLog(context, Action.EXECUTE_JOB, "");
- BatteryUsageDataLoader.enqueueWork(context, /*isFullChargeStart=*/ false);
+ BatteryUsageDataLoader.enqueueWork(context, /* isFullChargeStart= */ false);
Log.d(TAG, "refresh periodic job from action=" + action);
- PeriodicJobManager.getInstance(context).refreshJob(/*fromBoot=*/ false);
+ PeriodicJobManager.getInstance(context).refreshJob(/* fromBoot= */ false);
DatabaseUtils.clearExpiredDataIfNeeded(context);
}
}
diff --git a/src/com/android/settings/fuelgauge/batteryusage/PowerGaugePreference.java b/src/com/android/settings/fuelgauge/batteryusage/PowerGaugePreference.java
index 56ada8e..fca618b 100644
--- a/src/com/android/settings/fuelgauge/batteryusage/PowerGaugePreference.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/PowerGaugePreference.java
@@ -30,11 +30,11 @@
import com.android.settingslib.widget.AppPreference;
/**
- * Custom preference for displaying battery usage info as a bar and an icon on
- * the left for the subsystem/app type.
+ * Custom preference for displaying battery usage info as a bar and an icon on the left for the
+ * subsystem/app type.
*
- * The battery usage info could be usage percentage or usage time. The preference
- * won't show any icon if it is null.
+ * <p>The battery usage info could be usage percentage or usage time. The preference won't show any
+ * icon if it is null.
*/
public class PowerGaugePreference extends AppPreference {
@@ -49,8 +49,8 @@
private CharSequence mProgress;
private boolean mShowAnomalyIcon;
- public PowerGaugePreference(Context context, Drawable icon, CharSequence contentDescription,
- BatteryEntry info) {
+ public PowerGaugePreference(
+ Context context, Drawable icon, CharSequence contentDescription, BatteryEntry info) {
this(context, null, icon, contentDescription, info);
}
@@ -62,8 +62,12 @@
this(context, attrs, null, null, null);
}
- private PowerGaugePreference(Context context, AttributeSet attrs, Drawable icon,
- CharSequence contentDescription, BatteryEntry info) {
+ private PowerGaugePreference(
+ Context context,
+ AttributeSet attrs,
+ Drawable icon,
+ CharSequence contentDescription,
+ BatteryEntry info) {
super(context, attrs);
if (icon != null) {
setIcon(icon);
@@ -119,15 +123,19 @@
super.onBindViewHolder(view);
final boolean isNightMode = Utils.isNightMode(getContext());
- final float alpha = isSelectable() ? SELECTABLE_ALPHA
- : (isNightMode ? UNSELECTABLE_ALPHA_DARK_MODE : UNSELECTABLE_ALPHA_LIGHT_MODE);
+ final float alpha =
+ isSelectable()
+ ? SELECTABLE_ALPHA
+ : (isNightMode
+ ? UNSELECTABLE_ALPHA_DARK_MODE
+ : UNSELECTABLE_ALPHA_LIGHT_MODE);
setViewAlpha(view.itemView, alpha);
final TextView subtitle = (TextView) view.findViewById(R.id.widget_summary);
subtitle.setText(mProgress);
if (mShowAnomalyIcon) {
- subtitle.setCompoundDrawablesRelativeWithIntrinsicBounds(R.drawable.ic_warning_24dp, 0,
- 0, 0);
+ subtitle.setCompoundDrawablesRelativeWithIntrinsicBounds(
+ R.drawable.ic_warning_24dp, 0, 0, 0);
} else {
subtitle.setCompoundDrawablesRelativeWithIntrinsicBounds(0, 0, 0, 0);
}
diff --git a/src/com/android/settings/fuelgauge/batteryusage/PowerUsageAdvanced.java b/src/com/android/settings/fuelgauge/batteryusage/PowerUsageAdvanced.java
index 056490b..072040d 100644
--- a/src/com/android/settings/fuelgauge/batteryusage/PowerUsageAdvanced.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/PowerUsageAdvanced.java
@@ -61,8 +61,8 @@
private static final String KEY_REFRESH_TYPE = "refresh_type";
private static final String KEY_BATTERY_CHART = "battery_chart";
- @VisibleForTesting
- BatteryHistoryPreference mHistPref;
+ @VisibleForTesting BatteryHistoryPreference mHistPref;
+
@VisibleForTesting
final BatteryLevelDataLoaderCallbacks mBatteryLevelDataLoaderCallbacks =
new BatteryLevelDataLoaderCallbacks();
@@ -79,23 +79,16 @@
public void onChange(boolean selfChange) {
Log.d(TAG, "onBatteryContentChange: " + selfChange);
mIsChartDataLoaded = false;
- restartBatteryStatsLoader(
- BatteryBroadcastReceiver.BatteryUpdateType.MANUAL);
+ restartBatteryStatsLoader(BatteryBroadcastReceiver.BatteryUpdateType.MANUAL);
}
};
- @VisibleForTesting
- BatteryTipsController mBatteryTipsController;
- @VisibleForTesting
- BatteryChartPreferenceController mBatteryChartPreferenceController;
- @VisibleForTesting
- ScreenOnTimeController mScreenOnTimeController;
- @VisibleForTesting
- BatteryUsageBreakdownController mBatteryUsageBreakdownController;
- @VisibleForTesting
- Optional<BatteryLevelData> mBatteryLevelData;
- @VisibleForTesting
- Optional<AnomalyEventWrapper> mHighlightEventWrapper;
+ @VisibleForTesting BatteryTipsController mBatteryTipsController;
+ @VisibleForTesting BatteryChartPreferenceController mBatteryChartPreferenceController;
+ @VisibleForTesting ScreenOnTimeController mScreenOnTimeController;
+ @VisibleForTesting BatteryUsageBreakdownController mBatteryUsageBreakdownController;
+ @VisibleForTesting Optional<BatteryLevelData> mBatteryLevelData;
+ @VisibleForTesting Optional<AnomalyEventWrapper> mHighlightEventWrapper;
@Override
public void onCreate(Bundle icicle) {
@@ -146,8 +139,9 @@
mResumeTimestamp = System.currentTimeMillis();
final Uri uri = DatabaseUtils.BATTERY_CONTENT_URI;
if (uri != null) {
- getContext().getContentResolver().registerContentObserver(
- uri, /*notifyForDescendants*/ true, mBatteryObserver);
+ getContext()
+ .getContentResolver()
+ .registerContentObserver(uri, /*notifyForDescendants*/ true, mBatteryObserver);
}
}
@@ -190,7 +184,9 @@
mBatteryLevelData = null;
mBatteryUsageMap = null;
mHighlightEventWrapper = null;
- restartLoader(LoaderIndex.BATTERY_LEVEL_DATA_LOADER, bundle,
+ restartLoader(
+ LoaderIndex.BATTERY_LEVEL_DATA_LOADER,
+ bundle,
mBatteryLevelDataLoaderCallbacks);
}
}
@@ -202,8 +198,11 @@
mBatteryLevelData = Optional.ofNullable(batteryLevelData);
if (mBatteryChartPreferenceController != null) {
mBatteryChartPreferenceController.onBatteryLevelDataUpdate(batteryLevelData);
- Log.d(TAG, String.format("Battery chart shows in %d millis",
- System.currentTimeMillis() - mResumeTimestamp));
+ Log.d(
+ TAG,
+ String.format(
+ "Battery chart shows in %d millis",
+ System.currentTimeMillis() - mResumeTimestamp));
}
}
@@ -211,15 +210,17 @@
if (!isResumed() || mBatteryLevelData == null) {
return;
}
- mBatteryUsageMap = DataProcessor.generateBatteryUsageMap(
- getContext(), batteryDiffDataMap, mBatteryLevelData.orElse(null));
+ mBatteryUsageMap =
+ DataProcessor.generateBatteryUsageMap(
+ getContext(), batteryDiffDataMap, mBatteryLevelData.orElse(null));
Log.d(TAG, "onBatteryDiffDataMapUpdate: " + mBatteryUsageMap);
DataProcessor.loadLabelAndIcon(mBatteryUsageMap);
onSelectedSlotDataUpdated();
detectAnomaly();
logScreenUsageTime();
if (mBatteryChartPreferenceController != null
- && mBatteryLevelData.isEmpty() && isBatteryUsageMapNullOrEmpty()) {
+ && mBatteryLevelData.isEmpty()
+ && isBatteryUsageMapNullOrEmpty()) {
// No available battery usage and battery level data.
mBatteryChartPreferenceController.showEmptyChart();
}
@@ -243,21 +244,28 @@
mBatteryTipsController.acceptTipsCard();
}
mBatteryUsageBreakdownController.handleBatteryUsageUpdated(
- slotUsageData, slotInformation, isBatteryUsageMapNullOrEmpty(),
- isAppsAnomalyEventFocused(), mHighlightEventWrapper);
- Log.d(TAG, String.format("Battery usage list shows in %d millis",
- System.currentTimeMillis() - mResumeTimestamp));
+ slotUsageData,
+ slotInformation,
+ isBatteryUsageMapNullOrEmpty(),
+ isAppsAnomalyEventFocused(),
+ mHighlightEventWrapper);
+ Log.d(
+ TAG,
+ String.format(
+ "Battery usage list shows in %d millis",
+ System.currentTimeMillis() - mResumeTimestamp));
}
private void detectAnomaly() {
- mExecutor.execute(() -> {
- final PowerUsageFeatureProvider powerUsageFeatureProvider =
- FeatureFactory.getFeatureFactory().getPowerUsageFeatureProvider();
- final PowerAnomalyEventList anomalyEventList =
- powerUsageFeatureProvider.detectSettingsAnomaly(
- getContext(), /* displayDrain= */ 0);
- mHandler.post(() -> onAnomalyDetected(anomalyEventList));
- });
+ mExecutor.execute(
+ () -> {
+ final PowerUsageFeatureProvider powerUsageFeatureProvider =
+ FeatureFactory.getFeatureFactory().getPowerUsageFeatureProvider();
+ final PowerAnomalyEventList anomalyEventList =
+ powerUsageFeatureProvider.detectSettingsAnomaly(
+ getContext(), /* displayDrain= */ 0);
+ mHandler.post(() -> onAnomalyDetected(anomalyEventList));
+ });
}
private void onAnomalyDetected(PowerAnomalyEventList anomalyEventList) {
@@ -277,9 +285,12 @@
// If the slot is already highlighted, the tips card should be the corresponding app
// or settings anomaly event.
final PowerAnomalyEvent tipsCardEvent =
- getAnomalyEvent(anomalyEventList,
- event -> !dismissedPowerAnomalyKeys.contains(event.getDismissRecordKey())
- && (event.equals(highlightEvent) || !event.hasWarningItemInfo()));
+ getAnomalyEvent(
+ anomalyEventList,
+ event ->
+ !dismissedPowerAnomalyKeys.contains(event.getDismissRecordKey())
+ && (event.equals(highlightEvent)
+ || !event.hasWarningItemInfo()));
onDisplayAnomalyEventUpdated(tipsCardEvent, highlightEvent);
}
@@ -296,8 +307,10 @@
// Update battery tips card preference & behaviour
mBatteryTipsController.setOnAnomalyConfirmListener(null);
mBatteryTipsController.setOnAnomalyRejectListener(null);
- final AnomalyEventWrapper tipsCardEventWrapper = (tipsCardEvent == null) ? null :
- new AnomalyEventWrapper(getContext(), tipsCardEvent);
+ final AnomalyEventWrapper tipsCardEventWrapper =
+ (tipsCardEvent == null)
+ ? null
+ : new AnomalyEventWrapper(getContext(), tipsCardEvent);
if (tipsCardEventWrapper != null) {
tipsCardEventWrapper.setRelatedBatteryDiffEntry(
findRelatedBatteryDiffEntry(tipsCardEventWrapper));
@@ -306,23 +319,30 @@
tipsCardEventWrapper, isSameAnomalyEvent);
// Update highlight slot effect in battery chart view
- Pair<Integer, Integer> highlightSlotIndexPair = Pair.create(
- BatteryChartViewModel.SELECTED_INDEX_INVALID,
- BatteryChartViewModel.SELECTED_INDEX_INVALID);
- mHighlightEventWrapper = Optional.ofNullable(isSameAnomalyEvent ? tipsCardEventWrapper :
- ((highlightEvent != null)
- ? new AnomalyEventWrapper(getContext(), highlightEvent) : null));
- if (mBatteryLevelData != null && mBatteryLevelData.isPresent()
+ Pair<Integer, Integer> highlightSlotIndexPair =
+ Pair.create(
+ BatteryChartViewModel.SELECTED_INDEX_INVALID,
+ BatteryChartViewModel.SELECTED_INDEX_INVALID);
+ mHighlightEventWrapper =
+ Optional.ofNullable(
+ isSameAnomalyEvent
+ ? tipsCardEventWrapper
+ : ((highlightEvent != null)
+ ? new AnomalyEventWrapper(getContext(), highlightEvent)
+ : null));
+ if (mBatteryLevelData != null
+ && mBatteryLevelData.isPresent()
&& mHighlightEventWrapper.isPresent()
&& mHighlightEventWrapper.get().hasHighlightSlotPair(mBatteryLevelData.get())) {
- highlightSlotIndexPair = mHighlightEventWrapper.get()
- .getHighlightSlotPair(mBatteryLevelData.get());
+ highlightSlotIndexPair =
+ mHighlightEventWrapper.get().getHighlightSlotPair(mBatteryLevelData.get());
if (isSameAnomalyEvent) {
// For main button, focus on highlight slot when clicked
- mBatteryTipsController.setOnAnomalyConfirmListener(() -> {
- mBatteryChartPreferenceController.selectHighlightSlotIndex();
- mBatteryTipsController.acceptTipsCard();
- });
+ mBatteryTipsController.setOnAnomalyConfirmListener(
+ () -> {
+ mBatteryChartPreferenceController.selectHighlightSlotIndex();
+ mBatteryTipsController.acceptTipsCard();
+ });
}
}
mBatteryChartPreferenceController.onHighlightSlotIndexUpdate(
@@ -332,7 +352,8 @@
@VisibleForTesting
BatteryDiffEntry findRelatedBatteryDiffEntry(AnomalyEventWrapper eventWrapper) {
if (eventWrapper == null
- || mBatteryLevelData == null || mBatteryLevelData.isEmpty()
+ || mBatteryLevelData == null
+ || mBatteryLevelData.isEmpty()
|| !eventWrapper.hasHighlightSlotPair(mBatteryLevelData.get())
|| !eventWrapper.hasAnomalyEntryKey()
|| mBatteryUsageMap == null) {
@@ -340,8 +361,10 @@
}
final Pair<Integer, Integer> highlightSlotIndexPair =
eventWrapper.getHighlightSlotPair(mBatteryLevelData.get());
- final BatteryDiffData relatedDiffData = mBatteryUsageMap
- .get(highlightSlotIndexPair.first).get(highlightSlotIndexPair.second);
+ final BatteryDiffData relatedDiffData =
+ mBatteryUsageMap
+ .get(highlightSlotIndexPair.first)
+ .get(highlightSlotIndexPair.second);
final String anomalyEntryKey = eventWrapper.getAnomalyEntryKey();
if (relatedDiffData == null || anomalyEntryKey == null) {
return null;
@@ -365,7 +388,7 @@
// If all data is null or empty, each slot must be null or empty.
return allBatteryDiffData == null
|| (allBatteryDiffData.getAppDiffEntryList().isEmpty()
- && allBatteryDiffData.getSystemDiffEntryList().isEmpty());
+ && allBatteryDiffData.getSystemDiffEntryList().isEmpty());
}
private boolean isAppsAnomalyEventFocused() {
@@ -399,21 +422,22 @@
return null;
}
- final PowerAnomalyEvent filterAnomalyEvent = anomalyEventList.getPowerAnomalyEventsList()
- .stream()
- .filter(predicate)
- .max(Comparator.comparing(PowerAnomalyEvent::getScore))
- .orElse(null);
+ final PowerAnomalyEvent filterAnomalyEvent =
+ anomalyEventList.getPowerAnomalyEventsList().stream()
+ .filter(predicate)
+ .max(Comparator.comparing(PowerAnomalyEvent::getScore))
+ .orElse(null);
Log.d(TAG, "filterAnomalyEvent = " + filterAnomalyEvent);
return filterAnomalyEvent;
}
-
private static BatteryDiffData getAllBatteryDiffData(
Map<Integer, Map<Integer, BatteryDiffData>> batteryUsageMap) {
- return batteryUsageMap == null ? null : batteryUsageMap
- .get(BatteryChartViewModel.SELECTED_INDEX_ALL)
- .get(BatteryChartViewModel.SELECTED_INDEX_ALL);
+ return batteryUsageMap == null
+ ? null
+ : batteryUsageMap
+ .get(BatteryChartViewModel.SELECTED_INDEX_ALL)
+ .get(BatteryChartViewModel.SELECTED_INDEX_ALL);
}
public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
@@ -430,12 +454,16 @@
public List<AbstractPreferenceController> createPreferenceControllers(
Context context) {
final List<AbstractPreferenceController> controllers = new ArrayList<>();
- controllers.add(new BatteryChartPreferenceController(
- context, null /* lifecycle */, null /* activity */));
+ controllers.add(
+ new BatteryChartPreferenceController(
+ context, null /* lifecycle */, null /* activity */));
controllers.add((new ScreenOnTimeController(context)));
- controllers.add(new BatteryUsageBreakdownController(
- context, null /* lifecycle */, null /* activity */,
- null /* fragment */));
+ controllers.add(
+ new BatteryUsageBreakdownController(
+ context,
+ null /* lifecycle */,
+ null /* activity */,
+ null /* fragment */));
controllers.add(new BatteryTipsController(context));
return controllers;
}
@@ -452,20 +480,21 @@
@Override
public BatteryLevelData loadInBackground() {
return DataProcessManager.getBatteryLevelData(
- getContext(), mHandler, /*isFromPeriodJob=*/ false,
+ getContext(),
+ mHandler,
+ /* isFromPeriodJob= */ false,
PowerUsageAdvanced.this::onBatteryDiffDataMapUpdate);
}
};
}
@Override
- public void onLoadFinished(Loader<BatteryLevelData> loader,
- BatteryLevelData batteryLevelData) {
+ public void onLoadFinished(
+ Loader<BatteryLevelData> loader, BatteryLevelData batteryLevelData) {
PowerUsageAdvanced.this.onBatteryLevelDataUpdate(batteryLevelData);
}
@Override
- public void onLoaderReset(Loader<BatteryLevelData> loader) {
- }
+ public void onLoaderReset(Loader<BatteryLevelData> loader) {}
}
}
diff --git a/src/com/android/settings/fuelgauge/batteryusage/PowerUsageBase.java b/src/com/android/settings/fuelgauge/batteryusage/PowerUsageBase.java
index 22856b6..d916ef7 100644
--- a/src/com/android/settings/fuelgauge/batteryusage/PowerUsageBase.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/PowerUsageBase.java
@@ -36,18 +36,13 @@
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
-/**
- * Common base class for things that need to show the battery usage graph.
- */
+/** Common base class for things that need to show the battery usage graph. */
public abstract class PowerUsageBase extends DashboardFragment {
private static final String TAG = "PowerUsageBase";
- @VisibleForTesting
- static final String KEY_REFRESH_TYPE = "refresh_type";
- @VisibleForTesting
- static final String KEY_INCLUDE_HISTORY = "include_history";
- @VisibleForTesting
- BatteryUsageStats mBatteryUsageStats;
+ @VisibleForTesting static final String KEY_REFRESH_TYPE = "refresh_type";
+ @VisibleForTesting static final String KEY_INCLUDE_HISTORY = "include_history";
+ @VisibleForTesting BatteryUsageStats mBatteryUsageStats;
protected UserManager mUm;
protected boolean mIsBatteryPresent = true;
@@ -59,11 +54,10 @@
@Retention(RetentionPolicy.SOURCE)
@IntDef({
- LoaderIndex.BATTERY_USAGE_STATS_LOADER,
- LoaderIndex.BATTERY_INFO_LOADER,
- LoaderIndex.BATTERY_TIP_LOADER,
- LoaderIndex.BATTERY_LEVEL_DATA_LOADER
-
+ LoaderIndex.BATTERY_USAGE_STATS_LOADER,
+ LoaderIndex.BATTERY_INFO_LOADER,
+ LoaderIndex.BATTERY_TIP_LOADER,
+ LoaderIndex.BATTERY_LEVEL_DATA_LOADER
})
public @interface LoaderIndex {
int BATTERY_USAGE_STATS_LOADER = 0;
@@ -83,12 +77,13 @@
super.onCreate(icicle);
mBatteryBroadcastReceiver = new BatteryBroadcastReceiver(getContext());
- mBatteryBroadcastReceiver.setBatteryChangedListener(type -> {
- if (type == BatteryBroadcastReceiver.BatteryUpdateType.BATTERY_NOT_PRESENT) {
- mIsBatteryPresent = false;
- }
- restartBatteryStatsLoader(type);
- });
+ mBatteryBroadcastReceiver.setBatteryChangedListener(
+ type -> {
+ if (type == BatteryBroadcastReceiver.BatteryUpdateType.BATTERY_NOT_PRESENT) {
+ mIsBatteryPresent = false;
+ }
+ restartBatteryStatsLoader(type);
+ });
}
@Override
@@ -108,25 +103,22 @@
final Bundle bundle = new Bundle();
bundle.putInt(KEY_REFRESH_TYPE, refreshType);
bundle.putBoolean(KEY_INCLUDE_HISTORY, false);
- restartLoader(LoaderIndex.BATTERY_USAGE_STATS_LOADER, bundle,
- mBatteryUsageStatsLoaderCallbacks);
+ restartLoader(
+ LoaderIndex.BATTERY_USAGE_STATS_LOADER, bundle, mBatteryUsageStatsLoaderCallbacks);
}
protected LoaderManager getLoaderManagerForCurrentFragment() {
return LoaderManager.getInstance(this);
}
- protected void restartLoader(int loaderId, Bundle bundle,
- LoaderManager.LoaderCallbacks<?> loaderCallbacks) {
+ protected void restartLoader(
+ int loaderId, Bundle bundle, LoaderManager.LoaderCallbacks<?> loaderCallbacks) {
LoaderManager loaderManager = getLoaderManagerForCurrentFragment();
- Loader<?> loader = loaderManager.getLoader(
- loaderId);
+ Loader<?> loader = loaderManager.getLoader(loaderId);
if (loader != null && !loader.isReset()) {
- loaderManager.restartLoader(loaderId, bundle,
- loaderCallbacks);
+ loaderManager.restartLoader(loaderId, bundle, loaderCallbacks);
} else {
- loaderManager.initLoader(loaderId, bundle,
- loaderCallbacks);
+ loaderManager.initLoader(loaderId, bundle, loaderCallbacks);
}
}
@@ -148,16 +140,15 @@
}
@Override
- public void onLoadFinished(Loader<BatteryUsageStats> loader,
- BatteryUsageStats batteryUsageStats) {
+ public void onLoadFinished(
+ Loader<BatteryUsageStats> loader, BatteryUsageStats batteryUsageStats) {
closeBatteryUsageStatsIfNeeded();
mBatteryUsageStats = batteryUsageStats;
PowerUsageBase.this.onLoadFinished(mRefreshType);
}
@Override
- public void onLoaderReset(Loader<BatteryUsageStats> loader) {
- }
+ public void onLoaderReset(Loader<BatteryUsageStats> loader) {}
}
private void closeBatteryUsageStatsIfNeeded() {
diff --git a/src/com/android/settings/fuelgauge/batteryusage/PowerUsageSummary.java b/src/com/android/settings/fuelgauge/batteryusage/PowerUsageSummary.java
index f52de5f..5ef820c 100644
--- a/src/com/android/settings/fuelgauge/batteryusage/PowerUsageSummary.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/PowerUsageSummary.java
@@ -53,41 +53,32 @@
* since the last time it was unplugged.
*/
@SearchIndexable(forTarget = SearchIndexable.ALL & ~SearchIndexable.ARC)
-public class PowerUsageSummary extends PowerUsageBase implements
- BatteryTipPreferenceController.BatteryTipListener {
+public class PowerUsageSummary extends PowerUsageBase
+ implements BatteryTipPreferenceController.BatteryTipListener {
static final String TAG = "PowerUsageSummary";
- @VisibleForTesting
- static final String KEY_BATTERY_ERROR = "battery_help_message";
- @VisibleForTesting
- static final String KEY_BATTERY_USAGE = "battery_usage_summary";
+ @VisibleForTesting static final String KEY_BATTERY_ERROR = "battery_help_message";
+ @VisibleForTesting static final String KEY_BATTERY_USAGE = "battery_usage_summary";
+
+ @VisibleForTesting PowerUsageFeatureProvider mPowerFeatureProvider;
+ @VisibleForTesting BatteryUtils mBatteryUtils;
+ @VisibleForTesting BatteryInfo mBatteryInfo;
+
+ @VisibleForTesting BatteryHeaderPreferenceController mBatteryHeaderPreferenceController;
+ @VisibleForTesting BatteryTipPreferenceController mBatteryTipPreferenceController;
+ @VisibleForTesting boolean mNeedUpdateBatteryTip;
+ @VisibleForTesting Preference mHelpPreference;
+ @VisibleForTesting Preference mBatteryUsagePreference;
@VisibleForTesting
- PowerUsageFeatureProvider mPowerFeatureProvider;
- @VisibleForTesting
- BatteryUtils mBatteryUtils;
- @VisibleForTesting
- BatteryInfo mBatteryInfo;
-
- @VisibleForTesting
- BatteryHeaderPreferenceController mBatteryHeaderPreferenceController;
- @VisibleForTesting
- BatteryTipPreferenceController mBatteryTipPreferenceController;
- @VisibleForTesting
- boolean mNeedUpdateBatteryTip;
- @VisibleForTesting
- Preference mHelpPreference;
- @VisibleForTesting
- Preference mBatteryUsagePreference;
-
- @VisibleForTesting
- final ContentObserver mSettingsObserver = new ContentObserver(new Handler()) {
- @Override
- public void onChange(boolean selfChange, Uri uri) {
- restartBatteryInfoLoader();
- }
- };
+ final ContentObserver mSettingsObserver =
+ new ContentObserver(new Handler()) {
+ @Override
+ public void onChange(boolean selfChange, Uri uri) {
+ restartBatteryInfoLoader();
+ }
+ };
@VisibleForTesting
LoaderManager.LoaderCallbacks<BatteryInfo> mBatteryInfoLoaderCallbacks =
@@ -121,17 +112,14 @@
}
@Override
- public void onLoadFinished(Loader<List<BatteryTip>> loader,
- List<BatteryTip> data) {
+ public void onLoadFinished(Loader<List<BatteryTip>> loader, List<BatteryTip> data) {
mBatteryTipPreferenceController.updateBatteryTips(data);
mBatteryHeaderPreferenceController.updateHeaderByBatteryTips(
mBatteryTipPreferenceController.getCurrentBatteryTip(), mBatteryInfo);
}
@Override
- public void onLoaderReset(Loader<List<BatteryTip>> loader) {
-
- }
+ public void onLoaderReset(Loader<List<BatteryTip>> loader) {}
};
@Override
@@ -170,10 +158,11 @@
@Override
public void onResume() {
super.onResume();
- getContentResolver().registerContentObserver(
- Global.getUriFor(Global.BATTERY_ESTIMATES_LAST_UPDATE_TIME),
- false,
- mSettingsObserver);
+ getContentResolver()
+ .registerContentObserver(
+ Global.getUriFor(Global.BATTERY_ESTIMATES_LAST_UPDATE_TIME),
+ false,
+ mSettingsObserver);
}
@Override
@@ -213,8 +202,7 @@
}
// Skip BatteryTipLoader if device is rotated or only battery level change
- if (mNeedUpdateBatteryTip
- && refreshType != BatteryUpdateType.BATTERY_LEVEL) {
+ if (mNeedUpdateBatteryTip && refreshType != BatteryUpdateType.BATTERY_LEVEL) {
restartBatteryTipLoader();
} else {
mNeedUpdateBatteryTip = true;
@@ -237,8 +225,7 @@
void initPreference() {
mBatteryUsagePreference = findPreference(KEY_BATTERY_USAGE);
mBatteryUsagePreference.setSummary(getString(R.string.advanced_battery_preference_summary));
- mBatteryUsagePreference.setVisible(
- mPowerFeatureProvider.isBatteryUsageEnabled());
+ mBatteryUsagePreference.setVisible(mPowerFeatureProvider.isBatteryUsageEnabled());
mHelpPreference = findPreference(KEY_BATTERY_ERROR);
mHelpPreference.setVisible(false);
diff --git a/src/com/android/settings/fuelgauge/batteryusage/ScreenOnTimeController.java b/src/com/android/settings/fuelgauge/batteryusage/ScreenOnTimeController.java
index 286a95f..fcdd673 100644
--- a/src/com/android/settings/fuelgauge/batteryusage/ScreenOnTimeController.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/ScreenOnTimeController.java
@@ -42,12 +42,9 @@
private static final Pattern NUMBER_PATTERN = Pattern.compile("[\\d]*[\\.,]?[\\d]+");
private static final Locale IW_LOCALE = new Locale("iw");
- @VisibleForTesting
- Context mPrefContext;
- @VisibleForTesting
- PreferenceCategory mRootPreference;
- @VisibleForTesting
- TextViewPreference mScreenOnTimeTextPreference;
+ @VisibleForTesting Context mPrefContext;
+ @VisibleForTesting PreferenceCategory mRootPreference;
+ @VisibleForTesting TextViewPreference mScreenOnTimeTextPreference;
public ScreenOnTimeController(Context context) {
super(context, ROOT_PREFERENCE_KEY);
@@ -78,19 +75,22 @@
@VisibleForTesting
void showCategoryTitle(String slotTimestamp) {
- mRootPreference.setTitle(slotTimestamp == null
- ? mPrefContext.getString(
- R.string.screen_time_category_last_full_charge)
- : mPrefContext.getString(
- R.string.screen_time_category_for_slot, slotTimestamp));
+ mRootPreference.setTitle(
+ slotTimestamp == null
+ ? mPrefContext.getString(R.string.screen_time_category_last_full_charge)
+ : mPrefContext.getString(
+ R.string.screen_time_category_for_slot, slotTimestamp));
mRootPreference.setVisible(true);
}
@VisibleForTesting
void showScreenOnTimeText(Long screenOnTime) {
final CharSequence timeSequence =
- BatteryUtils.formatElapsedTimeWithoutComma(mPrefContext, (double) screenOnTime,
- /*withSeconds=*/ false, /*collapseTimeUnit=*/ false);
+ BatteryUtils.formatElapsedTimeWithoutComma(
+ mPrefContext,
+ (double) screenOnTime,
+ /* withSeconds= */ false,
+ /* collapseTimeUnit= */ false);
mScreenOnTimeTextPreference.setText(
enlargeFontOfNumberIfNeeded(mPrefContext, timeSequence));
mScreenOnTimeTextPreference.setVisible(true);
@@ -107,11 +107,14 @@
return text;
}
- final SpannableString spannableText = new SpannableString(text);
+ final SpannableString spannableText = new SpannableString(text);
final Matcher matcher = NUMBER_PATTERN.matcher(text);
while (matcher.find()) {
- spannableText.setSpan(new AbsoluteSizeSpan(36, true /* dip */), matcher.start(),
- matcher.end(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
+ spannableText.setSpan(
+ new AbsoluteSizeSpan(36, true /* dip */),
+ matcher.start(),
+ matcher.end(),
+ Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
return spannableText;
}
diff --git a/src/com/android/settings/fuelgauge/batteryusage/SpinnerPreference.java b/src/com/android/settings/fuelgauge/batteryusage/SpinnerPreference.java
index f57c85a..0810158 100644
--- a/src/com/android/settings/fuelgauge/batteryusage/SpinnerPreference.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/SpinnerPreference.java
@@ -36,12 +36,9 @@
private AdapterView.OnItemSelectedListener mOnItemSelectedListener;
- @VisibleForTesting
- Spinner mSpinner;
- @VisibleForTesting
- String[] mItems;
- @VisibleForTesting
- int mSavedSpinnerPosition;
+ @VisibleForTesting Spinner mSpinner;
+ @VisibleForTesting String[] mItems;
+ @VisibleForTesting int mSavedSpinnerPosition;
public SpinnerPreference(Context context, AttributeSet attrs) {
super(context, attrs);
@@ -91,8 +88,11 @@
super.onRestoreInstanceState(savedState.getSuperState());
mSavedSpinnerPosition = savedState.getSpinnerPosition();
if (mOnItemSelectedListener != null) {
- mOnItemSelectedListener.onItemSelected(/* parent= */null, /* view= */null,
- savedState.getSpinnerPosition(), /* id= */ 0);
+ mOnItemSelectedListener.onItemSelected(
+ /* parent= */ null,
+ /* view= */ null,
+ savedState.getSpinnerPosition(),
+ /* id= */ 0);
}
Log.d(TAG, "onRestoreInstanceState() spinnerPosition=" + savedState.getSpinnerPosition());
}
diff --git a/src/com/android/settings/fuelgauge/batteryusage/TextViewPreference.java b/src/com/android/settings/fuelgauge/batteryusage/TextViewPreference.java
index 22faabb..b20ef39 100644
--- a/src/com/android/settings/fuelgauge/batteryusage/TextViewPreference.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/TextViewPreference.java
@@ -30,8 +30,7 @@
public class TextViewPreference extends Preference {
private static final String TAG = "TextViewPreference";
- @VisibleForTesting
- CharSequence mText;
+ @VisibleForTesting CharSequence mText;
public TextViewPreference(Context context, AttributeSet attrs) {
super(context, attrs);
diff --git a/src/com/android/settings/fuelgauge/batteryusage/bugreport/BatteryUsageLogUtils.java b/src/com/android/settings/fuelgauge/batteryusage/bugreport/BatteryUsageLogUtils.java
index cb2f394..4017131 100644
--- a/src/com/android/settings/fuelgauge/batteryusage/bugreport/BatteryUsageLogUtils.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/bugreport/BatteryUsageLogUtils.java
@@ -25,6 +25,7 @@
import com.android.settings.fuelgauge.BatteryUsageHistoricalLogEntry.Action;
import com.android.settings.fuelgauge.BatteryUtils;
import com.android.settings.fuelgauge.batteryusage.ConvertUtils;
+
import com.google.common.annotations.VisibleForTesting;
import java.io.PrintWriter;
@@ -62,16 +63,13 @@
final String loggingContent =
Base64.encodeToString(newLogBuilder.build().toByteArray(), Base64.DEFAULT);
- sharedPreferences
- .edit()
- .putString(LOGS_KEY, loggingContent)
- .apply();
+ sharedPreferences.edit().putString(LOGS_KEY, loggingContent).apply();
}
/** Prints the historical log that has previously been stored by this utility. */
public static void printHistoricalLog(Context context, PrintWriter writer) {
- final BatteryUsageHistoricalLog existingLog = parseLogFromString(
- getSharedPreferences(context).getString(LOGS_KEY, ""));
+ final BatteryUsageHistoricalLog existingLog =
+ parseLogFromString(getSharedPreferences(context).getString(LOGS_KEY, ""));
final List<BatteryUsageHistoricalLogEntry> logEntryList = existingLog.getLogEntryList();
if (logEntryList.isEmpty()) {
writer.println("\tnothing to dump");
@@ -92,9 +90,10 @@
}
private static String toString(BatteryUsageHistoricalLogEntry entry) {
- final StringBuilder builder = new StringBuilder("\t")
- .append(ConvertUtils.utcToLocalTimeForLogging(entry.getTimestamp()))
- .append(" " + entry.getAction());
+ final StringBuilder builder =
+ new StringBuilder("\t")
+ .append(ConvertUtils.utcToLocalTimeForLogging(entry.getTimestamp()))
+ .append(" " + entry.getAction());
final String description = entry.getActionDescription();
if (description != null && !description.isEmpty()) {
builder.append(" " + description);
diff --git a/src/com/android/settings/fuelgauge/batteryusage/bugreport/BugReportContentProvider.java b/src/com/android/settings/fuelgauge/batteryusage/bugreport/BugReportContentProvider.java
index 4c42327..60d7314 100644
--- a/src/com/android/settings/fuelgauge/batteryusage/bugreport/BugReportContentProvider.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/bugreport/BugReportContentProvider.java
@@ -79,11 +79,7 @@
}
@Override
- public int update(
- Uri uri,
- ContentValues values,
- String selection,
- String[] selectionArgs) {
+ public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
throw new UnsupportedOperationException("unsupported!");
}
}
diff --git a/src/com/android/settings/fuelgauge/batteryusage/bugreport/LogUtils.java b/src/com/android/settings/fuelgauge/batteryusage/bugreport/LogUtils.java
index 6d5082c..b461d20 100644
--- a/src/com/android/settings/fuelgauge/batteryusage/bugreport/LogUtils.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/bugreport/LogUtils.java
@@ -48,11 +48,8 @@
DatabaseUtils.dump(context, writer);
writer.flush();
final BatteryStateDao dao =
- BatteryStateDatabase
- .getInstance(context.getApplicationContext())
- .batteryStateDao();
- final long timeOffset =
- Clock.systemUTC().millis() - DUMP_TIME_OFFSET.toMillis();
+ BatteryStateDatabase.getInstance(context.getApplicationContext()).batteryStateDao();
+ final long timeOffset = Clock.systemUTC().millis() - DUMP_TIME_OFFSET.toMillis();
// Gets all distinct timestamps.
final List<Long> timestamps = dao.getDistinctTimestamps(timeOffset);
@@ -64,26 +61,27 @@
return;
}
// Dumps all distinct timestamps.
- timestamps.forEach(timestamp -> {
- final String formattedTimestamp = ConvertUtils.utcToLocalTimeForLogging(timestamp);
- writer.println("\t" + formattedTimestamp);
- Log.w(TAG, "\t" + formattedTimestamp);
- });
+ timestamps.forEach(
+ timestamp -> {
+ final String formattedTimestamp =
+ ConvertUtils.utcToLocalTimeForLogging(timestamp);
+ writer.println("\t" + formattedTimestamp);
+ Log.w(TAG, "\t" + formattedTimestamp);
+ });
writer.flush();
- final List<BatteryState> stateList = dao.getAllAfter(
- Clock.systemUTC().millis() - DUMP_TIME_OFFSET_FOR_ENTRY.toMillis());
+ final List<BatteryState> stateList =
+ dao.getAllAfter(Clock.systemUTC().millis() - DUMP_TIME_OFFSET_FOR_ENTRY.toMillis());
stateList.stream().forEach(state -> writer.println(state));
}
static void dumpAppUsageDatabaseHist(Context context, PrintWriter writer) {
final AppUsageEventDao dao =
- BatteryStateDatabase
- .getInstance(context.getApplicationContext())
+ BatteryStateDatabase.getInstance(context.getApplicationContext())
.appUsageEventDao();
writer.println("\n\tApp DatabaseHistory:");
- final List<AppUsageEventEntity> eventList = dao.getAllAfter(
- Clock.systemUTC().millis() - DUMP_TIME_OFFSET_FOR_ENTRY.toMillis());
+ final List<AppUsageEventEntity> eventList =
+ dao.getAllAfter(Clock.systemUTC().millis() - DUMP_TIME_OFFSET_FOR_ENTRY.toMillis());
eventList.stream().forEach(event -> writer.println(event));
writer.flush();
}
diff --git a/src/com/android/settings/fuelgauge/batteryusage/db/AppUsageEventDao.java b/src/com/android/settings/fuelgauge/batteryusage/db/AppUsageEventDao.java
index 19360f4..d220b15 100644
--- a/src/com/android/settings/fuelgauge/batteryusage/db/AppUsageEventDao.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/db/AppUsageEventDao.java
@@ -42,8 +42,9 @@
List<AppUsageEventEntity> getAllAfter(long timestamp);
/** Gets the {@link Cursor} of all recorded data after a specific timestamp of the users. */
- @Query("SELECT * FROM AppUsageEventEntity WHERE timestamp >= :timestamp"
- + " AND userId IN (:userIds) ORDER BY timestamp ASC")
+ @Query(
+ "SELECT * FROM AppUsageEventEntity WHERE timestamp >= :timestamp"
+ + " AND userId IN (:userIds) ORDER BY timestamp ASC")
Cursor getAllForUsersAfter(List<Long> userIds, long timestamp);
/** Gets the {@link Cursor} of the latest timestamp of the specific user. */
diff --git a/src/com/android/settings/fuelgauge/batteryusage/db/AppUsageEventEntity.java b/src/com/android/settings/fuelgauge/batteryusage/db/AppUsageEventEntity.java
index c08c735..f0cc71d 100644
--- a/src/com/android/settings/fuelgauge/batteryusage/db/AppUsageEventEntity.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/db/AppUsageEventEntity.java
@@ -32,6 +32,7 @@
public class AppUsageEventEntity {
/** Keys for accessing {@link ContentValues}. */
public static final String KEY_UID = "uid";
+
public static final String KEY_USER_ID = "userId";
public static final String KEY_TIMESTAMP = "timestamp";
public static final String KEY_APP_USAGE_EVENT_TYPE = "appUsageEventType";
@@ -81,14 +82,28 @@
@Override
public String toString() {
final String recordAtDateTime = ConvertUtils.utcToLocalTimeForLogging(timestamp);
- final StringBuilder builder = new StringBuilder()
- .append("\nAppUsageEvent{")
- .append(String.format(Locale.US,
- "\n\tpackage=%s|uid=%d|userId=%d", packageName, uid, userId))
- .append(String.format(Locale.US, "\n\ttimestamp=%s|eventType=%d|instanceId=%d",
- recordAtDateTime, appUsageEventType, instanceId))
- .append(String.format(Locale.US, "\n\ttaskRootPackageName=%s",
- taskRootPackageName));
+ final StringBuilder builder =
+ new StringBuilder()
+ .append("\nAppUsageEvent{")
+ .append(
+ String.format(
+ Locale.US,
+ "\n\tpackage=%s|uid=%d|userId=%d",
+ packageName,
+ uid,
+ userId))
+ .append(
+ String.format(
+ Locale.US,
+ "\n\ttimestamp=%s|eventType=%d|instanceId=%d",
+ recordAtDateTime,
+ appUsageEventType,
+ instanceId))
+ .append(
+ String.format(
+ Locale.US,
+ "\n\ttaskRootPackageName=%s",
+ taskRootPackageName));
return builder.toString();
}
@@ -111,8 +126,7 @@
builder.setPackageName(contentValues.getAsString(KEY_PACKAGE_NAME));
}
if (contentValues.containsKey(KEY_INSTANCE_ID)) {
- builder.setInstanceId(
- contentValues.getAsInteger(KEY_INSTANCE_ID));
+ builder.setInstanceId(contentValues.getAsInteger(KEY_INSTANCE_ID));
}
if (contentValues.containsKey(KEY_TASK_ROOT_PACKAGE_NAME)) {
builder.setTaskRootPackageName(contentValues.getAsString(KEY_TASK_ROOT_PACKAGE_NAME));
@@ -198,6 +212,4 @@
private Builder() {}
}
-
-
}
diff --git a/src/com/android/settings/fuelgauge/batteryusage/db/BatteryEventDao.java b/src/com/android/settings/fuelgauge/batteryusage/db/BatteryEventDao.java
index 91ff4e8..f1b2d66 100644
--- a/src/com/android/settings/fuelgauge/batteryusage/db/BatteryEventDao.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/db/BatteryEventDao.java
@@ -37,14 +37,16 @@
List<BatteryEventEntity> getAll();
/** Gets the {@link Cursor} of the last full charge time . */
- @Query("SELECT MAX(timestamp) FROM BatteryEventEntity"
- + " WHERE batteryEventType = 3") // BatteryEventType.FULL_CHARGED = 3
+ @Query(
+ "SELECT MAX(timestamp) FROM BatteryEventEntity"
+ + " WHERE batteryEventType = 3") // BatteryEventType.FULL_CHARGED = 3
Cursor getLastFullChargeTimestamp();
/** Gets the {@link Cursor} of all recorded data after a specific timestamp. */
- @Query("SELECT * FROM BatteryEventEntity"
- + " WHERE timestamp >= :timestamp AND batteryEventType IN (:batteryEventTypes)"
- + " ORDER BY timestamp DESC")
+ @Query(
+ "SELECT * FROM BatteryEventEntity"
+ + " WHERE timestamp >= :timestamp AND batteryEventType IN (:batteryEventTypes)"
+ + " ORDER BY timestamp DESC")
Cursor getAllAfter(long timestamp, List<Integer> batteryEventTypes);
/** Deletes all recorded data before a specific timestamp. */
diff --git a/src/com/android/settings/fuelgauge/batteryusage/db/BatteryEventEntity.java b/src/com/android/settings/fuelgauge/batteryusage/db/BatteryEventEntity.java
index 66cadda..cee0fec 100644
--- a/src/com/android/settings/fuelgauge/batteryusage/db/BatteryEventEntity.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/db/BatteryEventEntity.java
@@ -32,6 +32,7 @@
public class BatteryEventEntity {
/** Keys for accessing {@link ContentValues}. */
public static final String KEY_TIMESTAMP = "timestamp";
+
public static final String KEY_BATTERY_EVENT_TYPE = "batteryEventType";
public static final String KEY_BATTERY_LEVEL = "batteryLevel";
@@ -43,9 +44,7 @@
public final int batteryLevel;
public BatteryEventEntity(
- final long timestamp,
- final int batteryEventType,
- final int batteryLevel) {
+ final long timestamp, final int batteryEventType, final int batteryLevel) {
this.timestamp = timestamp;
this.batteryEventType = batteryEventType;
this.batteryLevel = batteryLevel;
@@ -64,12 +63,17 @@
@Override
public String toString() {
final String recordAtDateTime = ConvertUtils.utcToLocalTimeForLogging(timestamp);
- final StringBuilder builder = new StringBuilder()
- .append("\nBatteryEvent{")
- .append(String.format(Locale.US,
- "\n\ttimestamp=%s|batteryEventType=%d|batteryLevel=%d",
- recordAtDateTime, batteryEventType, batteryLevel))
- .append("\n}");
+ final StringBuilder builder =
+ new StringBuilder()
+ .append("\nBatteryEvent{")
+ .append(
+ String.format(
+ Locale.US,
+ "\n\ttimestamp=%s|batteryEventType=%d|batteryLevel=%d",
+ recordAtDateTime,
+ batteryEventType,
+ batteryLevel))
+ .append("\n}");
return builder.toString();
}
@@ -122,10 +126,7 @@
/** Builds the {@link BatteryEventEntity}. */
public BatteryEventEntity build() {
- return new BatteryEventEntity(
- mTimestamp,
- mBatteryEventType,
- mBatteryLevel);
+ return new BatteryEventEntity(mTimestamp, mBatteryEventType, mBatteryLevel);
}
private Builder() {}
diff --git a/src/com/android/settings/fuelgauge/batteryusage/db/BatteryState.java b/src/com/android/settings/fuelgauge/batteryusage/db/BatteryState.java
index 190c274..8e1280d 100644
--- a/src/com/android/settings/fuelgauge/batteryusage/db/BatteryState.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/db/BatteryState.java
@@ -43,15 +43,17 @@
public final int consumerType;
public final boolean isFullChargeCycleStart;
public final String batteryInformation;
+
/**
* This field is filled only when build type is "userdebug".
- * For now, Java Proto Lite is recommended by the Android team as the more lightweight solution
- * designed specifically for mobile apps to process protobuf.
- * However, converting protobuf to string through Java Proto Lite needs to parse it into a bytes
- * field first, which leads to the strings saved in our database are encoded and hard to
- * understand.
- * To make it easier to debug in our daily development, this field is added.
- * It will not be filled for the real users.
+ *
+ * <p>For now, Java Proto Lite is recommended by the Android team as the more lightweight
+ * solution designed specifically for mobile apps to process protobuf. However, converting
+ * protobuf to string through Java Proto Lite needs to parse it into a bytes field first, which
+ * leads to the strings saved in our database are encoded and hard to understand.
+ *
+ * <p>To make it easier to debug in our daily development, this field is added. It will not be
+ * filled for the real users.
*/
public final String batteryInformationDebug;
@@ -91,18 +93,28 @@
final BatteryInformation batteryInformationInstance =
BatteryUtils.parseProtoFromString(
batteryInformation, BatteryInformation.getDefaultInstance());
- final StringBuilder builder = new StringBuilder()
- .append("\nBatteryState{")
- .append(String.format(Locale.US,
- "\n\tpackage=%s|uid=%d|userId=%d", packageName, uid, userId))
- .append(String.format(Locale.US, "\n\ttimestamp=%s|consumer=%d|isStart=%b",
- recordAtDateTime, consumerType, isFullChargeCycleStart))
- .append(String.format(Locale.US, "\n\tbatteryInfo="))
- .append(batteryInformationInstance.toString());
+ final StringBuilder builder =
+ new StringBuilder()
+ .append("\nBatteryState{")
+ .append(
+ String.format(
+ Locale.US,
+ "\n\tpackage=%s|uid=%d|userId=%d",
+ packageName,
+ uid,
+ userId))
+ .append(
+ String.format(
+ Locale.US,
+ "\n\ttimestamp=%s|consumer=%d|isStart=%b",
+ recordAtDateTime,
+ consumerType,
+ isFullChargeCycleStart))
+ .append(String.format(Locale.US, "\n\tbatteryInfo="))
+ .append(batteryInformationInstance.toString());
return builder.toString();
}
-
/** Creates new {@link BatteryState} from {@link ContentValues}. */
public static BatteryState create(ContentValues contentValues) {
Builder builder = BatteryState.newBuilder();
@@ -122,8 +134,7 @@
builder.setConsumerType(contentValues.getAsInteger("consumerType"));
}
if (contentValues.containsKey("isFullChargeCycleStart")) {
- builder.setIsFullChargeCycleStart(
- contentValues.getAsBoolean("isFullChargeCycleStart"));
+ builder.setIsFullChargeCycleStart(contentValues.getAsBoolean("isFullChargeCycleStart"));
}
if (contentValues.containsKey("batteryInformation")) {
builder.setBatteryInformation(contentValues.getAsString("batteryInformation"));
diff --git a/src/com/android/settings/fuelgauge/batteryusage/db/BatteryStateDatabase.java b/src/com/android/settings/fuelgauge/batteryusage/db/BatteryStateDatabase.java
index 28a0012..7504775 100644
--- a/src/com/android/settings/fuelgauge/batteryusage/db/BatteryStateDatabase.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/db/BatteryStateDatabase.java
@@ -25,8 +25,12 @@
/** A {@link RoomDatabase} for battery usage states history. */
@Database(
- entities = {AppUsageEventEntity.class, BatteryEventEntity.class, BatteryState.class,
- BatteryUsageSlotEntity.class},
+ entities = {
+ AppUsageEventEntity.class,
+ BatteryEventEntity.class,
+ BatteryState.class,
+ BatteryUsageSlotEntity.class
+ },
version = 1)
public abstract class BatteryStateDatabase extends RoomDatabase {
private static final String TAG = "BatteryStateDatabase";
@@ -35,10 +39,13 @@
/** Provides DAO for app usage event table. */
public abstract AppUsageEventDao appUsageEventDao();
+
/** Provides DAO for battery event table. */
public abstract BatteryEventDao batteryEventDao();
+
/** Provides DAO for battery state table. */
public abstract BatteryStateDao batteryStateDao();
+
/** Provides DAO for battery usage slot table. */
public abstract BatteryUsageSlotDao batteryUsageSlotDao();
@@ -46,8 +53,7 @@
public static BatteryStateDatabase getInstance(Context context) {
if (sBatteryStateDatabase == null) {
sBatteryStateDatabase =
- Room.databaseBuilder(
- context, BatteryStateDatabase.class, "battery-usage-db-v9")
+ Room.databaseBuilder(context, BatteryStateDatabase.class, "battery-usage-db-v9")
// Allows accessing data in the main thread for dumping bugreport.
.allowMainThreadQueries()
.fallbackToDestructiveMigration()
diff --git a/src/com/android/settings/fuelgauge/batteryusage/db/BatteryUsageSlotDao.java b/src/com/android/settings/fuelgauge/batteryusage/db/BatteryUsageSlotDao.java
index a695f6a..b1900c7 100644
--- a/src/com/android/settings/fuelgauge/batteryusage/db/BatteryUsageSlotDao.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/db/BatteryUsageSlotDao.java
@@ -37,8 +37,9 @@
List<BatteryUsageSlotEntity> getAll();
/** Gets the {@link Cursor} of all recorded data after a specific timestamp. */
- @Query("SELECT * FROM BatteryUsageSlotEntity WHERE timestamp >= :timestamp"
- + " ORDER BY timestamp ASC")
+ @Query(
+ "SELECT * FROM BatteryUsageSlotEntity WHERE timestamp >= :timestamp"
+ + " ORDER BY timestamp ASC")
Cursor getAllAfter(long timestamp);
/** Deletes all recorded data before a specific timestamp. */
diff --git a/src/com/android/settings/fuelgauge/batteryusage/db/BatteryUsageSlotEntity.java b/src/com/android/settings/fuelgauge/batteryusage/db/BatteryUsageSlotEntity.java
index c2d5631..16a01b4 100644
--- a/src/com/android/settings/fuelgauge/batteryusage/db/BatteryUsageSlotEntity.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/db/BatteryUsageSlotEntity.java
@@ -32,6 +32,7 @@
public class BatteryUsageSlotEntity {
/** Keys for accessing {@link ContentValues}. */
public static final String KEY_TIMESTAMP = "timestamp";
+
public static final String KEY_BATTERY_USAGE_SLOT = "batteryUsageSlot";
@PrimaryKey(autoGenerate = true)
@@ -58,11 +59,16 @@
@Override
public String toString() {
final String recordAtDateTime = ConvertUtils.utcToLocalTimeForLogging(timestamp);
- final StringBuilder builder = new StringBuilder()
- .append("\nBatteryUsageSlot{")
- .append(String.format(Locale.US, "\n\ttimestamp=%s|batteryUsageSlot=%s",
- recordAtDateTime, batteryUsageSlot))
- .append("\n}");
+ final StringBuilder builder =
+ new StringBuilder()
+ .append("\nBatteryUsageSlot{")
+ .append(
+ String.format(
+ Locale.US,
+ "\n\ttimestamp=%s|batteryUsageSlot=%s",
+ recordAtDateTime,
+ batteryUsageSlot))
+ .append("\n}");
return builder.toString();
}
diff --git a/src/com/android/settings/inputmethod/ModifierKeysPickerDialogFragment.java b/src/com/android/settings/inputmethod/ModifierKeysPickerDialogFragment.java
index d79db43..fa7b372 100644
--- a/src/com/android/settings/inputmethod/ModifierKeysPickerDialogFragment.java
+++ b/src/com/android/settings/inputmethod/ModifierKeysPickerDialogFragment.java
@@ -21,6 +21,7 @@
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
+import android.app.settings.SettingsEnums;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.hardware.input.InputManager;
@@ -47,6 +48,7 @@
import com.android.settings.R;
import com.android.settings.overlay.FeatureFactory;
import com.android.settingslib.Utils;
+import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
import java.util.ArrayList;
import java.util.Arrays;
@@ -68,6 +70,7 @@
private TextView mLeftBracket;
private TextView mRightBracket;
private ImageView mActionKeyIcon;
+ private MetricsFeatureProvider mMetricsFeatureProvider;
private List<int[]> mRemappableKeyList =
new ArrayList<>(Arrays.asList(
@@ -92,6 +95,7 @@
mActivity = getActivity();
FeatureFactory featureFactory = FeatureFactory.getFeatureFactory();
+ mMetricsFeatureProvider = featureFactory.getMetricsFeatureProvider();
mFeatureProvider = featureFactory.getKeyboardSettingsFeatureProvider();
InputManager inputManager = mActivity.getSystemService(InputManager.class);
mKeyDefaultName = getArguments().getString(DEFAULT_KEY);
@@ -139,6 +143,7 @@
doneButton.setOnClickListener(v -> {
String selectedItem = modifierKeys.get(adapter.getCurrentItem());
Spannable itemSummary;
+ logMetricsForRemapping(selectedItem);
if (selectedItem.equals(mKeyDefaultName)) {
itemSummary = new SpannableString(
mActivity.getString(R.string.modifier_keys_default_summary));
@@ -189,6 +194,28 @@
return modifierKeyDialog;
}
+ private void logMetricsForRemapping(String selectedItem) {
+ if (mKeyDefaultName.equals("Caps lock")) {
+ mMetricsFeatureProvider.action(
+ mActivity, SettingsEnums.ACTION_FROM_CAPS_LOCK_TO, selectedItem);
+ }
+
+ if (mKeyDefaultName.equals("Ctrl")) {
+ mMetricsFeatureProvider.action(
+ mActivity, SettingsEnums.ACTION_FROM_CTRL_TO, selectedItem);
+ }
+
+ if (mKeyDefaultName.equals("Action key")) {
+ mMetricsFeatureProvider.action(
+ mActivity, SettingsEnums.ACTION_FROM_ACTION_KEY_TO, selectedItem);
+ }
+
+ if (mKeyDefaultName.equals("Alt")) {
+ mMetricsFeatureProvider.action(
+ mActivity, SettingsEnums.ACTION_FROM_ALT_TO, selectedItem);
+ }
+ }
+
private void setInitialFocusItem(
List<String> modifierKeys, ModifierKeyAdapter adapter) {
if (modifierKeys.indexOf(mKeyFocus) == -1) {
diff --git a/src/com/android/settings/inputmethod/ModifierKeysResetDialogFragment.java b/src/com/android/settings/inputmethod/ModifierKeysResetDialogFragment.java
index 070968c..d49fbd1 100644
--- a/src/com/android/settings/inputmethod/ModifierKeysResetDialogFragment.java
+++ b/src/com/android/settings/inputmethod/ModifierKeysResetDialogFragment.java
@@ -21,6 +21,7 @@
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
+import android.app.settings.SettingsEnums;
import android.hardware.input.InputManager;
import android.os.Bundle;
import android.view.LayoutInflater;
@@ -31,6 +32,8 @@
import androidx.fragment.app.DialogFragment;
import com.android.settings.R;
+import com.android.settings.overlay.FeatureFactory;
+import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
public class ModifierKeysResetDialogFragment extends DialogFragment {
@@ -39,6 +42,8 @@
private static final String MODIFIER_KEYS_META = "modifier_keys_meta";
private static final String MODIFIER_KEYS_ALT = "modifier_keys_alt";
+ private MetricsFeatureProvider mMetricsFeatureProvider;
+
private String[] mKeys = {
MODIFIER_KEYS_CAPS_LOCK,
MODIFIER_KEYS_CTRL,
@@ -52,6 +57,7 @@
super.onCreateDialog(savedInstanceState);
Activity activity = getActivity();
+ mMetricsFeatureProvider = FeatureFactory.getFeatureFactory().getMetricsFeatureProvider();
InputManager inputManager = activity.getSystemService(InputManager.class);
View dialoglayout =
LayoutInflater.from(activity).inflate(R.layout.modifier_key_reset_dialog, null);
@@ -61,6 +67,7 @@
Button restoreButton = dialoglayout.findViewById(R.id.modifier_key_reset_restore_button);
restoreButton.setOnClickListener(v -> {
+ mMetricsFeatureProvider.action(activity, SettingsEnums.ACTION_CLEAR_REMAPPINGS);
inputManager.clearAllModifierKeyRemappings();
dismiss();
activity.recreate();
diff --git a/src/com/android/settings/inputmethod/NewKeyboardLayoutPickerController.java b/src/com/android/settings/inputmethod/NewKeyboardLayoutPickerController.java
index e63d7d1..879f134 100644
--- a/src/com/android/settings/inputmethod/NewKeyboardLayoutPickerController.java
+++ b/src/com/android/settings/inputmethod/NewKeyboardLayoutPickerController.java
@@ -16,6 +16,7 @@
package com.android.settings.inputmethod;
+import android.app.settings.SettingsEnums;
import android.content.Context;
import android.hardware.input.InputDeviceIdentifier;
import android.hardware.input.InputManager;
@@ -30,7 +31,9 @@
import com.android.settings.R;
import com.android.settings.core.BasePreferenceController;
+import com.android.settings.overlay.FeatureFactory;
import com.android.settings.widget.TickButtonPreference;
+import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.core.lifecycle.events.OnStart;
import com.android.settingslib.core.lifecycle.events.OnStop;
@@ -53,13 +56,16 @@
private KeyboardLayout[] mKeyboardLayouts;
private PreferenceScreen mScreen;
private String mPreviousSelection;
+ private String mFinalSelectedLayout;
private String mLayout;
+ private MetricsFeatureProvider mMetricsFeatureProvider;
public NewKeyboardLayoutPickerController(Context context, String key) {
super(context, key);
mIm = context.getSystemService(InputManager.class);
mInputDeviceId = -1;
mPreferenceMap = new HashMap<>();
+ mMetricsFeatureProvider = FeatureFactory.getFeatureFactory().getMetricsFeatureProvider();
}
public void initialize(Fragment parent) {
@@ -74,6 +80,7 @@
mInputMethodSubtype =
arguments.getParcelable(NewKeyboardSettingsUtils.EXTRA_INPUT_METHOD_SUBTYPE);
mLayout = getSelectedLayoutLabel();
+ mFinalSelectedLayout = mLayout;
mKeyboardLayouts = mIm.getKeyboardLayoutListForInputDevice(
mInputDeviceIdentifier, mUserId, mInputMethodInfo, mInputMethodSubtype);
parent.getActivity().setTitle(mTitle);
@@ -92,6 +99,11 @@
@Override
public void onStop() {
+ if (!mLayout.equals(mFinalSelectedLayout)) {
+ String change = "From:" + mLayout + ", to:" + mFinalSelectedLayout;
+ mMetricsFeatureProvider.action(
+ mContext, SettingsEnums.ACTION_PK_LAYOUT_CHANGED, change);
+ }
mIm.unregisterInputDeviceListener(this);
mInputDeviceId = -1;
}
@@ -122,6 +134,7 @@
}
setLayout(pref);
mPreviousSelection = preference.getKey();
+ mFinalSelectedLayout = pref.getTitle().toString();
return true;
}
diff --git a/src/com/android/settings/inputmethod/PhysicalKeyboardFragment.java b/src/com/android/settings/inputmethod/PhysicalKeyboardFragment.java
index ea2d4b9..1ca9ee6 100644
--- a/src/com/android/settings/inputmethod/PhysicalKeyboardFragment.java
+++ b/src/com/android/settings/inputmethod/PhysicalKeyboardFragment.java
@@ -108,6 +108,7 @@
SHOW_VIRTUAL_KEYBOARD_SWITCH));
FeatureFactory featureFactory = FeatureFactory.getFeatureFactory();
+ mMetricsFeatureProvider = featureFactory.getMetricsFeatureProvider();
mFeatureProvider = featureFactory.getKeyboardSettingsFeatureProvider();
mSupportsFirmwareUpdate = mFeatureProvider.supportsFirmwareUpdate();
if (mSupportsFirmwareUpdate) {
@@ -124,6 +125,10 @@
KeyboardLayoutPickerFragment.EXTRA_INPUT_DEVICE_IDENTIFIER);
int intentFromWhere =
activity.getIntent().getIntExtra(android.provider.Settings.EXTRA_ENTRYPOINT, -1);
+ if (intentFromWhere != -1) {
+ mMetricsFeatureProvider.action(
+ getContext(), SettingsEnums.ACTION_OPEN_PK_SETTINGS_FROM, intentFromWhere);
+ }
if (inputDeviceIdentifier != null) {
mAutoInputDeviceIdentifier = inputDeviceIdentifier;
}
@@ -254,6 +259,16 @@
});
}
category.addPreference(pref);
+ StringBuilder vendorAndProductId = new StringBuilder();
+ String vendorId = String.valueOf(hardKeyboardDeviceInfo.mVendorId);
+ String productId = String.valueOf(hardKeyboardDeviceInfo.mProductId);
+ vendorAndProductId.append(vendorId);
+ vendorAndProductId.append("-");
+ vendorAndProductId.append(productId);
+ mMetricsFeatureProvider.action(
+ getContext(),
+ SettingsEnums.ACTION_USE_SPECIFIC_KEYBOARD,
+ vendorAndProductId.toString());
}
mKeyboardAssistanceCategory.setOrder(1);
preferenceScreen.addPreference(mKeyboardAssistanceCategory);
@@ -374,7 +389,9 @@
device.getName(),
device.getIdentifier(),
getLayoutLabel(device, context, im),
- device.getBluetoothAddress()));
+ device.getBluetoothAddress(),
+ device.getVendorId(),
+ device.getProductId()));
}
// We intentionally don't reuse Comparator because Collator may not be thread-safe.
@@ -403,16 +420,24 @@
public final String mLayoutLabel;
@Nullable
public final String mBluetoothAddress;
+ @NonNull
+ public final int mVendorId;
+ @NonNull
+ public final int mProductId;
public HardKeyboardDeviceInfo(
@Nullable String deviceName,
@NonNull InputDeviceIdentifier deviceIdentifier,
@NonNull String layoutLabel,
- @Nullable String bluetoothAddress) {
+ @Nullable String bluetoothAddress,
+ @NonNull int vendorId,
+ @NonNull int productId) {
mDeviceName = TextUtils.emptyIfNull(deviceName);
mDeviceIdentifier = deviceIdentifier;
mLayoutLabel = layoutLabel;
mBluetoothAddress = bluetoothAddress;
+ mVendorId = vendorId;
+ mProductId = productId;
}
@Override
diff --git a/src/com/android/settings/inputmethod/TouchGesturesButtonPreferenceController.java b/src/com/android/settings/inputmethod/TouchGesturesButtonPreferenceController.java
index bbe65c1..648a3e6 100644
--- a/src/com/android/settings/inputmethod/TouchGesturesButtonPreferenceController.java
+++ b/src/com/android/settings/inputmethod/TouchGesturesButtonPreferenceController.java
@@ -16,6 +16,7 @@
package com.android.settings.inputmethod;
+import android.app.settings.SettingsEnums;
import android.content.Context;
import android.util.FeatureFlagUtils;
@@ -23,6 +24,8 @@
import androidx.preference.PreferenceScreen;
import com.android.settings.core.BasePreferenceController;
+import com.android.settings.overlay.FeatureFactory;
+import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
import com.android.settingslib.widget.ButtonPreference;
public class TouchGesturesButtonPreferenceController extends BasePreferenceController {
@@ -33,9 +36,11 @@
private static final String GESTURE_DIALOG_TAG = "GESTURE_DIALOG_TAG";
private Fragment mParent;
+ private MetricsFeatureProvider mMetricsFeatureProvider;
public TouchGesturesButtonPreferenceController(Context context, String key) {
super(context, key);
+ mMetricsFeatureProvider = FeatureFactory.getFeatureFactory().getMetricsFeatureProvider();
}
public void setFragment(Fragment parent) {
@@ -67,6 +72,7 @@
}
private void showTouchpadGestureEducation() {
+ mMetricsFeatureProvider.action(mContext, SettingsEnums.ACTION_LEARN_TOUCHPAD_GESTURE_CLICK);
TrackpadGestureDialogFragment fragment = new TrackpadGestureDialogFragment();
fragment.setTargetFragment(mParent, 0);
fragment.show(mParent.getActivity().getSupportFragmentManager(), GESTURE_DIALOG_TAG);
diff --git a/src/com/android/settings/inputmethod/TrackpadBottomPreferenceController.java b/src/com/android/settings/inputmethod/TrackpadBottomPreferenceController.java
index 5133d04..d410a1b 100644
--- a/src/com/android/settings/inputmethod/TrackpadBottomPreferenceController.java
+++ b/src/com/android/settings/inputmethod/TrackpadBottomPreferenceController.java
@@ -16,16 +16,22 @@
package com.android.settings.inputmethod;
+import android.app.settings.SettingsEnums;
import android.content.Context;
import android.hardware.input.InputSettings;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController;
+import com.android.settings.overlay.FeatureFactory;
+import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
public class TrackpadBottomPreferenceController extends TogglePreferenceController {
+ private MetricsFeatureProvider mMetricsFeatureProvider;
+
public TrackpadBottomPreferenceController(Context context, String key) {
super(context, key);
+ mMetricsFeatureProvider = FeatureFactory.getFeatureFactory().getMetricsFeatureProvider();
}
@Override
@@ -36,6 +42,8 @@
@Override
public boolean setChecked(boolean isChecked) {
InputSettings.setTouchpadRightClickZone(mContext, isChecked);
+ mMetricsFeatureProvider.action(
+ mContext, SettingsEnums.ACTION_GESTURE_BOTTOM_RIGHT_TAP_CHANGED, isChecked);
return true;
}
diff --git a/src/com/android/settings/inputmethod/TrackpadGoBackPreferenceController.java b/src/com/android/settings/inputmethod/TrackpadGoBackPreferenceController.java
index 017689d..36fb0c0 100644
--- a/src/com/android/settings/inputmethod/TrackpadGoBackPreferenceController.java
+++ b/src/com/android/settings/inputmethod/TrackpadGoBackPreferenceController.java
@@ -16,18 +16,24 @@
package com.android.settings.inputmethod;
+import android.app.settings.SettingsEnums;
import android.content.Context;
import android.provider.Settings;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController;
+import com.android.settings.overlay.FeatureFactory;
+import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
public class TrackpadGoBackPreferenceController extends TogglePreferenceController {
private static final String SETTING_KEY = Settings.Secure.TRACKPAD_GESTURE_BACK_ENABLED;
+ private MetricsFeatureProvider mMetricsFeatureProvider;
+
public TrackpadGoBackPreferenceController(Context context, String key) {
super(context, key);
+ mMetricsFeatureProvider = FeatureFactory.getFeatureFactory().getMetricsFeatureProvider();
}
@Override
@@ -38,6 +44,8 @@
@Override
public boolean setChecked(boolean isChecked) {
Settings.Secure.putInt(mContext.getContentResolver(), SETTING_KEY, isChecked ? 1 : 0);
+ mMetricsFeatureProvider.action(
+ mContext, SettingsEnums.ACTION_GESTURE_GO_BACK_CHANGED, isChecked);
return true;
}
diff --git a/src/com/android/settings/inputmethod/TrackpadGoHomePreferenceController.java b/src/com/android/settings/inputmethod/TrackpadGoHomePreferenceController.java
index 18699e3..dbc706e 100644
--- a/src/com/android/settings/inputmethod/TrackpadGoHomePreferenceController.java
+++ b/src/com/android/settings/inputmethod/TrackpadGoHomePreferenceController.java
@@ -16,18 +16,24 @@
package com.android.settings.inputmethod;
+import android.app.settings.SettingsEnums;
import android.content.Context;
import android.provider.Settings;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController;
+import com.android.settings.overlay.FeatureFactory;
+import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
public class TrackpadGoHomePreferenceController extends TogglePreferenceController {
private static final String SETTING_KEY = Settings.Secure.TRACKPAD_GESTURE_HOME_ENABLED;
+ private MetricsFeatureProvider mMetricsFeatureProvider;
+
public TrackpadGoHomePreferenceController(Context context, String key) {
super(context, key);
+ mMetricsFeatureProvider = FeatureFactory.getFeatureFactory().getMetricsFeatureProvider();
}
@Override
@@ -38,6 +44,8 @@
@Override
public boolean setChecked(boolean isChecked) {
Settings.Secure.putInt(mContext.getContentResolver(), SETTING_KEY, isChecked ? 1 : 0);
+ mMetricsFeatureProvider.action(
+ mContext, SettingsEnums.ACTION_GESTURE_GO_HOME_CHANGED, isChecked);
return true;
}
diff --git a/src/com/android/settings/inputmethod/TrackpadNotificationsPreferenceController.java b/src/com/android/settings/inputmethod/TrackpadNotificationsPreferenceController.java
index 21f04a3..d430e4d 100644
--- a/src/com/android/settings/inputmethod/TrackpadNotificationsPreferenceController.java
+++ b/src/com/android/settings/inputmethod/TrackpadNotificationsPreferenceController.java
@@ -16,18 +16,24 @@
package com.android.settings.inputmethod;
+import android.app.settings.SettingsEnums;
import android.content.Context;
import android.provider.Settings;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController;
+import com.android.settings.overlay.FeatureFactory;
+import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
public class TrackpadNotificationsPreferenceController extends TogglePreferenceController {
private static final String SETTING_KEY = Settings.Secure.TRACKPAD_GESTURE_NOTIFICATION_ENABLED;
+ private MetricsFeatureProvider mMetricsFeatureProvider;
+
public TrackpadNotificationsPreferenceController(Context context, String key) {
super(context, key);
+ mMetricsFeatureProvider = FeatureFactory.getFeatureFactory().getMetricsFeatureProvider();
}
@Override
@@ -38,6 +44,8 @@
@Override
public boolean setChecked(boolean isChecked) {
Settings.Secure.putInt(mContext.getContentResolver(), SETTING_KEY, isChecked ? 1 : 0);
+ mMetricsFeatureProvider.action(
+ mContext, SettingsEnums.ACTION_GESTURE_NOTIFICATION_CHANGED, isChecked);
return true;
}
diff --git a/src/com/android/settings/inputmethod/TrackpadPointerSpeedPreferenceController.java b/src/com/android/settings/inputmethod/TrackpadPointerSpeedPreferenceController.java
index 71b4119..d024546 100644
--- a/src/com/android/settings/inputmethod/TrackpadPointerSpeedPreferenceController.java
+++ b/src/com/android/settings/inputmethod/TrackpadPointerSpeedPreferenceController.java
@@ -16,20 +16,25 @@
package com.android.settings.inputmethod;
+import android.app.settings.SettingsEnums;
import android.content.Context;
import android.hardware.input.InputSettings;
import androidx.preference.PreferenceScreen;
import com.android.settings.core.SliderPreferenceController;
+import com.android.settings.overlay.FeatureFactory;
import com.android.settings.widget.SeekBarPreference;
+import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
public class TrackpadPointerSpeedPreferenceController extends SliderPreferenceController {
private SeekBarPreference mPreference;
+ private MetricsFeatureProvider mMetricsFeatureProvider;
public TrackpadPointerSpeedPreferenceController(Context context, String key) {
super(context, key);
+ mMetricsFeatureProvider = FeatureFactory.getFeatureFactory().getMetricsFeatureProvider();
}
@Override
@@ -53,6 +58,8 @@
return false;
}
InputSettings.setTouchpadPointerSpeed(mContext, position);
+ mMetricsFeatureProvider.action(
+ mContext, SettingsEnums.ACTION_GESTURE_POINTER_SPEED_CHANGED, position);
return true;
}
diff --git a/src/com/android/settings/inputmethod/TrackpadRecentAppsPreferenceController.java b/src/com/android/settings/inputmethod/TrackpadRecentAppsPreferenceController.java
index eab2b33..44a56e7 100644
--- a/src/com/android/settings/inputmethod/TrackpadRecentAppsPreferenceController.java
+++ b/src/com/android/settings/inputmethod/TrackpadRecentAppsPreferenceController.java
@@ -16,18 +16,24 @@
package com.android.settings.inputmethod;
+import android.app.settings.SettingsEnums;
import android.content.Context;
import android.provider.Settings;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController;
+import com.android.settings.overlay.FeatureFactory;
+import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
public class TrackpadRecentAppsPreferenceController extends TogglePreferenceController {
private static final String SETTING_KEY = Settings.Secure.TRACKPAD_GESTURE_OVERVIEW_ENABLED;
+ private MetricsFeatureProvider mMetricsFeatureProvider;
+
public TrackpadRecentAppsPreferenceController(Context context, String key) {
super(context, key);
+ mMetricsFeatureProvider = FeatureFactory.getFeatureFactory().getMetricsFeatureProvider();
}
@Override
@@ -38,6 +44,8 @@
@Override
public boolean setChecked(boolean isChecked) {
Settings.Secure.putInt(mContext.getContentResolver(), SETTING_KEY, isChecked ? 1 : 0);
+ mMetricsFeatureProvider.action(
+ mContext, SettingsEnums.ACTION_GESTURE_RECENT_APPS_CHANGED, isChecked);
return true;
}
diff --git a/src/com/android/settings/inputmethod/TrackpadReverseScrollingPreferenceController.java b/src/com/android/settings/inputmethod/TrackpadReverseScrollingPreferenceController.java
index 10d3013..042126d 100644
--- a/src/com/android/settings/inputmethod/TrackpadReverseScrollingPreferenceController.java
+++ b/src/com/android/settings/inputmethod/TrackpadReverseScrollingPreferenceController.java
@@ -16,16 +16,22 @@
package com.android.settings.inputmethod;
+import android.app.settings.SettingsEnums;
import android.content.Context;
import android.hardware.input.InputSettings;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController;
+import com.android.settings.overlay.FeatureFactory;
+import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
public class TrackpadReverseScrollingPreferenceController extends TogglePreferenceController {
+ private MetricsFeatureProvider mMetricsFeatureProvider;
+
public TrackpadReverseScrollingPreferenceController(Context context, String key) {
super(context, key);
+ mMetricsFeatureProvider = FeatureFactory.getFeatureFactory().getMetricsFeatureProvider();
}
@Override
@@ -36,6 +42,8 @@
@Override
public boolean setChecked(boolean isChecked) {
InputSettings.setTouchpadNaturalScrolling(mContext, !isChecked);
+ mMetricsFeatureProvider.action(
+ mContext, SettingsEnums.ACTION_GESTURE_REVERSE_SCROLLING_CHANGED, isChecked);
return true;
}
diff --git a/src/com/android/settings/inputmethod/TrackpadSwitchAppsPreferenceController.java b/src/com/android/settings/inputmethod/TrackpadSwitchAppsPreferenceController.java
index 84de64e..2b11411 100644
--- a/src/com/android/settings/inputmethod/TrackpadSwitchAppsPreferenceController.java
+++ b/src/com/android/settings/inputmethod/TrackpadSwitchAppsPreferenceController.java
@@ -16,18 +16,24 @@
package com.android.settings.inputmethod;
+import android.app.settings.SettingsEnums;
import android.content.Context;
import android.provider.Settings;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController;
+import com.android.settings.overlay.FeatureFactory;
+import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
public class TrackpadSwitchAppsPreferenceController extends TogglePreferenceController {
private static final String SETTING_KEY = Settings.Secure.TRACKPAD_GESTURE_QUICK_SWITCH_ENABLED;
+ private MetricsFeatureProvider mMetricsFeatureProvider;
+
public TrackpadSwitchAppsPreferenceController(Context context, String key) {
super(context, key);
+ mMetricsFeatureProvider = FeatureFactory.getFeatureFactory().getMetricsFeatureProvider();
}
@Override
@@ -38,6 +44,8 @@
@Override
public boolean setChecked(boolean isChecked) {
Settings.Secure.putInt(mContext.getContentResolver(), SETTING_KEY, isChecked ? 1 : 0);
+ mMetricsFeatureProvider.action(
+ mContext, SettingsEnums.ACTION_GESTURE_SWITCH_APPS_CHANGED, isChecked);
return true;
}
diff --git a/src/com/android/settings/inputmethod/TrackpadTapToClickPreferenceController.java b/src/com/android/settings/inputmethod/TrackpadTapToClickPreferenceController.java
index 8655307..f78c81e 100644
--- a/src/com/android/settings/inputmethod/TrackpadTapToClickPreferenceController.java
+++ b/src/com/android/settings/inputmethod/TrackpadTapToClickPreferenceController.java
@@ -16,16 +16,22 @@
package com.android.settings.inputmethod;
+import android.app.settings.SettingsEnums;
import android.content.Context;
import android.hardware.input.InputSettings;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController;
+import com.android.settings.overlay.FeatureFactory;
+import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
public class TrackpadTapToClickPreferenceController extends TogglePreferenceController {
+ private MetricsFeatureProvider mMetricsFeatureProvider;
+
public TrackpadTapToClickPreferenceController(Context context, String key) {
super(context, key);
+ mMetricsFeatureProvider = FeatureFactory.getFeatureFactory().getMetricsFeatureProvider();
}
@Override
@@ -36,6 +42,8 @@
@Override
public boolean setChecked(boolean isChecked) {
InputSettings.setTouchpadTapToClick(mContext, isChecked);
+ mMetricsFeatureProvider.action(
+ mContext, SettingsEnums.ACTION_GESTURE_TAP_TO_CLICK_CHANGED, isChecked);
return true;
}
diff --git a/src/com/android/settings/network/MobileNetworkRepository.java b/src/com/android/settings/network/MobileNetworkRepository.java
index f69b63f..af37d24 100644
--- a/src/com/android/settings/network/MobileNetworkRepository.java
+++ b/src/com/android/settings/network/MobileNetworkRepository.java
@@ -226,6 +226,9 @@
createTelephonyManagerBySubId(subId);
mDataRoamingObserver.register(mContext, subId);
}
+ // When one client registers callback first time, convey the cached results to the client
+ // so that the client is aware of the content therein.
+ sendAvailableSubInfoCache(mobileNetworkCallback);
}
public void addRegisterBySubId(int subId) {
@@ -416,7 +419,15 @@
private void onAvailableSubInfoChanged(
List<SubscriptionInfoEntity> availableSubInfoEntityList) {
- mAvailableSubInfoEntityList = new ArrayList<>(availableSubInfoEntityList);
+ synchronized (this) {
+ if (mAvailableSubInfoEntityList != null
+ && mAvailableSubInfoEntityList.size() == availableSubInfoEntityList.size()
+ && mAvailableSubInfoEntityList.containsAll(availableSubInfoEntityList)) {
+ Log.d(TAG, "onAvailableSubInfoChanged, duplicates = " + availableSubInfoEntityList);
+ return;
+ }
+ mAvailableSubInfoEntityList = new ArrayList<>(availableSubInfoEntityList);
+ }
if (DEBUG) {
Log.d(TAG, "onAvailableSubInfoChanged, availableSubInfoEntityList = "
+ availableSubInfoEntityList);
@@ -426,23 +437,48 @@
}
mMetricsFeatureProvider.action(mContext,
SettingsEnums.ACTION_MOBILE_NETWORK_DB_NOTIFY_SUB_INFO_IS_CHANGED, 0);
- onActiveSubInfoListChanged(mAvailableSubInfoEntityList);
+ onActiveSubInfoListChanged(availableSubInfoEntityList);
}
private void onActiveSubInfoListChanged(
List<SubscriptionInfoEntity> availableSubInfoEntityList) {
- mActiveSubInfoEntityList = availableSubInfoEntityList.stream()
+ List<SubscriptionInfoEntity> activeSubInfoEntityList =
+ availableSubInfoEntityList.stream()
.filter(SubscriptionInfoEntity::isActiveSubscription)
.filter(SubscriptionInfoEntity::isSubscriptionVisible)
.collect(Collectors.toList());
if (DEBUG) {
Log.d(TAG, "onActiveSubInfoChanged, activeSubInfoEntityList = "
- + mActiveSubInfoEntityList);
+ + activeSubInfoEntityList);
}
- List<SubscriptionInfoEntity> activeSubInfoEntityList = new ArrayList<>(
- mActiveSubInfoEntityList);
+ List<SubscriptionInfoEntity> tempActiveSubInfoEntityList = new ArrayList<>(
+ activeSubInfoEntityList);
+ synchronized (this) {
+ mActiveSubInfoEntityList = activeSubInfoEntityList;
+ }
for (MobileNetworkCallback callback : sCallbacks) {
- callback.onActiveSubInfoChanged(activeSubInfoEntityList);
+ callback.onActiveSubInfoChanged(tempActiveSubInfoEntityList);
+ }
+ }
+
+ private void sendAvailableSubInfoCache(MobileNetworkCallback callback) {
+ if (callback != null) {
+ List<SubscriptionInfoEntity> availableSubInfoEntityList = null;
+ List<SubscriptionInfoEntity> activeSubInfoEntityList = null;
+ synchronized (this) {
+ if (mAvailableSubInfoEntityList != null) {
+ availableSubInfoEntityList = new ArrayList<>(mAvailableSubInfoEntityList);
+ }
+ if (mActiveSubInfoEntityList != null) {
+ activeSubInfoEntityList = new ArrayList<>(mActiveSubInfoEntityList);
+ }
+ }
+ if (availableSubInfoEntityList != null) {
+ callback.onAvailableSubInfoChanged(availableSubInfoEntityList);
+ }
+ if (activeSubInfoEntityList != null) {
+ callback.onActiveSubInfoChanged(activeSubInfoEntityList);
+ }
}
}
@@ -498,8 +534,6 @@
mMobileNetworkDatabase.deleteSubInfoBySubId(subId);
mMobileNetworkDatabase.deleteUiccInfoBySubId(subId);
mMobileNetworkDatabase.deleteMobileNetworkInfoBySubId(subId);
- mAvailableSubInfoEntityList.removeIf(info -> info.subId.equals(subId));
- mActiveSubInfoEntityList.removeIf(info -> info.subId.equals(subId));
mUiccInfoEntityList.removeIf(info -> info.subId.equals(subId));
mMobileNetworkInfoEntityList.removeIf(info -> info.subId.equals(subId));
int id = Integer.parseInt(subId);
@@ -656,10 +690,15 @@
private void insertAvailableSubInfoToEntity(List<SubscriptionInfo> inputAvailableInfoList) {
sExecutor.execute(() -> {
- SubscriptionInfoEntity[] availableInfoArray = mAvailableSubInfoEntityList.toArray(
+ SubscriptionInfoEntity[] availableInfoArray = null;
+ int availableEntitySize = 0;
+ synchronized (this) {
+ availableInfoArray = mAvailableSubInfoEntityList.toArray(
new SubscriptionInfoEntity[0]);
+ availableEntitySize = mAvailableSubInfoEntityList.size();
+ }
if ((inputAvailableInfoList == null || inputAvailableInfoList.size() == 0)
- && mAvailableSubInfoEntityList.size() != 0) {
+ && availableEntitySize != 0) {
if (DEBUG) {
Log.d(TAG, "availableSudInfoList from framework is empty, remove all subs");
}
@@ -672,7 +711,7 @@
SubscriptionInfo[] inputAvailableInfoArray = inputAvailableInfoList.toArray(
new SubscriptionInfo[0]);
// Remove the redundant subInfo
- if (inputAvailableInfoList.size() <= mAvailableSubInfoEntityList.size()) {
+ if (inputAvailableInfoList.size() <= availableEntitySize) {
for (SubscriptionInfo subInfo : inputAvailableInfoArray) {
int subId = subInfo.getSubscriptionId();
if (mSubscriptionInfoMap.containsKey(subId)) {
@@ -686,7 +725,7 @@
deleteAllInfoBySubId(String.valueOf(key));
}
}
- } else if (inputAvailableInfoList.size() < mAvailableSubInfoEntityList.size()) {
+ } else if (inputAvailableInfoList.size() < availableEntitySize) {
// Check the subInfo between the new list from framework and old list in
// the database, if the subInfo is not existed in the new list, delete it
// from the database.
diff --git a/src/com/android/settings/network/NetworkProviderSettings.java b/src/com/android/settings/network/NetworkProviderSettings.java
index b4de224..d5bc2af 100644
--- a/src/com/android/settings/network/NetworkProviderSettings.java
+++ b/src/com/android/settings/network/NetworkProviderSettings.java
@@ -845,8 +845,10 @@
return;
}
- // update the menu item
- requireActivity().invalidateMenu();
+ if (isAdded()) {
+ // update the menu item
+ requireActivity().invalidateMenu();
+ }
switch (wifiState) {
case WifiManager.WIFI_STATE_ENABLED:
@@ -1480,8 +1482,10 @@
@Override
public void onAirplaneModeChanged(boolean isAirplaneModeOn) {
updateAirplaneModeMsgPreference(isAirplaneModeOn /* visible */);
- // update the menu item
- requireActivity().invalidateMenu();
+ if (isAdded()) {
+ // update the menu item
+ requireActivity().invalidateMenu();
+ }
}
/**
diff --git a/src/com/android/settings/security/ContentProtectionPreferenceController.java b/src/com/android/settings/security/ContentProtectionPreferenceController.java
index 0129800..5ff2712 100644
--- a/src/com/android/settings/security/ContentProtectionPreferenceController.java
+++ b/src/com/android/settings/security/ContentProtectionPreferenceController.java
@@ -15,11 +15,16 @@
*/
package com.android.settings.security;
-import static android.view.contentprotection.flags.Flags.settingUiEnabled;
+import static com.android.internal.R.string.config_defaultContentProtectionService;
+import android.content.ComponentName;
import android.content.Context;
+import android.provider.DeviceConfig;
+import android.view.contentcapture.ContentCaptureManager;
import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.VisibleForTesting;
import com.android.settings.core.BasePreferenceController;
@@ -31,7 +36,32 @@
@Override
public int getAvailabilityStatus() {
- // TODO(b/306565942): Add a resource value check.
- return settingUiEnabled() ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
+ if (!settingUiEnabled() || getContentProtectionServiceComponentName() == null) {
+ return UNSUPPORTED_ON_DEVICE;
+ }
+ return AVAILABLE;
+ }
+
+ @VisibleForTesting
+ @Nullable
+ protected String getContentProtectionServiceFlatComponentName() {
+ return mContext.getString(config_defaultContentProtectionService);
+ }
+
+ @Nullable
+ private ComponentName getContentProtectionServiceComponentName() {
+ String flatComponentName = getContentProtectionServiceFlatComponentName();
+ if (flatComponentName == null) {
+ return null;
+ }
+ return ComponentName.unflattenFromString(flatComponentName);
+ }
+
+ @VisibleForTesting
+ protected boolean settingUiEnabled() {
+ return DeviceConfig.getBoolean(
+ DeviceConfig.NAMESPACE_CONTENT_CAPTURE,
+ ContentCaptureManager.DEVICE_CONFIG_PROPERTY_ENABLE_CONTENT_PROTECTION_RECEIVER,
+ ContentCaptureManager.DEFAULT_ENABLE_CONTENT_PROTECTION_RECEIVER);
}
}
diff --git a/src/com/android/settings/security/ContentProtectionPreferenceFragment.java b/src/com/android/settings/security/ContentProtectionPreferenceFragment.java
index a58f6e5..476d93e 100644
--- a/src/com/android/settings/security/ContentProtectionPreferenceFragment.java
+++ b/src/com/android/settings/security/ContentProtectionPreferenceFragment.java
@@ -16,26 +16,35 @@
package com.android.settings.security;
-import android.content.Context;
import android.app.settings.SettingsEnums;
+import android.content.Context;
+import android.os.Bundle;
+import android.os.UserManager;
-import com.android.settings.dashboard.DashboardFragment;
+import androidx.annotation.VisibleForTesting;
+import androidx.preference.SwitchPreference;
+
import com.android.settings.R;
-import com.android.settings.SettingsPreferenceFragment;
+import com.android.settings.Utils;
+import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settingslib.search.SearchIndexable;
-import android.os.Bundle;
-
@SearchIndexable
public class ContentProtectionPreferenceFragment extends DashboardFragment {
private static final String TAG = "ContentProtectionPreferenceFragment";
+ @VisibleForTesting
+ static final String KEY_WORK_PROFILE_SWITCH =
+ "content_protection_preference_user_consent_work_profile_switch";
+
// Required by @SearchIndexable to make the fragment and preferences to be indexed.
// Do not rename.
public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
new BaseSearchIndexProvider(R.layout.content_protection_preference_fragment);
+ private SwitchPreference mWorkProfileSwitch;
+
@Override
public void onAttach(Context context) {
super.onAttach(context);
@@ -44,7 +53,14 @@
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
- // TODO(b/304681048): Update the toggles' behavior according to user's profile
+
+ mWorkProfileSwitch = getPreferenceScreen().findPreference(KEY_WORK_PROFILE_SWITCH);
+ // If any work profile on the device, display the disable toggle unchecked
+ if (Utils.getManagedProfile(getContext().getSystemService(UserManager.class)) != null) {
+ mWorkProfileSwitch.setVisible(true);
+ mWorkProfileSwitch.setEnabled(false);
+ mWorkProfileSwitch.setChecked(false);
+ }
}
@Override
diff --git a/src/com/android/settings/security/ContentProtectionTogglePreferenceController.java b/src/com/android/settings/security/ContentProtectionTogglePreferenceController.java
new file mode 100644
index 0000000..686b25b
--- /dev/null
+++ b/src/com/android/settings/security/ContentProtectionTogglePreferenceController.java
@@ -0,0 +1,94 @@
+/*
+ * 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.security;
+
+
+import android.content.ContentResolver;
+import android.content.Context;
+import android.provider.Settings;
+import android.widget.Switch;
+
+import androidx.annotation.VisibleForTesting;
+import androidx.preference.PreferenceScreen;
+
+import com.android.settings.R;
+import com.android.settings.Utils;
+import com.android.settings.core.TogglePreferenceController;
+import com.android.settings.widget.SettingsMainSwitchPreference;
+import com.android.settingslib.widget.OnMainSwitchChangeListener;
+
+/** Preference controller for content protection toggle switch bar. */
+public class ContentProtectionTogglePreferenceController extends TogglePreferenceController
+ implements OnMainSwitchChangeListener {
+
+ @VisibleForTesting
+ static final String KEY_CONTENT_PROTECTION_PREFERENCE = "content_protection_user_consent";
+
+ private SettingsMainSwitchPreference mSwitchBar;
+ private final ContentResolver mContentResolver;
+ private final boolean isFullyManagedDevice = Utils.getDeviceOwnerComponent(mContext) != null;
+
+ public ContentProtectionTogglePreferenceController(Context context, String preferenceKey) {
+ super(context, preferenceKey);
+ mContentResolver = context.getContentResolver();
+ }
+
+ @Override
+ public int getAvailabilityStatus() {
+ return AVAILABLE;
+ }
+
+ @Override
+ public boolean isChecked() {
+ if (isFullyManagedDevice) {
+ // If fully managed device, it should always unchecked
+ return false;
+ }
+ return Settings.Global.getInt(mContentResolver, KEY_CONTENT_PROTECTION_PREFERENCE, 0) >= 0;
+ }
+
+ @Override
+ public boolean setChecked(boolean isChecked) {
+ mSwitchBar.setChecked(isChecked);
+ Settings.Global.putInt(
+ mContentResolver, KEY_CONTENT_PROTECTION_PREFERENCE, isChecked ? 1 : -1);
+ return true;
+ }
+
+ @Override
+ public void displayPreference(PreferenceScreen screen) {
+ super.displayPreference(screen);
+
+ mSwitchBar = screen.findPreference(getPreferenceKey());
+ mSwitchBar.addOnSwitchChangeListener(this);
+ if (isFullyManagedDevice) {
+ // If fully managed device, the switch bar is greyed out
+ mSwitchBar.setEnabled(false);
+ }
+ }
+
+ @Override
+ public void onSwitchChanged(Switch switchView, boolean isChecked) {
+ if (isChecked != isChecked()) {
+ setChecked(isChecked);
+ }
+ }
+
+ @Override
+ public int getSliceHighlightMenuRes() {
+ return R.string.menu_key_security;
+ }
+}
diff --git a/src/com/android/settings/spa/app/appcompat/UserAspectRatioAppPreference.kt b/src/com/android/settings/spa/app/appcompat/UserAspectRatioAppPreference.kt
index 96884be..1e6e545 100644
--- a/src/com/android/settings/spa/app/appcompat/UserAspectRatioAppPreference.kt
+++ b/src/com/android/settings/spa/app/appcompat/UserAspectRatioAppPreference.kt
@@ -63,18 +63,18 @@
}.flowOn(Dispatchers.IO)
fun startActivity() =
- navigateToAppAspectRatioSettings(context, app)
+ navigateToAppAspectRatioSettings(context, app, AppInfoSettingsProvider.METRICS_CATEGORY)
val summaryFlow = flow {
emit(manager.getUserMinAspectRatioEntry(app.packageName, context.userId))
}.flowOn(Dispatchers.IO)
}
-fun navigateToAppAspectRatioSettings(context: Context, app: ApplicationInfo) {
+fun navigateToAppAspectRatioSettings(context: Context, app: ApplicationInfo, metricsCategory: Int) {
AppInfoDashboardFragment.startAppInfoFragment(
UserAspectRatioDetails::class.java,
app,
context,
- AppInfoSettingsProvider.METRICS_CATEGORY,
+ metricsCategory,
)
}
diff --git a/src/com/android/settings/spa/app/appcompat/UserAspectRatioAppsPageProvider.kt b/src/com/android/settings/spa/app/appcompat/UserAspectRatioAppsPageProvider.kt
index 5af29ef..7368750f 100644
--- a/src/com/android/settings/spa/app/appcompat/UserAspectRatioAppsPageProvider.kt
+++ b/src/com/android/settings/spa/app/appcompat/UserAspectRatioAppsPageProvider.kt
@@ -16,6 +16,7 @@
package com.android.settings.spa.app.appcompat
+import android.app.settings.SettingsEnums
import android.content.Context
import android.content.pm.ApplicationInfo
import android.content.pm.PackageInfo
@@ -155,7 +156,13 @@
override fun AppListItemModel<UserAspectRatioAppListItemModel>.AppItem() {
val app = record.app
AppListItem(
- onClick = { navigateToAppAspectRatioSettings(context, app) }
+ onClick = {
+ navigateToAppAspectRatioSettings(
+ context,
+ app,
+ SettingsEnums.USER_ASPECT_RATIO_APP_LIST_SETTINGS
+ )
+ }
)
}
diff --git a/src/com/android/settings/spa/app/appinfo/AppForceStopButton.kt b/src/com/android/settings/spa/app/appinfo/AppForceStopButton.kt
index 086f59e..7615442 100644
--- a/src/com/android/settings/spa/app/appinfo/AppForceStopButton.kt
+++ b/src/com/android/settings/spa/app/appinfo/AppForceStopButton.kt
@@ -20,7 +20,7 @@
import android.content.pm.ApplicationInfo
import android.os.UserManager
import androidx.compose.material.icons.Icons
-import androidx.compose.material.icons.outlined.WarningAmber
+import androidx.compose.material.icons.outlined.Report
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.res.stringResource
@@ -48,7 +48,7 @@
val dialogPresenter = confirmDialogPresenter()
return ActionButton(
text = context.getString(R.string.force_stop),
- imageVector = Icons.Outlined.WarningAmber,
+ imageVector = Icons.Outlined.Report,
enabled = isForceStopButtonEnable(app),
) { onForceStopButtonClicked(app, dialogPresenter) }
}
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetailTest.java b/tests/robotests/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetailTest.java
index 80486cb..d01d7e0 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetailTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetailTest.java
@@ -78,11 +78,12 @@
import java.util.concurrent.TimeUnit;
@RunWith(RobolectricTestRunner.class)
-@Config(shadows = {
- ShadowEntityHeaderController.class,
- ShadowActivityManager.class,
- com.android.settings.testutils.shadow.ShadowFragment.class,
-})
+@Config(
+ shadows = {
+ ShadowEntityHeaderController.class,
+ ShadowActivityManager.class,
+ com.android.settings.testutils.shadow.ShadowFragment.class,
+ })
public class AdvancedPowerUsageDetailTest {
private static final String APP_LABEL = "app label";
private static final String SUMMARY = "summary";
@@ -99,30 +100,19 @@
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
private FragmentActivity mActivity;
- @Mock
- private EntityHeaderController mEntityHeaderController;
- @Mock
- private LayoutPreference mHeaderPreference;
- @Mock
- private ApplicationsState mState;
- @Mock
- private ApplicationsState.AppEntry mAppEntry;
- @Mock
- private Bundle mBundle;
- @Mock
- private BatteryEntry mBatteryEntry;
- @Mock
- private PackageManager mPackageManager;
- @Mock
- private InstallSourceInfo mInstallSourceInfo;
- @Mock
- private AppOpsManager mAppOpsManager;
- @Mock
- private LoaderManager mLoaderManager;
- @Mock
- private BatteryOptimizeUtils mBatteryOptimizeUtils;
- @Mock
- private BackupManager mBackupManager;
+
+ @Mock private EntityHeaderController mEntityHeaderController;
+ @Mock private LayoutPreference mHeaderPreference;
+ @Mock private ApplicationsState mState;
+ @Mock private ApplicationsState.AppEntry mAppEntry;
+ @Mock private Bundle mBundle;
+ @Mock private BatteryEntry mBatteryEntry;
+ @Mock private PackageManager mPackageManager;
+ @Mock private InstallSourceInfo mInstallSourceInfo;
+ @Mock private AppOpsManager mAppOpsManager;
+ @Mock private LoaderManager mLoaderManager;
+ @Mock private BatteryOptimizeUtils mBatteryOptimizeUtils;
+ @Mock private BackupManager mBackupManager;
private Context mContext;
private PrimarySwitchPreference mAllowBackgroundUsagePreference;
@@ -149,19 +139,26 @@
doReturn(mLoaderManager).when(mFragment).getLoaderManager();
ShadowEntityHeaderController.setUseMock(mEntityHeaderController);
- doReturn(mEntityHeaderController).when(mEntityHeaderController)
+ doReturn(mEntityHeaderController)
+ .when(mEntityHeaderController)
.setButtonActions(anyInt(), anyInt());
- doReturn(mEntityHeaderController).when(mEntityHeaderController)
+ doReturn(mEntityHeaderController)
+ .when(mEntityHeaderController)
.setIcon(nullable(Drawable.class));
- doReturn(mEntityHeaderController).when(mEntityHeaderController).setIcon(nullable(
- ApplicationsState.AppEntry.class));
- doReturn(mEntityHeaderController).when(mEntityHeaderController)
+ doReturn(mEntityHeaderController)
+ .when(mEntityHeaderController)
+ .setIcon(nullable(ApplicationsState.AppEntry.class));
+ doReturn(mEntityHeaderController)
+ .when(mEntityHeaderController)
.setLabel(nullable(String.class));
- doReturn(mEntityHeaderController).when(mEntityHeaderController)
+ doReturn(mEntityHeaderController)
+ .when(mEntityHeaderController)
.setLabel(nullable(String.class));
- doReturn(mEntityHeaderController).when(mEntityHeaderController)
+ doReturn(mEntityHeaderController)
+ .when(mEntityHeaderController)
.setLabel(nullable(ApplicationsState.AppEntry.class));
- doReturn(mEntityHeaderController).when(mEntityHeaderController)
+ doReturn(mEntityHeaderController)
+ .when(mEntityHeaderController)
.setSummary(nullable(String.class));
when(mBatteryEntry.getUid()).thenReturn(UID);
@@ -184,13 +181,15 @@
final ArgumentCaptor<Intent> captor = ArgumentCaptor.forClass(Intent.class);
- Answer<Void> callable = invocation -> {
- mBundle = captor.getValue().getBundleExtra(EXTRA_SHOW_FRAGMENT_ARGUMENTS);
- System.out.println("mBundle = " + mBundle);
- return null;
- };
- doAnswer(callable).when(mActivity).startActivityAsUser(captor.capture(),
- nullable(UserHandle.class));
+ Answer<Void> callable =
+ invocation -> {
+ mBundle = captor.getValue().getBundleExtra(EXTRA_SHOW_FRAGMENT_ARGUMENTS);
+ System.out.println("mBundle = " + mBundle);
+ return null;
+ };
+ doAnswer(callable)
+ .when(mActivity)
+ .startActivityAsUser(captor.capture(), nullable(UserHandle.class));
doAnswer(callable).when(mActivity).startActivity(captor.capture());
mAllowBackgroundUsagePreference = new PrimarySwitchPreference(mContext);
@@ -219,7 +218,9 @@
@Test
public void initHeader_HasAppEntry_BuildByAppEntry() {
- ReflectionHelpers.setStaticField(AppUtils.class, "sInstantAppDataProvider",
+ ReflectionHelpers.setStaticField(
+ AppUtils.class,
+ "sInstantAppDataProvider",
new InstantAppDataProvider() {
@Override
public boolean isInstantApp(ApplicationInfo info) {
@@ -236,7 +237,9 @@
@Test
public void initHeader_HasAppEntry_InstantApp() {
- ReflectionHelpers.setStaticField(AppUtils.class, "sInstantAppDataProvider",
+ ReflectionHelpers.setStaticField(
+ AppUtils.class,
+ "sInstantAppDataProvider",
new InstantAppDataProvider() {
@Override
public boolean isInstantApp(ApplicationInfo info) {
@@ -253,16 +256,13 @@
@Test
public void startBatteryDetailPage_invalidToShowSummary_noFGBDData() {
- AdvancedPowerUsageDetail.startBatteryDetailPage(mActivity, mFragment,
- mBatteryEntry, USAGE_PERCENT);
+ AdvancedPowerUsageDetail.startBatteryDetailPage(
+ mActivity, mFragment, mBatteryEntry, USAGE_PERCENT);
assertThat(mBundle.getInt(AdvancedPowerUsageDetail.EXTRA_UID)).isEqualTo(UID);
- assertThat(mBundle.getLong(AdvancedPowerUsageDetail.EXTRA_BACKGROUND_TIME))
- .isEqualTo(0);
- assertThat(mBundle.getLong(AdvancedPowerUsageDetail.EXTRA_FOREGROUND_TIME))
- .isEqualTo(0);
- assertThat(mBundle.getLong(AdvancedPowerUsageDetail.EXTRA_SCREEN_ON_TIME))
- .isEqualTo(0);
+ assertThat(mBundle.getLong(AdvancedPowerUsageDetail.EXTRA_BACKGROUND_TIME)).isEqualTo(0);
+ assertThat(mBundle.getLong(AdvancedPowerUsageDetail.EXTRA_FOREGROUND_TIME)).isEqualTo(0);
+ assertThat(mBundle.getLong(AdvancedPowerUsageDetail.EXTRA_SCREEN_ON_TIME)).isEqualTo(0);
assertThat(mBundle.getString(AdvancedPowerUsageDetail.EXTRA_POWER_USAGE_PERCENT))
.isEqualTo(USAGE_PERCENT);
}
@@ -276,18 +276,22 @@
verify(mActivity).startActivity(captor.capture());
- assertThat(captor.getValue().getBundleExtra(EXTRA_SHOW_FRAGMENT_ARGUMENTS)
- .getString(AdvancedPowerUsageDetail.EXTRA_PACKAGE_NAME))
+ assertThat(
+ captor.getValue()
+ .getBundleExtra(EXTRA_SHOW_FRAGMENT_ARGUMENTS)
+ .getString(AdvancedPowerUsageDetail.EXTRA_PACKAGE_NAME))
.isEqualTo(PACKAGE_NAME[0]);
- assertThat(captor.getValue().getBundleExtra(EXTRA_SHOW_FRAGMENT_ARGUMENTS)
- .getString(AdvancedPowerUsageDetail.EXTRA_POWER_USAGE_PERCENT))
+ assertThat(
+ captor.getValue()
+ .getBundleExtra(EXTRA_SHOW_FRAGMENT_ARGUMENTS)
+ .getString(AdvancedPowerUsageDetail.EXTRA_POWER_USAGE_PERCENT))
.isEqualTo("0%");
}
@Test
- public void startBatteryDetailPage_batteryEntryNotExisted_extractUidFromPackageName() throws
- PackageManager.NameNotFoundException {
+ public void startBatteryDetailPage_batteryEntryNotExisted_extractUidFromPackageName()
+ throws PackageManager.NameNotFoundException {
doReturn(UID).when(mPackageManager).getPackageUid(PACKAGE_NAME[0], 0 /* no flag */);
AdvancedPowerUsageDetail.startBatteryDetailPage(
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/AllowBackgroundPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/AllowBackgroundPreferenceControllerTest.java
index be80e1e..261a315 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/AllowBackgroundPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/AllowBackgroundPreferenceControllerTest.java
@@ -88,8 +88,8 @@
public void testUpdateState_isSystemOrDefaultAppAndRestrictedStates_prefChecked() {
when(mBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()).thenReturn(false);
when(mBatteryOptimizeUtils.isSystemOrDefaultApp()).thenReturn(true);
- when(mBatteryOptimizeUtils.getAppOptimizationMode()).thenReturn(
- BatteryOptimizeUtils.MODE_RESTRICTED);
+ when(mBatteryOptimizeUtils.getAppOptimizationMode())
+ .thenReturn(BatteryOptimizeUtils.MODE_RESTRICTED);
mController.updateState(mMainSwitchPreference);
@@ -101,8 +101,8 @@
public void testUpdateState_isSystemOrDefaultApp_prefUnchecked() {
when(mBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()).thenReturn(false);
when(mBatteryOptimizeUtils.isSystemOrDefaultApp()).thenReturn(true);
- when(mBatteryOptimizeUtils.getAppOptimizationMode()).thenReturn(
- BatteryOptimizeUtils.MODE_OPTIMIZED);
+ when(mBatteryOptimizeUtils.getAppOptimizationMode())
+ .thenReturn(BatteryOptimizeUtils.MODE_OPTIMIZED);
mController.updateState(mMainSwitchPreference);
@@ -113,8 +113,8 @@
@Test
public void testUpdateState_isRestrictedStates_prefChecked() {
when(mBatteryOptimizeUtils.isOptimizeModeMutable()).thenReturn(true);
- when(mBatteryOptimizeUtils.getAppOptimizationMode()).thenReturn(
- BatteryOptimizeUtils.MODE_RESTRICTED);
+ when(mBatteryOptimizeUtils.getAppOptimizationMode())
+ .thenReturn(BatteryOptimizeUtils.MODE_RESTRICTED);
mController.updateState(mMainSwitchPreference);
@@ -125,8 +125,8 @@
@Test
public void testUpdateState_prefUnchecked() {
when(mBatteryOptimizeUtils.isOptimizeModeMutable()).thenReturn(true);
- when(mBatteryOptimizeUtils.getAppOptimizationMode()).thenReturn(
- BatteryOptimizeUtils.MODE_OPTIMIZED);
+ when(mBatteryOptimizeUtils.getAppOptimizationMode())
+ .thenReturn(BatteryOptimizeUtils.MODE_OPTIMIZED);
mController.updateState(mMainSwitchPreference);
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/AutoRestrictionPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/AutoRestrictionPreferenceControllerTest.java
index 0b6051b..5c3addf 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/AutoRestrictionPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/AutoRestrictionPreferenceControllerTest.java
@@ -91,26 +91,25 @@
public void testGetAvailabilityStatus_smartBatterySupported_returnDisabled() {
doReturn(true).when(mFeatureFactory.powerUsageFeatureProvider).isSmartBatterySupported();
- assertThat(mController.getAvailabilityStatus()).isEqualTo(
- BasePreferenceController.UNSUPPORTED_ON_DEVICE);
+ assertThat(mController.getAvailabilityStatus())
+ .isEqualTo(BasePreferenceController.UNSUPPORTED_ON_DEVICE);
}
@Test
public void testGetAvailabilityStatus_smartBatteryUnSupported_returnAvailable() {
doReturn(false).when(mFeatureFactory.powerUsageFeatureProvider).isSmartBatterySupported();
- assertThat(mController.getAvailabilityStatus()).isEqualTo(
- BasePreferenceController.AVAILABLE);
+ assertThat(mController.getAvailabilityStatus())
+ .isEqualTo(BasePreferenceController.AVAILABLE);
}
private void putAutoRestrictionValue(int value) {
- Settings.Global.putInt(mContext.getContentResolver(),
- Settings.Global.APP_AUTO_RESTRICTION_ENABLED,
- value);
+ Settings.Global.putInt(
+ mContext.getContentResolver(), Settings.Global.APP_AUTO_RESTRICTION_ENABLED, value);
}
private int getAutoRestrictionValue() {
- return Settings.Global.getInt(mContext.getContentResolver(),
- Settings.Global.APP_AUTO_RESTRICTION_ENABLED, ON);
+ return Settings.Global.getInt(
+ mContext.getContentResolver(), Settings.Global.APP_AUTO_RESTRICTION_ENABLED, ON);
}
}
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/BatteryBackupHelperTest.java b/tests/robotests/src/com/android/settings/fuelgauge/BatteryBackupHelperTest.java
index 350d2ef..8980800 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/BatteryBackupHelperTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/BatteryBackupHelperTest.java
@@ -94,30 +94,20 @@
private BatteryBackupHelper mBatteryBackupHelper;
private PowerUsageFeatureProvider mPowerUsageFeatureProvider;
- @Mock
- private PackageManager mPackageManager;
- @Mock
- private BackupDataOutput mBackupDataOutput;
- @Mock
- private BackupDataInputStream mBackupDataInputStream;
- @Mock
- private IDeviceIdleController mDeviceController;
- @Mock
- private IPackageManager mIPackageManager;
- @Mock
- private AppOpsManager mAppOpsManager;
- @Mock
- private UserManager mUserManager;
- @Mock
- private PowerAllowlistBackend mPowerAllowlistBackend;
- @Mock
- private BatteryOptimizeUtils mBatteryOptimizeUtils;
+ @Mock private PackageManager mPackageManager;
+ @Mock private BackupDataOutput mBackupDataOutput;
+ @Mock private BackupDataInputStream mBackupDataInputStream;
+ @Mock private IDeviceIdleController mDeviceController;
+ @Mock private IPackageManager mIPackageManager;
+ @Mock private AppOpsManager mAppOpsManager;
+ @Mock private UserManager mUserManager;
+ @Mock private PowerAllowlistBackend mPowerAllowlistBackend;
+ @Mock private BatteryOptimizeUtils mBatteryOptimizeUtils;
@Before
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
- mPowerUsageFeatureProvider =
- FakeFeatureFactory.setupForTest().powerUsageFeatureProvider;
+ mPowerUsageFeatureProvider = FakeFeatureFactory.setupForTest().powerUsageFeatureProvider;
mContext = spy(RuntimeEnvironment.application);
mStringWriter = new StringWriter();
mPrintWriter = new PrintWriter(mStringWriter);
@@ -173,7 +163,7 @@
public void backupOptimizationMode_nullInstalledApps_ignoreBackupOptimization()
throws Exception {
final UserInfo userInfo =
- new UserInfo(/*userId=*/ 0, /*userName=*/ "google", /*flag=*/ 0);
+ new UserInfo(/* userId= */ 0, /* userName= */ "google", /* flag= */ 0);
doReturn(Arrays.asList(userInfo)).when(mUserManager).getProfiles(anyInt());
doThrow(new RuntimeException())
.when(mIPackageManager)
@@ -199,8 +189,7 @@
}
@Test
- public void backupOptimizationMode_backupOptimizationModeAndIgnoreSystemApp()
- throws Exception {
+ public void backupOptimizationMode_backupOptimizationModeAndIgnoreSystemApp() throws Exception {
final List<String> allowlistedApps = Arrays.asList(PACKAGE_NAME1);
createTestingData(PACKAGE_NAME1, UID1, PACKAGE_NAME2, PACKAGE_NAME3);
// Sets "com.android.testing.1" as system app.
@@ -294,8 +283,7 @@
// Invoke the restoreEntity() method 2nd time.
mBatteryBackupHelper.restoreEntity(mBackupDataInputStream);
- assertThat(TestUtils.getScheduledLevel(mContext))
- .isEqualTo(invalidScheduledLevel);
+ assertThat(TestUtils.getScheduledLevel(mContext)).isEqualTo(invalidScheduledLevel);
}
@Test
@@ -313,9 +301,14 @@
@Test
public void restoreOptimizationMode_invalidModeFormat_skipRestore() throws Exception {
final String invalidNumberFormat = "google";
- final String packageModes =
- PACKAGE_NAME1 + DELIMITER_MODE + MODE_RESTRICTED + DELIMITER +
- PACKAGE_NAME2 + DELIMITER_MODE + invalidNumberFormat;
+ final String package1Mode = PACKAGE_NAME1
+ + DELIMITER_MODE
+ + MODE_RESTRICTED
+ + DELIMITER;
+ final String package2Mode = PACKAGE_NAME2
+ + DELIMITER_MODE
+ + invalidNumberFormat;
+ final String packageModes = package1Mode + package2Mode;
mBatteryBackupHelper.restoreOptimizationMode(packageModes.getBytes());
TimeUnit.SECONDS.sleep(1);
@@ -328,10 +321,19 @@
@Test
public void restoreOptimizationMode_restoreExpectedModes() throws Exception {
- final String packageModes =
- PACKAGE_NAME1 + DELIMITER_MODE + MODE_RESTRICTED + DELIMITER +
- PACKAGE_NAME2 + DELIMITER_MODE + MODE_UNRESTRICTED + DELIMITER +
- PACKAGE_NAME3 + DELIMITER_MODE + MODE_RESTRICTED + DELIMITER;
+ final String package1Mode = PACKAGE_NAME1
+ + DELIMITER_MODE
+ + MODE_RESTRICTED
+ + DELIMITER;
+ final String package2Mode = PACKAGE_NAME2
+ + DELIMITER_MODE
+ + MODE_UNRESTRICTED
+ + DELIMITER;
+ final String package3Mode = PACKAGE_NAME3
+ + DELIMITER_MODE
+ + MODE_RESTRICTED
+ + DELIMITER;
+ final String packageModes = package1Mode + package2Mode + package3Mode;
mBatteryBackupHelper.restoreOptimizationMode(packageModes.getBytes());
TimeUnit.SECONDS.sleep(1);
@@ -358,13 +360,14 @@
verifyBackupData(inOrder, BatteryBackupHelper.KEY_BUILD_PRODUCT, Build.PRODUCT);
verifyBackupData(inOrder, BatteryBackupHelper.KEY_BUILD_MANUFACTURER, Build.MANUFACTURER);
verifyBackupData(inOrder, BatteryBackupHelper.KEY_BUILD_FINGERPRINT, Build.FINGERPRINT);
- inOrder.verify(mBackupDataOutput, never()).writeEntityHeader(
- eq(BatteryBackupHelper.KEY_BUILD_METADATA_1), anyInt());
+ inOrder.verify(mBackupDataOutput, never())
+ .writeEntityHeader(eq(BatteryBackupHelper.KEY_BUILD_METADATA_1), anyInt());
verifyBackupData(inOrder, BatteryBackupHelper.KEY_BUILD_METADATA_2, deviceMetadata);
}
private void mockUid(int uid, String packageName) throws Exception {
- doReturn(uid).when(mPackageManager)
+ doReturn(uid)
+ .when(mPackageManager)
.getPackageUid(packageName, PackageManager.GET_META_DATA);
}
@@ -384,8 +387,8 @@
final Set<String> expectedResultSet =
Set.of(expectedResult.split(BatteryBackupHelper.DELIMITER));
- verify(mBackupDataOutput).writeEntityHeader(
- BatteryBackupHelper.KEY_OPTIMIZATION_LIST, expectedBytes.length);
+ verify(mBackupDataOutput)
+ .writeEntityHeader(BatteryBackupHelper.KEY_OPTIMIZATION_LIST, expectedBytes.length);
verify(mBackupDataOutput).writeEntityData(captor.capture(), eq(expectedBytes.length));
final String actualResult = new String(captor.getValue());
final Set<String> actualResultSet =
@@ -393,11 +396,12 @@
assertThat(actualResultSet).isEqualTo(expectedResultSet);
}
- private void createTestingData(String packageName1, int uid1, String packageName2,
- String packageName3) throws Exception {
+ private void createTestingData(
+ String packageName1, int uid1, String packageName2, String packageName3)
+ throws Exception {
// Sets the getInstalledApplications() method for testing.
final UserInfo userInfo =
- new UserInfo(/*userId=*/ 0, /*userName=*/ "google", /*flag=*/ 0);
+ new UserInfo(/* userId= */ 0, /* userName= */ "google", /* flag= */ 0);
doReturn(Arrays.asList(userInfo)).when(mUserManager).getProfiles(anyInt());
final ApplicationInfo applicationInfo1 = new ApplicationInfo();
applicationInfo1.enabled = true;
@@ -413,10 +417,12 @@
applicationInfo3.uid = 3;
applicationInfo3.packageName = packageName3;
applicationInfo3.enabledSetting = PackageManager.COMPONENT_ENABLED_STATE_DISABLED;
- doReturn(new ParceledListSlice<ApplicationInfo>(
- Arrays.asList(applicationInfo1, applicationInfo2, applicationInfo3)))
- .when(mIPackageManager)
- .getInstalledApplications(anyLong(), anyInt());
+ doReturn(
+ new ParceledListSlice<ApplicationInfo>(
+ Arrays.asList(
+ applicationInfo1, applicationInfo2, applicationInfo3)))
+ .when(mIPackageManager)
+ .getInstalledApplications(anyLong(), anyInt());
// Sets the AppOpsManager for checkOpNoThrow() method.
doReturn(AppOpsManager.MODE_ALLOWED)
.when(mAppOpsManager)
@@ -434,8 +440,8 @@
new ArraySet<>(Arrays.asList(applicationInfo1, applicationInfo2, applicationInfo3));
}
- private void verifyBackupData(
- InOrder inOrder, String dataKey, String dataContent) throws Exception {
+ private void verifyBackupData(InOrder inOrder, String dataKey, String dataContent)
+ throws Exception {
final byte[] expectedBytes = dataContent.getBytes();
inOrder.verify(mBackupDataOutput).writeEntityHeader(dataKey, expectedBytes.length);
inOrder.verify(mBackupDataOutput).writeEntityData(expectedBytes, expectedBytes.length);
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/BatteryBroadcastReceiverTest.java b/tests/robotests/src/com/android/settings/fuelgauge/BatteryBroadcastReceiverTest.java
index 62f812d..2f3f5c5 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/BatteryBroadcastReceiverTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/BatteryBroadcastReceiverTest.java
@@ -54,8 +54,7 @@
private static final int BATTERY_INTENT_LEVEL = 80;
private static final int BATTERY_INTENT_SCALE = 100;
- @Mock
- private BatteryBroadcastReceiver.OnBatteryChangedListener mBatteryListener;
+ @Mock private BatteryBroadcastReceiver.OnBatteryChangedListener mBatteryListener;
private BatteryBroadcastReceiver mBatteryBroadcastReceiver;
private Context mContext;
private Intent mChargingIntent;
@@ -75,8 +74,8 @@
mChargingIntent = new Intent(Intent.ACTION_BATTERY_CHANGED);
mChargingIntent.putExtra(BatteryManager.EXTRA_LEVEL, BATTERY_INTENT_LEVEL);
mChargingIntent.putExtra(BatteryManager.EXTRA_SCALE, BATTERY_INTENT_SCALE);
- mChargingIntent
- .putExtra(BatteryManager.EXTRA_STATUS, BatteryManager.BATTERY_STATUS_CHARGING);
+ mChargingIntent.putExtra(
+ BatteryManager.EXTRA_STATUS, BatteryManager.BATTERY_STATUS_CHARGING);
}
@Test
@@ -85,8 +84,10 @@
assertThat(mBatteryBroadcastReceiver.mBatteryLevel)
.isEqualTo(Utils.getBatteryPercentage(mChargingIntent));
- assertThat(mBatteryBroadcastReceiver.mBatteryStatus).isEqualTo(
- Utils.getBatteryStatus(mContext, mChargingIntent, /* compactStatus= */ false));
+ assertThat(mBatteryBroadcastReceiver.mBatteryStatus)
+ .isEqualTo(
+ Utils.getBatteryStatus(
+ mContext, mChargingIntent, /* compactStatus= */ false));
verify(mBatteryListener).onBatteryChanged(BatteryUpdateType.BATTERY_LEVEL);
}
@@ -103,7 +104,8 @@
@Test
public void onReceive_chargingStatusChanged_dataUpdated() {
- mChargingIntent.putExtra(BatteryManager.EXTRA_CHARGING_STATUS,
+ mChargingIntent.putExtra(
+ BatteryManager.EXTRA_CHARGING_STATUS,
BatteryManager.CHARGING_POLICY_ADAPTIVE_LONGLIFE);
mBatteryBroadcastReceiver.onReceive(mContext, mChargingIntent);
@@ -123,8 +125,8 @@
@Test
public void onReceive_powerSaveModeChanged_listenerInvoked() {
- mBatteryBroadcastReceiver.onReceive(mContext,
- new Intent(PowerManager.ACTION_POWER_SAVE_MODE_CHANGED));
+ mBatteryBroadcastReceiver.onReceive(
+ mContext, new Intent(PowerManager.ACTION_POWER_SAVE_MODE_CHANGED));
verify(mBatteryListener).onBatteryChanged(BatteryUpdateType.BATTERY_SAVER);
}
@@ -150,16 +152,16 @@
@Test
public void onReceive_dockDefenderBypassed_listenerInvoked() {
- mBatteryBroadcastReceiver.onReceive(mContext,
- new Intent(BatteryUtils.BYPASS_DOCK_DEFENDER_ACTION));
+ mBatteryBroadcastReceiver.onReceive(
+ mContext, new Intent(BatteryUtils.BYPASS_DOCK_DEFENDER_ACTION));
verify(mBatteryListener).onBatteryChanged(BatteryUpdateType.BATTERY_STATUS);
}
@Test
public void onReceive_usbPortComplianceChanged_listenerInvoked() {
- mBatteryBroadcastReceiver.onReceive(mContext,
- new Intent(UsbManager.ACTION_USB_PORT_COMPLIANCE_CHANGED));
+ mBatteryBroadcastReceiver.onReceive(
+ mContext, new Intent(UsbManager.ACTION_USB_PORT_COMPLIANCE_CHANGED));
verify(mBatteryListener).onBatteryChanged(BatteryUpdateType.BATTERY_STATUS);
}
@@ -173,8 +175,10 @@
assertThat(mBatteryBroadcastReceiver.mBatteryLevel)
.isEqualTo(Utils.getBatteryPercentage(mChargingIntent));
- assertThat(mBatteryBroadcastReceiver.mBatteryStatus).isEqualTo(
- Utils.getBatteryStatus(mContext, mChargingIntent, /* compactStatus= */ false));
+ assertThat(mBatteryBroadcastReceiver.mBatteryStatus)
+ .isEqualTo(
+ Utils.getBatteryStatus(
+ mContext, mChargingIntent, /* compactStatus= */ false));
assertThat(mBatteryBroadcastReceiver.mBatteryHealth)
.isEqualTo(BatteryManager.BATTERY_HEALTH_UNKNOWN);
assertThat(mBatteryBroadcastReceiver.mChargingStatus)
@@ -188,10 +192,11 @@
mBatteryBroadcastReceiver.register();
ArgumentCaptor<IntentFilter> captor = ArgumentCaptor.forClass(IntentFilter.class);
- verify(mContext).registerReceiver(
- eq(mBatteryBroadcastReceiver),
- captor.capture(),
- eq(Context.RECEIVER_EXPORTED));
+ verify(mContext)
+ .registerReceiver(
+ eq(mBatteryBroadcastReceiver),
+ captor.capture(),
+ eq(Context.RECEIVER_EXPORTED));
assertAction(captor, Intent.ACTION_BATTERY_CHANGED);
assertAction(captor, PowerManager.ACTION_POWER_SAVE_MODE_CHANGED);
assertAction(captor, BatteryUtils.BYPASS_DOCK_DEFENDER_ACTION);
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/BatteryHeaderPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/BatteryHeaderPreferenceControllerTest.java
index 04d5dbf..83ff582 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/BatteryHeaderPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/BatteryHeaderPreferenceControllerTest.java
@@ -68,22 +68,14 @@
private static final String TIME_LEFT = "2h30min";
private static final String BATTERY_STATUS = "Charging";
- @Mock
- private PreferenceScreen mPreferenceScreen;
- @Mock
- private BatteryInfo mBatteryInfo;
- @Mock
- private EntityHeaderController mEntityHeaderController;
- @Mock
- private UsageProgressBarPreference mBatteryUsageProgressBarPref;
- @Mock
- private BatteryStatusFeatureProvider mBatteryStatusFeatureProvider;
- @Mock
- private UsbPort mUsbPort;
- @Mock
- private UsbManager mUsbManager;
- @Mock
- private UsbPortStatus mUsbPortStatus;
+ @Mock private PreferenceScreen mPreferenceScreen;
+ @Mock private BatteryInfo mBatteryInfo;
+ @Mock private EntityHeaderController mEntityHeaderController;
+ @Mock private UsageProgressBarPreference mBatteryUsageProgressBarPref;
+ @Mock private BatteryStatusFeatureProvider mBatteryStatusFeatureProvider;
+ @Mock private UsbPort mUsbPort;
+ @Mock private UsbManager mUsbManager;
+ @Mock private UsbPortStatus mUsbPortStatus;
private BatteryHeaderPreferenceController mController;
private Context mContext;
@@ -104,8 +96,9 @@
mBatteryIntent.putExtra(BatteryManager.EXTRA_PLUGGED, 1);
doReturn(mBatteryIntent).when(mContext).registerReceiver(any(), any());
- doReturn(mBatteryUsageProgressBarPref).when(mPreferenceScreen)
- .findPreference(BatteryHeaderPreferenceController.KEY_BATTERY_HEADER);
+ doReturn(mBatteryUsageProgressBarPref)
+ .when(mPreferenceScreen)
+ .findPreference(BatteryHeaderPreferenceController.KEY_BATTERY_HEADER);
mBatteryInfo.batteryLevel = BATTERY_LEVEL;
@@ -235,8 +228,8 @@
@Test
public void updateHeaderByBatteryTips_lowBatteryTip_showLowBattery() {
setChargingState(/* isDischarging */ true, /* updatedByStatusFeature */ false);
- BatteryTip lowBatteryTip = new LowBatteryTip(
- BatteryTip.StateType.NEW, /* powerSaveModeOn */false);
+ BatteryTip lowBatteryTip =
+ new LowBatteryTip(BatteryTip.StateType.NEW, /* powerSaveModeOn */ false);
mController.updateHeaderByBatteryTips(lowBatteryTip, mBatteryInfo);
@@ -265,8 +258,8 @@
@Test
public void updateHeaderByBatteryTips_noBatteryInfo_noAction() {
- BatteryTip lowBatteryTip = new LowBatteryTip(
- BatteryTip.StateType.NEW, /* powerSaveModeOn */false);
+ BatteryTip lowBatteryTip =
+ new LowBatteryTip(BatteryTip.StateType.NEW, /* powerSaveModeOn */ false);
mController.updateHeaderByBatteryTips(lowBatteryTip, null);
@@ -288,8 +281,10 @@
mController.updateHeaderPreference(mBatteryInfo);
- verify(mBatteryUsageProgressBarPref).setBottomSummary(mContext.getString(
- com.android.settingslib.R.string.battery_info_status_not_charging));
+ verify(mBatteryUsageProgressBarPref)
+ .setBottomSummary(
+ mContext.getString(
+ com.android.settingslib.R.string.battery_info_status_not_charging));
}
@Test
@@ -302,8 +297,8 @@
@Test
public void getAvailabilityStatus_returnAvailableUnsearchable() {
- assertThat(mController.getAvailabilityStatus()).isEqualTo(
- BasePreferenceController.AVAILABLE_UNSEARCHABLE);
+ assertThat(mController.getAvailabilityStatus())
+ .isEqualTo(BasePreferenceController.AVAILABLE_UNSEARCHABLE);
}
@Test
@@ -319,12 +314,13 @@
public void displayPreference_init_showLoading() {
mController.displayPreference(mPreferenceScreen);
- verify(mBatteryUsageProgressBarPref).setBottomSummary(
- mContext.getString(R.string.settings_license_activity_loading));
+ verify(mBatteryUsageProgressBarPref)
+ .setBottomSummary(mContext.getString(R.string.settings_license_activity_loading));
}
private CharSequence formatBatteryPercentageText() {
- return TextUtils.expandTemplate(mContext.getText(R.string.battery_header_title_alternate),
+ return TextUtils.expandTemplate(
+ mContext.getText(R.string.battery_header_title_alternate),
NumberFormat.getIntegerInstance().format(BATTERY_LEVEL));
}
@@ -333,7 +329,7 @@
mBatteryInfo.statusLabel = BATTERY_STATUS;
mBatteryInfo.discharging = isDischarging;
- when(mBatteryStatusFeatureProvider.triggerBatteryStatusUpdate(
- mController, mBatteryInfo)).thenReturn(updatedByStatusFeature);
+ when(mBatteryStatusFeatureProvider.triggerBatteryStatusUpdate(mController, mBatteryInfo))
+ .thenReturn(updatedByStatusFeature);
}
}
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/BatteryInfoLoaderTest.java b/tests/robotests/src/com/android/settings/fuelgauge/BatteryInfoLoaderTest.java
index b787239..3685a1d 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/BatteryInfoLoaderTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/BatteryInfoLoaderTest.java
@@ -46,10 +46,8 @@
private static final long TEST_TIME_REMAINING = 1000L;
- @Mock
- private BatteryStatsManager mBatteryStatsManager;
- @Mock
- private BatteryUsageStats mBatteryUsageStats;
+ @Mock private BatteryStatsManager mBatteryStatsManager;
+ @Mock private BatteryUsageStats mBatteryUsageStats;
private Context mContext;
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/BatteryInfoTest.java b/tests/robotests/src/com/android/settings/fuelgauge/BatteryInfoTest.java
index 2ba9f33..0339f57 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/BatteryInfoTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/BatteryInfoTest.java
@@ -72,21 +72,20 @@
private static final String ENHANCED_STRING_SUFFIX = "based on your usage";
private static final String BATTERY_RUN_OUT_PREFIX = "Battery may run out by";
private static final long TEST_CHARGE_TIME_REMAINING = TimeUnit.MINUTES.toMicros(1);
- private static final String TEST_CHARGE_TIME_REMAINING_STRINGIFIED =
- "1 min left until full";
+ private static final String TEST_CHARGE_TIME_REMAINING_STRINGIFIED = "1 min left until full";
private static final String TEST_BATTERY_LEVEL_10 = "10%";
private static final String FIFTEEN_MIN_FORMATTED = "15 min";
- private static final Estimate MOCK_ESTIMATE = new Estimate(
- 1000, /* estimateMillis */
- false, /* isBasedOnUsage */
- 1000 /* averageDischargeTime */);
+ private static final Estimate MOCK_ESTIMATE =
+ new Estimate(
+ 1000, /* estimateMillis */
+ false, /* isBasedOnUsage */
+ 1000 /* averageDischargeTime */);
private Intent mDisChargingBatteryBroadcast;
private Intent mChargingBatteryBroadcast;
private Context mContext;
private FakeFeatureFactory mFeatureFactory;
- @Mock
- private BatteryUsageStats mBatteryUsageStats;
+ @Mock private BatteryUsageStats mBatteryUsageStats;
@Before
public void setUp() {
@@ -99,17 +98,22 @@
mChargingBatteryBroadcast = BatteryTestUtils.getChargingIntent();
doReturn(false).when(mFeatureFactory.powerUsageFeatureProvider).isExtraDefend();
- Settings.Global.putInt(mContext.getContentResolver(),
- BatteryUtils.SETTINGS_GLOBAL_DOCK_DEFENDER_BYPASS, 0);
+ Settings.Global.putInt(
+ mContext.getContentResolver(),
+ BatteryUtils.SETTINGS_GLOBAL_DOCK_DEFENDER_BYPASS,
+ 0);
}
@Test
public void testGetBatteryInfo_hasStatusLabel() {
doReturn(REMAINING_TIME_NULL).when(mBatteryUsageStats).getBatteryTimeRemainingMs();
- BatteryInfo info = BatteryInfo.getBatteryInfoOld(mContext,
- mDisChargingBatteryBroadcast, mBatteryUsageStats,
- SystemClock.elapsedRealtime() * 1000,
- true /* shortString */);
+ BatteryInfo info =
+ BatteryInfo.getBatteryInfoOld(
+ mContext,
+ mDisChargingBatteryBroadcast,
+ mBatteryUsageStats,
+ SystemClock.elapsedRealtime() * 1000,
+ true /* shortString */);
assertThat(info.statusLabel).isEqualTo(STATUS_NOT_CHARGING);
}
@@ -117,8 +121,13 @@
@Test
public void testGetBatteryInfo_doNotShowChargingMethod_hasRemainingTime() {
doReturn(REMAINING_TIME).when(mBatteryUsageStats).getChargeTimeRemainingMs();
- BatteryInfo info = BatteryInfo.getBatteryInfoOld(mContext, mChargingBatteryBroadcast,
- mBatteryUsageStats, SystemClock.elapsedRealtime() * 1000, false /* shortString */);
+ BatteryInfo info =
+ BatteryInfo.getBatteryInfoOld(
+ mContext,
+ mChargingBatteryBroadcast,
+ mBatteryUsageStats,
+ SystemClock.elapsedRealtime() * 1000,
+ false /* shortString */);
assertThat(info.chargeLabel.toString()).isEqualTo(STATUS_CHARGING_TIME);
}
@@ -126,8 +135,13 @@
@Test
public void testGetBatteryInfo_doNotShowChargingMethod_noRemainingTime() {
doReturn(REMAINING_TIME_NULL).when(mBatteryUsageStats).getChargeTimeRemainingMs();
- BatteryInfo info = BatteryInfo.getBatteryInfoOld(mContext, mChargingBatteryBroadcast,
- mBatteryUsageStats, SystemClock.elapsedRealtime() * 1000, false /* shortString */);
+ BatteryInfo info =
+ BatteryInfo.getBatteryInfoOld(
+ mContext,
+ mChargingBatteryBroadcast,
+ mBatteryUsageStats,
+ SystemClock.elapsedRealtime() * 1000,
+ false /* shortString */);
assertThat(info.chargeLabel.toString()).ignoringCase().isEqualTo(STATUS_CHARGING_NO_TIME);
}
@@ -135,9 +149,15 @@
@Test
public void testGetBatteryInfo_pluggedInUsingShortString_usesCorrectData() {
doReturn(TEST_CHARGE_TIME_REMAINING / 1000)
- .when(mBatteryUsageStats).getChargeTimeRemainingMs();
- BatteryInfo info = BatteryInfo.getBatteryInfoOld(mContext, mChargingBatteryBroadcast,
- mBatteryUsageStats, SystemClock.elapsedRealtime() * 1000, true /* shortString */);
+ .when(mBatteryUsageStats)
+ .getChargeTimeRemainingMs();
+ BatteryInfo info =
+ BatteryInfo.getBatteryInfoOld(
+ mContext,
+ mChargingBatteryBroadcast,
+ mBatteryUsageStats,
+ SystemClock.elapsedRealtime() * 1000,
+ true /* shortString */);
assertThat(info.discharging).isEqualTo(false);
assertThat(info.chargeLabel.toString()).isEqualTo("50% - 1 min left until full");
@@ -145,15 +165,27 @@
@Test
public void testGetBatteryInfo_basedOnUsageTrueMoreThanFifteenMinutes_usesCorrectString() {
- Estimate estimate = new Estimate(Duration.ofHours(4).toMillis(),
- true /* isBasedOnUsage */,
- 1000 /* averageDischargeTime */);
- BatteryInfo info = BatteryInfo.getBatteryInfo(mContext, mDisChargingBatteryBroadcast,
- mBatteryUsageStats, estimate, SystemClock.elapsedRealtime() * 1000,
- false /* shortString */);
- BatteryInfo info2 = BatteryInfo.getBatteryInfo(mContext, mDisChargingBatteryBroadcast,
- mBatteryUsageStats, estimate, SystemClock.elapsedRealtime() * 1000,
- true /* shortString */);
+ Estimate estimate =
+ new Estimate(
+ Duration.ofHours(4).toMillis(),
+ true /* isBasedOnUsage */,
+ 1000 /* averageDischargeTime */);
+ BatteryInfo info =
+ BatteryInfo.getBatteryInfo(
+ mContext,
+ mDisChargingBatteryBroadcast,
+ mBatteryUsageStats,
+ estimate,
+ SystemClock.elapsedRealtime() * 1000,
+ false /* shortString */);
+ BatteryInfo info2 =
+ BatteryInfo.getBatteryInfo(
+ mContext,
+ mDisChargingBatteryBroadcast,
+ mBatteryUsageStats,
+ estimate,
+ SystemClock.elapsedRealtime() * 1000,
+ true /* shortString */);
// Both long and short strings should not have extra text
assertThat(info.remainingLabel.toString()).doesNotContain(ENHANCED_STRING_SUFFIX);
@@ -165,24 +197,41 @@
@Test
@Ignore
public void getBatteryInfo_MoreThanOneDay_suggestionLabelIsCorrectString() {
- Estimate estimate = new Estimate(Duration.ofDays(3).toMillis(),
- true /* isBasedOnUsage */,
- 1000 /* averageDischargeTime */);
- BatteryInfo info = BatteryInfo.getBatteryInfo(mContext, mDisChargingBatteryBroadcast,
- mBatteryUsageStats, estimate, SystemClock.elapsedRealtime() * 1000,
- false /* shortString */);
+ Estimate estimate =
+ new Estimate(
+ Duration.ofDays(3).toMillis(),
+ true /* isBasedOnUsage */,
+ 1000 /* averageDischargeTime */);
+ BatteryInfo info =
+ BatteryInfo.getBatteryInfo(
+ mContext,
+ mDisChargingBatteryBroadcast,
+ mBatteryUsageStats,
+ estimate,
+ SystemClock.elapsedRealtime() * 1000,
+ false /* shortString */);
assertThat(info.suggestionLabel).doesNotContain(BATTERY_RUN_OUT_PREFIX);
}
@Test
public void testGetBatteryInfo_basedOnUsageFalse_usesDefaultString() {
- BatteryInfo info = BatteryInfo.getBatteryInfo(mContext, mDisChargingBatteryBroadcast,
- mBatteryUsageStats, MOCK_ESTIMATE, SystemClock.elapsedRealtime() * 1000,
- false /* shortString */);
- BatteryInfo info2 = BatteryInfo.getBatteryInfo(mContext, mDisChargingBatteryBroadcast,
- mBatteryUsageStats, MOCK_ESTIMATE, SystemClock.elapsedRealtime() * 1000,
- true /* shortString */);
+ BatteryInfo info =
+ BatteryInfo.getBatteryInfo(
+ mContext,
+ mDisChargingBatteryBroadcast,
+ mBatteryUsageStats,
+ MOCK_ESTIMATE,
+ SystemClock.elapsedRealtime() * 1000,
+ false /* shortString */);
+ BatteryInfo info2 =
+ BatteryInfo.getBatteryInfo(
+ mContext,
+ mDisChargingBatteryBroadcast,
+ mBatteryUsageStats,
+ MOCK_ESTIMATE,
+ SystemClock.elapsedRealtime() * 1000,
+ true /* shortString */);
assertThat(info.remainingLabel.toString()).doesNotContain(ENHANCED_STRING_SUFFIX);
assertThat(info2.remainingLabel.toString()).doesNotContain(ENHANCED_STRING_SUFFIX);
@@ -191,11 +240,17 @@
@Test
public void testGetBatteryInfo_charging_usesChargeTime() {
doReturn(TEST_CHARGE_TIME_REMAINING / 1000)
- .when(mBatteryUsageStats).getChargeTimeRemainingMs();
+ .when(mBatteryUsageStats)
+ .getChargeTimeRemainingMs();
- BatteryInfo info = BatteryInfo.getBatteryInfo(mContext, mChargingBatteryBroadcast,
- mBatteryUsageStats, MOCK_ESTIMATE, SystemClock.elapsedRealtime() * 1000,
- false /* shortString */);
+ BatteryInfo info =
+ BatteryInfo.getBatteryInfo(
+ mContext,
+ mChargingBatteryBroadcast,
+ mBatteryUsageStats,
+ MOCK_ESTIMATE,
+ SystemClock.elapsedRealtime() * 1000,
+ false /* shortString */);
assertThat(info.remainingTimeUs).isEqualTo(TEST_CHARGE_TIME_REMAINING);
assertThat(info.remainingLabel.toString())
@@ -206,24 +261,33 @@
public void testGetBatteryInfo_pluggedInWithFullBattery_onlyShowBatteryLevel() {
mChargingBatteryBroadcast.putExtra(BatteryManager.EXTRA_LEVEL, 100);
- BatteryInfo info = BatteryInfo.getBatteryInfo(mContext, mChargingBatteryBroadcast,
- mBatteryUsageStats, MOCK_ESTIMATE, SystemClock.elapsedRealtime() * 1000,
- false /* shortString */);
+ BatteryInfo info =
+ BatteryInfo.getBatteryInfo(
+ mContext,
+ mChargingBatteryBroadcast,
+ mBatteryUsageStats,
+ MOCK_ESTIMATE,
+ SystemClock.elapsedRealtime() * 1000,
+ false /* shortString */);
assertThat(info.chargeLabel).isEqualTo("100%");
}
@Test
public void testGetBatteryInfo_chargingWithDefender_updateChargeLabel() {
- doReturn(TEST_CHARGE_TIME_REMAINING)
- .when(mBatteryUsageStats)
- .getChargeTimeRemainingMs();
- mChargingBatteryBroadcast.putExtra(BatteryManager.EXTRA_CHARGING_STATUS,
+ doReturn(TEST_CHARGE_TIME_REMAINING).when(mBatteryUsageStats).getChargeTimeRemainingMs();
+ mChargingBatteryBroadcast.putExtra(
+ BatteryManager.EXTRA_CHARGING_STATUS,
BatteryManager.CHARGING_POLICY_ADAPTIVE_LONGLIFE);
- BatteryInfo info = BatteryInfo.getBatteryInfo(mContext, mChargingBatteryBroadcast,
- mBatteryUsageStats, MOCK_ESTIMATE, SystemClock.elapsedRealtime() * 1000,
- false /* shortString */);
+ BatteryInfo info =
+ BatteryInfo.getBatteryInfo(
+ mContext,
+ mChargingBatteryBroadcast,
+ mBatteryUsageStats,
+ MOCK_ESTIMATE,
+ SystemClock.elapsedRealtime() * 1000,
+ false /* shortString */);
assertThat(info.isBatteryDefender).isTrue();
assertThat(info.chargeLabel.toString()).contains(STATUS_CHARGING_PAUSED);
@@ -231,30 +295,32 @@
@Test
public void testGetBatteryInfo_getChargeTimeRemaining_updateSettingsGlobal() {
- doReturn(TEST_CHARGE_TIME_REMAINING)
- .when(mBatteryUsageStats)
- .getChargeTimeRemainingMs();
+ doReturn(TEST_CHARGE_TIME_REMAINING).when(mBatteryUsageStats).getChargeTimeRemainingMs();
- BatteryInfo.getBatteryInfo(mContext, mChargingBatteryBroadcast,
- mBatteryUsageStats, MOCK_ESTIMATE, SystemClock.elapsedRealtime() * 1000,
+ BatteryInfo.getBatteryInfo(
+ mContext,
+ mChargingBatteryBroadcast,
+ mBatteryUsageStats,
+ MOCK_ESTIMATE,
+ SystemClock.elapsedRealtime() * 1000,
false /* shortString */);
- assertThat(BatteryInfo.getSettingsChargeTimeRemaining(mContext)).isEqualTo(
- TEST_CHARGE_TIME_REMAINING);
+ assertThat(BatteryInfo.getSettingsChargeTimeRemaining(mContext))
+ .isEqualTo(TEST_CHARGE_TIME_REMAINING);
}
@Test
public void testGetBatteryInfo_differentChargeTimeRemaining_updateSettingsGlobal() {
- doReturn(TEST_CHARGE_TIME_REMAINING)
- .when(mBatteryUsageStats)
- .getChargeTimeRemainingMs();
+ doReturn(TEST_CHARGE_TIME_REMAINING).when(mBatteryUsageStats).getChargeTimeRemainingMs();
final long newTimeToFull = 300L;
- doReturn(newTimeToFull)
- .when(mBatteryUsageStats)
- .getChargeTimeRemainingMs();
+ doReturn(newTimeToFull).when(mBatteryUsageStats).getChargeTimeRemainingMs();
- BatteryInfo.getBatteryInfo(mContext, mChargingBatteryBroadcast,
- mBatteryUsageStats, MOCK_ESTIMATE, SystemClock.elapsedRealtime() * 1000,
+ BatteryInfo.getBatteryInfo(
+ mContext,
+ mChargingBatteryBroadcast,
+ mBatteryUsageStats,
+ MOCK_ESTIMATE,
+ SystemClock.elapsedRealtime() * 1000,
false /* shortString */);
assertThat(BatteryInfo.getSettingsChargeTimeRemaining(mContext)).isEqualTo(newTimeToFull);
@@ -263,18 +329,27 @@
@Test
public void testGetBatteryInfo_dockDefenderActive_updateChargeString() {
doReturn(TEST_CHARGE_TIME_REMAINING / 1000)
- .when(mBatteryUsageStats).getChargeTimeRemainingMs();
+ .when(mBatteryUsageStats)
+ .getChargeTimeRemainingMs();
doReturn(true).when(mFeatureFactory.powerUsageFeatureProvider).isExtraDefend();
- Intent intent = BatteryTestUtils.getCustomBatteryIntent(BatteryManager.BATTERY_PLUGGED_DOCK,
- 50 /* level */,
- 100 /* scale */,
- BatteryManager.BATTERY_STATUS_CHARGING)
- .putExtra(BatteryManager.EXTRA_CHARGING_STATUS,
- BatteryManager.CHARGING_POLICY_ADAPTIVE_LONGLIFE);
+ Intent intent =
+ BatteryTestUtils.getCustomBatteryIntent(
+ BatteryManager.BATTERY_PLUGGED_DOCK,
+ 50 /* level */,
+ 100 /* scale */,
+ BatteryManager.BATTERY_STATUS_CHARGING)
+ .putExtra(
+ BatteryManager.EXTRA_CHARGING_STATUS,
+ BatteryManager.CHARGING_POLICY_ADAPTIVE_LONGLIFE);
- BatteryInfo info = BatteryInfo.getBatteryInfo(mContext, intent,
- mBatteryUsageStats, MOCK_ESTIMATE, SystemClock.elapsedRealtime() * 1000,
- false /* shortString */);
+ BatteryInfo info =
+ BatteryInfo.getBatteryInfo(
+ mContext,
+ intent,
+ mBatteryUsageStats,
+ MOCK_ESTIMATE,
+ SystemClock.elapsedRealtime() * 1000,
+ false /* shortString */);
assertThat(info.chargeLabel.toString()).contains(STATUS_CHARGING_PAUSED);
}
@@ -282,18 +357,25 @@
@Test
public void testGetBatteryInfo_dockDefenderTemporarilyBypassed_updateChargeLabel() {
doReturn(REMAINING_TIME).when(mBatteryUsageStats).getChargeTimeRemainingMs();
- mChargingBatteryBroadcast.putExtra(BatteryManager.EXTRA_CHARGING_STATUS,
- BatteryManager.CHARGING_POLICY_DEFAULT);
- Settings.Global.putInt(mContext.getContentResolver(),
- BatteryUtils.SETTINGS_GLOBAL_DOCK_DEFENDER_BYPASS, 1);
+ mChargingBatteryBroadcast.putExtra(
+ BatteryManager.EXTRA_CHARGING_STATUS, BatteryManager.CHARGING_POLICY_DEFAULT);
+ Settings.Global.putInt(
+ mContext.getContentResolver(),
+ BatteryUtils.SETTINGS_GLOBAL_DOCK_DEFENDER_BYPASS,
+ 1);
- BatteryInfo info = BatteryInfo.getBatteryInfo(mContext,
- BatteryTestUtils.getCustomBatteryIntent(BatteryManager.BATTERY_PLUGGED_DOCK,
- 50 /* level */,
- 100 /* scale */,
- BatteryManager.BATTERY_STATUS_CHARGING),
- mBatteryUsageStats, MOCK_ESTIMATE, SystemClock.elapsedRealtime() * 1000,
- false /* shortString */);
+ BatteryInfo info =
+ BatteryInfo.getBatteryInfo(
+ mContext,
+ BatteryTestUtils.getCustomBatteryIntent(
+ BatteryManager.BATTERY_PLUGGED_DOCK,
+ 50 /* level */,
+ 100 /* scale */,
+ BatteryManager.BATTERY_STATUS_CHARGING),
+ mBatteryUsageStats,
+ MOCK_ESTIMATE,
+ SystemClock.elapsedRealtime() * 1000,
+ false /* shortString */);
assertThat(info.chargeLabel.toString()).contains(STATUS_CHARGING_TIME);
}
@@ -301,16 +383,21 @@
@Test
public void testGetBatteryInfo_dockDefenderFutureBypass_updateChargeLabel() {
doReturn(false).when(mFeatureFactory.powerUsageFeatureProvider).isExtraDefend();
- mChargingBatteryBroadcast.putExtra(BatteryManager.EXTRA_CHARGING_STATUS,
- BatteryManager.CHARGING_POLICY_DEFAULT);
+ mChargingBatteryBroadcast.putExtra(
+ BatteryManager.EXTRA_CHARGING_STATUS, BatteryManager.CHARGING_POLICY_DEFAULT);
- BatteryInfo info = BatteryInfo.getBatteryInfo(mContext,
- BatteryTestUtils.getCustomBatteryIntent(BatteryManager.BATTERY_PLUGGED_DOCK,
- 50 /* level */,
- 100 /* scale */,
- BatteryManager.BATTERY_STATUS_CHARGING),
- mBatteryUsageStats, MOCK_ESTIMATE, SystemClock.elapsedRealtime() * 1000,
- false /* shortString */);
+ BatteryInfo info =
+ BatteryInfo.getBatteryInfo(
+ mContext,
+ BatteryTestUtils.getCustomBatteryIntent(
+ BatteryManager.BATTERY_PLUGGED_DOCK,
+ 50 /* level */,
+ 100 /* scale */,
+ BatteryManager.BATTERY_STATUS_CHARGING),
+ mBatteryUsageStats,
+ MOCK_ESTIMATE,
+ SystemClock.elapsedRealtime() * 1000,
+ false /* shortString */);
assertThat(info.chargeLabel.toString()).contains(STATUS_CHARGING_FUTURE_BYPASS);
}
@@ -318,15 +405,20 @@
// Make our battery stats return a sequence of battery events.
private void mockBatteryStatsHistory() {
// Mock out new data every time iterateBatteryStatsHistory is called.
- doAnswer(invocation -> {
- BatteryStatsHistoryIterator iterator = mock(BatteryStatsHistoryIterator.class);
- when(iterator.next()).thenReturn(
- makeHistoryIterm(1000, 99),
- makeHistoryIterm(1500, 98),
- makeHistoryIterm(2000, 97),
- null);
- return iterator;
- }).when(mBatteryUsageStats).iterateBatteryStatsHistory();
+ doAnswer(
+ invocation -> {
+ BatteryStatsHistoryIterator iterator =
+ mock(BatteryStatsHistoryIterator.class);
+ when(iterator.next())
+ .thenReturn(
+ makeHistoryIterm(1000, 99),
+ makeHistoryIterm(1500, 98),
+ makeHistoryIterm(2000, 97),
+ null);
+ return iterator;
+ })
+ .when(mBatteryUsageStats)
+ .iterateBatteryStatsHistory();
}
private BatteryStats.HistoryItem makeHistoryIterm(long time, int batteryLevel) {
@@ -373,7 +465,8 @@
pointsExpected.append(2000, 96);
pointsExpected.append(2500, 95);
pointsExpected.append(3000, 94);
- doReturn(pointsExpected).when(mFeatureFactory.powerUsageFeatureProvider)
+ doReturn(pointsExpected)
+ .when(mFeatureFactory.powerUsageFeatureProvider)
.getEnhancedBatteryPredictionCurve(any(Context.class), anyLong());
info.bindHistory(view);
@@ -390,14 +483,21 @@
} else {
doReturn(0L).when(mBatteryUsageStats).getChargeTimeRemainingMs();
}
- Estimate batteryEstimate = new Estimate(
- estimate ? 1000 : 0,
- false /* isBasedOnUsage */,
- 1000 /* averageDischargeTime */);
- BatteryInfo info = BatteryInfo.getBatteryInfo(mContext,
- charging ? mChargingBatteryBroadcast : mDisChargingBatteryBroadcast,
- mBatteryUsageStats, batteryEstimate, SystemClock.elapsedRealtime() * 1000, false);
- doReturn(enhanced).when(mFeatureFactory.powerUsageFeatureProvider)
+ Estimate batteryEstimate =
+ new Estimate(
+ estimate ? 1000 : 0,
+ false /* isBasedOnUsage */,
+ 1000 /* averageDischargeTime */);
+ BatteryInfo info =
+ BatteryInfo.getBatteryInfo(
+ mContext,
+ charging ? mChargingBatteryBroadcast : mDisChargingBatteryBroadcast,
+ mBatteryUsageStats,
+ batteryEstimate,
+ SystemClock.elapsedRealtime() * 1000,
+ false);
+ doReturn(enhanced)
+ .when(mFeatureFactory.powerUsageFeatureProvider)
.isEnhancedBatteryPredictionEnabled(mContext);
return info;
}
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/BatteryMeterViewTest.java b/tests/robotests/src/com/android/settings/fuelgauge/BatteryMeterViewTest.java
index 0aa702a..ec3cfcf 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/BatteryMeterViewTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/BatteryMeterViewTest.java
@@ -39,12 +39,9 @@
private static final int BATTERY_CRITICAL_LEVEL = 15;
private static final int BATTERY_LOW_LEVEL = 3;
- @Mock
- private ColorFilter mErrorColorFilter;
- @Mock
- private ColorFilter mAccentColorFilter;
- @Mock
- private ColorFilter mForegroundColorFilter;
+ @Mock private ColorFilter mErrorColorFilter;
+ @Mock private ColorFilter mAccentColorFilter;
+ @Mock private ColorFilter mForegroundColorFilter;
private Context mContext;
private BatteryMeterView mBatteryMeterView;
private BatteryMeterView.BatteryMeterDrawable mDrawable;
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/BatteryOptimizeLogUtilsTest.java b/tests/robotests/src/com/android/settings/fuelgauge/BatteryOptimizeLogUtilsTest.java
index 87de62f..5f591eb 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/BatteryOptimizeLogUtilsTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/BatteryOptimizeLogUtilsTest.java
@@ -57,8 +57,7 @@
BatteryOptimizeLogUtils.writeLog(mContext, Action.APPLY, "pkg1", "logs");
BatteryOptimizeLogUtils.printBatteryOptimizeHistoricalLog(mContext, mTestPrintWriter);
- assertThat(mTestStringWriter.toString()).contains(
- "pkg1\taction:APPLY\tevent:logs");
+ assertThat(mTestStringWriter.toString()).contains("pkg1\taction:APPLY\tevent:logs");
}
@Test
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/BatteryOptimizeUtilsTest.java b/tests/robotests/src/com/android/settings/fuelgauge/BatteryOptimizeUtilsTest.java
index f9d3108..3551eeb 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/BatteryOptimizeUtilsTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/BatteryOptimizeUtilsTest.java
@@ -98,8 +98,7 @@
when(mMockAppOpsManager.checkOpNoThrow(anyInt(), anyInt(), anyString()))
.thenReturn(AppOpsManager.MODE_IGNORED);
- assertThat(mBatteryOptimizeUtils.getAppOptimizationMode())
- .isEqualTo(MODE_RESTRICTED);
+ assertThat(mBatteryOptimizeUtils.getAppOptimizationMode()).isEqualTo(MODE_RESTRICTED);
}
@Test
@@ -108,8 +107,7 @@
when(mMockAppOpsManager.checkOpNoThrow(anyInt(), anyInt(), anyString()))
.thenReturn(AppOpsManager.MODE_ALLOWED);
- assertThat(mBatteryOptimizeUtils.getAppOptimizationMode())
- .isEqualTo(MODE_UNRESTRICTED);
+ assertThat(mBatteryOptimizeUtils.getAppOptimizationMode()).isEqualTo(MODE_UNRESTRICTED);
}
@Test
@@ -118,8 +116,7 @@
when(mMockAppOpsManager.checkOpNoThrow(anyInt(), anyInt(), anyString()))
.thenReturn(AppOpsManager.MODE_ALLOWED);
- assertThat(mBatteryOptimizeUtils.getAppOptimizationMode())
- .isEqualTo(MODE_OPTIMIZED);
+ assertThat(mBatteryOptimizeUtils.getAppOptimizationMode()).isEqualTo(MODE_OPTIMIZED);
}
@Test
@@ -168,7 +165,6 @@
when(mMockAppOpsManager.checkOpNoThrow(anyInt(), anyInt(), anyString()))
.thenReturn(AppOpsManager.MODE_IGNORED);
-
mBatteryOptimizeUtils.setAppUsageState(MODE_UNRESTRICTED, Action.UNKNOWN);
TimeUnit.SECONDS.sleep(1);
@@ -205,18 +201,19 @@
@Test
public void testGetInstalledApplications_returnEmptyArray() {
- assertTrue(BatteryOptimizeUtils.getInstalledApplications(mContext, mMockIPackageManager)
- .isEmpty());
+ assertTrue(
+ BatteryOptimizeUtils.getInstalledApplications(mContext, mMockIPackageManager)
+ .isEmpty());
}
@Test
public void testGetInstalledApplications_returnNull() throws Exception {
final UserInfo userInfo =
- new UserInfo(/*userId=*/ 0, /*userName=*/ "google", /*flag=*/ 0);
+ new UserInfo(/* userId= */ 0, /* userName= */ "google", /* flag= */ 0);
doReturn(Arrays.asList(userInfo)).when(mMockUserManager).getProfiles(anyInt());
doThrow(new RuntimeException())
- .when(mMockIPackageManager)
- .getInstalledApplications(anyLong(), anyInt());
+ .when(mMockIPackageManager)
+ .getInstalledApplications(anyLong(), anyInt());
assertNull(BatteryOptimizeUtils.getInstalledApplications(mContext, mMockIPackageManager));
}
@@ -224,7 +221,7 @@
@Test
public void testGetInstalledApplications_returnInstalledApps() throws Exception {
final UserInfo userInfo =
- new UserInfo(/*userId=*/ 0, /*userName=*/ "google", /*flag=*/ 0);
+ new UserInfo(/* userId= */ 0, /* userName= */ "google", /* flag= */ 0);
doReturn(Arrays.asList(userInfo)).when(mMockUserManager).getProfiles(anyInt());
final ApplicationInfo applicationInfo1 = new ApplicationInfo();
@@ -242,10 +239,15 @@
applicationInfo4.enabled = true;
applicationInfo4.uid = 4;
applicationInfo4.enabledSetting = PackageManager.COMPONENT_ENABLED_STATE_DISABLED_USER;
- doReturn(new ParceledListSlice<ApplicationInfo>(
- Arrays.asList(applicationInfo1, applicationInfo2, applicationInfo3, applicationInfo4)))
- .when(mMockIPackageManager)
- .getInstalledApplications(anyLong(), anyInt());
+ doReturn(
+ new ParceledListSlice<ApplicationInfo>(
+ Arrays.asList(
+ applicationInfo1,
+ applicationInfo2,
+ applicationInfo3,
+ applicationInfo4)))
+ .when(mMockIPackageManager)
+ .getInstalledApplications(anyLong(), anyInt());
final ArraySet<ApplicationInfo> applications =
BatteryOptimizeUtils.getInstalledApplications(mContext, mMockIPackageManager);
@@ -260,7 +262,8 @@
@Test
public void testResetAppOptimizationMode_Optimized_verifyAction() throws Exception {
runTestForResetWithMode(
- AppOpsManager.MODE_ALLOWED, /* allowListed */ false,
+ AppOpsManager.MODE_ALLOWED, /* allowListed */
+ false,
/* isSystemOrDefaultApp */ false);
verifyNoInteractions(mMockBatteryUtils);
@@ -274,7 +277,8 @@
@Test
public void testResetAppOptimizationMode_SystemOrDefault_verifyAction() throws Exception {
runTestForResetWithMode(
- AppOpsManager.MODE_ALLOWED, /* allowListed */ true,
+ AppOpsManager.MODE_ALLOWED, /* allowListed */
+ true,
/* isSystemOrDefaultApp */ true);
verifyNoInteractions(mMockBatteryUtils);
@@ -289,7 +293,8 @@
@Test
public void testResetAppOptimizationMode_Restricted_verifyAction() throws Exception {
runTestForResetWithMode(
- AppOpsManager.MODE_IGNORED, /* allowListed */ false,
+ AppOpsManager.MODE_IGNORED, /* allowListed */
+ false,
/* isSystemOrDefaultApp */ false);
verifySetAppOptimizationMode(AppOpsManager.MODE_ALLOWED, /* allowListed */ false);
@@ -298,7 +303,8 @@
@Test
public void testResetAppOptimizationMode_Unrestricted_verifyAction() throws Exception {
runTestForResetWithMode(
- AppOpsManager.MODE_ALLOWED, /* allowListed */ true,
+ AppOpsManager.MODE_ALLOWED, /* allowListed */
+ true,
/* isSystemOrDefaultApp */ false);
verifySetAppOptimizationMode(AppOpsManager.MODE_ALLOWED, /* allowListed */ false);
@@ -308,32 +314,28 @@
int appStandbyMode, boolean allowListed, boolean isSystemOrDefaultApp)
throws Exception {
final UserInfo userInfo =
- new UserInfo(/*userId=*/ 0, /*userName=*/ "google", /*flag=*/ 0);
+ new UserInfo(/* userId= */ 0, /* userName= */ "google", /* flag= */ 0);
doReturn(Arrays.asList(userInfo)).when(mMockUserManager).getProfiles(anyInt());
final ApplicationInfo applicationInfo = new ApplicationInfo();
applicationInfo.uid = UID;
applicationInfo.packageName = PACKAGE_NAME;
applicationInfo.enabled = true;
- doReturn(new ParceledListSlice<ApplicationInfo>(
- Arrays.asList(applicationInfo)))
+ doReturn(new ParceledListSlice<ApplicationInfo>(Arrays.asList(applicationInfo)))
.when(mMockIPackageManager)
.getInstalledApplications(anyLong(), anyInt());
doReturn(appStandbyMode)
.when(mMockAppOpsManager)
.checkOpNoThrow(anyInt(), anyInt(), anyString());
- doReturn(allowListed)
- .when(mMockBackend)
- .isAllowlisted(anyString(), anyInt());
- doReturn(isSystemOrDefaultApp)
- .when(mMockBackend)
- .isSysAllowlisted(anyString());
- doReturn(isSystemOrDefaultApp)
- .when(mMockBackend)
- .isDefaultActiveApp(anyString(), anyInt());
+ doReturn(allowListed).when(mMockBackend).isAllowlisted(anyString(), anyInt());
+ doReturn(isSystemOrDefaultApp).when(mMockBackend).isSysAllowlisted(anyString());
+ doReturn(isSystemOrDefaultApp).when(mMockBackend).isDefaultActiveApp(anyString(), anyInt());
BatteryOptimizeUtils.resetAppOptimizationMode(
- mContext, mMockIPackageManager, mMockAppOpsManager, mMockBackend,
+ mContext,
+ mMockIPackageManager,
+ mMockAppOpsManager,
+ mMockBackend,
mMockBatteryUtils);
TimeUnit.SECONDS.sleep(1);
}
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/BatterySaverControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/BatterySaverControllerTest.java
index ddb9860..8d9a1c0 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/BatterySaverControllerTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/BatterySaverControllerTest.java
@@ -21,11 +21,9 @@
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
-import android.app.settings.SettingsEnums;
import android.content.Context;
import android.os.PowerManager;
import android.provider.Settings;
-import android.util.Pair;
import androidx.preference.Preference;
@@ -41,10 +39,8 @@
@RunWith(RobolectricTestRunner.class)
public class BatterySaverControllerTest {
- @Mock
- private Preference mBatterySaverPref;
- @Mock
- private PowerManager mPowerManager;
+ @Mock private Preference mBatterySaverPref;
+ @Mock private PowerManager mPowerManager;
private BatterySaverController mBatterySaverController;
private Context mContext;
@@ -58,8 +54,8 @@
ReflectionHelpers.setField(mBatterySaverController, "mPowerManager", mPowerManager);
ReflectionHelpers.setField(mBatterySaverController, "mBatterySaverPref", mBatterySaverPref);
- Settings.Global.putInt(mContext.getContentResolver(),
- Settings.Global.LOW_POWER_MODE_TRIGGER_LEVEL, 0);
+ Settings.Global.putInt(
+ mContext.getContentResolver(), Settings.Global.LOW_POWER_MODE_TRIGGER_LEVEL, 0);
}
@Test
@@ -84,8 +80,8 @@
@Test
public void getSummary_batterySaverOffButScheduled_showSummaryScheduled() {
when(mPowerManager.isPowerSaveMode()).thenReturn(false);
- Settings.Global.putInt(mContext.getContentResolver(),
- Settings.Global.LOW_POWER_MODE_TRIGGER_LEVEL, 15);
+ Settings.Global.putInt(
+ mContext.getContentResolver(), Settings.Global.LOW_POWER_MODE_TRIGGER_LEVEL, 15);
assertThat(mBatterySaverController.getSummary()).isEqualTo("Will turn on at 15%");
}
@@ -93,8 +89,8 @@
@Test
public void getSummary_batterySaverOffButScheduledZeroPercent_showSummaryOff() {
when(mPowerManager.isPowerSaveMode()).thenReturn(false);
- Settings.Global.putInt(mContext.getContentResolver(),
- Settings.Global.LOW_POWER_MODE_TRIGGER_LEVEL, 0);
+ Settings.Global.putInt(
+ mContext.getContentResolver(), Settings.Global.LOW_POWER_MODE_TRIGGER_LEVEL, 0);
assertThat(mBatterySaverController.getSummary()).isEqualTo("Off");
}
@@ -107,8 +103,8 @@
Settings.Global.AUTOMATIC_POWER_SAVE_MODE,
PowerManager.POWER_SAVE_MODE_TRIGGER_DYNAMIC);
- assertThat(mBatterySaverController.getSummary()).
- isEqualTo("Will turn on based on your routine");
+ assertThat(mBatterySaverController.getSummary())
+ .isEqualTo("Will turn on based on your routine");
}
@Test
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/BatterySaverReceiverTest.java b/tests/robotests/src/com/android/settings/fuelgauge/BatterySaverReceiverTest.java
index e411531..e3e00ec1 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/BatterySaverReceiverTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/BatterySaverReceiverTest.java
@@ -32,10 +32,8 @@
@RunWith(RobolectricTestRunner.class)
public class BatterySaverReceiverTest {
- @Mock
- private BatterySaverReceiver.BatterySaverListener mBatterySaverListener;
- @Mock
- private Context mContext;
+ @Mock private BatterySaverReceiver.BatterySaverListener mBatterySaverListener;
+ @Mock private Context mContext;
private BatterySaverReceiver mBatterySaverReceiver;
@Before
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/BatterySettingsMigrateCheckerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/BatterySettingsMigrateCheckerTest.java
index bab19e5..ba7e9cc 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/BatterySettingsMigrateCheckerTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/BatterySettingsMigrateCheckerTest.java
@@ -56,18 +56,15 @@
@Config(shadows = {BatterySettingsMigrateCheckerTest.ShadowUserHandle.class})
public final class BatterySettingsMigrateCheckerTest {
- private static final Intent BOOT_COMPLETED_INTENT =
- new Intent(Intent.ACTION_BOOT_COMPLETED);
+ private static final Intent BOOT_COMPLETED_INTENT = new Intent(Intent.ACTION_BOOT_COMPLETED);
private static final int UID = 2003;
private static final String PACKAGE_NAME = "com.android.test.app";
private Context mContext;
private BatterySettingsMigrateChecker mBatterySettingsMigrateChecker;
- @Mock
- private PackageManager mPackageManager;
- @Mock
- private BatteryOptimizeUtils mBatteryOptimizeUtils;
+ @Mock private PackageManager mPackageManager;
+ @Mock private BatteryOptimizeUtils mBatteryOptimizeUtils;
@Before
public void setUp() throws Exception {
@@ -76,7 +73,8 @@
BatteryUtils.getInstance(mContext).reset();
doReturn(mContext).when(mContext).getApplicationContext();
doReturn(mPackageManager).when(mContext).getPackageManager();
- doReturn(UID).when(mPackageManager)
+ doReturn(UID)
+ .when(mPackageManager)
.getPackageUid(PACKAGE_NAME, PackageManager.GET_META_DATA);
BatterySettingsMigrateChecker.sBatteryOptimizeUtils = mBatteryOptimizeUtils;
mBatterySettingsMigrateChecker = new BatterySettingsMigrateChecker();
@@ -150,45 +148,42 @@
}
@Test
- public void verifyBatteryOptimizeModeApps_inAllowList_resetOptimizationMode()
- throws Exception {
- doReturn(BatteryOptimizeUtils.MODE_RESTRICTED).when(mBatteryOptimizeUtils)
+ public void verifyBatteryOptimizeModeApps_inAllowList_resetOptimizationMode() throws Exception {
+ doReturn(BatteryOptimizeUtils.MODE_RESTRICTED)
+ .when(mBatteryOptimizeUtils)
.getAppOptimizationMode();
mBatterySettingsMigrateChecker.verifyBatteryOptimizeModeApps(
- mContext,
- BatteryOptimizeUtils.MODE_OPTIMIZED,
- Arrays.asList(PACKAGE_NAME));
+ mContext, BatteryOptimizeUtils.MODE_OPTIMIZED, Arrays.asList(PACKAGE_NAME));
final InOrder inOrder = inOrder(mBatteryOptimizeUtils);
inOrder.verify(mBatteryOptimizeUtils).getAppOptimizationMode();
- inOrder.verify(mBatteryOptimizeUtils).setAppUsageState(
- BatteryOptimizeUtils.MODE_OPTIMIZED,
- BatteryOptimizeHistoricalLogEntry.Action.FORCE_RESET);
+ inOrder.verify(mBatteryOptimizeUtils)
+ .setAppUsageState(
+ BatteryOptimizeUtils.MODE_OPTIMIZED,
+ BatteryOptimizeHistoricalLogEntry.Action.FORCE_RESET);
}
@Test
public void verifyBatteryOptimizeModeApps_optimizedMode_noAction() throws Exception {
- doReturn(BatteryOptimizeUtils.MODE_OPTIMIZED).when(mBatteryOptimizeUtils)
+ doReturn(BatteryOptimizeUtils.MODE_OPTIMIZED)
+ .when(mBatteryOptimizeUtils)
.getAppOptimizationMode();
mBatterySettingsMigrateChecker.verifyBatteryOptimizeModeApps(
- mContext,
- BatteryOptimizeUtils.MODE_OPTIMIZED,
- Arrays.asList(PACKAGE_NAME));
+ mContext, BatteryOptimizeUtils.MODE_OPTIMIZED, Arrays.asList(PACKAGE_NAME));
verify(mBatteryOptimizeUtils, never()).setAppUsageState(anyInt(), any());
}
@Test
public void verifyBatteryOptimizeModeApps_notInAllowList_noAction() throws Exception {
- doReturn(BatteryOptimizeUtils.MODE_RESTRICTED).when(mBatteryOptimizeUtils)
+ doReturn(BatteryOptimizeUtils.MODE_RESTRICTED)
+ .when(mBatteryOptimizeUtils)
.getAppOptimizationMode();
mBatterySettingsMigrateChecker.verifyBatteryOptimizeModeApps(
- mContext,
- BatteryOptimizeUtils.MODE_OPTIMIZED,
- new ArrayList<String>());
+ mContext, BatteryOptimizeUtils.MODE_OPTIMIZED, new ArrayList<String>());
verifyNoInteractions(mBatteryOptimizeUtils);
}
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/BatteryUtilsTest.java b/tests/robotests/src/com/android/settings/fuelgauge/BatteryUtilsTest.java
index 2fe0cec..0d8c669 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/BatteryUtilsTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/BatteryUtilsTest.java
@@ -106,32 +106,22 @@
private static final String INFO_EXCESSIVE = "anomaly_type=4,auto_restriction=false";
private static final String INFO_WAKELOCK = "anomaly_type=1,auto_restriction=false";
- @Mock
- private BatteryStats.Uid mUid;
- @Mock
- private BatteryStats.Timer mTimer;
- @Mock
- private BatteryUsageStats mBatteryUsageStats;
- @Mock
- private BatteryConsumer mAggregateBatteryConsumer;
- @Mock
- private BatteryInfo mBatteryInfo;
- @Mock
- private PackageManager mPackageManager;
- @Mock
- private AppOpsManager mAppOpsManager;
- @Mock
- private ApplicationInfo mApplicationInfo;
+ @Mock private BatteryStats.Uid mUid;
+ @Mock private BatteryStats.Timer mTimer;
+ @Mock private BatteryUsageStats mBatteryUsageStats;
+ @Mock private BatteryConsumer mAggregateBatteryConsumer;
+ @Mock private BatteryInfo mBatteryInfo;
+ @Mock private PackageManager mPackageManager;
+ @Mock private AppOpsManager mAppOpsManager;
+ @Mock private ApplicationInfo mApplicationInfo;
+
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
private BatteryStatsManager mBatteryStatsManager;
- @Mock
- private ApplicationInfo mHighApplicationInfo;
- @Mock
- private ApplicationInfo mLowApplicationInfo;
- @Mock
- private PowerAllowlistBackend mPowerAllowlistBackend;
- @Mock
- private BatteryDatabaseManager mBatteryDatabaseManager;
+
+ @Mock private ApplicationInfo mHighApplicationInfo;
+ @Mock private ApplicationInfo mLowApplicationInfo;
+ @Mock private PowerAllowlistBackend mPowerAllowlistBackend;
+ @Mock private BatteryDatabaseManager mBatteryDatabaseManager;
private AnomalyInfo mAnomalyInfo;
private BatteryUtils mBatteryUtils;
private FakeFeatureFactory mFeatureFactory;
@@ -145,16 +135,21 @@
mFeatureFactory = FakeFeatureFactory.setupForTest();
mProvider = mFeatureFactory.powerUsageFeatureProvider;
- doReturn(TIME_STATE_TOP).when(mUid).getProcessStateTime(eq(PROCESS_STATE_TOP), anyLong(),
- anyInt());
- doReturn(TIME_STATE_FOREGROUND_SERVICE).when(mUid).getProcessStateTime(
- eq(PROCESS_STATE_FOREGROUND_SERVICE), anyLong(), anyInt());
- doReturn(TIME_STATE_TOP_SLEEPING).when(mUid).getProcessStateTime(
- eq(PROCESS_STATE_TOP_SLEEPING), anyLong(), anyInt());
- doReturn(TIME_STATE_FOREGROUND).when(mUid).getProcessStateTime(eq(PROCESS_STATE_FOREGROUND),
- anyLong(), anyInt());
- doReturn(TIME_STATE_BACKGROUND).when(mUid).getProcessStateTime(eq(PROCESS_STATE_BACKGROUND),
- anyLong(), anyInt());
+ doReturn(TIME_STATE_TOP)
+ .when(mUid)
+ .getProcessStateTime(eq(PROCESS_STATE_TOP), anyLong(), anyInt());
+ doReturn(TIME_STATE_FOREGROUND_SERVICE)
+ .when(mUid)
+ .getProcessStateTime(eq(PROCESS_STATE_FOREGROUND_SERVICE), anyLong(), anyInt());
+ doReturn(TIME_STATE_TOP_SLEEPING)
+ .when(mUid)
+ .getProcessStateTime(eq(PROCESS_STATE_TOP_SLEEPING), anyLong(), anyInt());
+ doReturn(TIME_STATE_FOREGROUND)
+ .when(mUid)
+ .getProcessStateTime(eq(PROCESS_STATE_FOREGROUND), anyLong(), anyInt());
+ doReturn(TIME_STATE_BACKGROUND)
+ .when(mUid)
+ .getProcessStateTime(eq(PROCESS_STATE_BACKGROUND), anyLong(), anyInt());
when(mPackageManager.getApplicationInfo(eq(HIGH_SDK_PACKAGE), anyInt()))
.thenReturn(mHighApplicationInfo);
@@ -166,12 +161,14 @@
mContext = spy(RuntimeEnvironment.application);
doReturn(mPackageManager).when(mContext).getPackageManager();
doReturn(mAppOpsManager).when(mContext).getSystemService(Context.APP_OPS_SERVICE);
- doReturn(mBatteryStatsManager).when(mContext)
+ doReturn(mBatteryStatsManager)
+ .when(mContext)
.getSystemService(Context.BATTERY_STATS_SERVICE);
mBatteryUtils = spy(new BatteryUtils(mContext));
mBatteryUtils.mPowerUsageFeatureProvider = mProvider;
- doReturn(0L).when(mBatteryUtils)
- .getForegroundServiceTotalTimeUs(any(BatteryStats.Uid.class), anyLong());
+ doReturn(0L)
+ .when(mBatteryUtils)
+ .getForegroundServiceTotalTimeUs(any(BatteryStats.Uid.class), anyLong());
mAnomalyInfo = new AnomalyInfo(INFO_WAKELOCK);
BatteryDatabaseManager.setUpForTest(mBatteryDatabaseManager);
@@ -180,54 +177,62 @@
@Test
public void testGetProcessTimeMs_typeForeground_timeCorrect() {
- doReturn(TIME_STATE_FOREGROUND + 500).when(mBatteryUtils)
- .getForegroundActivityTotalTimeUs(eq(mUid), anyLong());
+ doReturn(TIME_STATE_FOREGROUND + 500)
+ .when(mBatteryUtils)
+ .getForegroundActivityTotalTimeUs(eq(mUid), anyLong());
- final long time = mBatteryUtils.getProcessTimeMs(BatteryUtils.StatusType.FOREGROUND, mUid,
- BatteryStats.STATS_SINCE_CHARGED);
+ final long time =
+ mBatteryUtils.getProcessTimeMs(
+ BatteryUtils.StatusType.FOREGROUND, mUid, BatteryStats.STATS_SINCE_CHARGED);
assertThat(time).isEqualTo(TIME_EXPECTED_FOREGROUND);
}
@Test
public void testGetProcessTimeMs_typeBackground_timeCorrect() {
- final long time = mBatteryUtils.getProcessTimeMs(BatteryUtils.StatusType.BACKGROUND, mUid,
- BatteryStats.STATS_SINCE_CHARGED);
+ final long time =
+ mBatteryUtils.getProcessTimeMs(
+ BatteryUtils.StatusType.BACKGROUND, mUid, BatteryStats.STATS_SINCE_CHARGED);
assertThat(time).isEqualTo(TIME_EXPECTED_BACKGROUND);
}
@Test
public void testGetProcessTimeMs_typeAll_timeCorrect() {
- doReturn(TIME_STATE_FOREGROUND + 500).when(mBatteryUtils)
- .getForegroundActivityTotalTimeUs(eq(mUid), anyLong());
+ doReturn(TIME_STATE_FOREGROUND + 500)
+ .when(mBatteryUtils)
+ .getForegroundActivityTotalTimeUs(eq(mUid), anyLong());
- final long time = mBatteryUtils.getProcessTimeMs(BatteryUtils.StatusType.ALL, mUid,
- BatteryStats.STATS_SINCE_CHARGED);
+ final long time =
+ mBatteryUtils.getProcessTimeMs(
+ BatteryUtils.StatusType.ALL, mUid, BatteryStats.STATS_SINCE_CHARGED);
assertThat(time).isEqualTo(TIME_EXPECTED_ALL);
}
@Test
public void testGetProcessTimeMs_uidNull_returnZero() {
- final long time = mBatteryUtils.getProcessTimeMs(BatteryUtils.StatusType.ALL, null,
- BatteryStats.STATS_SINCE_CHARGED);
+ final long time =
+ mBatteryUtils.getProcessTimeMs(
+ BatteryUtils.StatusType.ALL, null, BatteryStats.STATS_SINCE_CHARGED);
assertThat(time).isEqualTo(0);
}
@Test
public void testCalculateBatteryPercent() {
- assertThat(mBatteryUtils.calculateBatteryPercent(BATTERY_SYSTEM_USAGE, TOTAL_BATTERY_USAGE,
- DISCHARGE_AMOUNT))
- .isWithin(PRECISION).of(PERCENT_SYSTEM_USAGE);
+ assertThat(
+ mBatteryUtils.calculateBatteryPercent(
+ BATTERY_SYSTEM_USAGE, TOTAL_BATTERY_USAGE, DISCHARGE_AMOUNT))
+ .isWithin(PRECISION)
+ .of(PERCENT_SYSTEM_USAGE);
}
@Test
public void testCalculateLastFullChargeTime() {
final long currentTimeMs = System.currentTimeMillis();
- when(mBatteryUsageStats.getStatsStartTimestamp()).thenReturn(
- currentTimeMs - TIME_SINCE_LAST_FULL_CHARGE_MS);
+ when(mBatteryUsageStats.getStatsStartTimestamp())
+ .thenReturn(currentTimeMs - TIME_SINCE_LAST_FULL_CHARGE_MS);
assertThat(mBatteryUtils.calculateLastFullChargeTime(mBatteryUsageStats, currentTimeMs))
.isEqualTo(TIME_SINCE_LAST_FULL_CHARGE_MS);
@@ -237,49 +242,54 @@
public void testGetForegroundActivityTotalTimeMs_returnMilliseconds() {
final long rawRealtimeUs = SystemClock.elapsedRealtime() * 1000;
doReturn(mTimer).when(mUid).getForegroundActivityTimer();
- doReturn(TIME_SINCE_LAST_FULL_CHARGE_US).when(mTimer)
+ doReturn(TIME_SINCE_LAST_FULL_CHARGE_US)
+ .when(mTimer)
.getTotalTimeLocked(rawRealtimeUs, BatteryStats.STATS_SINCE_CHARGED);
- assertThat(mBatteryUtils.getForegroundActivityTotalTimeUs(mUid, rawRealtimeUs)).isEqualTo(
- TIME_SINCE_LAST_FULL_CHARGE_US);
+ assertThat(mBatteryUtils.getForegroundActivityTotalTimeUs(mUid, rawRealtimeUs))
+ .isEqualTo(TIME_SINCE_LAST_FULL_CHARGE_US);
}
@Test
- public void testGetTargetSdkVersion_packageExist_returnSdk() throws
- PackageManager.NameNotFoundException {
- doReturn(mApplicationInfo).when(mPackageManager).getApplicationInfo(PACKAGE_NAME,
- PackageManager.GET_META_DATA);
+ public void testGetTargetSdkVersion_packageExist_returnSdk()
+ throws PackageManager.NameNotFoundException {
+ doReturn(mApplicationInfo)
+ .when(mPackageManager)
+ .getApplicationInfo(PACKAGE_NAME, PackageManager.GET_META_DATA);
mApplicationInfo.targetSdkVersion = SDK_VERSION;
assertThat(mBatteryUtils.getTargetSdkVersion(PACKAGE_NAME)).isEqualTo(SDK_VERSION);
}
@Test
- public void testGetTargetSdkVersion_packageNotExist_returnSdkNull() throws
- PackageManager.NameNotFoundException {
- doThrow(new PackageManager.NameNotFoundException()).when(
- mPackageManager).getApplicationInfo(PACKAGE_NAME, PackageManager.GET_META_DATA);
+ public void testGetTargetSdkVersion_packageNotExist_returnSdkNull()
+ throws PackageManager.NameNotFoundException {
+ doThrow(new PackageManager.NameNotFoundException())
+ .when(mPackageManager)
+ .getApplicationInfo(PACKAGE_NAME, PackageManager.GET_META_DATA);
- assertThat(mBatteryUtils.getTargetSdkVersion(PACKAGE_NAME)).isEqualTo(
- BatteryUtils.SDK_NULL);
+ assertThat(mBatteryUtils.getTargetSdkVersion(PACKAGE_NAME))
+ .isEqualTo(BatteryUtils.SDK_NULL);
}
@Test
public void testBackgroundRestrictionOn_restrictionOn_returnTrue() {
- doReturn(AppOpsManager.MODE_IGNORED).when(mAppOpsManager).checkOpNoThrow(
- AppOpsManager.OP_RUN_IN_BACKGROUND, UID, PACKAGE_NAME);
+ doReturn(AppOpsManager.MODE_IGNORED)
+ .when(mAppOpsManager)
+ .checkOpNoThrow(AppOpsManager.OP_RUN_IN_BACKGROUND, UID, PACKAGE_NAME);
- assertThat(mBatteryUtils.isBackgroundRestrictionEnabled(SDK_VERSION, UID,
- PACKAGE_NAME)).isTrue();
+ assertThat(mBatteryUtils.isBackgroundRestrictionEnabled(SDK_VERSION, UID, PACKAGE_NAME))
+ .isTrue();
}
@Test
public void testBackgroundRestrictionOn_restrictionOff_returnFalse() {
- doReturn(AppOpsManager.MODE_ALLOWED).when(mAppOpsManager).checkOpNoThrow(
- AppOpsManager.OP_RUN_IN_BACKGROUND, UID, PACKAGE_NAME);
+ doReturn(AppOpsManager.MODE_ALLOWED)
+ .when(mAppOpsManager)
+ .checkOpNoThrow(AppOpsManager.OP_RUN_IN_BACKGROUND, UID, PACKAGE_NAME);
assertThat(mBatteryUtils.isBackgroundRestrictionEnabled(SDK_VERSION, UID, PACKAGE_NAME))
- .isFalse();
+ .isFalse();
}
@Test
@@ -294,13 +304,13 @@
@Test
public void testIsPreOApp_containPreOApp_ReturnTrue() {
- assertThat(
- mBatteryUtils.isPreOApp(new String[]{HIGH_SDK_PACKAGE, LOW_SDK_PACKAGE})).isTrue();
+ assertThat(mBatteryUtils.isPreOApp(new String[] {HIGH_SDK_PACKAGE, LOW_SDK_PACKAGE}))
+ .isTrue();
}
@Test
public void testIsPreOApp_emptyList_ReturnFalse() {
- assertThat(mBatteryUtils.isPreOApp(new String[]{})).isFalse();
+ assertThat(mBatteryUtils.isPreOApp(new String[] {})).isFalse();
}
@Ignore
@@ -309,10 +319,18 @@
mBatteryUtils.setForceAppStandby(UID, LOW_SDK_PACKAGE, AppOpsManager.MODE_IGNORED);
// Restrict both OP_RUN_IN_BACKGROUND and OP_RUN_ANY_IN_BACKGROUND
- verify(mAppOpsManager).setMode(AppOpsManager.OP_RUN_IN_BACKGROUND, UID, LOW_SDK_PACKAGE,
- AppOpsManager.MODE_IGNORED);
- verify(mAppOpsManager).setMode(AppOpsManager.OP_RUN_ANY_IN_BACKGROUND, UID, LOW_SDK_PACKAGE,
- AppOpsManager.MODE_IGNORED);
+ verify(mAppOpsManager)
+ .setMode(
+ AppOpsManager.OP_RUN_IN_BACKGROUND,
+ UID,
+ LOW_SDK_PACKAGE,
+ AppOpsManager.MODE_IGNORED);
+ verify(mAppOpsManager)
+ .setMode(
+ AppOpsManager.OP_RUN_ANY_IN_BACKGROUND,
+ UID,
+ LOW_SDK_PACKAGE,
+ AppOpsManager.MODE_IGNORED);
}
@Ignore
@@ -321,42 +339,53 @@
mBatteryUtils.setForceAppStandby(UID, HIGH_SDK_PACKAGE, AppOpsManager.MODE_IGNORED);
// Don't restrict OP_RUN_IN_BACKGROUND because it is already been restricted for O app
- verify(mAppOpsManager, never()).setMode(AppOpsManager.OP_RUN_IN_BACKGROUND, UID,
- HIGH_SDK_PACKAGE, AppOpsManager.MODE_IGNORED);
+ verify(mAppOpsManager, never())
+ .setMode(
+ AppOpsManager.OP_RUN_IN_BACKGROUND,
+ UID,
+ HIGH_SDK_PACKAGE,
+ AppOpsManager.MODE_IGNORED);
// Restrict OP_RUN_ANY_IN_BACKGROUND
- verify(mAppOpsManager).setMode(AppOpsManager.OP_RUN_ANY_IN_BACKGROUND, UID,
- HIGH_SDK_PACKAGE, AppOpsManager.MODE_IGNORED);
+ verify(mAppOpsManager)
+ .setMode(
+ AppOpsManager.OP_RUN_ANY_IN_BACKGROUND,
+ UID,
+ HIGH_SDK_PACKAGE,
+ AppOpsManager.MODE_IGNORED);
}
@Test
public void testSetForceAppStandby_restrictApp_recordTime() {
mBatteryUtils.setForceAppStandby(UID, HIGH_SDK_PACKAGE, AppOpsManager.MODE_IGNORED);
- verify(mBatteryDatabaseManager).insertAction(
- eq(AnomalyDatabaseHelper.ActionType.RESTRICTION), eq(UID),
- eq(HIGH_SDK_PACKAGE), anyLong());
+ verify(mBatteryDatabaseManager)
+ .insertAction(
+ eq(AnomalyDatabaseHelper.ActionType.RESTRICTION), eq(UID),
+ eq(HIGH_SDK_PACKAGE), anyLong());
}
@Test
public void testSetForceAppStandby_unrestrictApp_deleteTime() {
mBatteryUtils.setForceAppStandby(UID, HIGH_SDK_PACKAGE, AppOpsManager.MODE_ALLOWED);
- verify(mBatteryDatabaseManager).deleteAction(AnomalyDatabaseHelper.ActionType.RESTRICTION,
- UID, HIGH_SDK_PACKAGE);
+ verify(mBatteryDatabaseManager)
+ .deleteAction(AnomalyDatabaseHelper.ActionType.RESTRICTION, UID, HIGH_SDK_PACKAGE);
}
@Test
public void testIsForceAppStandbyEnabled_enabled_returnTrue() {
- when(mAppOpsManager.checkOpNoThrow(AppOpsManager.OP_RUN_ANY_IN_BACKGROUND, UID,
- PACKAGE_NAME)).thenReturn(AppOpsManager.MODE_IGNORED);
+ when(mAppOpsManager.checkOpNoThrow(
+ AppOpsManager.OP_RUN_ANY_IN_BACKGROUND, UID, PACKAGE_NAME))
+ .thenReturn(AppOpsManager.MODE_IGNORED);
assertThat(mBatteryUtils.isForceAppStandbyEnabled(UID, PACKAGE_NAME)).isTrue();
}
@Test
public void testIsForceAppStandbyEnabled_disabled_returnFalse() {
- when(mAppOpsManager.checkOpNoThrow(AppOpsManager.OP_RUN_ANY_IN_BACKGROUND, UID,
- PACKAGE_NAME)).thenReturn(AppOpsManager.MODE_ALLOWED);
+ when(mAppOpsManager.checkOpNoThrow(
+ AppOpsManager.OP_RUN_ANY_IN_BACKGROUND, UID, PACKAGE_NAME))
+ .thenReturn(AppOpsManager.MODE_ALLOWED);
assertThat(mBatteryUtils.isForceAppStandbyEnabled(UID, PACKAGE_NAME)).isFalse();
}
@@ -369,77 +398,85 @@
resolveInfo.activityInfo.packageName = HIGH_SDK_PACKAGE;
doReturn(resolveInfos).when(mPackageManager).queryIntentActivities(any(), anyInt());
- doReturn(new String[]{HIGH_SDK_PACKAGE}).when(mPackageManager).getPackagesForUid(UID);
+ doReturn(new String[] {HIGH_SDK_PACKAGE}).when(mPackageManager).getPackagesForUid(UID);
mHighApplicationInfo.flags = ApplicationInfo.FLAG_SYSTEM;
- assertThat(mBatteryUtils.shouldHideAnomaly(mPowerAllowlistBackend, UID,
- mAnomalyInfo)).isTrue();
+ assertThat(mBatteryUtils.shouldHideAnomaly(mPowerAllowlistBackend, UID, mAnomalyInfo))
+ .isTrue();
}
@Test
public void testShouldHideAnomaly_systemAppWithoutLauncher_returnTrue() {
doReturn(new ArrayList<>()).when(mPackageManager).queryIntentActivities(any(), anyInt());
- doReturn(new String[]{HIGH_SDK_PACKAGE}).when(mPackageManager).getPackagesForUid(UID);
+ doReturn(new String[] {HIGH_SDK_PACKAGE}).when(mPackageManager).getPackagesForUid(UID);
mHighApplicationInfo.flags = ApplicationInfo.FLAG_SYSTEM;
- assertThat(mBatteryUtils.shouldHideAnomaly(mPowerAllowlistBackend, UID,
- mAnomalyInfo)).isTrue();
+ assertThat(mBatteryUtils.shouldHideAnomaly(mPowerAllowlistBackend, UID, mAnomalyInfo))
+ .isTrue();
}
@Test
public void testShouldHideAnomaly_systemUid_returnTrue() {
final int systemUid = Process.ROOT_UID;
- doReturn(new String[]{HIGH_SDK_PACKAGE}).when(mPackageManager).getPackagesForUid(systemUid);
+ doReturn(new String[] {HIGH_SDK_PACKAGE})
+ .when(mPackageManager)
+ .getPackagesForUid(systemUid);
- assertThat(mBatteryUtils.shouldHideAnomaly(mPowerAllowlistBackend, systemUid,
- mAnomalyInfo)).isTrue();
+ assertThat(mBatteryUtils.shouldHideAnomaly(mPowerAllowlistBackend, systemUid, mAnomalyInfo))
+ .isTrue();
}
@Test
public void testShouldHideAnomaly_AppInDozeList_returnTrue() {
- doReturn(new String[]{HIGH_SDK_PACKAGE}).when(mPackageManager).getPackagesForUid(UID);
- doReturn(true).when(mPowerAllowlistBackend)
- .isAllowlisted(new String[]{HIGH_SDK_PACKAGE}, UID);
+ doReturn(new String[] {HIGH_SDK_PACKAGE}).when(mPackageManager).getPackagesForUid(UID);
+ doReturn(true)
+ .when(mPowerAllowlistBackend)
+ .isAllowlisted(new String[] {HIGH_SDK_PACKAGE}, UID);
- assertThat(mBatteryUtils.shouldHideAnomaly(mPowerAllowlistBackend, UID,
- mAnomalyInfo)).isTrue();
+ assertThat(mBatteryUtils.shouldHideAnomaly(mPowerAllowlistBackend, UID, mAnomalyInfo))
+ .isTrue();
}
@Test
public void testShouldHideAnomaly_normalApp_returnFalse() {
- doReturn(new String[]{HIGH_SDK_PACKAGE}).when(mPackageManager).getPackagesForUid(UID);
+ doReturn(new String[] {HIGH_SDK_PACKAGE}).when(mPackageManager).getPackagesForUid(UID);
- assertThat(mBatteryUtils.shouldHideAnomaly(mPowerAllowlistBackend, UID,
- mAnomalyInfo)).isFalse();
+ assertThat(mBatteryUtils.shouldHideAnomaly(mPowerAllowlistBackend, UID, mAnomalyInfo))
+ .isFalse();
}
@Test
public void testShouldHideAnomaly_excessivePriorOApp_returnFalse() {
- doReturn(new String[]{LOW_SDK_PACKAGE}).when(mPackageManager).getPackagesForUid(UID);
+ doReturn(new String[] {LOW_SDK_PACKAGE}).when(mPackageManager).getPackagesForUid(UID);
mAnomalyInfo = new AnomalyInfo(INFO_EXCESSIVE);
- assertThat(mBatteryUtils.shouldHideAnomaly(mPowerAllowlistBackend, UID,
- mAnomalyInfo)).isFalse();
+ assertThat(mBatteryUtils.shouldHideAnomaly(mPowerAllowlistBackend, UID, mAnomalyInfo))
+ .isFalse();
}
@Test
public void testShouldHideAnomaly_excessiveOApp_returnTrue() {
- doReturn(new String[]{HIGH_SDK_PACKAGE}).when(mPackageManager).getPackagesForUid(UID);
+ doReturn(new String[] {HIGH_SDK_PACKAGE}).when(mPackageManager).getPackagesForUid(UID);
mAnomalyInfo = new AnomalyInfo(INFO_EXCESSIVE);
- assertThat(mBatteryUtils.shouldHideAnomaly(mPowerAllowlistBackend, UID,
- mAnomalyInfo)).isTrue();
+ assertThat(mBatteryUtils.shouldHideAnomaly(mPowerAllowlistBackend, UID, mAnomalyInfo))
+ .isTrue();
}
@Test
public void clearForceAppStandby_appRestricted_clearAndReturnTrue() {
when(mBatteryUtils.getPackageUid(HIGH_SDK_PACKAGE)).thenReturn(UID);
- when(mAppOpsManager.checkOpNoThrow(AppOpsManager.OP_RUN_ANY_IN_BACKGROUND, UID,
- HIGH_SDK_PACKAGE)).thenReturn(AppOpsManager.MODE_IGNORED);
+ when(mAppOpsManager.checkOpNoThrow(
+ AppOpsManager.OP_RUN_ANY_IN_BACKGROUND, UID, HIGH_SDK_PACKAGE))
+ .thenReturn(AppOpsManager.MODE_IGNORED);
assertThat(mBatteryUtils.clearForceAppStandby(HIGH_SDK_PACKAGE)).isTrue();
- verify(mAppOpsManager).setMode(AppOpsManager.OP_RUN_ANY_IN_BACKGROUND, UID,
- HIGH_SDK_PACKAGE, AppOpsManager.MODE_ALLOWED);
+ verify(mAppOpsManager)
+ .setMode(
+ AppOpsManager.OP_RUN_ANY_IN_BACKGROUND,
+ UID,
+ HIGH_SDK_PACKAGE,
+ AppOpsManager.MODE_ALLOWED);
}
@Test
@@ -447,29 +484,38 @@
when(mBatteryUtils.getPackageUid(PACKAGE_NAME)).thenReturn(BatteryUtils.UID_NULL);
assertThat(mBatteryUtils.clearForceAppStandby(PACKAGE_NAME)).isFalse();
- verify(mAppOpsManager, never()).setMode(AppOpsManager.OP_RUN_ANY_IN_BACKGROUND, UID,
- PACKAGE_NAME, AppOpsManager.MODE_ALLOWED);
+ verify(mAppOpsManager, never())
+ .setMode(
+ AppOpsManager.OP_RUN_ANY_IN_BACKGROUND,
+ UID,
+ PACKAGE_NAME,
+ AppOpsManager.MODE_ALLOWED);
}
@Test
public void clearForceAppStandby_appUnrestricted_returnFalse() {
when(mBatteryUtils.getPackageUid(PACKAGE_NAME)).thenReturn(UID);
- when(mAppOpsManager.checkOpNoThrow(AppOpsManager.OP_RUN_ANY_IN_BACKGROUND, UID,
- PACKAGE_NAME)).thenReturn(AppOpsManager.MODE_ALLOWED);
+ when(mAppOpsManager.checkOpNoThrow(
+ AppOpsManager.OP_RUN_ANY_IN_BACKGROUND, UID, PACKAGE_NAME))
+ .thenReturn(AppOpsManager.MODE_ALLOWED);
assertThat(mBatteryUtils.clearForceAppStandby(PACKAGE_NAME)).isFalse();
- verify(mAppOpsManager, never()).setMode(AppOpsManager.OP_RUN_ANY_IN_BACKGROUND, UID,
- PACKAGE_NAME, AppOpsManager.MODE_ALLOWED);
+ verify(mAppOpsManager, never())
+ .setMode(
+ AppOpsManager.OP_RUN_ANY_IN_BACKGROUND,
+ UID,
+ PACKAGE_NAME,
+ AppOpsManager.MODE_ALLOWED);
}
@Test
public void getBatteryInfo_providerNull_shouldNotCrash() {
when(mProvider.isEnhancedBatteryPredictionEnabled(mContext)).thenReturn(true);
when(mProvider.getEnhancedBatteryPrediction(mContext)).thenReturn(null);
- when(mContext.registerReceiver(nullable(BroadcastReceiver.class),
- any(IntentFilter.class))).thenReturn(new Intent());
+ when(mContext.registerReceiver(nullable(BroadcastReceiver.class), any(IntentFilter.class)))
+ .thenReturn(new Intent());
- //Should not crash
+ // Should not crash
assertThat(mBatteryUtils.getBatteryInfo(TAG)).isNotNull();
}
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/HighPowerDetailTest.java b/tests/robotests/src/com/android/settings/fuelgauge/HighPowerDetailTest.java
index 3097a70..46d2d01 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/HighPowerDetailTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/HighPowerDetailTest.java
@@ -51,10 +51,8 @@
private HighPowerDetail mFragment;
private Context mContext;
- @Mock
- private PowerAllowlistBackend mPowerAllowlistBackend;
- @Mock
- private BatteryUtils mBatteryUtils;
+ @Mock private PowerAllowlistBackend mPowerAllowlistBackend;
+ @Mock private BatteryUtils mBatteryUtils;
@Before
public void setUp() {
@@ -73,13 +71,19 @@
public void logSpecialPermissionChange() {
// Deny means app is allowlisted to opt out of power save restrictions
HighPowerDetail.logSpecialPermissionChange(true, "app", RuntimeEnvironment.application);
- verify(mFeatureFactory.metricsFeatureProvider).action(any(Context.class),
- eq(MetricsProto.MetricsEvent.APP_SPECIAL_PERMISSION_BATTERY_DENY), eq("app"));
+ verify(mFeatureFactory.metricsFeatureProvider)
+ .action(
+ any(Context.class),
+ eq(MetricsProto.MetricsEvent.APP_SPECIAL_PERMISSION_BATTERY_DENY),
+ eq("app"));
// Allow means app is NOT allowlisted to opt out of power save restrictions
HighPowerDetail.logSpecialPermissionChange(false, "app", RuntimeEnvironment.application);
- verify(mFeatureFactory.metricsFeatureProvider).action(any(Context.class),
- eq(MetricsProto.MetricsEvent.APP_SPECIAL_PERMISSION_BATTERY_ALLOW), eq("app"));
+ verify(mFeatureFactory.metricsFeatureProvider)
+ .action(
+ any(Context.class),
+ eq(MetricsProto.MetricsEvent.APP_SPECIAL_PERMISSION_BATTERY_ALLOW),
+ eq("app"));
}
@Test
@@ -87,15 +91,17 @@
mFragment.mIsEnabled = true;
when(mPowerAllowlistBackend.isAllowlisted(TEST_PACKAGE, TEST_UID)).thenReturn(false);
mFragment.onClick(null, DialogInterface.BUTTON_POSITIVE);
- verify(mBatteryUtils).setForceAppStandby(TEST_UID, TEST_PACKAGE,
- AppOpsManager.MODE_ALLOWED);
+ verify(mBatteryUtils)
+ .setForceAppStandby(TEST_UID, TEST_PACKAGE, AppOpsManager.MODE_ALLOWED);
}
@Test
public void getSummary_defaultActivePackage_returnUnavailable() {
doReturn(true).when(mPowerAllowlistBackend).isDefaultActiveApp(TEST_PACKAGE, TEST_UID);
- assertThat(HighPowerDetail.getSummary(mContext, mPowerAllowlistBackend, TEST_PACKAGE,
- TEST_UID)).isEqualTo(mContext.getString(R.string.high_power_system));
+ assertThat(
+ HighPowerDetail.getSummary(
+ mContext, mPowerAllowlistBackend, TEST_PACKAGE, TEST_UID))
+ .isEqualTo(mContext.getString(R.string.high_power_system));
}
}
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/OptimizedPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/OptimizedPreferenceControllerTest.java
index bfed149..6656471 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/OptimizedPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/OptimizedPreferenceControllerTest.java
@@ -76,8 +76,8 @@
public void testUpdateState_isSystemOrDefaultAppAndOptimizeStates_prefChecked() {
when(mBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()).thenReturn(false);
when(mBatteryOptimizeUtils.isSystemOrDefaultApp()).thenReturn(true);
- when(mBatteryOptimizeUtils.getAppOptimizationMode()).thenReturn(
- BatteryOptimizeUtils.MODE_OPTIMIZED);
+ when(mBatteryOptimizeUtils.getAppOptimizationMode())
+ .thenReturn(BatteryOptimizeUtils.MODE_OPTIMIZED);
mController.updateState(mPreference);
@@ -98,8 +98,8 @@
@Test
public void testUpdateState_isOptimizedStates_prefChecked() {
when(mBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()).thenReturn(false);
- when(mBatteryOptimizeUtils.getAppOptimizationMode()).thenReturn(
- BatteryOptimizeUtils.MODE_OPTIMIZED);
+ when(mBatteryOptimizeUtils.getAppOptimizationMode())
+ .thenReturn(BatteryOptimizeUtils.MODE_OPTIMIZED);
mController.updateState(mPreference);
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/PowerBackgroundUsageDetailTest.java b/tests/robotests/src/com/android/settings/fuelgauge/PowerBackgroundUsageDetailTest.java
index e6caf78..e50edec 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/PowerBackgroundUsageDetailTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/PowerBackgroundUsageDetailTest.java
@@ -72,11 +72,12 @@
import org.robolectric.util.ReflectionHelpers;
@RunWith(RobolectricTestRunner.class)
-@Config(shadows = {
- ShadowEntityHeaderController.class,
- ShadowActivityManager.class,
- com.android.settings.testutils.shadow.ShadowFragment.class,
-})
+@Config(
+ shadows = {
+ ShadowEntityHeaderController.class,
+ ShadowActivityManager.class,
+ com.android.settings.testutils.shadow.ShadowFragment.class,
+ })
public class PowerBackgroundUsageDetailTest {
private static final String APP_LABEL = "app label";
private static final String SUMMARY = "summary";
@@ -96,30 +97,19 @@
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
private FragmentActivity mActivity;
- @Mock
- private EntityHeaderController mEntityHeaderController;
- @Mock
- private BatteryOptimizeUtils mBatteryOptimizeUtils;
- @Mock
- private LayoutPreference mHeaderPreference;
- @Mock
- private ApplicationsState mState;
- @Mock
- private Bundle mBundle;
- @Mock
- private LoaderManager mLoaderManager;
- @Mock
- private ApplicationsState.AppEntry mAppEntry;
- @Mock
- private BatteryEntry mBatteryEntry;
- @Mock
- private BackupManager mBackupManager;
- @Mock
- private PackageManager mPackageManager;
- @Mock
- private AppOpsManager mAppOpsManager;
- @Mock
- private Switch mMockSwitch;
+
+ @Mock private EntityHeaderController mEntityHeaderController;
+ @Mock private BatteryOptimizeUtils mBatteryOptimizeUtils;
+ @Mock private LayoutPreference mHeaderPreference;
+ @Mock private ApplicationsState mState;
+ @Mock private Bundle mBundle;
+ @Mock private LoaderManager mLoaderManager;
+ @Mock private ApplicationsState.AppEntry mAppEntry;
+ @Mock private BatteryEntry mBatteryEntry;
+ @Mock private BackupManager mBackupManager;
+ @Mock private PackageManager mPackageManager;
+ @Mock private AppOpsManager mAppOpsManager;
+ @Mock private Switch mMockSwitch;
@Before
public void setUp() {
@@ -137,19 +127,26 @@
doReturn(mLoaderManager).when(mFragment).getLoaderManager();
ShadowEntityHeaderController.setUseMock(mEntityHeaderController);
- doReturn(mEntityHeaderController).when(mEntityHeaderController)
+ doReturn(mEntityHeaderController)
+ .when(mEntityHeaderController)
.setButtonActions(anyInt(), anyInt());
- doReturn(mEntityHeaderController).when(mEntityHeaderController)
+ doReturn(mEntityHeaderController)
+ .when(mEntityHeaderController)
.setIcon(nullable(Drawable.class));
- doReturn(mEntityHeaderController).when(mEntityHeaderController).setIcon(nullable(
- ApplicationsState.AppEntry.class));
- doReturn(mEntityHeaderController).when(mEntityHeaderController)
+ doReturn(mEntityHeaderController)
+ .when(mEntityHeaderController)
+ .setIcon(nullable(ApplicationsState.AppEntry.class));
+ doReturn(mEntityHeaderController)
+ .when(mEntityHeaderController)
.setLabel(nullable(String.class));
- doReturn(mEntityHeaderController).when(mEntityHeaderController)
+ doReturn(mEntityHeaderController)
+ .when(mEntityHeaderController)
.setLabel(nullable(String.class));
- doReturn(mEntityHeaderController).when(mEntityHeaderController)
+ doReturn(mEntityHeaderController)
+ .when(mEntityHeaderController)
.setLabel(nullable(ApplicationsState.AppEntry.class));
- doReturn(mEntityHeaderController).when(mEntityHeaderController)
+ doReturn(mEntityHeaderController)
+ .when(mEntityHeaderController)
.setSummary(nullable(String.class));
when(mBatteryEntry.getUid()).thenReturn(UID);
@@ -169,13 +166,15 @@
final ArgumentCaptor<Intent> captor = ArgumentCaptor.forClass(Intent.class);
- Answer<Void> callable = invocation -> {
- mBundle = captor.getValue().getBundleExtra(EXTRA_SHOW_FRAGMENT_ARGUMENTS);
- System.out.println("mBundle = " + mBundle);
- return null;
- };
- doAnswer(callable).when(mActivity).startActivityAsUser(captor.capture(),
- nullable(UserHandle.class));
+ Answer<Void> callable =
+ invocation -> {
+ mBundle = captor.getValue().getBundleExtra(EXTRA_SHOW_FRAGMENT_ARGUMENTS);
+ System.out.println("mBundle = " + mBundle);
+ return null;
+ };
+ doAnswer(callable)
+ .when(mActivity)
+ .startActivityAsUser(captor.capture(), nullable(UserHandle.class));
doAnswer(callable).when(mActivity).startActivity(captor.capture());
mFooterPreference = spy(new FooterPreference(mContext));
@@ -207,7 +206,9 @@
@Test
public void initHeader_HasAppEntry_BuildByAppEntry() {
- ReflectionHelpers.setStaticField(AppUtils.class, "sInstantAppDataProvider",
+ ReflectionHelpers.setStaticField(
+ AppUtils.class,
+ "sInstantAppDataProvider",
new InstantAppDataProvider() {
@Override
public boolean isInstantApp(ApplicationInfo info) {
@@ -224,7 +225,9 @@
@Test
public void initHeader_HasAppEntry_InstantApp() {
- ReflectionHelpers.setStaticField(AppUtils.class, "sInstantAppDataProvider",
+ ReflectionHelpers.setStaticField(
+ AppUtils.class,
+ "sInstantAppDataProvider",
new InstantAppDataProvider() {
@Override
public boolean isInstantApp(ApplicationInfo info) {
@@ -256,7 +259,7 @@
final int optimizedMode = BatteryOptimizeUtils.MODE_OPTIMIZED;
mFragment.mOptimizationMode = optimizedMode;
- mFragment.onSwitchChanged(mMockSwitch, /*isChecked=*/ false);
+ mFragment.onSwitchChanged(mMockSwitch, /* isChecked= */ false);
verify(mOptimizePreference).setEnabled(false);
verify(mUnrestrictedPreference).setEnabled(false);
@@ -272,7 +275,7 @@
final int optimizedMode = BatteryOptimizeUtils.MODE_OPTIMIZED;
mFragment.mOptimizationMode = restrictedMode;
- mFragment.onSwitchChanged(mMockSwitch, /*isChecked=*/ true);
+ mFragment.onSwitchChanged(mMockSwitch, /* isChecked= */ true);
verify(mOptimizePreference).setEnabled(true);
verify(mUnrestrictedPreference).setEnabled(true);
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImplTest.java b/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImplTest.java
index a0b449a..0131330 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImplTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImplTest.java
@@ -46,8 +46,8 @@
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
private Context mContext;
- @Mock
- private PackageManager mPackageManager;
+
+ @Mock private PackageManager mPackageManager;
private PowerUsageFeatureProviderImpl mPowerFeatureProvider;
@Before
@@ -117,16 +117,18 @@
@Test
public void testIsSmartBatterySupported_smartBatterySupported_returnTrue() {
- when(mContext.getResources().getBoolean(
- com.android.internal.R.bool.config_smart_battery_available)).thenReturn(true);
+ when(mContext.getResources()
+ .getBoolean(com.android.internal.R.bool.config_smart_battery_available))
+ .thenReturn(true);
assertThat(mPowerFeatureProvider.isSmartBatterySupported()).isTrue();
}
@Test
public void testIsSmartBatterySupported_smartBatteryNotSupported_returnFalse() {
- when(mContext.getResources().getBoolean(
- com.android.internal.R.bool.config_smart_battery_available)).thenReturn(false);
+ when(mContext.getResources()
+ .getBoolean(com.android.internal.R.bool.config_smart_battery_available))
+ .thenReturn(false);
assertThat(mPowerFeatureProvider.isSmartBatterySupported()).isFalse();
}
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageTimeControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageTimeControllerTest.java
index 2449040..22d4ba3 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageTimeControllerTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageTimeControllerTest.java
@@ -46,12 +46,9 @@
private Context mContext;
private PowerUsageTimeController mPowerUsageTimeController;
- @Mock
- private PreferenceCategory mPowerUsageTimeCategory;
- @Mock
- private PowerUsageTimePreference mScreenTimePreference;
- @Mock
- private PowerUsageTimePreference mBackgroundTimePreference;
+ @Mock private PreferenceCategory mPowerUsageTimeCategory;
+ @Mock private PowerUsageTimePreference mScreenTimePreference;
+ @Mock private PowerUsageTimePreference mBackgroundTimePreference;
@Before
public void setUp() {
@@ -67,18 +64,24 @@
@Test
public void handleScreenTimeUpdated_noInfo_prefInvisible() {
- mPowerUsageTimeController.handleScreenTimeUpdated(/*slotTime=*/ null,
- /*screenOnTimeInMs=*/ 0, /*backgroundTimeInMs=*/ 0,
- /*anomalyHintPrefKey=*/ null, /*anomalyHintText=*/ null);
+ mPowerUsageTimeController.handleScreenTimeUpdated(
+ /* slotTime= */ null,
+ /* screenOnTimeInMs= */ 0,
+ /* backgroundTimeInMs= */ 0,
+ /* anomalyHintPrefKey= */ null,
+ /* anomalyHintText= */ null);
verifyAllPreferencesVisible(false);
}
@Test
public void handleScreenTimeUpdated_onlySlotTime_prefInvisible() {
- mPowerUsageTimeController.handleScreenTimeUpdated(SLOT_TIME,
- /*screenOnTimeInMs=*/ 0, /*backgroundTimeInMs=*/ 0,
- /*anomalyHintPrefKey=*/ null, /*anomalyHintText=*/ null);
+ mPowerUsageTimeController.handleScreenTimeUpdated(
+ SLOT_TIME,
+ /* screenOnTimeInMs= */ 0,
+ /* backgroundTimeInMs= */ 0,
+ /* anomalyHintPrefKey= */ null,
+ /* anomalyHintText= */ null);
verifyAllPreferencesVisible(false);
}
@@ -88,9 +91,12 @@
final long screenOnTimeAMinute = 60000;
final long backgroundTimeZero = 0;
- mPowerUsageTimeController.handleScreenTimeUpdated(SLOT_TIME,
- screenOnTimeAMinute, backgroundTimeZero,
- /*anomalyHintPrefKey=*/ null, /*anomalyHintText=*/ null);
+ mPowerUsageTimeController.handleScreenTimeUpdated(
+ SLOT_TIME,
+ screenOnTimeAMinute,
+ backgroundTimeZero,
+ /* anomalyHintPrefKey= */ null,
+ /* anomalyHintText= */ null);
verifyOnePreferenceInvisible(mBackgroundTimePreference);
verify(mScreenTimePreference).setTimeTitle("Screen time");
@@ -103,9 +109,12 @@
final long screenOnTimeZero = 0;
final long backgroundTimeTwoMinutes = 120000;
- mPowerUsageTimeController.handleScreenTimeUpdated(SLOT_TIME,
- screenOnTimeZero, backgroundTimeTwoMinutes,
- /*anomalyHintPrefKey=*/ null, /*anomalyHintText=*/ null);
+ mPowerUsageTimeController.handleScreenTimeUpdated(
+ SLOT_TIME,
+ screenOnTimeZero,
+ backgroundTimeTwoMinutes,
+ /* anomalyHintPrefKey= */ null,
+ /* anomalyHintText= */ null);
verifyOnePreferenceInvisible(mScreenTimePreference);
verify(mBackgroundTimePreference).setTimeTitle("Background time");
@@ -118,9 +127,12 @@
final long screenOnTimeAMinute = 60000;
final long backgroundTimeTwoMinutes = 120000;
- mPowerUsageTimeController.handleScreenTimeUpdated(SLOT_TIME,
- screenOnTimeAMinute, backgroundTimeTwoMinutes,
- /*anomalyHintPrefKey=*/ null, /*anomalyHintText=*/ null);
+ mPowerUsageTimeController.handleScreenTimeUpdated(
+ SLOT_TIME,
+ screenOnTimeAMinute,
+ backgroundTimeTwoMinutes,
+ /* anomalyHintPrefKey= */ null,
+ /* anomalyHintText= */ null);
verifyAllPreferencesVisible(true);
verify(mScreenTimePreference).setTimeTitle("Screen time");
@@ -137,9 +149,12 @@
final long backgroundTimeTwoMinutes = 120000;
final long screenOnTimeAMinute = 60000;
- mPowerUsageTimeController.handleScreenTimeUpdated(/*slotTime=*/ null,
- screenOnTimeAMinute, backgroundTimeTwoMinutes,
- /*anomalyHintPrefKey=*/ null, /*anomalyHintText=*/ null);
+ mPowerUsageTimeController.handleScreenTimeUpdated(
+ /* slotTime= */ null,
+ screenOnTimeAMinute,
+ backgroundTimeTwoMinutes,
+ /* anomalyHintPrefKey= */ null,
+ /* anomalyHintText= */ null);
verifyAllPreferencesVisible(true);
verify(mPowerUsageTimeCategory).setTitle("App usage since last full charge");
@@ -150,9 +165,12 @@
final long screenOnTimeAMinute = 60000;
final long backgroundTimeLessThanAMinute = 59999;
- mPowerUsageTimeController.handleScreenTimeUpdated(SLOT_TIME,
- screenOnTimeAMinute, backgroundTimeLessThanAMinute,
- /*anomalyHintPrefKey=*/ null, /*anomalyHintText=*/ null);
+ mPowerUsageTimeController.handleScreenTimeUpdated(
+ SLOT_TIME,
+ screenOnTimeAMinute,
+ backgroundTimeLessThanAMinute,
+ /* anomalyHintPrefKey= */ null,
+ /* anomalyHintText= */ null);
verifyAllPreferencesVisible(true);
verify(mScreenTimePreference).setTimeSummary("1 min");
@@ -164,9 +182,12 @@
final long screenOnTimeLessThanAMinute = 59999;
final long backgroundTimeTwoMinutes = 120000;
- mPowerUsageTimeController.handleScreenTimeUpdated(SLOT_TIME,
- screenOnTimeLessThanAMinute, backgroundTimeTwoMinutes,
- /*anomalyHintPrefKey=*/ null, /*anomalyHintText=*/ null);
+ mPowerUsageTimeController.handleScreenTimeUpdated(
+ SLOT_TIME,
+ screenOnTimeLessThanAMinute,
+ backgroundTimeTwoMinutes,
+ /* anomalyHintPrefKey= */ null,
+ /* anomalyHintText= */ null);
verifyAllPreferencesVisible(true);
verify(mScreenTimePreference).setTimeSummary("Less than a min");
@@ -178,9 +199,12 @@
final long screenOnTimeLessThanAMinute = 59999;
final long backgroundTimeLessThanAMinute = 59999;
- mPowerUsageTimeController.handleScreenTimeUpdated(SLOT_TIME,
- screenOnTimeLessThanAMinute, backgroundTimeLessThanAMinute,
- /*anomalyHintPrefKey=*/ null, /*anomalyHintText=*/ null);
+ mPowerUsageTimeController.handleScreenTimeUpdated(
+ SLOT_TIME,
+ screenOnTimeLessThanAMinute,
+ backgroundTimeLessThanAMinute,
+ /* anomalyHintPrefKey= */ null,
+ /* anomalyHintText= */ null);
verifyAllPreferencesVisible(true);
verify(mScreenTimePreference).setTimeSummary("Less than a min");
@@ -192,9 +216,12 @@
final long screenOnTimeAMinute = 60000;
final long backgroundTimeTwoMinutes = 120000;
- mPowerUsageTimeController.handleScreenTimeUpdated(SLOT_TIME,
- screenOnTimeAMinute, backgroundTimeTwoMinutes,
- KEY_SCREEN_ON_TIME_PREF, TEST_ANOMALY_HINT_TEXT);
+ mPowerUsageTimeController.handleScreenTimeUpdated(
+ SLOT_TIME,
+ screenOnTimeAMinute,
+ backgroundTimeTwoMinutes,
+ KEY_SCREEN_ON_TIME_PREF,
+ TEST_ANOMALY_HINT_TEXT);
verifyAllPreferencesVisible(true);
verify(mScreenTimePreference).setAnomalyHint(TEST_ANOMALY_HINT_TEXT);
@@ -206,9 +233,12 @@
final long screenOnTimeAMinute = 60000;
final long backgroundTimeTwoMinutes = 120000;
- mPowerUsageTimeController.handleScreenTimeUpdated(SLOT_TIME,
- screenOnTimeAMinute, backgroundTimeTwoMinutes,
- KEY_BACKGROUND_TIME_PREF, TEST_ANOMALY_HINT_TEXT);
+ mPowerUsageTimeController.handleScreenTimeUpdated(
+ SLOT_TIME,
+ screenOnTimeAMinute,
+ backgroundTimeTwoMinutes,
+ KEY_BACKGROUND_TIME_PREF,
+ TEST_ANOMALY_HINT_TEXT);
verifyAllPreferencesVisible(true);
verify(mScreenTimePreference, never()).setAnomalyHint(anyString());
@@ -220,9 +250,12 @@
final long screenOnTimeZero = 0;
final long backgroundTimeTwoMinutes = 120000;
- mPowerUsageTimeController.handleScreenTimeUpdated(SLOT_TIME,
- screenOnTimeZero, backgroundTimeTwoMinutes,
- KEY_SCREEN_ON_TIME_PREF, TEST_ANOMALY_HINT_TEXT);
+ mPowerUsageTimeController.handleScreenTimeUpdated(
+ SLOT_TIME,
+ screenOnTimeZero,
+ backgroundTimeTwoMinutes,
+ KEY_SCREEN_ON_TIME_PREF,
+ TEST_ANOMALY_HINT_TEXT);
verifyAllPreferencesVisible(true);
verify(mScreenTimePreference).setTimeSummary("Less than a min");
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/RestrictAppPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/RestrictAppPreferenceControllerTest.java
index 0321483..64efb6a 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/RestrictAppPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/RestrictAppPreferenceControllerTest.java
@@ -33,7 +33,6 @@
import android.content.Intent;
import android.os.UserHandle;
import android.os.UserManager;
-import android.util.Pair;
import androidx.preference.Preference;
import androidx.preference.PreferenceManager;
@@ -65,12 +64,9 @@
private static final String RESTRICTED_PACKAGE_NAME = "com.android.restricted.package";
private static final int OTHER_USER_UID = UserHandle.PER_USER_RANGE + RESTRICTED_UID;
- @Mock
- private AppOpsManager mAppOpsManager;
- @Mock
- private InstrumentedPreferenceFragment mFragment;
- @Mock
- private UserManager mUserManager;
+ @Mock private AppOpsManager mAppOpsManager;
+ @Mock private InstrumentedPreferenceFragment mFragment;
+ @Mock private UserManager mUserManager;
private AppOpsManager.PackageOps mRestrictedPackageOps;
private AppOpsManager.PackageOps mAllowedPackageOps;
@@ -84,19 +80,25 @@
public void setUp() {
MockitoAnnotations.initMocks(this);
final List<AppOpsManager.OpEntry> allowOps = new ArrayList<>();
- allowOps.add(new AppOpsManager.OpEntry(
- AppOpsManager.OP_RUN_ANY_IN_BACKGROUND, AppOpsManager.MODE_ALLOWED,
- Collections.emptyMap()));
+ allowOps.add(
+ new AppOpsManager.OpEntry(
+ AppOpsManager.OP_RUN_ANY_IN_BACKGROUND,
+ AppOpsManager.MODE_ALLOWED,
+ Collections.emptyMap()));
final List<AppOpsManager.OpEntry> restrictedOps = new ArrayList<>();
- restrictedOps.add(new AppOpsManager.OpEntry(
- AppOpsManager.OP_RUN_ANY_IN_BACKGROUND, AppOpsManager.MODE_IGNORED,
- Collections.emptyMap()));
- mAllowedPackageOps = new AppOpsManager.PackageOps(
- ALLOWED_PACKAGE_NAME, ALLOWED_UID, allowOps);
- mRestrictedPackageOps = new AppOpsManager.PackageOps(
- RESTRICTED_PACKAGE_NAME, RESTRICTED_UID, restrictedOps);
- mOtherUserPackageOps = new AppOpsManager.PackageOps(
- RESTRICTED_PACKAGE_NAME, OTHER_USER_UID, restrictedOps);
+ restrictedOps.add(
+ new AppOpsManager.OpEntry(
+ AppOpsManager.OP_RUN_ANY_IN_BACKGROUND,
+ AppOpsManager.MODE_IGNORED,
+ Collections.emptyMap()));
+ mAllowedPackageOps =
+ new AppOpsManager.PackageOps(ALLOWED_PACKAGE_NAME, ALLOWED_UID, allowOps);
+ mRestrictedPackageOps =
+ new AppOpsManager.PackageOps(
+ RESTRICTED_PACKAGE_NAME, RESTRICTED_UID, restrictedOps);
+ mOtherUserPackageOps =
+ new AppOpsManager.PackageOps(
+ RESTRICTED_PACKAGE_NAME, OTHER_USER_UID, restrictedOps);
mContext = spy(ApplicationProvider.getApplicationContext());
doReturn(mAppOpsManager).when(mContext).getSystemService(Context.APP_OPS_SERVICE);
@@ -109,8 +111,8 @@
mPreferenceScreen = spy(new PreferenceScreen(mContext, null));
when(mPreferenceScreen.getPreferenceManager()).thenReturn(mock(PreferenceManager.class));
when(mPreferenceScreen.getContext()).thenReturn(mContext);
- when(mPreferenceScreen.findPreference(
- RestrictAppPreferenceController.KEY_RESTRICT_APP)).thenReturn(mPreference);
+ when(mPreferenceScreen.findPreference(RestrictAppPreferenceController.KEY_RESTRICT_APP))
+ .thenReturn(mPreference);
final List<UserHandle> userHandles = new ArrayList<>();
userHandles.add(new UserHandle(0));
@@ -122,8 +124,8 @@
mPackageOpsList.add(mRestrictedPackageOps);
doReturn(mPackageOpsList).when(mAppOpsManager).getPackagesForOps(any(int[].class));
- final RestrictAppPreferenceController controller = new RestrictAppPreferenceController(
- mFragment);
+ final RestrictAppPreferenceController controller =
+ new RestrictAppPreferenceController(mFragment);
controller.displayPreference(mPreferenceScreen);
controller.updateState(mPreference);
@@ -138,8 +140,8 @@
mPackageOpsList.add(mOtherUserPackageOps);
doReturn(mPackageOpsList).when(mAppOpsManager).getPackagesForOps(any(int[].class));
- final RestrictAppPreferenceController controller = new RestrictAppPreferenceController(
- mFragment);
+ final RestrictAppPreferenceController controller =
+ new RestrictAppPreferenceController(mFragment);
controller.displayPreference(mPreferenceScreen);
controller.updateState(mPreference);
@@ -154,17 +156,18 @@
mPackageOpsList.add(mOtherUserPackageOps);
doReturn(mPackageOpsList).when(mAppOpsManager).getPackagesForOps(any(int[].class));
- final RestrictAppPreferenceController controller = new RestrictAppPreferenceController(
- mFragment);
+ final RestrictAppPreferenceController controller =
+ new RestrictAppPreferenceController(mFragment);
controller.displayPreference(mPreferenceScreen);
controller.updateState(mPreference);
assertThat(mPreference.getSummary()).isEqualTo("Limiting battery usage for 1 app");
- assertThat(controller.mAppInfos).containsExactly(
- new AppInfo.Builder()
- .setUid(RESTRICTED_UID)
- .setPackageName(RESTRICTED_PACKAGE_NAME)
- .build());
+ assertThat(controller.mAppInfos)
+ .containsExactly(
+ new AppInfo.Builder()
+ .setUid(RESTRICTED_UID)
+ .setPackageName(RESTRICTED_PACKAGE_NAME)
+ .build());
}
@Test
@@ -172,8 +175,8 @@
mPackageOpsList.add(mAllowedPackageOps);
doReturn(mPackageOpsList).when(mAppOpsManager).getPackagesForOps(any(int[].class));
- final RestrictAppPreferenceController controller = new RestrictAppPreferenceController(
- mFragment);
+ final RestrictAppPreferenceController controller =
+ new RestrictAppPreferenceController(mFragment);
controller.displayPreference(mPreferenceScreen);
controller.updateState(mPreference);
@@ -185,8 +188,8 @@
public void handlePreferenceTreeClick_startFragment() {
final ArgumentCaptor<Intent> intent = ArgumentCaptor.forClass(Intent.class);
- final RestrictAppPreferenceController controller = new RestrictAppPreferenceController(
- mFragment);
+ final RestrictAppPreferenceController controller =
+ new RestrictAppPreferenceController(mFragment);
controller.handlePreferenceTreeClick(mPreference);
verify(mContext).startActivity(intent.capture());
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/RestrictedAppDetailsTest.java b/tests/robotests/src/com/android/settings/fuelgauge/RestrictedAppDetailsTest.java
index 2991e78..54b8808 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/RestrictedAppDetailsTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/RestrictedAppDetailsTest.java
@@ -72,17 +72,11 @@
private static final int UID = UserHandle.getUid(USER_ID, 234);
private static final String APP_NAME = "app";
-
- @Mock
- private PackageManager mPackageManager;
- @Mock
- private ApplicationInfo mApplicationInfo;
- @Mock
- private IconDrawableFactory mIconDrawableFactory;
- @Mock
- private InstrumentedPreferenceFragment mFragment;
- @Mock
- private BatteryDatabaseManager mBatteryDatabaseManager;
+ @Mock private PackageManager mPackageManager;
+ @Mock private ApplicationInfo mApplicationInfo;
+ @Mock private IconDrawableFactory mIconDrawableFactory;
+ @Mock private InstrumentedPreferenceFragment mFragment;
+ @Mock private BatteryDatabaseManager mBatteryDatabaseManager;
private PreferenceManager mPreferenceManager;
private RestrictedAppDetails mRestrictedAppDetails;
private Context mContext;
@@ -96,10 +90,7 @@
mContext = spy(RuntimeEnvironment.application);
mRestrictedAppDetails = spy(new RestrictedAppDetails());
- mAppInfo = new AppInfo.Builder()
- .setPackageName(PACKAGE_NAME)
- .setUid(UID)
- .build();
+ mAppInfo = new AppInfo.Builder().setPackageName(PACKAGE_NAME).setUid(UID).build();
mPreferenceManager = new PreferenceManager(mContext);
@@ -113,8 +104,9 @@
mRestrictedAppDetails.mRestrictedAppListGroup = spy(new PreferenceCategory(mContext));
mRestrictedAppDetails.mBatteryUtils = spy(new BatteryUtils(mContext));
mRestrictedAppDetails.mBatteryDatabaseManager = mBatteryDatabaseManager;
- doReturn(mPreferenceManager).when(
- mRestrictedAppDetails.mRestrictedAppListGroup).getPreferenceManager();
+ doReturn(mPreferenceManager)
+ .when(mRestrictedAppDetails.mRestrictedAppListGroup)
+ .getPreferenceManager();
mCheckBoxPreference = new CheckBoxPreference(mContext);
mCheckBoxPreference.setKey(mRestrictedAppDetails.getKeyFromAppInfo(mAppInfo));
@@ -122,14 +114,17 @@
@Test
public void refreshUi_displayPreference() throws Exception {
- doReturn(mApplicationInfo).when(mPackageManager)
+ doReturn(mApplicationInfo)
+ .when(mPackageManager)
.getApplicationInfoAsUser(PACKAGE_NAME, 0, USER_ID);
doReturn(APP_NAME).when(mPackageManager).getApplicationLabel(mApplicationInfo);
- doReturn(true).when(mRestrictedAppDetails.mBatteryUtils).isForceAppStandbyEnabled(UID,
- PACKAGE_NAME);
+ doReturn(true)
+ .when(mRestrictedAppDetails.mBatteryUtils)
+ .isForceAppStandbyEnabled(UID, PACKAGE_NAME);
final SparseLongArray timestampArray = new SparseLongArray();
timestampArray.put(UID, System.currentTimeMillis() - TimeUnit.HOURS.toMillis(5));
- doReturn(timestampArray).when(mBatteryDatabaseManager)
+ doReturn(timestampArray)
+ .when(mBatteryDatabaseManager)
.queryActionTime(AnomalyDatabaseHelper.ActionType.RESTRICTION);
mRestrictedAppDetails.refreshUi();
@@ -145,30 +140,32 @@
@Test
public void startRestrictedAppDetails_startWithCorrectData() {
final ArgumentCaptor<Intent> captor = ArgumentCaptor.forClass(Intent.class);
- doAnswer(invocation -> {
- // Get the intent in which it has the app info bundle
- mIntent = captor.getValue();
- return true;
- }).when(mContext).startActivity(captor.capture());
+ doAnswer(
+ invocation -> {
+ // Get the intent in which it has the app info bundle
+ mIntent = captor.getValue();
+ return true;
+ })
+ .when(mContext)
+ .startActivity(captor.capture());
- RestrictedAppDetails.startRestrictedAppDetails(mFragment,
- mRestrictedAppDetails.mAppInfos);
+ RestrictedAppDetails.startRestrictedAppDetails(mFragment, mRestrictedAppDetails.mAppInfos);
- final Bundle bundle = mIntent.getBundleExtra(
- SettingsActivity.EXTRA_SHOW_FRAGMENT_ARGUMENTS);
+ final Bundle bundle =
+ mIntent.getBundleExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_ARGUMENTS);
// Verify the bundle has the correct info
- final List<AppInfo> appInfos = bundle.getParcelableArrayList(
- RestrictedAppDetails.EXTRA_APP_INFO_LIST);
+ final List<AppInfo> appInfos =
+ bundle.getParcelableArrayList(RestrictedAppDetails.EXTRA_APP_INFO_LIST);
assertThat(appInfos).containsExactly(mAppInfo);
}
@Test
public void createDialogFragment_toRestrict_createRestrictDialog() {
- final BatteryTipDialogFragment dialogFragment = mRestrictedAppDetails.createDialogFragment(
- mAppInfo, true);
+ final BatteryTipDialogFragment dialogFragment =
+ mRestrictedAppDetails.createDialogFragment(mAppInfo, true);
- FragmentController.setupFragment(dialogFragment, FragmentActivity.class,
- 0 /* containerViewId */, null /* bundle */);
+ FragmentController.setupFragment(
+ dialogFragment, FragmentActivity.class, 0 /* containerViewId */, null /* bundle */);
final AlertDialog dialog = ShadowAlertDialogCompat.getLatestAlertDialog();
ShadowAlertDialogCompat shadowDialog = ShadowAlertDialogCompat.shadowOf(dialog);
@@ -177,11 +174,11 @@
@Test
public void createDialogFragment_toUnrestrict_createUnrestrictDialog() {
- final BatteryTipDialogFragment dialogFragment = mRestrictedAppDetails.createDialogFragment(
- mAppInfo, false);
+ final BatteryTipDialogFragment dialogFragment =
+ mRestrictedAppDetails.createDialogFragment(mAppInfo, false);
- FragmentController.setupFragment(dialogFragment, FragmentActivity.class,
- 0 /* containerViewId */, null /* bundle */);
+ FragmentController.setupFragment(
+ dialogFragment, FragmentActivity.class, 0 /* containerViewId */, null /* bundle */);
final AlertDialog dialog = ShadowAlertDialogCompat.getLatestAlertDialog();
ShadowAlertDialogCompat shadowDialog = ShadowAlertDialogCompat.shadowOf(dialog);
@@ -190,8 +187,8 @@
@Test
public void onBatteryTipHandled_restrict_setChecked() {
- final RestrictAppTip restrictAppTip = new RestrictAppTip(BatteryTip.StateType.NEW,
- mAppInfo);
+ final RestrictAppTip restrictAppTip =
+ new RestrictAppTip(BatteryTip.StateType.NEW, mAppInfo);
mRestrictedAppDetails.mRestrictedAppListGroup.addPreference(mCheckBoxPreference);
mRestrictedAppDetails.onBatteryTipHandled(restrictAppTip);
@@ -201,8 +198,8 @@
@Test
public void onBatteryTipHandled_unrestrict_setUnchecked() {
- final UnrestrictAppTip unrestrictAppTip = new UnrestrictAppTip(BatteryTip.StateType.NEW,
- mAppInfo);
+ final UnrestrictAppTip unrestrictAppTip =
+ new UnrestrictAppTip(BatteryTip.StateType.NEW, mAppInfo);
mRestrictedAppDetails.mRestrictedAppListGroup.addPreference(mCheckBoxPreference);
mRestrictedAppDetails.onBatteryTipHandled(unrestrictAppTip);
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/SmartBatteryPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/SmartBatteryPreferenceControllerTest.java
index 6691bd5..b03602d 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/SmartBatteryPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/SmartBatteryPreferenceControllerTest.java
@@ -54,7 +54,8 @@
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
- doReturn(mock(DevicePolicyManager.class)).when(mContext)
+ doReturn(mock(DevicePolicyManager.class))
+ .when(mContext)
.getSystemService(Context.DEVICE_POLICY_SERVICE);
mFeatureFactory = FakeFeatureFactory.setupForTest();
@@ -99,26 +100,26 @@
public void testGetAvailabilityStatus_smartBatterySupported_returnAvailable() {
doReturn(true).when(mFeatureFactory.powerUsageFeatureProvider).isSmartBatterySupported();
- assertThat(mController.getAvailabilityStatus()).isEqualTo(
- BasePreferenceController.AVAILABLE);
+ assertThat(mController.getAvailabilityStatus())
+ .isEqualTo(BasePreferenceController.AVAILABLE);
}
@Test
public void testGetAvailabilityStatus_smartBatteryUnSupported_returnDisabled() {
doReturn(false).when(mFeatureFactory.powerUsageFeatureProvider).isSmartBatterySupported();
- assertThat(mController.getAvailabilityStatus()).isEqualTo(
- BasePreferenceController.UNSUPPORTED_ON_DEVICE);
+ assertThat(mController.getAvailabilityStatus())
+ .isEqualTo(BasePreferenceController.UNSUPPORTED_ON_DEVICE);
}
private void putSmartBatteryValue(int value) {
- Settings.Global.putInt(mContentResolver,
- Settings.Global.ADAPTIVE_BATTERY_MANAGEMENT_ENABLED, value);
+ Settings.Global.putInt(
+ mContentResolver, Settings.Global.ADAPTIVE_BATTERY_MANAGEMENT_ENABLED, value);
}
private int getSmartBatteryValue() {
- return Settings.Global.getInt(mContentResolver,
- Settings.Global.ADAPTIVE_BATTERY_MANAGEMENT_ENABLED, ON);
+ return Settings.Global.getInt(
+ mContentResolver, Settings.Global.ADAPTIVE_BATTERY_MANAGEMENT_ENABLED, ON);
}
@Test
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/TopLevelBatteryPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/TopLevelBatteryPreferenceControllerTest.java
index 7a7a384..3435987 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/TopLevelBatteryPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/TopLevelBatteryPreferenceControllerTest.java
@@ -50,12 +50,9 @@
private TopLevelBatteryPreferenceController mController;
private BatterySettingsFeatureProvider mBatterySettingsFeatureProvider;
- @Mock
- private UsbPort mUsbPort;
- @Mock
- private UsbManager mUsbManager;
- @Mock
- private UsbPortStatus mUsbPortStatus;
+ @Mock private UsbPort mUsbPort;
+ @Mock private UsbManager mUsbManager;
+ @Mock private UsbPortStatus mUsbPortStatus;
@Before
public void setUp() {
@@ -125,8 +122,7 @@
info.discharging = false;
info.chargeLabel = "5% - charging";
- assertThat(mController.getDashboardLabel(mContext, info, true))
- .isEqualTo(info.chargeLabel);
+ assertThat(mController.getDashboardLabel(mContext, info, true)).isEqualTo(info.chargeLabel);
}
@Test
@@ -136,8 +132,9 @@
BatteryInfo info = new BatteryInfo();
assertThat(mController.getDashboardLabel(mContext, info, true))
- .isEqualTo(mContext.getString(
- com.android.settingslib.R.string.battery_info_status_not_charging));
+ .isEqualTo(
+ mContext.getString(
+ com.android.settingslib.R.string.battery_info_status_not_charging));
}
@Test
@@ -147,8 +144,7 @@
info.batteryStatus = BatteryManager.BATTERY_STATUS_NOT_CHARGING;
info.statusLabel = "expected returned label";
- assertThat(mController.getDashboardLabel(mContext, info, true))
- .isEqualTo(info.statusLabel);
+ assertThat(mController.getDashboardLabel(mContext, info, true)).isEqualTo(info.statusLabel);
}
@Test
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/UnrestrictedPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/UnrestrictedPreferenceControllerTest.java
index 5489196..0c6f7da 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/UnrestrictedPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/UnrestrictedPreferenceControllerTest.java
@@ -88,8 +88,8 @@
public void testUpdateState_isSystemOrDefaultAppAndUnrestrictedStates_prefChecked() {
when(mBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()).thenReturn(false);
when(mBatteryOptimizeUtils.isSystemOrDefaultApp()).thenReturn(true);
- when(mBatteryOptimizeUtils.getAppOptimizationMode()).thenReturn(
- BatteryOptimizeUtils.MODE_UNRESTRICTED);
+ when(mBatteryOptimizeUtils.getAppOptimizationMode())
+ .thenReturn(BatteryOptimizeUtils.MODE_UNRESTRICTED);
mController.updateState(mPreference);
@@ -100,8 +100,8 @@
public void testUpdateState_isSystemOrDefaultApp_prefUnchecked() {
when(mBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()).thenReturn(false);
when(mBatteryOptimizeUtils.isSystemOrDefaultApp()).thenReturn(true);
- when(mBatteryOptimizeUtils.getAppOptimizationMode()).thenReturn(
- BatteryOptimizeUtils.MODE_OPTIMIZED);
+ when(mBatteryOptimizeUtils.getAppOptimizationMode())
+ .thenReturn(BatteryOptimizeUtils.MODE_OPTIMIZED);
mController.updateState(mPreference);
@@ -112,8 +112,8 @@
@Test
public void testUpdateState_isUnrestrictedStates_prefChecked() {
when(mBatteryOptimizeUtils.isOptimizeModeMutable()).thenReturn(true);
- when(mBatteryOptimizeUtils.getAppOptimizationMode()).thenReturn(
- BatteryOptimizeUtils.MODE_UNRESTRICTED);
+ when(mBatteryOptimizeUtils.getAppOptimizationMode())
+ .thenReturn(BatteryOptimizeUtils.MODE_UNRESTRICTED);
mController.updateState(mPreference);
@@ -124,8 +124,8 @@
@Test
public void testUpdateState_prefUnchecked() {
when(mBatteryOptimizeUtils.isOptimizeModeMutable()).thenReturn(true);
- when(mBatteryOptimizeUtils.getAppOptimizationMode()).thenReturn(
- BatteryOptimizeUtils.MODE_OPTIMIZED);
+ when(mBatteryOptimizeUtils.getAppOptimizationMode())
+ .thenReturn(BatteryOptimizeUtils.MODE_OPTIMIZED);
mController.updateState(mPreference);
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batterysaver/BatterySaverButtonPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batterysaver/BatterySaverButtonPreferenceControllerTest.java
index 7398e5c..cdcb12f 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batterysaver/BatterySaverButtonPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batterysaver/BatterySaverButtonPreferenceControllerTest.java
@@ -47,10 +47,8 @@
private Context mContext;
private MainSwitchPreference mPreference;
- @Mock
- private PowerManager mPowerManager;
- @Mock
- private PreferenceScreen mPreferenceScreen;
+ @Mock private PowerManager mPowerManager;
+ @Mock private PreferenceScreen mPreferenceScreen;
@Before
public void setUp() {
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batterysaver/BatterySaverSchedulePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batterysaver/BatterySaverSchedulePreferenceControllerTest.java
index 2bb8f28..cdde8f9 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batterysaver/BatterySaverSchedulePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batterysaver/BatterySaverSchedulePreferenceControllerTest.java
@@ -59,10 +59,12 @@
@Test
public void testPreference_lowPowerLevelZero_percentageMode_summaryNoSchedule() {
- Settings.Global.putInt(mContext.getContentResolver(),
- Settings.Global.LOW_POWER_MODE_TRIGGER_LEVEL, 0);
- Settings.Global.putInt(mContext.getContentResolver(),
- Global.AUTOMATIC_POWER_SAVE_MODE, PowerManager.POWER_SAVE_MODE_TRIGGER_PERCENTAGE);
+ Settings.Global.putInt(
+ mContext.getContentResolver(), Settings.Global.LOW_POWER_MODE_TRIGGER_LEVEL, 0);
+ Settings.Global.putInt(
+ mContext.getContentResolver(),
+ Global.AUTOMATIC_POWER_SAVE_MODE,
+ PowerManager.POWER_SAVE_MODE_TRIGGER_PERCENTAGE);
mController.updateState(mPreference);
@@ -71,10 +73,14 @@
@Test
public void testPreference_lowPowerLevelNonZero_percentageMode_summaryPercentage() {
- Settings.Global.putInt(mContext.getContentResolver(),
- Settings.Global.LOW_POWER_MODE_TRIGGER_LEVEL, TRIGGER_LEVEL);
- Settings.Global.putInt(mContext.getContentResolver(),
- Global.AUTOMATIC_POWER_SAVE_MODE, PowerManager.POWER_SAVE_MODE_TRIGGER_PERCENTAGE);
+ Settings.Global.putInt(
+ mContext.getContentResolver(),
+ Settings.Global.LOW_POWER_MODE_TRIGGER_LEVEL,
+ TRIGGER_LEVEL);
+ Settings.Global.putInt(
+ mContext.getContentResolver(),
+ Global.AUTOMATIC_POWER_SAVE_MODE,
+ PowerManager.POWER_SAVE_MODE_TRIGGER_PERCENTAGE);
mController.updateState(mPreference);
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batterysaver/BatterySaverScheduleSeekBarControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batterysaver/BatterySaverScheduleSeekBarControllerTest.java
index 9de3ada..f224c8a 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batterysaver/BatterySaverScheduleSeekBarControllerTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batterysaver/BatterySaverScheduleSeekBarControllerTest.java
@@ -34,8 +34,7 @@
private Context mContext;
private ContentResolver mResolver;
private BatterySaverScheduleSeekBarController mController;
- @Mock
- private PreferenceScreen mScreen;
+ @Mock private PreferenceScreen mScreen;
@Before
public void setUp() {
@@ -83,7 +82,9 @@
@Test
public void updateSeekBar_routineMode_hasCorrectProperties() {
- Settings.Global.putInt(mResolver, Global.AUTOMATIC_POWER_SAVE_MODE,
+ Settings.Global.putInt(
+ mResolver,
+ Global.AUTOMATIC_POWER_SAVE_MODE,
PowerManager.POWER_SAVE_MODE_TRIGGER_DYNAMIC);
mController.updateSeekBar();
@@ -95,7 +96,9 @@
@Test
public void updateSeekBar_percentageMode_hasCorrectProperties() {
final CharSequence expectedTitle = "10%";
- Settings.Global.putInt(mResolver, Global.AUTOMATIC_POWER_SAVE_MODE,
+ Settings.Global.putInt(
+ mResolver,
+ Global.AUTOMATIC_POWER_SAVE_MODE,
PowerManager.POWER_SAVE_MODE_TRIGGER_PERCENTAGE);
setTriggerLevel(10);
@@ -108,7 +111,9 @@
@Test
public void updateSeekBar_noneMode_hasCorrectProperties() {
- Settings.Global.putInt(mResolver, Global.AUTOMATIC_POWER_SAVE_MODE,
+ Settings.Global.putInt(
+ mResolver,
+ Global.AUTOMATIC_POWER_SAVE_MODE,
PowerManager.POWER_SAVE_MODE_TRIGGER_PERCENTAGE);
setTriggerLevel(0);
@@ -120,7 +125,9 @@
@Test
public void addToScreen_addsToEnd() {
- Settings.Global.putInt(mResolver, Global.AUTOMATIC_POWER_SAVE_MODE,
+ Settings.Global.putInt(
+ mResolver,
+ Global.AUTOMATIC_POWER_SAVE_MODE,
PowerManager.POWER_SAVE_MODE_TRIGGER_PERCENTAGE);
setTriggerLevel(15);
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batterysaver/BatterySaverScheduleSettingsTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batterysaver/BatterySaverScheduleSettingsTest.java
index dc9cac4..2138e64 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batterysaver/BatterySaverScheduleSettingsTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batterysaver/BatterySaverScheduleSettingsTest.java
@@ -1,6 +1,7 @@
package com.android.settings.fuelgauge.batterysaver;
import static com.google.common.truth.Truth.assertThat;
+
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyNoMoreInteractions;
@@ -90,18 +91,25 @@
}
private void setSchedule(int scheduleType, int schedulePercentage) {
- Settings.Global.putInt(mContext.getContentResolver(),
- Settings.Global.AUTOMATIC_POWER_SAVE_MODE, scheduleType);
- Settings.Global.putInt(mContext.getContentResolver(),
- Settings.Global.LOW_POWER_MODE_TRIGGER_LEVEL, schedulePercentage);
+ Settings.Global.putInt(
+ mContext.getContentResolver(),
+ Settings.Global.AUTOMATIC_POWER_SAVE_MODE,
+ scheduleType);
+ Settings.Global.putInt(
+ mContext.getContentResolver(),
+ Settings.Global.LOW_POWER_MODE_TRIGGER_LEVEL,
+ schedulePercentage);
}
private void verifySchedule(String scheduleTypeKey, int schedulePercentage) {
waitAWhile();
- verify(mMetricsFeatureProvider).action(SettingsEnums.FUELGAUGE_BATTERY_SAVER,
- SettingsEnums.FIELD_BATTERY_SAVER_SCHEDULE_TYPE,
- SettingsEnums.FIELD_BATTERY_SAVER_PERCENTAGE_VALUE,
- scheduleTypeKey, schedulePercentage);
+ verify(mMetricsFeatureProvider)
+ .action(
+ SettingsEnums.FUELGAUGE_BATTERY_SAVER,
+ SettingsEnums.FIELD_BATTERY_SAVER_SCHEDULE_TYPE,
+ SettingsEnums.FIELD_BATTERY_SAVER_PERCENTAGE_VALUE,
+ scheduleTypeKey,
+ schedulePercentage);
}
private void waitAWhile() {
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batterysaver/BatterySaverSettingsTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batterysaver/BatterySaverSettingsTest.java
index c858902..84af4e1 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batterysaver/BatterySaverSettingsTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batterysaver/BatterySaverSettingsTest.java
@@ -34,13 +34,13 @@
import org.robolectric.annotation.Config;
@RunWith(RobolectricTestRunner.class)
-@Config(shadows = {
- com.android.settings.testutils.shadow.ShadowFragment.class,
-})
+@Config(
+ shadows = {
+ com.android.settings.testutils.shadow.ShadowFragment.class,
+ })
public class BatterySaverSettingsTest {
BatterySaverSettings mFragment;
- @Mock
- PreferenceScreen mScreen;
+ @Mock PreferenceScreen mScreen;
@Before
public void setUp() {
@@ -50,7 +50,6 @@
doReturn(mScreen).when(mFragment).getPreferenceScreen();
}
-
@Test
public void setupFooter_linkAddedWhenAppropriate() {
doReturn("").when(mFragment).getText(anyInt());
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/AnomalyCleanupJobServiceTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/AnomalyCleanupJobServiceTest.java
index 4c276ba..22c59b0 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/AnomalyCleanupJobServiceTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/AnomalyCleanupJobServiceTest.java
@@ -63,16 +63,15 @@
private Context mContext;
private JobScheduler mJobScheduler;
- @Mock
- private JobParameters mParams;
+ @Mock private JobParameters mParams;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
mContext = spy(RuntimeEnvironment.application);
- mJobScheduler = spy(new JobSchedulerImpl(mContext,
- IJobScheduler.Stub.asInterface(new Binder())));
+ mJobScheduler =
+ spy(new JobSchedulerImpl(mContext, IJobScheduler.Stub.asInterface(new Binder())));
when(mContext.getSystemService(JobScheduler.class)).thenReturn(mJobScheduler);
}
@@ -108,25 +107,31 @@
@Ignore
public void onStartJob_cleanUpDataBefore30days() {
final BatteryDatabaseManager databaseManager = BatteryDatabaseManager.getInstance(mContext);
- final AnomalyCleanupJobService service = spy(Robolectric.setupService(
- AnomalyCleanupJobService.class));
+ final AnomalyCleanupJobService service =
+ spy(Robolectric.setupService(AnomalyCleanupJobService.class));
doNothing().when(service).jobFinished(any(), anyBoolean());
// Insert two records, one is current and the other one is 31 days before
- databaseManager.insertAnomaly(UID, PACKAGE_NAME, ANOMALY_TYPE,
- AnomalyDatabaseHelper.State.NEW, TIMESTAMP_NOW);
- databaseManager.insertAnomaly(UID, PACKAGE_NAME_OLD, ANOMALY_TYPE,
- AnomalyDatabaseHelper.State.NEW, TIMESTAMP_31_DAYS_BEFORE);
+ databaseManager.insertAnomaly(
+ UID, PACKAGE_NAME, ANOMALY_TYPE, AnomalyDatabaseHelper.State.NEW, TIMESTAMP_NOW);
+ databaseManager.insertAnomaly(
+ UID,
+ PACKAGE_NAME_OLD,
+ ANOMALY_TYPE,
+ AnomalyDatabaseHelper.State.NEW,
+ TIMESTAMP_31_DAYS_BEFORE);
service.onStartJob(mParams);
// In database, it only contains the current record
- final List<AppInfo> appInfos = databaseManager.queryAllAnomalies(0,
- AnomalyDatabaseHelper.State.NEW);
- assertThat(appInfos).containsExactly(new AppInfo.Builder()
- .setUid(UID)
- .setPackageName(PACKAGE_NAME)
- .addAnomalyType(ANOMALY_TYPE)
- .build());
+ final List<AppInfo> appInfos =
+ databaseManager.queryAllAnomalies(0, AnomalyDatabaseHelper.State.NEW);
+ assertThat(appInfos)
+ .containsExactly(
+ new AppInfo.Builder()
+ .setUid(UID)
+ .setPackageName(PACKAGE_NAME)
+ .addAnomalyType(ANOMALY_TYPE)
+ .build());
}
}
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/AnomalyConfigJobServiceTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/AnomalyConfigJobServiceTest.java
index 3807be6..345b8a1 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/AnomalyConfigJobServiceTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/AnomalyConfigJobServiceTest.java
@@ -57,8 +57,7 @@
private static final int ANOMALY_CONFIG_VERSION = 1;
private static final String ANOMALY_CONFIG = "X64s";
- @Mock
- private StatsManager mStatsManager;
+ @Mock private StatsManager mStatsManager;
private Context mContext;
private JobScheduler mJobScheduler;
@@ -69,14 +68,16 @@
MockitoAnnotations.initMocks(this);
mContext = spy(RuntimeEnvironment.application);
- mJobScheduler = spy(new JobSchedulerImpl(mContext,
- IJobScheduler.Stub.asInterface(new Binder())));
+ mJobScheduler =
+ spy(new JobSchedulerImpl(mContext, IJobScheduler.Stub.asInterface(new Binder())));
when(mContext.getSystemService(JobScheduler.class)).thenReturn(mJobScheduler);
mJobService = spy(new AnomalyConfigJobService());
- doReturn(application.getSharedPreferences(AnomalyConfigJobService.PREF_DB,
- Context.MODE_PRIVATE)).when(mJobService).getSharedPreferences(anyString(),
- anyInt());
+ doReturn(
+ application.getSharedPreferences(
+ AnomalyConfigJobService.PREF_DB, Context.MODE_PRIVATE))
+ .when(mJobService)
+ .getSharedPreferences(anyString(), anyInt());
doReturn(application.getContentResolver()).when(mJobService).getContentResolver();
}
@@ -105,11 +106,13 @@
@Test
public void checkAnomalyConfig_newConfigExist_removeOldConfig()
- throws StatsManager.StatsUnavailableException{
- Settings.Global.putInt(application.getContentResolver(),
- Settings.Global.ANOMALY_CONFIG_VERSION, ANOMALY_CONFIG_VERSION);
- Settings.Global.putString(application.getContentResolver(), Settings.Global.ANOMALY_CONFIG,
- ANOMALY_CONFIG);
+ throws StatsManager.StatsUnavailableException {
+ Settings.Global.putInt(
+ application.getContentResolver(),
+ Settings.Global.ANOMALY_CONFIG_VERSION,
+ ANOMALY_CONFIG_VERSION);
+ Settings.Global.putString(
+ application.getContentResolver(), Settings.Global.ANOMALY_CONFIG, ANOMALY_CONFIG);
mJobService.checkAnomalyConfig(mStatsManager);
@@ -118,11 +121,13 @@
@Test
public void checkAnomalyConfig_newConfigExist_uploadNewConfig()
- throws StatsManager.StatsUnavailableException{
- Settings.Global.putInt(application.getContentResolver(),
- Settings.Global.ANOMALY_CONFIG_VERSION, ANOMALY_CONFIG_VERSION);
- Settings.Global.putString(application.getContentResolver(), Settings.Global.ANOMALY_CONFIG,
- ANOMALY_CONFIG);
+ throws StatsManager.StatsUnavailableException {
+ Settings.Global.putInt(
+ application.getContentResolver(),
+ Settings.Global.ANOMALY_CONFIG_VERSION,
+ ANOMALY_CONFIG_VERSION);
+ Settings.Global.putString(
+ application.getContentResolver(), Settings.Global.ANOMALY_CONFIG, ANOMALY_CONFIG);
mJobService.checkAnomalyConfig(mStatsManager);
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/AnomalyDetectionJobServiceTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/AnomalyDetectionJobServiceTest.java
index 1c37d31..a67e5d3 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/AnomalyDetectionJobServiceTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/AnomalyDetectionJobServiceTest.java
@@ -86,20 +86,13 @@
"anomaly_type=6,auto_restriction=false";
private static final int ANOMALY_TYPE = 6;
private static final long VERSION_CODE = 15;
- @Mock
- private UserManager mUserManager;
- @Mock
- private BatteryDatabaseManager mBatteryDatabaseManager;
- @Mock
- private BatteryUtils mBatteryUtils;
- @Mock
- private PowerAllowlistBackend mPowerAllowlistBackend;
- @Mock
- private StatsDimensionsValue mStatsDimensionsValue;
- @Mock
- private JobParameters mJobParameters;
- @Mock
- private JobWorkItem mJobWorkItem;
+ @Mock private UserManager mUserManager;
+ @Mock private BatteryDatabaseManager mBatteryDatabaseManager;
+ @Mock private BatteryUtils mBatteryUtils;
+ @Mock private PowerAllowlistBackend mPowerAllowlistBackend;
+ @Mock private StatsDimensionsValue mStatsDimensionsValue;
+ @Mock private JobParameters mJobParameters;
+ @Mock private JobWorkItem mJobWorkItem;
private BatteryTipPolicy mPolicy;
private Bundle mBundle;
@@ -113,8 +106,8 @@
MockitoAnnotations.initMocks(this);
mContext = spy(RuntimeEnvironment.application);
- mJobScheduler = spy(new JobSchedulerImpl(mContext,
- IJobScheduler.Stub.asInterface(new Binder())));
+ mJobScheduler =
+ spy(new JobSchedulerImpl(mContext, IJobScheduler.Stub.asInterface(new Binder())));
when(mContext.getSystemService(JobScheduler.class)).thenReturn(mJobScheduler);
mPolicy = new BatteryTipPolicy(mContext);
@@ -146,17 +139,24 @@
@Test
public void saveAnomalyToDatabase_systemAllowlisted_doNotSave() {
doReturn(UID).when(mAnomalyDetectionJobService).extractUidFromStatsDimensionsValue(any());
- doReturn(true).when(mPowerAllowlistBackend)
+ doReturn(true)
+ .when(mPowerAllowlistBackend)
.isAllowlisted(any(String[].class), any(Integer.class));
- mAnomalyDetectionJobService.saveAnomalyToDatabase(mContext,
- mUserManager, mBatteryDatabaseManager, mBatteryUtils, mPolicy,
- mPowerAllowlistBackend, mContext.getContentResolver(),
+ mAnomalyDetectionJobService.saveAnomalyToDatabase(
+ mContext,
+ mUserManager,
+ mBatteryDatabaseManager,
+ mBatteryUtils,
+ mPolicy,
+ mPowerAllowlistBackend,
+ mContext.getContentResolver(),
mFeatureFactory.powerUsageFeatureProvider,
- mFeatureFactory.metricsFeatureProvider, mBundle);
+ mFeatureFactory.metricsFeatureProvider,
+ mBundle);
- verify(mBatteryDatabaseManager, never()).insertAnomaly(anyInt(), anyString(), anyInt(),
- anyInt(), anyLong());
+ verify(mBatteryDatabaseManager, never())
+ .insertAnomaly(anyInt(), anyString(), anyInt(), anyInt(), anyLong());
}
@Test
@@ -166,53 +166,76 @@
mBundle.putStringArrayList(StatsManager.EXTRA_STATS_BROADCAST_SUBSCRIBER_COOKIES, cookies);
doReturn(SYSTEM_PACKAGE).when(mBatteryUtils).getPackageName(anyInt());
doReturn(false).when(mPowerAllowlistBackend).isSysAllowlisted(SYSTEM_PACKAGE);
- doReturn(Process.FIRST_APPLICATION_UID).when(
- mAnomalyDetectionJobService).extractUidFromStatsDimensionsValue(any());
+ doReturn(Process.FIRST_APPLICATION_UID)
+ .when(mAnomalyDetectionJobService)
+ .extractUidFromStatsDimensionsValue(any());
doReturn(true).when(mBatteryUtils).shouldHideAnomaly(any(), anyInt(), any());
- mAnomalyDetectionJobService.saveAnomalyToDatabase(mContext,
- mUserManager, mBatteryDatabaseManager, mBatteryUtils, mPolicy,
- mPowerAllowlistBackend, mContext.getContentResolver(),
+ mAnomalyDetectionJobService.saveAnomalyToDatabase(
+ mContext,
+ mUserManager,
+ mBatteryDatabaseManager,
+ mBatteryUtils,
+ mPolicy,
+ mPowerAllowlistBackend,
+ mContext.getContentResolver(),
mFeatureFactory.powerUsageFeatureProvider,
- mFeatureFactory.metricsFeatureProvider, mBundle);
+ mFeatureFactory.metricsFeatureProvider,
+ mBundle);
- verify(mBatteryDatabaseManager, never()).insertAnomaly(anyInt(), anyString(), anyInt(),
- anyInt(), anyLong());
- verify(mFeatureFactory.metricsFeatureProvider).action(SettingsEnums.PAGE_UNKNOWN,
- MetricsProto.MetricsEvent.ACTION_ANOMALY_IGNORED,
- SettingsEnums.PAGE_UNKNOWN,
- SYSTEM_PACKAGE + "/" + VERSION_CODE,
- ANOMALY_TYPE);
+ verify(mBatteryDatabaseManager, never())
+ .insertAnomaly(anyInt(), anyString(), anyInt(), anyInt(), anyLong());
+ verify(mFeatureFactory.metricsFeatureProvider)
+ .action(
+ SettingsEnums.PAGE_UNKNOWN,
+ MetricsProto.MetricsEvent.ACTION_ANOMALY_IGNORED,
+ SettingsEnums.PAGE_UNKNOWN,
+ SYSTEM_PACKAGE + "/" + VERSION_CODE,
+ ANOMALY_TYPE);
}
@Test
public void saveAnomalyToDatabase_systemUid_doNotSave() {
- doReturn(Process.SYSTEM_UID).when(
- mAnomalyDetectionJobService).extractUidFromStatsDimensionsValue(any());
+ doReturn(Process.SYSTEM_UID)
+ .when(mAnomalyDetectionJobService)
+ .extractUidFromStatsDimensionsValue(any());
- mAnomalyDetectionJobService.saveAnomalyToDatabase(mContext,
- mUserManager, mBatteryDatabaseManager, mBatteryUtils, mPolicy,
- mPowerAllowlistBackend, mContext.getContentResolver(),
- mFeatureFactory.powerUsageFeatureProvider, mFeatureFactory.metricsFeatureProvider,
+ mAnomalyDetectionJobService.saveAnomalyToDatabase(
+ mContext,
+ mUserManager,
+ mBatteryDatabaseManager,
+ mBatteryUtils,
+ mPolicy,
+ mPowerAllowlistBackend,
+ mContext.getContentResolver(),
+ mFeatureFactory.powerUsageFeatureProvider,
+ mFeatureFactory.metricsFeatureProvider,
mBundle);
- verify(mBatteryDatabaseManager, never()).insertAnomaly(anyInt(), anyString(), anyInt(),
- anyInt(), anyLong());
+ verify(mBatteryDatabaseManager, never())
+ .insertAnomaly(anyInt(), anyString(), anyInt(), anyInt(), anyLong());
}
@Test
public void saveAnomalyToDatabase_uidNull_doNotSave() {
- doReturn(AnomalyDetectionJobService.UID_NULL).when(
- mAnomalyDetectionJobService).extractUidFromStatsDimensionsValue(any());
+ doReturn(AnomalyDetectionJobService.UID_NULL)
+ .when(mAnomalyDetectionJobService)
+ .extractUidFromStatsDimensionsValue(any());
- mAnomalyDetectionJobService.saveAnomalyToDatabase(mContext,
- mUserManager, mBatteryDatabaseManager, mBatteryUtils, mPolicy,
- mPowerAllowlistBackend, mContext.getContentResolver(),
- mFeatureFactory.powerUsageFeatureProvider, mFeatureFactory.metricsFeatureProvider,
+ mAnomalyDetectionJobService.saveAnomalyToDatabase(
+ mContext,
+ mUserManager,
+ mBatteryDatabaseManager,
+ mBatteryUtils,
+ mPolicy,
+ mPowerAllowlistBackend,
+ mContext.getContentResolver(),
+ mFeatureFactory.powerUsageFeatureProvider,
+ mFeatureFactory.metricsFeatureProvider,
mBundle);
- verify(mBatteryDatabaseManager, never()).insertAnomaly(anyInt(), anyString(), anyInt(),
- anyInt(), anyLong());
+ verify(mBatteryDatabaseManager, never())
+ .insertAnomaly(anyInt(), anyString(), anyInt(), anyInt(), anyLong());
}
@Test
@@ -222,22 +245,36 @@
mBundle.putStringArrayList(StatsManager.EXTRA_STATS_BROADCAST_SUBSCRIBER_COOKIES, cookies);
doReturn(SYSTEM_PACKAGE).when(mBatteryUtils).getPackageName(anyInt());
doReturn(false).when(mPowerAllowlistBackend).isSysAllowlisted(SYSTEM_PACKAGE);
- doReturn(Process.FIRST_APPLICATION_UID).when(
- mAnomalyDetectionJobService).extractUidFromStatsDimensionsValue(any());
+ doReturn(Process.FIRST_APPLICATION_UID)
+ .when(mAnomalyDetectionJobService)
+ .extractUidFromStatsDimensionsValue(any());
- mAnomalyDetectionJobService.saveAnomalyToDatabase(mContext,
- mUserManager, mBatteryDatabaseManager, mBatteryUtils, mPolicy,
- mPowerAllowlistBackend, mContext.getContentResolver(),
- mFeatureFactory.powerUsageFeatureProvider, mFeatureFactory.metricsFeatureProvider,
+ mAnomalyDetectionJobService.saveAnomalyToDatabase(
+ mContext,
+ mUserManager,
+ mBatteryDatabaseManager,
+ mBatteryUtils,
+ mPolicy,
+ mPowerAllowlistBackend,
+ mContext.getContentResolver(),
+ mFeatureFactory.powerUsageFeatureProvider,
+ mFeatureFactory.metricsFeatureProvider,
mBundle);
- verify(mBatteryDatabaseManager).insertAnomaly(anyInt(), anyString(), eq(6),
- eq(AnomalyDatabaseHelper.State.AUTO_HANDLED), anyLong());
- verify(mFeatureFactory.metricsFeatureProvider).action(SettingsEnums.PAGE_UNKNOWN,
- MetricsProto.MetricsEvent.ACTION_ANOMALY_TRIGGERED,
- SettingsEnums.PAGE_UNKNOWN,
- SYSTEM_PACKAGE + "/" + VERSION_CODE,
- ANOMALY_TYPE);
+ verify(mBatteryDatabaseManager)
+ .insertAnomaly(
+ anyInt(),
+ anyString(),
+ eq(6),
+ eq(AnomalyDatabaseHelper.State.AUTO_HANDLED),
+ anyLong());
+ verify(mFeatureFactory.metricsFeatureProvider)
+ .action(
+ SettingsEnums.PAGE_UNKNOWN,
+ MetricsProto.MetricsEvent.ACTION_ANOMALY_TRIGGERED,
+ SettingsEnums.PAGE_UNKNOWN,
+ SYSTEM_PACKAGE + "/" + VERSION_CODE,
+ ANOMALY_TYPE);
}
@Test
@@ -247,22 +284,36 @@
mBundle.putStringArrayList(StatsManager.EXTRA_STATS_BROADCAST_SUBSCRIBER_COOKIES, cookies);
doReturn(SYSTEM_PACKAGE).when(mBatteryUtils).getPackageName(anyInt());
doReturn(false).when(mPowerAllowlistBackend).isSysAllowlisted(SYSTEM_PACKAGE);
- doReturn(Process.FIRST_APPLICATION_UID).when(
- mAnomalyDetectionJobService).extractUidFromStatsDimensionsValue(any());
+ doReturn(Process.FIRST_APPLICATION_UID)
+ .when(mAnomalyDetectionJobService)
+ .extractUidFromStatsDimensionsValue(any());
- mAnomalyDetectionJobService.saveAnomalyToDatabase(mContext,
- mUserManager, mBatteryDatabaseManager, mBatteryUtils, mPolicy,
- mPowerAllowlistBackend, mContext.getContentResolver(),
- mFeatureFactory.powerUsageFeatureProvider, mFeatureFactory.metricsFeatureProvider,
+ mAnomalyDetectionJobService.saveAnomalyToDatabase(
+ mContext,
+ mUserManager,
+ mBatteryDatabaseManager,
+ mBatteryUtils,
+ mPolicy,
+ mPowerAllowlistBackend,
+ mContext.getContentResolver(),
+ mFeatureFactory.powerUsageFeatureProvider,
+ mFeatureFactory.metricsFeatureProvider,
mBundle);
- verify(mBatteryDatabaseManager).insertAnomaly(anyInt(), anyString(), eq(6),
- eq(AnomalyDatabaseHelper.State.NEW), anyLong());
- verify(mFeatureFactory.metricsFeatureProvider).action(SettingsEnums.PAGE_UNKNOWN,
- MetricsProto.MetricsEvent.ACTION_ANOMALY_TRIGGERED,
- SettingsEnums.PAGE_UNKNOWN,
- SYSTEM_PACKAGE + "/" + VERSION_CODE,
- ANOMALY_TYPE);
+ verify(mBatteryDatabaseManager)
+ .insertAnomaly(
+ anyInt(),
+ anyString(),
+ eq(6),
+ eq(AnomalyDatabaseHelper.State.NEW),
+ anyLong());
+ verify(mFeatureFactory.metricsFeatureProvider)
+ .action(
+ SettingsEnums.PAGE_UNKNOWN,
+ MetricsProto.MetricsEvent.ACTION_ANOMALY_TRIGGERED,
+ SettingsEnums.PAGE_UNKNOWN,
+ SYSTEM_PACKAGE + "/" + VERSION_CODE,
+ ANOMALY_TYPE);
}
@Test
@@ -280,8 +331,8 @@
statsDimensionsValues.add(intValue);
when(tupleValue.getTupleValueList()).thenReturn(statsDimensionsValues);
- assertThat(mAnomalyDetectionJobService.extractUidFromStatsDimensionsValue(
- tupleValue)).isEqualTo(UID);
+ assertThat(mAnomalyDetectionJobService.extractUidFromStatsDimensionsValue(tupleValue))
+ .isEqualTo(UID);
}
@Test
@@ -292,8 +343,8 @@
when(floatValue.getField()).thenReturn(AnomalyDetectionJobService.STATSD_UID_FILED);
when(floatValue.getFloatValue()).thenReturn(0f);
- assertThat(mAnomalyDetectionJobService.extractUidFromStatsDimensionsValue(
- floatValue)).isEqualTo(AnomalyDetectionJobService.UID_NULL);
+ assertThat(mAnomalyDetectionJobService.extractUidFromStatsDimensionsValue(floatValue))
+ .isEqualTo(AnomalyDetectionJobService.UID_NULL);
}
@Test
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/BatteryTipDialogFragmentTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/BatteryTipDialogFragmentTest.java
index 58bc061..f080574 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/BatteryTipDialogFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/BatteryTipDialogFragmentTest.java
@@ -18,7 +18,6 @@
import static com.google.common.truth.Truth.assertThat;
-import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.spy;
import android.content.Context;
@@ -39,7 +38,6 @@
import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settings.testutils.shadow.ShadowAlertDialogCompat;
import com.android.settings.testutils.shadow.ShadowUtils;
-import com.android.settingslib.fuelgauge.EstimateKt;
import org.junit.After;
import org.junit.Before;
@@ -98,20 +96,21 @@
mPackageManager.setApplicationIcon(PACKAGE_NAME, new ColorDrawable());
List<AppInfo> highUsageTips = new ArrayList<>();
- mAppInfo = new AppInfo.Builder()
- .setScreenOnTimeMs(SCREEN_TIME_MS)
- .setPackageName(PACKAGE_NAME)
- .build();
+ mAppInfo =
+ new AppInfo.Builder()
+ .setScreenOnTimeMs(SCREEN_TIME_MS)
+ .setPackageName(PACKAGE_NAME)
+ .build();
highUsageTips.add(mAppInfo);
mHighUsageTip = new HighUsageTip(SCREEN_TIME_MS, highUsageTips);
final List<AppInfo> restrictApps = new ArrayList<>();
restrictApps.add(mAppInfo);
- mRestrictedOneAppTip = new RestrictAppTip(BatteryTip.StateType.NEW,
- new ArrayList<>(restrictApps));
+ mRestrictedOneAppTip =
+ new RestrictAppTip(BatteryTip.StateType.NEW, new ArrayList<>(restrictApps));
restrictApps.add(mAppInfo);
- mRestrictTwoAppsTip = new RestrictAppTip(BatteryTip.StateType.NEW,
- new ArrayList<>(restrictApps));
+ mRestrictTwoAppsTip =
+ new RestrictAppTip(BatteryTip.StateType.NEW, new ArrayList<>(restrictApps));
mUnrestrictAppTip = new UnrestrictAppTip(BatteryTip.StateType.NEW, mAppInfo);
mDefenderTip = new BatteryDefenderTip(BatteryTip.StateType.NEW, false /* isPluggedIn */);
@@ -128,24 +127,30 @@
mDialogFragment = BatteryTipDialogFragment.newInstance(mHighUsageTip, METRICS_KEY);
- FragmentController.setupFragment(mDialogFragment, FragmentActivity.class,
- 0 /* containerViewId */, null /* bundle */);
+ FragmentController.setupFragment(
+ mDialogFragment,
+ FragmentActivity.class,
+ 0 /* containerViewId */,
+ null /* bundle */);
Robolectric.getForegroundThreadScheduler().advanceToLastPostedRunnable();
final AlertDialog dialog = ShadowAlertDialogCompat.getLatestAlertDialog();
ShadowAlertDialogCompat shadowDialog = ShadowAlertDialogCompat.shadowOf(dialog);
- assertThat(shadowDialog.getMessage()).isEqualTo(
- mContext.getString(R.string.battery_tip_dialog_message, 1));
+ assertThat(shadowDialog.getMessage())
+ .isEqualTo(mContext.getString(R.string.battery_tip_dialog_message, 1));
}
@Test
public void testOnCreateDialog_restrictOneAppTip_fireRestrictOneAppDialog() {
mDialogFragment = BatteryTipDialogFragment.newInstance(mRestrictedOneAppTip, METRICS_KEY);
- FragmentController.setupFragment(mDialogFragment, FragmentActivity.class,
- 0 /* containerViewId */, null /* bundle */);
+ FragmentController.setupFragment(
+ mDialogFragment,
+ FragmentActivity.class,
+ 0 /* containerViewId */,
+ null /* bundle */);
final AlertDialog dialog = ShadowAlertDialogCompat.getLatestAlertDialog();
ShadowAlertDialogCompat shadowDialog = ShadowAlertDialogCompat.shadowOf(dialog);
@@ -163,9 +168,11 @@
mDialogFragment = BatteryTipDialogFragment.newInstance(mRestrictTwoAppsTip, METRICS_KEY);
-
- FragmentController.setupFragment(mDialogFragment, FragmentActivity.class,
- 0 /* containerViewId */, null /* bundle */);
+ FragmentController.setupFragment(
+ mDialogFragment,
+ FragmentActivity.class,
+ 0 /* containerViewId */,
+ null /* bundle */);
Robolectric.getForegroundThreadScheduler().advanceToLastPostedRunnable();
@@ -189,13 +196,16 @@
for (int i = 0; i < 6; i++) {
appInfos.add(mAppInfo);
}
- final RestrictAppTip restrictSixAppsTip = new RestrictAppTip(BatteryTip.StateType.NEW,
- appInfos);
+ final RestrictAppTip restrictSixAppsTip =
+ new RestrictAppTip(BatteryTip.StateType.NEW, appInfos);
mDialogFragment = BatteryTipDialogFragment.newInstance(restrictSixAppsTip, METRICS_KEY);
- FragmentController.setupFragment(mDialogFragment, FragmentActivity.class,
- 0 /* containerViewId */, null /* bundle */);
+ FragmentController.setupFragment(
+ mDialogFragment,
+ FragmentActivity.class,
+ 0 /* containerViewId */,
+ null /* bundle */);
Robolectric.getForegroundThreadScheduler().advanceToLastPostedRunnable();
@@ -215,8 +225,11 @@
mDialogFragment = BatteryTipDialogFragment.newInstance(mUnrestrictAppTip, METRICS_KEY);
ShadowUtils.setApplicationLabel(PACKAGE_NAME, DISPLAY_NAME);
- FragmentController.setupFragment(mDialogFragment, FragmentActivity.class,
- 0 /* containerViewId */, null /* bundle */);
+ FragmentController.setupFragment(
+ mDialogFragment,
+ FragmentActivity.class,
+ 0 /* containerViewId */,
+ null /* bundle */);
final AlertDialog dialog = ShadowAlertDialogCompat.getLatestAlertDialog();
ShadowAlertDialogCompat shadowDialog = ShadowAlertDialogCompat.shadowOf(dialog);
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/BatteryTipLoaderTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/BatteryTipLoaderTest.java
index e13dcc0..5613c4e 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/BatteryTipLoaderTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/BatteryTipLoaderTest.java
@@ -50,21 +50,20 @@
public class BatteryTipLoaderTest {
private static final int[] TIP_ORDER = {
- BatteryTip.TipType.LOW_BATTERY,
- BatteryTip.TipType.BATTERY_DEFENDER,
- BatteryTip.TipType.DOCK_DEFENDER,
- BatteryTip.TipType.INCOMPATIBLE_CHARGER,
- BatteryTip.TipType.HIGH_DEVICE_USAGE};
+ BatteryTip.TipType.LOW_BATTERY,
+ BatteryTip.TipType.BATTERY_DEFENDER,
+ BatteryTip.TipType.DOCK_DEFENDER,
+ BatteryTip.TipType.INCOMPATIBLE_CHARGER,
+ BatteryTip.TipType.HIGH_DEVICE_USAGE
+ };
+
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
private BatteryUsageStats mBatteryUsageStats;
- @Mock
- private PowerManager mPowerManager;
- @Mock
- private Intent mIntent;
- @Mock
- private BatteryUtils mBatteryUtils;
- @Mock
- private BatteryInfo mBatteryInfo;
+
+ @Mock private PowerManager mPowerManager;
+ @Mock private Intent mIntent;
+ @Mock private BatteryUtils mBatteryUtils;
+ @Mock private BatteryInfo mBatteryInfo;
private Context mContext;
private BatteryTipLoader mBatteryTipLoader;
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/BatteryTipPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/BatteryTipPreferenceControllerTest.java
index 1c1d2cc..eeedccc 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/BatteryTipPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/BatteryTipPreferenceControllerTest.java
@@ -15,8 +15,7 @@
*/
package com.android.settings.fuelgauge.batterytip;
-import static com.android.settings.fuelgauge.batterytip.tips.BatteryTip.TipType
- .SMART_BATTERY_MANAGER;
+import static com.android.settings.fuelgauge.batterytip.tips.BatteryTip.TipType.SMART_BATTERY_MANAGER;
import static com.google.common.truth.Truth.assertThat;
@@ -31,8 +30,6 @@
import androidx.preference.PreferenceScreen;
-import com.android.internal.logging.nano.MetricsProto;
-import com.android.settings.R;
import com.android.settings.SettingsActivity;
import com.android.settings.core.BasePreferenceController;
import com.android.settings.core.InstrumentedPreferenceFragment;
@@ -58,16 +55,11 @@
private static final String KEY_TIP = "key_battery_tip";
private static final long AVERAGE_TIME_MS = DateUtils.HOUR_IN_MILLIS;
- @Mock
- private BatteryTipPreferenceController.BatteryTipListener mBatteryTipListener;
- @Mock
- private PreferenceScreen mPreferenceScreen;
- @Mock
- private BatteryTip mBatteryTip;
- @Mock
- private SettingsActivity mSettingsActivity;
- @Mock
- private InstrumentedPreferenceFragment mFragment;
+ @Mock private BatteryTipPreferenceController.BatteryTipListener mBatteryTipListener;
+ @Mock private PreferenceScreen mPreferenceScreen;
+ @Mock private BatteryTip mBatteryTip;
+ @Mock private SettingsActivity mSettingsActivity;
+ @Mock private InstrumentedPreferenceFragment mFragment;
private Context mContext;
private CardPreference mCardPreference;
@@ -147,13 +139,13 @@
@Test
public void getAvailabilityStatus_returnAvailableUnsearchable() {
- assertThat(mBatteryTipPreferenceController.getAvailabilityStatus()).isEqualTo(
- BasePreferenceController.AVAILABLE_UNSEARCHABLE);
+ assertThat(mBatteryTipPreferenceController.getAvailabilityStatus())
+ .isEqualTo(BasePreferenceController.AVAILABLE_UNSEARCHABLE);
}
private BatteryTipPreferenceController buildBatteryTipPreferenceController() {
- final BatteryTipPreferenceController controller = new BatteryTipPreferenceController(
- mContext, KEY_PREF);
+ final BatteryTipPreferenceController controller =
+ new BatteryTipPreferenceController(mContext, KEY_PREF);
controller.setActivity(mSettingsActivity);
controller.setFragment(mFragment);
controller.setBatteryTipListener(mBatteryTipListener);
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/BatteryTipUtilsTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/BatteryTipUtilsTest.java
index e4f286d..82a850e 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/BatteryTipUtilsTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/BatteryTipUtilsTest.java
@@ -45,10 +45,8 @@
@RunWith(RobolectricTestRunner.class)
public class BatteryTipUtilsTest {
- @Mock
- private SettingsActivity mSettingsActivity;
- @Mock
- private InstrumentedPreferenceFragment mFragment;
+ @Mock private SettingsActivity mSettingsActivity;
+ @Mock private InstrumentedPreferenceFragment mFragment;
private RestrictAppTip mRestrictAppTip;
private LowBatteryTip mLowBatteryTip;
private BatteryDefenderTip mBatteryDefenderTip;
@@ -61,42 +59,49 @@
when(mSettingsActivity.getApplicationContext()).thenReturn(RuntimeEnvironment.application);
when(mFragment.getContext()).thenReturn(RuntimeEnvironment.application);
mRestrictAppTip = spy(new RestrictAppTip(BatteryTip.StateType.NEW, new ArrayList<>()));
- mLowBatteryTip = spy(
- new LowBatteryTip(BatteryTip.StateType.NEW, false /* powerSaveModeOn */));
- mBatteryDefenderTip = spy(new BatteryDefenderTip(BatteryTip.StateType.NEW,
- false /* isPluggedIn */));
+ mLowBatteryTip =
+ spy(new LowBatteryTip(BatteryTip.StateType.NEW, false /* powerSaveModeOn */));
+ mBatteryDefenderTip =
+ spy(new BatteryDefenderTip(BatteryTip.StateType.NEW, false /* isPluggedIn */));
}
@Test
public void testGetActionForBatteryTip_typeRestrictStateNew_returnActionRestrict() {
when(mRestrictAppTip.getState()).thenReturn(BatteryTip.StateType.NEW);
- assertThat(BatteryTipUtils.getActionForBatteryTip(mRestrictAppTip, mSettingsActivity,
- mFragment)).isInstanceOf(RestrictAppAction.class);
+ assertThat(
+ BatteryTipUtils.getActionForBatteryTip(
+ mRestrictAppTip, mSettingsActivity, mFragment))
+ .isInstanceOf(RestrictAppAction.class);
}
@Test
public void testGetActionForBatteryTip_typeRestrictStateHandled_returnActionOpen() {
when(mRestrictAppTip.getState()).thenReturn(BatteryTip.StateType.HANDLED);
- assertThat(BatteryTipUtils.getActionForBatteryTip(mRestrictAppTip, mSettingsActivity,
- mFragment)).isInstanceOf(OpenRestrictAppFragmentAction.class);
+ assertThat(
+ BatteryTipUtils.getActionForBatteryTip(
+ mRestrictAppTip, mSettingsActivity, mFragment))
+ .isInstanceOf(OpenRestrictAppFragmentAction.class);
}
@Test
public void testGetActionForBatteryTip_typeLowBatteryStateNew_returnActionOpen() {
when(mLowBatteryTip.getState()).thenReturn(BatteryTip.StateType.NEW);
- assertThat(BatteryTipUtils.getActionForBatteryTip(mLowBatteryTip, mSettingsActivity,
- mFragment)).isInstanceOf(OpenBatterySaverAction.class);
+ assertThat(
+ BatteryTipUtils.getActionForBatteryTip(
+ mLowBatteryTip, mSettingsActivity, mFragment))
+ .isInstanceOf(OpenBatterySaverAction.class);
}
@Test
- public void
- testGetActionForBatteryTip_typeBatteryDefenderStateNew_returnNullAction() {
+ public void testGetActionForBatteryTip_typeBatteryDefenderStateNew_returnNullAction() {
when(mBatteryDefenderTip.getState()).thenReturn(BatteryTip.StateType.NEW);
- assertThat(BatteryTipUtils.getActionForBatteryTip(mBatteryDefenderTip, mSettingsActivity,
- mFragment)).isNull();
+ assertThat(
+ BatteryTipUtils.getActionForBatteryTip(
+ mBatteryDefenderTip, mSettingsActivity, mFragment))
+ .isNull();
}
}
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/HighUsageDataParserTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/HighUsageDataParserTest.java
index a0e205d..0310225 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/HighUsageDataParserTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/HighUsageDataParserTest.java
@@ -24,9 +24,9 @@
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.MockitoAnnotations;
+import org.robolectric.RobolectricTestRunner;
import java.time.Duration;
-import org.robolectric.RobolectricTestRunner;
@RunWith(RobolectricTestRunner.class)
public class HighUsageDataParserTest {
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/actions/OpenRestrictAppFragmentActionTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/actions/OpenRestrictAppFragmentActionTest.java
index 71202df..e5ada76 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/actions/OpenRestrictAppFragmentActionTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/actions/OpenRestrictAppFragmentActionTest.java
@@ -39,10 +39,10 @@
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
+import org.robolectric.RobolectricTestRunner;
import java.util.ArrayList;
import java.util.List;
-import org.robolectric.RobolectricTestRunner;
@RunWith(RobolectricTestRunner.class)
public class OpenRestrictAppFragmentActionTest {
@@ -53,10 +53,8 @@
private static final int ANOMALY_BT = 1;
private static final int METRICS_KEY = 1;
- @Mock
- private InstrumentedPreferenceFragment mFragment;
- @Mock
- private BatteryDatabaseManager mBatteryDatabaseManager;
+ @Mock private InstrumentedPreferenceFragment mFragment;
+ @Mock private BatteryDatabaseManager mBatteryDatabaseManager;
private OpenRestrictAppFragmentAction mAction;
private FakeFeatureFactory mFeatureFactory;
private Context mContext;
@@ -67,19 +65,22 @@
MockitoAnnotations.initMocks(this);
mContext = ApplicationProvider.getApplicationContext();
mAppInfos = new ArrayList<>();
- mAppInfos.add(new AppInfo.Builder()
- .setPackageName(PACKAGE_NAME_1)
- .addAnomalyType(ANOMALY_BT)
- .build());
- mAppInfos.add(new AppInfo.Builder()
- .setPackageName(PACKAGE_NAME_2)
- .addAnomalyType(ANOMALY_WAKEUP)
- .build());
+ mAppInfos.add(
+ new AppInfo.Builder()
+ .setPackageName(PACKAGE_NAME_1)
+ .addAnomalyType(ANOMALY_BT)
+ .build());
+ mAppInfos.add(
+ new AppInfo.Builder()
+ .setPackageName(PACKAGE_NAME_2)
+ .addAnomalyType(ANOMALY_WAKEUP)
+ .build());
mFeatureFactory = FakeFeatureFactory.setupForTest();
when(mFragment.getContext()).thenReturn(mContext);
- mAction = new OpenRestrictAppFragmentAction(mFragment,
- new RestrictAppTip(BatteryTip.StateType.HANDLED, mAppInfos));
+ mAction =
+ new OpenRestrictAppFragmentAction(
+ mFragment, new RestrictAppTip(BatteryTip.StateType.HANDLED, mAppInfos));
mAction.mBatteryDatabaseManager = mBatteryDatabaseManager;
}
@@ -93,9 +94,12 @@
public void testHandlePositiveAction() {
mAction.handlePositiveAction(METRICS_KEY);
- verify(mFeatureFactory.metricsFeatureProvider).action(mContext,
- MetricsProto.MetricsEvent.ACTION_TIP_OPEN_APP_RESTRICTION_PAGE, METRICS_KEY);
- verify(mBatteryDatabaseManager).updateAnomalies(mAppInfos,
- AnomalyDatabaseHelper.State.HANDLED);
+ verify(mFeatureFactory.metricsFeatureProvider)
+ .action(
+ mContext,
+ MetricsProto.MetricsEvent.ACTION_TIP_OPEN_APP_RESTRICTION_PAGE,
+ METRICS_KEY);
+ verify(mBatteryDatabaseManager)
+ .updateAnomalies(mAppInfos, AnomalyDatabaseHelper.State.HANDLED);
}
}
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/actions/RestrictAppActionTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/actions/RestrictAppActionTest.java
index 121348a..19e3442 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/actions/RestrictAppActionTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/actions/RestrictAppActionTest.java
@@ -52,8 +52,7 @@
private static final int ANOMALY_BT = 1;
private static final int METRICS_KEY = 1;
- @Mock
- private BatteryUtils mBatteryUtils;
+ @Mock private BatteryUtils mBatteryUtils;
private RestrictAppAction mRestrictAppAction;
private FakeFeatureFactory mFeatureFactory;
@@ -62,20 +61,20 @@
MockitoAnnotations.initMocks(this);
final List<AppInfo> mAppInfos = new ArrayList<>();
- mAppInfos.add(new AppInfo.Builder()
- .setUid(UID_1)
- .setPackageName(PACKAGE_NAME_1)
- .build());
- mAppInfos.add(new AppInfo.Builder()
- .setUid(UID_2)
- .setPackageName(PACKAGE_NAME_2)
- .addAnomalyType(ANOMALY_BT)
- .addAnomalyType(ANOMALY_WAKEUP)
- .build());
+ mAppInfos.add(new AppInfo.Builder().setUid(UID_1).setPackageName(PACKAGE_NAME_1).build());
+ mAppInfos.add(
+ new AppInfo.Builder()
+ .setUid(UID_2)
+ .setPackageName(PACKAGE_NAME_2)
+ .addAnomalyType(ANOMALY_BT)
+ .addAnomalyType(ANOMALY_WAKEUP)
+ .build());
mFeatureFactory = FakeFeatureFactory.setupForTest();
- mRestrictAppAction = new RestrictAppAction(RuntimeEnvironment.application,
- new RestrictAppTip(BatteryTip.StateType.NEW, mAppInfos));
+ mRestrictAppAction =
+ new RestrictAppAction(
+ RuntimeEnvironment.application,
+ new RestrictAppTip(BatteryTip.StateType.NEW, mAppInfos));
mRestrictAppAction.mBatteryUtils = mBatteryUtils;
}
@@ -89,17 +88,28 @@
public void testHandlePositiveAction() {
mRestrictAppAction.handlePositiveAction(METRICS_KEY);
- verify(mBatteryUtils)
- .setForceAppStandby(UID_1, PACKAGE_NAME_1, AppOpsManager.MODE_IGNORED);
- verify(mBatteryUtils)
- .setForceAppStandby(UID_2, PACKAGE_NAME_2, AppOpsManager.MODE_IGNORED);
- verify(mFeatureFactory.metricsFeatureProvider).action(SettingsEnums.PAGE_UNKNOWN,
- MetricsProto.MetricsEvent.ACTION_TIP_RESTRICT_APP, METRICS_KEY, PACKAGE_NAME_1, 0);
- verify(mFeatureFactory.metricsFeatureProvider).action(SettingsEnums.PAGE_UNKNOWN,
- MetricsProto.MetricsEvent.ACTION_TIP_RESTRICT_APP, METRICS_KEY, PACKAGE_NAME_2,
- ANOMALY_WAKEUP);
- verify(mFeatureFactory.metricsFeatureProvider).action(SettingsEnums.PAGE_UNKNOWN,
- MetricsProto.MetricsEvent.ACTION_TIP_RESTRICT_APP, METRICS_KEY, PACKAGE_NAME_2,
- ANOMALY_BT);
+ verify(mBatteryUtils).setForceAppStandby(UID_1, PACKAGE_NAME_1, AppOpsManager.MODE_IGNORED);
+ verify(mBatteryUtils).setForceAppStandby(UID_2, PACKAGE_NAME_2, AppOpsManager.MODE_IGNORED);
+ verify(mFeatureFactory.metricsFeatureProvider)
+ .action(
+ SettingsEnums.PAGE_UNKNOWN,
+ MetricsProto.MetricsEvent.ACTION_TIP_RESTRICT_APP,
+ METRICS_KEY,
+ PACKAGE_NAME_1,
+ 0);
+ verify(mFeatureFactory.metricsFeatureProvider)
+ .action(
+ SettingsEnums.PAGE_UNKNOWN,
+ MetricsProto.MetricsEvent.ACTION_TIP_RESTRICT_APP,
+ METRICS_KEY,
+ PACKAGE_NAME_2,
+ ANOMALY_WAKEUP);
+ verify(mFeatureFactory.metricsFeatureProvider)
+ .action(
+ SettingsEnums.PAGE_UNKNOWN,
+ MetricsProto.MetricsEvent.ACTION_TIP_RESTRICT_APP,
+ METRICS_KEY,
+ PACKAGE_NAME_2,
+ ANOMALY_BT);
}
}
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/actions/UnrestrictAppActionTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/actions/UnrestrictAppActionTest.java
index 1ef9a8a..0f4a043 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/actions/UnrestrictAppActionTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/actions/UnrestrictAppActionTest.java
@@ -44,8 +44,7 @@
private static final String PACKAGE_NAME_1 = "com.android.app1";
private static final int METRICS_KEY = 1;
- @Mock
- private BatteryUtils mBatteryUtils;
+ @Mock private BatteryUtils mBatteryUtils;
private UnrestrictAppAction mUnrestrictAppAction;
private FakeFeatureFactory mFeatureFactory;
@@ -53,14 +52,14 @@
public void setUp() {
MockitoAnnotations.initMocks(this);
- final AppInfo appInfo = new AppInfo.Builder()
- .setUid(UID_1)
- .setPackageName(PACKAGE_NAME_1)
- .build();
+ final AppInfo appInfo =
+ new AppInfo.Builder().setUid(UID_1).setPackageName(PACKAGE_NAME_1).build();
mFeatureFactory = FakeFeatureFactory.setupForTest();
- mUnrestrictAppAction = new UnrestrictAppAction(RuntimeEnvironment.application,
- new UnrestrictAppTip(BatteryTip.StateType.NEW, appInfo));
+ mUnrestrictAppAction =
+ new UnrestrictAppAction(
+ RuntimeEnvironment.application,
+ new UnrestrictAppTip(BatteryTip.StateType.NEW, appInfo));
mUnrestrictAppAction.mBatteryUtils = mBatteryUtils;
}
@@ -73,13 +72,13 @@
public void testHandlePositiveAction() {
mUnrestrictAppAction.handlePositiveAction(METRICS_KEY);
- verify(mBatteryUtils)
- .setForceAppStandby(UID_1, PACKAGE_NAME_1, AppOpsManager.MODE_ALLOWED);
- verify(mFeatureFactory.metricsFeatureProvider).action(
- SettingsEnums.PAGE_UNKNOWN,
- MetricsProto.MetricsEvent.ACTION_TIP_UNRESTRICT_APP,
- METRICS_KEY,
- PACKAGE_NAME_1,
- 0);
+ verify(mBatteryUtils).setForceAppStandby(UID_1, PACKAGE_NAME_1, AppOpsManager.MODE_ALLOWED);
+ verify(mFeatureFactory.metricsFeatureProvider)
+ .action(
+ SettingsEnums.PAGE_UNKNOWN,
+ MetricsProto.MetricsEvent.ACTION_TIP_UNRESTRICT_APP,
+ METRICS_KEY,
+ PACKAGE_NAME_1,
+ 0);
}
}
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/detectors/BatteryDefenderDetectorTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/detectors/BatteryDefenderDetectorTest.java
index 64d5d04..0a63ba2 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/detectors/BatteryDefenderDetectorTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/detectors/BatteryDefenderDetectorTest.java
@@ -38,8 +38,7 @@
@RunWith(RobolectricTestRunner.class)
public class BatteryDefenderDetectorTest {
- @Mock
- private BatteryInfo mBatteryInfo;
+ @Mock private BatteryInfo mBatteryInfo;
private BatteryDefenderDetector mBatteryDefenderDetector;
private Context mContext;
@@ -53,8 +52,7 @@
mContext = ApplicationProvider.getApplicationContext();
- mBatteryDefenderDetector = new BatteryDefenderDetector(
- mBatteryInfo, mContext);
+ mBatteryDefenderDetector = new BatteryDefenderDetector(mBatteryInfo, mContext);
mFakeFeatureFactory = FakeFeatureFactory.setupForTest();
}
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/detectors/DockDefenderDetectorTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/detectors/DockDefenderDetectorTest.java
index bd2c5d1..b90733d 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/detectors/DockDefenderDetectorTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/detectors/DockDefenderDetectorTest.java
@@ -59,25 +59,35 @@
mBatteryInfo = new BatteryInfo();
mBatteryInfo.pluggedStatus = BatteryManager.BATTERY_PLUGGED_DOCK;
mDockDefenderDetector = new DockDefenderDetector(mBatteryInfo, mContext);
- Intent intent = BatteryTestUtils.getCustomBatteryIntent(BatteryManager.BATTERY_PLUGGED_DOCK,
- 50 /* level */, 100 /* scale */, BatteryManager.BATTERY_STATUS_CHARGING);
- doReturn(intent).when(mContext).registerReceiver(eq(null),
- refEq(new IntentFilter(Intent.ACTION_BATTERY_CHANGED)));
+ Intent intent =
+ BatteryTestUtils.getCustomBatteryIntent(
+ BatteryManager.BATTERY_PLUGGED_DOCK,
+ 50 /* level */,
+ 100 /* scale */,
+ BatteryManager.BATTERY_STATUS_CHARGING);
+ doReturn(intent)
+ .when(mContext)
+ .registerReceiver(eq(null), refEq(new IntentFilter(Intent.ACTION_BATTERY_CHANGED)));
- Settings.Global.putInt(mContext.getContentResolver(),
- BatteryUtils.SETTINGS_GLOBAL_DOCK_DEFENDER_BYPASS, 0);
+ Settings.Global.putInt(
+ mContext.getContentResolver(),
+ BatteryUtils.SETTINGS_GLOBAL_DOCK_DEFENDER_BYPASS,
+ 0);
mFakeFeatureFactory = FakeFeatureFactory.setupForTest();
}
@Test
public void testDetect_dockDefenderTemporarilyBypassed() {
- Settings.Global.putInt(mContext.getContentResolver(),
- BatteryUtils.SETTINGS_GLOBAL_DOCK_DEFENDER_BYPASS, 1);
+ Settings.Global.putInt(
+ mContext.getContentResolver(),
+ BatteryUtils.SETTINGS_GLOBAL_DOCK_DEFENDER_BYPASS,
+ 1);
BatteryTip batteryTip = mDockDefenderDetector.detect();
assertTrue(batteryTip instanceof DockDefenderTip);
- assertEquals(((DockDefenderTip) batteryTip).getMode(),
+ assertEquals(
+ ((DockDefenderTip) batteryTip).getMode(),
BatteryUtils.DockDefenderMode.TEMPORARILY_BYPASSED);
}
@@ -89,8 +99,8 @@
BatteryTip batteryTip = mDockDefenderDetector.detect();
assertTrue(batteryTip instanceof DockDefenderTip);
- assertEquals(((DockDefenderTip) batteryTip).getMode(),
- BatteryUtils.DockDefenderMode.ACTIVE);
+ assertEquals(
+ ((DockDefenderTip) batteryTip).getMode(), BatteryUtils.DockDefenderMode.ACTIVE);
}
@Test
@@ -101,7 +111,8 @@
BatteryTip batteryTip = mDockDefenderDetector.detect();
assertTrue(batteryTip instanceof DockDefenderTip);
- assertEquals(((DockDefenderTip) batteryTip).getMode(),
+ assertEquals(
+ ((DockDefenderTip) batteryTip).getMode(),
BatteryUtils.DockDefenderMode.FUTURE_BYPASS);
}
@@ -113,8 +124,8 @@
BatteryTip batteryTip = mDockDefenderDetector.detect();
assertTrue(batteryTip instanceof DockDefenderTip);
- assertEquals(((DockDefenderTip) batteryTip).getMode(),
- BatteryUtils.DockDefenderMode.DISABLED);
+ assertEquals(
+ ((DockDefenderTip) batteryTip).getMode(), BatteryUtils.DockDefenderMode.DISABLED);
}
@Test
@@ -124,8 +135,8 @@
BatteryTip batteryTip = mDockDefenderDetector.detect();
assertTrue(batteryTip instanceof DockDefenderTip);
- assertEquals(((DockDefenderTip) batteryTip).getMode(),
- BatteryUtils.DockDefenderMode.DISABLED);
+ assertEquals(
+ ((DockDefenderTip) batteryTip).getMode(), BatteryUtils.DockDefenderMode.DISABLED);
}
@Test
@@ -136,7 +147,7 @@
BatteryTip batteryTip = mDockDefenderDetector.detect();
assertTrue(batteryTip instanceof DockDefenderTip);
- assertEquals(((DockDefenderTip) batteryTip).getMode(),
- BatteryUtils.DockDefenderMode.DISABLED);
+ assertEquals(
+ ((DockDefenderTip) batteryTip).getMode(), BatteryUtils.DockDefenderMode.DISABLED);
}
}
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/detectors/HighUsageDetectorTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/detectors/HighUsageDetectorTest.java
index c125876..b9f9ed2 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/detectors/HighUsageDetectorTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/detectors/HighUsageDetectorTest.java
@@ -62,18 +62,12 @@
private static final double POWER_LOW = 10000;
private Context mContext;
- @Mock
- private UidBatteryConsumer mHighBatteryConsumer;
- @Mock
- private UidBatteryConsumer mLowBatteryConsumer;
- @Mock
- private UidBatteryConsumer mSystemBatteryConsumer;
- @Mock
- private HighUsageDataParser mDataParser;
- @Mock
- private BatteryUsageStats mBatteryUsageStats;
- @Mock
- private BatteryStatsManager mBatteryStatsManager;
+ @Mock private UidBatteryConsumer mHighBatteryConsumer;
+ @Mock private UidBatteryConsumer mLowBatteryConsumer;
+ @Mock private UidBatteryConsumer mSystemBatteryConsumer;
+ @Mock private HighUsageDataParser mDataParser;
+ @Mock private BatteryUsageStats mBatteryUsageStats;
+ @Mock private BatteryStatsManager mBatteryStatsManager;
private AppInfo mHighAppInfo;
private AppInfo mLowAppInfo;
@@ -94,11 +88,17 @@
when(mBatteryStatsManager.getBatteryUsageStats(any(BatteryUsageStatsQuery.class)))
.thenReturn(mBatteryUsageStats);
- mContext.sendStickyBroadcast(new Intent(Intent.ACTION_BATTERY_CHANGED)
- .putExtra(BatteryManager.EXTRA_PLUGGED, 0));
+ mContext.sendStickyBroadcast(
+ new Intent(Intent.ACTION_BATTERY_CHANGED)
+ .putExtra(BatteryManager.EXTRA_PLUGGED, 0));
- mHighUsageDetector = spy(new HighUsageDetector(mContext, mPolicy, mBatteryUsageStats,
- mBatteryUtils.getBatteryInfo(TAG)));
+ mHighUsageDetector =
+ spy(
+ new HighUsageDetector(
+ mContext,
+ mPolicy,
+ mBatteryUsageStats,
+ mBatteryUtils.getBatteryInfo(TAG)));
mHighUsageDetector.mBatteryUtils = mBatteryUtils;
mHighUsageDetector.mDataParser = mDataParser;
doNothing().when(mHighUsageDetector).parseBatteryData();
@@ -111,12 +111,8 @@
when(mBatteryUsageStats.getDischargePercentage()).thenReturn(100);
when(mBatteryUsageStats.getConsumedPower()).thenReturn(POWER_HIGH + POWER_LOW);
- mHighAppInfo = new AppInfo.Builder()
- .setUid(UID_HIGH)
- .build();
- mLowAppInfo = new AppInfo.Builder()
- .setUid(UID_LOW)
- .build();
+ mHighAppInfo = new AppInfo.Builder().setUid(UID_HIGH).build();
+ mLowAppInfo = new AppInfo.Builder().setUid(UID_LOW).build();
ArrayList<UidBatteryConsumer> consumers = new ArrayList<>();
consumers.add(mSystemBatteryConsumer);
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/detectors/IncompatibleChargerDetectorTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/detectors/IncompatibleChargerDetectorTest.java
index 9ababe7..3f65a67 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/detectors/IncompatibleChargerDetectorTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/detectors/IncompatibleChargerDetectorTest.java
@@ -81,6 +81,6 @@
when(mUsbPort.getStatus()).thenReturn(mUsbPortStatus);
when(mUsbPort.supportsComplianceWarnings()).thenReturn(true);
when(mUsbPortStatus.isConnected()).thenReturn(true);
- when(mUsbPortStatus.getComplianceWarnings()).thenReturn(new int[]{1});
+ when(mUsbPortStatus.getComplianceWarnings()).thenReturn(new int[] {1});
}
}
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/detectors/LowBatteryDetectorTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/detectors/LowBatteryDetectorTest.java
index c9e201b..8e3de7c 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/detectors/LowBatteryDetectorTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/detectors/LowBatteryDetectorTest.java
@@ -40,8 +40,7 @@
@RunWith(RobolectricTestRunner.class)
public class LowBatteryDetectorTest {
- @Mock
- private BatteryInfo mBatteryInfo;
+ @Mock private BatteryInfo mBatteryInfo;
private BatteryTipPolicy mPolicy;
private LowBatteryDetector mLowBatteryDetector;
private Context mContext;
@@ -55,15 +54,16 @@
ReflectionHelpers.setField(mPolicy, "lowBatteryEnabled", true);
mBatteryInfo.discharging = true;
- mLowBatteryDetector = new LowBatteryDetector(mContext, mPolicy, mBatteryInfo,
- false /* isPowerSaveMode */);
+ mLowBatteryDetector =
+ new LowBatteryDetector(
+ mContext, mPolicy, mBatteryInfo, false /* isPowerSaveMode */);
}
@Test
public void testDetect_disabledByPolicy_tipInvisible() {
ReflectionHelpers.setField(mPolicy, "lowBatteryEnabled", false);
- mLowBatteryDetector = new LowBatteryDetector(mContext, mPolicy, mBatteryInfo,
- true /* isPowerSaveMode */);
+ mLowBatteryDetector =
+ new LowBatteryDetector(mContext, mPolicy, mBatteryInfo, true /* isPowerSaveMode */);
assertThat(mLowBatteryDetector.detect().isVisible()).isFalse();
}
@@ -84,8 +84,8 @@
@Test
public void testDetect_batterySaverOn_tipInvisible() {
- mLowBatteryDetector = new LowBatteryDetector(mContext, mPolicy, mBatteryInfo,
- true /* isPowerSaveMode */);
+ mLowBatteryDetector =
+ new LowBatteryDetector(mContext, mPolicy, mBatteryInfo, true /* isPowerSaveMode */);
assertThat(mLowBatteryDetector.detect().getState())
.isEqualTo(BatteryTip.StateType.INVISIBLE);
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/detectors/SmartBatteryDetectorTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/detectors/SmartBatteryDetectorTest.java
index d40f5b8..bd207ee 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/detectors/SmartBatteryDetectorTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/detectors/SmartBatteryDetectorTest.java
@@ -22,7 +22,6 @@
import android.content.ContentResolver;
import android.content.Context;
-import android.os.PowerManager;
import android.provider.Settings;
import com.android.settings.fuelgauge.BatteryInfo;
@@ -49,8 +48,7 @@
private SmartBatteryDetector mSmartBatteryDetector;
private BatteryTipPolicy mPolicy;
- @Mock
- private BatteryInfo mBatteryInfo;
+ @Mock private BatteryInfo mBatteryInfo;
@Before
public void setUp() {
@@ -59,8 +57,13 @@
mContext = RuntimeEnvironment.application;
mContentResolver = mContext.getContentResolver();
mPolicy = spy(new BatteryTipPolicy(mContext));
- mSmartBatteryDetector = new SmartBatteryDetector(mContext, mPolicy, mBatteryInfo,
- mContentResolver, false /* isPowerSaveMode */);
+ mSmartBatteryDetector =
+ new SmartBatteryDetector(
+ mContext,
+ mPolicy,
+ mBatteryInfo,
+ mContentResolver,
+ false /* isPowerSaveMode */);
}
@Test
@@ -72,8 +75,8 @@
@Test
public void testDetect_smartBatteryOff_tipVisible() {
- Settings.Global.putInt(mContentResolver,
- Settings.Global.ADAPTIVE_BATTERY_MANAGEMENT_ENABLED, 0);
+ Settings.Global.putInt(
+ mContentResolver, Settings.Global.ADAPTIVE_BATTERY_MANAGEMENT_ENABLED, 0);
mBatteryInfo.batteryLevel = EXPECTED_BATTERY_LEVEL;
assertThat(mSmartBatteryDetector.detect().isVisible()).isTrue();
@@ -81,30 +84,40 @@
@Test
public void testDetect_batterySaverOn_tipInvisible() {
- Settings.Global.putInt(mContentResolver,
- Settings.Global.ADAPTIVE_BATTERY_MANAGEMENT_ENABLED, 0);
+ Settings.Global.putInt(
+ mContentResolver, Settings.Global.ADAPTIVE_BATTERY_MANAGEMENT_ENABLED, 0);
mBatteryInfo.batteryLevel = EXPECTED_BATTERY_LEVEL;
- mSmartBatteryDetector = new SmartBatteryDetector(mContext, mPolicy, mBatteryInfo,
- mContentResolver, true /* isPowerSaveMode */);
+ mSmartBatteryDetector =
+ new SmartBatteryDetector(
+ mContext,
+ mPolicy,
+ mBatteryInfo,
+ mContentResolver,
+ true /* isPowerSaveMode */);
assertThat(mSmartBatteryDetector.detect().isVisible()).isFalse();
}
@Test
public void testDetect_unexpectedBatteryLevel_tipInvisible() {
- Settings.Global.putInt(mContentResolver,
- Settings.Global.ADAPTIVE_BATTERY_MANAGEMENT_ENABLED, 0);
+ Settings.Global.putInt(
+ mContentResolver, Settings.Global.ADAPTIVE_BATTERY_MANAGEMENT_ENABLED, 0);
mBatteryInfo.batteryLevel = UNEXPECTED_BATTERY_LEVEL;
- mSmartBatteryDetector = new SmartBatteryDetector(mContext, mPolicy, mBatteryInfo,
- mContentResolver, true /* isPowerSaveMode */);
+ mSmartBatteryDetector =
+ new SmartBatteryDetector(
+ mContext,
+ mPolicy,
+ mBatteryInfo,
+ mContentResolver,
+ true /* isPowerSaveMode */);
assertThat(mSmartBatteryDetector.detect().isVisible()).isFalse();
}
@Test
public void testDetect_smartBatteryOn_tipInvisible() {
- Settings.Global.putInt(mContentResolver,
- Settings.Global.ADAPTIVE_BATTERY_MANAGEMENT_ENABLED, 1);
+ Settings.Global.putInt(
+ mContentResolver, Settings.Global.ADAPTIVE_BATTERY_MANAGEMENT_ENABLED, 1);
mBatteryInfo.batteryLevel = EXPECTED_BATTERY_LEVEL;
assertThat(mSmartBatteryDetector.detect().isVisible()).isFalse();
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/tips/BatteryDefenderTipTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/tips/BatteryDefenderTipTest.java
index eee2df3..f8a4f28 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/tips/BatteryDefenderTipTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/tips/BatteryDefenderTipTest.java
@@ -17,9 +17,7 @@
import static com.google.common.truth.Truth.assertThat;
-import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyInt;
-import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@@ -63,8 +61,8 @@
mFeatureFactory = FakeFeatureFactory.setupForTest();
mMetricsFeatureProvider = mFeatureFactory.metricsFeatureProvider;
mContext = RuntimeEnvironment.application;
- mBatteryDefenderTip = new BatteryDefenderTip(BatteryTip.StateType.NEW,
- false /* isPluggedIn */);
+ mBatteryDefenderTip =
+ new BatteryDefenderTip(BatteryTip.StateType.NEW, false /* isPluggedIn */);
when(mPreference.getContext()).thenReturn(mContext);
when(mCardPreference.getContext()).thenReturn(mContext);
@@ -93,8 +91,8 @@
mBatteryDefenderTip.updateState(mBatteryTip);
mBatteryDefenderTip.log(mContext, mMetricsFeatureProvider);
- verify(mMetricsFeatureProvider).action(mContext,
- SettingsEnums.ACTION_BATTERY_DEFENDER_TIP, mBatteryTip.mState);
+ verify(mMetricsFeatureProvider)
+ .action(mContext, SettingsEnums.ACTION_BATTERY_DEFENDER_TIP, mBatteryTip.mState);
}
@Test
@@ -131,8 +129,8 @@
@Test
public void updatePreference_whenCharging_setPrimaryButtonVisibleToBeTrue() {
- mBatteryDefenderTip = new BatteryDefenderTip(BatteryTip.StateType.NEW,
- true /* isPluggedIn */);
+ mBatteryDefenderTip =
+ new BatteryDefenderTip(BatteryTip.StateType.NEW, true /* isPluggedIn */);
mBatteryDefenderTip.updatePreference(mCardPreference);
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/tips/BatteryTipTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/tips/BatteryTipTest.java
index ecac4f9..45fdc1f 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/tips/BatteryTipTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/tips/BatteryTipTest.java
@@ -45,8 +45,7 @@
private static final String TITLE = "title";
private static final String SUMMARY = "summary";
- @DrawableRes
- private static final int ICON_ID = R.drawable.ic_fingerprint;
+ @DrawableRes private static final int ICON_ID = R.drawable.ic_fingerprint;
private Context mContext;
private TestBatteryTip mBatteryTip;
@@ -86,8 +85,10 @@
@Test
public void updatePreference_resetLayoutState() {
mContext.setTheme(R.style.Theme_Settings);
- PreferenceViewHolder holder = PreferenceViewHolder.createInstanceForTests(
- View.inflate(mContext, R.layout.card_preference_layout, /* parent= */ null));
+ PreferenceViewHolder holder =
+ PreferenceViewHolder.createInstanceForTests(
+ View.inflate(
+ mContext, R.layout.card_preference_layout, /* parent= */ null));
CardPreference cardPreference = new CardPreference(mContext);
cardPreference.onBindViewHolder(holder);
cardPreference.setPrimaryButtonVisible(true);
@@ -113,9 +114,7 @@
assertThat(mBatteryTip.toString()).isEqualTo("type=6 state=0");
}
- /**
- * Used to test the non abstract methods in {@link TestBatteryTip}
- */
+ /** Used to test the non abstract methods in {@link TestBatteryTip} */
public static class TestBatteryTip extends BatteryTip {
TestBatteryTip() {
super(TipType.SUMMARY, StateType.NEW, true);
@@ -150,14 +149,15 @@
// do nothing
}
- public final Parcelable.Creator CREATOR = new Parcelable.Creator() {
- public BatteryTip createFromParcel(Parcel in) {
- return new TestBatteryTip(in);
- }
+ public final Parcelable.Creator CREATOR =
+ new Parcelable.Creator() {
+ public BatteryTip createFromParcel(Parcel in) {
+ return new TestBatteryTip(in);
+ }
- public BatteryTip[] newArray(int size) {
- return new TestBatteryTip[size];
- }
- };
+ public BatteryTip[] newArray(int size) {
+ return new TestBatteryTip[size];
+ }
+ };
}
}
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/tips/DockDefenderTipTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/tips/DockDefenderTipTest.java
index e897a1c..6d6c2e0 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/tips/DockDefenderTipTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/tips/DockDefenderTipTest.java
@@ -54,10 +54,8 @@
private FakeFeatureFactory mFeatureFactory;
private MetricsFeatureProvider mMetricsFeatureProvider;
- @Mock
- private Preference mPreference;
- @Mock
- private CardPreference mCardPreference;
+ @Mock private Preference mPreference;
+ @Mock private CardPreference mCardPreference;
@Before
public void setUp() {
@@ -67,14 +65,18 @@
mFeatureFactory = FakeFeatureFactory.setupForTest();
mMetricsFeatureProvider = mFeatureFactory.metricsFeatureProvider;
- mDockDefenderTipFutureBypass = new DockDefenderTip(BatteryTip.StateType.NEW,
- BatteryUtils.DockDefenderMode.FUTURE_BYPASS);
- mDockDefenderTipActive = new DockDefenderTip(BatteryTip.StateType.NEW,
- BatteryUtils.DockDefenderMode.ACTIVE);
- mDockDefenderTipTemporarilyBypassed = new DockDefenderTip(BatteryTip.StateType.NEW,
- BatteryUtils.DockDefenderMode.TEMPORARILY_BYPASSED);
- mDockDefenderTipDisabled = new DockDefenderTip(BatteryTip.StateType.INVISIBLE,
- BatteryUtils.DockDefenderMode.DISABLED);
+ mDockDefenderTipFutureBypass =
+ new DockDefenderTip(
+ BatteryTip.StateType.NEW, BatteryUtils.DockDefenderMode.FUTURE_BYPASS);
+ mDockDefenderTipActive =
+ new DockDefenderTip(BatteryTip.StateType.NEW, BatteryUtils.DockDefenderMode.ACTIVE);
+ mDockDefenderTipTemporarilyBypassed =
+ new DockDefenderTip(
+ BatteryTip.StateType.NEW,
+ BatteryUtils.DockDefenderMode.TEMPORARILY_BYPASSED);
+ mDockDefenderTipDisabled =
+ new DockDefenderTip(
+ BatteryTip.StateType.INVISIBLE, BatteryUtils.DockDefenderMode.DISABLED);
doReturn(mContext).when(mPreference).getContext();
doReturn(mContext).when(mCardPreference).getContext();
@@ -82,69 +84,78 @@
@Test
public void testGetTitle() {
- assertThat(mDockDefenderTipFutureBypass.getTitle(mContext).toString()).isEqualTo(
- mContext.getString(R.string.battery_tip_dock_defender_future_bypass_title));
- assertThat(mDockDefenderTipActive.getTitle(mContext).toString()).isEqualTo(
- mContext.getString(R.string.battery_tip_dock_defender_active_title));
- assertThat(mDockDefenderTipTemporarilyBypassed.getTitle(mContext).toString()).isEqualTo(
- mContext.getString(R.string.battery_tip_dock_defender_temporarily_bypassed_title));
+ assertThat(mDockDefenderTipFutureBypass.getTitle(mContext).toString())
+ .isEqualTo(
+ mContext.getString(R.string.battery_tip_dock_defender_future_bypass_title));
+ assertThat(mDockDefenderTipActive.getTitle(mContext).toString())
+ .isEqualTo(mContext.getString(R.string.battery_tip_dock_defender_active_title));
+ assertThat(mDockDefenderTipTemporarilyBypassed.getTitle(mContext).toString())
+ .isEqualTo(
+ mContext.getString(
+ R.string.battery_tip_dock_defender_temporarily_bypassed_title));
assertThat(mDockDefenderTipDisabled.getTitle(mContext)).isNull();
}
@Test
public void testGetSummary() {
- assertThat(mDockDefenderTipFutureBypass.getSummary(mContext).toString()).isEqualTo(
- mContext.getString(R.string.battery_tip_dock_defender_future_bypass_summary));
- assertThat(mDockDefenderTipActive.getSummary(mContext).toString()).isEqualTo(
- mContext.getString(R.string.battery_tip_dock_defender_active_summary));
- assertThat(mDockDefenderTipTemporarilyBypassed.getSummary(mContext).toString()).isEqualTo(
- mContext.getString(
- R.string.battery_tip_dock_defender_temporarily_bypassed_summary));
+ assertThat(mDockDefenderTipFutureBypass.getSummary(mContext).toString())
+ .isEqualTo(
+ mContext.getString(
+ R.string.battery_tip_dock_defender_future_bypass_summary));
+ assertThat(mDockDefenderTipActive.getSummary(mContext).toString())
+ .isEqualTo(mContext.getString(R.string.battery_tip_dock_defender_active_summary));
+ assertThat(mDockDefenderTipTemporarilyBypassed.getSummary(mContext).toString())
+ .isEqualTo(
+ mContext.getString(
+ R.string.battery_tip_dock_defender_temporarily_bypassed_summary));
assertThat(mDockDefenderTipDisabled.getSummary(mContext)).isNull();
}
@Test
public void testGetIconId_dockDefenderActive_getProtectedIcon() {
- assertThat(mDockDefenderTipActive.getIconId()).isEqualTo(
- R.drawable.ic_battery_status_protected_24dp);
+ assertThat(mDockDefenderTipActive.getIconId())
+ .isEqualTo(R.drawable.ic_battery_status_protected_24dp);
}
@Test
public void testGetIconId_dockDefenderNotActive_getUntriggeredIcon() {
- assertThat(mDockDefenderTipFutureBypass.getIconId()).isEqualTo(
- R.drawable.ic_battery_dock_defender_untriggered_24dp);
- assertThat(mDockDefenderTipTemporarilyBypassed.getIconId()).isEqualTo(
- R.drawable.ic_battery_dock_defender_untriggered_24dp);
- assertThat(mDockDefenderTipDisabled.getIconId()).isEqualTo(
- R.drawable.ic_battery_dock_defender_untriggered_24dp);
+ assertThat(mDockDefenderTipFutureBypass.getIconId())
+ .isEqualTo(R.drawable.ic_battery_dock_defender_untriggered_24dp);
+ assertThat(mDockDefenderTipTemporarilyBypassed.getIconId())
+ .isEqualTo(R.drawable.ic_battery_dock_defender_untriggered_24dp);
+ assertThat(mDockDefenderTipDisabled.getIconId())
+ .isEqualTo(R.drawable.ic_battery_dock_defender_untriggered_24dp);
}
@Test
public void testUpdateState() {
mDockDefenderTipTemporarilyBypassed.updateState(mDockDefenderTipDisabled);
- assertThat(mDockDefenderTipTemporarilyBypassed.getState()).isEqualTo(
- BatteryTip.StateType.INVISIBLE);
- assertThat(mDockDefenderTipTemporarilyBypassed.getMode()).isEqualTo(
- BatteryUtils.DockDefenderMode.DISABLED);
+ assertThat(mDockDefenderTipTemporarilyBypassed.getState())
+ .isEqualTo(BatteryTip.StateType.INVISIBLE);
+ assertThat(mDockDefenderTipTemporarilyBypassed.getMode())
+ .isEqualTo(BatteryUtils.DockDefenderMode.DISABLED);
}
@Test
public void testLog() {
mDockDefenderTipActive.log(mContext, mMetricsFeatureProvider);
- verify(mMetricsFeatureProvider).action(mContext, SettingsEnums.ACTION_DOCK_DEFENDER_TIP,
- mDockDefenderTipActive.getState());
+ verify(mMetricsFeatureProvider)
+ .action(
+ mContext,
+ SettingsEnums.ACTION_DOCK_DEFENDER_TIP,
+ mDockDefenderTipActive.getState());
}
-
@Test
public void testUpdatePreference_dockDefenderTipFutureBypass() {
mDockDefenderTipFutureBypass.updatePreference(mCardPreference);
verify(mCardPreference).setPrimaryButtonVisible(true);
- verify(mCardPreference).setPrimaryButtonText(
- mContext.getString(R.string.battery_tip_charge_to_full_button));
+ verify(mCardPreference)
+ .setPrimaryButtonText(
+ mContext.getString(R.string.battery_tip_charge_to_full_button));
verifySecondaryButton();
}
@@ -153,8 +164,9 @@
mDockDefenderTipActive.updatePreference(mCardPreference);
verify(mCardPreference).setPrimaryButtonVisible(true);
- verify(mCardPreference).setPrimaryButtonText(
- mContext.getString(R.string.battery_tip_charge_to_full_button));
+ verify(mCardPreference)
+ .setPrimaryButtonText(
+ mContext.getString(R.string.battery_tip_charge_to_full_button));
verifySecondaryButton();
}
@@ -170,8 +182,10 @@
private void verifySecondaryButton() {
verify(mCardPreference).setSecondaryButtonText(mContext.getString(R.string.learn_more));
verify(mCardPreference).setSecondaryButtonVisible(true);
- verify(mCardPreference).setSecondaryButtonContentDescription(mContext.getString(
- R.string.battery_tip_limited_temporarily_sec_button_content_description));
+ final String expectedContent =
+ mContext.getString(
+ R.string.battery_tip_limited_temporarily_sec_button_content_description);
+ verify(mCardPreference).setSecondaryButtonContentDescription(expectedContent);
}
@Test
@@ -182,9 +196,11 @@
}
private String getLastErrorLog() {
- return ShadowLog.getLogsForTag(DockDefenderTip.class.getSimpleName()).stream().filter(
- log -> log.type == Log.ERROR).reduce((first, second) -> second).orElse(
- createErrorLog("No Error Log")).msg;
+ return ShadowLog.getLogsForTag(DockDefenderTip.class.getSimpleName()).stream()
+ .filter(log -> log.type == Log.ERROR)
+ .reduce((first, second) -> second)
+ .orElse(createErrorLog("No Error Log"))
+ .msg;
}
private ShadowLog.LogItem createErrorLog(String msg) {
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/tips/HighUsageTipTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/tips/HighUsageTipTest.java
index 71a8062..0484a82 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/tips/HighUsageTipTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/tips/HighUsageTipTest.java
@@ -45,8 +45,7 @@
private static final long SCREEN_TIME = 30 * DateUtils.MINUTE_IN_MILLIS;
private static final long LAST_FULL_CHARGE_TIME = 20 * DateUtils.MINUTE_IN_MILLIS;
- @Mock
- private MetricsFeatureProvider mMetricsFeatureProvider;
+ @Mock private MetricsFeatureProvider mMetricsFeatureProvider;
private Context mContext;
private HighUsageTip mBatteryTip;
private List<AppInfo> mUsageAppList;
@@ -57,10 +56,11 @@
mContext = RuntimeEnvironment.application;
mUsageAppList = new ArrayList<>();
- mUsageAppList.add(new AppInfo.Builder()
- .setPackageName(PACKAGE_NAME)
- .setScreenOnTimeMs(SCREEN_TIME)
- .build());
+ mUsageAppList.add(
+ new AppInfo.Builder()
+ .setPackageName(PACKAGE_NAME)
+ .setScreenOnTimeMs(SCREEN_TIME)
+ .build());
mBatteryTip = new HighUsageTip(LAST_FULL_CHARGE_TIME, mUsageAppList);
}
@@ -86,19 +86,25 @@
@Test
public void toString_containsAppData() {
- assertThat(mBatteryTip.toString()).isEqualTo(
- "type=2 state=0 { packageName=com.android.app,anomalyTypes={},screenTime=1800000 "
- + "}");
+ assertThat(mBatteryTip.toString())
+ .isEqualTo(
+ "type=2 state=0 {"
+ + " packageName=com.android.app,anomalyTypes={},screenTime=1800000 }");
}
@Test
public void testLog_logAppInfo() {
mBatteryTip.log(mContext, mMetricsFeatureProvider);
- verify(mMetricsFeatureProvider).action(mContext,
- MetricsProto.MetricsEvent.ACTION_HIGH_USAGE_TIP, BatteryTip.StateType.NEW);
+ verify(mMetricsFeatureProvider)
+ .action(
+ mContext,
+ MetricsProto.MetricsEvent.ACTION_HIGH_USAGE_TIP,
+ BatteryTip.StateType.NEW);
- verify(mMetricsFeatureProvider).action(mContext,
- MetricsProto.MetricsEvent.ACTION_HIGH_USAGE_TIP_LIST,
- PACKAGE_NAME);
+ verify(mMetricsFeatureProvider)
+ .action(
+ mContext,
+ MetricsProto.MetricsEvent.ACTION_HIGH_USAGE_TIP_LIST,
+ PACKAGE_NAME);
}
}
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/tips/IncompatibleChargerTipTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/tips/IncompatibleChargerTipTest.java
index 9f6e4e3..1d7ab66 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/tips/IncompatibleChargerTipTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/tips/IncompatibleChargerTipTest.java
@@ -17,16 +17,11 @@
import static com.google.common.truth.Truth.assertThat;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.anyInt;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.app.settings.SettingsEnums;
import android.content.Context;
-import android.content.Intent;
import android.util.Log;
import androidx.preference.Preference;
@@ -72,20 +67,19 @@
@Test
public void getTitle_showTitle() {
- assertThat(mIncompatibleChargerTip.getTitle(mContext)).isEqualTo(
- mContext.getString(R.string.battery_tip_incompatible_charging_title));
+ assertThat(mIncompatibleChargerTip.getTitle(mContext))
+ .isEqualTo(mContext.getString(R.string.battery_tip_incompatible_charging_title));
}
@Test
public void getSummary_showSummary() {
- assertThat(mIncompatibleChargerTip.getSummary(mContext)).isEqualTo(
- mContext.getString(R.string.battery_tip_incompatible_charging_message));
+ assertThat(mIncompatibleChargerTip.getSummary(mContext))
+ .isEqualTo(mContext.getString(R.string.battery_tip_incompatible_charging_message));
}
@Test
public void getIcon_showIcon() {
- assertThat(mIncompatibleChargerTip.getIconId())
- .isEqualTo(R.drawable.ic_battery_charger);
+ assertThat(mIncompatibleChargerTip.getIconId()).isEqualTo(R.drawable.ic_battery_charger);
}
@Test
@@ -93,8 +87,11 @@
mIncompatibleChargerTip.updateState(mBatteryTip);
mIncompatibleChargerTip.log(mContext, mMetricsFeatureProvider);
- verify(mMetricsFeatureProvider).action(mContext,
- SettingsEnums.ACTION_INCOMPATIBLE_CHARGING_TIP, mBatteryTip.mState);
+ verify(mMetricsFeatureProvider)
+ .action(
+ mContext,
+ SettingsEnums.ACTION_INCOMPATIBLE_CHARGING_TIP,
+ mBatteryTip.mState);
}
@Test
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/tips/LowBatteryTipTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/tips/LowBatteryTipTest.java
index 3f42231..69edef7 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/tips/LowBatteryTipTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/tips/LowBatteryTipTest.java
@@ -37,8 +37,7 @@
@RunWith(RobolectricTestRunner.class)
public class LowBatteryTipTest {
- @Mock
- private MetricsFeatureProvider mMetricsFeatureProvider;
+ @Mock private MetricsFeatureProvider mMetricsFeatureProvider;
private Context mContext;
private LowBatteryTip mLowBatteryTip;
@@ -58,25 +57,25 @@
final LowBatteryTip parcelTip = new LowBatteryTip(parcel);
assertThat(parcelTip.isPowerSaveModeOn()).isFalse();
- assertThat(parcelTip.getSummary(mContext)).isEqualTo(
- mContext.getString(R.string.battery_tip_low_battery_summary));
+ assertThat(parcelTip.getSummary(mContext))
+ .isEqualTo(mContext.getString(R.string.battery_tip_low_battery_summary));
}
@Test
public void updateState_stateNew_showExpectedInformation() {
mLowBatteryTip.mState = BatteryTip.StateType.NEW;
- assertThat(mLowBatteryTip.getTitle(mContext)).isEqualTo(
- mContext.getString(R.string.battery_tip_low_battery_title));
- assertThat(mLowBatteryTip.getSummary(mContext)).isEqualTo(
- mContext.getString(R.string.battery_tip_low_battery_summary));
+ assertThat(mLowBatteryTip.getTitle(mContext))
+ .isEqualTo(mContext.getString(R.string.battery_tip_low_battery_title));
+ assertThat(mLowBatteryTip.getSummary(mContext))
+ .isEqualTo(mContext.getString(R.string.battery_tip_low_battery_summary));
assertThat(mLowBatteryTip.getIconId()).isEqualTo(R.drawable.ic_battery_saver_accent_24dp);
}
@Test
public void updateState_powerSaveModeOn_notShowTipItem() {
- final LowBatteryTip tip = new LowBatteryTip(
- BatteryTip.StateType.NEW, true /* powerSaveModeOn */);
+ final LowBatteryTip tip =
+ new LowBatteryTip(BatteryTip.StateType.NEW, true /* powerSaveModeOn */);
tip.updateState(tip);
@@ -87,7 +86,10 @@
public void log_lowBatteryActionWithCorrectState() {
mLowBatteryTip.log(mContext, mMetricsFeatureProvider);
- verify(mMetricsFeatureProvider).action(mContext,
- MetricsProto.MetricsEvent.ACTION_LOW_BATTERY_TIP, BatteryTip.StateType.NEW);
+ verify(mMetricsFeatureProvider)
+ .action(
+ mContext,
+ MetricsProto.MetricsEvent.ACTION_LOW_BATTERY_TIP,
+ BatteryTip.StateType.NEW);
}
}
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/tips/RestrictAppTipTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/tips/RestrictAppTipTest.java
index bb70077..c4bc3bc 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/tips/RestrictAppTipTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/tips/RestrictAppTipTest.java
@@ -65,12 +65,9 @@
private List<AppInfo> mUsageAppList;
private AppInfo mAppInfo;
private AppInfo mUninstallAppInfo;
- @Mock
- private ApplicationInfo mApplicationInfo;
- @Mock
- private PackageManager mPackageManager;
- @Mock
- private MetricsFeatureProvider mMetricsFeatureProvider;
+ @Mock private ApplicationInfo mApplicationInfo;
+ @Mock private PackageManager mPackageManager;
+ @Mock private MetricsFeatureProvider mMetricsFeatureProvider;
@Before
public void setUp() throws Exception {
@@ -79,28 +76,35 @@
mContext = spy(RuntimeEnvironment.application);
doReturn(mContext).when(mContext).getApplicationContext();
doReturn(mPackageManager).when(mContext).getPackageManager();
- doReturn(mApplicationInfo).when(mPackageManager).getApplicationInfo(PACKAGE_NAME,
- PackageManager.MATCH_DISABLED_COMPONENTS | PackageManager.MATCH_ANY_USER);
- doThrow(new PackageManager.NameNotFoundException()).when(mPackageManager)
- .getApplicationInfo(UNINSTALL_PACKAGE_NAME,
+ doReturn(mApplicationInfo)
+ .when(mPackageManager)
+ .getApplicationInfo(
+ PACKAGE_NAME,
+ PackageManager.MATCH_DISABLED_COMPONENTS | PackageManager.MATCH_ANY_USER);
+ doThrow(new PackageManager.NameNotFoundException())
+ .when(mPackageManager)
+ .getApplicationInfo(
+ UNINSTALL_PACKAGE_NAME,
PackageManager.MATCH_DISABLED_COMPONENTS | PackageManager.MATCH_ANY_USER);
doReturn(DISPLAY_NAME).when(mApplicationInfo).loadLabel(mPackageManager);
- mAppInfo = new AppInfo.Builder()
- .setPackageName(PACKAGE_NAME)
- .addAnomalyType(ANOMALY_WAKEUP)
- .addAnomalyType(ANOMALY_WAKELOCK)
- .build();
- mUninstallAppInfo = new AppInfo.Builder()
- .setPackageName(UNINSTALL_PACKAGE_NAME)
- .addAnomalyType(ANOMALY_WAKEUP)
- .build();
+ mAppInfo =
+ new AppInfo.Builder()
+ .setPackageName(PACKAGE_NAME)
+ .addAnomalyType(ANOMALY_WAKEUP)
+ .addAnomalyType(ANOMALY_WAKELOCK)
+ .build();
+ mUninstallAppInfo =
+ new AppInfo.Builder()
+ .setPackageName(UNINSTALL_PACKAGE_NAME)
+ .addAnomalyType(ANOMALY_WAKEUP)
+ .build();
mUsageAppList = new ArrayList<>();
mUsageAppList.add(mAppInfo);
mNewBatteryTip = new RestrictAppTip(BatteryTip.StateType.NEW, mUsageAppList);
mHandledBatteryTip = new RestrictAppTip(BatteryTip.StateType.HANDLED, mUsageAppList);
- mInvisibleBatteryTip = new RestrictAppTip(BatteryTip.StateType.INVISIBLE,
- new ArrayList<>());
+ mInvisibleBatteryTip =
+ new RestrictAppTip(BatteryTip.StateType.INVISIBLE, new ArrayList<>());
}
@After
@@ -149,8 +153,9 @@
@Test
public void getSummary_oneAppHandled_showHandledSummary() {
assertThat(mHandledBatteryTip.getSummary(mContext).toString())
- .isEqualTo(StringUtil.getIcuPluralsString(mContext, 1,
- R.string.battery_tip_restrict_handled_summary));
+ .isEqualTo(
+ StringUtil.getIcuPluralsString(
+ mContext, 1, R.string.battery_tip_restrict_handled_summary));
}
@Test
@@ -158,8 +163,9 @@
mUsageAppList.add(new AppInfo.Builder().build());
mHandledBatteryTip = new RestrictAppTip(BatteryTip.StateType.HANDLED, mUsageAppList);
assertThat(mHandledBatteryTip.getSummary(mContext))
- .isEqualTo(StringUtil.getIcuPluralsString(mContext, 2,
- R.string.battery_tip_restrict_handled_summary));
+ .isEqualTo(
+ StringUtil.getIcuPluralsString(
+ mContext, 2, R.string.battery_tip_restrict_handled_summary));
}
@Test
@@ -217,35 +223,47 @@
@Test
public void toString_containsAppData() {
- assertThat(mNewBatteryTip.toString()).isEqualTo(
- "type=1 state=0 { packageName=com.android.app,anomalyTypes={0, 1},screenTime=0 }");
+ assertThat(mNewBatteryTip.toString())
+ .isEqualTo(
+ "type=1 state=0 { packageName=com.android.app,anomalyTypes={0,"
+ + " 1},screenTime=0 }");
}
@Test
public void testLog_stateNew_logAppInfo() {
mNewBatteryTip.log(mContext, mMetricsFeatureProvider);
- verify(mMetricsFeatureProvider).action(mContext,
- MetricsProto.MetricsEvent.ACTION_APP_RESTRICTION_TIP, BatteryTip.StateType.NEW);
- verify(mMetricsFeatureProvider).action(SettingsEnums.PAGE_UNKNOWN,
- MetricsProto.MetricsEvent.ACTION_APP_RESTRICTION_TIP_LIST,
- SettingsEnums.PAGE_UNKNOWN,
- PACKAGE_NAME,
- ANOMALY_WAKEUP);
- verify(mMetricsFeatureProvider).action(SettingsEnums.PAGE_UNKNOWN,
- MetricsProto.MetricsEvent.ACTION_APP_RESTRICTION_TIP_LIST,
- SettingsEnums.PAGE_UNKNOWN,
- PACKAGE_NAME,
- ANOMALY_WAKELOCK);
+ verify(mMetricsFeatureProvider)
+ .action(
+ mContext,
+ MetricsProto.MetricsEvent.ACTION_APP_RESTRICTION_TIP,
+ BatteryTip.StateType.NEW);
+ verify(mMetricsFeatureProvider)
+ .action(
+ SettingsEnums.PAGE_UNKNOWN,
+ MetricsProto.MetricsEvent.ACTION_APP_RESTRICTION_TIP_LIST,
+ SettingsEnums.PAGE_UNKNOWN,
+ PACKAGE_NAME,
+ ANOMALY_WAKEUP);
+ verify(mMetricsFeatureProvider)
+ .action(
+ SettingsEnums.PAGE_UNKNOWN,
+ MetricsProto.MetricsEvent.ACTION_APP_RESTRICTION_TIP_LIST,
+ SettingsEnums.PAGE_UNKNOWN,
+ PACKAGE_NAME,
+ ANOMALY_WAKELOCK);
}
@Test
public void testLog_stateHandled_doNotLogAppInfo() {
mHandledBatteryTip.log(mContext, mMetricsFeatureProvider);
- verify(mMetricsFeatureProvider).action(mContext,
- MetricsProto.MetricsEvent.ACTION_APP_RESTRICTION_TIP, BatteryTip.StateType.HANDLED);
- verify(mMetricsFeatureProvider, never()).action(
- anyInt(), anyInt(), anyInt(), anyString(), anyInt());
+ verify(mMetricsFeatureProvider)
+ .action(
+ mContext,
+ MetricsProto.MetricsEvent.ACTION_APP_RESTRICTION_TIP,
+ BatteryTip.StateType.HANDLED);
+ verify(mMetricsFeatureProvider, never())
+ .action(anyInt(), anyInt(), anyInt(), anyString(), anyInt());
}
}
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/tips/SmartBatteryTipTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/tips/SmartBatteryTipTest.java
index 7da6a4f..36cb319 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/tips/SmartBatteryTipTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/tips/SmartBatteryTipTest.java
@@ -33,8 +33,7 @@
@RunWith(RobolectricTestRunner.class)
public class SmartBatteryTipTest {
- @Mock
- private MetricsFeatureProvider mMetricsFeatureProvider;
+ @Mock private MetricsFeatureProvider mMetricsFeatureProvider;
private Context mContext;
private SmartBatteryTip mSmartBatteryTip;
@@ -50,7 +49,10 @@
public void testLog() {
mSmartBatteryTip.log(mContext, mMetricsFeatureProvider);
- verify(mMetricsFeatureProvider).action(mContext,
- MetricsProto.MetricsEvent.ACTION_SMART_BATTERY_TIP, BatteryTip.StateType.NEW);
+ verify(mMetricsFeatureProvider)
+ .action(
+ mContext,
+ MetricsProto.MetricsEvent.ACTION_SMART_BATTERY_TIP,
+ BatteryTip.StateType.NEW);
}
}
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/AnomalyEventWrapperTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/AnomalyEventWrapperTest.java
index 60e0af0..0d4d671 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/AnomalyEventWrapperTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/AnomalyEventWrapperTest.java
@@ -45,19 +45,18 @@
@Test
public void getDismissRecordKey_returnExpectedResult() {
- mAnomalyEventWrapper = new AnomalyEventWrapper(mContext,
- BatteryTestUtils.createAdaptiveBrightnessAnomalyEvent());
- assertThat(mAnomalyEventWrapper.getDismissRecordKey())
- .isEqualTo("KEY_BRIGHTNESS");
+ mAnomalyEventWrapper =
+ new AnomalyEventWrapper(
+ mContext, BatteryTestUtils.createAdaptiveBrightnessAnomalyEvent());
+ assertThat(mAnomalyEventWrapper.getDismissRecordKey()).isEqualTo("KEY_BRIGHTNESS");
- mAnomalyEventWrapper = new AnomalyEventWrapper(mContext,
- BatteryTestUtils.createScreenTimeoutAnomalyEvent());
- assertThat(mAnomalyEventWrapper.getDismissRecordKey())
- .isEqualTo("KEY_SCREEN_TIMEOUT");
+ mAnomalyEventWrapper =
+ new AnomalyEventWrapper(
+ mContext, BatteryTestUtils.createScreenTimeoutAnomalyEvent());
+ assertThat(mAnomalyEventWrapper.getDismissRecordKey()).isEqualTo("KEY_SCREEN_TIMEOUT");
- mAnomalyEventWrapper = new AnomalyEventWrapper(mContext,
- BatteryTestUtils.createAppAnomalyEvent());
- assertThat(mAnomalyEventWrapper.getDismissRecordKey())
- .isEqualTo("KEY_APP_1");
+ mAnomalyEventWrapper =
+ new AnomalyEventWrapper(mContext, BatteryTestUtils.createAppAnomalyEvent());
+ assertThat(mAnomalyEventWrapper.getDismissRecordKey()).isEqualTo("KEY_APP_1");
}
}
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 275ab34..bbb022e 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceControllerTest.java
@@ -66,22 +66,14 @@
@RunWith(RobolectricTestRunner.class)
public final class BatteryChartPreferenceControllerTest {
- @Mock
- private Intent mIntent;
- @Mock
- private UserManager mUserManager;
- @Mock
- private SettingsActivity mSettingsActivity;
- @Mock
- private TextView mChartSummaryTextView;
- @Mock
- private BatteryChartView mDailyChartView;
- @Mock
- private BatteryChartView mHourlyChartView;
- @Mock
- private ViewPropertyAnimator mViewPropertyAnimator;
- @Mock
- private LinearLayout.LayoutParams mLayoutParams;
+ @Mock private Intent mIntent;
+ @Mock private UserManager mUserManager;
+ @Mock private SettingsActivity mSettingsActivity;
+ @Mock private TextView mChartSummaryTextView;
+ @Mock private BatteryChartView mDailyChartView;
+ @Mock private BatteryChartView mHourlyChartView;
+ @Mock private ViewPropertyAnimator mViewPropertyAnimator;
+ @Mock private LinearLayout.LayoutParams mLayoutParams;
private Context mContext;
private FakeFeatureFactory mFeatureFactory;
@@ -97,11 +89,9 @@
mFeatureFactory = FakeFeatureFactory.setupForTest();
mContext = spy(RuntimeEnvironment.application);
doReturn(mContext).when(mContext).getApplicationContext();
- doReturn(mUserManager)
- .when(mContext)
- .getSystemService(UserManager.class);
+ doReturn(mUserManager).when(mContext).getSystemService(UserManager.class);
doReturn(true).when(mUserManager).isUserUnlocked(anyInt());
- doReturn(new int[]{0}).when(mUserManager).getProfileIdsWithDisabled(anyInt());
+ doReturn(new int[] {0}).when(mUserManager).getProfileIdsWithDisabled(anyInt());
final Resources resources = spy(mContext.getResources());
resources.getConfiguration().setLocales(new LocaleList(new Locale("en_US")));
doReturn(resources).when(mContext).getResources();
@@ -122,7 +112,7 @@
// Adds fake testing data.
BatteryDiffEntry.sResourceCache.put(
"fakeBatteryDiffEntryKey",
- new BatteryEntry.NameAndIcon("fakeName", /*icon=*/ null, /*iconId=*/ 1));
+ new BatteryEntry.NameAndIcon("fakeName", /* icon= */ null, /* iconId= */ 1));
}
@Test
@@ -156,15 +146,18 @@
verify(mDailyChartView, atLeastOnce()).setVisibility(View.GONE);
// Ignore fast refresh ui from the data processor callback.
verify(mHourlyChartView, atLeast(0)).setViewModel(null);
- verify(mHourlyChartView, atLeastOnce()).setViewModel(new BatteryChartViewModel(
- List.of(100, 99, 97, 95, 66),
- List.of(1619247660000L /* 7:01 AM */,
- 1619251200000L /* 8 AM */,
- 1619258400000L /* 10 AM */,
- 1619265600000L /* 12 PM */,
- 1619265720000L /* now (12:02 PM) */),
- BatteryChartViewModel.AxisLabelPosition.BETWEEN_TRAPEZOIDS,
- mBatteryChartPreferenceController.mHourlyChartLabelTextGenerator));
+ verify(mHourlyChartView, atLeastOnce())
+ .setViewModel(
+ new BatteryChartViewModel(
+ List.of(100, 99, 97, 95, 66),
+ List.of(
+ 1619247660000L /* 7:01 AM */,
+ 1619251200000L /* 8 AM */,
+ 1619258400000L /* 10 AM */,
+ 1619265600000L /* 12 PM */,
+ 1619265720000L /* now (12:02 PM) */),
+ BatteryChartViewModel.AxisLabelPosition.BETWEEN_TRAPEZOIDS,
+ mBatteryChartPreferenceController.mHourlyChartLabelTextGenerator));
}
@Test
@@ -173,15 +166,17 @@
reset(mHourlyChartView);
setupHourlyChartViewAnimationMock();
- BatteryChartViewModel expectedDailyViewModel = new BatteryChartViewModel(
- List.of(100, 83, 59, 66),
- // "Sat", "Sun", "Mon", "Mon"
- List.of(1619247660000L /* Sat */,
- 1619308800000L /* Sun */,
- 1619395200000L /* Mon */,
- 1619460120000L /* Mon */),
- BatteryChartViewModel.AxisLabelPosition.CENTER_OF_TRAPEZOIDS,
- mBatteryChartPreferenceController.mDailyChartLabelTextGenerator);
+ BatteryChartViewModel expectedDailyViewModel =
+ new BatteryChartViewModel(
+ List.of(100, 83, 59, 66),
+ // "Sat", "Sun", "Mon", "Mon"
+ List.of(
+ 1619247660000L /* Sat */,
+ 1619308800000L /* Sun */,
+ 1619395200000L /* Mon */,
+ 1619460120000L /* Mon */),
+ BatteryChartViewModel.AxisLabelPosition.CENTER_OF_TRAPEZOIDS,
+ mBatteryChartPreferenceController.mDailyChartLabelTextGenerator);
mBatteryChartPreferenceController.onBatteryLevelDataUpdate(createBatteryLevelData(60));
@@ -202,20 +197,23 @@
expectedDailyViewModel.setSelectedIndex(0);
verify(mDailyChartView).setViewModel(expectedDailyViewModel);
- verify(mHourlyChartView).setViewModel(new BatteryChartViewModel(
- List.of(100, 99, 97, 95, 93, 91, 89, 87, 85, 83),
- List.of(1619247660000L /* 7:01 AM */,
- 1619251200000L /* 8 AM */,
- 1619258400000L /* 10 AM */,
- 1619265600000L /* 12 PM */,
- 1619272800000L /* 2 PM */,
- 1619280000000L /* 4 PM */,
- 1619287200000L /* 6 PM */,
- 1619294400000L /* 8 PM */,
- 1619301600000L /* 10 PM */,
- 1619308800000L /* 12 AM */),
- BatteryChartViewModel.AxisLabelPosition.BETWEEN_TRAPEZOIDS,
- mBatteryChartPreferenceController.mHourlyChartLabelTextGenerator));
+ verify(mHourlyChartView)
+ .setViewModel(
+ new BatteryChartViewModel(
+ List.of(100, 99, 97, 95, 93, 91, 89, 87, 85, 83),
+ List.of(
+ 1619247660000L /* 7:01 AM */,
+ 1619251200000L /* 8 AM */,
+ 1619258400000L /* 10 AM */,
+ 1619265600000L /* 12 PM */,
+ 1619272800000L /* 2 PM */,
+ 1619280000000L /* 4 PM */,
+ 1619287200000L /* 6 PM */,
+ 1619294400000L /* 8 PM */,
+ 1619301600000L /* 10 PM */,
+ 1619308800000L /* 12 AM */),
+ BatteryChartViewModel.AxisLabelPosition.BETWEEN_TRAPEZOIDS,
+ mBatteryChartPreferenceController.mHourlyChartLabelTextGenerator));
reset(mDailyChartView);
reset(mHourlyChartView);
@@ -228,23 +226,25 @@
verify(mViewPropertyAnimator, atLeastOnce()).alpha(1f);
expectedDailyViewModel.setSelectedIndex(1);
verify(mDailyChartView).setViewModel(expectedDailyViewModel);
- BatteryChartViewModel expectedHourlyViewModel = new BatteryChartViewModel(
- List.of(83, 81, 79, 77, 75, 73, 71, 69, 67, 65, 63, 61, 59),
- List.of(1619308800000L /* 12 AM */,
- 1619316000000L /* 2 AM */,
- 1619323200000L /* 4 AM */,
- 1619330400000L /* 6 AM */,
- 1619337600000L /* 8 AM */,
- 1619344800000L /* 10 AM */,
- 1619352000000L /* 12 PM */,
- 1619359200000L /* 2 PM */,
- 1619366400000L /* 4 PM */,
- 1619373600000L /* 6 PM */,
- 1619380800000L /* 8 PM */,
- 1619388000000L /* 10 PM */,
- 1619395200000L /* 12 AM */),
- BatteryChartViewModel.AxisLabelPosition.BETWEEN_TRAPEZOIDS,
- mBatteryChartPreferenceController.mHourlyChartLabelTextGenerator);
+ BatteryChartViewModel expectedHourlyViewModel =
+ new BatteryChartViewModel(
+ List.of(83, 81, 79, 77, 75, 73, 71, 69, 67, 65, 63, 61, 59),
+ List.of(
+ 1619308800000L /* 12 AM */,
+ 1619316000000L /* 2 AM */,
+ 1619323200000L /* 4 AM */,
+ 1619330400000L /* 6 AM */,
+ 1619337600000L /* 8 AM */,
+ 1619344800000L /* 10 AM */,
+ 1619352000000L /* 12 PM */,
+ 1619359200000L /* 2 PM */,
+ 1619366400000L /* 4 PM */,
+ 1619373600000L /* 6 PM */,
+ 1619380800000L /* 8 PM */,
+ 1619388000000L /* 10 PM */,
+ 1619395200000L /* 12 AM */),
+ BatteryChartViewModel.AxisLabelPosition.BETWEEN_TRAPEZOIDS,
+ mBatteryChartPreferenceController.mHourlyChartLabelTextGenerator);
expectedHourlyViewModel.setSelectedIndex(6);
verify(mHourlyChartView).setViewModel(expectedHourlyViewModel);
@@ -259,22 +259,24 @@
verify(mViewPropertyAnimator, atLeastOnce()).alpha(1f);
expectedDailyViewModel.setSelectedIndex(2);
verify(mDailyChartView).setViewModel(expectedDailyViewModel);
- verify(mHourlyChartView).setViewModel(new BatteryChartViewModel(
- List.of(59, 57, 55, 53, 51, 49, 47, 45, 43, 41, 66),
- List.of(1619395200000L /* 12 AM */,
- 1619402400000L /* 2 AM */,
- 1619409600000L /* 4 AM */,
- 1619416800000L /* 6 AM */,
- 1619424000000L /* 8 AM */,
- 1619431200000L /* 10 AM */,
- 1619438400000L /* 12 PM */,
- 1619445600000L /* 2 PM */,
- 1619452800000L /* 4 PM */,
- 1619460000000L /* 6 PM */,
- 1619460120000L /* now (6:02 PM) */),
- BatteryChartViewModel.AxisLabelPosition.BETWEEN_TRAPEZOIDS,
- mBatteryChartPreferenceController.mHourlyChartLabelTextGenerator));
-
+ verify(mHourlyChartView)
+ .setViewModel(
+ new BatteryChartViewModel(
+ List.of(59, 57, 55, 53, 51, 49, 47, 45, 43, 41, 66),
+ List.of(
+ 1619395200000L /* 12 AM */,
+ 1619402400000L /* 2 AM */,
+ 1619409600000L /* 4 AM */,
+ 1619416800000L /* 6 AM */,
+ 1619424000000L /* 8 AM */,
+ 1619431200000L /* 10 AM */,
+ 1619438400000L /* 12 PM */,
+ 1619445600000L /* 2 PM */,
+ 1619452800000L /* 4 PM */,
+ 1619460000000L /* 6 PM */,
+ 1619460120000L /* now (6:02 PM) */),
+ BatteryChartViewModel.AxisLabelPosition.BETWEEN_TRAPEZOIDS,
+ mBatteryChartPreferenceController.mHourlyChartLabelTextGenerator));
}
@Test
@@ -408,8 +410,8 @@
mBatteryChartPreferenceController.mDailyChartIndex = 0;
mBatteryChartPreferenceController.mHourlyChartIndex = 2;
- assertThat(mBatteryChartPreferenceController.getSlotInformation()).isEqualTo(
- "10 AM - 12 PM");
+ assertThat(mBatteryChartPreferenceController.getSlotInformation())
+ .isEqualTo("10 AM - 12 PM");
}
@Test
@@ -418,8 +420,8 @@
mBatteryChartPreferenceController.mDailyChartIndex = 1;
mBatteryChartPreferenceController.mHourlyChartIndex = 8;
- assertThat(mBatteryChartPreferenceController.getSlotInformation()).isEqualTo(
- "Sunday 4 PM - 6 PM");
+ assertThat(mBatteryChartPreferenceController.getSlotInformation())
+ .isEqualTo("Sunday 4 PM - 6 PM");
}
@Test
@@ -428,8 +430,8 @@
mBatteryChartPreferenceController.mDailyChartIndex = 0;
mBatteryChartPreferenceController.mHourlyChartIndex = 0;
- assertThat(mBatteryChartPreferenceController.getSlotInformation()).isEqualTo(
- "7:01 AM - 8 AM");
+ assertThat(mBatteryChartPreferenceController.getSlotInformation())
+ .isEqualTo("7:01 AM - 8 AM");
}
@Test
@@ -438,8 +440,7 @@
mBatteryChartPreferenceController.mDailyChartIndex = 0;
mBatteryChartPreferenceController.mHourlyChartIndex = 3;
- assertThat(mBatteryChartPreferenceController.getSlotInformation()).isEqualTo(
- "12 PM - now");
+ assertThat(mBatteryChartPreferenceController.getSlotInformation()).isEqualTo("12 PM - now");
}
@Test
@@ -448,8 +449,8 @@
mBatteryChartPreferenceController.mDailyChartIndex = 0;
mBatteryChartPreferenceController.mHourlyChartIndex = 0;
- assertThat(mBatteryChartPreferenceController.getSlotInformation()).isEqualTo(
- "7:01 AM - now");
+ assertThat(mBatteryChartPreferenceController.getSlotInformation())
+ .isEqualTo("7:01 AM - now");
}
@Test
@@ -508,7 +509,7 @@
private BatteryChartPreferenceController createController() {
final BatteryChartPreferenceController controller =
new BatteryChartPreferenceController(
- mContext, /*lifecycle=*/ null, mSettingsActivity);
+ mContext, /* lifecycle= */ null, mSettingsActivity);
controller.mPrefContext = mContext;
return controller;
}
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryChartViewTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryChartViewTest.java
index 5213199..4263bad 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryChartViewTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryChartViewTest.java
@@ -45,8 +45,7 @@
private FakeFeatureFactory mFeatureFactory;
private PowerUsageFeatureProvider mPowerUsageFeatureProvider;
- @Mock
- private View mMockView;
+ @Mock private View mMockView;
@Before
public void setUp() {
@@ -54,17 +53,19 @@
mFeatureFactory = FakeFeatureFactory.setupForTest();
mPowerUsageFeatureProvider = mFeatureFactory.powerUsageFeatureProvider;
mContext = spy(RuntimeEnvironment.application);
- mContext.getResources().getConfiguration().setLocales(
- new LocaleList(new Locale("en_US")));
+ mContext.getResources().getConfiguration().setLocales(new LocaleList(new Locale("en_US")));
mBatteryChartView = new BatteryChartView(mContext);
}
@Test
public void onClick_invokesCallback() {
final int originalSelectedIndex = 2;
- BatteryChartViewModel batteryChartViewModel = new BatteryChartViewModel(
- List.of(90, 80, 70, 60), List.of(0L, 0L, 0L, 0L),
- BatteryChartViewModel.AxisLabelPosition.BETWEEN_TRAPEZOIDS, null);
+ BatteryChartViewModel batteryChartViewModel =
+ new BatteryChartViewModel(
+ List.of(90, 80, 70, 60),
+ List.of(0L, 0L, 0L, 0L),
+ BatteryChartViewModel.AxisLabelPosition.BETWEEN_TRAPEZOIDS,
+ null);
batteryChartViewModel.setSelectedIndex(originalSelectedIndex);
mBatteryChartView.setViewModel(batteryChartViewModel);
for (int i = 0; i < mBatteryChartView.mTrapezoidSlots.length; i++) {
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryDiffDataTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryDiffDataTest.java
index 04d601f..ffe3c44 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryDiffDataTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryDiffDataTest.java
@@ -149,16 +149,12 @@
createBatteryDiffEntry(mContext, /* consumePower= */ 28.5, /* key= */ "APP_1"));
batteryDiffEntries.add(
createBatteryDiffEntry(
- mContext,
- /* consumePower= */ 20,
- BatteryDiffEntry.UNINSTALLED_APPS_KEY));
+ mContext, /* consumePower= */ 20, BatteryDiffEntry.UNINSTALLED_APPS_KEY));
batteryDiffEntries.add(
createBatteryDiffEntry(mContext, /* consumePower= */ 3, /* key= */ "APP_2"));
batteryDiffEntries.add(
createBatteryDiffEntry(
- mContext,
- /* consumePower= */ 28.5,
- BatteryDiffEntry.SYSTEM_APPS_KEY));
+ mContext, /* consumePower= */ 28.5, BatteryDiffEntry.SYSTEM_APPS_KEY));
batteryDiffEntries.add(
createBatteryDiffEntry(mContext, /* consumePower= */ 20, /* key= */ "APP_3"));
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryDiffEntryTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryDiffEntryTest.java
index bbba294..d8b733c 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryDiffEntryTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryDiffEntryTest.java
@@ -64,7 +64,6 @@
private static final String UNINSTALLED_PACKAGE_NAME = "com.android.testing.uninstalled";
private static final String UID_ZERO_PACKAGE_NAME = "com.android.testing.uid.zero";
-
private Context mContext;
@Mock private ApplicationInfo mMockAppInfo;
@@ -451,7 +450,6 @@
assertThat(entry.isUninstalledEntry()).isFalse();
assertThat(BatteryDiffEntry.sPackageNameAndUidCache.containsKey(PACKAGE_NAME)).isTrue();
assertThat(BatteryDiffEntry.sPackageNameAndUidCache.get(PACKAGE_NAME)).isEqualTo(UID);
-
}
@Test
@@ -602,7 +600,7 @@
final BatteryHistEntry batteryHistEntry = new BatteryHistEntry(values);
doReturn(drawable).when(mMockPackageManager).getDefaultActivityIcon();
doReturn(null).when(mMockPackageManager).getApplicationInfo("com.a.b.c", 0);
- doReturn(new String[]{"com.a.b.c"}).when(mMockPackageManager).getPackagesForUid(1001);
+ doReturn(new String[] {"com.a.b.c"}).when(mMockPackageManager).getPackagesForUid(1001);
return createBatteryDiffEntry(10, batteryHistEntry);
}
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryEntryTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryEntryTest.java
index e9606da..83b4458 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryEntryTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryEntryTest.java
@@ -61,18 +61,15 @@
private static final String HIGH_DRAIN_PACKAGE = "com.android.test.screen";
private static final String ANDROID_PACKAGE = "android";
- @Rule
- public MockitoRule mocks = MockitoJUnit.rule();
+ @Rule public MockitoRule mocks = MockitoJUnit.rule();
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
private Context mMockContext;
+
private Context mContext;
- @Mock
- private PackageManager mMockPackageManager;
- @Mock
- private UserManager mMockUserManager;
- @Mock
- private UidBatteryConsumer mUidBatteryConsumer;
+ @Mock private PackageManager mMockPackageManager;
+ @Mock private UserManager mMockUserManager;
+ @Mock private UidBatteryConsumer mUidBatteryConsumer;
@Before
public void stubContextToReturnMockPackageManager() {
@@ -83,23 +80,27 @@
@Before
public void stubPackageManagerToReturnAppPackageAndName() throws NameNotFoundException {
when(mMockPackageManager.getApplicationInfo(anyString(), eq(0) /* no flags */))
- .thenAnswer(invocation -> {
- ApplicationInfo info = new ApplicationInfo();
- info.packageName = invocation.getArgument(0);
- return info;
- });
+ .thenAnswer(
+ invocation -> {
+ ApplicationInfo info = new ApplicationInfo();
+ info.packageName = invocation.getArgument(0);
+ return info;
+ });
when(mMockPackageManager.getApplicationLabel(any(ApplicationInfo.class)))
- .thenAnswer(invocation -> LABEL_PREFIX
- + ((ApplicationInfo) invocation.getArgument(0)).packageName);
+ .thenAnswer(
+ invocation ->
+ LABEL_PREFIX
+ + ((ApplicationInfo) invocation.getArgument(0))
+ .packageName);
}
- private BatteryEntry createBatteryEntryForApp(String[] packages, String packageName,
- String highDrainPackage) {
+ private BatteryEntry createBatteryEntryForApp(
+ String[] packages, String packageName, String highDrainPackage) {
UidBatteryConsumer consumer = mock(UidBatteryConsumer.class);
when(consumer.getUid()).thenReturn(APP_UID);
when(consumer.getPackageWithHighestDrain()).thenReturn(highDrainPackage);
- return new BatteryEntry(mMockContext, mMockUserManager,
- consumer, false, APP_UID, packages, packageName);
+ return new BatteryEntry(
+ mMockContext, mMockUserManager, consumer, false, APP_UID, packages, packageName);
}
private BatteryEntry createAggregateBatteryEntry(int powerComponentId) {
@@ -122,14 +123,13 @@
private BatteryEntry createUserBatteryConsumer(int userId) {
UserBatteryConsumer consumer = mock(UserBatteryConsumer.class);
when(consumer.getUserId()).thenReturn(userId);
- return new BatteryEntry(mMockContext, mMockUserManager,
- consumer, false, 0, null, null);
+ return new BatteryEntry(mMockContext, mMockUserManager, consumer, false, 0, null, null);
}
@Test
public void batteryEntryForApp_shouldSetDefaultPackageNameAndLabel() throws Exception {
- BatteryEntry entry = createBatteryEntryForApp(null, APP_DEFAULT_PACKAGE_NAME,
- HIGH_DRAIN_PACKAGE);
+ BatteryEntry entry =
+ createBatteryEntryForApp(null, APP_DEFAULT_PACKAGE_NAME, HIGH_DRAIN_PACKAGE);
assertThat(entry.getDefaultPackageName()).isEqualTo(APP_DEFAULT_PACKAGE_NAME);
assertThat(entry.getLabel()).isEqualTo(LABEL_PREFIX + APP_DEFAULT_PACKAGE_NAME);
@@ -157,20 +157,24 @@
@Test
public void batteryEntryForApp_shouldSetHighestDrainPackage_whenMultiplePackagesFoundForUid() {
- BatteryEntry entry = createBatteryEntryForApp(
- new String[]{APP_DEFAULT_PACKAGE_NAME, "package2", "package3"}, null,
- HIGH_DRAIN_PACKAGE);
+ BatteryEntry entry =
+ createBatteryEntryForApp(
+ new String[] {APP_DEFAULT_PACKAGE_NAME, "package2", "package3"},
+ null,
+ HIGH_DRAIN_PACKAGE);
assertThat(entry.getLabel()).isEqualTo(LABEL_PREFIX + HIGH_DRAIN_PACKAGE);
}
@Test
public void batteryEntryForAOD_containCorrectInfo() {
- final BatteryEntry entry = new BatteryEntry(RuntimeEnvironment.application,
- BatteryConsumer.POWER_COMPONENT_AMBIENT_DISPLAY,
- /* devicePowerMah= */ 200,
- /* usageDurationMs= */ 1000,
- /* isHidden= */ false);
+ final BatteryEntry entry =
+ new BatteryEntry(
+ RuntimeEnvironment.application,
+ BatteryConsumer.POWER_COMPONENT_AMBIENT_DISPLAY,
+ /* devicePowerMah= */ 200,
+ /* usageDurationMs= */ 1000,
+ /* isHidden= */ false);
assertThat(entry.mIconId).isEqualTo(R.drawable.ic_settings_aod);
assertThat(entry.mName).isEqualTo("Ambient display");
@@ -178,10 +182,12 @@
@Test
public void batteryEntryForCustomComponent_containCorrectInfo() {
- final BatteryEntry entry = new BatteryEntry(RuntimeEnvironment.application,
- BatteryConsumer.FIRST_CUSTOM_POWER_COMPONENT_ID + 42,
- /* powerComponentName= */ "ABC",
- /* devicePowerMah= */ 200);
+ final BatteryEntry entry =
+ new BatteryEntry(
+ RuntimeEnvironment.application,
+ BatteryConsumer.FIRST_CUSTOM_POWER_COMPONENT_ID + 42,
+ /* powerComponentName= */ "ABC",
+ /* devicePowerMah= */ 200);
assertThat(entry.mIconId).isEqualTo(R.drawable.ic_power_system);
assertThat(entry.mName).isEqualTo("ABC");
@@ -192,19 +198,28 @@
when(mUidBatteryConsumer.getTimeInStateMs(UidBatteryConsumer.STATE_FOREGROUND))
.thenReturn(100L);
- final BatteryEntry entry = new BatteryEntry(RuntimeEnvironment.application,
- mMockUserManager, mUidBatteryConsumer, false, 0, null, null);
+ final BatteryEntry entry =
+ new BatteryEntry(
+ RuntimeEnvironment.application,
+ mMockUserManager,
+ mUidBatteryConsumer,
+ false,
+ 0,
+ null,
+ null);
assertThat(entry.getTimeInForegroundMs()).isEqualTo(100L);
}
@Test
public void getTimeInForegroundMs_aggregateBatteryConsumer() {
- final BatteryEntry entry = new BatteryEntry(RuntimeEnvironment.application,
- BatteryConsumer.POWER_COMPONENT_BLUETOOTH,
- /* devicePowerMah= */ 10,
- /* usageDurationMs= */ 100,
- /* isHidden= */ false);
+ final BatteryEntry entry =
+ new BatteryEntry(
+ RuntimeEnvironment.application,
+ BatteryConsumer.POWER_COMPONENT_BLUETOOTH,
+ /* devicePowerMah= */ 10,
+ /* usageDurationMs= */ 100,
+ /* isHidden= */ false);
assertThat(entry.getTimeInForegroundMs()).isEqualTo(100L);
}
@@ -214,19 +229,28 @@
when(mUidBatteryConsumer.getTimeInStateMs(UidBatteryConsumer.STATE_BACKGROUND))
.thenReturn(100L);
- final BatteryEntry entry = new BatteryEntry(RuntimeEnvironment.application,
- mMockUserManager, mUidBatteryConsumer, false, 0, null, null);
+ final BatteryEntry entry =
+ new BatteryEntry(
+ RuntimeEnvironment.application,
+ mMockUserManager,
+ mUidBatteryConsumer,
+ false,
+ 0,
+ null,
+ null);
assertThat(entry.getTimeInBackgroundMs()).isEqualTo(100L);
}
@Test
public void getTimeInBackgroundMs_systemConsumer() {
- final BatteryEntry entry = new BatteryEntry(RuntimeEnvironment.application,
- BatteryConsumer.POWER_COMPONENT_BLUETOOTH,
- /* devicePowerMah= */ 100,
- /* usageDurationMs= */ 1000,
- /* isHidden= */ false);
+ final BatteryEntry entry =
+ new BatteryEntry(
+ RuntimeEnvironment.application,
+ BatteryConsumer.POWER_COMPONENT_BLUETOOTH,
+ /* devicePowerMah= */ 100,
+ /* usageDurationMs= */ 1000,
+ /* isHidden= */ false);
assertThat(entry.getTimeInBackgroundMs()).isEqualTo(0);
}
@@ -241,16 +265,17 @@
@Test
public void getKey_AggregateBatteryConsumer_returnComponentId() {
- final BatteryEntry entry = createAggregateBatteryEntry(
- BatteryConsumer.POWER_COMPONENT_BLUETOOTH);
+ final BatteryEntry entry =
+ createAggregateBatteryEntry(BatteryConsumer.POWER_COMPONENT_BLUETOOTH);
final String key = entry.getKey();
assertThat(key).isEqualTo("S|2");
}
@Test
public void getKey_CustomAggregateBatteryConsumer_returnComponentId() {
- final BatteryEntry entry = createCustomAggregateBatteryEntry(
- BatteryConsumer.FIRST_CUSTOM_POWER_COMPONENT_ID + 42);
+ final BatteryEntry entry =
+ createCustomAggregateBatteryEntry(
+ BatteryConsumer.FIRST_CUSTOM_POWER_COMPONENT_ID + 42);
final String key = entry.getKey();
assertThat(key).isEqualTo("S|1042");
}
@@ -269,19 +294,18 @@
doReturn(mMockUserManager).when(mContext).getSystemService(UserManager.class);
doReturn(null).when(mMockUserManager).getUserInfo(userId);
- final NameAndIcon nameAndIcon = BatteryEntry.getNameAndIconFromUserId(
- mContext, userId);
- assertThat(nameAndIcon.mName).isEqualTo(getString(
- R.string.running_process_item_removed_user_label));
+ final NameAndIcon nameAndIcon = BatteryEntry.getNameAndIconFromUserId(mContext, userId);
+ assertThat(nameAndIcon.mName)
+ .isEqualTo(getString(R.string.running_process_item_removed_user_label));
assertThat(nameAndIcon.mIcon).isNull();
}
@Test
public void getNameAndIconFromUid_rerturnExpectedName() {
- final NameAndIcon nameAndIcon = BatteryEntry.getNameAndIconFromUid(
- mContext, /* name */ null, /* uid */ 0);
- assertThat(nameAndIcon.mName).isEqualTo(
- getString(com.android.settingslib.R.string.process_kernel_label));
+ final NameAndIcon nameAndIcon =
+ BatteryEntry.getNameAndIconFromUid(mContext, /* name */ null, /* uid */ 0);
+ assertThat(nameAndIcon.mName)
+ .isEqualTo(getString(com.android.settingslib.R.string.process_kernel_label));
assertNameAndIcon("mediaserver", R.string.process_mediaserver_label);
assertNameAndIcon("dex2oat32", R.string.process_dex2oat_label);
@@ -291,63 +315,75 @@
@Test
public void getNameAndIconFromUid_tetheringUid_rerturnExpectedName() {
- final NameAndIcon nameAndIcon = BatteryEntry.getNameAndIconFromUid(
- mContext, /* name */ null, /* uid */ BatteryUtils.UID_TETHERING);
+ final NameAndIcon nameAndIcon =
+ BatteryEntry.getNameAndIconFromUid(
+ mContext, /* name */ null, /* uid */ BatteryUtils.UID_TETHERING);
assertThat(nameAndIcon.mName).isEqualTo(getString(R.string.process_network_tethering));
}
@Test
public void getNameAndIconFromUid_removedAppsUid_rerturnExpectedName() {
- final NameAndIcon nameAndIcon = BatteryEntry.getNameAndIconFromUid(
- mContext, /* name */ null, /* uid */ BatteryUtils.UID_REMOVED_APPS);
+ final NameAndIcon nameAndIcon =
+ BatteryEntry.getNameAndIconFromUid(
+ mContext, /* name */ null, /* uid */ BatteryUtils.UID_REMOVED_APPS);
assertThat(nameAndIcon.mName).isEqualTo(getString(R.string.process_removed_apps));
}
@Test
public void getNameAndIconFromPowerComponent_rerturnExpectedNameAndIcon() {
- assertNameAndIcon(BatteryConsumer.POWER_COMPONENT_SCREEN,
+ assertNameAndIcon(
+ BatteryConsumer.POWER_COMPONENT_SCREEN,
R.string.power_screen,
R.drawable.ic_settings_display);
- assertNameAndIcon(BatteryConsumer.POWER_COMPONENT_CPU,
+ assertNameAndIcon(
+ BatteryConsumer.POWER_COMPONENT_CPU,
R.string.power_cpu,
R.drawable.ic_settings_cpu);
- assertNameAndIcon(BatteryConsumer.POWER_COMPONENT_BLUETOOTH,
+ assertNameAndIcon(
+ BatteryConsumer.POWER_COMPONENT_BLUETOOTH,
R.string.power_bluetooth,
R.drawable.ic_settings_bluetooth);
- assertNameAndIcon(BatteryConsumer.POWER_COMPONENT_CAMERA,
+ assertNameAndIcon(
+ BatteryConsumer.POWER_COMPONENT_CAMERA,
R.string.power_camera,
R.drawable.ic_settings_camera);
- assertNameAndIcon(BatteryConsumer.POWER_COMPONENT_FLASHLIGHT,
+ assertNameAndIcon(
+ BatteryConsumer.POWER_COMPONENT_FLASHLIGHT,
R.string.power_flashlight,
R.drawable.ic_settings_flashlight);
- assertNameAndIcon(BatteryConsumer.POWER_COMPONENT_MOBILE_RADIO,
+ assertNameAndIcon(
+ BatteryConsumer.POWER_COMPONENT_MOBILE_RADIO,
R.string.power_cell,
R.drawable.ic_settings_cellular);
- assertNameAndIcon(BatteryConsumer.POWER_COMPONENT_GNSS,
+ assertNameAndIcon(
+ BatteryConsumer.POWER_COMPONENT_GNSS,
R.string.power_gps,
R.drawable.ic_settings_gps);
- assertNameAndIcon(BatteryConsumer.POWER_COMPONENT_WIFI,
+ assertNameAndIcon(
+ BatteryConsumer.POWER_COMPONENT_WIFI,
R.string.power_wifi,
R.drawable.ic_settings_wireless_no_theme);
- assertNameAndIcon(BatteryConsumer.POWER_COMPONENT_PHONE,
+ assertNameAndIcon(
+ BatteryConsumer.POWER_COMPONENT_PHONE,
R.string.power_phone,
R.drawable.ic_settings_voice_calls);
- assertNameAndIcon(BatteryConsumer.POWER_COMPONENT_AMBIENT_DISPLAY,
+ assertNameAndIcon(
+ BatteryConsumer.POWER_COMPONENT_AMBIENT_DISPLAY,
R.string.ambient_display_screen_title,
R.drawable.ic_settings_aod);
}
private void assertNameAndIcon(String name, int stringId) {
- final NameAndIcon nameAndIcon = BatteryEntry.getNameAndIconFromUid(
- mContext, name, /* uid */ 1000);
+ final NameAndIcon nameAndIcon =
+ BatteryEntry.getNameAndIconFromUid(mContext, name, /* uid */ 1000);
assertThat(nameAndIcon.mName).isEqualTo(getString(stringId));
}
private void assertNameAndIcon(int powerComponentId, int stringId, int iconId) {
- final NameAndIcon nameAndIcon = BatteryEntry.getNameAndIconFromPowerComponent(
- mContext, powerComponentId);
+ final NameAndIcon nameAndIcon =
+ BatteryEntry.getNameAndIconFromPowerComponent(mContext, powerComponentId);
assertThat(nameAndIcon.mName).isEqualTo(getString(stringId));
assertThat(nameAndIcon.mIconId).isEqualTo(iconId);
}
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryHistEntryTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryHistEntryTest.java
index 609f2fc..02800f7 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryHistEntryTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryHistEntryTest.java
@@ -41,10 +41,8 @@
@RunWith(RobolectricTestRunner.class)
public final class BatteryHistEntryTest {
- @Mock
- private BatteryEntry mMockBatteryEntry;
- @Mock
- private BatteryUsageStats mBatteryUsageStats;
+ @Mock private BatteryEntry mMockBatteryEntry;
+ @Mock private BatteryUsageStats mBatteryUsageStats;
@Before
public void setUp() {
@@ -75,17 +73,17 @@
ConvertUtils.convertBatteryEntryToContentValues(
mMockBatteryEntry,
mBatteryUsageStats,
- /*batteryLevel=*/ 12,
- /*batteryStatus=*/ BatteryManager.BATTERY_STATUS_FULL,
- /*batteryHealth=*/ BatteryManager.BATTERY_HEALTH_COLD,
- /*bootTimestamp=*/ 101L,
- /*timestamp=*/ 10001L,
- /*isFullChargeStart=*/ false);
+ /* batteryLevel= */ 12,
+ /* batteryStatus= */ BatteryManager.BATTERY_STATUS_FULL,
+ /* batteryHealth= */ BatteryManager.BATTERY_HEALTH_COLD,
+ /* bootTimestamp= */ 101L,
+ /* timestamp= */ 10001L,
+ /* isFullChargeStart= */ false);
assertBatteryHistEntry(
new BatteryHistEntry(values),
- /*drainType=*/ expectedType,
- /*percentOfTotal=*/ mMockBatteryEntry.mPercent);
+ /* drainType= */ expectedType,
+ /* percentOfTotal= */ mMockBatteryEntry.mPercent);
}
@Test
@@ -98,25 +96,25 @@
public void testConstructor_cursor_returnsExpectedResult() {
assertBatteryHistEntry(
createBatteryHistEntry(
- /*bootTimestamp=*/ 101L,
- /*timestamp=*/ 10001L,
- /*totalPower=*/ 5.1,
- /*consumePower=*/ 1.1,
- /*foregroundUsageConsumePower=*/ 1.2,
- /*foregroundServiceUsageConsumePower=*/ 1.3,
- /*backgroundUsageConsumePower=*/ 1.4,
- /*cachedUsageConsumePower=*/ 1.5,
- /*foregroundUsageTimeInMs=*/ 1234L,
- /*backgroundUsageTimeInMs=*/ 5689L,
- /*batteryLevel=*/ 12),
- /*drainType=*/ 3,
- /*percentOfTotal=*/ 0.3);
+ /* bootTimestamp= */ 101L,
+ /* timestamp= */ 10001L,
+ /* totalPower= */ 5.1,
+ /* consumePower= */ 1.1,
+ /* foregroundUsageConsumePower= */ 1.2,
+ /* foregroundServiceUsageConsumePower= */ 1.3,
+ /* backgroundUsageConsumePower= */ 1.4,
+ /* cachedUsageConsumePower= */ 1.5,
+ /* foregroundUsageTimeInMs= */ 1234L,
+ /* backgroundUsageTimeInMs= */ 5689L,
+ /* batteryLevel= */ 12),
+ /* drainType= */ 3,
+ /* percentOfTotal= */ 0.3);
}
@Test
public void testGetKey_consumerUidType_returnExpectedString() {
- final ContentValues values = getContentValuesWithType(
- ConvertUtils.CONSUMER_TYPE_UID_BATTERY);
+ final ContentValues values =
+ getContentValuesWithType(ConvertUtils.CONSUMER_TYPE_UID_BATTERY);
values.put(BatteryHistEntry.KEY_UID, 3);
final BatteryHistEntry batteryHistEntry = new BatteryHistEntry(values);
@@ -125,8 +123,8 @@
@Test
public void testGetKey_consumerUserType_returnExpectedString() {
- final ContentValues values = getContentValuesWithType(
- ConvertUtils.CONSUMER_TYPE_USER_BATTERY);
+ final ContentValues values =
+ getContentValuesWithType(ConvertUtils.CONSUMER_TYPE_USER_BATTERY);
values.put(BatteryHistEntry.KEY_USER_ID, 2);
final BatteryHistEntry batteryHistEntry = new BatteryHistEntry(values);
@@ -135,14 +133,12 @@
@Test
public void testGetKey_consumerSystemType_returnExpectedString() {
- final ContentValues values = getContentValuesWithType(
- ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY);
+ final ContentValues values =
+ getContentValuesWithType(ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY);
final BatteryInformation batteryInformation =
- BatteryInformation
- .newBuilder()
- .setDrainType(1)
- .build();
- values.put(BatteryHistEntry.KEY_BATTERY_INFORMATION,
+ BatteryInformation.newBuilder().setDrainType(1).build();
+ values.put(
+ BatteryHistEntry.KEY_BATTERY_INFORMATION,
ConvertUtils.convertBatteryInformationToString(batteryInformation));
final BatteryHistEntry batteryHistEntry = new BatteryHistEntry(values);
@@ -151,32 +147,51 @@
@Test
public void testIsAppEntry_returnExpectedResult() {
- assertThat(isUidConsumer(
- createEntry(ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY).mConsumerType)).isFalse();
- assertThat(isUidConsumer(
- createEntry(ConvertUtils.CONSUMER_TYPE_USER_BATTERY).mConsumerType)).isFalse();
- assertThat(isUidConsumer(
- createEntry(ConvertUtils.CONSUMER_TYPE_UID_BATTERY).mConsumerType)).isTrue();
+ assertThat(
+ isUidConsumer(
+ createEntry(ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY)
+ .mConsumerType))
+ .isFalse();
+ assertThat(
+ isUidConsumer(
+ createEntry(ConvertUtils.CONSUMER_TYPE_USER_BATTERY).mConsumerType))
+ .isFalse();
+ assertThat(isUidConsumer(createEntry(ConvertUtils.CONSUMER_TYPE_UID_BATTERY).mConsumerType))
+ .isTrue();
}
@Test
public void testIsUserEntry_returnExpectedResult() {
- assertThat(isUserConsumer(
- createEntry(ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY).mConsumerType)).isFalse();
- assertThat(isUserConsumer(
- createEntry(ConvertUtils.CONSUMER_TYPE_USER_BATTERY).mConsumerType)).isTrue();
- assertThat(isUserConsumer(
- createEntry(ConvertUtils.CONSUMER_TYPE_UID_BATTERY).mConsumerType)).isFalse();
+ assertThat(
+ isUserConsumer(
+ createEntry(ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY)
+ .mConsumerType))
+ .isFalse();
+ assertThat(
+ isUserConsumer(
+ createEntry(ConvertUtils.CONSUMER_TYPE_USER_BATTERY).mConsumerType))
+ .isTrue();
+ assertThat(
+ isUserConsumer(
+ createEntry(ConvertUtils.CONSUMER_TYPE_UID_BATTERY).mConsumerType))
+ .isFalse();
}
@Test
public void testIsSystemEntry_returnExpectedResult() {
- assertThat(isSystemConsumer(
- createEntry(ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY).mConsumerType)).isTrue();
- assertThat(isSystemConsumer(
- createEntry(ConvertUtils.CONSUMER_TYPE_USER_BATTERY).mConsumerType)).isFalse();
- assertThat(isSystemConsumer(
- createEntry(ConvertUtils.CONSUMER_TYPE_UID_BATTERY).mConsumerType)).isFalse();
+ assertThat(
+ isSystemConsumer(
+ createEntry(ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY)
+ .mConsumerType))
+ .isTrue();
+ assertThat(
+ isSystemConsumer(
+ createEntry(ConvertUtils.CONSUMER_TYPE_USER_BATTERY).mConsumerType))
+ .isFalse();
+ assertThat(
+ isSystemConsumer(
+ createEntry(ConvertUtils.CONSUMER_TYPE_UID_BATTERY).mConsumerType))
+ .isFalse();
}
@Test
@@ -185,52 +200,52 @@
final long upperTimestamp = 300L;
final long lowerTimestamp = 100L;
final double ratio = 0.5;
- final BatteryHistEntry lowerHistEntry = createBatteryHistEntry(
- /*bootTimestamp=*/ 1000L,
- lowerTimestamp,
- /*totalPower=*/ 50,
- /*consumePower=*/ 10,
- /*foregroundUsageConsumePower=*/ 1,
- /*foregroundServiceUsageConsumePower=*/ 2,
- /*backgroundUsageConsumePower=*/ 3,
- /*cachedUsageConsumePower=*/ 4,
- /*foregroundUsageTimeInMs=*/ 100,
- /*backgroundUsageTimeInMs=*/ 200,
- /*batteryLevel=*/ 90);
- final BatteryHistEntry upperHistEntry = createBatteryHistEntry(
- /*bootTimestamp=*/ 1200L,
- upperTimestamp,
- /*totalPower=*/ 80,
- /*consumePower=*/ 20,
- /*foregroundUsageConsumePower=*/ 4,
- /*foregroundServiceUsageConsumePower=*/ 5,
- /*backgroundUsageConsumePower=*/ 6,
- /*cachedUsageConsumePower=*/ 5,
- /*foregroundUsageTimeInMs=*/ 200,
- /*backgroundUsageTimeInMs=*/ 300,
- /*batteryLevel=*/ 80);
+ final BatteryHistEntry lowerHistEntry =
+ createBatteryHistEntry(
+ /* bootTimestamp= */ 1000L,
+ lowerTimestamp,
+ /* totalPower= */ 50,
+ /* consumePower= */ 10,
+ /* foregroundUsageConsumePower= */ 1,
+ /* foregroundServiceUsageConsumePower= */ 2,
+ /* backgroundUsageConsumePower= */ 3,
+ /* cachedUsageConsumePower= */ 4,
+ /* foregroundUsageTimeInMs= */ 100,
+ /* backgroundUsageTimeInMs= */ 200,
+ /* batteryLevel= */ 90);
+ final BatteryHistEntry upperHistEntry =
+ createBatteryHistEntry(
+ /* bootTimestamp= */ 1200L,
+ upperTimestamp,
+ /* totalPower= */ 80,
+ /* consumePower= */ 20,
+ /* foregroundUsageConsumePower= */ 4,
+ /* foregroundServiceUsageConsumePower= */ 5,
+ /* backgroundUsageConsumePower= */ 6,
+ /* cachedUsageConsumePower= */ 5,
+ /* foregroundUsageTimeInMs= */ 200,
+ /* backgroundUsageTimeInMs= */ 300,
+ /* batteryLevel= */ 80);
final BatteryHistEntry newEntry =
BatteryHistEntry.interpolate(
- slotTimestamp,
- upperTimestamp,
- ratio,
- lowerHistEntry,
- upperHistEntry);
+ slotTimestamp, upperTimestamp, ratio, lowerHistEntry, upperHistEntry);
assertBatteryHistEntry(
- newEntry, 3, upperHistEntry.mPercentOfTotal,
- /*bootTimestamp=*/ 1200 - 100,
- /*timestamp=*/ slotTimestamp,
- /*totalPower=*/ 50 + 0.5 * (80 - 50),
- /*consumePower=*/ 10 + 0.5 * (20 - 10),
- /*foregroundUsageConsumePower=*/ 1 + 0.5 * (4 - 1),
- /*foregroundServiceUsageConsumePower=*/ 2 + 0.5 * (5 - 2),
- /*backgroundUsageConsumePower=*/ 3 + 0.5 * (6 - 3),
- /*cachedUsageConsumePower=*/ 4 + 0.5 * (5 - 4),
- /*foregroundUsageTimeInMs=*/ Math.round(100 + 0.5 * (200 - 100)),
- /*backgroundUsageTimeInMs=*/ Math.round(200 + 0.5 * (300 - 200)),
- /*batteryLevel=*/ (int) Math.round(90 + 0.5 * (80 - 90)));
+ newEntry,
+ 3,
+ upperHistEntry.mPercentOfTotal,
+ /* bootTimestamp= */ 1200 - 100,
+ /* timestamp= */ slotTimestamp,
+ /* totalPower= */ 50 + 0.5 * (80 - 50),
+ /* consumePower= */ 10 + 0.5 * (20 - 10),
+ /* foregroundUsageConsumePower= */ 1 + 0.5 * (4 - 1),
+ /* foregroundServiceUsageConsumePower= */ 2 + 0.5 * (5 - 2),
+ /* backgroundUsageConsumePower= */ 3 + 0.5 * (6 - 3),
+ /* cachedUsageConsumePower= */ 4 + 0.5 * (5 - 4),
+ /* foregroundUsageTimeInMs= */ Math.round(100 + 0.5 * (200 - 100)),
+ /* backgroundUsageTimeInMs= */ Math.round(200 + 0.5 * (300 - 200)),
+ /* batteryLevel= */ (int) Math.round(90 + 0.5 * (80 - 90)));
}
@Test
@@ -238,40 +253,43 @@
final long slotTimestamp = 200L;
final long upperTimestamp = 300L;
final double ratio = 0.5;
- final BatteryHistEntry upperHistEntry = createBatteryHistEntry(
- /*bootTimestamp=*/ 1200L,
- upperTimestamp,
- /*totalPower=*/ 80,
- /*consumePower=*/ 20,
- /*foregroundUsageConsumePower=*/ 4,
- /*foregroundServiceUsageConsumePower=*/ 5,
- /*backgroundUsageConsumePower=*/ 6,
- /*cachedUsageConsumePower=*/ 5,
- /*foregroundUsageTimeInMs=*/ 200,
- /*backgroundUsageTimeInMs=*/ 300,
- /*batteryLevel=*/ 80);
+ final BatteryHistEntry upperHistEntry =
+ createBatteryHistEntry(
+ /* bootTimestamp= */ 1200L,
+ upperTimestamp,
+ /* totalPower= */ 80,
+ /* consumePower= */ 20,
+ /* foregroundUsageConsumePower= */ 4,
+ /* foregroundServiceUsageConsumePower= */ 5,
+ /* backgroundUsageConsumePower= */ 6,
+ /* cachedUsageConsumePower= */ 5,
+ /* foregroundUsageTimeInMs= */ 200,
+ /* backgroundUsageTimeInMs= */ 300,
+ /* batteryLevel= */ 80);
final BatteryHistEntry newEntry =
BatteryHistEntry.interpolate(
slotTimestamp,
upperTimestamp,
ratio,
- /*lowerHistEntry=*/ null,
+ /* lowerHistEntry= */ null,
upperHistEntry);
assertBatteryHistEntry(
- newEntry, 3, upperHistEntry.mPercentOfTotal,
- /*bootTimestamp=*/ 1200 - 100,
- /*timestamp=*/ slotTimestamp,
- /*totalPower=*/ 0.5 * 80,
- /*consumePower=*/ 0.5 * 20,
- /*foregroundUsageConsumePower=*/ 0.5 * 4,
- /*foregroundServiceUsageConsumePower=*/ 0.5 * 5,
- /*backgroundUsageConsumePower=*/ 0.5 * 6,
- /*cachedUsageConsumePower=*/ 0.5 * 5,
- /*foregroundUsageTimeInMs=*/ Math.round(0.5 * 200),
- /*backgroundUsageTimeInMs=*/ Math.round(0.5 * 300),
- /*batteryLevel=*/ upperHistEntry.mBatteryLevel);
+ newEntry,
+ 3,
+ upperHistEntry.mPercentOfTotal,
+ /* bootTimestamp= */ 1200 - 100,
+ /* timestamp= */ slotTimestamp,
+ /* totalPower= */ 0.5 * 80,
+ /* consumePower= */ 0.5 * 20,
+ /* foregroundUsageConsumePower= */ 0.5 * 4,
+ /* foregroundServiceUsageConsumePower= */ 0.5 * 5,
+ /* backgroundUsageConsumePower= */ 0.5 * 6,
+ /* cachedUsageConsumePower= */ 0.5 * 5,
+ /* foregroundUsageTimeInMs= */ Math.round(0.5 * 200),
+ /* backgroundUsageTimeInMs= */ Math.round(0.5 * 300),
+ /* batteryLevel= */ upperHistEntry.mBatteryLevel);
}
private static BatteryHistEntry createEntry(int consumerType) {
@@ -280,26 +298,27 @@
private static ContentValues getContentValuesWithType(int consumerType) {
final ContentValues values = new ContentValues();
- values.put(BatteryHistEntry.KEY_CONSUMER_TYPE,
- Integer.valueOf(consumerType));
+ values.put(BatteryHistEntry.KEY_CONSUMER_TYPE, Integer.valueOf(consumerType));
return values;
}
private void assertBatteryHistEntry(
BatteryHistEntry entry, int drainType, double percentOfTotal) {
assertBatteryHistEntry(
- entry, drainType, percentOfTotal,
- /*bootTimestamp=*/ 101L,
- /*timestamp=*/ 10001L,
- /*totalPower=*/ 5.1,
- /*consumePower=*/ 1.1,
- /*foregroundUsageConsumePower=*/ 1.2,
- /*foregroundServiceUsageConsumePower=*/ 1.3,
- /*backgroundUsageConsumePower=*/ 1.4,
- /*cachedUsageConsumePower=*/ 1.5,
- /*foregroundUsageTimeInMs=*/ 1234L,
- /*backgroundUsageTimeInMs=*/ 5689L,
- /*batteryLevel=*/ 12);
+ entry,
+ drainType,
+ percentOfTotal,
+ /* bootTimestamp= */ 101L,
+ /* timestamp= */ 10001L,
+ /* totalPower= */ 5.1,
+ /* consumePower= */ 1.1,
+ /* foregroundUsageConsumePower= */ 1.2,
+ /* foregroundServiceUsageConsumePower= */ 1.3,
+ /* backgroundUsageConsumePower= */ 1.4,
+ /* cachedUsageConsumePower= */ 1.5,
+ /* foregroundUsageTimeInMs= */ 1234L,
+ /* backgroundUsageTimeInMs= */ 5689L,
+ /* batteryLevel= */ 12);
}
private void assertBatteryHistEntry(
@@ -321,8 +340,7 @@
assertThat(entry.mUid).isEqualTo(1001);
assertThat(entry.mUserId).isEqualTo(UserHandle.getUserId(1001));
assertThat(entry.mAppLabel).isEqualTo("Settings");
- assertThat(entry.mPackageName)
- .isEqualTo("com.google.android.settings.battery");
+ assertThat(entry.mPackageName).isEqualTo("com.google.android.settings.battery");
assertThat(entry.mIsHidden).isTrue();
assertThat(entry.mBootTimestamp).isEqualTo(bootTimestamp);
assertThat(entry.mTimestamp).isEqualTo(timestamp);
@@ -338,13 +356,10 @@
assertThat(entry.mForegroundUsageTimeInMs).isEqualTo(foregroundUsageTimeInMs);
assertThat(entry.mBackgroundUsageTimeInMs).isEqualTo(backgroundUsageTimeInMs);
assertThat(entry.mDrainType).isEqualTo(drainType);
- assertThat(entry.mConsumerType)
- .isEqualTo(ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY);
+ assertThat(entry.mConsumerType).isEqualTo(ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY);
assertThat(entry.mBatteryLevel).isEqualTo(batteryLevel);
- assertThat(entry.mBatteryStatus)
- .isEqualTo(BatteryManager.BATTERY_STATUS_FULL);
- assertThat(entry.mBatteryHealth)
- .isEqualTo(BatteryManager.BATTERY_HEALTH_COLD);
+ assertThat(entry.mBatteryStatus).isEqualTo(BatteryManager.BATTERY_STATUS_FULL);
+ assertThat(entry.mBatteryHealth).isEqualTo(BatteryManager.BATTERY_HEALTH_COLD);
}
private BatteryHistEntry createBatteryHistEntry(
@@ -359,24 +374,24 @@
long foregroundUsageTimeInMs,
long backgroundUsageTimeInMs,
int batteryLevel) {
- final MatrixCursor cursor = new MatrixCursor(
- new String[]{
- BatteryHistEntry.KEY_UID,
- BatteryHistEntry.KEY_USER_ID,
- BatteryHistEntry.KEY_PACKAGE_NAME,
- BatteryHistEntry.KEY_TIMESTAMP,
- BatteryHistEntry.KEY_CONSUMER_TYPE,
- BatteryHistEntry.KEY_BATTERY_INFORMATION});
+ final MatrixCursor cursor =
+ new MatrixCursor(
+ new String[] {
+ BatteryHistEntry.KEY_UID,
+ BatteryHistEntry.KEY_USER_ID,
+ BatteryHistEntry.KEY_PACKAGE_NAME,
+ BatteryHistEntry.KEY_TIMESTAMP,
+ BatteryHistEntry.KEY_CONSUMER_TYPE,
+ BatteryHistEntry.KEY_BATTERY_INFORMATION
+ });
DeviceBatteryState deviceBatteryState =
- DeviceBatteryState
- .newBuilder()
+ DeviceBatteryState.newBuilder()
.setBatteryLevel(batteryLevel)
.setBatteryStatus(BatteryManager.BATTERY_STATUS_FULL)
.setBatteryHealth(BatteryManager.BATTERY_HEALTH_COLD)
.build();
BatteryInformation batteryInformation =
- BatteryInformation
- .newBuilder()
+ BatteryInformation.newBuilder()
.setDeviceBatteryState(deviceBatteryState)
.setIsHidden(true)
.setBootTimestamp(bootTimestamp)
@@ -394,13 +409,14 @@
.setBackgroundUsageTimeInMs(backgroundUsageTimeInMs)
.build();
cursor.addRow(
- new Object[]{
- Long.valueOf(1001),
- Long.valueOf(UserHandle.getUserId(1001)),
- "com.google.android.settings.battery",
- Long.valueOf(timestamp),
- Integer.valueOf(ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY),
- ConvertUtils.convertBatteryInformationToString(batteryInformation)});
+ new Object[] {
+ Long.valueOf(1001),
+ Long.valueOf(UserHandle.getUserId(1001)),
+ "com.google.android.settings.battery",
+ Long.valueOf(timestamp),
+ Integer.valueOf(ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY),
+ ConvertUtils.convertBatteryInformationToString(batteryInformation)
+ });
cursor.moveToFirst();
return new BatteryHistEntry(cursor);
}
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryHistoryPreferenceTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryHistoryPreferenceTest.java
index 9155c66..26fff37 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryHistoryPreferenceTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryHistoryPreferenceTest.java
@@ -38,14 +38,10 @@
@RunWith(RobolectricTestRunner.class)
public class BatteryHistoryPreferenceTest {
- @Mock
- private PreferenceViewHolder mViewHolder;
- @Mock
- private TextView mTextView;
- @Mock
- private BatteryChartView mDailyChartView;
- @Mock
- private BatteryChartView mHourlyChartView;
+ @Mock private PreferenceViewHolder mViewHolder;
+ @Mock private TextView mTextView;
+ @Mock private BatteryChartView mDailyChartView;
+ @Mock private BatteryChartView mHourlyChartView;
private BatteryHistoryPreference mBatteryHistoryPreference;
@Before
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryLevelDataTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryLevelDataTest.java
index 7dc4eab..712df9d 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryLevelDataTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryLevelDataTest.java
@@ -42,129 +42,143 @@
@Test
public void getDailyTimestamps_allDataInOneHour_returnExpectedList() {
// Timezone GMT+8
- final List<Long> timestamps = List.of(
- 1640970006000L, // 2022-01-01 01:00:06
- 1640973608000L // 2022-01-01 01:00:08
- );
+ final List<Long> timestamps =
+ List.of(
+ 1640970006000L, // 2022-01-01 01:00:06
+ 1640973608000L // 2022-01-01 01:00:08
+ );
- final List<Long> expectedTimestamps = List.of(
- 1640970006000L, // 2022-01-01 01:00:06
- 1640973608000L // 2022-01-01 01:00:08
- );
+ final List<Long> expectedTimestamps =
+ List.of(
+ 1640970006000L, // 2022-01-01 01:00:06
+ 1640973608000L // 2022-01-01 01:00:08
+ );
assertThat(BatteryLevelData.getDailyTimestamps(timestamps)).isEqualTo(expectedTimestamps);
}
@Test
public void getDailyTimestamps_OneHourDataPerDay_returnExpectedList() {
// Timezone GMT+8
- final List<Long> timestamps = List.of(
- 1641049200000L, // 2022-01-01 23:00:00
- 1641052800000L, // 2022-01-02 00:00:00
- 1641056400000L // 2022-01-02 01:00:00
- );
+ final List<Long> timestamps =
+ List.of(
+ 1641049200000L, // 2022-01-01 23:00:00
+ 1641052800000L, // 2022-01-02 00:00:00
+ 1641056400000L // 2022-01-02 01:00:00
+ );
- final List<Long> expectedTimestamps = List.of(
- 1641049200000L, // 2022-01-01 23:00:00
- 1641052800000L, // 2022-01-02 00:00:00
- 1641056400000L // 2022-01-02 01:00:00
- );
+ final List<Long> expectedTimestamps =
+ List.of(
+ 1641049200000L, // 2022-01-01 23:00:00
+ 1641052800000L, // 2022-01-02 00:00:00
+ 1641056400000L // 2022-01-02 01:00:00
+ );
assertThat(BatteryLevelData.getDailyTimestamps(timestamps)).isEqualTo(expectedTimestamps);
}
@Test
public void getDailyTimestamps_OneDayData_returnExpectedList() {
// Timezone GMT+8
- final List<Long> timestamps = List.of(
- 1640966400000L, // 2022-01-01 00:00:00
- 1640970000000L, // 2022-01-01 01:00:00
- 1640973600000L, // 2022-01-01 02:00:00
- 1640977200000L, // 2022-01-01 03:00:00
- 1640980800000L // 2022-01-01 04:00:00
- );
+ final List<Long> timestamps =
+ List.of(
+ 1640966400000L, // 2022-01-01 00:00:00
+ 1640970000000L, // 2022-01-01 01:00:00
+ 1640973600000L, // 2022-01-01 02:00:00
+ 1640977200000L, // 2022-01-01 03:00:00
+ 1640980800000L // 2022-01-01 04:00:00
+ );
- final List<Long> expectedTimestamps = List.of(
- 1640966400000L, // 2022-01-01 00:00:00
- 1640980800000L // 2022-01-01 04:00:00
- );
+ final List<Long> expectedTimestamps =
+ List.of(
+ 1640966400000L, // 2022-01-01 00:00:00
+ 1640980800000L // 2022-01-01 04:00:00
+ );
assertThat(BatteryLevelData.getDailyTimestamps(timestamps)).isEqualTo(expectedTimestamps);
}
@Test
public void getDailyTimestamps_MultipleDaysData_returnExpectedList() {
// Timezone GMT+8
- final List<Long> timestamps = List.of(
- 1641045600000L, // 2022-01-01 22:00:00
- 1641060000000L, // 2022-01-02 02:00:00
- 1641160800000L, // 2022-01-03 06:00:00
- 1641232800000L // 2022-01-04 02:00:00
- );
+ final List<Long> timestamps =
+ List.of(
+ 1641045600000L, // 2022-01-01 22:00:00
+ 1641060000000L, // 2022-01-02 02:00:00
+ 1641160800000L, // 2022-01-03 06:00:00
+ 1641232800000L // 2022-01-04 02:00:00
+ );
- final List<Long> expectedTimestamps = List.of(
- 1641045600000L, // 2022-01-01 22:00:00
- 1641052800000L, // 2022-01-02 00:00:00
- 1641139200000L, // 2022-01-03 00:00:00
- 1641225600000L, // 2022-01-04 00:00:00
- 1641232800000L // 2022-01-04 02:00:00
- );
+ final List<Long> expectedTimestamps =
+ List.of(
+ 1641045600000L, // 2022-01-01 22:00:00
+ 1641052800000L, // 2022-01-02 00:00:00
+ 1641139200000L, // 2022-01-03 00:00:00
+ 1641225600000L, // 2022-01-04 00:00:00
+ 1641232800000L // 2022-01-04 02:00:00
+ );
assertThat(BatteryLevelData.getDailyTimestamps(timestamps)).isEqualTo(expectedTimestamps);
}
@Test
public void getDailyTimestamps_FirstDayOneHourData_returnExpectedList() {
// Timezone GMT+8
- final List<Long> timestamps = List.of(
- 1641049200000L, // 2022-01-01 23:00:00
- 1641060000000L, // 2022-01-02 02:00:00
- 1641160800000L, // 2022-01-03 06:00:00
- 1641254400000L // 2022-01-04 08:00:00
- );
+ final List<Long> timestamps =
+ List.of(
+ 1641049200000L, // 2022-01-01 23:00:00
+ 1641060000000L, // 2022-01-02 02:00:00
+ 1641160800000L, // 2022-01-03 06:00:00
+ 1641254400000L // 2022-01-04 08:00:00
+ );
- final List<Long> expectedTimestamps = List.of(
- 1641049200000L, // 2022-01-01 23:00:00
- 1641052800000L, // 2022-01-02 00:00:00
- 1641139200000L, // 2022-01-03 00:00:00
- 1641225600000L, // 2022-01-04 00:00:00
- 1641254400000L // 2022-01-04 08:00:00
- );
+ final List<Long> expectedTimestamps =
+ List.of(
+ 1641049200000L, // 2022-01-01 23:00:00
+ 1641052800000L, // 2022-01-02 00:00:00
+ 1641139200000L, // 2022-01-03 00:00:00
+ 1641225600000L, // 2022-01-04 00:00:00
+ 1641254400000L // 2022-01-04 08:00:00
+ );
assertThat(BatteryLevelData.getDailyTimestamps(timestamps)).isEqualTo(expectedTimestamps);
}
@Test
public void getDailyTimestamps_LastDayNoData_returnExpectedList() {
// Timezone GMT+8
- final List<Long> timestamps = List.of(
- 1640988000000L, // 2022-01-01 06:00:00
- 1641060000000L, // 2022-01-02 02:00:00
- 1641160800000L, // 2022-01-03 06:00:00
- 1641225600000L // 2022-01-04 00:00:00
- );
+ final List<Long> timestamps =
+ List.of(
+ 1640988000000L, // 2022-01-01 06:00:00
+ 1641060000000L, // 2022-01-02 02:00:00
+ 1641160800000L, // 2022-01-03 06:00:00
+ 1641225600000L // 2022-01-04 00:00:00
+ );
- final List<Long> expectedTimestamps = List.of(
- 1640988000000L, // 2022-01-01 06:00:00
- 1641052800000L, // 2022-01-02 00:00:00
- 1641139200000L, // 2022-01-03 00:00:00
- 1641225600000L // 2022-01-04 00:00:00
- );
+ final List<Long> expectedTimestamps =
+ List.of(
+ 1640988000000L, // 2022-01-01 06:00:00
+ 1641052800000L, // 2022-01-02 00:00:00
+ 1641139200000L, // 2022-01-03 00:00:00
+ 1641225600000L // 2022-01-04 00:00:00
+ );
assertThat(BatteryLevelData.getDailyTimestamps(timestamps)).isEqualTo(expectedTimestamps);
}
@Test
public void getDailyTimestamps_LastDayOneHourData_returnExpectedList() {
// Timezone GMT+8
- final List<Long> timestamps = List.of(
- 1640988000000L, // 2022-01-01 06:00:00
- 1641060000000L, // 2022-01-02 02:00:00
- 1641160800000L, // 2022-01-03 06:00:00
- 1641229200000L // 2022-01-04 01:00:00
- );
+ final List<Long> timestamps =
+ List.of(
+ 1640988000000L, // 2022-01-01 06:00:00
+ 1641060000000L, // 2022-01-02 02:00:00
+ 1641160800000L, // 2022-01-03 06:00:00
+ 1641229200000L // 2022-01-04 01:00:00
+ );
- final List<Long> expectedTimestamps = List.of(
- 1640988000000L, // 2022-01-01 06:00:00
- 1641052800000L, // 2022-01-02 00:00:00
- 1641139200000L, // 2022-01-03 00:00:00
- 1641225600000L, // 2022-01-04 00:00:00
- 1641229200000L // 2022-01-04 01:00:00
- );
+ final List<Long> expectedTimestamps =
+ List.of(
+ 1640988000000L, // 2022-01-01 06:00:00
+ 1641052800000L, // 2022-01-02 00:00:00
+ 1641139200000L, // 2022-01-03 00:00:00
+ 1641225600000L, // 2022-01-04 00:00:00
+ 1641229200000L // 2022-01-04 01:00:00
+ );
assertThat(BatteryLevelData.getDailyTimestamps(timestamps)).isEqualTo(expectedTimestamps);
}
@@ -172,21 +186,26 @@
public void combine_normalFlow_returnExpectedResult() {
final BatteryLevelData batteryLevelData =
new BatteryLevelData(Map.of(1691596800000L, 90, 1691604000000L, 80));
- final List<BatteryEvent> batteryLevelRecordEvents = List.of(
- BatteryEvent.newBuilder().setTimestamp(1691586000166L).setBatteryLevel(100)
- .setType(BatteryEventType.FULL_CHARGED).build(),
- BatteryEvent.newBuilder().setTimestamp(1691589600000L).setBatteryLevel(98)
- .setType(BatteryEventType.EVEN_HOUR).build());
+ final List<BatteryEvent> batteryLevelRecordEvents =
+ List.of(
+ BatteryEvent.newBuilder()
+ .setTimestamp(1691586000166L)
+ .setBatteryLevel(100)
+ .setType(BatteryEventType.FULL_CHARGED)
+ .build(),
+ BatteryEvent.newBuilder()
+ .setTimestamp(1691589600000L)
+ .setBatteryLevel(98)
+ .setType(BatteryEventType.EVEN_HOUR)
+ .build());
BatteryLevelData result =
BatteryLevelData.combine(batteryLevelData, batteryLevelRecordEvents);
assertThat(result.getDailyBatteryLevels().getTimestamps())
.isEqualTo(List.of(1691586000166L, 1691596800000L, 1691604000000L));
- assertThat(result.getDailyBatteryLevels().getLevels())
- .isEqualTo(List.of(100, 90, 80));
- assertThat(result.getHourlyBatteryLevelsPerDay())
- .hasSize(2);
+ assertThat(result.getDailyBatteryLevels().getLevels()).isEqualTo(List.of(100, 90, 80));
+ assertThat(result.getHourlyBatteryLevelsPerDay()).hasSize(2);
assertThat(result.getHourlyBatteryLevelsPerDay().get(0).getTimestamps())
.isEqualTo(List.of(1691586000166L, 1691589600000L, 1691596800000L));
assertThat(result.getHourlyBatteryLevelsPerDay().get(0).getLevels())
@@ -199,17 +218,22 @@
@Test
public void combine_existingBatteryLevelDataIsNull_returnExpectedResult() {
- final List<BatteryEvent> batteryLevelRecordEvents = List.of(
- BatteryEvent.newBuilder().setTimestamp(1691586000166L).setBatteryLevel(100)
- .setType(BatteryEventType.FULL_CHARGED).build(),
- BatteryEvent.newBuilder().setTimestamp(1691589600000L).setBatteryLevel(98)
- .setType(BatteryEventType.EVEN_HOUR).build());
+ final List<BatteryEvent> batteryLevelRecordEvents =
+ List.of(
+ BatteryEvent.newBuilder()
+ .setTimestamp(1691586000166L)
+ .setBatteryLevel(100)
+ .setType(BatteryEventType.FULL_CHARGED)
+ .build(),
+ BatteryEvent.newBuilder()
+ .setTimestamp(1691589600000L)
+ .setBatteryLevel(98)
+ .setType(BatteryEventType.EVEN_HOUR)
+ .build());
- BatteryLevelData result =
- BatteryLevelData.combine(null, batteryLevelRecordEvents);
+ BatteryLevelData result = BatteryLevelData.combine(null, batteryLevelRecordEvents);
- assertThat(result.getHourlyBatteryLevelsPerDay())
- .hasSize(1);
+ assertThat(result.getHourlyBatteryLevelsPerDay()).hasSize(1);
assertThat(result.getHourlyBatteryLevelsPerDay().get(0).getTimestamps())
.isEqualTo(List.of(1691586000166L, 1691589600000L));
assertThat(result.getHourlyBatteryLevelsPerDay().get(0).getLevels())
@@ -219,25 +243,31 @@
@Test
public void getIndexByTimestamps_returnExpectedResult() {
final BatteryLevelData batteryLevelData =
- new BatteryLevelData(Map.of(
- 1694354400000L, 1, // 2023-09-10 22:00:00
- 1694361600000L, 2, // 2023-09-11 00:00:00
- 1694368800000L, 3)); // 2023-09-11 02:00:00
+ new BatteryLevelData(
+ Map.of(
+ 1694354400000L, 1, // 2023-09-10 22:00:00
+ 1694361600000L, 2, // 2023-09-11 00:00:00
+ 1694368800000L, 3)); // 2023-09-11 02:00:00
final PowerAnomalyEvent event = BatteryTestUtils.createAppAnomalyEvent();
assertThat(batteryLevelData.getIndexByTimestamps(0L, 0L))
- .isEqualTo(Pair.create(BatteryChartViewModel.SELECTED_INDEX_INVALID,
- BatteryChartViewModel.SELECTED_INDEX_INVALID));
+ .isEqualTo(
+ Pair.create(
+ BatteryChartViewModel.SELECTED_INDEX_INVALID,
+ BatteryChartViewModel.SELECTED_INDEX_INVALID));
assertThat(batteryLevelData.getIndexByTimestamps(1694361600000L + 1L, 1694368800000L + 1L))
- .isEqualTo(Pair.create(BatteryChartViewModel.SELECTED_INDEX_INVALID,
- BatteryChartViewModel.SELECTED_INDEX_INVALID));
+ .isEqualTo(
+ Pair.create(
+ BatteryChartViewModel.SELECTED_INDEX_INVALID,
+ BatteryChartViewModel.SELECTED_INDEX_INVALID));
assertThat(batteryLevelData.getIndexByTimestamps(1694361600000L, 1694368800000L))
.isEqualTo(Pair.create(1, 0));
assertThat(batteryLevelData.getIndexByTimestamps(1694361600000L + 1L, 1694368800000L - 1L))
.isEqualTo(Pair.create(1, 0));
- assertThat(batteryLevelData.getIndexByTimestamps(
- event.getWarningItemInfo().getStartTimestamp(),
- event.getWarningItemInfo().getEndTimestamp()))
+ assertThat(
+ batteryLevelData.getIndexByTimestamps(
+ event.getWarningItemInfo().getStartTimestamp(),
+ event.getWarningItemInfo().getEndTimestamp()))
.isEqualTo(Pair.create(1, 0));
}
}
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryTipsCardPreferenceTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryTipsCardPreferenceTest.java
index 63cb1b3..91d8c7d 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryTipsCardPreferenceTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryTipsCardPreferenceTest.java
@@ -61,19 +61,16 @@
private BatteryTipsController mBatteryTipsController;
private BatteryChartPreferenceController mBatteryChartPreferenceController;
- @Mock
- private View mFakeView;
- @Mock
- private BatteryUsageBreakdownController mBatteryUsageBreakdownController;
- @Mock
- private BatteryDiffEntry mFakeEntry;
+ @Mock private View mFakeView;
+ @Mock private BatteryUsageBreakdownController mBatteryUsageBreakdownController;
+ @Mock private BatteryDiffEntry mFakeEntry;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
mContext = spy(RuntimeEnvironment.application);
mFeatureFactory = FakeFeatureFactory.setupForTest();
- mBatteryTipsCardPreference = new BatteryTipsCardPreference(mContext, /*attrs=*/ null);
+ mBatteryTipsCardPreference = new BatteryTipsCardPreference(mContext, /* attrs= */ null);
mBatteryTipsController = new BatteryTipsController(mContext);
mBatteryChartPreferenceController =
spy(new BatteryChartPreferenceController(mContext, null, null));
@@ -85,17 +82,20 @@
mPowerUsageAdvanced.mBatteryTipsController = mBatteryTipsController;
mPowerUsageAdvanced.mBatteryChartPreferenceController = mBatteryChartPreferenceController;
mPowerUsageAdvanced.mBatteryUsageBreakdownController = mBatteryUsageBreakdownController;
- mPowerUsageAdvanced.mBatteryLevelData = Optional.of(new BatteryLevelData(Map.of(
- 1694354400000L, 1, // 2023-09-10 22:00:00
- 1694361600000L, 2, // 2023-09-11 00:00:00
- 1694368800000L, 3))); // 2023-09-11 02:00:00
+ mPowerUsageAdvanced.mBatteryLevelData =
+ Optional.of(
+ new BatteryLevelData(
+ Map.of(
+ 1694354400000L, 1, // 2023-09-10 22:00:00
+ 1694361600000L, 2, // 2023-09-11 00:00:00
+ 1694368800000L, 3))); // 2023-09-11 02:00:00
doReturn("TestEntriesKey").when(mFakeEntry).getKey();
}
@Test
public void constructor_returnExpectedResult() {
- assertThat(mBatteryTipsCardPreference.getLayoutResource()).isEqualTo(
- R.layout.battery_tips_card);
+ assertThat(mBatteryTipsCardPreference.getLayoutResource())
+ .isEqualTo(R.layout.battery_tips_card);
}
@Test
@@ -118,10 +118,13 @@
.isEqualTo(DisplaySettings.class.getName());
assertThat(intent.getIntExtra(MetricsFeatureProvider.EXTRA_SOURCE_METRICS_CATEGORY, -1))
.isEqualTo(SettingsEnums.DISPLAY);
- verify(mFeatureFactory.metricsFeatureProvider).action(
- mContext, SettingsEnums.ACTION_BATTERY_TIPS_CARD_SHOW, "BrightnessAnomaly");
- verify(mFeatureFactory.metricsFeatureProvider).action(
- mContext, SettingsEnums.ACTION_BATTERY_TIPS_CARD_ACCEPT, "BrightnessAnomaly");
+ verify(mFeatureFactory.metricsFeatureProvider)
+ .action(mContext, SettingsEnums.ACTION_BATTERY_TIPS_CARD_SHOW, "BrightnessAnomaly");
+ verify(mFeatureFactory.metricsFeatureProvider)
+ .action(
+ mContext,
+ SettingsEnums.ACTION_BATTERY_TIPS_CARD_ACCEPT,
+ "BrightnessAnomaly");
}
@Test
@@ -140,10 +143,16 @@
assertThat(DatabaseUtils.getDismissedPowerAnomalyKeys(mContext)).hasSize(1);
assertThat(DatabaseUtils.getDismissedPowerAnomalyKeys(mContext))
.contains(PowerAnomalyKey.KEY_SCREEN_TIMEOUT.name());
- verify(mFeatureFactory.metricsFeatureProvider).action(
- mContext, SettingsEnums.ACTION_BATTERY_TIPS_CARD_SHOW, "ScreenTimeoutAnomaly");
- verify(mFeatureFactory.metricsFeatureProvider).action(
- mContext, SettingsEnums.ACTION_BATTERY_TIPS_CARD_DISMISS, "ScreenTimeoutAnomaly");
+ verify(mFeatureFactory.metricsFeatureProvider)
+ .action(
+ mContext,
+ SettingsEnums.ACTION_BATTERY_TIPS_CARD_SHOW,
+ "ScreenTimeoutAnomaly");
+ verify(mFeatureFactory.metricsFeatureProvider)
+ .action(
+ mContext,
+ SettingsEnums.ACTION_BATTERY_TIPS_CARD_DISMISS,
+ "ScreenTimeoutAnomaly");
}
@Test
@@ -159,13 +168,12 @@
assertThat(mBatteryTipsCardPreference.isVisible()).isFalse();
verify(mContext, never()).startActivity(any(Intent.class));
- verify(mBatteryChartPreferenceController).onHighlightSlotIndexUpdate(
- eq(1), eq(0));
+ verify(mBatteryChartPreferenceController).onHighlightSlotIndexUpdate(eq(1), eq(0));
verify(mBatteryChartPreferenceController).selectHighlightSlotIndex();
- verify(mFeatureFactory.metricsFeatureProvider).action(
- mContext, SettingsEnums.ACTION_BATTERY_TIPS_CARD_SHOW, "AppAnomaly");
- verify(mFeatureFactory.metricsFeatureProvider).action(
- mContext, SettingsEnums.ACTION_BATTERY_TIPS_CARD_ACCEPT, "AppAnomaly");
+ verify(mFeatureFactory.metricsFeatureProvider)
+ .action(mContext, SettingsEnums.ACTION_BATTERY_TIPS_CARD_SHOW, "AppAnomaly");
+ verify(mFeatureFactory.metricsFeatureProvider)
+ .action(mContext, SettingsEnums.ACTION_BATTERY_TIPS_CARD_ACCEPT, "AppAnomaly");
}
@Test
@@ -180,12 +188,11 @@
assertThat(mBatteryTipsCardPreference.isVisible()).isFalse();
verify(mContext, never()).startActivity(any(Intent.class));
- verify(mBatteryChartPreferenceController).onHighlightSlotIndexUpdate(
- eq(1), eq(0));
+ verify(mBatteryChartPreferenceController).onHighlightSlotIndexUpdate(eq(1), eq(0));
verify(mBatteryChartPreferenceController, never()).selectHighlightSlotIndex();
- verify(mFeatureFactory.metricsFeatureProvider).action(
- mContext, SettingsEnums.ACTION_BATTERY_TIPS_CARD_SHOW, "AppAnomaly");
- verify(mFeatureFactory.metricsFeatureProvider).action(
- mContext, SettingsEnums.ACTION_BATTERY_TIPS_CARD_DISMISS, "AppAnomaly");
+ verify(mFeatureFactory.metricsFeatureProvider)
+ .action(mContext, SettingsEnums.ACTION_BATTERY_TIPS_CARD_SHOW, "AppAnomaly");
+ verify(mFeatureFactory.metricsFeatureProvider)
+ .action(mContext, SettingsEnums.ACTION_BATTERY_TIPS_CARD_DISMISS, "AppAnomaly");
}
}
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryTipsControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryTipsControllerTest.java
index b8afe98..91b2e15 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryTipsControllerTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryTipsControllerTest.java
@@ -48,8 +48,7 @@
private FakeFeatureFactory mFeatureFactory;
private BatteryTipsController mBatteryTipsController;
- @Mock
- private BatteryTipsCardPreference mBatteryTipsCardPreference;
+ @Mock private BatteryTipsCardPreference mBatteryTipsCardPreference;
@Before
public void setUp() {
@@ -82,17 +81,17 @@
new AnomalyEventWrapper(mContext, event), false);
// Check pre-defined string
- verify(mBatteryTipsCardPreference).setTitle(
- "Turn on adaptive brightness to extend battery life");
+ verify(mBatteryTipsCardPreference)
+ .setTitle("Turn on adaptive brightness to extend battery life");
verify(mBatteryTipsCardPreference).setIconResourceId(R.drawable.ic_battery_tips_lightbulb);
- verify(mBatteryTipsCardPreference).setMainButtonStrokeColorResourceId(
- R.color.color_accent_selector);
+ verify(mBatteryTipsCardPreference)
+ .setMainButtonStrokeColorResourceId(R.color.color_accent_selector);
verify(mBatteryTipsCardPreference).setMainButtonLabel("View Settings");
verify(mBatteryTipsCardPreference).setDismissButtonLabel("Got it");
// Check proto info
verify(mBatteryTipsCardPreference).setVisible(true);
- verify(mFeatureFactory.metricsFeatureProvider).action(
- mContext, SettingsEnums.ACTION_BATTERY_TIPS_CARD_SHOW, "BrightnessAnomaly");
+ verify(mFeatureFactory.metricsFeatureProvider)
+ .action(mContext, SettingsEnums.ACTION_BATTERY_TIPS_CARD_SHOW, "BrightnessAnomaly");
}
@Test
@@ -105,25 +104,29 @@
verify(mBatteryTipsCardPreference).setTitle("Reduce screen timeout to extend battery life");
verify(mBatteryTipsCardPreference).setIconResourceId(R.drawable.ic_battery_tips_lightbulb);
- verify(mBatteryTipsCardPreference).setMainButtonStrokeColorResourceId(
- R.color.color_accent_selector);
+ verify(mBatteryTipsCardPreference)
+ .setMainButtonStrokeColorResourceId(R.color.color_accent_selector);
verify(mBatteryTipsCardPreference).setMainButtonLabel("View Settings");
verify(mBatteryTipsCardPreference).setDismissButtonLabel("Got it");
verify(mBatteryTipsCardPreference).setVisible(true);
- verify(mFeatureFactory.metricsFeatureProvider).action(
- mContext, SettingsEnums.ACTION_BATTERY_TIPS_CARD_SHOW, "ScreenTimeoutAnomaly");
+ verify(mFeatureFactory.metricsFeatureProvider)
+ .action(
+ mContext,
+ SettingsEnums.ACTION_BATTERY_TIPS_CARD_SHOW,
+ "ScreenTimeoutAnomaly");
}
@Test
public void handleBatteryTipsCardUpdated_screenTimeoutAnomalyHasTitle_showAnomaly() {
PowerAnomalyEvent event = BatteryTestUtils.createScreenTimeoutAnomalyEvent();
String testTitle = "TestTitle";
- event = event.toBuilder()
- .setWarningBannerInfo(
- event.getWarningBannerInfo().toBuilder()
- .setTitleString(testTitle)
- .build())
- .build();
+ event =
+ event.toBuilder()
+ .setWarningBannerInfo(
+ event.getWarningBannerInfo().toBuilder()
+ .setTitleString(testTitle)
+ .build())
+ .build();
when(mFeatureFactory.powerUsageFeatureProvider.isBatteryTipsEnabled()).thenReturn(true);
mBatteryTipsController.handleBatteryTipsCardUpdated(
@@ -131,13 +134,16 @@
verify(mBatteryTipsCardPreference).setTitle(testTitle);
verify(mBatteryTipsCardPreference).setIconResourceId(R.drawable.ic_battery_tips_lightbulb);
- verify(mBatteryTipsCardPreference).setMainButtonStrokeColorResourceId(
- R.color.color_accent_selector);
+ verify(mBatteryTipsCardPreference)
+ .setMainButtonStrokeColorResourceId(R.color.color_accent_selector);
verify(mBatteryTipsCardPreference).setMainButtonLabel("View Settings");
verify(mBatteryTipsCardPreference).setDismissButtonLabel("Got it");
verify(mBatteryTipsCardPreference).setVisible(true);
- verify(mFeatureFactory.metricsFeatureProvider).action(
- mContext, SettingsEnums.ACTION_BATTERY_TIPS_CARD_SHOW, "ScreenTimeoutAnomaly");
+ verify(mFeatureFactory.metricsFeatureProvider)
+ .action(
+ mContext,
+ SettingsEnums.ACTION_BATTERY_TIPS_CARD_SHOW,
+ "ScreenTimeoutAnomaly");
}
@Test
@@ -146,20 +152,18 @@
when(mFeatureFactory.powerUsageFeatureProvider.isBatteryTipsEnabled()).thenReturn(true);
AnomalyEventWrapper eventWrapper = new AnomalyEventWrapper(mContext, event);
- eventWrapper.setRelatedBatteryDiffEntry(
- new BatteryDiffEntry(mContext, "", "Chrome", 0));
+ eventWrapper.setRelatedBatteryDiffEntry(new BatteryDiffEntry(mContext, "", "Chrome", 0));
mBatteryTipsController.handleBatteryTipsCardUpdated(eventWrapper, false);
- verify(mBatteryTipsCardPreference).setTitle(
- "Chrome used more battery than usual");
- verify(mBatteryTipsCardPreference).setIconResourceId(
- R.drawable.ic_battery_tips_warning_icon);
- verify(mBatteryTipsCardPreference).setMainButtonStrokeColorResourceId(
- R.color.color_battery_anomaly_yellow_selector);
+ verify(mBatteryTipsCardPreference).setTitle("Chrome used more battery than usual");
+ verify(mBatteryTipsCardPreference)
+ .setIconResourceId(R.drawable.ic_battery_tips_warning_icon);
+ verify(mBatteryTipsCardPreference)
+ .setMainButtonStrokeColorResourceId(R.color.color_battery_anomaly_yellow_selector);
verify(mBatteryTipsCardPreference).setMainButtonLabel("Check");
verify(mBatteryTipsCardPreference).setDismissButtonLabel("Got it");
verify(mBatteryTipsCardPreference).setVisible(true);
- verify(mFeatureFactory.metricsFeatureProvider).action(
- mContext, SettingsEnums.ACTION_BATTERY_TIPS_CARD_SHOW, "AppAnomaly");
+ verify(mFeatureFactory.metricsFeatureProvider)
+ .action(mContext, SettingsEnums.ACTION_BATTERY_TIPS_CARD_SHOW, "AppAnomaly");
}
}
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownControllerTest.java
index a721ad4..fc30702 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownControllerTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownControllerTest.java
@@ -58,18 +58,12 @@
private static final String PREF_KEY2 = "pref_key2";
private static final String PREF_SUMMARY = "fake preference summary";
- @Mock
- private InstrumentedPreferenceFragment mFragment;
- @Mock
- private SettingsActivity mSettingsActivity;
- @Mock
- private PreferenceGroup mAppListPreferenceGroup;
- @Mock
- private Drawable mDrawable;
- @Mock
- private BatteryHistEntry mBatteryHistEntry;
- @Mock
- private AnomalyAppItemPreference mAnomalyAppItemPreference;
+ @Mock private InstrumentedPreferenceFragment mFragment;
+ @Mock private SettingsActivity mSettingsActivity;
+ @Mock private PreferenceGroup mAppListPreferenceGroup;
+ @Mock private Drawable mDrawable;
+ @Mock private BatteryHistEntry mBatteryHistEntry;
+ @Mock private AnomalyAppItemPreference mAnomalyAppItemPreference;
private Context mContext;
private FakeFeatureFactory mFeatureFactory;
@@ -94,43 +88,51 @@
.getHideApplicationSet();
mBatteryUsageBreakdownController = createController();
mBatteryUsageBreakdownController.mAppListPreferenceGroup = mAppListPreferenceGroup;
- mBatteryDiffEntry = new BatteryDiffEntry(
- mContext,
- /*uid=*/ 0L,
- /*userId=*/ 0L,
- /*key=*/ "key",
- /*isHidden=*/ false,
- /*componentId=*/ -1,
- /*legacyPackageName=*/ null,
- /*legacyLabel=*/ null,
- /*consumerType=*/ ConvertUtils.CONSUMER_TYPE_UID_BATTERY,
- /*foregroundUsageTimeInMs=*/ 1,
- /*backgroundUsageTimeInMs=*/ 2,
- /*screenOnTimeInMs=*/ 0,
- /*consumePower=*/ 3,
- /*foregroundUsageConsumePower=*/ 0,
- /*foregroundServiceUsageConsumePower=*/ 1,
- /*backgroundUsageConsumePower=*/ 2,
- /*cachedUsageConsumePower=*/ 0);
+ mBatteryDiffEntry =
+ new BatteryDiffEntry(
+ mContext,
+ /* uid= */ 0L,
+ /* userId= */ 0L,
+ /* key= */ "key",
+ /* isHidden= */ false,
+ /* componentId= */ -1,
+ /* legacyPackageName= */ null,
+ /* legacyLabel= */ null,
+ /* consumerType= */ ConvertUtils.CONSUMER_TYPE_UID_BATTERY,
+ /* foregroundUsageTimeInMs= */ 1,
+ /* backgroundUsageTimeInMs= */ 2,
+ /* screenOnTimeInMs= */ 0,
+ /* consumePower= */ 3,
+ /* foregroundUsageConsumePower= */ 0,
+ /* foregroundServiceUsageConsumePower= */ 1,
+ /* backgroundUsageConsumePower= */ 2,
+ /* cachedUsageConsumePower= */ 0);
mBatteryDiffEntry = spy(mBatteryDiffEntry);
mBatteryUsageBreakdownController.mBatteryDiffData =
- new BatteryDiffData(mContext, /* startTimestamp= */ 0L, /* endTimestamp= */ 0L,
- /* startBatteryLevel= */ 0, /* endBatteryLevel= */ 0,
- /* screenOnTime= */ 0L, Arrays.asList(mBatteryDiffEntry), Arrays.asList(),
- Set.of(), Set.of(), /* isAccumulated= */ false);
+ new BatteryDiffData(
+ mContext,
+ /* startTimestamp= */ 0L,
+ /* endTimestamp= */ 0L,
+ /* startBatteryLevel= */ 0,
+ /* endBatteryLevel= */ 0,
+ /* screenOnTime= */ 0L,
+ Arrays.asList(mBatteryDiffEntry),
+ Arrays.asList(),
+ Set.of(),
+ Set.of(),
+ /* isAccumulated= */ false);
BatteryDiffEntry.clearCache();
// Adds fake testing data.
BatteryDiffEntry.sResourceCache.put(
"fakeBatteryDiffEntryKey",
- new BatteryEntry.NameAndIcon("fakeName", /*icon=*/ null, /*iconId=*/ 1));
+ new BatteryEntry.NameAndIcon("fakeName", /* icon= */ null, /* iconId= */ 1));
doReturn(mAnomalyAppItemPreference).when(mAppListPreferenceGroup).findPreference(PREF_KEY);
}
@Test
public void onDestroy_clearPreferenceCacheAndPreferenceGroupRemoveAll() {
// Ensures the testing environment is correct.
- mBatteryUsageBreakdownController.mPreferenceCache.put(
- PREF_KEY, mAnomalyAppItemPreference);
+ mBatteryUsageBreakdownController.mPreferenceCache.put(PREF_KEY, mAnomalyAppItemPreference);
assertThat(mBatteryUsageBreakdownController.mPreferenceCache).hasSize(1);
mBatteryUsageBreakdownController.onDestroy();
@@ -158,8 +160,8 @@
// Verifies the preference cache.
final PowerGaugePreference pref =
- (PowerGaugePreference) mBatteryUsageBreakdownController.mPreferenceCache
- .get(PREF_KEY);
+ (PowerGaugePreference)
+ mBatteryUsageBreakdownController.mPreferenceCache.get(PREF_KEY);
assertThat(pref).isNotNull();
// Verifies the added preference configuration.
verify(mAppListPreferenceGroup).addPreference(pref);
@@ -218,8 +220,10 @@
@Test
public void handlePreferenceTreeClick_notPowerGaugePreference_returnFalse() {
- assertThat(mBatteryUsageBreakdownController
- .handlePreferenceTreeClick(mAppListPreferenceGroup)).isFalse();
+ assertThat(
+ mBatteryUsageBreakdownController.handlePreferenceTreeClick(
+ mAppListPreferenceGroup))
+ .isFalse();
verify(mMetricsFeatureProvider, never())
.action(mContext, SettingsEnums.ACTION_BATTERY_USAGE_APP_ITEM);
@@ -232,8 +236,10 @@
mBatteryDiffEntry.mConsumerType = ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY;
doReturn(mBatteryDiffEntry).when(mAnomalyAppItemPreference).getBatteryDiffEntry();
- assertThat(mBatteryUsageBreakdownController.handlePreferenceTreeClick(
- mAnomalyAppItemPreference)).isTrue();
+ assertThat(
+ mBatteryUsageBreakdownController.handlePreferenceTreeClick(
+ mAnomalyAppItemPreference))
+ .isTrue();
verify(mMetricsFeatureProvider)
.action(
SettingsEnums.OPEN_BATTERY_USAGE,
@@ -248,8 +254,10 @@
mBatteryDiffEntry.mConsumerType = ConvertUtils.CONSUMER_TYPE_UID_BATTERY;
doReturn(mBatteryDiffEntry).when(mAnomalyAppItemPreference).getBatteryDiffEntry();
- assertThat(mBatteryUsageBreakdownController.handlePreferenceTreeClick(
- mAnomalyAppItemPreference)).isTrue();
+ assertThat(
+ mBatteryUsageBreakdownController.handlePreferenceTreeClick(
+ mAnomalyAppItemPreference))
+ .isTrue();
verify(mMetricsFeatureProvider)
.action(
SettingsEnums.OPEN_BATTERY_USAGE,
@@ -262,11 +270,12 @@
@Test
public void setPreferencePercent_lessThanThreshold_expectedFormat() {
final PowerGaugePreference pref = new PowerGaugePreference(mContext);
- final BatteryDiffEntry batteryDiffEntry = createBatteryDiffEntry(
- /*isSystem=*/ true,
- /*screenOnTimeInMs=*/ 0,
- /*foregroundUsageTimeInMs=*/ 0,
- /*backgroundUsageTimeInMs=*/ 0);
+ final BatteryDiffEntry batteryDiffEntry =
+ createBatteryDiffEntry(
+ /* isSystem= */ true,
+ /* screenOnTimeInMs= */ 0,
+ /* foregroundUsageTimeInMs= */ 0,
+ /* backgroundUsageTimeInMs= */ 0);
batteryDiffEntry.mConsumePower = 0.8;
batteryDiffEntry.setTotalConsumePower(100);
mBatteryUsageBreakdownController.mPercentLessThanThresholdText = "< 1%";
@@ -279,11 +288,12 @@
@Test
public void setPreferencePercent_greaterThanThreshold_expectedFormat() {
final PowerGaugePreference pref = new PowerGaugePreference(mContext);
- final BatteryDiffEntry batteryDiffEntry = createBatteryDiffEntry(
- /*isSystem=*/ true,
- /*screenOnTimeInMs=*/ 0,
- /*foregroundUsageTimeInMs=*/ 0,
- /*backgroundUsageTimeInMs=*/ 0);
+ final BatteryDiffEntry batteryDiffEntry =
+ createBatteryDiffEntry(
+ /* isSystem= */ true,
+ /* screenOnTimeInMs= */ 0,
+ /* foregroundUsageTimeInMs= */ 0,
+ /* backgroundUsageTimeInMs= */ 0);
batteryDiffEntry.mConsumePower = 16;
batteryDiffEntry.setTotalConsumePower(100);
mBatteryUsageBreakdownController.mPercentLessThanThresholdText = "< 1%";
@@ -299,11 +309,12 @@
pref.setSummary(PREF_SUMMARY);
mBatteryUsageBreakdownController.setPreferenceSummary(
- pref, createBatteryDiffEntry(
- /*isSystem=*/ true,
- /*screenOnTimeInMs=*/ 0,
- /*foregroundUsageTimeInMs=*/ 0,
- /*backgroundUsageTimeInMs=*/ 0));
+ pref,
+ createBatteryDiffEntry(
+ /* isSystem= */ true,
+ /* screenOnTimeInMs= */ 0,
+ /* foregroundUsageTimeInMs= */ 0,
+ /* backgroundUsageTimeInMs= */ 0));
assertThat(pref.getSummary().toString().isEmpty()).isTrue();
}
@@ -313,11 +324,12 @@
pref.setSummary(PREF_SUMMARY);
mBatteryUsageBreakdownController.setPreferenceSummary(
- pref, createBatteryDiffEntry(
- /*isSystem=*/ true,
- /*screenOnTimeInMs=*/ 0,
- /*foregroundUsageTimeInMs=*/ DateUtils.MINUTE_IN_MILLIS - 1,
- /*backgroundUsageTimeInMs=*/ 0));
+ pref,
+ createBatteryDiffEntry(
+ /* isSystem= */ true,
+ /* screenOnTimeInMs= */ 0,
+ /* foregroundUsageTimeInMs= */ DateUtils.MINUTE_IN_MILLIS - 1,
+ /* backgroundUsageTimeInMs= */ 0));
assertThat(pref.getSummary().toString()).isEqualTo("Total: less than a min");
}
@@ -327,11 +339,12 @@
pref.setSummary(PREF_SUMMARY);
mBatteryUsageBreakdownController.setPreferenceSummary(
- pref, createBatteryDiffEntry(
- /*isSystem=*/ true,
- /*screenOnTimeInMs=*/ 0,
- /*foregroundUsageTimeInMs=*/ DateUtils.MINUTE_IN_MILLIS * 2,
- /*backgroundUsageTimeInMs=*/ 0));
+ pref,
+ createBatteryDiffEntry(
+ /* isSystem= */ true,
+ /* screenOnTimeInMs= */ 0,
+ /* foregroundUsageTimeInMs= */ DateUtils.MINUTE_IN_MILLIS * 2,
+ /* backgroundUsageTimeInMs= */ 0));
assertThat(pref.getSummary().toString()).isEqualTo("Total: 2 min");
}
@@ -341,11 +354,12 @@
pref.setSummary(PREF_SUMMARY);
mBatteryUsageBreakdownController.setPreferenceSummary(
- pref, createBatteryDiffEntry(
- /*isSystem=*/ false,
- /*screenOnTimeInMs=*/ 0,
- /*foregroundUsageTimeInMs=*/ 0,
- /*backgroundUsageTimeInMs=*/ 0));
+ pref,
+ createBatteryDiffEntry(
+ /* isSystem= */ false,
+ /* screenOnTimeInMs= */ 0,
+ /* foregroundUsageTimeInMs= */ 0,
+ /* backgroundUsageTimeInMs= */ 0));
assertThat(pref.getSummary().toString().isEmpty()).isTrue();
}
@@ -355,11 +369,12 @@
pref.setSummary(PREF_SUMMARY);
mBatteryUsageBreakdownController.setPreferenceSummary(
- pref, createBatteryDiffEntry(
- /*isSystem=*/ false,
- /*screenOnTimeInMs=*/ 0,
- /*foregroundUsageTimeInMs=*/ 0,
- /*backgroundUsageTimeInMs=*/ DateUtils.MINUTE_IN_MILLIS));
+ pref,
+ createBatteryDiffEntry(
+ /* isSystem= */ false,
+ /* screenOnTimeInMs= */ 0,
+ /* foregroundUsageTimeInMs= */ 0,
+ /* backgroundUsageTimeInMs= */ DateUtils.MINUTE_IN_MILLIS));
assertThat(pref.getSummary().toString()).isEqualTo("Background: 1 min");
}
@@ -369,11 +384,12 @@
pref.setSummary(PREF_SUMMARY);
mBatteryUsageBreakdownController.setPreferenceSummary(
- pref, createBatteryDiffEntry(
- /*isSystem=*/ false,
- /*screenOnTimeInMs=*/ DateUtils.MINUTE_IN_MILLIS,
- /*foregroundUsageTimeInMs=*/ 0,
- /*backgroundUsageTimeInMs=*/ 0));
+ pref,
+ createBatteryDiffEntry(
+ /* isSystem= */ false,
+ /* screenOnTimeInMs= */ DateUtils.MINUTE_IN_MILLIS,
+ /* foregroundUsageTimeInMs= */ 0,
+ /* backgroundUsageTimeInMs= */ 0));
assertThat(pref.getSummary().toString()).isEqualTo("Screen time: 1 min");
}
@@ -383,21 +399,28 @@
pref.setSummary(PREF_SUMMARY);
mBatteryUsageBreakdownController.setPreferenceSummary(
- pref, createBatteryDiffEntry(
- /*isSystem=*/ false,
- /*screenOnTimeInMs=*/ DateUtils.MINUTE_IN_MILLIS - 1,
- /*foregroundUsageTimeInMs=*/ DateUtils.MINUTE_IN_MILLIS - 1,
- /*backgroundUsageTimeInMs=*/ DateUtils.MINUTE_IN_MILLIS - 1));
- assertThat(pref.getSummary().toString()).isEqualTo(
- "Screen time: less than a min\nBackground: less than a min");
+ pref,
+ createBatteryDiffEntry(
+ /* isSystem= */ false,
+ /* screenOnTimeInMs= */ DateUtils.MINUTE_IN_MILLIS - 1,
+ /* foregroundUsageTimeInMs= */ DateUtils.MINUTE_IN_MILLIS - 1,
+ /* backgroundUsageTimeInMs= */ DateUtils.MINUTE_IN_MILLIS - 1));
+ assertThat(pref.getSummary().toString())
+ .isEqualTo("Screen time: less than a min\nBackground: less than a min");
}
- private BatteryDiffEntry createBatteryDiffEntry(boolean isSystem, long screenOnTimeInMs,
- long foregroundUsageTimeInMs, long backgroundUsageTimeInMs) {
+ private BatteryDiffEntry createBatteryDiffEntry(
+ boolean isSystem,
+ long screenOnTimeInMs,
+ long foregroundUsageTimeInMs,
+ long backgroundUsageTimeInMs) {
final ContentValues contentValues = new ContentValues();
- contentValues.put(BatteryHistEntry.KEY_CONSUMER_TYPE, Integer.valueOf(
- isSystem ? ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY
- : ConvertUtils.CONSUMER_TYPE_UID_BATTERY));
+ contentValues.put(
+ BatteryHistEntry.KEY_CONSUMER_TYPE,
+ Integer.valueOf(
+ isSystem
+ ? ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY
+ : ConvertUtils.CONSUMER_TYPE_UID_BATTERY));
contentValues.put(BatteryHistEntry.KEY_USER_ID, Integer.valueOf(1001));
final BatteryHistEntry batteryHistEntry = new BatteryHistEntry(contentValues);
return new BatteryDiffEntry(
@@ -413,17 +436,17 @@
foregroundUsageTimeInMs,
backgroundUsageTimeInMs,
screenOnTimeInMs,
- /*consumePower=*/ 0,
- /*foregroundUsageConsumePower=*/ 0,
- /*foregroundServiceUsageConsumePower=*/ 0,
- /*backgroundUsageConsumePower=*/ 0,
- /*cachedUsageConsumePower=*/ 0);
+ /* consumePower= */ 0,
+ /* foregroundUsageConsumePower= */ 0,
+ /* foregroundServiceUsageConsumePower= */ 0,
+ /* backgroundUsageConsumePower= */ 0,
+ /* cachedUsageConsumePower= */ 0);
}
private BatteryUsageBreakdownController createController() {
final BatteryUsageBreakdownController controller =
new BatteryUsageBreakdownController(
- mContext, /*lifecycle=*/ null, mSettingsActivity, mFragment);
+ mContext, /* lifecycle= */ null, mSettingsActivity, mFragment);
controller.mPrefContext = mContext;
return controller;
}
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBroadcastReceiverTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBroadcastReceiverTest.java
index c4cb89e..af0cb91 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBroadcastReceiverTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBroadcastReceiverTest.java
@@ -48,8 +48,7 @@
private BatteryUsageBroadcastReceiver mBatteryUsageBroadcastReceiver;
private FakeFeatureFactory mFakeFeatureFactory;
- @Mock
- private PackageManager mPackageManager;
+ @Mock private PackageManager mPackageManager;
@Before
public void setUp() {
@@ -72,8 +71,8 @@
public void onReceive_workProfile_doNothing() {
BatteryTestUtils.setWorkProfile(mContext);
- mBatteryUsageBroadcastReceiver.onReceive(mContext,
- new Intent(BatteryUsageBroadcastReceiver.ACTION_BATTERY_UNPLUGGING));
+ mBatteryUsageBroadcastReceiver.onReceive(
+ mContext, new Intent(BatteryUsageBroadcastReceiver.ACTION_BATTERY_UNPLUGGING));
assertThat(mBatteryUsageBroadcastReceiver.mFetchBatteryUsageData).isFalse();
}
@@ -84,11 +83,12 @@
.thenReturn(Intent.ACTION_BATTERY_LEVEL_CHANGED);
when(mFakeFeatureFactory.powerUsageFeatureProvider.delayHourlyJobWhenBooting())
.thenReturn(true);
- doReturn(getBatteryIntent(/*level=*/ 20, BatteryManager.BATTERY_STATUS_UNKNOWN))
- .when(mContext).registerReceiver(any(), any());
+ doReturn(getBatteryIntent(/* level= */ 20, BatteryManager.BATTERY_STATUS_UNKNOWN))
+ .when(mContext)
+ .registerReceiver(any(), any());
- mBatteryUsageBroadcastReceiver.onReceive(mContext,
- new Intent(Intent.ACTION_BATTERY_LEVEL_CHANGED));
+ mBatteryUsageBroadcastReceiver.onReceive(
+ mContext, new Intent(Intent.ACTION_BATTERY_LEVEL_CHANGED));
assertThat(mBatteryUsageBroadcastReceiver.mFetchBatteryUsageData).isFalse();
assertSharedPreferences(Intent.ACTION_BATTERY_LEVEL_CHANGED);
@@ -101,14 +101,15 @@
when(mFakeFeatureFactory.powerUsageFeatureProvider.delayHourlyJobWhenBooting())
.thenReturn(true);
// Make sure isCharged returns true.
- doReturn(getBatteryIntent(/*level=*/ 100, BatteryManager.BATTERY_STATUS_FULL))
- .when(mContext).registerReceiver(any(), any());
+ doReturn(getBatteryIntent(/* level= */ 100, BatteryManager.BATTERY_STATUS_FULL))
+ .when(mContext)
+ .registerReceiver(any(), any());
// Make sure broadcast will be sent with delay.
BatteryUsageBroadcastReceiver.sBroadcastDelayFromBoot =
SystemClock.elapsedRealtime() + 5 * DateUtils.MINUTE_IN_MILLIS;
- mBatteryUsageBroadcastReceiver.onReceive(mContext,
- new Intent(Intent.ACTION_BATTERY_LEVEL_CHANGED));
+ mBatteryUsageBroadcastReceiver.onReceive(
+ mContext, new Intent(Intent.ACTION_BATTERY_LEVEL_CHANGED));
assertThat(mBatteryUsageBroadcastReceiver.mFetchBatteryUsageData).isFalse();
assertSharedPreferences(Intent.ACTION_BATTERY_LEVEL_CHANGED);
@@ -121,13 +122,14 @@
when(mFakeFeatureFactory.powerUsageFeatureProvider.delayHourlyJobWhenBooting())
.thenReturn(true);
// Make sure isCharged returns true.
- doReturn(getBatteryIntent(/*level=*/ 100, BatteryManager.BATTERY_STATUS_UNKNOWN))
- .when(mContext).registerReceiver(any(), any());
+ doReturn(getBatteryIntent(/* level= */ 100, BatteryManager.BATTERY_STATUS_UNKNOWN))
+ .when(mContext)
+ .registerReceiver(any(), any());
BatteryUsageBroadcastReceiver.sBroadcastDelayFromBoot =
SystemClock.elapsedRealtime() - 5 * DateUtils.MINUTE_IN_MILLIS;
- mBatteryUsageBroadcastReceiver.onReceive(mContext,
- new Intent(Intent.ACTION_BATTERY_LEVEL_CHANGED));
+ mBatteryUsageBroadcastReceiver.onReceive(
+ mContext, new Intent(Intent.ACTION_BATTERY_LEVEL_CHANGED));
assertThat(mBatteryUsageBroadcastReceiver.mFetchBatteryUsageData).isFalse();
assertSharedPreferences(Intent.ACTION_BATTERY_LEVEL_CHANGED);
@@ -140,13 +142,14 @@
when(mFakeFeatureFactory.powerUsageFeatureProvider.delayHourlyJobWhenBooting())
.thenReturn(true);
// Make sure isCharged returns true.
- doReturn(getBatteryIntent(/*level=*/ 100, BatteryManager.BATTERY_STATUS_UNKNOWN))
- .when(mContext).registerReceiver(any(), any());
+ doReturn(getBatteryIntent(/* level= */ 100, BatteryManager.BATTERY_STATUS_UNKNOWN))
+ .when(mContext)
+ .registerReceiver(any(), any());
BatteryUsageBroadcastReceiver.sBroadcastDelayFromBoot =
SystemClock.elapsedRealtime() - 5 * DateUtils.MINUTE_IN_MILLIS;
- mBatteryUsageBroadcastReceiver.onReceive(mContext,
- new Intent(Intent.ACTION_BATTERY_LEVEL_CHANGED));
+ mBatteryUsageBroadcastReceiver.onReceive(
+ mContext, new Intent(Intent.ACTION_BATTERY_LEVEL_CHANGED));
assertThat(mBatteryUsageBroadcastReceiver.mFetchBatteryUsageData).isTrue();
assertSharedPreferences(Intent.ACTION_BATTERY_LEVEL_CHANGED);
@@ -158,11 +161,12 @@
.thenReturn(Intent.ACTION_POWER_DISCONNECTED);
when(mFakeFeatureFactory.powerUsageFeatureProvider.delayHourlyJobWhenBooting())
.thenReturn(false);
- doReturn(getBatteryIntent(/*level=*/ 20, BatteryManager.BATTERY_STATUS_UNKNOWN))
- .when(mContext).registerReceiver(any(), any());
+ doReturn(getBatteryIntent(/* level= */ 20, BatteryManager.BATTERY_STATUS_UNKNOWN))
+ .when(mContext)
+ .registerReceiver(any(), any());
- mBatteryUsageBroadcastReceiver.onReceive(mContext,
- new Intent(BatteryUsageBroadcastReceiver.ACTION_BATTERY_UNPLUGGING));
+ mBatteryUsageBroadcastReceiver.onReceive(
+ mContext, new Intent(BatteryUsageBroadcastReceiver.ACTION_BATTERY_UNPLUGGING));
assertThat(mBatteryUsageBroadcastReceiver.mFetchBatteryUsageData).isFalse();
assertSharedPreferences(BatteryUsageBroadcastReceiver.ACTION_BATTERY_UNPLUGGING);
@@ -175,14 +179,15 @@
when(mFakeFeatureFactory.powerUsageFeatureProvider.delayHourlyJobWhenBooting())
.thenReturn(false);
// Make sure isCharged returns true.
- doReturn(getBatteryIntent(/*level=*/ 100, BatteryManager.BATTERY_STATUS_FULL))
- .when(mContext).registerReceiver(any(), any());
+ doReturn(getBatteryIntent(/* level= */ 100, BatteryManager.BATTERY_STATUS_FULL))
+ .when(mContext)
+ .registerReceiver(any(), any());
// Make sure broadcast will be sent with delay.
BatteryUsageBroadcastReceiver.sBroadcastDelayFromBoot =
SystemClock.elapsedRealtime() + 5 * DateUtils.MINUTE_IN_MILLIS;
- mBatteryUsageBroadcastReceiver.onReceive(mContext,
- new Intent(BatteryUsageBroadcastReceiver.ACTION_BATTERY_UNPLUGGING));
+ mBatteryUsageBroadcastReceiver.onReceive(
+ mContext, new Intent(BatteryUsageBroadcastReceiver.ACTION_BATTERY_UNPLUGGING));
assertThat(mBatteryUsageBroadcastReceiver.mFetchBatteryUsageData).isTrue();
assertSharedPreferences(BatteryUsageBroadcastReceiver.ACTION_BATTERY_UNPLUGGING);
@@ -195,13 +200,14 @@
when(mFakeFeatureFactory.powerUsageFeatureProvider.delayHourlyJobWhenBooting())
.thenReturn(false);
// Make sure isCharged returns true.
- doReturn(getBatteryIntent(/*level=*/ 100, BatteryManager.BATTERY_STATUS_UNKNOWN))
- .when(mContext).registerReceiver(any(), any());
+ doReturn(getBatteryIntent(/* level= */ 100, BatteryManager.BATTERY_STATUS_UNKNOWN))
+ .when(mContext)
+ .registerReceiver(any(), any());
BatteryUsageBroadcastReceiver.sBroadcastDelayFromBoot =
SystemClock.elapsedRealtime() - 5 * DateUtils.MINUTE_IN_MILLIS;
- mBatteryUsageBroadcastReceiver.onReceive(mContext,
- new Intent(BatteryUsageBroadcastReceiver.ACTION_BATTERY_UNPLUGGING));
+ mBatteryUsageBroadcastReceiver.onReceive(
+ mContext, new Intent(BatteryUsageBroadcastReceiver.ACTION_BATTERY_UNPLUGGING));
assertThat(mBatteryUsageBroadcastReceiver.mFetchBatteryUsageData).isFalse();
assertSharedPreferences(BatteryUsageBroadcastReceiver.ACTION_BATTERY_UNPLUGGING);
@@ -214,13 +220,14 @@
when(mFakeFeatureFactory.powerUsageFeatureProvider.delayHourlyJobWhenBooting())
.thenReturn(false);
// Make sure isCharged returns true.
- doReturn(getBatteryIntent(/*level=*/ 100, BatteryManager.BATTERY_STATUS_UNKNOWN))
- .when(mContext).registerReceiver(any(), any());
+ doReturn(getBatteryIntent(/* level= */ 100, BatteryManager.BATTERY_STATUS_UNKNOWN))
+ .when(mContext)
+ .registerReceiver(any(), any());
BatteryUsageBroadcastReceiver.sBroadcastDelayFromBoot =
SystemClock.elapsedRealtime() - 5 * DateUtils.MINUTE_IN_MILLIS;
- mBatteryUsageBroadcastReceiver.onReceive(mContext,
- new Intent(BatteryUsageBroadcastReceiver.ACTION_BATTERY_UNPLUGGING));
+ mBatteryUsageBroadcastReceiver.onReceive(
+ mContext, new Intent(BatteryUsageBroadcastReceiver.ACTION_BATTERY_UNPLUGGING));
assertThat(mBatteryUsageBroadcastReceiver.mFetchBatteryUsageData).isTrue();
assertSharedPreferences(BatteryUsageBroadcastReceiver.ACTION_BATTERY_UNPLUGGING);
@@ -234,12 +241,12 @@
/*packageName*/ "com.android.testing_package", Boolean.valueOf(true));
assertThat(BatteryDiffEntry.sValidForRestriction).isNotEmpty();
- mBatteryUsageBroadcastReceiver.onReceive(mContext,
+ mBatteryUsageBroadcastReceiver.onReceive(
+ mContext,
new Intent(BatteryUsageBroadcastReceiver.ACTION_CLEAR_BATTERY_CACHE_DATA));
assertThat(BatteryDiffEntry.sValidForRestriction).isEmpty();
- assertSharedPreferences(
- BatteryUsageBroadcastReceiver.ACTION_CLEAR_BATTERY_CACHE_DATA);
+ assertSharedPreferences(BatteryUsageBroadcastReceiver.ACTION_CLEAR_BATTERY_CACHE_DATA);
}
@Test
@@ -250,12 +257,12 @@
/*packageName*/ "com.android.testing_package", Boolean.valueOf(true));
assertThat(BatteryDiffEntry.sValidForRestriction).isNotEmpty();
- mBatteryUsageBroadcastReceiver.onReceive(mContext,
+ mBatteryUsageBroadcastReceiver.onReceive(
+ mContext,
new Intent(BatteryUsageBroadcastReceiver.ACTION_CLEAR_BATTERY_CACHE_DATA));
assertThat(BatteryDiffEntry.sValidForRestriction).isNotEmpty();
- assertSharedPreferences(
- BatteryUsageBroadcastReceiver.ACTION_CLEAR_BATTERY_CACHE_DATA);
+ assertSharedPreferences(BatteryUsageBroadcastReceiver.ACTION_CLEAR_BATTERY_CACHE_DATA);
}
private static Intent getBatteryIntent(int level, int status) {
@@ -267,7 +274,6 @@
}
private void assertSharedPreferences(String preferenceKey) {
- assertThat(DatabaseUtils.getSharedPreferences(mContext).contains(preferenceKey))
- .isTrue();
+ assertThat(DatabaseUtils.getSharedPreferences(mContext).contains(preferenceKey)).isTrue();
}
}
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageContentProviderTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageContentProviderTest.java
index 999a921..95b950f 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageContentProviderTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageContentProviderTest.java
@@ -66,7 +66,7 @@
public void setUp() {
mContext = ApplicationProvider.getApplicationContext();
mProvider = new BatteryUsageContentProvider();
- mProvider.attachInfo(mContext, /*info=*/ null);
+ mProvider.attachInfo(mContext, /* info= */ null);
BatteryTestUtils.setUpBatteryStateDatabase(mContext);
}
@@ -95,11 +95,14 @@
IllegalArgumentException.class,
() ->
mProvider.query(
- uri, /*strings=*/ null, /*s=*/ null, /*strings1=*/ null,
- /*s1=*/ null));
+ uri,
+ /* strings= */ null,
+ /* s= */ null,
+ /* strings1= */ null,
+ /* s1= */ null));
assertThrows(
IllegalArgumentException.class,
- () -> mProvider.insert(uri, /*contentValues=*/ null));
+ () -> mProvider.insert(uri, /* contentValues= */ null));
}
@Test
@@ -116,11 +119,14 @@
IllegalArgumentException.class,
() ->
mProvider.query(
- uri, /*strings=*/ null, /*s=*/ null, /*strings1=*/ null,
- /*s1=*/ null));
+ uri,
+ /* strings= */ null,
+ /* s= */ null,
+ /* strings1= */ null,
+ /* s1= */ null));
assertThrows(
IllegalArgumentException.class,
- () -> mProvider.insert(uri, /*contentValues=*/ null));
+ () -> mProvider.insert(uri, /* contentValues= */ null));
}
@Test
@@ -128,7 +134,8 @@
mProvider.onCreate();
ContentValues values = new ContentValues();
values.put(BatteryEventEntity.KEY_TIMESTAMP, 10001L);
- values.put(BatteryEventEntity.KEY_BATTERY_EVENT_TYPE,
+ values.put(
+ BatteryEventEntity.KEY_BATTERY_EVENT_TYPE,
BatteryEventType.FULL_CHARGED.getNumber());
values.put(BatteryEventEntity.KEY_BATTERY_LEVEL, 100);
mProvider.insert(DatabaseUtils.BATTERY_EVENT_URI, values);
@@ -263,15 +270,13 @@
public void insert_batteryState_returnsExpectedResult() {
mProvider.onCreate();
final DeviceBatteryState deviceBatteryState =
- DeviceBatteryState
- .newBuilder()
+ DeviceBatteryState.newBuilder()
.setBatteryLevel(51)
.setBatteryStatus(2)
.setBatteryHealth(3)
.build();
final BatteryInformation batteryInformation =
- BatteryInformation
- .newBuilder()
+ BatteryInformation.newBuilder()
.setDeviceBatteryState(deviceBatteryState)
.setAppLabel("Settings")
.setIsHidden(true)
@@ -318,17 +323,13 @@
public void insert_partialFieldsContentValues_returnsExpectedResult() {
mProvider.onCreate();
final DeviceBatteryState deviceBatteryState =
- DeviceBatteryState
- .newBuilder()
+ DeviceBatteryState.newBuilder()
.setBatteryLevel(52)
.setBatteryStatus(3)
.setBatteryHealth(2)
.build();
final BatteryInformation batteryInformation =
- BatteryInformation
- .newBuilder()
- .setDeviceBatteryState(deviceBatteryState)
- .build();
+ BatteryInformation.newBuilder().setDeviceBatteryState(deviceBatteryState).build();
final String expectedBatteryInformationString =
ConvertUtils.convertBatteryInformationToString(batteryInformation);
final ContentValues values = new ContentValues();
@@ -381,7 +382,8 @@
mProvider.onCreate();
ContentValues values = new ContentValues();
values.put(BatteryEventEntity.KEY_TIMESTAMP, 10001L);
- values.put(BatteryEventEntity.KEY_BATTERY_EVENT_TYPE,
+ values.put(
+ BatteryEventEntity.KEY_BATTERY_EVENT_TYPE,
BatteryEventType.POWER_CONNECTED.getNumber());
values.put(BatteryEventEntity.KEY_BATTERY_LEVEL, 66);
@@ -393,24 +395,26 @@
BatteryStateDatabase.getInstance(mContext).batteryEventDao().getAll();
assertThat(entities).hasSize(1);
assertThat(entities.get(0).timestamp).isEqualTo(10001L);
- assertThat(entities.get(0).batteryEventType).isEqualTo(
- BatteryEventType.POWER_CONNECTED.getNumber());
+ assertThat(entities.get(0).batteryEventType)
+ .isEqualTo(BatteryEventType.POWER_CONNECTED.getNumber());
assertThat(entities.get(0).batteryLevel).isEqualTo(66);
- final Cursor cursor1 = getCursorOfBatteryEvents(
- 0L, List.of(BatteryEventType.POWER_CONNECTED.getNumber()));
+ final Cursor cursor1 =
+ getCursorOfBatteryEvents(0L, List.of(BatteryEventType.POWER_CONNECTED.getNumber()));
assertThat(cursor1.getCount()).isEqualTo(1);
cursor1.moveToFirst();
assertThat(cursor1.getLong(cursor1.getColumnIndex(BatteryEventEntity.KEY_TIMESTAMP)))
.isEqualTo(10001L);
assertThat(
- cursor1.getInt(cursor1.getColumnIndex(BatteryEventEntity.KEY_BATTERY_EVENT_TYPE)))
+ cursor1.getInt(
+ cursor1.getColumnIndex(BatteryEventEntity.KEY_BATTERY_EVENT_TYPE)))
.isEqualTo(BatteryEventType.POWER_CONNECTED.getNumber());
assertThat(cursor1.getInt(cursor1.getColumnIndex(BatteryEventEntity.KEY_BATTERY_LEVEL)))
.isEqualTo(66);
- final Cursor cursor2 = getCursorOfBatteryEvents(
- 0L, List.of(BatteryEventType.POWER_DISCONNECTED.getNumber()));
+ final Cursor cursor2 =
+ getCursorOfBatteryEvents(
+ 0L, List.of(BatteryEventType.POWER_DISCONNECTED.getNumber()));
assertThat(cursor2.getCount()).isEqualTo(0);
}
@@ -435,8 +439,11 @@
cursor1.moveToFirst();
assertThat(cursor1.getLong(cursor1.getColumnIndex(BatteryUsageSlotEntity.KEY_TIMESTAMP)))
.isEqualTo(10001L);
- assertThat(cursor1.getString(cursor1.getColumnIndex(
- BatteryUsageSlotEntity.KEY_BATTERY_USAGE_SLOT))).isEqualTo("TEST_STRING");
+ assertThat(
+ cursor1.getString(
+ cursor1.getColumnIndex(
+ BatteryUsageSlotEntity.KEY_BATTERY_USAGE_SLOT)))
+ .isEqualTo("TEST_STRING");
final Cursor cursor2 = getCursorOfBatteryUsageSlots(10002L);
assertThat(cursor2.getCount()).isEqualTo(0);
@@ -446,7 +453,7 @@
public void delete_throwsUnsupportedOperationException() {
assertThrows(
UnsupportedOperationException.class,
- () -> mProvider.delete(/*uri=*/ null, /*s=*/ null, /*strings=*/ null));
+ () -> mProvider.delete(/* uri= */ null, /* s= */ null, /* strings= */ null));
}
@Test
@@ -455,13 +462,13 @@
UnsupportedOperationException.class,
() ->
mProvider.update(
- /*uri=*/ null, /*contentValues=*/ null, /*s=*/ null,
- /*strings=*/ null));
+ /* uri= */ null,
+ /* contentValues= */ null,
+ /* s= */ null,
+ /* strings= */ null));
}
- private Cursor insertBatteryState(
- Duration currentTime,
- String queryTimestamp)
+ private Cursor insertBatteryState(Duration currentTime, String queryTimestamp)
throws Exception {
mProvider.onCreate();
final FakeClock fakeClock = new FakeClock();
@@ -470,20 +477,17 @@
final long currentTimestamp = currentTime.toMillis();
// Inserts some valid testing data.
BatteryTestUtils.insertDataToBatteryStateTable(
- mContext, currentTimestamp - 6, PACKAGE_NAME1,
- /*isFullChargeStart=*/ true);
+ mContext, currentTimestamp - 6, PACKAGE_NAME1, /* isFullChargeStart= */ true);
BatteryTestUtils.insertDataToBatteryStateTable(
mContext, currentTimestamp - 2, PACKAGE_NAME2);
- BatteryTestUtils.insertDataToBatteryStateTable(
- mContext, currentTimestamp, PACKAGE_NAME3);
+ BatteryTestUtils.insertDataToBatteryStateTable(mContext, currentTimestamp, PACKAGE_NAME3);
final Uri batteryStateQueryContentUri =
new Uri.Builder()
.scheme(ContentResolver.SCHEME_CONTENT)
.authority(DatabaseUtils.AUTHORITY)
.appendPath(DatabaseUtils.BATTERY_STATE_TABLE)
- .appendQueryParameter(
- DatabaseUtils.QUERY_KEY_TIMESTAMP, queryTimestamp)
+ .appendQueryParameter(DatabaseUtils.QUERY_KEY_TIMESTAMP, queryTimestamp)
.build();
final Cursor cursor = query(batteryStateQueryContentUri);
@@ -532,17 +536,17 @@
.scheme(ContentResolver.SCHEME_CONTENT)
.authority(DatabaseUtils.AUTHORITY)
.appendPath(DatabaseUtils.APP_USAGE_LATEST_TIMESTAMP_PATH)
- .appendQueryParameter(
- DatabaseUtils.QUERY_KEY_USERID, Long.toString(userId))
+ .appendQueryParameter(DatabaseUtils.QUERY_KEY_USERID, Long.toString(userId))
.build();
return query(appUsageLatestTimestampQueryContentUri);
}
private Cursor getCursorOfAppUsage(final List<Long> userIds, final long queryTimestamp) {
- final String queryUserIdString = userIds.stream()
- .map(userId -> String.valueOf(userId))
- .collect(Collectors.joining(","));
+ final String queryUserIdString =
+ userIds.stream()
+ .map(userId -> String.valueOf(userId))
+ .collect(Collectors.joining(","));
final Uri appUsageEventUri =
new Uri.Builder()
.scheme(ContentResolver.SCHEME_CONTENT)
@@ -558,9 +562,10 @@
private Cursor getCursorOfBatteryEvents(
final long queryTimestamp, final List<Integer> batteryEventTypes) {
- final String batteryEventTypesString = batteryEventTypes.stream()
- .map(type -> String.valueOf(type))
- .collect(Collectors.joining(","));
+ final String batteryEventTypesString =
+ batteryEventTypes.stream()
+ .map(type -> String.valueOf(type))
+ .collect(Collectors.joining(","));
final Uri batteryEventUri =
new Uri.Builder()
.scheme(ContentResolver.SCHEME_CONTENT)
@@ -590,6 +595,6 @@
private Cursor query(Uri uri) {
return mProvider.query(
- uri, /*strings=*/ null, /*s=*/ null, /*strings1=*/ null, /*s1=*/ null);
+ uri, /* strings= */ null, /* s= */ null, /* strings1= */ null, /* s1= */ null);
}
}
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageDataLoaderTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageDataLoaderTest.java
index f3965fd..723a138 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageDataLoaderTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageDataLoaderTest.java
@@ -52,28 +52,22 @@
public final class BatteryUsageDataLoaderTest {
private Context mContext;
- @Mock
- private ContentResolver mMockContentResolver;
- @Mock
- private BatteryStatsManager mBatteryStatsManager;
- @Mock
- private PackageManager mPackageManager;
- @Mock
- private UserManager mUserManager;
- @Mock
- private BatteryUsageStats mBatteryUsageStats;
- @Mock
- private BatteryEntry mMockBatteryEntry;
- @Captor
- private ArgumentCaptor<BatteryUsageStatsQuery> mStatsQueryCaptor;
+ @Mock private ContentResolver mMockContentResolver;
+ @Mock private BatteryStatsManager mBatteryStatsManager;
+ @Mock private PackageManager mPackageManager;
+ @Mock private UserManager mUserManager;
+ @Mock private BatteryUsageStats mBatteryUsageStats;
+ @Mock private BatteryEntry mMockBatteryEntry;
+ @Captor private ArgumentCaptor<BatteryUsageStatsQuery> mStatsQueryCaptor;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
mContext = spy(RuntimeEnvironment.application);
doReturn(mContext).when(mContext).getApplicationContext();
- doReturn(mBatteryStatsManager).when(mContext).getSystemService(
- Context.BATTERY_STATS_SERVICE);
+ doReturn(mBatteryStatsManager)
+ .when(mContext)
+ .getSystemService(Context.BATTERY_STATS_SERVICE);
doReturn(mPackageManager).when(mContext).getPackageManager();
doReturn(mUserManager).when(mContext).getSystemService(UserManager.class);
doReturn(mMockContentResolver).when(mContext).getContentResolver();
@@ -88,11 +82,10 @@
.thenReturn(mBatteryUsageStats);
BatteryUsageDataLoader.sFakeBatteryEntryListSupplier = () -> batteryEntryList;
- BatteryUsageDataLoader.loadBatteryStatsData(mContext, /*isFullChargeStart=*/ false);
+ BatteryUsageDataLoader.loadBatteryStatsData(mContext, /* isFullChargeStart= */ false);
final int queryFlags = mStatsQueryCaptor.getValue().getFlags();
- assertThat(queryFlags
- & BatteryUsageStatsQuery.FLAG_BATTERY_USAGE_STATS_INCLUDE_HISTORY)
+ assertThat(queryFlags & BatteryUsageStatsQuery.FLAG_BATTERY_USAGE_STATS_INCLUDE_HISTORY)
.isNotEqualTo(0);
verify(mMockContentResolver).insert(any(), any());
}
@@ -103,7 +96,7 @@
.thenReturn(mBatteryUsageStats);
BatteryUsageDataLoader.sFakeBatteryEntryListSupplier = () -> null;
- BatteryUsageDataLoader.loadBatteryStatsData(mContext, /*isFullChargeStart=*/ false);
+ BatteryUsageDataLoader.loadBatteryStatsData(mContext, /* isFullChargeStart= */ false);
verify(mMockContentResolver).insert(any(), any());
}
@@ -114,7 +107,7 @@
.thenReturn(mBatteryUsageStats);
BatteryUsageDataLoader.sFakeBatteryEntryListSupplier = () -> new ArrayList<>();
- BatteryUsageDataLoader.loadBatteryStatsData(mContext, /*isFullChargeStart=*/ false);
+ BatteryUsageDataLoader.loadBatteryStatsData(mContext, /* isFullChargeStart= */ false);
verify(mMockContentResolver).insert(any(), any());
}
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageStatsLoaderTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageStatsLoaderTest.java
index 1d0bca4..2932209 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageStatsLoaderTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageStatsLoaderTest.java
@@ -39,25 +39,23 @@
@RunWith(RobolectricTestRunner.class)
public class BatteryUsageStatsLoaderTest {
private Context mContext;
- @Mock
- private BatteryStatsManager mBatteryStatsManager;
- @Mock
- private BatteryUsageStats mBatteryUsageStats;
- @Captor
- private ArgumentCaptor<BatteryUsageStatsQuery> mUsageStatsQueryCaptor;
+ @Mock private BatteryStatsManager mBatteryStatsManager;
+ @Mock private BatteryUsageStats mBatteryUsageStats;
+ @Captor private ArgumentCaptor<BatteryUsageStatsQuery> mUsageStatsQueryCaptor;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
mContext = spy(RuntimeEnvironment.application);
- doReturn(mBatteryStatsManager).when(mContext).getSystemService(
- Context.BATTERY_STATS_SERVICE);
+ doReturn(mBatteryStatsManager)
+ .when(mContext)
+ .getSystemService(Context.BATTERY_STATS_SERVICE);
}
@Test
public void testLoadInBackground_loadWithoutHistory() {
- BatteryUsageStatsLoader loader = new BatteryUsageStatsLoader(
- mContext, /* includeBatteryHistory */ false);
+ BatteryUsageStatsLoader loader =
+ new BatteryUsageStatsLoader(mContext, /* includeBatteryHistory */ false);
when(mBatteryStatsManager.getBatteryUsageStats(mUsageStatsQueryCaptor.capture()))
.thenReturn(mBatteryUsageStats);
@@ -65,14 +63,14 @@
loader.loadInBackground();
final int queryFlags = mUsageStatsQueryCaptor.getValue().getFlags();
- assertThat(queryFlags
- & BatteryUsageStatsQuery.FLAG_BATTERY_USAGE_STATS_INCLUDE_HISTORY).isEqualTo(0);
+ assertThat(queryFlags & BatteryUsageStatsQuery.FLAG_BATTERY_USAGE_STATS_INCLUDE_HISTORY)
+ .isEqualTo(0);
}
@Test
public void testLoadInBackground_loadWithHistory() {
- BatteryUsageStatsLoader loader = new BatteryUsageStatsLoader(
- mContext, /* includeBatteryHistory */ true);
+ BatteryUsageStatsLoader loader =
+ new BatteryUsageStatsLoader(mContext, /* includeBatteryHistory */ true);
when(mBatteryStatsManager.getBatteryUsageStats(mUsageStatsQueryCaptor.capture()))
.thenReturn(mBatteryUsageStats);
@@ -80,7 +78,7 @@
loader.loadInBackground();
final int queryFlags = mUsageStatsQueryCaptor.getValue().getFlags();
- assertThat(queryFlags
- & BatteryUsageStatsQuery.FLAG_BATTERY_USAGE_STATS_INCLUDE_HISTORY).isNotEqualTo(0);
+ assertThat(queryFlags & BatteryUsageStatsQuery.FLAG_BATTERY_USAGE_STATS_INCLUDE_HISTORY)
+ .isNotEqualTo(0);
}
}
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BootBroadcastReceiverTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BootBroadcastReceiverTest.java
index 566df52..118c3ed 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BootBroadcastReceiverTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BootBroadcastReceiverTest.java
@@ -88,7 +88,8 @@
final SharedPreferences sharedPreferences = DatabaseUtils.getSharedPreferences(mContext);
sharedPreferences
.edit()
- .putInt(DatabaseUtils.KEY_LAST_USAGE_SOURCE,
+ .putInt(
+ DatabaseUtils.KEY_LAST_USAGE_SOURCE,
UsageStatsManager.USAGE_SOURCE_CURRENT_ACTIVITY)
.apply();
@@ -96,9 +97,8 @@
assertThat(mShadowAlarmManager.peekNextScheduledAlarm()).isNotNull();
assertThat(
- DatabaseUtils
- .getSharedPreferences(mContext)
- .contains(DatabaseUtils.KEY_LAST_USAGE_SOURCE))
+ DatabaseUtils.getSharedPreferences(mContext)
+ .contains(DatabaseUtils.KEY_LAST_USAGE_SOURCE))
.isFalse();
}
@@ -124,7 +124,7 @@
@Test
public void onReceive_nullIntent_notRefreshesJob() {
- mReceiver.onReceive(mContext, /*intent=*/ null);
+ mReceiver.onReceive(mContext, /* intent= */ null);
assertThat(mShadowAlarmManager.peekNextScheduledAlarm()).isNull();
}
@@ -142,11 +142,10 @@
public void invokeJobRecheck_broadcastsIntent() {
BootBroadcastReceiver.invokeJobRecheck(mContext);
- final List<Intent> intents =
- Shadows.shadowOf((Application) mContext).getBroadcastIntents();
+ final List<Intent> intents = Shadows.shadowOf((Application) mContext).getBroadcastIntents();
assertThat(intents).hasSize(1);
- assertThat(intents.get(0).getAction()).isEqualTo(
- BootBroadcastReceiver.ACTION_PERIODIC_JOB_RECHECK);
+ assertThat(intents.get(0).getAction())
+ .isEqualTo(BootBroadcastReceiver.ACTION_PERIODIC_JOB_RECHECK);
}
private void clearSharedPreferences() {
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/ConvertUtilsTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/ConvertUtilsTest.java
index c648cde..672bc54 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/ConvertUtilsTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/ConvertUtilsTest.java
@@ -61,14 +61,10 @@
private Context mContext;
- @Mock
- private PackageManager mMockPackageManager;
- @Mock
- private BatteryUsageStats mBatteryUsageStats;
- @Mock
- private BatteryEntry mMockBatteryEntry;
- @Mock
- private IUsageStatsManager mUsageStatsManager;
+ @Mock private PackageManager mMockPackageManager;
+ @Mock private BatteryUsageStats mBatteryUsageStats;
+ @Mock private BatteryEntry mMockBatteryEntry;
+ @Mock private IUsageStatsManager mUsageStatsManager;
@Before
public void setUp() {
@@ -104,12 +100,12 @@
ConvertUtils.convertBatteryEntryToContentValues(
mMockBatteryEntry,
mBatteryUsageStats,
- /*batteryLevel=*/ 12,
- /*batteryStatus=*/ BatteryManager.BATTERY_STATUS_FULL,
- /*batteryHealth=*/ BatteryManager.BATTERY_HEALTH_COLD,
- /*bootTimestamp=*/ 101L,
- /*timestamp=*/ 10001L,
- /*isFullChargeStart=*/ true);
+ /* batteryLevel= */ 12,
+ /* batteryStatus= */ BatteryManager.BATTERY_STATUS_FULL,
+ /* batteryHealth= */ BatteryManager.BATTERY_HEALTH_COLD,
+ /* bootTimestamp= */ 101L,
+ /* timestamp= */ 10001L,
+ /* isFullChargeStart= */ true);
final BatteryInformation batteryInformation =
ConvertUtils.getBatteryInformation(
values, BatteryHistEntry.KEY_BATTERY_INFORMATION);
@@ -150,8 +146,8 @@
when(mMockBatteryEntry.getUid()).thenReturn(-1);
when(mMockBatteryEntry.getLabel()).thenReturn("CPU");
when(mMockBatteryEntry.getDefaultPackageName()).thenReturn(null);
- when(mMockBatteryEntry.getPowerComponentId()).thenReturn(
- BatteryConsumer.POWER_COMPONENT_CPU);
+ when(mMockBatteryEntry.getPowerComponentId())
+ .thenReturn(BatteryConsumer.POWER_COMPONENT_CPU);
when(mBatteryUsageStats.getConsumedPower()).thenReturn(5.1);
when(mMockBatteryEntry.getConsumedPower()).thenReturn(1.1);
when(mMockBatteryEntry.getConsumedPowerInForeground()).thenReturn(1.2);
@@ -168,12 +164,12 @@
ConvertUtils.convertBatteryEntryToContentValues(
mMockBatteryEntry,
mBatteryUsageStats,
- /*batteryLevel=*/ 12,
- /*batteryStatus=*/ BatteryManager.BATTERY_STATUS_FULL,
- /*batteryHealth=*/ BatteryManager.BATTERY_HEALTH_COLD,
- /*bootTimestamp=*/ 101L,
- /*timestamp=*/ 10001L,
- /*isFullChargeStart=*/ true);
+ /* batteryLevel= */ 12,
+ /* batteryStatus= */ BatteryManager.BATTERY_STATUS_FULL,
+ /* batteryHealth= */ BatteryManager.BATTERY_HEALTH_COLD,
+ /* bootTimestamp= */ 101L,
+ /* timestamp= */ 10001L,
+ /* isFullChargeStart= */ true);
final BatteryInformation batteryInformation =
ConvertUtils.getBatteryInformation(
values, BatteryHistEntry.KEY_BATTERY_INFORMATION);
@@ -200,8 +196,8 @@
assertThat(batteryInformation.getPercentOfTotal()).isEqualTo(0.3);
assertThat(batteryInformation.getForegroundUsageTimeInMs()).isEqualTo(1234L);
assertThat(batteryInformation.getBackgroundUsageTimeInMs()).isEqualTo(5689L);
- assertThat(batteryInformation.getDrainType()).isEqualTo(
- BatteryConsumer.POWER_COMPONENT_CPU);
+ assertThat(batteryInformation.getDrainType())
+ .isEqualTo(BatteryConsumer.POWER_COMPONENT_CPU);
assertThat(deviceBatteryState.getBatteryLevel()).isEqualTo(12);
assertThat(deviceBatteryState.getBatteryStatus())
.isEqualTo(BatteryManager.BATTERY_STATUS_FULL);
@@ -213,14 +209,14 @@
public void convertBatteryEntryToContentValues_nullBatteryEntry_returnsExpectedContentValues() {
final ContentValues values =
ConvertUtils.convertBatteryEntryToContentValues(
- /*entry=*/ null,
- /*batteryUsageStats=*/ null,
- /*batteryLevel=*/ 12,
- /*batteryStatus=*/ BatteryManager.BATTERY_STATUS_FULL,
- /*batteryHealth=*/ BatteryManager.BATTERY_HEALTH_COLD,
- /*bootTimestamp=*/ 101L,
- /*timestamp=*/ 10001L,
- /*isFullChargeStart=*/ false);
+ /* entry= */ null,
+ /* batteryUsageStats= */ null,
+ /* batteryLevel= */ 12,
+ /* batteryStatus= */ BatteryManager.BATTERY_STATUS_FULL,
+ /* batteryHealth= */ BatteryManager.BATTERY_HEALTH_COLD,
+ /* bootTimestamp= */ 101L,
+ /* timestamp= */ 10001L,
+ /* isFullChargeStart= */ false);
final BatteryInformation batteryInformation =
ConvertUtils.getBatteryInformation(
@@ -234,8 +230,7 @@
.isEqualTo(BatteryManager.BATTERY_STATUS_FULL);
assertThat(deviceBatteryState.getBatteryHealth())
.isEqualTo(BatteryManager.BATTERY_HEALTH_COLD);
- assertThat(values.getAsLong(BatteryHistEntry.KEY_TIMESTAMP))
- .isEqualTo(10001L);
+ assertThat(values.getAsLong(BatteryHistEntry.KEY_TIMESTAMP)).isEqualTo(10001L);
assertThat(values.getAsString(BatteryHistEntry.KEY_PACKAGE_NAME))
.isEqualTo(ConvertUtils.FAKE_PACKAGE_NAME);
}
@@ -273,11 +268,10 @@
.setType(BatteryEventType.POWER_CONNECTED)
.setBatteryLevel(66)
.build();
- final ContentValues values =
- ConvertUtils.convertBatteryEventToContentValues(batteryEvent);
+ final ContentValues values = ConvertUtils.convertBatteryEventToContentValues(batteryEvent);
assertThat(values.getAsLong(BatteryEventEntity.KEY_TIMESTAMP)).isEqualTo(10001L);
- assertThat(values.getAsInteger(BatteryEventEntity.KEY_BATTERY_EVENT_TYPE)).isEqualTo(
- BatteryEventType.POWER_CONNECTED.getNumber());
+ assertThat(values.getAsInteger(BatteryEventEntity.KEY_BATTERY_EVENT_TYPE))
+ .isEqualTo(BatteryEventType.POWER_CONNECTED.getNumber());
assertThat(values.getAsInteger(BatteryEventEntity.KEY_BATTERY_LEVEL)).isEqualTo(66);
}
@@ -302,8 +296,7 @@
final int expectedType = 3;
when(mMockBatteryEntry.getUid()).thenReturn(1001);
when(mMockBatteryEntry.getLabel()).thenReturn("Settings");
- when(mMockBatteryEntry.getDefaultPackageName())
- .thenReturn("com.android.settings.battery");
+ when(mMockBatteryEntry.getDefaultPackageName()).thenReturn("com.android.settings.battery");
when(mMockBatteryEntry.isHidden()).thenReturn(true);
when(mBatteryUsageStats.getConsumedPower()).thenReturn(5.1);
when(mMockBatteryEntry.getConsumedPower()).thenReturn(1.1);
@@ -319,23 +312,16 @@
.thenReturn(ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY);
final BatteryHistEntry batteryHistEntry =
- ConvertUtils.convertToBatteryHistEntry(
- mMockBatteryEntry,
- mBatteryUsageStats);
+ ConvertUtils.convertToBatteryHistEntry(mMockBatteryEntry, mBatteryUsageStats);
assertThat(batteryHistEntry.mUid).isEqualTo(1001L);
- assertThat(batteryHistEntry.mUserId)
- .isEqualTo(UserHandle.getUserId(1001));
- assertThat(batteryHistEntry.mAppLabel)
- .isEqualTo("Settings");
- assertThat(batteryHistEntry.mPackageName)
- .isEqualTo("com.android.settings.battery");
+ assertThat(batteryHistEntry.mUserId).isEqualTo(UserHandle.getUserId(1001));
+ assertThat(batteryHistEntry.mAppLabel).isEqualTo("Settings");
+ assertThat(batteryHistEntry.mPackageName).isEqualTo("com.android.settings.battery");
assertThat(batteryHistEntry.mIsHidden).isTrue();
- assertThat(batteryHistEntry.mBootTimestamp)
- .isEqualTo(0L);
+ assertThat(batteryHistEntry.mBootTimestamp).isEqualTo(0L);
assertThat(batteryHistEntry.mTimestamp).isEqualTo(0L);
- assertThat(batteryHistEntry.mZoneId)
- .isEqualTo(TimeZone.getDefault().getID());
+ assertThat(batteryHistEntry.mZoneId).isEqualTo(TimeZone.getDefault().getID());
assertThat(batteryHistEntry.mTotalPower).isEqualTo(5.1);
assertThat(batteryHistEntry.mConsumePower).isEqualTo(1.1);
assertThat(batteryHistEntry.mForegroundUsageConsumePower).isEqualTo(1.2);
@@ -343,10 +329,8 @@
assertThat(batteryHistEntry.mBackgroundUsageConsumePower).isEqualTo(1.4);
assertThat(batteryHistEntry.mCachedUsageConsumePower).isEqualTo(1.5);
assertThat(batteryHistEntry.mPercentOfTotal).isEqualTo(0.3);
- assertThat(batteryHistEntry.mForegroundUsageTimeInMs)
- .isEqualTo(1234L);
- assertThat(batteryHistEntry.mBackgroundUsageTimeInMs)
- .isEqualTo(5689L);
+ assertThat(batteryHistEntry.mForegroundUsageTimeInMs).isEqualTo(1234L);
+ assertThat(batteryHistEntry.mBackgroundUsageTimeInMs).isEqualTo(5689L);
assertThat(batteryHistEntry.mDrainType).isEqualTo(expectedType);
assertThat(batteryHistEntry.mConsumerType)
.isEqualTo(ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY);
@@ -359,20 +343,15 @@
public void convertToBatteryHistEntry_nullBatteryEntry_returnsExpectedResult() {
final BatteryHistEntry batteryHistEntry =
ConvertUtils.convertToBatteryHistEntry(
- /*entry=*/ null,
- /*batteryUsageStats=*/ null);
+ /* entry= */ null, /* batteryUsageStats= */ null);
- assertThat(batteryHistEntry.mBootTimestamp)
- .isEqualTo(0L);
- assertThat(batteryHistEntry.mTimestamp)
- .isEqualTo(0);
- assertThat(batteryHistEntry.mZoneId)
- .isEqualTo(TimeZone.getDefault().getID());
+ assertThat(batteryHistEntry.mBootTimestamp).isEqualTo(0L);
+ assertThat(batteryHistEntry.mTimestamp).isEqualTo(0);
+ assertThat(batteryHistEntry.mZoneId).isEqualTo(TimeZone.getDefault().getID());
assertThat(batteryHistEntry.mBatteryLevel).isEqualTo(0);
assertThat(batteryHistEntry.mBatteryStatus).isEqualTo(0);
assertThat(batteryHistEntry.mBatteryHealth).isEqualTo(0);
- assertThat(batteryHistEntry.mPackageName)
- .isEqualTo(ConvertUtils.FAKE_PACKAGE_NAME);
+ assertThat(batteryHistEntry.mPackageName).isEqualTo(ConvertUtils.FAKE_PACKAGE_NAME);
}
@Test
@@ -387,8 +366,8 @@
when(mMockPackageManager.getPackageUidAsUser(any(), anyInt())).thenReturn(1001);
final long userId = 2;
- final AppUsageEvent appUsageEvent = ConvertUtils.convertToAppUsageEvent(
- mContext, mUsageStatsManager, event, userId);
+ final AppUsageEvent appUsageEvent =
+ ConvertUtils.convertToAppUsageEvent(mContext, mUsageStatsManager, event, userId);
assertThat(appUsageEvent.getTimestamp()).isEqualTo(101L);
assertThat(appUsageEvent.getType()).isEqualTo(AppUsageEventType.ACTIVITY_RESUMED);
assertThat(appUsageEvent.getPackageName()).isEqualTo("com.android.settings1");
@@ -426,14 +405,14 @@
final AppUsageEvent appUsageEvent =
ConvertUtils.convertToAppUsageEvent(
- mContext, mUsageStatsManager, event, /*userId=*/ 0);
+ mContext, mUsageStatsManager, event, /* userId= */ 0);
assertThat(appUsageEvent).isNull();
}
@Test
public void convertToAppUsageEvent_failToGetUid_returnsNull()
- throws PackageManager.NameNotFoundException {
+ throws PackageManager.NameNotFoundException {
final Event event = new Event();
event.mEventType = UsageEvents.Event.DEVICE_SHUTDOWN;
event.mPackage = "com.android.settings1";
@@ -449,24 +428,27 @@
@Test
public void convertToAppUsageEvent_returnExpectedResult() {
- final MatrixCursor cursor = new MatrixCursor(
- new String[]{
- AppUsageEventEntity.KEY_UID,
- AppUsageEventEntity.KEY_USER_ID,
- AppUsageEventEntity.KEY_PACKAGE_NAME,
- AppUsageEventEntity.KEY_TIMESTAMP,
- AppUsageEventEntity.KEY_APP_USAGE_EVENT_TYPE,
- AppUsageEventEntity.KEY_TASK_ROOT_PACKAGE_NAME,
- AppUsageEventEntity.KEY_INSTANCE_ID});
+ final MatrixCursor cursor =
+ new MatrixCursor(
+ new String[] {
+ AppUsageEventEntity.KEY_UID,
+ AppUsageEventEntity.KEY_USER_ID,
+ AppUsageEventEntity.KEY_PACKAGE_NAME,
+ AppUsageEventEntity.KEY_TIMESTAMP,
+ AppUsageEventEntity.KEY_APP_USAGE_EVENT_TYPE,
+ AppUsageEventEntity.KEY_TASK_ROOT_PACKAGE_NAME,
+ AppUsageEventEntity.KEY_INSTANCE_ID
+ });
cursor.addRow(
- new Object[]{
- 101L,
- 1001L,
- "com.android.settings1",
- 10001L,
- AppUsageEventType.DEVICE_SHUTDOWN.getNumber(),
- "com.android.settings2",
- 100001L});
+ new Object[] {
+ 101L,
+ 1001L,
+ "com.android.settings1",
+ 10001L,
+ AppUsageEventType.DEVICE_SHUTDOWN.getNumber(),
+ "com.android.settings2",
+ 100001L
+ });
cursor.moveToFirst();
final AppUsageEvent appUsageEvent = ConvertUtils.convertToAppUsageEvent(cursor);
@@ -482,20 +464,23 @@
@Test
public void convertToAppUsageEvent_emptyInstanceIdAndRootName_returnExpectedResult() {
- final MatrixCursor cursor = new MatrixCursor(
- new String[]{
- AppUsageEventEntity.KEY_UID,
- AppUsageEventEntity.KEY_USER_ID,
- AppUsageEventEntity.KEY_PACKAGE_NAME,
- AppUsageEventEntity.KEY_TIMESTAMP,
- AppUsageEventEntity.KEY_APP_USAGE_EVENT_TYPE});
+ final MatrixCursor cursor =
+ new MatrixCursor(
+ new String[] {
+ AppUsageEventEntity.KEY_UID,
+ AppUsageEventEntity.KEY_USER_ID,
+ AppUsageEventEntity.KEY_PACKAGE_NAME,
+ AppUsageEventEntity.KEY_TIMESTAMP,
+ AppUsageEventEntity.KEY_APP_USAGE_EVENT_TYPE
+ });
cursor.addRow(
- new Object[]{
- 101L,
- 1001L,
- "com.android.settings1",
- 10001L,
- AppUsageEventType.DEVICE_SHUTDOWN.getNumber()});
+ new Object[] {
+ 101L,
+ 1001L,
+ "com.android.settings1",
+ 10001L,
+ AppUsageEventType.DEVICE_SHUTDOWN.getNumber()
+ });
cursor.moveToFirst();
final AppUsageEvent appUsageEvent = ConvertUtils.convertToAppUsageEvent(cursor);
@@ -511,8 +496,8 @@
@Test
public void convertToBatteryEvent_normalCase_returnsExpectedResult() {
- final BatteryEvent batteryEvent = ConvertUtils.convertToBatteryEvent(
- 666L, BatteryEventType.POWER_DISCONNECTED, 88);
+ final BatteryEvent batteryEvent =
+ ConvertUtils.convertToBatteryEvent(666L, BatteryEventType.POWER_DISCONNECTED, 88);
assertThat(batteryEvent.getTimestamp()).isEqualTo(666L);
assertThat(batteryEvent.getType()).isEqualTo(BatteryEventType.POWER_DISCONNECTED);
assertThat(batteryEvent.getBatteryLevel()).isEqualTo(88);
@@ -520,8 +505,9 @@
@Test
public void convertToBatteryEventList_normalCase_returnsExpectedResult() {
- final BatteryLevelData batteryLevelData = new BatteryLevelData(Map.of(
- 1691589600000L, 98, 1691596800000L, 90, 1691596812345L, 80));
+ final BatteryLevelData batteryLevelData =
+ new BatteryLevelData(
+ Map.of(1691589600000L, 98, 1691596800000L, 90, 1691596812345L, 80));
final List<BatteryEvent> batteryEventList =
ConvertUtils.convertToBatteryEventList(batteryLevelData);
@@ -537,14 +523,20 @@
@Test
public void convertToBatteryUsageSlotList_normalCase_returnsExpectedResult() {
- BatteryDiffData batteryDiffData1 = new BatteryDiffData(
- mContext, 11L, 12L, 13, 14, 15, List.of(), List.of(), Set.of(), Set.of(), false);
- BatteryDiffData batteryDiffData2 = new BatteryDiffData(
- mContext, 21L, 22L, 23, 24, 25, List.of(), List.of(), Set.of(), Set.of(), false);
- BatteryDiffData batteryDiffData3 = new BatteryDiffData(
- mContext, 31L, 32L, 33, 34, 35, List.of(), List.of(), Set.of(), Set.of(), false);
- final Map<Long, BatteryDiffData> batteryDiffDataMap = Map.of(
- 11L, batteryDiffData1, 21L, batteryDiffData2, 31L, batteryDiffData3);
+ BatteryDiffData batteryDiffData1 =
+ new BatteryDiffData(
+ mContext, 11L, 12L, 13, 14, 15, List.of(), List.of(), Set.of(), Set.of(),
+ false);
+ BatteryDiffData batteryDiffData2 =
+ new BatteryDiffData(
+ mContext, 21L, 22L, 23, 24, 25, List.of(), List.of(), Set.of(), Set.of(),
+ false);
+ BatteryDiffData batteryDiffData3 =
+ new BatteryDiffData(
+ mContext, 31L, 32L, 33, 34, 35, List.of(), List.of(), Set.of(), Set.of(),
+ false);
+ final Map<Long, BatteryDiffData> batteryDiffDataMap =
+ Map.of(11L, batteryDiffData1, 21L, batteryDiffData2, 31L, batteryDiffData3);
final List<BatteryUsageSlot> batteryUsageSlotList =
ConvertUtils.convertToBatteryUsageSlotList(batteryDiffDataMap);
@@ -556,8 +548,7 @@
@Test
public void getLocale_nullContext_returnDefaultLocale() {
- assertThat(ConvertUtils.getLocale(/*context=*/ null))
- .isEqualTo(Locale.getDefault());
+ assertThat(ConvertUtils.getLocale(/* context= */ null)).isEqualTo(Locale.getDefault());
}
@Test
@@ -578,8 +569,9 @@
final String packageName = "com.android.settings1";
final String taskRootPackageName = "com.android.settings2";
- assertThat(ConvertUtils.getEffectivePackageName(
- mContext, mUsageStatsManager, packageName, taskRootPackageName))
+ assertThat(
+ ConvertUtils.getEffectivePackageName(
+ mContext, mUsageStatsManager, packageName, taskRootPackageName))
.isEqualTo(packageName);
}
@@ -588,8 +580,9 @@
final String packageName = "com.android.settings1";
final String taskRootPackageName = "com.android.settings2";
- assertThat(ConvertUtils.getEffectivePackageName(
- mContext, mUsageStatsManager, packageName, taskRootPackageName))
+ assertThat(
+ ConvertUtils.getEffectivePackageName(
+ mContext, mUsageStatsManager, packageName, taskRootPackageName))
.isEqualTo(packageName);
}
@@ -599,8 +592,9 @@
final String packageName = "com.android.settings1";
final String taskRootPackageName = "com.android.settings2";
- assertThat(ConvertUtils.getEffectivePackageName(
- mContext, mUsageStatsManager, packageName, taskRootPackageName))
+ assertThat(
+ ConvertUtils.getEffectivePackageName(
+ mContext, mUsageStatsManager, packageName, taskRootPackageName))
.isEqualTo(taskRootPackageName);
}
@@ -609,11 +603,19 @@
ConvertUtils.sUsageSource = USAGE_SOURCE_TASK_ROOT_ACTIVITY;
final String packageName = "com.android.settings1";
- assertThat(ConvertUtils.getEffectivePackageName(
- mContext, mUsageStatsManager, packageName, /*taskRootPackageName=*/ null))
+ assertThat(
+ ConvertUtils.getEffectivePackageName(
+ mContext,
+ mUsageStatsManager,
+ packageName,
+ /* taskRootPackageName= */ null))
.isEqualTo(packageName);
- assertThat(ConvertUtils.getEffectivePackageName(
- mContext, mUsageStatsManager, packageName, /*taskRootPackageName=*/ ""))
+ assertThat(
+ ConvertUtils.getEffectivePackageName(
+ mContext,
+ mUsageStatsManager,
+ packageName,
+ /* taskRootPackageName= */ ""))
.isEqualTo(packageName);
}
}
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/DataProcessManagerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/DataProcessManagerTest.java
index 601d3f3..6227790 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/DataProcessManagerTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/DataProcessManagerTest.java
@@ -70,18 +70,12 @@
private Context mContext;
private DataProcessManager mDataProcessManager;
- @Mock
- private IUsageStatsManager mUsageStatsManager;
- @Mock
- private UserManager mUserManager;
- @Mock
- private BatteryStatsManager mBatteryStatsManager;
- @Mock
- private BatteryUsageStats mBatteryUsageStats;
- @Mock
- private Intent mIntent;
- @Captor
- private ArgumentCaptor<BatteryUsageStatsQuery> mBatteryUsageStatsQueryCaptor;
+ @Mock private IUsageStatsManager mUsageStatsManager;
+ @Mock private UserManager mUserManager;
+ @Mock private BatteryStatsManager mBatteryStatsManager;
+ @Mock private BatteryUsageStats mBatteryUsageStats;
+ @Mock private Intent mIntent;
+ @Captor private ArgumentCaptor<BatteryUsageStatsQuery> mBatteryUsageStatsQueryCaptor;
@Before
public void setUp() {
@@ -91,22 +85,26 @@
DataProcessor.sTestSystemAppsPackageNames = Set.of();
DataProcessor.sUsageStatsManager = mUsageStatsManager;
doReturn(mContext).when(mContext).getApplicationContext();
- doReturn(mUserManager)
+ doReturn(mUserManager).when(mContext).getSystemService(UserManager.class);
+ doReturn(mBatteryStatsManager)
.when(mContext)
- .getSystemService(UserManager.class);
- doReturn(mBatteryStatsManager).when(mContext).getSystemService(
- Context.BATTERY_STATS_SERVICE);
- doReturn(mBatteryUsageStats).when(
- mBatteryStatsManager).getBatteryUsageStats(mBatteryUsageStatsQueryCaptor.capture());
+ .getSystemService(Context.BATTERY_STATS_SERVICE);
+ doReturn(mBatteryUsageStats)
+ .when(mBatteryStatsManager)
+ .getBatteryUsageStats(mBatteryUsageStatsQueryCaptor.capture());
doReturn(mIntent).when(mContext).registerReceiver(any(), any());
doReturn(100).when(mIntent).getIntExtra(eq(BatteryManager.EXTRA_SCALE), anyInt());
doReturn(66).when(mIntent).getIntExtra(eq(BatteryManager.EXTRA_LEVEL), anyInt());
- mDataProcessManager = new DataProcessManager(
- mContext, /*handler=*/ null, /*rawStartTimestamp=*/ 0L,
- /*lastFullChargeTimestamp=*/ 0L, /*callbackFunction=*/ null,
- /*hourlyBatteryLevelsPerDay=*/ new ArrayList<>(),
- /*batteryHistoryMap=*/ new HashMap<>());
+ mDataProcessManager =
+ new DataProcessManager(
+ mContext,
+ /* handler= */ null,
+ /* rawStartTimestamp= */ 0L,
+ /* lastFullChargeTimestamp= */ 0L,
+ /* callbackFunction= */ null,
+ /* hourlyBatteryLevelsPerDay= */ new ArrayList<>(),
+ /* batteryHistoryMap= */ new HashMap<>());
}
@After
@@ -119,18 +117,20 @@
@LooperMode(LooperMode.Mode.LEGACY)
public void constructor_noLevelData() {
final DataProcessManager dataProcessManager =
- new DataProcessManager(mContext, /*handler=*/ null, /*callbackFunction=*/ null);
+ new DataProcessManager(mContext, /* handler= */ null, /* callbackFunction= */ null);
assertThat(dataProcessManager.getShowScreenOnTime()).isFalse();
}
@Test
@LooperMode(LooperMode.Mode.LEGACY)
public void start_loadEmptyDatabaseAppUsageData() {
- final MatrixCursor cursor = new MatrixCursor(
- new String[]{
- AppUsageEventEntity.KEY_UID,
- AppUsageEventEntity.KEY_PACKAGE_NAME,
- AppUsageEventEntity.KEY_TIMESTAMP});
+ final MatrixCursor cursor =
+ new MatrixCursor(
+ new String[] {
+ AppUsageEventEntity.KEY_UID,
+ AppUsageEventEntity.KEY_PACKAGE_NAME,
+ AppUsageEventEntity.KEY_TIMESTAMP
+ });
DatabaseUtils.sFakeSupplier = () -> cursor;
doReturn(true).when(mUserManager).isUserUnlocked(anyInt());
@@ -166,9 +166,9 @@
new BatteryLevelData.PeriodBatteryLevelData(batteryLevelMap2, timestamps2));
// Fake current usage data.
final UsageEvents.Event event1 =
- getUsageEvent(UsageEvents.Event.ACTIVITY_RESUMED, /*timestamp=*/ 1, packageName);
+ getUsageEvent(UsageEvents.Event.ACTIVITY_RESUMED, /* timestamp= */ 1, packageName);
final UsageEvents.Event event2 =
- getUsageEvent(UsageEvents.Event.ACTIVITY_STOPPED, /*timestamp=*/ 2, packageName);
+ getUsageEvent(UsageEvents.Event.ACTIVITY_STOPPED, /* timestamp= */ 2, packageName);
final List<UsageEvents.Event> events = new ArrayList<>();
events.add(event1);
events.add(event2);
@@ -182,40 +182,68 @@
doReturn(new ArrayList<>()).when(mUserManager).getUserProfiles();
// Fake database usage data.
- final MatrixCursor cursor = new MatrixCursor(
- new String[]{
- AppUsageEventEntity.KEY_APP_USAGE_EVENT_TYPE,
- AppUsageEventEntity.KEY_TIMESTAMP,
- AppUsageEventEntity.KEY_USER_ID,
- AppUsageEventEntity.KEY_INSTANCE_ID,
- AppUsageEventEntity.KEY_PACKAGE_NAME
- });
+ final MatrixCursor cursor =
+ new MatrixCursor(
+ new String[] {
+ AppUsageEventEntity.KEY_APP_USAGE_EVENT_TYPE,
+ AppUsageEventEntity.KEY_TIMESTAMP,
+ AppUsageEventEntity.KEY_USER_ID,
+ AppUsageEventEntity.KEY_INSTANCE_ID,
+ AppUsageEventEntity.KEY_PACKAGE_NAME
+ });
// Adds fake data into the cursor.
- cursor.addRow(new Object[] {
- AppUsageEventType.ACTIVITY_RESUMED.getNumber(), /*timestamp=*/ 3, /*userId=*/ 1,
- /*instanceId=*/ 2, packageName});
- cursor.addRow(new Object[] {
- AppUsageEventType.ACTIVITY_STOPPED.getNumber(), /*timestamp=*/ 4, /*userId=*/ 1,
- /*instanceId=*/ 2, packageName});
- cursor.addRow(new Object[] {
- AppUsageEventType.ACTIVITY_RESUMED.getNumber(), /*timestamp=*/ 5, /*userId=*/ 1,
- /*instanceId=*/ 2, packageName});
- cursor.addRow(new Object[] {
- AppUsageEventType.ACTIVITY_STOPPED.getNumber(), /*timestamp=*/ 6, /*userId=*/ 1,
- /*instanceId=*/ 2, packageName});
- DatabaseUtils.sFakeSupplier = new Supplier<>() {
- private int mTimes = 0;
- @Override
- public Cursor get() {
- mTimes++;
- return mTimes <= 2 ? null : cursor;
- }
- };
+ cursor.addRow(
+ new Object[] {
+ AppUsageEventType.ACTIVITY_RESUMED.getNumber(),
+ /* timestamp= */ 3,
+ /* userId= */ 1,
+ /* instanceId= */ 2,
+ packageName
+ });
+ cursor.addRow(
+ new Object[] {
+ AppUsageEventType.ACTIVITY_STOPPED.getNumber(),
+ /* timestamp= */ 4,
+ /* userId= */ 1,
+ /* instanceId= */ 2,
+ packageName
+ });
+ cursor.addRow(
+ new Object[] {
+ AppUsageEventType.ACTIVITY_RESUMED.getNumber(),
+ /* timestamp= */ 5,
+ /* userId= */ 1,
+ /* instanceId= */ 2,
+ packageName
+ });
+ cursor.addRow(
+ new Object[] {
+ AppUsageEventType.ACTIVITY_STOPPED.getNumber(),
+ /* timestamp= */ 6,
+ /* userId= */ 1,
+ /* instanceId= */ 2,
+ packageName
+ });
+ DatabaseUtils.sFakeSupplier =
+ new Supplier<>() {
+ private int mTimes = 0;
- final DataProcessManager dataProcessManager = new DataProcessManager(
- mContext, /*handler=*/ null, /*rawStartTimestamp=*/ 2L,
- /*lastFullChargeTimestamp=*/ 1L, /*callbackFunction=*/ null,
- hourlyBatteryLevelsPerDay, /*batteryHistoryMap=*/ new HashMap<>());
+ @Override
+ public Cursor get() {
+ mTimes++;
+ return mTimes <= 2 ? null : cursor;
+ }
+ };
+
+ final DataProcessManager dataProcessManager =
+ new DataProcessManager(
+ mContext,
+ /* handler= */ null,
+ /* rawStartTimestamp= */ 2L,
+ /* lastFullChargeTimestamp= */ 1L,
+ /* callbackFunction= */ null,
+ hourlyBatteryLevelsPerDay,
+ /* batteryHistoryMap= */ new HashMap<>());
dataProcessManager.start();
assertThat(dataProcessManager.getIsCurrentAppUsageLoaded()).isTrue();
@@ -226,17 +254,17 @@
Collections.sort(appUsageEventList, DataProcessor.APP_USAGE_EVENT_TIMESTAMP_COMPARATOR);
assertThat(appUsageEventList.size()).isEqualTo(6);
assertAppUsageEvent(
- appUsageEventList.get(0), AppUsageEventType.ACTIVITY_RESUMED, /*timestamp=*/ 1);
+ appUsageEventList.get(0), AppUsageEventType.ACTIVITY_RESUMED, /* timestamp= */ 1);
assertAppUsageEvent(
- appUsageEventList.get(1), AppUsageEventType.ACTIVITY_STOPPED, /*timestamp=*/ 2);
+ appUsageEventList.get(1), AppUsageEventType.ACTIVITY_STOPPED, /* timestamp= */ 2);
assertAppUsageEvent(
- appUsageEventList.get(2), AppUsageEventType.ACTIVITY_RESUMED, /*timestamp=*/ 3);
+ appUsageEventList.get(2), AppUsageEventType.ACTIVITY_RESUMED, /* timestamp= */ 3);
assertAppUsageEvent(
- appUsageEventList.get(3), AppUsageEventType.ACTIVITY_STOPPED, /*timestamp=*/ 4);
+ appUsageEventList.get(3), AppUsageEventType.ACTIVITY_STOPPED, /* timestamp= */ 4);
assertAppUsageEvent(
- appUsageEventList.get(4), AppUsageEventType.ACTIVITY_RESUMED, /*timestamp=*/ 5);
+ appUsageEventList.get(4), AppUsageEventType.ACTIVITY_RESUMED, /* timestamp= */ 5);
assertAppUsageEvent(
- appUsageEventList.get(5), AppUsageEventType.ACTIVITY_STOPPED, /*timestamp=*/ 6);
+ appUsageEventList.get(5), AppUsageEventType.ACTIVITY_STOPPED, /* timestamp= */ 6);
final Map<Integer, Map<Integer, Map<Long, Map<String, List<AppUsagePeriod>>>>>
appUsagePeriodMap = dataProcessManager.getAppUsagePeriodMap();
@@ -267,18 +295,20 @@
@LooperMode(LooperMode.Mode.LEGACY)
public void start_currentUserLocked_emptyAppUsageList() throws RemoteException {
final UsageEvents.Event event =
- getUsageEvent(UsageEvents.Event.ACTIVITY_RESUMED, /*timestamp=*/ 1, "package");
+ getUsageEvent(UsageEvents.Event.ACTIVITY_RESUMED, /* timestamp= */ 1, "package");
final List<UsageEvents.Event> events = new ArrayList<>();
events.add(event);
doReturn(getUsageEvents(events))
.when(mUsageStatsManager)
.queryEventsForUser(anyLong(), anyLong(), anyInt(), any());
doReturn(false).when(mUserManager).isUserUnlocked(anyInt());
- final MatrixCursor cursor = new MatrixCursor(
- new String[]{
- AppUsageEventEntity.KEY_UID,
- AppUsageEventEntity.KEY_PACKAGE_NAME,
- AppUsageEventEntity.KEY_TIMESTAMP});
+ final MatrixCursor cursor =
+ new MatrixCursor(
+ new String[] {
+ AppUsageEventEntity.KEY_UID,
+ AppUsageEventEntity.KEY_PACKAGE_NAME,
+ AppUsageEventEntity.KEY_TIMESTAMP
+ });
// Adds fake data into the cursor.
cursor.addRow(new Object[] {101L, "app name1", 1001L});
DatabaseUtils.sFakeSupplier = () -> cursor;
@@ -293,25 +323,30 @@
@Test
@LooperMode(LooperMode.Mode.LEGACY)
public void getBatteryLevelData_emptyHistoryMap_returnNull() {
- assertThat(DataProcessManager.getBatteryLevelData(
- mContext,
- /*handler=*/ null,
- /*isFromPeriodJob=*/ false,
- /*asyncResponseDelegate=*/ null)).isNull();
- assertThat(DataProcessManager.getBatteryLevelData(
- mContext,
- /*handler=*/ null,
- /*isFromPeriodJob=*/ true,
- /*asyncResponseDelegate=*/ null)).isNull();
+ assertThat(
+ DataProcessManager.getBatteryLevelData(
+ mContext,
+ /* handler= */ null,
+ /* isFromPeriodJob= */ false,
+ /* asyncResponseDelegate= */ null))
+ .isNull();
+ assertThat(
+ DataProcessManager.getBatteryLevelData(
+ mContext,
+ /* handler= */ null,
+ /* isFromPeriodJob= */ true,
+ /* asyncResponseDelegate= */ null))
+ .isNull();
}
@Test
public void getBatteryLevelData_allDataInOneHour_returnExpectedResult() {
// The timestamps and the current time are within half hour before an even hour.
final long[] timestamps = {
- DateUtils.HOUR_IN_MILLIS * 2 - 300L,
- DateUtils.HOUR_IN_MILLIS * 2 - 200L,
- DateUtils.HOUR_IN_MILLIS * 2 - 100L};
+ DateUtils.HOUR_IN_MILLIS * 2 - 300L,
+ DateUtils.HOUR_IN_MILLIS * 2 - 200L,
+ DateUtils.HOUR_IN_MILLIS * 2 - 100L
+ };
final int[] levels = {100, 99, 98};
DataProcessManager.sFakeBatteryHistoryMap = createHistoryMap(timestamps, levels);
DataProcessor.sTestCurrentTimeMillis = timestamps[timestamps.length - 1];
@@ -319,13 +354,12 @@
final BatteryLevelData resultData =
DataProcessManager.getBatteryLevelData(
mContext,
- /*handler=*/ null,
- /*isFromPeriodJob=*/ false,
- /*asyncResponseDelegate=*/ null);
+ /* handler= */ null,
+ /* isFromPeriodJob= */ false,
+ /* asyncResponseDelegate= */ null);
- final List<Long> expectedDailyTimestamps = List.of(
- DateUtils.HOUR_IN_MILLIS * 2 - 300L,
- DateUtils.HOUR_IN_MILLIS * 2 - 100L);
+ final List<Long> expectedDailyTimestamps =
+ List.of(DateUtils.HOUR_IN_MILLIS * 2 - 300L, DateUtils.HOUR_IN_MILLIS * 2 - 100L);
final List<Integer> expectedDailyLevels = List.of(100, 66);
final List<List<Long>> expectedHourlyTimestamps = List.of(expectedDailyTimestamps);
final List<List<Integer>> expectedHourlyLevels = List.of(expectedDailyLevels);
@@ -348,13 +382,14 @@
final BatteryLevelData resultData =
DataProcessManager.getBatteryLevelData(
mContext,
- /*handler=*/ null,
- /*isFromPeriodJob=*/ false,
- /*asyncResponseDelegate=*/ null);
+ /* handler= */ null,
+ /* isFromPeriodJob= */ false,
+ /* asyncResponseDelegate= */ null);
- final List<Long> expectedDailyTimestamps = List.of(
- 1640966400000L, // 2022-01-01 00:00:00
- 1640970000000L); // 2022-01-01 01:00:00
+ final List<Long> expectedDailyTimestamps =
+ List.of(
+ 1640966400000L, // 2022-01-01 00:00:00
+ 1640970000000L); // 2022-01-01 01:00:00
final List<Integer> expectedDailyLevels = List.of(100, 66);
final List<List<Long>> expectedHourlyTimestamps = List.of(expectedDailyTimestamps);
final List<List<Integer>> expectedHourlyLevels = List.of(expectedDailyLevels);
@@ -400,16 +435,11 @@
private static ContentValues getContentValuesWithBatteryLevel(final int level) {
final ContentValues values = new ContentValues();
final DeviceBatteryState deviceBatteryState =
- DeviceBatteryState
- .newBuilder()
- .setBatteryLevel(level)
- .build();
+ DeviceBatteryState.newBuilder().setBatteryLevel(level).build();
final BatteryInformation batteryInformation =
- BatteryInformation
- .newBuilder()
- .setDeviceBatteryState(deviceBatteryState)
- .build();
- values.put(BatteryHistEntry.KEY_BATTERY_INFORMATION,
+ BatteryInformation.newBuilder().setDeviceBatteryState(deviceBatteryState).build();
+ values.put(
+ BatteryHistEntry.KEY_BATTERY_INFORMATION,
ConvertUtils.convertBatteryInformationToString(batteryInformation));
return values;
}
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/DataProcessorTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/DataProcessorTest.java
index 636a7a3..7a67240 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/DataProcessorTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/DataProcessorTest.java
@@ -98,18 +98,19 @@
DataProcessor.sTestSystemAppsPackageNames = Set.of();
DataProcessor.sUsageStatsManager = mUsageStatsManager;
- doReturn(mIntent).when(mContext).registerReceiver(
- isA(BroadcastReceiver.class), isA(IntentFilter.class));
+ doReturn(mIntent)
+ .when(mContext)
+ .registerReceiver(isA(BroadcastReceiver.class), isA(IntentFilter.class));
doReturn(100).when(mIntent).getIntExtra(eq(BatteryManager.EXTRA_SCALE), anyInt());
doReturn(66).when(mIntent).getIntExtra(eq(BatteryManager.EXTRA_LEVEL), anyInt());
doReturn(mContext).when(mContext).getApplicationContext();
doReturn(mUserManager).when(mContext).getSystemService(UserManager.class);
- doReturn(new int[]{0}).when(mUserManager).getProfileIdsWithDisabled(anyInt());
+ doReturn(new int[] {0}).when(mUserManager).getProfileIdsWithDisabled(anyInt());
}
@Test
public void getAppUsageEvents_returnExpectedResult() throws RemoteException {
- UserInfo userInfo = new UserInfo(/*id=*/ 0, "user_0", /*flags=*/ 0);
+ UserInfo userInfo = new UserInfo(/* id= */ 0, "user_0", /* flags= */ 0);
final List<UserInfo> userInfoList = new ArrayList<>();
userInfoList.add(userInfo);
doReturn(userInfoList).when(mUserManager).getAliveUsers();
@@ -126,7 +127,7 @@
@Test
public void getAppUsageEvents_lockedUser_returnNull() {
- UserInfo userInfo = new UserInfo(/*id=*/ 0, "user_0", /*flags=*/ 0);
+ UserInfo userInfo = new UserInfo(/* id= */ 0, "user_0", /* flags= */ 0);
final List<UserInfo> userInfoList = new ArrayList<>();
userInfoList.add(userInfo);
doReturn(userInfoList).when(mUserManager).getAliveUsers();
@@ -140,12 +141,13 @@
@Test
public void getAppUsageEvents_nullUsageEvents_returnNull() throws RemoteException {
- UserInfo userInfo = new UserInfo(/*id=*/ 0, "user_0", /*flags=*/ 0);
+ UserInfo userInfo = new UserInfo(/* id= */ 0, "user_0", /* flags= */ 0);
final List<UserInfo> userInfoList = new ArrayList<>();
userInfoList.add(userInfo);
doReturn(userInfoList).when(mUserManager).getAliveUsers();
doReturn(true).when(mUserManager).isUserUnlocked(userInfo.id);
- doReturn(null).when(mUsageStatsManager)
+ doReturn(null)
+ .when(mUsageStatsManager)
.queryEventsForUser(anyLong(), anyLong(), anyInt(), anyString());
final Map<Long, UsageEvents> resultMap = DataProcessor.getAppUsageEvents(mContext);
@@ -178,7 +180,8 @@
public void getAppUsageEventsForUser_nullUsageEvents_returnNull() throws RemoteException {
final int userId = 1;
doReturn(true).when(mUserManager).isUserUnlocked(userId);
- doReturn(null).when(mUsageStatsManager)
+ doReturn(null)
+ .when(mUsageStatsManager)
.queryEventsForUser(anyLong(), anyLong(), anyInt(), anyString());
assertThat(DataProcessor.getAppUsageEventsForUser(mContext, userId, 0)).isNull();
@@ -206,52 +209,112 @@
new BatteryLevelData.PeriodBatteryLevelData(batteryLevelMap2, timestamps2));
final List<AppUsageEvent> appUsageEventList = new ArrayList<>();
// Adds some events before the start timestamp.
- appUsageEventList.add(buildAppUsageEvent(
- AppUsageEventType.ACTIVITY_RESUMED, /*timestamp=*/ 1, /*userId=*/ 1,
- /*instanceId=*/ 2, packageName));
- appUsageEventList.add(buildAppUsageEvent(
- AppUsageEventType.ACTIVITY_STOPPED, /*timestamp=*/ 2, /*userId=*/ 1,
- /*instanceId=*/ 2, packageName));
+ appUsageEventList.add(
+ buildAppUsageEvent(
+ AppUsageEventType.ACTIVITY_RESUMED,
+ /* timestamp= */ 1,
+ /* userId= */ 1,
+ /* instanceId= */ 2,
+ packageName));
+ appUsageEventList.add(
+ buildAppUsageEvent(
+ AppUsageEventType.ACTIVITY_STOPPED,
+ /* timestamp= */ 2,
+ /* userId= */ 1,
+ /* instanceId= */ 2,
+ packageName));
// Adds the valid app usage events.
- appUsageEventList.add(buildAppUsageEvent(
- AppUsageEventType.ACTIVITY_RESUMED, /*timestamp=*/ 4200000L, /*userId=*/ 1,
- /*instanceId=*/ 2, packageName));
- appUsageEventList.add(buildAppUsageEvent(
- AppUsageEventType.ACTIVITY_STOPPED, /*timestamp=*/ 4500000L, /*userId=*/ 1,
- /*instanceId=*/ 2, packageName));
- appUsageEventList.add(buildAppUsageEvent(
- AppUsageEventType.ACTIVITY_RESUMED, /*timestamp=*/ 12600000L, /*userId=*/ 2,
- /*instanceId=*/ 3, packageName));
- appUsageEventList.add(buildAppUsageEvent(
- AppUsageEventType.ACTIVITY_STOPPED, /*timestamp=*/ 15600000L, /*userId=*/ 2,
- /*instanceId=*/ 3, packageName));
- appUsageEventList.add(buildAppUsageEvent(
- AppUsageEventType.ACTIVITY_RESUMED, /*timestamp=*/ 16200000L, /*userId=*/ 2,
- /*instanceId=*/ 3, packageName));
- appUsageEventList.add(buildAppUsageEvent(
- AppUsageEventType.ACTIVITY_STOPPED, /*timestamp=*/ 18000000L, /*userId=*/ 2,
- /*instanceId=*/ 3, packageName));
- appUsageEventList.add(buildAppUsageEvent(
- AppUsageEventType.ACTIVITY_RESUMED, /*timestamp=*/ 17200000L, /*userId=*/ 1,
- /*instanceId=*/ 2, packageName));
- appUsageEventList.add(buildAppUsageEvent(
- AppUsageEventType.ACTIVITY_STOPPED, /*timestamp=*/ 17800000L, /*userId=*/ 1,
- /*instanceId=*/ 2, packageName));
- appUsageEventList.add(buildAppUsageEvent(
- AppUsageEventType.ACTIVITY_STOPPED, /*timestamp=*/ 46000000L, /*userId=*/ 1,
- /*instanceId=*/ 2, packageName));
- appUsageEventList.add(buildAppUsageEvent(
- AppUsageEventType.ACTIVITY_RESUMED, /*timestamp=*/ 47800000L, /*userId=*/ 1,
- /*instanceId=*/ 2, packageName));
- appUsageEventList.add(buildAppUsageEvent(
- AppUsageEventType.ACTIVITY_STOPPED, /*timestamp=*/ 49000000L, /*userId=*/ 1,
- /*instanceId=*/ 2, packageName));
- appUsageEventList.add(buildAppUsageEvent(
- AppUsageEventType.ACTIVITY_RESUMED, /*timestamp=*/ 59600000L, /*userId=*/ 1,
- /*instanceId=*/ 4, packageName));
- appUsageEventList.add(buildAppUsageEvent(
- AppUsageEventType.ACTIVITY_STOPPED, /*timestamp=*/ 61200000L, /*userId=*/ 1,
- /*instanceId=*/ 4, packageName));
+ appUsageEventList.add(
+ buildAppUsageEvent(
+ AppUsageEventType.ACTIVITY_RESUMED,
+ /* timestamp= */ 4200000L,
+ /* userId= */ 1,
+ /* instanceId= */ 2,
+ packageName));
+ appUsageEventList.add(
+ buildAppUsageEvent(
+ AppUsageEventType.ACTIVITY_STOPPED,
+ /* timestamp= */ 4500000L,
+ /* userId= */ 1,
+ /* instanceId= */ 2,
+ packageName));
+ appUsageEventList.add(
+ buildAppUsageEvent(
+ AppUsageEventType.ACTIVITY_RESUMED,
+ /* timestamp= */ 12600000L,
+ /* userId= */ 2,
+ /* instanceId= */ 3,
+ packageName));
+ appUsageEventList.add(
+ buildAppUsageEvent(
+ AppUsageEventType.ACTIVITY_STOPPED,
+ /* timestamp= */ 15600000L,
+ /* userId= */ 2,
+ /* instanceId= */ 3,
+ packageName));
+ appUsageEventList.add(
+ buildAppUsageEvent(
+ AppUsageEventType.ACTIVITY_RESUMED,
+ /* timestamp= */ 16200000L,
+ /* userId= */ 2,
+ /* instanceId= */ 3,
+ packageName));
+ appUsageEventList.add(
+ buildAppUsageEvent(
+ AppUsageEventType.ACTIVITY_STOPPED,
+ /* timestamp= */ 18000000L,
+ /* userId= */ 2,
+ /* instanceId= */ 3,
+ packageName));
+ appUsageEventList.add(
+ buildAppUsageEvent(
+ AppUsageEventType.ACTIVITY_RESUMED,
+ /* timestamp= */ 17200000L,
+ /* userId= */ 1,
+ /* instanceId= */ 2,
+ packageName));
+ appUsageEventList.add(
+ buildAppUsageEvent(
+ AppUsageEventType.ACTIVITY_STOPPED,
+ /* timestamp= */ 17800000L,
+ /* userId= */ 1,
+ /* instanceId= */ 2,
+ packageName));
+ appUsageEventList.add(
+ buildAppUsageEvent(
+ AppUsageEventType.ACTIVITY_STOPPED,
+ /* timestamp= */ 46000000L,
+ /* userId= */ 1,
+ /* instanceId= */ 2,
+ packageName));
+ appUsageEventList.add(
+ buildAppUsageEvent(
+ AppUsageEventType.ACTIVITY_RESUMED,
+ /* timestamp= */ 47800000L,
+ /* userId= */ 1,
+ /* instanceId= */ 2,
+ packageName));
+ appUsageEventList.add(
+ buildAppUsageEvent(
+ AppUsageEventType.ACTIVITY_STOPPED,
+ /* timestamp= */ 49000000L,
+ /* userId= */ 1,
+ /* instanceId= */ 2,
+ packageName));
+ appUsageEventList.add(
+ buildAppUsageEvent(
+ AppUsageEventType.ACTIVITY_RESUMED,
+ /* timestamp= */ 59600000L,
+ /* userId= */ 1,
+ /* instanceId= */ 4,
+ packageName));
+ appUsageEventList.add(
+ buildAppUsageEvent(
+ AppUsageEventType.ACTIVITY_STOPPED,
+ /* timestamp= */ 61200000L,
+ /* userId= */ 1,
+ /* instanceId= */ 4,
+ packageName));
final Map<Integer, Map<Integer, Map<Long, Map<String, List<AppUsagePeriod>>>>> periodMap =
DataProcessor.generateAppUsagePeriodMap(
@@ -292,18 +355,22 @@
new ArrayList<>();
hourlyBatteryLevelsPerDay.add(
new BatteryLevelData.PeriodBatteryLevelData(new ArrayMap<>(), new ArrayList<>()));
- assertThat(DataProcessor.generateAppUsagePeriodMap(
- mContext, hourlyBatteryLevelsPerDay, new ArrayList<>(), new ArrayList<>()))
+ assertThat(
+ DataProcessor.generateAppUsagePeriodMap(
+ mContext,
+ hourlyBatteryLevelsPerDay,
+ new ArrayList<>(),
+ new ArrayList<>()))
.isNull();
}
@Test
public void generateAppUsageEventListFromUsageEvents_returnExpectedResult() {
- Event event1 = getUsageEvent(Event.NOTIFICATION_INTERRUPTION, /*timestamp=*/ 1);
- Event event2 = getUsageEvent(Event.ACTIVITY_RESUMED, /*timestamp=*/ 2);
- Event event3 = getUsageEvent(Event.ACTIVITY_STOPPED, /*timestamp=*/ 3);
- Event event4 = getUsageEvent(Event.DEVICE_SHUTDOWN, /*timestamp=*/ 4);
- Event event5 = getUsageEvent(Event.ACTIVITY_RESUMED, /*timestamp=*/ 5);
+ Event event1 = getUsageEvent(Event.NOTIFICATION_INTERRUPTION, /* timestamp= */ 1);
+ Event event2 = getUsageEvent(Event.ACTIVITY_RESUMED, /* timestamp= */ 2);
+ Event event3 = getUsageEvent(Event.ACTIVITY_STOPPED, /* timestamp= */ 3);
+ Event event4 = getUsageEvent(Event.DEVICE_SHUTDOWN, /* timestamp= */ 4);
+ Event event5 = getUsageEvent(Event.ACTIVITY_RESUMED, /* timestamp= */ 5);
event5.mPackage = null;
List<Event> events1 = new ArrayList<>();
events1.add(event1);
@@ -325,17 +392,16 @@
assertThat(appUsageEventList).hasSize(3);
assertAppUsageEvent(
- appUsageEventList.get(0), AppUsageEventType.ACTIVITY_RESUMED, /*timestamp=*/ 2);
+ appUsageEventList.get(0), AppUsageEventType.ACTIVITY_RESUMED, /* timestamp= */ 2);
assertAppUsageEvent(
- appUsageEventList.get(1), AppUsageEventType.ACTIVITY_STOPPED, /*timestamp=*/ 3);
+ appUsageEventList.get(1), AppUsageEventType.ACTIVITY_STOPPED, /* timestamp= */ 3);
assertAppUsageEvent(
- appUsageEventList.get(2), AppUsageEventType.DEVICE_SHUTDOWN, /*timestamp=*/ 4);
+ appUsageEventList.get(2), AppUsageEventType.DEVICE_SHUTDOWN, /* timestamp= */ 4);
}
@Test
public void getHistoryMapWithExpectedTimestamps_emptyHistoryMap_returnEmptyMap() {
- assertThat(DataProcessor
- .getHistoryMapWithExpectedTimestamps(mContext, new HashMap<>()))
+ assertThat(DataProcessor.getHistoryMapWithExpectedTimestamps(mContext, new HashMap<>()))
.isEmpty();
}
@@ -343,11 +409,11 @@
public void getHistoryMapWithExpectedTimestamps_returnExpectedMap() {
// Timezone GMT+8
final long[] timestamps = {
- 1640966700000L, // 2022-01-01 00:05:00
- 1640970180000L, // 2022-01-01 01:03:00
- 1640973840000L, // 2022-01-01 02:04:00
- 1640978100000L, // 2022-01-01 03:15:00
- 1640981400000L // 2022-01-01 04:10:00
+ 1640966700000L, // 2022-01-01 00:05:00
+ 1640970180000L, // 2022-01-01 01:03:00
+ 1640973840000L, // 2022-01-01 02:04:00
+ 1640978100000L, // 2022-01-01 03:15:00
+ 1640981400000L // 2022-01-01 04:10:00
};
final int[] levels = {100, 94, 90, 82, 50};
final Map<Long, Map<String, BatteryHistEntry>> batteryHistoryMap =
@@ -359,12 +425,12 @@
// Timezone GMT+8
final long[] expectedTimestamps = {
- 1640966700000L, // 2022-01-01 00:05:00
- 1640970000000L, // 2022-01-01 01:00:00
- 1640973600000L, // 2022-01-01 02:00:00
- 1640977200000L, // 2022-01-01 03:00:00
- 1640980800000L, // 2022-01-01 04:00:00
- 1640981400000L // 2022-01-01 04:10:00
+ 1640966700000L, // 2022-01-01 00:05:00
+ 1640970000000L, // 2022-01-01 01:00:00
+ 1640973600000L, // 2022-01-01 02:00:00
+ 1640977200000L, // 2022-01-01 03:00:00
+ 1640980800000L, // 2022-01-01 04:00:00
+ 1640981400000L // 2022-01-01 04:10:00
};
final int[] expectedLevels = {100, 94, 90, 84, 56, 98};
assertThat(resultMap).hasSize(expectedLevels.length);
@@ -372,19 +438,23 @@
assertThat(resultMap.get(expectedTimestamps[index]).get(FAKE_ENTRY_KEY).mBatteryLevel)
.isEqualTo(expectedLevels[index]);
}
- assertThat(resultMap.get(expectedTimestamps[expectedLevels.length - 1]).containsKey(
- DataProcessor.CURRENT_TIME_BATTERY_HISTORY_PLACEHOLDER)).isTrue();
+ assertThat(
+ resultMap
+ .get(expectedTimestamps[expectedLevels.length - 1])
+ .containsKey(
+ DataProcessor.CURRENT_TIME_BATTERY_HISTORY_PLACEHOLDER))
+ .isTrue();
}
@Test
public void getLevelDataThroughProcessedHistoryMap_OneDayData_returnExpectedResult() {
// Timezone GMT+8
final long[] timestamps = {
- 1640966400000L, // 2022-01-01 00:00:00
- 1640970000000L, // 2022-01-01 01:00:00
- 1640973600000L, // 2022-01-01 02:00:00
- 1640977200000L, // 2022-01-01 03:00:00
- 1640980800000L // 2022-01-01 04:00:00
+ 1640966400000L, // 2022-01-01 00:00:00
+ 1640970000000L, // 2022-01-01 01:00:00
+ 1640973600000L, // 2022-01-01 02:00:00
+ 1640977200000L, // 2022-01-01 03:00:00
+ 1640980800000L // 2022-01-01 04:00:00
};
final int[] levels = {100, 94, 90, 82, 50};
final Map<Long, Map<String, BatteryHistEntry>> batteryHistoryMap =
@@ -396,12 +466,10 @@
final List<Long> expectedDailyTimestamps = List.of(timestamps[0], timestamps[4]);
final List<Integer> expectedDailyLevels = List.of(levels[0], levels[4]);
- final List<List<Long>> expectedHourlyTimestamps = List.of(
- List.of(timestamps[0], timestamps[2], timestamps[4])
- );
- final List<List<Integer>> expectedHourlyLevels = List.of(
- List.of(levels[0], levels[2], levels[4])
- );
+ final List<List<Long>> expectedHourlyTimestamps =
+ List.of(List.of(timestamps[0], timestamps[2], timestamps[4]));
+ final List<List<Integer>> expectedHourlyLevels =
+ List.of(List.of(levels[0], levels[2], levels[4]));
verifyExpectedBatteryLevelData(
resultData,
expectedDailyTimestamps,
@@ -414,10 +482,10 @@
public void getLevelDataThroughProcessedHistoryMap_MultipleDaysData_returnExpectedResult() {
// Timezone GMT+8
final long[] timestamps = {
- 1641038400000L, // 2022-01-01 20:00:00
- 1641060000000L, // 2022-01-02 02:00:00
- 1641067200000L, // 2022-01-02 04:00:00
- 1641081600000L, // 2022-01-02 08:00:00
+ 1641038400000L, // 2022-01-01 20:00:00
+ 1641060000000L, // 2022-01-02 02:00:00
+ 1641067200000L, // 2022-01-02 04:00:00
+ 1641081600000L, // 2022-01-02 08:00:00
};
final int[] levels = {100, 94, 90, 82};
final Map<Long, Map<String, BatteryHistEntry>> batteryHistoryMap =
@@ -427,29 +495,30 @@
final BatteryLevelData resultData =
DataProcessor.getLevelDataThroughProcessedHistoryMap(mContext, batteryHistoryMap);
- final List<Long> expectedDailyTimestamps = List.of(
- 1641038400000L, // 2022-01-01 20:00:00
- 1641052800000L, // 2022-01-02 00:00:00
- 1641081600000L // 2022-01-02 08:00:00
- );
+ final List<Long> expectedDailyTimestamps =
+ List.of(
+ 1641038400000L, // 2022-01-01 20:00:00
+ 1641052800000L, // 2022-01-02 00:00:00
+ 1641081600000L // 2022-01-02 08:00:00
+ );
final List<Integer> expectedDailyLevels = new ArrayList<>();
expectedDailyLevels.add(100);
expectedDailyLevels.add(BATTERY_LEVEL_UNKNOWN);
expectedDailyLevels.add(82);
- final List<List<Long>> expectedHourlyTimestamps = List.of(
+ final List<List<Long>> expectedHourlyTimestamps =
List.of(
- 1641038400000L, // 2022-01-01 20:00:00
- 1641045600000L, // 2022-01-01 22:00:00
- 1641052800000L // 2022-01-02 00:00:00
- ),
- List.of(
- 1641052800000L, // 2022-01-02 00:00:00
- 1641060000000L, // 2022-01-02 02:00:00
- 1641067200000L, // 2022-01-02 04:00:00
- 1641074400000L, // 2022-01-02 06:00:00
- 1641081600000L // 2022-01-02 08:00:00
- )
- );
+ List.of(
+ 1641038400000L, // 2022-01-01 20:00:00
+ 1641045600000L, // 2022-01-01 22:00:00
+ 1641052800000L // 2022-01-02 00:00:00
+ ),
+ List.of(
+ 1641052800000L, // 2022-01-02 00:00:00
+ 1641060000000L, // 2022-01-02 02:00:00
+ 1641067200000L, // 2022-01-02 04:00:00
+ 1641074400000L, // 2022-01-02 06:00:00
+ 1641081600000L // 2022-01-02 08:00:00
+ ));
final List<Integer> expectedHourlyLevels1 = new ArrayList<>();
expectedHourlyLevels1.add(100);
expectedHourlyLevels1.add(BATTERY_LEVEL_UNKNOWN);
@@ -460,10 +529,8 @@
expectedHourlyLevels2.add(90);
expectedHourlyLevels2.add(BATTERY_LEVEL_UNKNOWN);
expectedHourlyLevels2.add(82);
- final List<List<Integer>> expectedHourlyLevels = List.of(
- expectedHourlyLevels1,
- expectedHourlyLevels2
- );
+ final List<List<Integer>> expectedHourlyLevels =
+ List.of(expectedHourlyLevels1, expectedHourlyLevels2);
verifyExpectedBatteryLevelData(
resultData,
expectedDailyTimestamps,
@@ -477,8 +544,8 @@
// Timezone PST 2022-11-06 has an extra 01:00:00 - 01:59:59 for daylight saving.
TimeZone.setDefault(TimeZone.getTimeZone("America/Los_Angeles"));
final long[] timestamps = {
- 1667667600000L, // 2022-11-05 10:00:00
- 1667829600000L // 2022-11-07 06:00:00
+ 1667667600000L, // 2022-11-05 10:00:00
+ 1667829600000L // 2022-11-07 06:00:00
};
final int[] levels = {100, 88};
final Map<Long, Map<String, BatteryHistEntry>> batteryHistoryMap =
@@ -488,51 +555,52 @@
final BatteryLevelData resultData =
DataProcessor.getLevelDataThroughProcessedHistoryMap(mContext, batteryHistoryMap);
- final List<Long> expectedDailyTimestamps = List.of(
- 1667667600000L, // 2022-11-05 10:00:00
- 1667718000000L, // 2022-11-06 00:00:00
- 1667808000000L, // 2022-11-07 00:00:00
- 1667829600000L // 2022-11-07 06:00:00
- );
+ final List<Long> expectedDailyTimestamps =
+ List.of(
+ 1667667600000L, // 2022-11-05 10:00:00
+ 1667718000000L, // 2022-11-06 00:00:00
+ 1667808000000L, // 2022-11-07 00:00:00
+ 1667829600000L // 2022-11-07 06:00:00
+ );
final List<Integer> expectedDailyLevels = new ArrayList<>();
expectedDailyLevels.add(100);
expectedDailyLevels.add(BATTERY_LEVEL_UNKNOWN);
expectedDailyLevels.add(BATTERY_LEVEL_UNKNOWN);
expectedDailyLevels.add(88);
- final List<List<Long>> expectedHourlyTimestamps = List.of(
+ final List<List<Long>> expectedHourlyTimestamps =
List.of(
- 1667667600000L, // 2022-11-05 10:00:00
- 1667674800000L, // 2022-11-05 12:00:00
- 1667682000000L, // 2022-11-05 14:00:00
- 1667689200000L, // 2022-11-05 16:00:00
- 1667696400000L, // 2022-11-05 18:00:00
- 1667703600000L, // 2022-11-05 20:00:00
- 1667710800000L, // 2022-11-05 22:00:00
- 1667718000000L // 2022-11-06 00:00:00
- ),
- List.of(
- 1667718000000L, // 2022-11-06 00:00:00
- 1667725200000L, // 2022-11-06 01:00:00 after daylight saving change
- 1667732400000L, // 2022-11-06 03:00:00
- 1667739600000L, // 2022-11-06 05:00:00
- 1667746800000L, // 2022-11-06 07:00:00
- 1667754000000L, // 2022-11-06 09:00:00
- 1667761200000L, // 2022-11-06 11:00:00
- 1667768400000L, // 2022-11-06 13:00:00
- 1667775600000L, // 2022-11-06 15:00:00
- 1667782800000L, // 2022-11-06 17:00:00
- 1667790000000L, // 2022-11-06 19:00:00
- 1667797200000L, // 2022-11-06 21:00:00
- 1667804400000L, // 2022-11-06 23:00:00
- 1667808000000L // 2022-11-07 00:00:00
- ),
- List.of(
- 1667808000000L, // 2022-11-07 00:00:00
- 1667815200000L, // 2022-11-07 02:00:00
- 1667822400000L, // 2022-11-07 04:00:00
- 1667829600000L // 2022-11-07 06:00:00
- )
- );
+ List.of(
+ 1667667600000L, // 2022-11-05 10:00:00
+ 1667674800000L, // 2022-11-05 12:00:00
+ 1667682000000L, // 2022-11-05 14:00:00
+ 1667689200000L, // 2022-11-05 16:00:00
+ 1667696400000L, // 2022-11-05 18:00:00
+ 1667703600000L, // 2022-11-05 20:00:00
+ 1667710800000L, // 2022-11-05 22:00:00
+ 1667718000000L // 2022-11-06 00:00:00
+ ),
+ List.of(
+ 1667718000000L, // 2022-11-06 00:00:00
+ 1667725200000L, // 2022-11-06 01:00:00 after daylight saving change
+ 1667732400000L, // 2022-11-06 03:00:00
+ 1667739600000L, // 2022-11-06 05:00:00
+ 1667746800000L, // 2022-11-06 07:00:00
+ 1667754000000L, // 2022-11-06 09:00:00
+ 1667761200000L, // 2022-11-06 11:00:00
+ 1667768400000L, // 2022-11-06 13:00:00
+ 1667775600000L, // 2022-11-06 15:00:00
+ 1667782800000L, // 2022-11-06 17:00:00
+ 1667790000000L, // 2022-11-06 19:00:00
+ 1667797200000L, // 2022-11-06 21:00:00
+ 1667804400000L, // 2022-11-06 23:00:00
+ 1667808000000L // 2022-11-07 00:00:00
+ ),
+ List.of(
+ 1667808000000L, // 2022-11-07 00:00:00
+ 1667815200000L, // 2022-11-07 02:00:00
+ 1667822400000L, // 2022-11-07 04:00:00
+ 1667829600000L // 2022-11-07 06:00:00
+ ));
final List<Integer> expectedHourlyLevels1 = new ArrayList<>();
expectedHourlyLevels1.add(100);
expectedHourlyLevels1.add(BATTERY_LEVEL_UNKNOWN);
@@ -562,11 +630,8 @@
expectedHourlyLevels3.add(BATTERY_LEVEL_UNKNOWN);
expectedHourlyLevels3.add(BATTERY_LEVEL_UNKNOWN);
expectedHourlyLevels3.add(88);
- final List<List<Integer>> expectedHourlyLevels = List.of(
- expectedHourlyLevels1,
- expectedHourlyLevels2,
- expectedHourlyLevels3
- );
+ final List<List<Integer>> expectedHourlyLevels =
+ List.of(expectedHourlyLevels1, expectedHourlyLevels2, expectedHourlyLevels3);
verifyExpectedBatteryLevelData(
resultData,
expectedDailyTimestamps,
@@ -580,8 +645,8 @@
// Timezone PST 2022-03-13 has no 02:00:00 - 02:59:59 for daylight saving.
TimeZone.setDefault(TimeZone.getTimeZone("America/Los_Angeles"));
final long[] timestamps = {
- 1647151200000L, // 2022-03-12 22:00:00
- 1647262800000L // 2022-03-14 06:00:00
+ 1647151200000L, // 2022-03-12 22:00:00
+ 1647262800000L // 2022-03-14 06:00:00
};
final int[] levels = {100, 88};
final Map<Long, Map<String, BatteryHistEntry>> batteryHistoryMap =
@@ -591,44 +656,45 @@
final BatteryLevelData resultData =
DataProcessor.getLevelDataThroughProcessedHistoryMap(mContext, batteryHistoryMap);
- final List<Long> expectedDailyTimestamps = List.of(
- 1647151200000L, // 2022-03-12 22:00:00
- 1647158400000L, // 2022-03-13 00:00:00
- 1647241200000L, // 2022-03-14 00:00:00
- 1647262800000L // 2022-03-14 06:00:00
- );
+ final List<Long> expectedDailyTimestamps =
+ List.of(
+ 1647151200000L, // 2022-03-12 22:00:00
+ 1647158400000L, // 2022-03-13 00:00:00
+ 1647241200000L, // 2022-03-14 00:00:00
+ 1647262800000L // 2022-03-14 06:00:00
+ );
final List<Integer> expectedDailyLevels = new ArrayList<>();
expectedDailyLevels.add(100);
expectedDailyLevels.add(BATTERY_LEVEL_UNKNOWN);
expectedDailyLevels.add(BATTERY_LEVEL_UNKNOWN);
expectedDailyLevels.add(88);
- final List<List<Long>> expectedHourlyTimestamps = List.of(
+ final List<List<Long>> expectedHourlyTimestamps =
List.of(
- 1647151200000L, // 2022-03-12 22:00:00
- 1647158400000L // 2022-03-13 00:00:00
- ),
- List.of(
- 1647158400000L, // 2022-03-13 00:00:00
- 1647165600000L, // 2022-03-13 03:00:00 after daylight saving change
- 1647172800000L, // 2022-03-13 05:00:00
- 1647180000000L, // 2022-03-13 07:00:00
- 1647187200000L, // 2022-03-13 09:00:00
- 1647194400000L, // 2022-03-13 11:00:00
- 1647201600000L, // 2022-03-13 13:00:00
- 1647208800000L, // 2022-03-13 15:00:00
- 1647216000000L, // 2022-03-13 17:00:00
- 1647223200000L, // 2022-03-13 19:00:00
- 1647230400000L, // 2022-03-13 21:00:00
- 1647237600000L, // 2022-03-13 23:00:00
- 1647241200000L // 2022-03-14 00:00:00
- ),
- List.of(
- 1647241200000L, // 2022-03-14 00:00:00
- 1647248400000L, // 2022-03-14 02:00:00
- 1647255600000L, // 2022-03-14 04:00:00
- 1647262800000L // 2022-03-14 06:00:00
- )
- );
+ List.of(
+ 1647151200000L, // 2022-03-12 22:00:00
+ 1647158400000L // 2022-03-13 00:00:00
+ ),
+ List.of(
+ 1647158400000L, // 2022-03-13 00:00:00
+ 1647165600000L, // 2022-03-13 03:00:00 after daylight saving change
+ 1647172800000L, // 2022-03-13 05:00:00
+ 1647180000000L, // 2022-03-13 07:00:00
+ 1647187200000L, // 2022-03-13 09:00:00
+ 1647194400000L, // 2022-03-13 11:00:00
+ 1647201600000L, // 2022-03-13 13:00:00
+ 1647208800000L, // 2022-03-13 15:00:00
+ 1647216000000L, // 2022-03-13 17:00:00
+ 1647223200000L, // 2022-03-13 19:00:00
+ 1647230400000L, // 2022-03-13 21:00:00
+ 1647237600000L, // 2022-03-13 23:00:00
+ 1647241200000L // 2022-03-14 00:00:00
+ ),
+ List.of(
+ 1647241200000L, // 2022-03-14 00:00:00
+ 1647248400000L, // 2022-03-14 02:00:00
+ 1647255600000L, // 2022-03-14 04:00:00
+ 1647262800000L // 2022-03-14 06:00:00
+ ));
final List<Integer> expectedHourlyLevels1 = new ArrayList<>();
expectedHourlyLevels1.add(100);
expectedHourlyLevels1.add(BATTERY_LEVEL_UNKNOWN);
@@ -651,11 +717,8 @@
expectedHourlyLevels3.add(BATTERY_LEVEL_UNKNOWN);
expectedHourlyLevels3.add(BATTERY_LEVEL_UNKNOWN);
expectedHourlyLevels3.add(88);
- final List<List<Integer>> expectedHourlyLevels = List.of(
- expectedHourlyLevels1,
- expectedHourlyLevels2,
- expectedHourlyLevels3
- );
+ final List<List<Integer>> expectedHourlyLevels =
+ List.of(expectedHourlyLevels1, expectedHourlyLevels2, expectedHourlyLevels3);
verifyExpectedBatteryLevelData(
resultData,
expectedDailyTimestamps,
@@ -666,8 +729,9 @@
@Test
public void getTimestampSlots_emptyRawList_returnEmptyList() {
- final List<Long> resultList = DataProcessor.getTimestampSlots(
- new ArrayList<>(), 1641038400000L); // 2022-01-01 20:00:00
+ final List<Long> resultList =
+ DataProcessor.getTimestampSlots(
+ new ArrayList<>(), 1641038400000L); // 2022-01-01 20:00:00
assertThat(resultList).isEmpty();
}
@@ -756,20 +820,24 @@
@Test
public void findNearestTimestamp_returnExpectedResult() {
- long[] results = DataProcessor.findNearestTimestamp(
- Arrays.asList(10L, 20L, 30L, 40L), /*target=*/ 15L);
+ long[] results =
+ DataProcessor.findNearestTimestamp(
+ Arrays.asList(10L, 20L, 30L, 40L), /* target= */ 15L);
assertThat(results).isEqualTo(new long[] {10L, 20L});
- results = DataProcessor.findNearestTimestamp(
- Arrays.asList(10L, 20L, 30L, 40L), /*target=*/ 10L);
+ results =
+ DataProcessor.findNearestTimestamp(
+ Arrays.asList(10L, 20L, 30L, 40L), /* target= */ 10L);
assertThat(results).isEqualTo(new long[] {10L, 10L});
- results = DataProcessor.findNearestTimestamp(
- Arrays.asList(10L, 20L, 30L, 40L), /*target=*/ 5L);
+ results =
+ DataProcessor.findNearestTimestamp(
+ Arrays.asList(10L, 20L, 30L, 40L), /* target= */ 5L);
assertThat(results).isEqualTo(new long[] {0L, 10L});
- results = DataProcessor.findNearestTimestamp(
- Arrays.asList(10L, 20L, 30L, 40L), /*target=*/ 50L);
+ results =
+ DataProcessor.findNearestTimestamp(
+ Arrays.asList(10L, 20L, 30L, 40L), /* target= */ 50L);
assertThat(results).isEqualTo(new long[] {40L, 0L});
}
@@ -781,36 +849,100 @@
hourlyBatteryLevelsPerDay.add(
new BatteryLevelData.PeriodBatteryLevelData(new ArrayMap<>(), new ArrayList<>()));
- assertThat(DataProcessor.getBatteryDiffDataMap(mContext, hourlyBatteryLevelsPerDay,
- new HashMap<>(), /*appUsagePeriodMap=*/ null, Set.of(), Set.of())).isEmpty();
+ assertThat(
+ DataProcessor.getBatteryDiffDataMap(
+ mContext,
+ hourlyBatteryLevelsPerDay,
+ new HashMap<>(),
+ /* appUsagePeriodMap= */ null,
+ Set.of(),
+ Set.of()))
+ .isEmpty();
}
@Test
public void getBatteryDiffDataMap_normalFlow_returnExpectedResult() {
final int userId = mContext.getUserId();
- final long[] batteryHistoryKeys = new long[]{
- 1641045600000L, // 2022-01-01 22:00:00
- 1641049200000L, // 2022-01-01 23:00:00
- 1641052800000L, // 2022-01-02 00:00:00
- };
- final Map<Long, Map<String, BatteryHistEntry>> batteryHistoryMap = Map.of(
- batteryHistoryKeys[0], Map.of(FAKE_PACKAGE_NAME, createBatteryHistEntry(
- FAKE_PACKAGE_NAME, "fake_label", /*consumePower=*/ 0, 0, 0,
- 0, 0, 0L, userId, ConvertUtils.CONSUMER_TYPE_UID_BATTERY, 0L, 0L, false)),
- batteryHistoryKeys[1], Map.of(FAKE_PACKAGE_NAME, createBatteryHistEntry(
- FAKE_PACKAGE_NAME, "fake_label", /*consumePower=*/ 5, 0, 0,
- 0, 0, 0L, userId, ConvertUtils.CONSUMER_TYPE_UID_BATTERY, 0L, 0L, false)),
- batteryHistoryKeys[2], Map.of(FAKE_PACKAGE_NAME, createBatteryHistEntry(
- FAKE_PACKAGE_NAME, "fake_label", /*consumePower=*/ 16, 0, 0,
- 0, 0, 0L, userId, ConvertUtils.CONSUMER_TYPE_UID_BATTERY, 0L, 0L, false)));
+ final long[] batteryHistoryKeys =
+ new long[] {
+ 1641045600000L, // 2022-01-01 22:00:00
+ 1641049200000L, // 2022-01-01 23:00:00
+ 1641052800000L, // 2022-01-02 00:00:00
+ };
+ final Map<Long, Map<String, BatteryHistEntry>> batteryHistoryMap =
+ Map.of(
+ batteryHistoryKeys[0],
+ Map.of(
+ FAKE_PACKAGE_NAME,
+ createBatteryHistEntry(
+ FAKE_PACKAGE_NAME,
+ "fake_label",
+ /* consumePower= */ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0L,
+ userId,
+ ConvertUtils.CONSUMER_TYPE_UID_BATTERY,
+ 0L,
+ 0L,
+ false)),
+ batteryHistoryKeys[1],
+ Map.of(
+ FAKE_PACKAGE_NAME,
+ createBatteryHistEntry(
+ FAKE_PACKAGE_NAME,
+ "fake_label",
+ /* consumePower= */ 5,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0L,
+ userId,
+ ConvertUtils.CONSUMER_TYPE_UID_BATTERY,
+ 0L,
+ 0L,
+ false)),
+ batteryHistoryKeys[2],
+ Map.of(
+ FAKE_PACKAGE_NAME,
+ createBatteryHistEntry(
+ FAKE_PACKAGE_NAME,
+ "fake_label",
+ /* consumePower= */ 16,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0L,
+ userId,
+ ConvertUtils.CONSUMER_TYPE_UID_BATTERY,
+ 0L,
+ 0L,
+ false)));
final BatteryLevelData batteryLevelData = generateBatteryLevelData(batteryHistoryKeys);
final Map<Integer, Map<Integer, Map<Long, Map<String, List<AppUsagePeriod>>>>>
- appUsagePeriodMap = Map.of(0, Map.of(0, Map.of(Long.valueOf(userId), Map.of(
- FAKE_PACKAGE_NAME, List.of(buildAppUsagePeriod(0, 6))))));
+ appUsagePeriodMap =
+ Map.of(
+ 0,
+ Map.of(
+ 0,
+ Map.of(
+ Long.valueOf(userId),
+ Map.of(
+ FAKE_PACKAGE_NAME,
+ List.of(buildAppUsagePeriod(0, 6))))));
- Map<Long, BatteryDiffData> batteryDiffDataMap = DataProcessor.getBatteryDiffDataMap(
- mContext, batteryLevelData.getHourlyBatteryLevelsPerDay(), batteryHistoryMap,
- appUsagePeriodMap, Set.of(), Set.of());
+ Map<Long, BatteryDiffData> batteryDiffDataMap =
+ DataProcessor.getBatteryDiffDataMap(
+ mContext,
+ batteryLevelData.getHourlyBatteryLevelsPerDay(),
+ batteryHistoryMap,
+ appUsagePeriodMap,
+ Set.of(),
+ Set.of());
assertThat(batteryDiffDataMap).hasSize(1);
assertThat(batteryDiffDataMap).containsKey(batteryHistoryKeys[0]);
@@ -821,31 +953,48 @@
@Test
public void generateBatteryUsageMap_returnsExpectedResult() {
- final long[] batteryHistoryKeys = new long[]{
- 1641045600000L, // 2022-01-01 22:00:00
- 1641049200000L, // 2022-01-01 23:00:00
- 1641052800000L, // 2022-01-02 00:00:00
- 1641056400000L, // 2022-01-02 01:00:00
- 1641060000000L, // 2022-01-02 02:00:00
- };
+ final long[] batteryHistoryKeys =
+ new long[] {
+ 1641045600000L, // 2022-01-01 22:00:00
+ 1641049200000L, // 2022-01-01 23:00:00
+ 1641052800000L, // 2022-01-02 00:00:00
+ 1641056400000L, // 2022-01-02 01:00:00
+ 1641060000000L, // 2022-01-02 02:00:00
+ };
final Map<Long, Map<String, BatteryHistEntry>> batteryHistoryMap = new HashMap<>();
final int currentUserId = mContext.getUserId();
- final BatteryHistEntry fakeEntry = createBatteryHistEntry(
- FAKE_PACKAGE_NAME, "fake_label", /*consumePower=*/ 0,
- /*foregroundUsageConsumePower=*/ 0, /*foregroundServiceUsageConsumePower=*/ 0,
- /*backgroundUsageConsumePower=*/ 0, /*cachedUsageConsumePower=*/ 0,
- /*uid=*/ 0L, currentUserId, ConvertUtils.CONSUMER_TYPE_UID_BATTERY,
- /*foregroundUsageTimeInMs=*/ 0L, /*backgroundUsageTimeInMs=*/ 0L,
- /*isHidden=*/ false);
+ final BatteryHistEntry fakeEntry =
+ createBatteryHistEntry(
+ FAKE_PACKAGE_NAME,
+ "fake_label",
+ /* consumePower= */ 0,
+ /* foregroundUsageConsumePower= */ 0,
+ /* foregroundServiceUsageConsumePower= */ 0,
+ /* backgroundUsageConsumePower= */ 0,
+ /* cachedUsageConsumePower= */ 0,
+ /* uid= */ 0L,
+ currentUserId,
+ ConvertUtils.CONSUMER_TYPE_UID_BATTERY,
+ /* foregroundUsageTimeInMs= */ 0L,
+ /* backgroundUsageTimeInMs= */ 0L,
+ /* isHidden= */ false);
// Adds the index = 0 data.
Map<String, BatteryHistEntry> entryMap = new HashMap<>();
- BatteryHistEntry entry = createBatteryHistEntry(
- "package1", "label1", /*consumePower=*/ 5.0,
- /*foregroundUsageConsumePower=*/ 2, /*foregroundServiceUsageConsumePower=*/ 0,
- /*backgroundUsageConsumePower=*/ 3, /*cachedUsageConsumePower=*/ 0,
- /*uid=*/ 1L, currentUserId,
- ConvertUtils.CONSUMER_TYPE_UID_BATTERY, /*foregroundUsageTimeInMs=*/ 10L,
- /*backgroundUsageTimeInMs=*/ 20L, /*isHidden=*/ false);
+ BatteryHistEntry entry =
+ createBatteryHistEntry(
+ "package1",
+ "label1",
+ /* consumePower= */ 5.0,
+ /* foregroundUsageConsumePower= */ 2,
+ /* foregroundServiceUsageConsumePower= */ 0,
+ /* backgroundUsageConsumePower= */ 3,
+ /* cachedUsageConsumePower= */ 0,
+ /* uid= */ 1L,
+ currentUserId,
+ ConvertUtils.CONSUMER_TYPE_UID_BATTERY,
+ /* foregroundUsageTimeInMs= */ 10L,
+ /* backgroundUsageTimeInMs= */ 20L,
+ /* isHidden= */ false);
entryMap.put(entry.getKey(), entry);
entryMap.put(fakeEntry.getKey(), fakeEntry);
batteryHistoryMap.put(batteryHistoryKeys[0], entryMap);
@@ -855,69 +1004,125 @@
batteryHistoryMap.put(batteryHistoryKeys[1], entryMap);
// Adds the index = 2 data.
entryMap = new HashMap<>();
- entry = createBatteryHistEntry(
- "package2", "label2", /*consumePower=*/ 20.0,
- /*foregroundUsageConsumePower=*/ 5, /*foregroundServiceUsageConsumePower=*/ 5,
- /*backgroundUsageConsumePower=*/ 5, /*cachedUsageConsumePower=*/ 5,
- /*uid=*/ 2L, currentUserId,
- ConvertUtils.CONSUMER_TYPE_UID_BATTERY, /*foregroundUsageTimeInMs=*/ 15L,
- /*backgroundUsageTimeInMs=*/ 25L, /*isHidden=*/ false);
+ entry =
+ createBatteryHistEntry(
+ "package2",
+ "label2",
+ /* consumePower= */ 20.0,
+ /* foregroundUsageConsumePower= */ 5,
+ /* foregroundServiceUsageConsumePower= */ 5,
+ /* backgroundUsageConsumePower= */ 5,
+ /* cachedUsageConsumePower= */ 5,
+ /* uid= */ 2L,
+ currentUserId,
+ ConvertUtils.CONSUMER_TYPE_UID_BATTERY,
+ /* foregroundUsageTimeInMs= */ 15L,
+ /* backgroundUsageTimeInMs= */ 25L,
+ /* isHidden= */ false);
entryMap.put(entry.getKey(), entry);
entryMap.put(fakeEntry.getKey(), fakeEntry);
batteryHistoryMap.put(batteryHistoryKeys[2], entryMap);
// Adds the index = 3 data.
entryMap = new HashMap<>();
- entry = createBatteryHistEntry(
- "package2", "label2", /*consumePower=*/ 40.0,
- /*foregroundUsageConsumePower=*/ 8, /*foregroundServiceUsageConsumePower=*/ 8,
- /*backgroundUsageConsumePower=*/ 8, /*cachedUsageConsumePower=*/ 8,
- /*uid=*/ 2L, currentUserId,
- ConvertUtils.CONSUMER_TYPE_UID_BATTERY, /*foregroundUsageTimeInMs=*/ 25L,
- /*backgroundUsageTimeInMs=*/ 35L, /*isHidden=*/ false);
+ entry =
+ createBatteryHistEntry(
+ "package2",
+ "label2",
+ /* consumePower= */ 40.0,
+ /* foregroundUsageConsumePower= */ 8,
+ /* foregroundServiceUsageConsumePower= */ 8,
+ /* backgroundUsageConsumePower= */ 8,
+ /* cachedUsageConsumePower= */ 8,
+ /* uid= */ 2L,
+ currentUserId,
+ ConvertUtils.CONSUMER_TYPE_UID_BATTERY,
+ /* foregroundUsageTimeInMs= */ 25L,
+ /* backgroundUsageTimeInMs= */ 35L,
+ /* isHidden= */ false);
entryMap.put(entry.getKey(), entry);
- entry = createBatteryHistEntry(
- "package3", "Screen", /*consumePower=*/ 10.0,
- /*foregroundUsageConsumePower=*/ 4, /*foregroundServiceUsageConsumePower=*/ 2,
- /*backgroundUsageConsumePower=*/ 2, /*cachedUsageConsumePower=*/ 2,
- /*uid=*/ 3L, currentUserId,
- ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY, /*foregroundUsageTimeInMs=*/ 40L,
- /*backgroundUsageTimeInMs=*/ 50L, /*isHidden=*/ false);
+ entry =
+ createBatteryHistEntry(
+ "package3",
+ "Screen",
+ /* consumePower= */ 10.0,
+ /* foregroundUsageConsumePower= */ 4,
+ /* foregroundServiceUsageConsumePower= */ 2,
+ /* backgroundUsageConsumePower= */ 2,
+ /* cachedUsageConsumePower= */ 2,
+ /* uid= */ 3L,
+ currentUserId,
+ ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY,
+ /* foregroundUsageTimeInMs= */ 40L,
+ /* backgroundUsageTimeInMs= */ 50L,
+ /* isHidden= */ false);
entryMap.put(entry.getKey(), entry);
- entry = createBatteryHistEntry(
- "package4", "label4", /*consumePower=*/ 15.0,
- /*foregroundUsageConsumePower=*/ 6, /*foregroundServiceUsageConsumePower=*/ 3,
- /*backgroundUsageConsumePower=*/ 3, /*cachedUsageConsumePower=*/ 3,
- /*uid=*/ 4L, currentUserId,
- ConvertUtils.CONSUMER_TYPE_UID_BATTERY, /*foregroundUsageTimeInMs=*/ 5L,
- /*backgroundUsageTimeInMs=*/ 5L, /*isHidden=*/ false);
+ entry =
+ createBatteryHistEntry(
+ "package4",
+ "label4",
+ /* consumePower= */ 15.0,
+ /* foregroundUsageConsumePower= */ 6,
+ /* foregroundServiceUsageConsumePower= */ 3,
+ /* backgroundUsageConsumePower= */ 3,
+ /* cachedUsageConsumePower= */ 3,
+ /* uid= */ 4L,
+ currentUserId,
+ ConvertUtils.CONSUMER_TYPE_UID_BATTERY,
+ /* foregroundUsageTimeInMs= */ 5L,
+ /* backgroundUsageTimeInMs= */ 5L,
+ /* isHidden= */ false);
entryMap.put(entry.getKey(), entry);
entryMap.put(fakeEntry.getKey(), fakeEntry);
batteryHistoryMap.put(batteryHistoryKeys[3], entryMap);
// Adds the index = 4 data.
entryMap = new HashMap<>();
- entry = createBatteryHistEntry(
- "package2", "label2", /*consumePower=*/ 40.0,
- /*foregroundUsageConsumePower=*/ 14, /*foregroundServiceUsageConsumePower=*/ 9,
- /*backgroundUsageConsumePower=*/ 9, /*cachedUsageConsumePower=*/ 8,
- /*uid=*/ 2L, currentUserId,
- ConvertUtils.CONSUMER_TYPE_UID_BATTERY, /*foregroundUsageTimeInMs=*/ 30L,
- /*backgroundUsageTimeInMs=*/ 40L, /*isHidden=*/ false);
+ entry =
+ createBatteryHistEntry(
+ "package2",
+ "label2",
+ /* consumePower= */ 40.0,
+ /* foregroundUsageConsumePower= */ 14,
+ /* foregroundServiceUsageConsumePower= */ 9,
+ /* backgroundUsageConsumePower= */ 9,
+ /* cachedUsageConsumePower= */ 8,
+ /* uid= */ 2L,
+ currentUserId,
+ ConvertUtils.CONSUMER_TYPE_UID_BATTERY,
+ /* foregroundUsageTimeInMs= */ 30L,
+ /* backgroundUsageTimeInMs= */ 40L,
+ /* isHidden= */ false);
entryMap.put(entry.getKey(), entry);
- entry = createBatteryHistEntry(
- "package3", "Screen", /*consumePower=*/ 20.0,
- /*foregroundUsageConsumePower=*/ 5, /*foregroundServiceUsageConsumePower=*/ 5,
- /*backgroundUsageConsumePower=*/ 5, /*cachedUsageConsumePower=*/ 5,
- /*uid=*/ 3L, currentUserId,
- ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY, /*foregroundUsageTimeInMs=*/ 50L,
- /*backgroundUsageTimeInMs=*/ 60L, /*isHidden=*/ false);
+ entry =
+ createBatteryHistEntry(
+ "package3",
+ "Screen",
+ /* consumePower= */ 20.0,
+ /* foregroundUsageConsumePower= */ 5,
+ /* foregroundServiceUsageConsumePower= */ 5,
+ /* backgroundUsageConsumePower= */ 5,
+ /* cachedUsageConsumePower= */ 5,
+ /* uid= */ 3L,
+ currentUserId,
+ ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY,
+ /* foregroundUsageTimeInMs= */ 50L,
+ /* backgroundUsageTimeInMs= */ 60L,
+ /* isHidden= */ false);
entryMap.put(entry.getKey(), entry);
- entry = createBatteryHistEntry(
- "package4", "label4", /*consumePower=*/ 40.0,
- /*foregroundUsageConsumePower=*/ 8, /*foregroundServiceUsageConsumePower=*/ 8,
- /*backgroundUsageConsumePower=*/ 8, /*cachedUsageConsumePower=*/ 8,
- /*uid=*/ 4L, currentUserId,
- ConvertUtils.CONSUMER_TYPE_UID_BATTERY, /*foregroundUsageTimeInMs=*/ 5L,
- /*backgroundUsageTimeInMs=*/ 5L, /*isHidden=*/ false);
+ entry =
+ createBatteryHistEntry(
+ "package4",
+ "label4",
+ /* consumePower= */ 40.0,
+ /* foregroundUsageConsumePower= */ 8,
+ /* foregroundServiceUsageConsumePower= */ 8,
+ /* backgroundUsageConsumePower= */ 8,
+ /* cachedUsageConsumePower= */ 8,
+ /* uid= */ 4L,
+ currentUserId,
+ ConvertUtils.CONSUMER_TYPE_UID_BATTERY,
+ /* foregroundUsageTimeInMs= */ 5L,
+ /* backgroundUsageTimeInMs= */ 5L,
+ /* isHidden= */ false);
entryMap.put(entry.getKey(), entry);
entryMap.put(fakeEntry.getKey(), fakeEntry);
batteryHistoryMap.put(batteryHistoryKeys[4], entryMap);
@@ -938,18 +1143,22 @@
appUsageMap = new HashMap<>();
userPeriodMap = new HashMap<>();
appUsageMap.put(Long.valueOf(currentUserId), userPeriodMap);
- userPeriodMap.put("package2",
- List.of(buildAppUsagePeriod(2, 7), buildAppUsagePeriod(5, 9)));
- userPeriodMap.put("package3",
- List.of(buildAppUsagePeriod(10, 15), buildAppUsagePeriod(25, 29)));
+ userPeriodMap.put(
+ "package2", List.of(buildAppUsagePeriod(2, 7), buildAppUsagePeriod(5, 9)));
+ userPeriodMap.put(
+ "package3", List.of(buildAppUsagePeriod(10, 15), buildAppUsagePeriod(25, 29)));
appUsagePeriodMap.get(1).put(0, appUsageMap);
final Map<Integer, Map<Integer, BatteryDiffData>> resultMap =
DataProcessor.generateBatteryUsageMap(
mContext,
- DataProcessor.getBatteryDiffDataMap(mContext,
- batteryLevelData.getHourlyBatteryLevelsPerDay(), batteryHistoryMap,
- appUsagePeriodMap, Set.of(), Set.of()),
+ DataProcessor.getBatteryDiffDataMap(
+ mContext,
+ batteryLevelData.getHourlyBatteryLevelsPerDay(),
+ batteryHistoryMap,
+ appUsagePeriodMap,
+ Set.of(),
+ Set.of()),
batteryLevelData);
BatteryDiffData resultDiffData =
@@ -958,146 +1167,261 @@
.get(DataProcessor.SELECTED_INDEX_ALL);
assertThat(resultDiffData.getScreenOnTime()).isEqualTo(36L);
assertBatteryDiffEntry(
- resultDiffData.getAppDiffEntryList().get(0), currentUserId, /*uid=*/ 2L,
- ConvertUtils.CONSUMER_TYPE_UID_BATTERY, /*consumePercentage=*/ 50.0,
- /*foregroundUsageConsumePower=*/ 14, /*foregroundServiceUsageConsumePower=*/ 9,
- /*backgroundUsageConsumePower=*/ 9, /*cachedUsageConsumePower=*/ 8,
- /*foregroundUsageTimeInMs=*/ 30, /*backgroundUsageTimeInMs=*/ 40,
- /*screenOnTimeInMs=*/ 12);
+ resultDiffData.getAppDiffEntryList().get(0),
+ currentUserId,
+ /* uid= */ 2L,
+ ConvertUtils.CONSUMER_TYPE_UID_BATTERY,
+ /* consumePercentage= */ 50.0,
+ /* foregroundUsageConsumePower= */ 14,
+ /* foregroundServiceUsageConsumePower= */ 9,
+ /* backgroundUsageConsumePower= */ 9,
+ /* cachedUsageConsumePower= */ 8,
+ /* foregroundUsageTimeInMs= */ 30,
+ /* backgroundUsageTimeInMs= */ 40,
+ /* screenOnTimeInMs= */ 12);
assertBatteryDiffEntry(
- resultDiffData.getAppDiffEntryList().get(1), currentUserId, /*uid=*/ 4L,
- ConvertUtils.CONSUMER_TYPE_UID_BATTERY, /*consumePercentage=*/ 50.0,
- /*foregroundUsageConsumePower=*/ 8, /*foregroundServiceUsageConsumePower=*/ 8,
- /*backgroundUsageConsumePower=*/ 8, /*cachedUsageConsumePower=*/ 8,
- /*foregroundUsageTimeInMs=*/ 5, /*backgroundUsageTimeInMs=*/ 5,
- /*screenOnTimeInMs=*/ 0);
+ resultDiffData.getAppDiffEntryList().get(1),
+ currentUserId,
+ /* uid= */ 4L,
+ ConvertUtils.CONSUMER_TYPE_UID_BATTERY,
+ /* consumePercentage= */ 50.0,
+ /* foregroundUsageConsumePower= */ 8,
+ /* foregroundServiceUsageConsumePower= */ 8,
+ /* backgroundUsageConsumePower= */ 8,
+ /* cachedUsageConsumePower= */ 8,
+ /* foregroundUsageTimeInMs= */ 5,
+ /* backgroundUsageTimeInMs= */ 5,
+ /* screenOnTimeInMs= */ 0);
assertBatteryDiffEntry(
- resultDiffData.getSystemDiffEntryList().get(0), currentUserId, /*uid=*/ 3L,
- ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY, /*consumePercentage=*/ 100.0,
- /*foregroundUsageConsumePower=*/ 5, /*foregroundServiceUsageConsumePower=*/ 5,
- /*backgroundUsageConsumePower=*/ 5, /*cachedUsageConsumePower=*/ 5,
- /*foregroundUsageTimeInMs=*/ 16, /*backgroundUsageTimeInMs=*/ 60,
- /*screenOnTimeInMs=*/ 9);
+ resultDiffData.getSystemDiffEntryList().get(0),
+ currentUserId,
+ /* uid= */ 3L,
+ ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY,
+ /* consumePercentage= */ 100.0,
+ /* foregroundUsageConsumePower= */ 5,
+ /* foregroundServiceUsageConsumePower= */ 5,
+ /* backgroundUsageConsumePower= */ 5,
+ /* cachedUsageConsumePower= */ 5,
+ /* foregroundUsageTimeInMs= */ 16,
+ /* backgroundUsageTimeInMs= */ 60,
+ /* screenOnTimeInMs= */ 9);
resultDiffData = resultMap.get(0).get(DataProcessor.SELECTED_INDEX_ALL);
assertBatteryDiffEntry(
- resultDiffData.getAppDiffEntryList().get(0), currentUserId, /*uid=*/ 2L,
- ConvertUtils.CONSUMER_TYPE_UID_BATTERY, /*consumePercentage=*/ 100.0,
- /*foregroundUsageConsumePower=*/ 5, /*foregroundServiceUsageConsumePower=*/ 5,
- /*backgroundUsageConsumePower=*/ 5, /*cachedUsageConsumePower=*/ 5,
- /*foregroundUsageTimeInMs=*/ 15, /*backgroundUsageTimeInMs=*/ 25,
- /*screenOnTimeInMs=*/ 5);
+ resultDiffData.getAppDiffEntryList().get(0),
+ currentUserId,
+ /* uid= */ 2L,
+ ConvertUtils.CONSUMER_TYPE_UID_BATTERY,
+ /* consumePercentage= */ 100.0,
+ /* foregroundUsageConsumePower= */ 5,
+ /* foregroundServiceUsageConsumePower= */ 5,
+ /* backgroundUsageConsumePower= */ 5,
+ /* cachedUsageConsumePower= */ 5,
+ /* foregroundUsageTimeInMs= */ 15,
+ /* backgroundUsageTimeInMs= */ 25,
+ /* screenOnTimeInMs= */ 5);
resultDiffData = resultMap.get(1).get(DataProcessor.SELECTED_INDEX_ALL);
assertBatteryDiffEntry(
- resultDiffData.getAppDiffEntryList().get(0), currentUserId, /*uid=*/ 4L,
- ConvertUtils.CONSUMER_TYPE_UID_BATTERY, /*consumePercentage=*/ 66.66666666666666,
- /*foregroundUsageConsumePower=*/ 8, /*foregroundServiceUsageConsumePower=*/ 8,
- /*backgroundUsageConsumePower=*/ 8, /*cachedUsageConsumePower=*/ 8,
- /*foregroundUsageTimeInMs=*/ 5, /*backgroundUsageTimeInMs=*/ 5,
- /*screenOnTimeInMs=*/ 0);
+ resultDiffData.getAppDiffEntryList().get(0),
+ currentUserId,
+ /* uid= */ 4L,
+ ConvertUtils.CONSUMER_TYPE_UID_BATTERY,
+ /* consumePercentage= */ 66.66666666666666,
+ /* foregroundUsageConsumePower= */ 8,
+ /* foregroundServiceUsageConsumePower= */ 8,
+ /* backgroundUsageConsumePower= */ 8,
+ /* cachedUsageConsumePower= */ 8,
+ /* foregroundUsageTimeInMs= */ 5,
+ /* backgroundUsageTimeInMs= */ 5,
+ /* screenOnTimeInMs= */ 0);
assertBatteryDiffEntry(
- resultDiffData.getAppDiffEntryList().get(1), currentUserId, /*uid=*/ 2L,
- ConvertUtils.CONSUMER_TYPE_UID_BATTERY, /*consumePercentage=*/ 33.33333333333333,
- /*foregroundUsageConsumePower=*/ 9, /*foregroundServiceUsageConsumePower=*/ 4,
- /*backgroundUsageConsumePower=*/ 4, /*cachedUsageConsumePower=*/ 3,
- /*foregroundUsageTimeInMs=*/ 15, /*backgroundUsageTimeInMs=*/ 15,
- /*screenOnTimeInMs=*/ 7);
+ resultDiffData.getAppDiffEntryList().get(1),
+ currentUserId,
+ /* uid= */ 2L,
+ ConvertUtils.CONSUMER_TYPE_UID_BATTERY,
+ /* consumePercentage= */ 33.33333333333333,
+ /* foregroundUsageConsumePower= */ 9,
+ /* foregroundServiceUsageConsumePower= */ 4,
+ /* backgroundUsageConsumePower= */ 4,
+ /* cachedUsageConsumePower= */ 3,
+ /* foregroundUsageTimeInMs= */ 15,
+ /* backgroundUsageTimeInMs= */ 15,
+ /* screenOnTimeInMs= */ 7);
assertBatteryDiffEntry(
- resultDiffData.getSystemDiffEntryList().get(0), currentUserId, /*uid=*/ 3L,
- ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY, /*consumePercentage=*/ 100.0,
- /*foregroundUsageConsumePower=*/ 5, /*foregroundServiceUsageConsumePower=*/ 5,
- /*backgroundUsageConsumePower=*/ 5, /*cachedUsageConsumePower=*/ 5,
- /*foregroundUsageTimeInMs=*/ 16, /*backgroundUsageTimeInMs=*/ 60,
- /*screenOnTimeInMs=*/ 9);
+ resultDiffData.getSystemDiffEntryList().get(0),
+ currentUserId,
+ /* uid= */ 3L,
+ ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY,
+ /* consumePercentage= */ 100.0,
+ /* foregroundUsageConsumePower= */ 5,
+ /* foregroundServiceUsageConsumePower= */ 5,
+ /* backgroundUsageConsumePower= */ 5,
+ /* cachedUsageConsumePower= */ 5,
+ /* foregroundUsageTimeInMs= */ 16,
+ /* backgroundUsageTimeInMs= */ 60,
+ /* screenOnTimeInMs= */ 9);
}
@Test
public void generateBatteryUsageMap_multipleUsers_returnsExpectedResult() {
- final long[] batteryHistoryKeys = new long[]{
- 1641052800000L, // 2022-01-02 00:00:00
- 1641056400000L, // 2022-01-02 01:00:00
- 1641060000000L // 2022-01-02 02:00:00
- };
+ final long[] batteryHistoryKeys =
+ new long[] {
+ 1641052800000L, // 2022-01-02 00:00:00
+ 1641056400000L, // 2022-01-02 01:00:00
+ 1641060000000L // 2022-01-02 02:00:00
+ };
final Map<Long, Map<String, BatteryHistEntry>> batteryHistoryMap = new HashMap<>();
final int currentUserId = mContext.getUserId();
// Adds the index = 0 data.
Map<String, BatteryHistEntry> entryMap = new HashMap<>();
- BatteryHistEntry entry = createBatteryHistEntry(
- "package1", "label1", /*consumePower=*/ 5.0,
- /*foregroundUsageConsumePower=*/ 5, /*foregroundServiceUsageConsumePower=*/ 0,
- /*backgroundUsageConsumePower=*/ 0, /*cachedUsageConsumePower=*/ 0,
- /*uid=*/ 1L, currentUserId,
- ConvertUtils.CONSUMER_TYPE_UID_BATTERY, /*foregroundUsageTimeInMs=*/ 10L,
- /*backgroundUsageTimeInMs=*/ 20L, /*isHidden=*/ false);
+ BatteryHistEntry entry =
+ createBatteryHistEntry(
+ "package1",
+ "label1",
+ /* consumePower= */ 5.0,
+ /* foregroundUsageConsumePower= */ 5,
+ /* foregroundServiceUsageConsumePower= */ 0,
+ /* backgroundUsageConsumePower= */ 0,
+ /* cachedUsageConsumePower= */ 0,
+ /* uid= */ 1L,
+ currentUserId,
+ ConvertUtils.CONSUMER_TYPE_UID_BATTERY,
+ /* foregroundUsageTimeInMs= */ 10L,
+ /* backgroundUsageTimeInMs= */ 20L,
+ /* isHidden= */ false);
entryMap.put(entry.getKey(), entry);
- entry = createBatteryHistEntry(
- "package1", "label1", /*consumePower=*/ 10.0,
- /*foregroundUsageConsumePower=*/ 7, /*foregroundServiceUsageConsumePower=*/ 1,
- /*backgroundUsageConsumePower=*/ 1, /*cachedUsageConsumePower=*/ 1,
- /*uid=*/ 2L, currentUserId + 1,
- ConvertUtils.CONSUMER_TYPE_UID_BATTERY, /*foregroundUsageTimeInMs=*/ 10L,
- /*backgroundUsageTimeInMs=*/ 20L, /*isHidden=*/ false);
+ entry =
+ createBatteryHistEntry(
+ "package1",
+ "label1",
+ /* consumePower= */ 10.0,
+ /* foregroundUsageConsumePower= */ 7,
+ /* foregroundServiceUsageConsumePower= */ 1,
+ /* backgroundUsageConsumePower= */ 1,
+ /* cachedUsageConsumePower= */ 1,
+ /* uid= */ 2L,
+ currentUserId + 1,
+ ConvertUtils.CONSUMER_TYPE_UID_BATTERY,
+ /* foregroundUsageTimeInMs= */ 10L,
+ /* backgroundUsageTimeInMs= */ 20L,
+ /* isHidden= */ false);
entryMap.put(entry.getKey(), entry);
- entry = createBatteryHistEntry(
- "package2", "label2", /*consumePower=*/ 5.0,
- /*foregroundUsageConsumePower=*/ 5, /*foregroundServiceUsageConsumePower=*/ 0,
- /*backgroundUsageConsumePower=*/ 0, /*cachedUsageConsumePower=*/ 0,
- /*uid=*/ 3L, currentUserId + 2,
- ConvertUtils.CONSUMER_TYPE_UID_BATTERY, /*foregroundUsageTimeInMs=*/ 20L,
- /*backgroundUsageTimeInMs=*/ 30L, /*isHidden=*/ false);
+ entry =
+ createBatteryHistEntry(
+ "package2",
+ "label2",
+ /* consumePower= */ 5.0,
+ /* foregroundUsageConsumePower= */ 5,
+ /* foregroundServiceUsageConsumePower= */ 0,
+ /* backgroundUsageConsumePower= */ 0,
+ /* cachedUsageConsumePower= */ 0,
+ /* uid= */ 3L,
+ currentUserId + 2,
+ ConvertUtils.CONSUMER_TYPE_UID_BATTERY,
+ /* foregroundUsageTimeInMs= */ 20L,
+ /* backgroundUsageTimeInMs= */ 30L,
+ /* isHidden= */ false);
entryMap.put(entry.getKey(), entry);
batteryHistoryMap.put(batteryHistoryKeys[0], entryMap);
// Adds the index = 1 data.
entryMap = new HashMap<>();
- entry = createBatteryHistEntry(
- "package1", "label1", /*consumePower=*/ 15.0,
- /*foregroundUsageConsumePower=*/ 9, /*foregroundServiceUsageConsumePower=*/ 2,
- /*backgroundUsageConsumePower=*/ 2, /*cachedUsageConsumePower=*/ 2,
- /*uid=*/ 1L, currentUserId,
- ConvertUtils.CONSUMER_TYPE_UID_BATTERY, /*foregroundUsageTimeInMs=*/ 20L,
- /*backgroundUsageTimeInMs=*/ 30L, /*isHidden=*/ false);
+ entry =
+ createBatteryHistEntry(
+ "package1",
+ "label1",
+ /* consumePower= */ 15.0,
+ /* foregroundUsageConsumePower= */ 9,
+ /* foregroundServiceUsageConsumePower= */ 2,
+ /* backgroundUsageConsumePower= */ 2,
+ /* cachedUsageConsumePower= */ 2,
+ /* uid= */ 1L,
+ currentUserId,
+ ConvertUtils.CONSUMER_TYPE_UID_BATTERY,
+ /* foregroundUsageTimeInMs= */ 20L,
+ /* backgroundUsageTimeInMs= */ 30L,
+ /* isHidden= */ false);
entryMap.put(entry.getKey(), entry);
- entry = createBatteryHistEntry(
- "package1", "label1", /*consumePower=*/ 30.0,
- /*foregroundUsageConsumePower=*/ 20, /*foregroundServiceUsageConsumePower=*/ 6,
- /*backgroundUsageConsumePower=*/ 2, /*cachedUsageConsumePower=*/ 2,
- /*uid=*/ 2L, currentUserId + 1,
- ConvertUtils.CONSUMER_TYPE_UID_BATTERY, /*foregroundUsageTimeInMs=*/ 10L,
- /*backgroundUsageTimeInMs=*/ 20L, /*isHidden=*/ false);
+ entry =
+ createBatteryHistEntry(
+ "package1",
+ "label1",
+ /* consumePower= */ 30.0,
+ /* foregroundUsageConsumePower= */ 20,
+ /* foregroundServiceUsageConsumePower= */ 6,
+ /* backgroundUsageConsumePower= */ 2,
+ /* cachedUsageConsumePower= */ 2,
+ /* uid= */ 2L,
+ currentUserId + 1,
+ ConvertUtils.CONSUMER_TYPE_UID_BATTERY,
+ /* foregroundUsageTimeInMs= */ 10L,
+ /* backgroundUsageTimeInMs= */ 20L,
+ /* isHidden= */ false);
entryMap.put(entry.getKey(), entry);
- entry = createBatteryHistEntry(
- "package2", "label2", /*consumePower=*/ 15.0,
- /*foregroundUsageConsumePower=*/ 10, /*foregroundServiceUsageConsumePower=*/ 5,
- /*backgroundUsageConsumePower=*/ 0, /*cachedUsageConsumePower=*/ 0,
- /*uid=*/ 3L, currentUserId + 2,
- ConvertUtils.CONSUMER_TYPE_UID_BATTERY, /*foregroundUsageTimeInMs=*/ 30L,
- /*backgroundUsageTimeInMs=*/ 30L, /*isHidden=*/ false);
+ entry =
+ createBatteryHistEntry(
+ "package2",
+ "label2",
+ /* consumePower= */ 15.0,
+ /* foregroundUsageConsumePower= */ 10,
+ /* foregroundServiceUsageConsumePower= */ 5,
+ /* backgroundUsageConsumePower= */ 0,
+ /* cachedUsageConsumePower= */ 0,
+ /* uid= */ 3L,
+ currentUserId + 2,
+ ConvertUtils.CONSUMER_TYPE_UID_BATTERY,
+ /* foregroundUsageTimeInMs= */ 30L,
+ /* backgroundUsageTimeInMs= */ 30L,
+ /* isHidden= */ false);
entryMap.put(entry.getKey(), entry);
batteryHistoryMap.put(batteryHistoryKeys[1], entryMap);
// Adds the index = 2 data.
entryMap = new HashMap<>();
- entry = createBatteryHistEntry(
- "package1", "label1", /*consumePower=*/ 25.0,
- /*foregroundUsageConsumePower=*/ 10, /*foregroundServiceUsageConsumePower=*/ 5,
- /*backgroundUsageConsumePower=*/ 5, /*cachedUsageConsumePower=*/ 5,
- /*uid=*/ 1L, currentUserId,
- ConvertUtils.CONSUMER_TYPE_UID_BATTERY, /*foregroundUsageTimeInMs=*/ 20L,
- /*backgroundUsageTimeInMs=*/ 30L, /*isHidden=*/ false);
+ entry =
+ createBatteryHistEntry(
+ "package1",
+ "label1",
+ /* consumePower= */ 25.0,
+ /* foregroundUsageConsumePower= */ 10,
+ /* foregroundServiceUsageConsumePower= */ 5,
+ /* backgroundUsageConsumePower= */ 5,
+ /* cachedUsageConsumePower= */ 5,
+ /* uid= */ 1L,
+ currentUserId,
+ ConvertUtils.CONSUMER_TYPE_UID_BATTERY,
+ /* foregroundUsageTimeInMs= */ 20L,
+ /* backgroundUsageTimeInMs= */ 30L,
+ /* isHidden= */ false);
entryMap.put(entry.getKey(), entry);
- entry = createBatteryHistEntry(
- "package1", "label1", /*consumePower=*/ 50.0,
- /*foregroundUsageConsumePower=*/ 20, /*foregroundServiceUsageConsumePower=*/ 10,
- /*backgroundUsageConsumePower=*/ 10, /*cachedUsageConsumePower=*/ 10,
- /*uid=*/ 2L, currentUserId + 1,
- ConvertUtils.CONSUMER_TYPE_UID_BATTERY, /*foregroundUsageTimeInMs=*/ 20L,
- /*backgroundUsageTimeInMs=*/ 20L, /*isHidden=*/ false);
+ entry =
+ createBatteryHistEntry(
+ "package1",
+ "label1",
+ /* consumePower= */ 50.0,
+ /* foregroundUsageConsumePower= */ 20,
+ /* foregroundServiceUsageConsumePower= */ 10,
+ /* backgroundUsageConsumePower= */ 10,
+ /* cachedUsageConsumePower= */ 10,
+ /* uid= */ 2L,
+ currentUserId + 1,
+ ConvertUtils.CONSUMER_TYPE_UID_BATTERY,
+ /* foregroundUsageTimeInMs= */ 20L,
+ /* backgroundUsageTimeInMs= */ 20L,
+ /* isHidden= */ false);
entryMap.put(entry.getKey(), entry);
- entry = createBatteryHistEntry(
- "package2", "label2", /*consumePower=*/ 25.0,
- /*foregroundUsageConsumePower=*/ 10, /*foregroundServiceUsageConsumePower=*/ 10,
- /*backgroundUsageConsumePower=*/ 5, /*cachedUsageConsumePower=*/ 0,
- /*uid=*/ 3L, currentUserId + 2,
- ConvertUtils.CONSUMER_TYPE_UID_BATTERY, /*foregroundUsageTimeInMs=*/ 30L,
- /*backgroundUsageTimeInMs=*/ 30L, /*isHidden=*/ false);
+ entry =
+ createBatteryHistEntry(
+ "package2",
+ "label2",
+ /* consumePower= */ 25.0,
+ /* foregroundUsageConsumePower= */ 10,
+ /* foregroundServiceUsageConsumePower= */ 10,
+ /* backgroundUsageConsumePower= */ 5,
+ /* cachedUsageConsumePower= */ 0,
+ /* uid= */ 3L,
+ currentUserId + 2,
+ ConvertUtils.CONSUMER_TYPE_UID_BATTERY,
+ /* foregroundUsageTimeInMs= */ 30L,
+ /* backgroundUsageTimeInMs= */ 30L,
+ /* isHidden= */ false);
entryMap.put(entry.getKey(), entry);
batteryHistoryMap.put(batteryHistoryKeys[2], entryMap);
final BatteryLevelData batteryLevelData = generateBatteryLevelData(batteryHistoryKeys);
@@ -1105,9 +1429,13 @@
final Map<Integer, Map<Integer, BatteryDiffData>> resultMap =
DataProcessor.generateBatteryUsageMap(
mContext,
- DataProcessor.getBatteryDiffDataMap(mContext,
- batteryLevelData.getHourlyBatteryLevelsPerDay(), batteryHistoryMap,
- /*appUsagePeriodMap=*/ null, Set.of(), Set.of()),
+ DataProcessor.getBatteryDiffDataMap(
+ mContext,
+ batteryLevelData.getHourlyBatteryLevelsPerDay(),
+ batteryHistoryMap,
+ /* appUsagePeriodMap= */ null,
+ Set.of(),
+ Set.of()),
batteryLevelData);
final BatteryDiffData resultDiffData =
@@ -1116,12 +1444,18 @@
.get(DataProcessor.SELECTED_INDEX_ALL);
assertThat(resultDiffData.getScreenOnTime()).isEqualTo(0L);
assertBatteryDiffEntry(
- resultDiffData.getAppDiffEntryList().get(0), currentUserId, /*uid=*/ 1L,
- ConvertUtils.CONSUMER_TYPE_UID_BATTERY, /*consumePercentage=*/ 100.0,
- /*foregroundUsageConsumePower=*/ 5, /*foregroundServiceUsageConsumePower=*/ 5,
- /*backgroundUsageConsumePower=*/ 5, /*cachedUsageConsumePower=*/ 5,
- /*foregroundUsageTimeInMs=*/ 10, /*backgroundUsageTimeInMs=*/ 10,
- /*screenOnTimeInMs=*/ 0);
+ resultDiffData.getAppDiffEntryList().get(0),
+ currentUserId,
+ /* uid= */ 1L,
+ ConvertUtils.CONSUMER_TYPE_UID_BATTERY,
+ /* consumePercentage= */ 100.0,
+ /* foregroundUsageConsumePower= */ 5,
+ /* foregroundServiceUsageConsumePower= */ 5,
+ /* backgroundUsageConsumePower= */ 5,
+ /* cachedUsageConsumePower= */ 5,
+ /* foregroundUsageTimeInMs= */ 10,
+ /* backgroundUsageTimeInMs= */ 10,
+ /* screenOnTimeInMs= */ 0);
assertThat(resultDiffData.getSystemDiffEntryList()).isEmpty();
assertThat(resultMap.get(0).get(0)).isNotNull();
assertThat(resultMap.get(0).get(DataProcessor.SELECTED_INDEX_ALL)).isNotNull();
@@ -1129,44 +1463,69 @@
@Test
public void generateBatteryUsageMap_usageTimeExceed_returnsExpectedResult() {
- final long[] batteryHistoryKeys = new long[]{
- 1641052800000L, // 2022-01-02 00:00:00
- 1641056400000L, // 2022-01-02 01:00:00
- 1641060000000L // 2022-01-02 02:00:00
- };
+ final long[] batteryHistoryKeys =
+ new long[] {
+ 1641052800000L, // 2022-01-02 00:00:00
+ 1641056400000L, // 2022-01-02 01:00:00
+ 1641060000000L // 2022-01-02 02:00:00
+ };
final Map<Long, Map<String, BatteryHistEntry>> batteryHistoryMap = new HashMap<>();
final int currentUserId = mContext.getUserId();
// Adds the index = 0 data.
Map<String, BatteryHistEntry> entryMap = new HashMap<>();
- BatteryHistEntry entry = createBatteryHistEntry(
- "package1", "label1", /*consumePower=*/ 0,
- /*foregroundUsageConsumePower=*/ 0, /*foregroundServiceUsageConsumePower=*/ 0,
- /*backgroundUsageConsumePower=*/ 0, /*cachedUsageConsumePower=*/ 0,
- /*uid=*/ 1L, currentUserId,
- ConvertUtils.CONSUMER_TYPE_UID_BATTERY, /*foregroundUsageTimeInMs=*/ 0L,
- /*backgroundUsageTimeInMs=*/ 0L, /*isHidden=*/ false);
+ BatteryHistEntry entry =
+ createBatteryHistEntry(
+ "package1",
+ "label1",
+ /* consumePower= */ 0,
+ /* foregroundUsageConsumePower= */ 0,
+ /* foregroundServiceUsageConsumePower= */ 0,
+ /* backgroundUsageConsumePower= */ 0,
+ /* cachedUsageConsumePower= */ 0,
+ /* uid= */ 1L,
+ currentUserId,
+ ConvertUtils.CONSUMER_TYPE_UID_BATTERY,
+ /* foregroundUsageTimeInMs= */ 0L,
+ /* backgroundUsageTimeInMs= */ 0L,
+ /* isHidden= */ false);
entryMap.put(entry.getKey(), entry);
batteryHistoryMap.put(batteryHistoryKeys[0], entryMap);
// Adds the index = 1 data.
entryMap = new HashMap<>();
- entry = createBatteryHistEntry(
- "package1", "label1", /*consumePower=*/ 0,
- /*foregroundUsageConsumePower=*/ 0, /*foregroundServiceUsageConsumePower=*/ 0,
- /*backgroundUsageConsumePower=*/ 0, /*cachedUsageConsumePower=*/ 0,
- /*uid=*/ 1L, currentUserId,
- ConvertUtils.CONSUMER_TYPE_UID_BATTERY, /*foregroundUsageTimeInMs=*/ 0L,
- /*backgroundUsageTimeInMs=*/ 0L, /*isHidden=*/ false);
+ entry =
+ createBatteryHistEntry(
+ "package1",
+ "label1",
+ /* consumePower= */ 0,
+ /* foregroundUsageConsumePower= */ 0,
+ /* foregroundServiceUsageConsumePower= */ 0,
+ /* backgroundUsageConsumePower= */ 0,
+ /* cachedUsageConsumePower= */ 0,
+ /* uid= */ 1L,
+ currentUserId,
+ ConvertUtils.CONSUMER_TYPE_UID_BATTERY,
+ /* foregroundUsageTimeInMs= */ 0L,
+ /* backgroundUsageTimeInMs= */ 0L,
+ /* isHidden= */ false);
entryMap.put(entry.getKey(), entry);
batteryHistoryMap.put(batteryHistoryKeys[1], entryMap);
// Adds the index = 2 data.
entryMap = new HashMap<>();
- entry = createBatteryHistEntry(
- "package1", "label1", /*consumePower=*/ 500.0,
- /*foregroundUsageConsumePower=*/ 200, /*foregroundServiceUsageConsumePower=*/ 100,
- /*backgroundUsageConsumePower=*/ 100, /*cachedUsageConsumePower=*/ 100,
- /*uid=*/ 1L, currentUserId,
- ConvertUtils.CONSUMER_TYPE_UID_BATTERY, /*foregroundUsageTimeInMs=*/ 3600000L,
- /*backgroundUsageTimeInMs=*/ 7200000L, /*isHidden=*/ false);
+ entry =
+ createBatteryHistEntry(
+ "package1",
+ "label1",
+ /* consumePower= */ 500.0,
+ /* foregroundUsageConsumePower= */ 200,
+ /* foregroundServiceUsageConsumePower= */ 100,
+ /* backgroundUsageConsumePower= */ 100,
+ /* cachedUsageConsumePower= */ 100,
+ /* uid= */ 1L,
+ currentUserId,
+ ConvertUtils.CONSUMER_TYPE_UID_BATTERY,
+ /* foregroundUsageTimeInMs= */ 3600000L,
+ /* backgroundUsageTimeInMs= */ 7200000L,
+ /* isHidden= */ false);
entryMap.put(entry.getKey(), entry);
batteryHistoryMap.put(batteryHistoryKeys[2], entryMap);
final BatteryLevelData batteryLevelData = generateBatteryLevelData(batteryHistoryKeys);
@@ -1185,9 +1544,13 @@
final Map<Integer, Map<Integer, BatteryDiffData>> resultMap =
DataProcessor.generateBatteryUsageMap(
mContext,
- DataProcessor.getBatteryDiffDataMap(mContext,
- batteryLevelData.getHourlyBatteryLevelsPerDay(), batteryHistoryMap,
- appUsagePeriodMap, Set.of(), Set.of()),
+ DataProcessor.getBatteryDiffDataMap(
+ mContext,
+ batteryLevelData.getHourlyBatteryLevelsPerDay(),
+ batteryHistoryMap,
+ appUsagePeriodMap,
+ Set.of(),
+ Set.of()),
batteryLevelData);
final BatteryDiffData resultDiffData =
@@ -1200,10 +1563,8 @@
final BatteryDiffEntry resultEntry = resultDiffData.getAppDiffEntryList().get(0);
assertThat(resultEntry.mForegroundUsageTimeInMs)
.isEqualTo(Math.round(entry.mForegroundUsageTimeInMs * ratio));
- assertThat(resultEntry.mBackgroundUsageTimeInMs)
- .isEqualTo(0);
- assertThat(resultEntry.mConsumePower)
- .isEqualTo(entry.mConsumePower * ratio);
+ assertThat(resultEntry.mBackgroundUsageTimeInMs).isEqualTo(0);
+ assertThat(resultEntry.mConsumePower).isEqualTo(entry.mConsumePower * ratio);
assertThat(resultEntry.mForegroundUsageConsumePower)
.isEqualTo(entry.mForegroundUsageConsumePower * ratio);
assertThat(resultEntry.mForegroundServiceUsageConsumePower)
@@ -1219,80 +1580,132 @@
@Test
public void generateBatteryUsageMap_hideApplicationEntries_returnsExpectedResult() {
- final long[] batteryHistoryKeys = new long[]{
- 1641052800000L, // 2022-01-02 00:00:00
- 1641056400000L, // 2022-01-02 01:00:00
- 1641060000000L // 2022-01-02 02:00:00
- };
+ final long[] batteryHistoryKeys =
+ new long[] {
+ 1641052800000L, // 2022-01-02 00:00:00
+ 1641056400000L, // 2022-01-02 01:00:00
+ 1641060000000L // 2022-01-02 02:00:00
+ };
final Map<Long, Map<String, BatteryHistEntry>> batteryHistoryMap = new HashMap<>();
final int currentUserId = mContext.getUserId();
// Adds the index = 0 data.
Map<String, BatteryHistEntry> entryMap = new HashMap<>();
- BatteryHistEntry entry = createBatteryHistEntry(
- "package1", "label1", /*consumePower=*/ 0,
- /*foregroundUsageConsumePower=*/ 0, /*foregroundServiceUsageConsumePower=*/ 0,
- /*backgroundUsageConsumePower=*/ 0, /*cachedUsageConsumePower=*/ 0,
- /*uid=*/ 1L, currentUserId,
- ConvertUtils.CONSUMER_TYPE_UID_BATTERY, /*foregroundUsageTimeInMs=*/ 0L,
- /*backgroundUsageTimeInMs=*/ 0L, /*isHidden=*/ false);
+ BatteryHistEntry entry =
+ createBatteryHistEntry(
+ "package1",
+ "label1",
+ /* consumePower= */ 0,
+ /* foregroundUsageConsumePower= */ 0,
+ /* foregroundServiceUsageConsumePower= */ 0,
+ /* backgroundUsageConsumePower= */ 0,
+ /* cachedUsageConsumePower= */ 0,
+ /* uid= */ 1L,
+ currentUserId,
+ ConvertUtils.CONSUMER_TYPE_UID_BATTERY,
+ /* foregroundUsageTimeInMs= */ 0L,
+ /* backgroundUsageTimeInMs= */ 0L,
+ /* isHidden= */ false);
entryMap.put(entry.getKey(), entry);
- entry = createBatteryHistEntry(
- "package2", "label2", /*consumePower=*/ 0,
- /*foregroundUsageConsumePower=*/ 0, /*foregroundServiceUsageConsumePower=*/ 0,
- /*backgroundUsageConsumePower=*/ 0, /*cachedUsageConsumePower=*/ 0,
- /*uid=*/ 2L, currentUserId,
- ConvertUtils.CONSUMER_TYPE_UID_BATTERY, /*foregroundUsageTimeInMs=*/ 0L,
- /*backgroundUsageTimeInMs=*/ 0L, /*isHidden=*/ false);
+ entry =
+ createBatteryHistEntry(
+ "package2",
+ "label2",
+ /* consumePower= */ 0,
+ /* foregroundUsageConsumePower= */ 0,
+ /* foregroundServiceUsageConsumePower= */ 0,
+ /* backgroundUsageConsumePower= */ 0,
+ /* cachedUsageConsumePower= */ 0,
+ /* uid= */ 2L,
+ currentUserId,
+ ConvertUtils.CONSUMER_TYPE_UID_BATTERY,
+ /* foregroundUsageTimeInMs= */ 0L,
+ /* backgroundUsageTimeInMs= */ 0L,
+ /* isHidden= */ false);
entryMap.put(entry.getKey(), entry);
batteryHistoryMap.put(batteryHistoryKeys[0], entryMap);
// Adds the index = 1 data.
entryMap = new HashMap<>();
- entry = createBatteryHistEntry(
- "package1", "label1", /*consumePower=*/ 0,
- /*foregroundUsageConsumePower=*/ 0, /*foregroundServiceUsageConsumePower=*/ 0,
- /*backgroundUsageConsumePower=*/ 0, /*cachedUsageConsumePower=*/ 0,
- /*uid=*/ 1L, currentUserId,
- ConvertUtils.CONSUMER_TYPE_UID_BATTERY, /*foregroundUsageTimeInMs=*/ 0L,
- /*backgroundUsageTimeInMs=*/ 0L, /*isHidden=*/ false);
+ entry =
+ createBatteryHistEntry(
+ "package1",
+ "label1",
+ /* consumePower= */ 0,
+ /* foregroundUsageConsumePower= */ 0,
+ /* foregroundServiceUsageConsumePower= */ 0,
+ /* backgroundUsageConsumePower= */ 0,
+ /* cachedUsageConsumePower= */ 0,
+ /* uid= */ 1L,
+ currentUserId,
+ ConvertUtils.CONSUMER_TYPE_UID_BATTERY,
+ /* foregroundUsageTimeInMs= */ 0L,
+ /* backgroundUsageTimeInMs= */ 0L,
+ /* isHidden= */ false);
entryMap.put(entry.getKey(), entry);
- entry = createBatteryHistEntry(
- "package2", "label2", /*consumePower=*/ 0,
- /*foregroundUsageConsumePower=*/ 0, /*foregroundServiceUsageConsumePower=*/ 0,
- /*backgroundUsageConsumePower=*/ 0, /*cachedUsageConsumePower=*/ 0,
- /*uid=*/ 2L, currentUserId,
- ConvertUtils.CONSUMER_TYPE_UID_BATTERY, /*foregroundUsageTimeInMs=*/ 0L,
- /*backgroundUsageTimeInMs=*/ 0L, /*isHidden=*/ false);
+ entry =
+ createBatteryHistEntry(
+ "package2",
+ "label2",
+ /* consumePower= */ 0,
+ /* foregroundUsageConsumePower= */ 0,
+ /* foregroundServiceUsageConsumePower= */ 0,
+ /* backgroundUsageConsumePower= */ 0,
+ /* cachedUsageConsumePower= */ 0,
+ /* uid= */ 2L,
+ currentUserId,
+ ConvertUtils.CONSUMER_TYPE_UID_BATTERY,
+ /* foregroundUsageTimeInMs= */ 0L,
+ /* backgroundUsageTimeInMs= */ 0L,
+ /* isHidden= */ false);
entryMap.put(entry.getKey(), entry);
batteryHistoryMap.put(batteryHistoryKeys[1], entryMap);
// Adds the index = 2 data.
entryMap = new HashMap<>();
- entry = createBatteryHistEntry(
- "package1", "label1", /*consumePower=*/ 10.0,
- /*foregroundUsageConsumePower=*/ 5, /*foregroundServiceUsageConsumePower=*/ 5,
- /*backgroundUsageConsumePower=*/ 0, /*cachedUsageConsumePower=*/ 0,
- /*uid=*/ 1L, currentUserId,
- ConvertUtils.CONSUMER_TYPE_UID_BATTERY, /*foregroundUsageTimeInMs=*/ 10L,
- /*backgroundUsageTimeInMs=*/ 20L, /*isHidden=*/ false);
+ entry =
+ createBatteryHistEntry(
+ "package1",
+ "label1",
+ /* consumePower= */ 10.0,
+ /* foregroundUsageConsumePower= */ 5,
+ /* foregroundServiceUsageConsumePower= */ 5,
+ /* backgroundUsageConsumePower= */ 0,
+ /* cachedUsageConsumePower= */ 0,
+ /* uid= */ 1L,
+ currentUserId,
+ ConvertUtils.CONSUMER_TYPE_UID_BATTERY,
+ /* foregroundUsageTimeInMs= */ 10L,
+ /* backgroundUsageTimeInMs= */ 20L,
+ /* isHidden= */ false);
entryMap.put(entry.getKey(), entry);
- entry = createBatteryHistEntry(
- "package2", "label2", /*consumePower=*/ 10.0,
- /*foregroundUsageConsumePower=*/ 0, /*foregroundServiceUsageConsumePower=*/ 0,
- /*backgroundUsageConsumePower=*/ 5, /*cachedUsageConsumePower=*/ 5,
- /*uid=*/ 2L, currentUserId,
- ConvertUtils.CONSUMER_TYPE_UID_BATTERY, /*foregroundUsageTimeInMs=*/ 10L,
- /*backgroundUsageTimeInMs=*/ 20L, /*isHidden=*/ false);
+ entry =
+ createBatteryHistEntry(
+ "package2",
+ "label2",
+ /* consumePower= */ 10.0,
+ /* foregroundUsageConsumePower= */ 0,
+ /* foregroundServiceUsageConsumePower= */ 0,
+ /* backgroundUsageConsumePower= */ 5,
+ /* cachedUsageConsumePower= */ 5,
+ /* uid= */ 2L,
+ currentUserId,
+ ConvertUtils.CONSUMER_TYPE_UID_BATTERY,
+ /* foregroundUsageTimeInMs= */ 10L,
+ /* backgroundUsageTimeInMs= */ 20L,
+ /* isHidden= */ false);
entryMap.put(entry.getKey(), entry);
batteryHistoryMap.put(batteryHistoryKeys[2], entryMap);
final BatteryLevelData batteryLevelData = generateBatteryLevelData(batteryHistoryKeys);
- when(mPowerUsageFeatureProvider.getHideApplicationSet())
- .thenReturn(Set.of("package1"));
+ when(mPowerUsageFeatureProvider.getHideApplicationSet()).thenReturn(Set.of("package1"));
final Map<Integer, Map<Integer, BatteryDiffData>> resultMap =
DataProcessor.generateBatteryUsageMap(
mContext,
- DataProcessor.getBatteryDiffDataMap(mContext,
- batteryLevelData.getHourlyBatteryLevelsPerDay(), batteryHistoryMap,
- /*appUsagePeriodMap=*/ null, Set.of(), Set.of()),
+ DataProcessor.getBatteryDiffDataMap(
+ mContext,
+ batteryLevelData.getHourlyBatteryLevelsPerDay(),
+ batteryHistoryMap,
+ /* appUsagePeriodMap= */ null,
+ Set.of(),
+ Set.of()),
batteryLevelData);
final BatteryDiffData resultDiffData =
@@ -1300,78 +1713,133 @@
.get(DataProcessor.SELECTED_INDEX_ALL)
.get(DataProcessor.SELECTED_INDEX_ALL);
assertBatteryDiffEntry(
- resultDiffData.getAppDiffEntryList().get(0), currentUserId, /*uid=*/ 2L,
- ConvertUtils.CONSUMER_TYPE_UID_BATTERY, /*consumePercentage=*/ 100.0,
- /*foregroundUsageConsumePower=*/ 0, /*foregroundServiceUsageConsumePower=*/ 0,
- /*backgroundUsageConsumePower=*/ 5, /*cachedUsageConsumePower=*/ 5,
- /*foregroundUsageTimeInMs=*/ 10, /*backgroundUsageTimeInMs=*/ 20,
- /*screenOnTimeInMs=*/ 0);
+ resultDiffData.getAppDiffEntryList().get(0),
+ currentUserId,
+ /* uid= */ 2L,
+ ConvertUtils.CONSUMER_TYPE_UID_BATTERY,
+ /* consumePercentage= */ 100.0,
+ /* foregroundUsageConsumePower= */ 0,
+ /* foregroundServiceUsageConsumePower= */ 0,
+ /* backgroundUsageConsumePower= */ 5,
+ /* cachedUsageConsumePower= */ 5,
+ /* foregroundUsageTimeInMs= */ 10,
+ /* backgroundUsageTimeInMs= */ 20,
+ /* screenOnTimeInMs= */ 0);
}
@Test
public void generateBatteryUsageMap_hideBackgroundUsageTime_returnsExpectedResult() {
- final long[] batteryHistoryKeys = new long[]{
- 1641052800000L, // 2022-01-02 00:00:00
- 1641056400000L, // 2022-01-02 01:00:00
- 1641060000000L // 2022-01-02 02:00:00
- };
+ final long[] batteryHistoryKeys =
+ new long[] {
+ 1641052800000L, // 2022-01-02 00:00:00
+ 1641056400000L, // 2022-01-02 01:00:00
+ 1641060000000L // 2022-01-02 02:00:00
+ };
final Map<Long, Map<String, BatteryHistEntry>> batteryHistoryMap = new HashMap<>();
final int currentUserId = mContext.getUserId();
// Adds the index = 0 data.
Map<String, BatteryHistEntry> entryMap = new HashMap<>();
- BatteryHistEntry entry = createBatteryHistEntry(
- "package1", "label1", /*consumePower=*/ 0,
- /*foregroundUsageConsumePower=*/ 0, /*foregroundServiceUsageConsumePower=*/ 0,
- /*backgroundUsageConsumePower=*/ 0, /*cachedUsageConsumePower=*/ 0,
- /*uid=*/ 1L, currentUserId,
- ConvertUtils.CONSUMER_TYPE_UID_BATTERY, /*foregroundUsageTimeInMs=*/ 0L,
- /*backgroundUsageTimeInMs=*/ 0L, /*isHidden=*/ false);
+ BatteryHistEntry entry =
+ createBatteryHistEntry(
+ "package1",
+ "label1",
+ /* consumePower= */ 0,
+ /* foregroundUsageConsumePower= */ 0,
+ /* foregroundServiceUsageConsumePower= */ 0,
+ /* backgroundUsageConsumePower= */ 0,
+ /* cachedUsageConsumePower= */ 0,
+ /* uid= */ 1L,
+ currentUserId,
+ ConvertUtils.CONSUMER_TYPE_UID_BATTERY,
+ /* foregroundUsageTimeInMs= */ 0L,
+ /* backgroundUsageTimeInMs= */ 0L,
+ /* isHidden= */ false);
entryMap.put(entry.getKey(), entry);
- entry = createBatteryHistEntry(
- "package2", "label2", /*consumePower=*/ 0,
- /*foregroundUsageConsumePower=*/ 0, /*foregroundServiceUsageConsumePower=*/ 0,
- /*backgroundUsageConsumePower=*/ 0, /*cachedUsageConsumePower=*/ 0,
- /*uid=*/ 2L, currentUserId,
- ConvertUtils.CONSUMER_TYPE_UID_BATTERY, /*foregroundUsageTimeInMs=*/ 0L,
- /*backgroundUsageTimeInMs=*/ 0L, /*isHidden=*/ false);
+ entry =
+ createBatteryHistEntry(
+ "package2",
+ "label2",
+ /* consumePower= */ 0,
+ /* foregroundUsageConsumePower= */ 0,
+ /* foregroundServiceUsageConsumePower= */ 0,
+ /* backgroundUsageConsumePower= */ 0,
+ /* cachedUsageConsumePower= */ 0,
+ /* uid= */ 2L,
+ currentUserId,
+ ConvertUtils.CONSUMER_TYPE_UID_BATTERY,
+ /* foregroundUsageTimeInMs= */ 0L,
+ /* backgroundUsageTimeInMs= */ 0L,
+ /* isHidden= */ false);
entryMap.put(entry.getKey(), entry);
batteryHistoryMap.put(batteryHistoryKeys[0], entryMap);
// Adds the index = 1 data.
entryMap = new HashMap<>();
- entry = createBatteryHistEntry(
- "package1", "label1", /*consumePower=*/ 0,
- /*foregroundUsageConsumePower=*/ 0, /*foregroundServiceUsageConsumePower=*/ 0,
- /*backgroundUsageConsumePower=*/ 0, /*cachedUsageConsumePower=*/ 0,
- /*uid=*/ 1L, currentUserId,
- ConvertUtils.CONSUMER_TYPE_UID_BATTERY, /*foregroundUsageTimeInMs=*/ 0L,
- /*backgroundUsageTimeInMs=*/ 0L, /*isHidden=*/ false);
+ entry =
+ createBatteryHistEntry(
+ "package1",
+ "label1",
+ /* consumePower= */ 0,
+ /* foregroundUsageConsumePower= */ 0,
+ /* foregroundServiceUsageConsumePower= */ 0,
+ /* backgroundUsageConsumePower= */ 0,
+ /* cachedUsageConsumePower= */ 0,
+ /* uid= */ 1L,
+ currentUserId,
+ ConvertUtils.CONSUMER_TYPE_UID_BATTERY,
+ /* foregroundUsageTimeInMs= */ 0L,
+ /* backgroundUsageTimeInMs= */ 0L,
+ /* isHidden= */ false);
entryMap.put(entry.getKey(), entry);
- entry = createBatteryHistEntry(
- "package2", "label2", /*consumePower=*/ 0,
- /*foregroundUsageConsumePower=*/ 0, /*foregroundServiceUsageConsumePower=*/ 0,
- /*backgroundUsageConsumePower=*/ 0, /*cachedUsageConsumePower=*/ 0,
- /*uid=*/ 2L, currentUserId,
- ConvertUtils.CONSUMER_TYPE_UID_BATTERY, /*foregroundUsageTimeInMs=*/ 0L,
- /*backgroundUsageTimeInMs=*/ 0L, /*isHidden=*/ false);
+ entry =
+ createBatteryHistEntry(
+ "package2",
+ "label2",
+ /* consumePower= */ 0,
+ /* foregroundUsageConsumePower= */ 0,
+ /* foregroundServiceUsageConsumePower= */ 0,
+ /* backgroundUsageConsumePower= */ 0,
+ /* cachedUsageConsumePower= */ 0,
+ /* uid= */ 2L,
+ currentUserId,
+ ConvertUtils.CONSUMER_TYPE_UID_BATTERY,
+ /* foregroundUsageTimeInMs= */ 0L,
+ /* backgroundUsageTimeInMs= */ 0L,
+ /* isHidden= */ false);
entryMap.put(entry.getKey(), entry);
batteryHistoryMap.put(batteryHistoryKeys[1], entryMap);
// Adds the index = 2 data.
entryMap = new HashMap<>();
- entry = createBatteryHistEntry(
- "package1", "label1", /*consumePower=*/ 10.0,
- /*foregroundUsageConsumePower=*/ 5, /*foregroundServiceUsageConsumePower=*/ 5,
- /*backgroundUsageConsumePower=*/ 0, /*cachedUsageConsumePower=*/ 0,
- /*uid=*/ 1L, currentUserId,
- ConvertUtils.CONSUMER_TYPE_UID_BATTERY, /*foregroundUsageTimeInMs=*/ 10L,
- /*backgroundUsageTimeInMs=*/ 20L, /*isHidden=*/ false);
+ entry =
+ createBatteryHistEntry(
+ "package1",
+ "label1",
+ /* consumePower= */ 10.0,
+ /* foregroundUsageConsumePower= */ 5,
+ /* foregroundServiceUsageConsumePower= */ 5,
+ /* backgroundUsageConsumePower= */ 0,
+ /* cachedUsageConsumePower= */ 0,
+ /* uid= */ 1L,
+ currentUserId,
+ ConvertUtils.CONSUMER_TYPE_UID_BATTERY,
+ /* foregroundUsageTimeInMs= */ 10L,
+ /* backgroundUsageTimeInMs= */ 20L,
+ /* isHidden= */ false);
entryMap.put(entry.getKey(), entry);
- entry = createBatteryHistEntry(
- "package2", "label2", /*consumePower=*/ 10.0,
- /*foregroundUsageConsumePower=*/ 0, /*foregroundServiceUsageConsumePower=*/ 0,
- /*backgroundUsageConsumePower=*/ 5, /*cachedUsageConsumePower=*/ 5,
- /*uid=*/ 2L, currentUserId,
- ConvertUtils.CONSUMER_TYPE_UID_BATTERY, /*foregroundUsageTimeInMs=*/ 10L,
- /*backgroundUsageTimeInMs=*/ 20L, /*isHidden=*/ false);
+ entry =
+ createBatteryHistEntry(
+ "package2",
+ "label2",
+ /* consumePower= */ 10.0,
+ /* foregroundUsageConsumePower= */ 0,
+ /* foregroundServiceUsageConsumePower= */ 0,
+ /* backgroundUsageConsumePower= */ 5,
+ /* cachedUsageConsumePower= */ 5,
+ /* uid= */ 2L,
+ currentUserId,
+ ConvertUtils.CONSUMER_TYPE_UID_BATTERY,
+ /* foregroundUsageTimeInMs= */ 10L,
+ /* backgroundUsageTimeInMs= */ 20L,
+ /* isHidden= */ false);
entryMap.put(entry.getKey(), entry);
batteryHistoryMap.put(batteryHistoryKeys[2], entryMap);
final BatteryLevelData batteryLevelData = generateBatteryLevelData(batteryHistoryKeys);
@@ -1381,9 +1849,13 @@
final Map<Integer, Map<Integer, BatteryDiffData>> resultMap =
DataProcessor.generateBatteryUsageMap(
mContext,
- DataProcessor.getBatteryDiffDataMap(mContext,
- batteryLevelData.getHourlyBatteryLevelsPerDay(), batteryHistoryMap,
- /*appUsagePeriodMap=*/ null, Set.of(), Set.of()),
+ DataProcessor.getBatteryDiffDataMap(
+ mContext,
+ batteryLevelData.getHourlyBatteryLevelsPerDay(),
+ batteryHistoryMap,
+ /* appUsagePeriodMap= */ null,
+ Set.of(),
+ Set.of()),
batteryLevelData);
final BatteryDiffData resultDiffData =
@@ -1398,11 +1870,13 @@
@Test
public void generateBatteryDiffData_emptyBatteryEntryList_returnEmptyBatteryDiffData() {
- final BatteryDiffData batteryDiffData = DataProcessor.generateBatteryDiffData(mContext,
- System.currentTimeMillis(),
- DataProcessor.convertToBatteryHistEntry(null, mBatteryUsageStats),
- /* systemAppsPackageNames= */ Set.of(),
- /* systemAppsUids= */ Set.of());
+ final BatteryDiffData batteryDiffData =
+ DataProcessor.generateBatteryDiffData(
+ mContext,
+ System.currentTimeMillis(),
+ DataProcessor.convertToBatteryHistEntry(null, mBatteryUsageStats),
+ /* systemAppsPackageNames= */ Set.of(),
+ /* systemAppsUids= */ Set.of());
assertThat(batteryDiffData.getAppDiffEntryList()).isEmpty();
assertThat(batteryDiffData.getSystemDiffEntryList()).isEmpty();
}
@@ -1450,37 +1924,60 @@
doReturn(10L).when(mMockBatteryEntry4).getTimeInBackgroundMs();
doReturn(4).when(mMockBatteryEntry4).getUid();
doReturn(ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY)
- .when(mMockBatteryEntry4).getConsumerType();
+ .when(mMockBatteryEntry4)
+ .getConsumerType();
doReturn(BatteryConsumer.POWER_COMPONENT_CAMERA)
- .when(mMockBatteryEntry4).getPowerComponentId();
+ .when(mMockBatteryEntry4)
+ .getPowerComponentId();
- final BatteryDiffData batteryDiffData = DataProcessor.generateBatteryDiffData(mContext,
- System.currentTimeMillis(),
- DataProcessor.convertToBatteryHistEntry(batteryEntryList, mBatteryUsageStats),
- /* systemAppsPackageNames= */ Set.of(),
- /* systemAppsUids= */ Set.of());
+ final BatteryDiffData batteryDiffData =
+ DataProcessor.generateBatteryDiffData(
+ mContext,
+ System.currentTimeMillis(),
+ DataProcessor.convertToBatteryHistEntry(
+ batteryEntryList, mBatteryUsageStats),
+ /* systemAppsPackageNames= */ Set.of(),
+ /* systemAppsUids= */ Set.of());
assertBatteryDiffEntry(
- batteryDiffData.getAppDiffEntryList().get(0), 0, /*uid=*/ 2L,
- ConvertUtils.CONSUMER_TYPE_UID_BATTERY, /*consumePercentage=*/ 100.0,
- /*foregroundUsageConsumePower=*/ 0.5, /*foregroundServiceUsageConsumePower=*/ 0,
- /*backgroundUsageConsumePower=*/ 0, /*cachedUsageConsumePower=*/ 0,
- /*foregroundUsageTimeInMs=*/ 20, /*backgroundUsageTimeInMs=*/ 20,
- /*screenOnTimeInMs=*/ 0);
+ batteryDiffData.getAppDiffEntryList().get(0),
+ 0,
+ /* uid= */ 2L,
+ ConvertUtils.CONSUMER_TYPE_UID_BATTERY,
+ /* consumePercentage= */ 100.0,
+ /* foregroundUsageConsumePower= */ 0.5,
+ /* foregroundServiceUsageConsumePower= */ 0,
+ /* backgroundUsageConsumePower= */ 0,
+ /* cachedUsageConsumePower= */ 0,
+ /* foregroundUsageTimeInMs= */ 20,
+ /* backgroundUsageTimeInMs= */ 20,
+ /* screenOnTimeInMs= */ 0);
assertBatteryDiffEntry(
- batteryDiffData.getAppDiffEntryList().get(1), 0, /*uid=*/ 1L,
- ConvertUtils.CONSUMER_TYPE_UID_BATTERY, /*consumePercentage=*/ 0.0,
- /*foregroundUsageConsumePower=*/ 0, /*foregroundServiceUsageConsumePower=*/ 0,
- /*backgroundUsageConsumePower=*/ 0, /*cachedUsageConsumePower=*/ 0,
- /*foregroundUsageTimeInMs=*/ 30, /*backgroundUsageTimeInMs=*/ 40,
- /*screenOnTimeInMs=*/ 0);
+ batteryDiffData.getAppDiffEntryList().get(1),
+ 0,
+ /* uid= */ 1L,
+ ConvertUtils.CONSUMER_TYPE_UID_BATTERY,
+ /* consumePercentage= */ 0.0,
+ /* foregroundUsageConsumePower= */ 0,
+ /* foregroundServiceUsageConsumePower= */ 0,
+ /* backgroundUsageConsumePower= */ 0,
+ /* cachedUsageConsumePower= */ 0,
+ /* foregroundUsageTimeInMs= */ 30,
+ /* backgroundUsageTimeInMs= */ 40,
+ /* screenOnTimeInMs= */ 0);
assertBatteryDiffEntry(
- batteryDiffData.getSystemDiffEntryList().get(0), 0, /*uid=*/ 4L,
- ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY, /*consumePercentage=*/ 100.0,
- /*foregroundUsageConsumePower=*/ 0.9, /*foregroundServiceUsageConsumePower=*/ 0.2,
- /*backgroundUsageConsumePower=*/ 0.3, /*cachedUsageConsumePower=*/ 0.1,
- /*foregroundUsageTimeInMs=*/ 10, /*backgroundUsageTimeInMs=*/ 10,
- /*screenOnTimeInMs=*/ 0);
+ batteryDiffData.getSystemDiffEntryList().get(0),
+ 0,
+ /* uid= */ 4L,
+ ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY,
+ /* consumePercentage= */ 100.0,
+ /* foregroundUsageConsumePower= */ 0.9,
+ /* foregroundServiceUsageConsumePower= */ 0.2,
+ /* backgroundUsageConsumePower= */ 0.3,
+ /* cachedUsageConsumePower= */ 0.1,
+ /* foregroundUsageTimeInMs= */ 10,
+ /* backgroundUsageTimeInMs= */ 10,
+ /* screenOnTimeInMs= */ 0);
}
@Test
@@ -1489,43 +1986,91 @@
final String packageName1 = "com.android.settings1";
final String packageName2 = "com.android.settings2";
// Fake multiple instances in one package.
- appUsageEvents.add(buildAppUsageEvent(
- AppUsageEventType.ACTIVITY_RESUMED, /*timestamp=*/ 1, /*userId=*/ 1,
- /*instanceId=*/ 2, packageName1));
- appUsageEvents.add(buildAppUsageEvent(
- AppUsageEventType.ACTIVITY_STOPPED, /*timestamp=*/ 2, /*userId=*/ 1,
- /*instanceId=*/ 2, packageName1));
- appUsageEvents.add(buildAppUsageEvent(
- AppUsageEventType.ACTIVITY_RESUMED, /*timestamp=*/ 3, /*userId=*/ 1,
- /*instanceId=*/ 2, packageName1));
- appUsageEvents.add(buildAppUsageEvent(
- AppUsageEventType.ACTIVITY_STOPPED, /*timestamp=*/ 4, /*userId=*/ 1,
- /*instanceId=*/ 2, packageName1));
- appUsageEvents.add(buildAppUsageEvent(
- AppUsageEventType.ACTIVITY_RESUMED, /*timestamp=*/ 2, /*userId=*/ 1,
- /*instanceId=*/ 3, packageName1));
- appUsageEvents.add(buildAppUsageEvent(
- AppUsageEventType.ACTIVITY_STOPPED, /*timestamp=*/ 4, /*userId=*/ 1,
- /*instanceId=*/ 3, packageName1));
- appUsageEvents.add(buildAppUsageEvent(
- AppUsageEventType.ACTIVITY_RESUMED, /*timestamp=*/ 2, /*userId=*/ 1,
- /*instanceId=*/ 5, packageName2));
- appUsageEvents.add(buildAppUsageEvent(
- AppUsageEventType.ACTIVITY_STOPPED, /*timestamp=*/ 4, /*userId=*/ 1,
- /*instanceId=*/ 5, packageName2));
+ appUsageEvents.add(
+ buildAppUsageEvent(
+ AppUsageEventType.ACTIVITY_RESUMED,
+ /* timestamp= */ 1,
+ /* userId= */ 1,
+ /* instanceId= */ 2,
+ packageName1));
+ appUsageEvents.add(
+ buildAppUsageEvent(
+ AppUsageEventType.ACTIVITY_STOPPED,
+ /* timestamp= */ 2,
+ /* userId= */ 1,
+ /* instanceId= */ 2,
+ packageName1));
+ appUsageEvents.add(
+ buildAppUsageEvent(
+ AppUsageEventType.ACTIVITY_RESUMED,
+ /* timestamp= */ 3,
+ /* userId= */ 1,
+ /* instanceId= */ 2,
+ packageName1));
+ appUsageEvents.add(
+ buildAppUsageEvent(
+ AppUsageEventType.ACTIVITY_STOPPED,
+ /* timestamp= */ 4,
+ /* userId= */ 1,
+ /* instanceId= */ 2,
+ packageName1));
+ appUsageEvents.add(
+ buildAppUsageEvent(
+ AppUsageEventType.ACTIVITY_RESUMED,
+ /* timestamp= */ 2,
+ /* userId= */ 1,
+ /* instanceId= */ 3,
+ packageName1));
+ appUsageEvents.add(
+ buildAppUsageEvent(
+ AppUsageEventType.ACTIVITY_STOPPED,
+ /* timestamp= */ 4,
+ /* userId= */ 1,
+ /* instanceId= */ 3,
+ packageName1));
+ appUsageEvents.add(
+ buildAppUsageEvent(
+ AppUsageEventType.ACTIVITY_RESUMED,
+ /* timestamp= */ 2,
+ /* userId= */ 1,
+ /* instanceId= */ 5,
+ packageName2));
+ appUsageEvents.add(
+ buildAppUsageEvent(
+ AppUsageEventType.ACTIVITY_STOPPED,
+ /* timestamp= */ 4,
+ /* userId= */ 1,
+ /* instanceId= */ 5,
+ packageName2));
// Fake one instance in one package.
- appUsageEvents.add(buildAppUsageEvent(
- AppUsageEventType.ACTIVITY_RESUMED, /*timestamp=*/ 1, /*userId=*/ 2,
- /*instanceId=*/ 4, packageName2));
- appUsageEvents.add(buildAppUsageEvent(
- AppUsageEventType.ACTIVITY_STOPPED, /*timestamp=*/ 2, /*userId=*/ 2,
- /*instanceId=*/ 4, packageName2));
- appUsageEvents.add(buildAppUsageEvent(
- AppUsageEventType.ACTIVITY_RESUMED, /*timestamp=*/ 3, /*userId=*/ 2,
- /*instanceId=*/ 4, packageName2));
- appUsageEvents.add(buildAppUsageEvent(
- AppUsageEventType.ACTIVITY_STOPPED, /*timestamp=*/ 4, /*userId=*/ 2,
- /*instanceId=*/ 4, packageName2));
+ appUsageEvents.add(
+ buildAppUsageEvent(
+ AppUsageEventType.ACTIVITY_RESUMED,
+ /* timestamp= */ 1,
+ /* userId= */ 2,
+ /* instanceId= */ 4,
+ packageName2));
+ appUsageEvents.add(
+ buildAppUsageEvent(
+ AppUsageEventType.ACTIVITY_STOPPED,
+ /* timestamp= */ 2,
+ /* userId= */ 2,
+ /* instanceId= */ 4,
+ packageName2));
+ appUsageEvents.add(
+ buildAppUsageEvent(
+ AppUsageEventType.ACTIVITY_RESUMED,
+ /* timestamp= */ 3,
+ /* userId= */ 2,
+ /* instanceId= */ 4,
+ packageName2));
+ appUsageEvents.add(
+ buildAppUsageEvent(
+ AppUsageEventType.ACTIVITY_STOPPED,
+ /* timestamp= */ 4,
+ /* userId= */ 2,
+ /* instanceId= */ 4,
+ packageName2));
final Map<Long, Map<String, List<AppUsagePeriod>>> appUsagePeriodMap =
DataProcessor.buildAppUsagePeriodList(
@@ -1552,65 +2097,69 @@
@Test
public void buildAppUsagePeriodList_emptyEventList_returnNull() {
- assertThat(DataProcessor.buildAppUsagePeriodList(
- mContext, new ArrayList<>(), new ArrayList<>(), 0, 1)).isNull();
+ assertThat(
+ DataProcessor.buildAppUsagePeriodList(
+ mContext, new ArrayList<>(), new ArrayList<>(), 0, 1))
+ .isNull();
}
@Test
public void buildAppUsagePeriodList_emptyActivityList_returnNull() {
final List<AppUsageEvent> appUsageEvents = new ArrayList<>();
- appUsageEvents.add(buildAppUsageEvent(
- AppUsageEventType.DEVICE_SHUTDOWN, /*timestamp=*/ 1));
- appUsageEvents.add(buildAppUsageEvent(
- AppUsageEventType.DEVICE_SHUTDOWN, /*timestamp=*/ 2));
+ appUsageEvents.add(
+ buildAppUsageEvent(AppUsageEventType.DEVICE_SHUTDOWN, /* timestamp= */ 1));
+ appUsageEvents.add(
+ buildAppUsageEvent(AppUsageEventType.DEVICE_SHUTDOWN, /* timestamp= */ 2));
- assertThat(DataProcessor.buildAppUsagePeriodList(
- mContext, appUsageEvents, new ArrayList<>(), 0, 3)).isNull();
+ assertThat(
+ DataProcessor.buildAppUsagePeriodList(
+ mContext, appUsageEvents, new ArrayList<>(), 0, 3))
+ .isNull();
}
@Test
public void buildAppUsagePeriodListPerInstance_returnExpectedResult() {
final List<AppUsageEvent> appUsageEvents = new ArrayList<>();
// Fake data earlier than time range.
- appUsageEvents.add(buildAppUsageEvent(
- AppUsageEventType.ACTIVITY_RESUMED, /*timestamp=*/ 1));
- appUsageEvents.add(buildAppUsageEvent(
- AppUsageEventType.ACTIVITY_STOPPED, /*timestamp=*/ 2));
+ appUsageEvents.add(
+ buildAppUsageEvent(AppUsageEventType.ACTIVITY_RESUMED, /* timestamp= */ 1));
+ appUsageEvents.add(
+ buildAppUsageEvent(AppUsageEventType.ACTIVITY_STOPPED, /* timestamp= */ 2));
// Fake resume event earlier than time range.
- appUsageEvents.add(buildAppUsageEvent(
- AppUsageEventType.ACTIVITY_RESUMED, /*timestamp=*/ 3));
- appUsageEvents.add(buildAppUsageEvent(
- AppUsageEventType.ACTIVITY_STOPPED, /*timestamp=*/ 120000));
+ appUsageEvents.add(
+ buildAppUsageEvent(AppUsageEventType.ACTIVITY_RESUMED, /* timestamp= */ 3));
+ appUsageEvents.add(
+ buildAppUsageEvent(AppUsageEventType.ACTIVITY_STOPPED, /* timestamp= */ 120000));
// Fake normal data.
- appUsageEvents.add(buildAppUsageEvent(
- AppUsageEventType.ACTIVITY_RESUMED, /*timestamp=*/ 150000));
- appUsageEvents.add(buildAppUsageEvent(
- AppUsageEventType.ACTIVITY_STOPPED, /*timestamp=*/ 200000));
+ appUsageEvents.add(
+ buildAppUsageEvent(AppUsageEventType.ACTIVITY_RESUMED, /* timestamp= */ 150000));
+ appUsageEvents.add(
+ buildAppUsageEvent(AppUsageEventType.ACTIVITY_STOPPED, /* timestamp= */ 200000));
// Fake two adjacent resume events.
- appUsageEvents.add(buildAppUsageEvent(
- AppUsageEventType.ACTIVITY_RESUMED, /*timestamp=*/ 300000));
- appUsageEvents.add(buildAppUsageEvent(
- AppUsageEventType.ACTIVITY_RESUMED, /*timestamp=*/ 400000));
- appUsageEvents.add(buildAppUsageEvent(
- AppUsageEventType.ACTIVITY_STOPPED, /*timestamp=*/ 500000));
+ appUsageEvents.add(
+ buildAppUsageEvent(AppUsageEventType.ACTIVITY_RESUMED, /* timestamp= */ 300000));
+ appUsageEvents.add(
+ buildAppUsageEvent(AppUsageEventType.ACTIVITY_RESUMED, /* timestamp= */ 400000));
+ appUsageEvents.add(
+ buildAppUsageEvent(AppUsageEventType.ACTIVITY_STOPPED, /* timestamp= */ 500000));
// Fake no start event when stop event happens.
- appUsageEvents.add(buildAppUsageEvent(
- AppUsageEventType.ACTIVITY_STOPPED, /*timestamp=*/ 600000));
+ appUsageEvents.add(
+ buildAppUsageEvent(AppUsageEventType.ACTIVITY_STOPPED, /* timestamp= */ 600000));
// There exists start event when device shutdown event happens. Shutdown is later than
// default complete time.
- appUsageEvents.add(buildAppUsageEvent(
- AppUsageEventType.ACTIVITY_RESUMED, /*timestamp=*/ 700000));
- appUsageEvents.add(buildAppUsageEvent(
- AppUsageEventType.DEVICE_SHUTDOWN, /*timestamp=*/ 800000));
+ appUsageEvents.add(
+ buildAppUsageEvent(AppUsageEventType.ACTIVITY_RESUMED, /* timestamp= */ 700000));
+ appUsageEvents.add(
+ buildAppUsageEvent(AppUsageEventType.DEVICE_SHUTDOWN, /* timestamp= */ 800000));
// There exists start event when device shutdown event happens. Shutdown is earlier than
// default complete time.
- appUsageEvents.add(buildAppUsageEvent(
- AppUsageEventType.ACTIVITY_RESUMED, /*timestamp=*/ 900000));
- appUsageEvents.add(buildAppUsageEvent(
- AppUsageEventType.DEVICE_SHUTDOWN, /*timestamp=*/ 910000));
+ appUsageEvents.add(
+ buildAppUsageEvent(AppUsageEventType.ACTIVITY_RESUMED, /* timestamp= */ 900000));
+ appUsageEvents.add(
+ buildAppUsageEvent(AppUsageEventType.DEVICE_SHUTDOWN, /* timestamp= */ 910000));
// There exists start event when the period ends.
- appUsageEvents.add(buildAppUsageEvent(
- AppUsageEventType.ACTIVITY_RESUMED, /*timestamp=*/ 1000000));
+ appUsageEvents.add(
+ buildAppUsageEvent(AppUsageEventType.ACTIVITY_RESUMED, /* timestamp= */ 1000000));
final List<AppUsagePeriod> appUsagePeriodList =
DataProcessor.buildAppUsagePeriodListPerInstance(appUsageEvents, 100000, 1100000);
@@ -1627,17 +2176,26 @@
@Test
public void excludePowerConnectedTime_startEndNotCharging_returnExpectedResult() {
- final List<AppUsagePeriod> appUsagePeriodList = List.of(
- AppUsagePeriod.newBuilder().setStartTime(100).setEndTime(200).build());
- final List<BatteryEvent> batteryEventList = List.of(
- BatteryEvent.newBuilder().setTimestamp(50).setType(
- BatteryEventType.POWER_DISCONNECTED).build(),
- BatteryEvent.newBuilder().setTimestamp(166).setType(
- BatteryEventType.POWER_CONNECTED).build(),
- BatteryEvent.newBuilder().setTimestamp(188).setType(
- BatteryEventType.POWER_DISCONNECTED).build(),
- BatteryEvent.newBuilder().setTimestamp(280).setType(
- BatteryEventType.POWER_CONNECTED).build());
+ final List<AppUsagePeriod> appUsagePeriodList =
+ List.of(AppUsagePeriod.newBuilder().setStartTime(100).setEndTime(200).build());
+ final List<BatteryEvent> batteryEventList =
+ List.of(
+ BatteryEvent.newBuilder()
+ .setTimestamp(50)
+ .setType(BatteryEventType.POWER_DISCONNECTED)
+ .build(),
+ BatteryEvent.newBuilder()
+ .setTimestamp(166)
+ .setType(BatteryEventType.POWER_CONNECTED)
+ .build(),
+ BatteryEvent.newBuilder()
+ .setTimestamp(188)
+ .setType(BatteryEventType.POWER_DISCONNECTED)
+ .build(),
+ BatteryEvent.newBuilder()
+ .setTimestamp(280)
+ .setType(BatteryEventType.POWER_CONNECTED)
+ .build());
final List<AppUsagePeriod> resultList =
DataProcessor.excludePowerConnectedTimeFromAppUsagePeriodList(
@@ -1650,21 +2208,34 @@
@Test
public void excludePowerConnectedTime_startEndInCharging_returnExpectedResult() {
- final List<AppUsagePeriod> appUsagePeriodList = List.of(
- AppUsagePeriod.newBuilder().setStartTime(100).setEndTime(200).build());
- final List<BatteryEvent> batteryEventList = List.of(
- BatteryEvent.newBuilder().setTimestamp(50).setType(
- BatteryEventType.POWER_DISCONNECTED).build(),
- BatteryEvent.newBuilder().setTimestamp(80).setType(
- BatteryEventType.POWER_CONNECTED).build(),
- BatteryEvent.newBuilder().setTimestamp(120).setType(
- BatteryEventType.POWER_DISCONNECTED).build(),
- BatteryEvent.newBuilder().setTimestamp(150).setType(
- BatteryEventType.POWER_CONNECTED).build(),
- BatteryEvent.newBuilder().setTimestamp(160).setType(
- BatteryEventType.POWER_DISCONNECTED).build(),
- BatteryEvent.newBuilder().setTimestamp(180).setType(
- BatteryEventType.POWER_CONNECTED).build());
+ final List<AppUsagePeriod> appUsagePeriodList =
+ List.of(AppUsagePeriod.newBuilder().setStartTime(100).setEndTime(200).build());
+ final List<BatteryEvent> batteryEventList =
+ List.of(
+ BatteryEvent.newBuilder()
+ .setTimestamp(50)
+ .setType(BatteryEventType.POWER_DISCONNECTED)
+ .build(),
+ BatteryEvent.newBuilder()
+ .setTimestamp(80)
+ .setType(BatteryEventType.POWER_CONNECTED)
+ .build(),
+ BatteryEvent.newBuilder()
+ .setTimestamp(120)
+ .setType(BatteryEventType.POWER_DISCONNECTED)
+ .build(),
+ BatteryEvent.newBuilder()
+ .setTimestamp(150)
+ .setType(BatteryEventType.POWER_CONNECTED)
+ .build(),
+ BatteryEvent.newBuilder()
+ .setTimestamp(160)
+ .setType(BatteryEventType.POWER_DISCONNECTED)
+ .build(),
+ BatteryEvent.newBuilder()
+ .setTimestamp(180)
+ .setType(BatteryEventType.POWER_CONNECTED)
+ .build());
final List<AppUsagePeriod> resultList =
DataProcessor.excludePowerConnectedTimeFromAppUsagePeriodList(
@@ -1677,13 +2248,18 @@
@Test
public void excludePowerConnectedTime_wholePeriodNotCharging_returnExpectedResult() {
- final List<AppUsagePeriod> appUsagePeriodList = List.of(
- AppUsagePeriod.newBuilder().setStartTime(100).setEndTime(200).build());
- final List<BatteryEvent> batteryEventList = List.of(
- BatteryEvent.newBuilder().setTimestamp(50).setType(
- BatteryEventType.POWER_DISCONNECTED).build(),
- BatteryEvent.newBuilder().setTimestamp(80).setType(
- BatteryEventType.POWER_CONNECTED).build());
+ final List<AppUsagePeriod> appUsagePeriodList =
+ List.of(AppUsagePeriod.newBuilder().setStartTime(100).setEndTime(200).build());
+ final List<BatteryEvent> batteryEventList =
+ List.of(
+ BatteryEvent.newBuilder()
+ .setTimestamp(50)
+ .setType(BatteryEventType.POWER_DISCONNECTED)
+ .build(),
+ BatteryEvent.newBuilder()
+ .setTimestamp(80)
+ .setType(BatteryEventType.POWER_CONNECTED)
+ .build());
final List<AppUsagePeriod> resultList =
DataProcessor.excludePowerConnectedTimeFromAppUsagePeriodList(
@@ -1694,11 +2270,14 @@
@Test
public void excludePowerConnectedTime_wholePeriodInCharging_returnExpectedResult() {
- final List<AppUsagePeriod> appUsagePeriodList = List.of(
- AppUsagePeriod.newBuilder().setStartTime(100).setEndTime(200).build());
- final List<BatteryEvent> batteryEventList = List.of(
- BatteryEvent.newBuilder().setTimestamp(50).setType(
- BatteryEventType.POWER_DISCONNECTED).build());
+ final List<AppUsagePeriod> appUsagePeriodList =
+ List.of(AppUsagePeriod.newBuilder().setStartTime(100).setEndTime(200).build());
+ final List<BatteryEvent> batteryEventList =
+ List.of(
+ BatteryEvent.newBuilder()
+ .setTimestamp(50)
+ .setType(BatteryEventType.POWER_DISCONNECTED)
+ .build());
final List<AppUsagePeriod> resultList =
DataProcessor.excludePowerConnectedTimeFromAppUsagePeriodList(
@@ -1762,32 +2341,32 @@
private static ContentValues getContentValuesWithBatteryLevel(final int level) {
final ContentValues values = new ContentValues();
final DeviceBatteryState deviceBatteryState =
- DeviceBatteryState
- .newBuilder()
- .setBatteryLevel(level)
- .build();
+ DeviceBatteryState.newBuilder().setBatteryLevel(level).build();
final BatteryInformation batteryInformation =
- BatteryInformation
- .newBuilder()
- .setDeviceBatteryState(deviceBatteryState)
- .build();
- values.put(BatteryHistEntry.KEY_BATTERY_INFORMATION,
+ BatteryInformation.newBuilder().setDeviceBatteryState(deviceBatteryState).build();
+ values.put(
+ BatteryHistEntry.KEY_BATTERY_INFORMATION,
ConvertUtils.convertBatteryInformationToString(batteryInformation));
return values;
}
private static BatteryHistEntry createBatteryHistEntry(
- final String packageName, final String appLabel, final double consumePower,
+ final String packageName,
+ final String appLabel,
+ final double consumePower,
final double foregroundUsageConsumePower,
final double foregroundServiceUsageConsumePower,
- final double backgroundUsageConsumePower, final double cachedUsageConsumePower,
- final long uid, final long userId, final int consumerType,
- final long foregroundUsageTimeInMs, final long backgroundUsageTimeInMs,
+ final double backgroundUsageConsumePower,
+ final double cachedUsageConsumePower,
+ final long uid,
+ final long userId,
+ final int consumerType,
+ final long foregroundUsageTimeInMs,
+ final long backgroundUsageTimeInMs,
final boolean isHidden) {
// Only insert required fields.
final BatteryInformation batteryInformation =
- BatteryInformation
- .newBuilder()
+ BatteryInformation.newBuilder()
.setAppLabel(appLabel)
.setConsumePower(consumePower)
.setForegroundUsageConsumePower(foregroundUsageConsumePower)
@@ -1803,7 +2382,8 @@
values.put(BatteryHistEntry.KEY_UID, uid);
values.put(BatteryHistEntry.KEY_USER_ID, userId);
values.put(BatteryHistEntry.KEY_CONSUMER_TYPE, consumerType);
- values.put(BatteryHistEntry.KEY_BATTERY_INFORMATION,
+ values.put(
+ BatteryHistEntry.KEY_BATTERY_INFORMATION,
ConvertUtils.convertBatteryInformationToString(batteryInformation));
return new BatteryHistEntry(values);
}
@@ -1817,8 +2397,7 @@
return UsageEvents.CREATOR.createFromParcel(parcel);
}
- private Event getUsageEvent(
- final int eventType, final long timestamp) {
+ private Event getUsageEvent(final int eventType, final long timestamp) {
final Event event = new Event();
event.mEventType = eventType;
event.mPackage = "package";
@@ -1828,8 +2407,7 @@
private AppUsageEvent buildAppUsageEvent(final AppUsageEventType type, final long timestamp) {
return buildAppUsageEvent(
- type, timestamp, /*userId=*/ 1, /*instanceId=*/ 2,
- "com.android.settings");
+ type, timestamp, /* userId= */ 1, /* instanceId= */ 2, "com.android.settings");
}
private AppUsageEvent buildAppUsageEvent(
@@ -1848,10 +2426,7 @@
}
private AppUsagePeriod buildAppUsagePeriod(final long start, final long end) {
- return AppUsagePeriod.newBuilder()
- .setStartTime(start)
- .setEndTime(end)
- .build();
+ return AppUsagePeriod.newBuilder().setStartTime(start).setEndTime(end).build();
}
private void assertAppUsageEvent(
@@ -1918,12 +2493,17 @@
}
private static void assertBatteryDiffEntry(
- final BatteryDiffEntry entry, final long userId, final long uid,
- final int consumerType, final double consumePercentage,
+ final BatteryDiffEntry entry,
+ final long userId,
+ final long uid,
+ final int consumerType,
+ final double consumePercentage,
final double foregroundUsageConsumePower,
final double foregroundServiceUsageConsumePower,
- final double backgroundUsageConsumePower, final double cachedUsageConsumePower,
- final long foregroundUsageTimeInMs, final long backgroundUsageTimeInMs,
+ final double backgroundUsageConsumePower,
+ final double cachedUsageConsumePower,
+ final long foregroundUsageTimeInMs,
+ final long backgroundUsageTimeInMs,
final long screenOnTimeInMs) {
assertThat(entry.mUserId).isEqualTo(userId);
assertThat(entry.mUid).isEqualTo(uid);
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/DatabaseUtilsTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/DatabaseUtilsTest.java
index 12bd457..c31a2b6 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/DatabaseUtilsTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/DatabaseUtilsTest.java
@@ -117,9 +117,7 @@
.setType(AppUsageEventType.ACTIVITY_STOPPED)
.build();
final AppUsageEvent appUsageEvent3 =
- AppUsageEvent.newBuilder()
- .setType(AppUsageEventType.DEVICE_SHUTDOWN)
- .build();
+ AppUsageEvent.newBuilder().setType(AppUsageEventType.DEVICE_SHUTDOWN).build();
appUsageEventList.add(appUsageEvent1);
appUsageEventList.add(appUsageEvent2);
appUsageEventList.add(appUsageEvent3);
@@ -135,10 +133,9 @@
// Verifies the inserted ContentValues into content provider.
final ContentValues[] valuesArray =
new ContentValues[] {valuesList.get(0), valuesList.get(1)};
- verify(mMockContentResolver).bulkInsert(
- DatabaseUtils.APP_USAGE_EVENT_URI, valuesArray);
- verify(mMockContentResolver).notifyChange(
- DatabaseUtils.APP_USAGE_EVENT_URI, /*observer=*/ null);
+ verify(mMockContentResolver).bulkInsert(DatabaseUtils.APP_USAGE_EVENT_URI, valuesArray);
+ verify(mMockContentResolver)
+ .notifyChange(DatabaseUtils.APP_USAGE_EVENT_URI, /* observer= */ null);
}
@Test
@@ -161,12 +158,10 @@
final ContentValues contentValues =
DatabaseUtils.sendBatteryEventData(mContext, batteryEvent);
- assertThat(contentValues.getAsInteger(BatteryEventEntity.KEY_TIMESTAMP))
- .isEqualTo(10001L);
+ assertThat(contentValues.getAsInteger(BatteryEventEntity.KEY_TIMESTAMP)).isEqualTo(10001L);
assertThat(contentValues.getAsInteger(BatteryEventEntity.KEY_BATTERY_EVENT_TYPE))
.isEqualTo(BatteryEventType.POWER_CONNECTED.getNumber());
- assertThat(contentValues.getAsInteger(BatteryEventEntity.KEY_BATTERY_LEVEL))
- .isEqualTo(66);
+ assertThat(contentValues.getAsInteger(BatteryEventEntity.KEY_BATTERY_LEVEL)).isEqualTo(66);
// Verifies the inserted ContentValues into content provider.
verify(mMockContentResolver).insert(DatabaseUtils.BATTERY_EVENT_URI, contentValues);
}
@@ -175,9 +170,12 @@
public void sendBatteryEntryData_nullBatteryIntent_returnsNullValue() {
doReturn(null).when(mContext).registerReceiver(any(), any());
assertThat(
- DatabaseUtils.sendBatteryEntryData(
- mContext, System.currentTimeMillis(), /*batteryEntryList=*/ null,
- mBatteryUsageStats, /*isFullChargeStart=*/ false))
+ DatabaseUtils.sendBatteryEntryData(
+ mContext,
+ System.currentTimeMillis(),
+ /* batteryEntryList= */ null,
+ mBatteryUsageStats,
+ /* isFullChargeStart= */ false))
.isNull();
}
@@ -200,7 +198,7 @@
System.currentTimeMillis(),
batteryEntryList,
mBatteryUsageStats,
- /*isFullChargeStart=*/ false);
+ /* isFullChargeStart= */ false);
assertThat(valuesList).hasSize(2);
// Verifies the ContentValues content.
@@ -209,10 +207,9 @@
// Verifies the inserted ContentValues into content provider.
final ContentValues[] valuesArray =
new ContentValues[] {valuesList.get(0), valuesList.get(1)};
- verify(mMockContentResolver).bulkInsert(
- DatabaseUtils.BATTERY_CONTENT_URI, valuesArray);
- verify(mMockContentResolver).notifyChange(
- DatabaseUtils.BATTERY_CONTENT_URI, /*observer=*/ null);
+ verify(mMockContentResolver).bulkInsert(DatabaseUtils.BATTERY_CONTENT_URI, valuesArray);
+ verify(mMockContentResolver)
+ .notifyChange(DatabaseUtils.BATTERY_CONTENT_URI, /* observer= */ null);
}
@Test
@@ -225,14 +222,14 @@
System.currentTimeMillis(),
new ArrayList<>(),
mBatteryUsageStats,
- /*isFullChargeStart=*/ false);
+ /* isFullChargeStart= */ false);
assertThat(valuesList).hasSize(1);
verifyFakeBatteryEntryContentValues(valuesList.get(0));
// Verifies the inserted ContentValues into content provider.
verify(mMockContentResolver).insert(any(), any());
- verify(mMockContentResolver).notifyChange(
- DatabaseUtils.BATTERY_CONTENT_URI, /*observer=*/ null);
+ verify(mMockContentResolver)
+ .notifyChange(DatabaseUtils.BATTERY_CONTENT_URI, /* observer= */ null);
}
@Test
@@ -243,16 +240,16 @@
DatabaseUtils.sendBatteryEntryData(
mContext,
System.currentTimeMillis(),
- /*batteryEntryList=*/ null,
+ /* batteryEntryList= */ null,
mBatteryUsageStats,
- /*isFullChargeStart=*/ false);
+ /* isFullChargeStart= */ false);
assertThat(valuesList).hasSize(1);
verifyFakeBatteryEntryContentValues(valuesList.get(0));
// Verifies the inserted ContentValues into content provider.
verify(mMockContentResolver).insert(any(), any());
- verify(mMockContentResolver).notifyChange(
- DatabaseUtils.BATTERY_CONTENT_URI, /*observer=*/ null);
+ verify(mMockContentResolver)
+ .notifyChange(DatabaseUtils.BATTERY_CONTENT_URI, /* observer= */ null);
}
@Test
@@ -263,16 +260,16 @@
DatabaseUtils.sendBatteryEntryData(
mContext,
System.currentTimeMillis(),
- /*batteryEntryList=*/ null,
- /*batteryUsageStats=*/ null,
- /*isFullChargeStart=*/ false);
+ /* batteryEntryList= */ null,
+ /* batteryUsageStats= */ null,
+ /* isFullChargeStart= */ false);
assertThat(valuesList).hasSize(1);
verifyFakeBatteryEntryContentValues(valuesList.get(0));
// Verifies the inserted ContentValues into content provider.
verify(mMockContentResolver).insert(any(), any());
- verify(mMockContentResolver).notifyChange(
- DatabaseUtils.BATTERY_CONTENT_URI, /*observer=*/ null);
+ verify(mMockContentResolver)
+ .notifyChange(DatabaseUtils.BATTERY_CONTENT_URI, /* observer= */ null);
}
@Test
@@ -282,16 +279,20 @@
DatabaseUtils.sFakeSupplier = () -> cursor;
final long earliestTimestamp = 10001L;
- assertThat(DatabaseUtils.getAppUsageStartTimestampOfUser(
- mContext, /*userId=*/ 0, earliestTimestamp)).isEqualTo(earliestTimestamp);
+ assertThat(
+ DatabaseUtils.getAppUsageStartTimestampOfUser(
+ mContext, /* userId= */ 0, earliestTimestamp))
+ .isEqualTo(earliestTimestamp);
}
@Test
public void getAppUsageStartTimestampOfUser_nullCursor_returnEarliestTimestamp() {
DatabaseUtils.sFakeSupplier = () -> null;
final long earliestTimestamp = 10001L;
- assertThat(DatabaseUtils.getAppUsageStartTimestampOfUser(
- mContext, /*userId=*/ 0, earliestTimestamp)).isEqualTo(earliestTimestamp);
+ assertThat(
+ DatabaseUtils.getAppUsageStartTimestampOfUser(
+ mContext, /* userId= */ 0, earliestTimestamp))
+ .isEqualTo(earliestTimestamp);
}
@Test
@@ -304,50 +305,62 @@
DatabaseUtils.sFakeSupplier = () -> cursor;
final long earliestTimestamp1 = 1001L;
- assertThat(DatabaseUtils.getAppUsageStartTimestampOfUser(
- mContext, /*userId=*/ 0, earliestTimestamp1)).isEqualTo(returnedTimestamp + 1);
+ assertThat(
+ DatabaseUtils.getAppUsageStartTimestampOfUser(
+ mContext, /* userId= */ 0, earliestTimestamp1))
+ .isEqualTo(returnedTimestamp + 1);
final long earliestTimestamp2 = 100001L;
- assertThat(DatabaseUtils.getAppUsageStartTimestampOfUser(
- mContext, /*userId=*/ 0, earliestTimestamp2)).isEqualTo(earliestTimestamp2);
+ assertThat(
+ DatabaseUtils.getAppUsageStartTimestampOfUser(
+ mContext, /* userId= */ 0, earliestTimestamp2))
+ .isEqualTo(earliestTimestamp2);
}
@Test
public void getAppUsageEventForUsers_emptyCursorContent_returnEmptyMap() {
- final MatrixCursor cursor = new MatrixCursor(
- new String[]{
- AppUsageEventEntity.KEY_UID,
- AppUsageEventEntity.KEY_USER_ID,
- AppUsageEventEntity.KEY_PACKAGE_NAME,
- AppUsageEventEntity.KEY_TIMESTAMP,
- AppUsageEventEntity.KEY_APP_USAGE_EVENT_TYPE});
+ final MatrixCursor cursor =
+ new MatrixCursor(
+ new String[] {
+ AppUsageEventEntity.KEY_UID,
+ AppUsageEventEntity.KEY_USER_ID,
+ AppUsageEventEntity.KEY_PACKAGE_NAME,
+ AppUsageEventEntity.KEY_TIMESTAMP,
+ AppUsageEventEntity.KEY_APP_USAGE_EVENT_TYPE
+ });
DatabaseUtils.sFakeSupplier = () -> cursor;
- assertThat(DatabaseUtils.getAppUsageEventForUsers(
- mContext,
- /*calendar=*/ null,
- /*userIds=*/ new ArrayList<>(),
- /*startTimestampOfLevelData=*/ 0)).isEmpty();
+ assertThat(
+ DatabaseUtils.getAppUsageEventForUsers(
+ mContext,
+ /* calendar= */ null,
+ /* userIds= */ new ArrayList<>(),
+ /* startTimestampOfLevelData= */ 0))
+ .isEmpty();
}
@Test
public void getAppUsageEventForUsers_nullCursor_returnEmptyMap() {
DatabaseUtils.sFakeSupplier = () -> null;
- assertThat(DatabaseUtils.getAppUsageEventForUsers(
- mContext,
- /*calendar=*/ null,
- /*userIds=*/ new ArrayList<>(),
- /*startTimestampOfLevelData=*/ 0)).isEmpty();
+ assertThat(
+ DatabaseUtils.getAppUsageEventForUsers(
+ mContext,
+ /* calendar= */ null,
+ /* userIds= */ new ArrayList<>(),
+ /* startTimestampOfLevelData= */ 0))
+ .isEmpty();
}
@Test
public void getAppUsageEventForUsers_returnExpectedMap() {
final Long timestamp1 = 1001L;
final Long timestamp2 = 1002L;
- final MatrixCursor cursor = new MatrixCursor(
- new String[]{
- AppUsageEventEntity.KEY_UID,
- AppUsageEventEntity.KEY_PACKAGE_NAME,
- AppUsageEventEntity.KEY_TIMESTAMP});
+ final MatrixCursor cursor =
+ new MatrixCursor(
+ new String[] {
+ AppUsageEventEntity.KEY_UID,
+ AppUsageEventEntity.KEY_PACKAGE_NAME,
+ AppUsageEventEntity.KEY_TIMESTAMP
+ });
// Adds fake data into the cursor.
cursor.addRow(new Object[] {101L, "app name1", timestamp1});
cursor.addRow(new Object[] {101L, "app name2", timestamp2});
@@ -355,11 +368,12 @@
cursor.addRow(new Object[] {101L, "app name4", timestamp2});
DatabaseUtils.sFakeSupplier = () -> cursor;
- final List<AppUsageEvent> appUsageEventList = DatabaseUtils.getAppUsageEventForUsers(
- mContext,
- /*calendar=*/ null,
- /*userIds=*/ new ArrayList<>(),
- /*startTimestampOfLevelData=*/ 0);
+ final List<AppUsageEvent> appUsageEventList =
+ DatabaseUtils.getAppUsageEventForUsers(
+ mContext,
+ /* calendar= */ null,
+ /* userIds= */ new ArrayList<>(),
+ /* startTimestampOfLevelData= */ 0);
assertThat(appUsageEventList.get(0).getPackageName()).isEqualTo("app name1");
assertThat(appUsageEventList.get(1).getPackageName()).isEqualTo("app name2");
@@ -369,11 +383,13 @@
@Test
public void getHistoryMap_emptyCursorContent_returnEmptyMap() {
- final MatrixCursor cursor = new MatrixCursor(
- new String[] {
- BatteryHistEntry.KEY_UID,
- BatteryHistEntry.KEY_USER_ID,
- BatteryHistEntry.KEY_TIMESTAMP});
+ final MatrixCursor cursor =
+ new MatrixCursor(
+ new String[] {
+ BatteryHistEntry.KEY_UID,
+ BatteryHistEntry.KEY_USER_ID,
+ BatteryHistEntry.KEY_TIMESTAMP
+ });
DatabaseUtils.sFakeSupplier = () -> cursor;
assertThat(DatabaseUtils.getHistoryMapSinceQueryTimestamp(mContext, 0)).isEmpty();
@@ -391,14 +407,22 @@
final Long timestamp2 = Long.valueOf(1002L);
final MatrixCursor cursor = getMatrixCursor();
// Adds fake data into the cursor.
- cursor.addRow(new Object[] {
- "app name1", timestamp1, 1, ConvertUtils.CONSUMER_TYPE_UID_BATTERY, true});
- cursor.addRow(new Object[] {
- "app name2", timestamp2, 2, ConvertUtils.CONSUMER_TYPE_UID_BATTERY, false});
- cursor.addRow(new Object[] {
- "app name3", timestamp2, 3, ConvertUtils.CONSUMER_TYPE_UID_BATTERY, false});
- cursor.addRow(new Object[] {
- "app name4", timestamp2, 4, ConvertUtils.CONSUMER_TYPE_UID_BATTERY, false});
+ cursor.addRow(
+ new Object[] {
+ "app name1", timestamp1, 1, ConvertUtils.CONSUMER_TYPE_UID_BATTERY, true
+ });
+ cursor.addRow(
+ new Object[] {
+ "app name2", timestamp2, 2, ConvertUtils.CONSUMER_TYPE_UID_BATTERY, false
+ });
+ cursor.addRow(
+ new Object[] {
+ "app name3", timestamp2, 3, ConvertUtils.CONSUMER_TYPE_UID_BATTERY, false
+ });
+ cursor.addRow(
+ new Object[] {
+ "app name4", timestamp2, 4, ConvertUtils.CONSUMER_TYPE_UID_BATTERY, false
+ });
DatabaseUtils.sFakeSupplier = () -> cursor;
final Map<Long, Map<String, BatteryHistEntry>> batteryHistMap =
@@ -421,8 +445,9 @@
public void getHistoryMap_withWorkProfile_returnExpectedMap()
throws PackageManager.NameNotFoundException {
doReturn("com.fake.package").when(mContext).getPackageName();
- doReturn(mMockContext).when(mContext).createPackageContextAsUser(
- "com.fake.package", /*flags=*/ 0, UserHandle.OWNER);
+ doReturn(mMockContext)
+ .when(mContext)
+ .createPackageContextAsUser("com.fake.package", /* flags= */ 0, UserHandle.OWNER);
doReturn(UserHandle.CURRENT).when(mContext).getUser();
doReturn(mUserManager).when(mContext).getSystemService(UserManager.class);
doReturn(true).when(mUserManager).isManagedProfile();
@@ -440,9 +465,8 @@
public void removeUsageSource_hasNoData() {
DatabaseUtils.removeUsageSource(mContext);
assertThat(
- DatabaseUtils
- .getSharedPreferences(mContext)
- .contains(DatabaseUtils.KEY_LAST_USAGE_SOURCE))
+ DatabaseUtils.getSharedPreferences(mContext)
+ .contains(DatabaseUtils.KEY_LAST_USAGE_SOURCE))
.isFalse();
}
@@ -457,9 +481,8 @@
DatabaseUtils.removeUsageSource(mContext);
assertThat(
- DatabaseUtils
- .getSharedPreferences(mContext)
- .contains(DatabaseUtils.KEY_LAST_USAGE_SOURCE))
+ DatabaseUtils.getSharedPreferences(mContext)
+ .contains(DatabaseUtils.KEY_LAST_USAGE_SOURCE))
.isFalse();
}
@@ -482,9 +505,10 @@
assertThat(DatabaseUtils.getUsageSource(mContext, mUsageStatsManager))
.isEqualTo(USAGE_SOURCE_TASK_ROOT_ACTIVITY);
assertThat(
- DatabaseUtils
- .getSharedPreferences(mContext)
- .getInt(DatabaseUtils.KEY_LAST_USAGE_SOURCE, USAGE_SOURCE_CURRENT_ACTIVITY))
+ DatabaseUtils.getSharedPreferences(mContext)
+ .getInt(
+ DatabaseUtils.KEY_LAST_USAGE_SOURCE,
+ USAGE_SOURCE_CURRENT_ACTIVITY))
.isEqualTo(USAGE_SOURCE_TASK_ROOT_ACTIVITY);
}
@@ -495,9 +519,10 @@
assertThat(DatabaseUtils.getUsageSource(mContext, mUsageStatsManager))
.isEqualTo(USAGE_SOURCE_CURRENT_ACTIVITY);
assertThat(
- DatabaseUtils
- .getSharedPreferences(mContext)
- .getInt(DatabaseUtils.KEY_LAST_USAGE_SOURCE, USAGE_SOURCE_CURRENT_ACTIVITY))
+ DatabaseUtils.getSharedPreferences(mContext)
+ .getInt(
+ DatabaseUtils.KEY_LAST_USAGE_SOURCE,
+ USAGE_SOURCE_CURRENT_ACTIVITY))
.isEqualTo(USAGE_SOURCE_CURRENT_ACTIVITY);
}
@@ -506,20 +531,16 @@
final String preferenceKey = "test_preference_key";
DatabaseUtils.recordDateTime(mContext, preferenceKey);
- assertThat(DatabaseUtils.getSharedPreferences(mContext).contains(preferenceKey))
- .isTrue();
+ assertThat(DatabaseUtils.getSharedPreferences(mContext).contains(preferenceKey)).isTrue();
}
@Test
public void dump_dumpExpectedData() {
- DatabaseUtils.recordDateTime(mContext,
- Intent.ACTION_BATTERY_LEVEL_CHANGED);
- DatabaseUtils.recordDateTime(mContext,
- BatteryUsageBroadcastReceiver.ACTION_BATTERY_UNPLUGGING);
- DatabaseUtils.recordDateTime(mContext,
- DatabaseUtils.KEY_LAST_LOAD_FULL_CHARGE_TIME);
- DatabaseUtils.recordDateTime(mContext,
- DatabaseUtils.KEY_LAST_UPLOAD_FULL_CHARGE_TIME);
+ DatabaseUtils.recordDateTime(mContext, Intent.ACTION_BATTERY_LEVEL_CHANGED);
+ DatabaseUtils.recordDateTime(
+ mContext, BatteryUsageBroadcastReceiver.ACTION_BATTERY_UNPLUGGING);
+ DatabaseUtils.recordDateTime(mContext, DatabaseUtils.KEY_LAST_LOAD_FULL_CHARGE_TIME);
+ DatabaseUtils.recordDateTime(mContext, DatabaseUtils.KEY_LAST_UPLOAD_FULL_CHARGE_TIME);
final StringWriter stringWriter = new StringWriter();
final PrintWriter printWriter = new PrintWriter(stringWriter);
@@ -570,8 +591,7 @@
.isEqualTo(BatteryManager.BATTERY_STATUS_FULL);
assertThat(deviceBatteryState.getBatteryHealth())
.isEqualTo(BatteryManager.BATTERY_HEALTH_COLD);
- assertThat(values.getAsString("packageName"))
- .isEqualTo(ConvertUtils.FAKE_PACKAGE_NAME);
+ assertThat(values.getAsString("packageName")).isEqualTo(ConvertUtils.FAKE_PACKAGE_NAME);
}
private static Intent getBatteryIntent() {
@@ -586,10 +606,11 @@
private static MatrixCursor getMatrixCursor() {
return new MatrixCursor(
new String[] {
- BatteryHistEntry.KEY_PACKAGE_NAME,
- BatteryHistEntry.KEY_TIMESTAMP,
- BatteryHistEntry.KEY_UID,
- BatteryHistEntry.KEY_CONSUMER_TYPE,
- BatteryHistEntry.KEY_IS_FULL_CHARGE_CYCLE_START});
+ BatteryHistEntry.KEY_PACKAGE_NAME,
+ BatteryHistEntry.KEY_TIMESTAMP,
+ BatteryHistEntry.KEY_UID,
+ BatteryHistEntry.KEY_CONSUMER_TYPE,
+ BatteryHistEntry.KEY_IS_FULL_CHARGE_CYCLE_START
+ });
}
}
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/PeriodicJobManagerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/PeriodicJobManagerTest.java
index efbce12..6990535 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/PeriodicJobManagerTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/PeriodicJobManagerTest.java
@@ -57,7 +57,7 @@
@Test
public void refreshJob_refreshesAlarmJob() {
- mPeriodicJobManager.refreshJob(/*fromBoot=*/ false);
+ mPeriodicJobManager.refreshJob(/* fromBoot= */ false);
final ShadowAlarmManager.ScheduledAlarm alarm =
mShadowAlarmManager.peekNextScheduledAlarm();
@@ -71,12 +71,13 @@
public void getTriggerAtMillis_withoutOffset_returnsExpectedResult() {
long timeSlotUnit = PeriodicJobManager.DATA_FETCH_INTERVAL_MINUTE;
// Sets the current time.
- Duration currentTimeDuration =
- Duration.ofMinutes(timeSlotUnit * 2);
+ Duration currentTimeDuration = Duration.ofMinutes(timeSlotUnit * 2);
FakeClock fakeClock = new FakeClock();
fakeClock.setCurrentTime(currentTimeDuration);
- assertThat(PeriodicJobManager.getTriggerAtMillis(mContext, fakeClock, /*fromBoot=*/ false))
+ assertThat(
+ PeriodicJobManager.getTriggerAtMillis(
+ mContext, fakeClock, /* fromBoot= */ false))
.isEqualTo(currentTimeDuration.plusMinutes(timeSlotUnit).toMillis());
}
@@ -86,10 +87,9 @@
// Sets the current time.
Duration currentTimeDuration = Duration.ofMinutes(timeSlotUnit * 2);
FakeClock fakeClock = new FakeClock();
- fakeClock.setCurrentTime(
- currentTimeDuration.plusMinutes(1L).plusMillis(51L));
+ fakeClock.setCurrentTime(currentTimeDuration.plusMinutes(1L).plusMillis(51L));
- assertThat(PeriodicJobManager.getTriggerAtMillis(mContext, fakeClock, /*fromBoot=*/ true))
+ assertThat(PeriodicJobManager.getTriggerAtMillis(mContext, fakeClock, /* fromBoot= */ true))
.isEqualTo(currentTimeDuration.plusMinutes(timeSlotUnit).toMillis());
}
}
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/PeriodicJobReceiverTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/PeriodicJobReceiverTest.java
index c9a3e64..d111de2 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/PeriodicJobReceiverTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/PeriodicJobReceiverTest.java
@@ -86,14 +86,14 @@
@Test
public void onReceive_nullIntent_notRefreshesJob() {
- mReceiver.onReceive(mContext, /*intent=*/ null);
+ mReceiver.onReceive(mContext, /* intent= */ null);
assertThat(mShadowAlarmManager.peekNextScheduledAlarm()).isNull();
}
@Test
public void onReceive_containsExpiredData_clearsExpiredDataFromDatabase()
throws InterruptedException {
- insertExpiredData(/*shiftDay=*/ DatabaseUtils.DATA_RETENTION_INTERVAL_DAY);
+ insertExpiredData(/* shiftDay= */ DatabaseUtils.DATA_RETENTION_INTERVAL_DAY);
mReceiver.onReceive(mContext, JOB_UPDATE_INTENT);
@@ -104,7 +104,7 @@
@Test
public void onReceive_withoutExpiredData_notClearsExpiredDataFromDatabase()
throws InterruptedException {
- insertExpiredData(/*shiftDay=*/ DatabaseUtils.DATA_RETENTION_INTERVAL_DAY - 1);
+ insertExpiredData(/* shiftDay= */ DatabaseUtils.DATA_RETENTION_INTERVAL_DAY - 1);
mReceiver.onReceive(mContext, JOB_UPDATE_INTENT);
@@ -129,5 +129,4 @@
// Ensures the testing environment is correct.
assertThat(mDao.getAllAfter(0)).hasSize(3);
}
-
}
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/PowerGaugePreferenceTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/PowerGaugePreferenceTest.java
index 22509de..ef4460b 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/PowerGaugePreferenceTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/PowerGaugePreferenceTest.java
@@ -53,8 +53,12 @@
MockitoAnnotations.initMocks(this);
mContext = RuntimeEnvironment.application;
- mRootView = LayoutInflater.from(mContext)
- .inflate(com.android.settingslib.widget.preference.app.R.layout.preference_app, null);
+ mRootView =
+ LayoutInflater.from(mContext)
+ .inflate(
+ com.android.settingslib.widget.preference.app.R.layout
+ .preference_app,
+ null);
mWidgetView =
LayoutInflater.from(mContext).inflate(R.layout.preference_widget_summary, null);
final LinearLayout widgetFrame = mRootView.findViewById(android.R.id.widget_frame);
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/PowerUsageAdvancedTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/PowerUsageAdvancedTest.java
index 9753bd2..6c09e78 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/PowerUsageAdvancedTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/PowerUsageAdvancedTest.java
@@ -55,14 +55,10 @@
private Predicate<PowerAnomalyEvent> mCardFilterPredicate;
private Predicate<PowerAnomalyEvent> mSlotFilterPredicate;
- @Mock
- private BatteryTipsController mBatteryTipsController;
- @Mock
- private BatteryChartPreferenceController mBatteryChartPreferenceController;
- @Mock
- private ScreenOnTimeController mScreenOnTimeController;
- @Mock
- private BatteryUsageBreakdownController mBatteryUsageBreakdownController;
+ @Mock private BatteryTipsController mBatteryTipsController;
+ @Mock private BatteryChartPreferenceController mBatteryChartPreferenceController;
+ @Mock private ScreenOnTimeController mScreenOnTimeController;
+ @Mock private BatteryUsageBreakdownController mBatteryUsageBreakdownController;
@Before
public void setUp() {
@@ -75,10 +71,13 @@
mPowerUsageAdvanced.mBatteryChartPreferenceController = mBatteryChartPreferenceController;
mPowerUsageAdvanced.mScreenOnTimeController = mScreenOnTimeController;
mPowerUsageAdvanced.mBatteryUsageBreakdownController = mBatteryUsageBreakdownController;
- mPowerUsageAdvanced.mBatteryLevelData = Optional.of(new BatteryLevelData(Map.of(
- 1694354400000L, 1, // 2023-09-10 22:00:00
- 1694361600000L, 2, // 2023-09-11 00:00:00
- 1694368800000L, 3))); // 2023-09-11 02:00:00
+ mPowerUsageAdvanced.mBatteryLevelData =
+ Optional.of(
+ new BatteryLevelData(
+ Map.of(
+ 1694354400000L, 1, // 2023-09-10 22:00:00
+ 1694361600000L, 2, // 2023-09-11 00:00:00
+ 1694368800000L, 3))); // 2023-09-11 02:00:00
doReturn(mContext).when(mPowerUsageAdvanced).getContext();
mSlotFilterPredicate = PowerAnomalyEvent::hasWarningItemInfo;
}
@@ -86,15 +85,17 @@
@Test
public void getFilterAnomalyEvent_withEmptyOrNullList_getNull() {
prepareCardFilterPredicate(null);
- assertThat(PowerUsageAdvanced
- .getAnomalyEvent(null, mCardFilterPredicate)).isNull();
- assertThat(PowerUsageAdvanced
- .getAnomalyEvent(null, mSlotFilterPredicate)).isNull();
- assertThat(PowerUsageAdvanced.getAnomalyEvent(
- BatteryTestUtils.createEmptyPowerAnomalyEventList(), mCardFilterPredicate))
+ assertThat(PowerUsageAdvanced.getAnomalyEvent(null, mCardFilterPredicate)).isNull();
+ assertThat(PowerUsageAdvanced.getAnomalyEvent(null, mSlotFilterPredicate)).isNull();
+ assertThat(
+ PowerUsageAdvanced.getAnomalyEvent(
+ BatteryTestUtils.createEmptyPowerAnomalyEventList(),
+ mCardFilterPredicate))
.isNull();
- assertThat(PowerUsageAdvanced.getAnomalyEvent(
- BatteryTestUtils.createEmptyPowerAnomalyEventList(), mSlotFilterPredicate))
+ assertThat(
+ PowerUsageAdvanced.getAnomalyEvent(
+ BatteryTestUtils.createEmptyPowerAnomalyEventList(),
+ mSlotFilterPredicate))
.isNull();
}
@@ -104,12 +105,10 @@
BatteryTestUtils.createNonEmptyPowerAnomalyEventList();
final PowerAnomalyEvent slotEvent =
- PowerUsageAdvanced.getAnomalyEvent(powerAnomalyEventList,
- mSlotFilterPredicate);
+ PowerUsageAdvanced.getAnomalyEvent(powerAnomalyEventList, mSlotFilterPredicate);
prepareCardFilterPredicate(slotEvent);
final PowerAnomalyEvent cardEvent =
- PowerUsageAdvanced.getAnomalyEvent(powerAnomalyEventList,
- mCardFilterPredicate);
+ PowerUsageAdvanced.getAnomalyEvent(powerAnomalyEventList, mCardFilterPredicate);
assertThat(cardEvent).isEqualTo(BatteryTestUtils.createAdaptiveBrightnessAnomalyEvent());
assertThat(slotEvent).isNull();
@@ -123,12 +122,10 @@
DatabaseUtils.setDismissedPowerAnomalyKeys(mContext, PowerAnomalyKey.KEY_BRIGHTNESS.name());
final PowerAnomalyEvent slotEvent =
- PowerUsageAdvanced.getAnomalyEvent(powerAnomalyEventList,
- mSlotFilterPredicate);
+ PowerUsageAdvanced.getAnomalyEvent(powerAnomalyEventList, mSlotFilterPredicate);
prepareCardFilterPredicate(slotEvent);
final PowerAnomalyEvent cardEvent =
- PowerUsageAdvanced.getAnomalyEvent(powerAnomalyEventList,
- mCardFilterPredicate);
+ PowerUsageAdvanced.getAnomalyEvent(powerAnomalyEventList, mCardFilterPredicate);
assertThat(cardEvent).isEqualTo(BatteryTestUtils.createScreenTimeoutAnomalyEvent());
assertThat(slotEvent).isNull();
@@ -144,12 +141,10 @@
}
final PowerAnomalyEvent slotEvent =
- PowerUsageAdvanced.getAnomalyEvent(powerAnomalyEventList,
- mSlotFilterPredicate);
+ PowerUsageAdvanced.getAnomalyEvent(powerAnomalyEventList, mSlotFilterPredicate);
prepareCardFilterPredicate(slotEvent);
final PowerAnomalyEvent cardEvent =
- PowerUsageAdvanced.getAnomalyEvent(powerAnomalyEventList,
- mCardFilterPredicate);
+ PowerUsageAdvanced.getAnomalyEvent(powerAnomalyEventList, mCardFilterPredicate);
assertThat(cardEvent).isNull();
assertThat(slotEvent).isNull();
@@ -165,9 +160,10 @@
.isEqualTo(event.getEventId());
verify(mPowerUsageAdvanced.mBatteryTipsController).setOnAnomalyConfirmListener(isNull());
verify(mPowerUsageAdvanced.mBatteryTipsController).setOnAnomalyRejectListener(isNull());
- verify(mPowerUsageAdvanced.mBatteryChartPreferenceController).onHighlightSlotIndexUpdate(
- eq(BatteryChartViewModel.SELECTED_INDEX_INVALID),
- eq(BatteryChartViewModel.SELECTED_INDEX_INVALID));
+ verify(mPowerUsageAdvanced.mBatteryChartPreferenceController)
+ .onHighlightSlotIndexUpdate(
+ eq(BatteryChartViewModel.SELECTED_INDEX_INVALID),
+ eq(BatteryChartViewModel.SELECTED_INDEX_INVALID));
}
@Test
@@ -180,10 +176,14 @@
.isEqualTo(event.getEventId());
verify(mBatteryTipsController).setOnAnomalyConfirmListener(isNull());
verify(mBatteryTipsController).setOnAnomalyRejectListener(isNull());
- assertThat(mPowerUsageAdvanced.mBatteryLevelData.get().getIndexByTimestamps(
- event.getWarningItemInfo().getStartTimestamp(),
- event.getWarningItemInfo().getEndTimestamp()
- )).isEqualTo(Pair.create(1, 0));
+ assertThat(
+ mPowerUsageAdvanced
+ .mBatteryLevelData
+ .get()
+ .getIndexByTimestamps(
+ event.getWarningItemInfo().getStartTimestamp(),
+ event.getWarningItemInfo().getEndTimestamp()))
+ .isEqualTo(Pair.create(1, 0));
verify(mBatteryChartPreferenceController).onHighlightSlotIndexUpdate(eq(1), eq(0));
verify(mBatteryTipsController).setOnAnomalyConfirmListener(notNull());
}
@@ -192,8 +192,7 @@
public void onDisplayAnomalyEventUpdated_withSettingsCardAndAppsSlotEvent_showExpected() {
final PowerAnomalyEvent settingsEvent =
BatteryTestUtils.createAdaptiveBrightnessAnomalyEvent();
- final PowerAnomalyEvent appsEvent =
- BatteryTestUtils.createAppAnomalyEvent();
+ final PowerAnomalyEvent appsEvent = BatteryTestUtils.createAppAnomalyEvent();
mPowerUsageAdvanced.onDisplayAnomalyEventUpdated(settingsEvent, appsEvent);
@@ -207,8 +206,9 @@
private void prepareCardFilterPredicate(PowerAnomalyEvent slotEvent) {
final Set<String> dismissedPowerAnomalyKeys =
DatabaseUtils.getDismissedPowerAnomalyKeys(mContext);
- mCardFilterPredicate = event -> !dismissedPowerAnomalyKeys.contains(
- event.getDismissRecordKey())
- && (event.equals(slotEvent) || !event.hasWarningItemInfo());
+ mCardFilterPredicate =
+ event ->
+ !dismissedPowerAnomalyKeys.contains(event.getDismissRecordKey())
+ && (event.equals(slotEvent) || !event.hasWarningItemInfo());
}
-}
\ No newline at end of file
+}
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/PowerUsageBaseTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/PowerUsageBaseTest.java
index 68766e6..399101b 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/PowerUsageBaseTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/PowerUsageBaseTest.java
@@ -52,10 +52,8 @@
@Config(shadows = ShadowDashboardFragment.class)
public class PowerUsageBaseTest {
- @Mock
- private LoaderManager mLoaderManager;
- @Mock
- private Loader<BatteryUsageStats> mBatteryUsageStatsLoader;
+ @Mock private LoaderManager mLoaderManager;
+ @Mock private Loader<BatteryUsageStats> mBatteryUsageStatsLoader;
private TestFragment mFragment;
@Before
@@ -77,16 +75,19 @@
final Bundle bundle = new Bundle();
bundle.putInt(KEY_REFRESH_TYPE, BatteryBroadcastReceiver.BatteryUpdateType.BATTERY_STATUS);
bundle.putBoolean(KEY_INCLUDE_HISTORY, false);
- doReturn(mBatteryUsageStatsLoader).when(mLoaderManager).getLoader(
- PowerUsageBase.LoaderIndex.BATTERY_USAGE_STATS_LOADER);
+ doReturn(mBatteryUsageStatsLoader)
+ .when(mLoaderManager)
+ .getLoader(PowerUsageBase.LoaderIndex.BATTERY_USAGE_STATS_LOADER);
doReturn(false).when(mBatteryUsageStatsLoader).isReset();
mFragment.restartBatteryStatsLoader(
BatteryBroadcastReceiver.BatteryUpdateType.BATTERY_STATUS);
verify(mLoaderManager)
- .restartLoader(eq(PowerUsageBase.LoaderIndex.BATTERY_USAGE_STATS_LOADER),
- refEq(bundle), any());
+ .restartLoader(
+ eq(PowerUsageBase.LoaderIndex.BATTERY_USAGE_STATS_LOADER),
+ refEq(bundle),
+ any());
}
@Test
@@ -94,16 +95,19 @@
final Bundle bundle = new Bundle();
bundle.putInt(KEY_REFRESH_TYPE, BatteryBroadcastReceiver.BatteryUpdateType.BATTERY_STATUS);
bundle.putBoolean(KEY_INCLUDE_HISTORY, false);
- doReturn(mBatteryUsageStatsLoader).when(mLoaderManager).getLoader(
- PowerUsageBase.LoaderIndex.BATTERY_USAGE_STATS_LOADER);
+ doReturn(mBatteryUsageStatsLoader)
+ .when(mLoaderManager)
+ .getLoader(PowerUsageBase.LoaderIndex.BATTERY_USAGE_STATS_LOADER);
doReturn(true).when(mBatteryUsageStatsLoader).isReset();
mFragment.restartBatteryStatsLoader(
BatteryBroadcastReceiver.BatteryUpdateType.BATTERY_STATUS);
verify(mLoaderManager)
- .initLoader(eq(PowerUsageBase.LoaderIndex.BATTERY_USAGE_STATS_LOADER),
- refEq(bundle), any());
+ .initLoader(
+ eq(PowerUsageBase.LoaderIndex.BATTERY_USAGE_STATS_LOADER),
+ refEq(bundle),
+ any());
}
@Test
@@ -111,14 +115,18 @@
final Bundle bundle = new Bundle();
bundle.putInt(KEY_REFRESH_TYPE, BatteryBroadcastReceiver.BatteryUpdateType.BATTERY_STATUS);
bundle.putBoolean(KEY_INCLUDE_HISTORY, false);
- doReturn(null).when(mLoaderManager).getLoader(
- PowerUsageBase.LoaderIndex.BATTERY_USAGE_STATS_LOADER);
+ doReturn(null)
+ .when(mLoaderManager)
+ .getLoader(PowerUsageBase.LoaderIndex.BATTERY_USAGE_STATS_LOADER);
mFragment.restartBatteryStatsLoader(
BatteryBroadcastReceiver.BatteryUpdateType.BATTERY_STATUS);
- verify(mLoaderManager).initLoader(eq(PowerUsageBase.LoaderIndex.BATTERY_USAGE_STATS_LOADER),
- refEq(bundle), any());
+ verify(mLoaderManager)
+ .initLoader(
+ eq(PowerUsageBase.LoaderIndex.BATTERY_USAGE_STATS_LOADER),
+ refEq(bundle),
+ any());
}
private static class TestFragment extends PowerUsageBase {
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/PowerUsageSummaryTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/PowerUsageSummaryTest.java
index 579d4a9..19d5e59 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/PowerUsageSummaryTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/PowerUsageSummaryTest.java
@@ -70,9 +70,10 @@
// TODO: Improve this test class so that it starts up the real activity and fragment.
@RunWith(RobolectricTestRunner.class)
-@Config(shadows = {
- com.android.settings.testutils.shadow.ShadowFragment.class,
-})
+@Config(
+ shadows = {
+ com.android.settings.testutils.shadow.ShadowFragment.class,
+ })
public class PowerUsageSummaryTest {
private static Intent sAdditionalBatteryInfoIntent;
@@ -81,26 +82,16 @@
sAdditionalBatteryInfoIntent = new Intent("com.example.app.ADDITIONAL_BATTERY_INFO");
}
- @Mock
- private SettingsActivity mSettingsActivity;
- @Mock
- private LoaderManager mLoaderManager;
- @Mock
- private Loader<BatteryTip> mBatteryTipLoader;
- @Mock
- private Loader<BatteryInfo> mBatteryInfoLoader;
- @Mock
- private ContentResolver mContentResolver;
- @Mock
- private BatteryBroadcastReceiver mBatteryBroadcastReceiver;
- @Mock
- private VisibilityLoggerMixin mVisibilityLoggerMixin;
- @Mock
- private PreferenceScreen mPreferenceScreen;
- @Mock
- private Preference mBatteryUsagePreference;
- @Mock
- private Preference mHelpPreference;
+ @Mock private SettingsActivity mSettingsActivity;
+ @Mock private LoaderManager mLoaderManager;
+ @Mock private Loader<BatteryTip> mBatteryTipLoader;
+ @Mock private Loader<BatteryInfo> mBatteryInfoLoader;
+ @Mock private ContentResolver mContentResolver;
+ @Mock private BatteryBroadcastReceiver mBatteryBroadcastReceiver;
+ @Mock private VisibilityLoggerMixin mVisibilityLoggerMixin;
+ @Mock private PreferenceScreen mPreferenceScreen;
+ @Mock private Preference mBatteryUsagePreference;
+ @Mock private Preference mHelpPreference;
private Context mRealContext;
private TestFragment mFragment;
@@ -120,8 +111,8 @@
.thenReturn(sAdditionalBatteryInfoIntent);
mFragment.mBatteryUtils = Mockito.spy(new BatteryUtils(mRealContext));
ReflectionHelpers.setField(mFragment, "mVisibilityLoggerMixin", mVisibilityLoggerMixin);
- ReflectionHelpers.setField(mFragment, "mBatteryBroadcastReceiver",
- mBatteryBroadcastReceiver);
+ ReflectionHelpers.setField(
+ mFragment, "mBatteryBroadcastReceiver", mBatteryBroadcastReceiver);
doReturn(mPreferenceScreen).when(mFragment).getPreferenceScreen();
when(mFragment.getContentResolver()).thenReturn(mContentResolver);
when(mFragment.findPreference(KEY_BATTERY_USAGE)).thenReturn(mBatteryUsagePreference);
@@ -157,42 +148,46 @@
@Test
public void restartBatteryTipLoader() {
- //TODO: add policy logic here when BatteryTipPolicy is implemented
- doReturn(mBatteryTipLoader).when(mLoaderManager).getLoader(
- PowerUsageBase.LoaderIndex.BATTERY_TIP_LOADER);
+ // TODO: add policy logic here when BatteryTipPolicy is implemented
+ doReturn(mBatteryTipLoader)
+ .when(mLoaderManager)
+ .getLoader(PowerUsageBase.LoaderIndex.BATTERY_TIP_LOADER);
doReturn(false).when(mBatteryTipLoader).isReset();
mFragment.restartBatteryTipLoader();
- verify(mLoaderManager).restartLoader(eq(PowerUsageBase.LoaderIndex.BATTERY_TIP_LOADER),
- eq(Bundle.EMPTY), any());
+ verify(mLoaderManager)
+ .restartLoader(
+ eq(PowerUsageBase.LoaderIndex.BATTERY_TIP_LOADER), eq(Bundle.EMPTY), any());
}
@Test
public void restartBatteryTipLoader_nullLoader_initLoader() {
- doReturn(null).when(mLoaderManager).getLoader(
- PowerUsageBase.LoaderIndex.BATTERY_TIP_LOADER);
+ doReturn(null)
+ .when(mLoaderManager)
+ .getLoader(PowerUsageBase.LoaderIndex.BATTERY_TIP_LOADER);
mFragment.restartBatteryTipLoader();
- verify(mLoaderManager).initLoader(eq(PowerUsageBase.LoaderIndex.BATTERY_TIP_LOADER),
- eq(Bundle.EMPTY), any());
+ verify(mLoaderManager)
+ .initLoader(
+ eq(PowerUsageBase.LoaderIndex.BATTERY_TIP_LOADER), eq(Bundle.EMPTY), any());
}
@Test
public void restartBatteryTipLoader_loaderReset_initLoader() {
- doReturn(mBatteryTipLoader).when(mLoaderManager).getLoader(
- PowerUsageBase.LoaderIndex.BATTERY_TIP_LOADER);
+ doReturn(mBatteryTipLoader)
+ .when(mLoaderManager)
+ .getLoader(PowerUsageBase.LoaderIndex.BATTERY_TIP_LOADER);
doReturn(true).when(mBatteryTipLoader).isReset();
mFragment.restartBatteryTipLoader();
-
- verify(mLoaderManager).initLoader(eq(PowerUsageBase.LoaderIndex.BATTERY_TIP_LOADER),
- eq(Bundle.EMPTY), any());
+ verify(mLoaderManager)
+ .initLoader(
+ eq(PowerUsageBase.LoaderIndex.BATTERY_TIP_LOADER), eq(Bundle.EMPTY), any());
}
-
@Test
public void refreshUi_contextNull_doNothing() {
doReturn(null).when(mFragment).getContext();
@@ -256,18 +251,19 @@
public void onResume_registerContentObserver() {
mFragment.onResume();
- verify(mContentResolver).registerContentObserver(
- Settings.Global.getUriFor(Settings.Global.BATTERY_ESTIMATES_LAST_UPDATE_TIME),
- false,
- mFragment.mSettingsObserver);
+ verify(mContentResolver)
+ .registerContentObserver(
+ Settings.Global.getUriFor(
+ Settings.Global.BATTERY_ESTIMATES_LAST_UPDATE_TIME),
+ false,
+ mFragment.mSettingsObserver);
}
@Test
public void onPause_unregisterContentObserver() {
mFragment.onPause();
- verify(mContentResolver).unregisterContentObserver(
- mFragment.mSettingsObserver);
+ verify(mContentResolver).unregisterContentObserver(mFragment.mSettingsObserver);
}
@Test
@@ -276,9 +272,11 @@
mFragment.restartBatteryInfoLoader();
- verify(mLoaderManager, never()).restartLoader(
- PowerUsageBase.LoaderIndex.BATTERY_INFO_LOADER, Bundle.EMPTY,
- mFragment.mBatteryInfoLoaderCallbacks);
+ verify(mLoaderManager, never())
+ .restartLoader(
+ PowerUsageBase.LoaderIndex.BATTERY_INFO_LOADER,
+ Bundle.EMPTY,
+ mFragment.mBatteryInfoLoaderCallbacks);
}
@Test
@@ -287,45 +285,59 @@
mFragment.restartBatteryInfoLoader();
- verify(mLoaderManager, never()).restartLoader(
- PowerUsageBase.LoaderIndex.BATTERY_INFO_LOADER, Bundle.EMPTY,
- mFragment.mBatteryInfoLoaderCallbacks);
+ verify(mLoaderManager, never())
+ .restartLoader(
+ PowerUsageBase.LoaderIndex.BATTERY_INFO_LOADER,
+ Bundle.EMPTY,
+ mFragment.mBatteryInfoLoaderCallbacks);
}
@Test
public void restartBatteryInfoLoader() {
- doReturn(mBatteryInfoLoader).when(mLoaderManager).getLoader(
- PowerUsageBase.LoaderIndex.BATTERY_INFO_LOADER);
+ doReturn(mBatteryInfoLoader)
+ .when(mLoaderManager)
+ .getLoader(PowerUsageBase.LoaderIndex.BATTERY_INFO_LOADER);
doReturn(false).when(mBatteryTipLoader).isReset();
mFragment.restartBatteryInfoLoader();
- verify(mLoaderManager).restartLoader(eq(PowerUsageBase.LoaderIndex.BATTERY_INFO_LOADER),
- eq(Bundle.EMPTY), any());
+ verify(mLoaderManager)
+ .restartLoader(
+ eq(PowerUsageBase.LoaderIndex.BATTERY_INFO_LOADER),
+ eq(Bundle.EMPTY),
+ any());
}
@Test
public void restartBatteryInfoLoader_nullLoader_initLoader() {
- doReturn(null).when(mLoaderManager).getLoader(
- PowerUsageBase.LoaderIndex.BATTERY_INFO_LOADER);
+ doReturn(null)
+ .when(mLoaderManager)
+ .getLoader(PowerUsageBase.LoaderIndex.BATTERY_INFO_LOADER);
mFragment.restartBatteryInfoLoader();
- verify(mLoaderManager).initLoader(eq(PowerUsageBase.LoaderIndex.BATTERY_INFO_LOADER),
- eq(Bundle.EMPTY), any());
+ verify(mLoaderManager)
+ .initLoader(
+ eq(PowerUsageBase.LoaderIndex.BATTERY_INFO_LOADER),
+ eq(Bundle.EMPTY),
+ any());
}
@Test
public void restartBatteryInfoLoader_loaderReset_initLoader() {
mFragment.setIsBatteryPresent(true);
- doReturn(mBatteryInfoLoader).when(mLoaderManager).getLoader(
- PowerUsageBase.LoaderIndex.BATTERY_INFO_LOADER);
+ doReturn(mBatteryInfoLoader)
+ .when(mLoaderManager)
+ .getLoader(PowerUsageBase.LoaderIndex.BATTERY_INFO_LOADER);
doReturn(true).when(mBatteryInfoLoader).isReset();
mFragment.restartBatteryInfoLoader();
- verify(mLoaderManager).initLoader(eq(PowerUsageBase.LoaderIndex.BATTERY_INFO_LOADER),
- eq(Bundle.EMPTY), any());
+ verify(mLoaderManager)
+ .initLoader(
+ eq(PowerUsageBase.LoaderIndex.BATTERY_INFO_LOADER),
+ eq(Bundle.EMPTY),
+ any());
}
private static class TestFragment extends PowerUsageSummary {
@@ -357,5 +369,4 @@
return mLoaderManager;
}
}
-
}
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/ScreenOnTimeControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/ScreenOnTimeControllerTest.java
index acf4a2e..282ec9e 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/ScreenOnTimeControllerTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/ScreenOnTimeControllerTest.java
@@ -46,10 +46,8 @@
private Context mContext;
private ScreenOnTimeController mScreenOnTimeController;
- @Mock
- private PreferenceCategory mRootPreference;
- @Mock
- private TextViewPreference mScreenOnTimeTextPreference;
+ @Mock private PreferenceCategory mRootPreference;
+ @Mock private TextViewPreference mScreenOnTimeTextPreference;
@Before
public void setUp() {
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/SpinnerPreferenceTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/SpinnerPreferenceTest.java
index 4c2192c..8050984 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/SpinnerPreferenceTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/SpinnerPreferenceTest.java
@@ -42,14 +42,13 @@
private Context mContext;
private SpinnerPreference mSpinnerPreference;
- @Mock
- private Spinner mMockSpinner;
+ @Mock private Spinner mMockSpinner;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
mContext = spy(RuntimeEnvironment.application);
- mSpinnerPreference = new SpinnerPreference(mContext, /*attrs=*/ null);
+ mSpinnerPreference = new SpinnerPreference(mContext, /* attrs= */ null);
}
@Test
@@ -59,7 +58,7 @@
@Test
public void initializeSpinner_returnExpectedResult() {
- final String[] items = new String[]{"item1", "item2"};
+ final String[] items = new String[] {"item1", "item2"};
mSpinnerPreference.initializeSpinner(items, null);
assertThat(mSpinnerPreference.mItems).isEqualTo(items);
}
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/TextViewPreferenceTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/TextViewPreferenceTest.java
index ca7e9dd..caccc87 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/TextViewPreferenceTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/TextViewPreferenceTest.java
@@ -41,13 +41,13 @@
public void setUp() {
MockitoAnnotations.initMocks(this);
mContext = spy(RuntimeEnvironment.application);
- mTextViewPreference = new TextViewPreference(mContext, /*attrs=*/ null);
+ mTextViewPreference = new TextViewPreference(mContext, /* attrs= */ null);
}
@Test
public void constructor_returnExpectedResult() {
- assertThat(mTextViewPreference.getLayoutResource()).isEqualTo(
- R.layout.preference_text_view);
+ assertThat(mTextViewPreference.getLayoutResource())
+ .isEqualTo(R.layout.preference_text_view);
}
@Test
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/TimestampUtilsTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/TimestampUtilsTest.java
index 23787c7..1aae61c 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/TimestampUtilsTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/TimestampUtilsTest.java
@@ -36,11 +36,9 @@
@Test
public void getNextHourTimestamp_returnExpectedResult() {
// 2021-02-28 06:00:00 => 2021-02-28 07:00:00
- assertThat(TimestampUtils.getNextHourTimestamp(1614463200000L))
- .isEqualTo(1614466800000L);
+ assertThat(TimestampUtils.getNextHourTimestamp(1614463200000L)).isEqualTo(1614466800000L);
// 2021-12-31 23:59:59 => 2022-01-01 00:00:00
- assertThat(TimestampUtils.getNextHourTimestamp(16409663999999L))
- .isEqualTo(16409664000000L);
+ assertThat(TimestampUtils.getNextHourTimestamp(16409663999999L)).isEqualTo(16409664000000L);
}
@Test
@@ -66,11 +64,9 @@
@Test
public void getTimestampOfNextDay_returnExpectedResult() {
// 2021-02-28 06:00:00 => 2021-03-01 00:00:00
- assertThat(TimestampUtils.getNextDayTimestamp(1614463200000L))
- .isEqualTo(1614528000000L);
+ assertThat(TimestampUtils.getNextDayTimestamp(1614463200000L)).isEqualTo(1614528000000L);
// 2021-12-31 16:00:00 => 2022-01-01 00:00:00
- assertThat(TimestampUtils.getNextDayTimestamp(1640937600000L))
- .isEqualTo(1640966400000L);
+ assertThat(TimestampUtils.getNextDayTimestamp(1640937600000L)).isEqualTo(1640966400000L);
}
@Test
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/bugreport/BugReportContentProviderTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/bugreport/BugReportContentProviderTest.java
index 45d4065..d998106 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/bugreport/BugReportContentProviderTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/bugreport/BugReportContentProviderTest.java
@@ -52,7 +52,7 @@
mPrintWriter = new PrintWriter(mStringWriter);
mContext = ApplicationProvider.getApplicationContext();
mBugReportContentProvider = new BugReportContentProvider();
- mBugReportContentProvider.attachInfo(mContext, /*info=*/ null);
+ mBugReportContentProvider.attachInfo(mContext, /* info= */ null);
// Inserts fake data into database for testing.
BatteryTestUtils.setUpBatteryStateDatabase(mContext);
BatteryTestUtils.insertDataToBatteryStateTable(
@@ -60,15 +60,15 @@
BatteryTestUtils.insertDataToBatteryStateTable(
mContext, System.currentTimeMillis(), PACKAGE_NAME2);
BatteryTestUtils.insertDataToAppUsageEventTable(
- mContext, /*userId=*/ 1, System.currentTimeMillis(), PACKAGE_NAME3);
+ mContext, /* userId= */ 1, System.currentTimeMillis(), PACKAGE_NAME3);
BatteryTestUtils.insertDataToAppUsageEventTable(
- mContext, /*userId=*/ 1, System.currentTimeMillis(), PACKAGE_NAME4);
+ mContext, /* userId= */ 1, System.currentTimeMillis(), PACKAGE_NAME4);
}
@Test
public void dump_nullContext_notDumpsBatteryUsageData() {
mBugReportContentProvider = new BugReportContentProvider();
- mBugReportContentProvider.attachInfo(/*context=*/ null, /*info=*/ null);
+ mBugReportContentProvider.attachInfo(/* context= */ null, /* info= */ null);
mBugReportContentProvider.dump(FileDescriptor.out, mPrintWriter, new String[] {});
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/db/AppUsageEventDaoTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/db/AppUsageEventDaoTest.java
index 4883d4f..219120e 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/db/AppUsageEventDaoTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/db/AppUsageEventDaoTest.java
@@ -61,13 +61,13 @@
BatteryTestUtils.insertDataToAppUsageEventTable(
mContext, USER_ID2, TIMESTAMP2, PACKAGE_NAME2);
BatteryTestUtils.insertDataToAppUsageEventTable(
- mContext, USER_ID1, TIMESTAMP1, PACKAGE_NAME1, /*multiple=*/ true);
+ mContext, USER_ID1, TIMESTAMP1, PACKAGE_NAME1, /* multiple= */ true);
}
@After
public void closeDb() {
mDatabase.close();
- BatteryStateDatabase.setBatteryStateDatabase(/*database=*/ null);
+ BatteryStateDatabase.setBatteryStateDatabase(/* database= */ null);
}
@Test
@@ -147,7 +147,7 @@
@Test
public void getInstance_createNewInstance() throws Exception {
- BatteryStateDatabase.setBatteryStateDatabase(/*database=*/ null);
+ BatteryStateDatabase.setBatteryStateDatabase(/* database= */ null);
assertThat(BatteryStateDatabase.getInstance(mContext)).isNotNull();
}
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/db/AppUsageEventEntityTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/db/AppUsageEventEntityTest.java
index 3cbf845..eb72b96 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/db/AppUsageEventEntityTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/db/AppUsageEventEntityTest.java
@@ -35,16 +35,16 @@
final int instanceId = 100001;
final String taskRootPackageName = "com.android.settings2";
- AppUsageEventEntity entity = AppUsageEventEntity
- .newBuilder()
- .setUid(uid)
- .setUserId(userId)
- .setTimestamp(timestamp)
- .setAppUsageEventType(appUsageEventType)
- .setPackageName(packageName)
- .setInstanceId(instanceId)
- .setTaskRootPackageName(taskRootPackageName)
- .build();
+ AppUsageEventEntity entity =
+ AppUsageEventEntity.newBuilder()
+ .setUid(uid)
+ .setUserId(userId)
+ .setTimestamp(timestamp)
+ .setAppUsageEventType(appUsageEventType)
+ .setPackageName(packageName)
+ .setInstanceId(instanceId)
+ .setTaskRootPackageName(taskRootPackageName)
+ .build();
// Verifies the app relative information.
assertThat(entity.uid).isEqualTo(uid);
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/db/BatteryEventDaoTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/db/BatteryEventDaoTest.java
index 3c3e3c3..d36f2b5 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/db/BatteryEventDaoTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/db/BatteryEventDaoTest.java
@@ -57,22 +57,23 @@
@After
public void closeDb() {
mDatabase.close();
- BatteryStateDatabase.setBatteryStateDatabase(/*database=*/ null);
+ BatteryStateDatabase.setBatteryStateDatabase(/* database= */ null);
}
-
@Test
public void getLastFullChargeTimestamp_normalFlow_expectedBehavior() throws Exception {
- mBatteryEventDao.insert(BatteryEventEntity.newBuilder()
- .setTimestamp(TIMESTAMP1)
- .setBatteryEventType(3)
- .setBatteryLevel(100)
- .build());
- mBatteryEventDao.insert(BatteryEventEntity.newBuilder()
- .setTimestamp(TIMESTAMP2)
- .setBatteryEventType(4)
- .setBatteryLevel(96)
- .build());
+ mBatteryEventDao.insert(
+ BatteryEventEntity.newBuilder()
+ .setTimestamp(TIMESTAMP1)
+ .setBatteryEventType(3)
+ .setBatteryLevel(100)
+ .build());
+ mBatteryEventDao.insert(
+ BatteryEventEntity.newBuilder()
+ .setTimestamp(TIMESTAMP2)
+ .setBatteryEventType(4)
+ .setBatteryLevel(96)
+ .build());
final Cursor cursor = mBatteryEventDao.getLastFullChargeTimestamp();
assertThat(cursor.getCount()).isEqualTo(1);
@@ -83,11 +84,12 @@
@Test
public void getLastFullChargeTimestamp_noLastFullChargeTime_returns0() throws Exception {
mBatteryEventDao.clearAll();
- mBatteryEventDao.insert(BatteryEventEntity.newBuilder()
- .setTimestamp(TIMESTAMP2)
- .setBatteryEventType(4)
- .setBatteryLevel(96)
- .build());
+ mBatteryEventDao.insert(
+ BatteryEventEntity.newBuilder()
+ .setTimestamp(TIMESTAMP2)
+ .setBatteryEventType(4)
+ .setBatteryLevel(96)
+ .build());
final Cursor cursor = mBatteryEventDao.getLastFullChargeTimestamp();
@@ -98,26 +100,25 @@
@Test
public void getAllAfter_normalFlow_returnExpectedResult() {
- mBatteryEventDao.insert(BatteryEventEntity.newBuilder()
- .setTimestamp(100L)
- .setBatteryEventType(1)
- .setBatteryLevel(66)
- .build());
- mBatteryEventDao.insert(BatteryEventEntity.newBuilder()
- .setTimestamp(200L)
- .setBatteryEventType(2)
- .setBatteryLevel(88)
- .build());
+ mBatteryEventDao.insert(
+ BatteryEventEntity.newBuilder()
+ .setTimestamp(100L)
+ .setBatteryEventType(1)
+ .setBatteryLevel(66)
+ .build());
+ mBatteryEventDao.insert(
+ BatteryEventEntity.newBuilder()
+ .setTimestamp(200L)
+ .setBatteryEventType(2)
+ .setBatteryLevel(88)
+ .build());
final Cursor cursor = mBatteryEventDao.getAllAfter(160L, List.of(1, 2));
assertThat(cursor.getCount()).isEqualTo(1);
cursor.moveToFirst();
- assertThat(cursor.getLong(cursor.getColumnIndex(KEY_TIMESTAMP)))
- .isEqualTo(200L);
- assertThat(cursor.getInt(cursor.getColumnIndex(KEY_BATTERY_EVENT_TYPE)))
- .isEqualTo(2);
- assertThat(cursor.getInt(cursor.getColumnIndex(KEY_BATTERY_LEVEL)))
- .isEqualTo(88);
+ assertThat(cursor.getLong(cursor.getColumnIndex(KEY_TIMESTAMP))).isEqualTo(200L);
+ assertThat(cursor.getInt(cursor.getColumnIndex(KEY_BATTERY_EVENT_TYPE))).isEqualTo(2);
+ assertThat(cursor.getInt(cursor.getColumnIndex(KEY_BATTERY_LEVEL))).isEqualTo(88);
mBatteryEventDao.clearAll();
assertThat(mBatteryEventDao.getAll()).isEmpty();
@@ -125,26 +126,25 @@
@Test
public void getAllAfter_filterBatteryTypes_returnExpectedResult() {
- mBatteryEventDao.insert(BatteryEventEntity.newBuilder()
- .setTimestamp(100L)
- .setBatteryEventType(1)
- .setBatteryLevel(66)
- .build());
- mBatteryEventDao.insert(BatteryEventEntity.newBuilder()
- .setTimestamp(200L)
- .setBatteryEventType(2)
- .setBatteryLevel(88)
- .build());
+ mBatteryEventDao.insert(
+ BatteryEventEntity.newBuilder()
+ .setTimestamp(100L)
+ .setBatteryEventType(1)
+ .setBatteryLevel(66)
+ .build());
+ mBatteryEventDao.insert(
+ BatteryEventEntity.newBuilder()
+ .setTimestamp(200L)
+ .setBatteryEventType(2)
+ .setBatteryLevel(88)
+ .build());
final Cursor cursor = mBatteryEventDao.getAllAfter(0L, List.of(1));
assertThat(cursor.getCount()).isEqualTo(1);
cursor.moveToFirst();
- assertThat(cursor.getLong(cursor.getColumnIndex(KEY_TIMESTAMP)))
- .isEqualTo(100L);
- assertThat(cursor.getInt(cursor.getColumnIndex(KEY_BATTERY_EVENT_TYPE)))
- .isEqualTo(1);
- assertThat(cursor.getInt(cursor.getColumnIndex(KEY_BATTERY_LEVEL)))
- .isEqualTo(66);
+ assertThat(cursor.getLong(cursor.getColumnIndex(KEY_TIMESTAMP))).isEqualTo(100L);
+ assertThat(cursor.getInt(cursor.getColumnIndex(KEY_BATTERY_EVENT_TYPE))).isEqualTo(1);
+ assertThat(cursor.getInt(cursor.getColumnIndex(KEY_BATTERY_LEVEL))).isEqualTo(66);
mBatteryEventDao.clearAll();
assertThat(mBatteryEventDao.getAll()).isEmpty();
@@ -152,26 +152,25 @@
@Test
public void getAllAfter_filterTimestamp_returnExpectedResult() {
- mBatteryEventDao.insert(BatteryEventEntity.newBuilder()
- .setTimestamp(100L)
- .setBatteryEventType(1)
- .setBatteryLevel(66)
- .build());
- mBatteryEventDao.insert(BatteryEventEntity.newBuilder()
- .setTimestamp(200L)
- .setBatteryEventType(1)
- .setBatteryLevel(88)
- .build());
+ mBatteryEventDao.insert(
+ BatteryEventEntity.newBuilder()
+ .setTimestamp(100L)
+ .setBatteryEventType(1)
+ .setBatteryLevel(66)
+ .build());
+ mBatteryEventDao.insert(
+ BatteryEventEntity.newBuilder()
+ .setTimestamp(200L)
+ .setBatteryEventType(1)
+ .setBatteryLevel(88)
+ .build());
final Cursor cursor = mBatteryEventDao.getAllAfter(200L, List.of(1));
assertThat(cursor.getCount()).isEqualTo(1);
cursor.moveToFirst();
- assertThat(cursor.getLong(cursor.getColumnIndex(KEY_TIMESTAMP)))
- .isEqualTo(200L);
- assertThat(cursor.getInt(cursor.getColumnIndex(KEY_BATTERY_EVENT_TYPE)))
- .isEqualTo(1);
- assertThat(cursor.getInt(cursor.getColumnIndex(KEY_BATTERY_LEVEL)))
- .isEqualTo(88);
+ assertThat(cursor.getLong(cursor.getColumnIndex(KEY_TIMESTAMP))).isEqualTo(200L);
+ assertThat(cursor.getInt(cursor.getColumnIndex(KEY_BATTERY_EVENT_TYPE))).isEqualTo(1);
+ assertThat(cursor.getInt(cursor.getColumnIndex(KEY_BATTERY_LEVEL))).isEqualTo(88);
mBatteryEventDao.clearAll();
assertThat(mBatteryEventDao.getAll()).isEmpty();
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/db/BatteryEventEntityTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/db/BatteryEventEntityTest.java
index a34d651..6aa7157 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/db/BatteryEventEntityTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/db/BatteryEventEntityTest.java
@@ -32,12 +32,12 @@
final int batteryEventType = 1;
final int batteryLevel = 66;
- BatteryEventEntity entity = BatteryEventEntity
- .newBuilder()
- .setTimestamp(timestamp)
- .setBatteryEventType(batteryEventType)
- .setBatteryLevel(batteryLevel)
- .build();
+ BatteryEventEntity entity =
+ BatteryEventEntity.newBuilder()
+ .setTimestamp(timestamp)
+ .setBatteryEventType(batteryEventType)
+ .setBatteryLevel(batteryLevel)
+ .build();
// Verifies the app relative information.
assertThat(entity.timestamp).isEqualTo(timestamp);
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/db/BatteryStateDaoTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/db/BatteryStateDaoTest.java
index b3dba4e..cc1d7b4 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/db/BatteryStateDaoTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/db/BatteryStateDaoTest.java
@@ -57,14 +57,17 @@
BatteryTestUtils.insertDataToBatteryStateTable(mContext, TIMESTAMP3, PACKAGE_NAME3);
BatteryTestUtils.insertDataToBatteryStateTable(mContext, TIMESTAMP2, PACKAGE_NAME2);
BatteryTestUtils.insertDataToBatteryStateTable(
- mContext, TIMESTAMP1, PACKAGE_NAME1, /*multiple=*/ true,
- /*isFullChargeStart=*/ true);
+ mContext,
+ TIMESTAMP1,
+ PACKAGE_NAME1,
+ /* multiple= */ true,
+ /* isFullChargeStart= */ true);
}
@After
public void closeDb() {
mDatabase.close();
- BatteryStateDatabase.setBatteryStateDatabase(/*database=*/ null);
+ BatteryStateDatabase.setBatteryStateDatabase(/* database= */ null);
}
@Test
@@ -136,29 +139,25 @@
@Test
public void getInstance_createNewInstance_returnsExpectedResult() throws Exception {
- BatteryStateDatabase.setBatteryStateDatabase(/*database=*/ null);
+ BatteryStateDatabase.setBatteryStateDatabase(/* database= */ null);
assertThat(BatteryStateDatabase.getInstance(mContext)).isNotNull();
}
@Test
public void getDistinctTimestampCount_normalFlow_returnsExpectedResult() {
- assertThat(mBatteryStateDao.getDistinctTimestampCount(/*timestamp=*/ 0))
- .isEqualTo(3);
- assertThat(mBatteryStateDao.getDistinctTimestampCount(TIMESTAMP1))
- .isEqualTo(2);
+ assertThat(mBatteryStateDao.getDistinctTimestampCount(/* timestamp= */ 0)).isEqualTo(3);
+ assertThat(mBatteryStateDao.getDistinctTimestampCount(TIMESTAMP1)).isEqualTo(2);
}
@Test
public void getDistinctTimestamps_normalFlow_returnsExpectedResult() {
- final List<Long> timestamps =
- mBatteryStateDao.getDistinctTimestamps(/*timestamp=*/ 0);
+ final List<Long> timestamps = mBatteryStateDao.getDistinctTimestamps(/* timestamp= */ 0);
assertThat(timestamps).hasSize(3);
assertThat(timestamps).containsExactly(TIMESTAMP1, TIMESTAMP2, TIMESTAMP3);
}
- private static void assertBatteryState(
- BatteryState state, long timestamp, String packageName) {
+ private static void assertBatteryState(BatteryState state, long timestamp, String packageName) {
assertThat(state.timestamp).isEqualTo(timestamp);
assertThat(state.packageName).isEqualTo(packageName);
}
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/db/BatteryStateTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/db/BatteryStateTest.java
index 9b9003e..e48f250 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/db/BatteryStateTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/db/BatteryStateTest.java
@@ -41,15 +41,13 @@
@Before
public void setUp() {
final DeviceBatteryState deviceBatteryState =
- DeviceBatteryState
- .newBuilder()
+ DeviceBatteryState.newBuilder()
.setBatteryLevel(BATTERY_LEVEL)
.setBatteryStatus(BATTERY_STATUS)
.setBatteryHealth(BATTERY_HEALTH)
.build();
mBatteryInformation =
- BatteryInformation
- .newBuilder()
+ BatteryInformation.newBuilder()
.setDeviceBatteryState(deviceBatteryState)
.setBootTimestamp(101L)
.setIsHidden(true)
@@ -78,8 +76,8 @@
assertThat(state.timestamp).isEqualTo(100001L);
assertThat(state.consumerType).isEqualTo(2);
assertThat(state.isFullChargeCycleStart).isTrue();
- assertThat(state.batteryInformation).isEqualTo(
- ConvertUtils.convertBatteryInformationToString(mBatteryInformation));
+ assertThat(state.batteryInformation)
+ .isEqualTo(ConvertUtils.convertBatteryInformationToString(mBatteryInformation));
}
private static BatteryState create(BatteryInformation batteryInformation) {
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/db/BatteryUsageSlotDaoTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/db/BatteryUsageSlotDaoTest.java
index 6f73954..1501bbd 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/db/BatteryUsageSlotDaoTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/db/BatteryUsageSlotDaoTest.java
@@ -61,7 +61,7 @@
@After
public void closeDb() {
mDatabase.close();
- BatteryStateDatabase.setBatteryStateDatabase(/*database=*/ null);
+ BatteryStateDatabase.setBatteryStateDatabase(/* database= */ null);
}
@Test
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/db/BatteryUsageSlotEntityTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/db/BatteryUsageSlotEntityTest.java
index ef276eb..4c037b9 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/db/BatteryUsageSlotEntityTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/db/BatteryUsageSlotEntityTest.java
@@ -31,11 +31,11 @@
final long timestamp = 10001L;
final String batteryUsageSlotString = "batteryUsageSlotString";
- BatteryUsageSlotEntity entity = BatteryUsageSlotEntity
- .newBuilder()
- .setTimestamp(timestamp)
- .setBatteryUsageSlot(batteryUsageSlotString)
- .build();
+ BatteryUsageSlotEntity entity =
+ BatteryUsageSlotEntity.newBuilder()
+ .setTimestamp(timestamp)
+ .setBatteryUsageSlot(batteryUsageSlotString)
+ .build();
// Verifies the app relative information.
assertThat(entity.timestamp).isEqualTo(timestamp);
diff --git a/tests/robotests/src/com/android/settings/inputmethod/KeyboardSettingsPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/inputmethod/KeyboardSettingsPreferenceControllerTest.java
index 4806b8a..b8070d3 100644
--- a/tests/robotests/src/com/android/settings/inputmethod/KeyboardSettingsPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/inputmethod/KeyboardSettingsPreferenceControllerTest.java
@@ -56,6 +56,9 @@
})
public class KeyboardSettingsPreferenceControllerTest {
+ private static final int VENDOR_ID = 123;
+ private static final int PRODUCT_ID = 456;
+
@Rule
public MockitoRule mMockitoRule = MockitoJUnit.rule();
@@ -88,7 +91,9 @@
"TEST_DEVICE",
mInputDeviceIdentifier,
"TEST_DEVICE_LABEL",
- address);
+ address,
+ VENDOR_ID,
+ PRODUCT_ID);
List<HardKeyboardDeviceInfo> keyboards = new ArrayList<>();
keyboards.add(deviceInfo);
when(mController.getHardKeyboardList()).thenReturn(keyboards);
diff --git a/tests/robotests/src/com/android/settings/inputmethod/PhysicalKeyboardPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/inputmethod/PhysicalKeyboardPreferenceControllerTest.java
index df05203..9ddfd5b 100644
--- a/tests/robotests/src/com/android/settings/inputmethod/PhysicalKeyboardPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/inputmethod/PhysicalKeyboardPreferenceControllerTest.java
@@ -52,6 +52,8 @@
private static final String DEVICE_NAME = "deviceName";
private static final String LAYOUT_LABEL = "deviceLayutLabel";
private static final String BLUETOOTHADDRESS = "deviceBluetoothAddress";
+ private static final int VENDOR_ID = 123;
+ private static final int PRODUCT_ID = 456;
@Mock
private Context mContext;
@@ -84,7 +86,9 @@
DEVICE_NAME,
mIdentifier,
LAYOUT_LABEL,
- BLUETOOTHADDRESS));
+ BLUETOOTHADDRESS,
+ VENDOR_ID,
+ PRODUCT_ID));
mController = spy(new PhysicalKeyboardPreferenceController(context, null));
when(mController.getKeyboards()).thenReturn(keyboards);
diff --git a/tests/robotests/src/com/android/settings/inputmethod/TrackpadBottomPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/inputmethod/TrackpadBottomPreferenceControllerTest.java
index bf2d8b0..fa73768 100644
--- a/tests/robotests/src/com/android/settings/inputmethod/TrackpadBottomPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/inputmethod/TrackpadBottomPreferenceControllerTest.java
@@ -18,6 +18,11 @@
import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.verify;
+
+import android.app.settings.SettingsEnums;
import android.content.Context;
import android.os.UserHandle;
import android.provider.Settings;
@@ -26,10 +31,14 @@
import com.android.settings.R;
import com.android.settings.core.BasePreferenceController;
+import com.android.settings.testutils.FakeFeatureFactory;
import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
+import org.mockito.junit.MockitoJUnit;
+import org.mockito.junit.MockitoRule;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.annotation.Config;
@@ -39,16 +48,20 @@
com.android.settings.testutils.shadow.ShadowSystemSettings.class,
})
public class TrackpadBottomPreferenceControllerTest {
+ @Rule
+ public MockitoRule rule = MockitoJUnit.rule();
private static final String PREFERENCE_KEY = "trackpad_bottom_right_tap";
private static final String SETTING_KEY = Settings.System.TOUCHPAD_RIGHT_CLICK_ZONE;
private Context mContext;
private TrackpadBottomPreferenceController mController;
+ private FakeFeatureFactory mFeatureFactory;
@Before
public void setUp() {
mContext = ApplicationProvider.getApplicationContext();
+ mFeatureFactory = FakeFeatureFactory.setupForTest();
mController = new TrackpadBottomPreferenceController(mContext, PREFERENCE_KEY);
}
@@ -74,6 +87,10 @@
UserHandle.USER_CURRENT);
assertThat(result).isEqualTo(1);
+ verify(mFeatureFactory.metricsFeatureProvider).action(
+ any(),
+ eq(SettingsEnums.ACTION_GESTURE_BOTTOM_RIGHT_TAP_CHANGED),
+ eq(true));
}
@Test
@@ -87,6 +104,10 @@
UserHandle.USER_CURRENT);
assertThat(result).isEqualTo(0);
+ verify(mFeatureFactory.metricsFeatureProvider).action(
+ any(),
+ eq(SettingsEnums.ACTION_GESTURE_BOTTOM_RIGHT_TAP_CHANGED),
+ eq(false));
}
@Test
diff --git a/tests/robotests/src/com/android/settings/inputmethod/TrackpadGoBackPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/inputmethod/TrackpadGoBackPreferenceControllerTest.java
index 0e1705e..85d56ef 100644
--- a/tests/robotests/src/com/android/settings/inputmethod/TrackpadGoBackPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/inputmethod/TrackpadGoBackPreferenceControllerTest.java
@@ -18,6 +18,11 @@
import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.verify;
+
+import android.app.settings.SettingsEnums;
import android.content.Context;
import android.provider.Settings;
@@ -25,25 +30,33 @@
import com.android.settings.R;
import com.android.settings.core.BasePreferenceController;
+import com.android.settings.testutils.FakeFeatureFactory;
import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
+import org.mockito.junit.MockitoJUnit;
+import org.mockito.junit.MockitoRule;
import org.robolectric.RobolectricTestRunner;
/** Tests for {@link TrackpadGoBackPreferenceController} */
@RunWith(RobolectricTestRunner.class)
public class TrackpadGoBackPreferenceControllerTest {
+ @Rule
+ public MockitoRule rule = MockitoJUnit.rule();
private static final String PREFERENCE_KEY = "gesture_go_back";
private static final String SETTING_KEY = Settings.Secure.TRACKPAD_GESTURE_BACK_ENABLED;
private Context mContext;
private TrackpadGoBackPreferenceController mController;
+ private FakeFeatureFactory mFeatureFactory;
@Before
public void setUp() {
mContext = ApplicationProvider.getApplicationContext();
+ mFeatureFactory = FakeFeatureFactory.setupForTest();
mController = new TrackpadGoBackPreferenceController(mContext, PREFERENCE_KEY);
}
@@ -65,6 +78,10 @@
int result = Settings.Secure.getInt(mContext.getContentResolver(), SETTING_KEY, 1);
assertThat(result).isEqualTo(1);
+ verify(mFeatureFactory.metricsFeatureProvider).action(
+ any(),
+ eq(SettingsEnums.ACTION_GESTURE_GO_BACK_CHANGED),
+ eq(true));
}
@Test
@@ -74,6 +91,10 @@
int result = Settings.Secure.getInt(mContext.getContentResolver(), SETTING_KEY, 1);
assertThat(result).isEqualTo(0);
+ verify(mFeatureFactory.metricsFeatureProvider).action(
+ any(),
+ eq(SettingsEnums.ACTION_GESTURE_GO_BACK_CHANGED),
+ eq(false));
}
@Test
diff --git a/tests/robotests/src/com/android/settings/inputmethod/TrackpadGoHomePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/inputmethod/TrackpadGoHomePreferenceControllerTest.java
index 3289bcc..6b3b3f5 100644
--- a/tests/robotests/src/com/android/settings/inputmethod/TrackpadGoHomePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/inputmethod/TrackpadGoHomePreferenceControllerTest.java
@@ -18,6 +18,11 @@
import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.verify;
+
+import android.app.settings.SettingsEnums;
import android.content.Context;
import android.provider.Settings;
@@ -25,25 +30,33 @@
import com.android.settings.R;
import com.android.settings.core.BasePreferenceController;
+import com.android.settings.testutils.FakeFeatureFactory;
import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
+import org.mockito.junit.MockitoJUnit;
+import org.mockito.junit.MockitoRule;
import org.robolectric.RobolectricTestRunner;
/** Tests for {@link TrackpadGoHomePreferenceController} */
@RunWith(RobolectricTestRunner.class)
public class TrackpadGoHomePreferenceControllerTest {
+ @Rule
+ public MockitoRule rule = MockitoJUnit.rule();
private static final String PREFERENCE_KEY = "gesture_go_home";
private static final String SETTING_KEY = Settings.Secure.TRACKPAD_GESTURE_HOME_ENABLED;
private Context mContext;
private TrackpadGoHomePreferenceController mController;
+ private FakeFeatureFactory mFeatureFactory;
@Before
public void setUp() {
mContext = ApplicationProvider.getApplicationContext();
+ mFeatureFactory = FakeFeatureFactory.setupForTest();
mController = new TrackpadGoHomePreferenceController(mContext, PREFERENCE_KEY);
}
@@ -65,6 +78,10 @@
int result = Settings.Secure.getInt(mContext.getContentResolver(), SETTING_KEY, 1);
assertThat(result).isEqualTo(1);
+ verify(mFeatureFactory.metricsFeatureProvider).action(
+ any(),
+ eq(SettingsEnums.ACTION_GESTURE_GO_HOME_CHANGED),
+ eq(true));
}
@Test
@@ -74,6 +91,10 @@
int result = Settings.Secure.getInt(mContext.getContentResolver(), SETTING_KEY, 1);
assertThat(result).isEqualTo(0);
+ verify(mFeatureFactory.metricsFeatureProvider).action(
+ any(),
+ eq(SettingsEnums.ACTION_GESTURE_GO_HOME_CHANGED),
+ eq(false));
}
@Test
diff --git a/tests/robotests/src/com/android/settings/inputmethod/TrackpadNotificationsPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/inputmethod/TrackpadNotificationsPreferenceControllerTest.java
index 3df1627..005bc9f 100644
--- a/tests/robotests/src/com/android/settings/inputmethod/TrackpadNotificationsPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/inputmethod/TrackpadNotificationsPreferenceControllerTest.java
@@ -18,6 +18,11 @@
import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.verify;
+
+import android.app.settings.SettingsEnums;
import android.content.Context;
import android.provider.Settings;
@@ -25,25 +30,33 @@
import com.android.settings.R;
import com.android.settings.core.BasePreferenceController;
+import com.android.settings.testutils.FakeFeatureFactory;
import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
+import org.mockito.junit.MockitoJUnit;
+import org.mockito.junit.MockitoRule;
import org.robolectric.RobolectricTestRunner;
/** Tests for {@link TrackpadNotificationsPreferenceController} */
@RunWith(RobolectricTestRunner.class)
public class TrackpadNotificationsPreferenceControllerTest {
+ @Rule
+ public MockitoRule rule = MockitoJUnit.rule();
private static final String PREFERENCE_KEY = "gesture_notifications";
private static final String SETTING_KEY = Settings.Secure.TRACKPAD_GESTURE_NOTIFICATION_ENABLED;
private Context mContext;
private TrackpadNotificationsPreferenceController mController;
+ private FakeFeatureFactory mFeatureFactory;
@Before
public void setUp() {
mContext = ApplicationProvider.getApplicationContext();
+ mFeatureFactory = FakeFeatureFactory.setupForTest();
mController = new TrackpadNotificationsPreferenceController(mContext, PREFERENCE_KEY);
}
@@ -65,6 +78,10 @@
int result = Settings.Secure.getInt(mContext.getContentResolver(), SETTING_KEY, 1);
assertThat(result).isEqualTo(1);
+ verify(mFeatureFactory.metricsFeatureProvider).action(
+ any(),
+ eq(SettingsEnums.ACTION_GESTURE_NOTIFICATION_CHANGED),
+ eq(true));
}
@Test
@@ -74,6 +91,10 @@
int result = Settings.Secure.getInt(mContext.getContentResolver(), SETTING_KEY, 1);
assertThat(result).isEqualTo(0);
+ verify(mFeatureFactory.metricsFeatureProvider).action(
+ any(),
+ eq(SettingsEnums.ACTION_GESTURE_NOTIFICATION_CHANGED),
+ eq(false));
}
@Test
diff --git a/tests/robotests/src/com/android/settings/inputmethod/TrackpadPointerSpeedPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/inputmethod/TrackpadPointerSpeedPreferenceControllerTest.java
index 25fd962..8449dba 100644
--- a/tests/robotests/src/com/android/settings/inputmethod/TrackpadPointerSpeedPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/inputmethod/TrackpadPointerSpeedPreferenceControllerTest.java
@@ -18,6 +18,11 @@
import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.verify;
+
+import android.app.settings.SettingsEnums;
import android.content.Context;
import android.hardware.input.InputSettings;
import android.os.UserHandle;
@@ -26,10 +31,14 @@
import androidx.test.core.app.ApplicationProvider;
import com.android.settings.core.BasePreferenceController;
+import com.android.settings.testutils.FakeFeatureFactory;
import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
+import org.mockito.junit.MockitoJUnit;
+import org.mockito.junit.MockitoRule;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.annotation.Config;
@@ -39,6 +48,8 @@
com.android.settings.testutils.shadow.ShadowSystemSettings.class,
})
public class TrackpadPointerSpeedPreferenceControllerTest {
+ @Rule
+ public MockitoRule rule = MockitoJUnit.rule();
private static final String PREFERENCE_KEY = "trackpad_pointer_speed";
private static final String SETTING_KEY = Settings.System.TOUCHPAD_POINTER_SPEED;
@@ -46,10 +57,12 @@
private Context mContext;
private TrackpadPointerSpeedPreferenceController mController;
private int mDefaultSpeed;
+ private FakeFeatureFactory mFeatureFactory;
@Before
public void setUp() {
mContext = ApplicationProvider.getApplicationContext();
+ mFeatureFactory = FakeFeatureFactory.setupForTest();
mController = new TrackpadPointerSpeedPreferenceController(mContext, PREFERENCE_KEY);
mDefaultSpeed = Settings.System.getIntForUser(
mContext.getContentResolver(),
@@ -89,6 +102,10 @@
assertThat(result).isTrue();
assertThat(mController.getSliderPosition()).isEqualTo(inputSpeed);
+ verify(mFeatureFactory.metricsFeatureProvider).action(
+ any(),
+ eq(SettingsEnums.ACTION_GESTURE_POINTER_SPEED_CHANGED),
+ eq(1));
}
@Test
diff --git a/tests/robotests/src/com/android/settings/inputmethod/TrackpadRecentAppsPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/inputmethod/TrackpadRecentAppsPreferenceControllerTest.java
index dbed542..2ef53a6 100644
--- a/tests/robotests/src/com/android/settings/inputmethod/TrackpadRecentAppsPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/inputmethod/TrackpadRecentAppsPreferenceControllerTest.java
@@ -18,6 +18,11 @@
import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.verify;
+
+import android.app.settings.SettingsEnums;
import android.content.Context;
import android.provider.Settings;
@@ -25,25 +30,33 @@
import com.android.settings.R;
import com.android.settings.core.BasePreferenceController;
+import com.android.settings.testutils.FakeFeatureFactory;
import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
+import org.mockito.junit.MockitoJUnit;
+import org.mockito.junit.MockitoRule;
import org.robolectric.RobolectricTestRunner;
/** Tests for {@link TrackpadRecentAppsPreferenceController} */
@RunWith(RobolectricTestRunner.class)
public class TrackpadRecentAppsPreferenceControllerTest {
+ @Rule
+ public MockitoRule rule = MockitoJUnit.rule();
private static final String PREFERENCE_KEY = "gesture_recent_apps";
private static final String SETTING_KEY = Settings.Secure.TRACKPAD_GESTURE_OVERVIEW_ENABLED;
private Context mContext;
private TrackpadRecentAppsPreferenceController mController;
+ private FakeFeatureFactory mFeatureFactory;
@Before
public void setUp() {
mContext = ApplicationProvider.getApplicationContext();
+ mFeatureFactory = FakeFeatureFactory.setupForTest();
mController = new TrackpadRecentAppsPreferenceController(mContext, PREFERENCE_KEY);
}
@@ -65,6 +78,10 @@
int result = Settings.Secure.getInt(mContext.getContentResolver(), SETTING_KEY, 1);
assertThat(result).isEqualTo(1);
+ verify(mFeatureFactory.metricsFeatureProvider).action(
+ any(),
+ eq(SettingsEnums.ACTION_GESTURE_RECENT_APPS_CHANGED),
+ eq(true));
}
@Test
@@ -74,6 +91,10 @@
int result = Settings.Secure.getInt(mContext.getContentResolver(), SETTING_KEY, 1);
assertThat(result).isEqualTo(0);
+ verify(mFeatureFactory.metricsFeatureProvider).action(
+ any(),
+ eq(SettingsEnums.ACTION_GESTURE_RECENT_APPS_CHANGED),
+ eq(false));
}
@Test
diff --git a/tests/robotests/src/com/android/settings/inputmethod/TrackpadReverseScrollingPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/inputmethod/TrackpadReverseScrollingPreferenceControllerTest.java
index fbe7407..f545c38 100644
--- a/tests/robotests/src/com/android/settings/inputmethod/TrackpadReverseScrollingPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/inputmethod/TrackpadReverseScrollingPreferenceControllerTest.java
@@ -18,6 +18,11 @@
import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.verify;
+
+import android.app.settings.SettingsEnums;
import android.content.Context;
import android.os.UserHandle;
import android.provider.Settings;
@@ -26,10 +31,14 @@
import com.android.settings.R;
import com.android.settings.core.BasePreferenceController;
+import com.android.settings.testutils.FakeFeatureFactory;
import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
+import org.mockito.junit.MockitoJUnit;
+import org.mockito.junit.MockitoRule;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.annotation.Config;
@@ -39,16 +48,20 @@
com.android.settings.testutils.shadow.ShadowSystemSettings.class,
})
public class TrackpadReverseScrollingPreferenceControllerTest {
+ @Rule
+ public MockitoRule rule = MockitoJUnit.rule();
private static final String PREFERENCE_KEY = "trackpad_reverse_scrolling";
private static final String SETTING_KEY = Settings.System.TOUCHPAD_NATURAL_SCROLLING;
private Context mContext;
private TrackpadReverseScrollingPreferenceController mController;
+ private FakeFeatureFactory mFeatureFactory;
@Before
public void setUp() {
mContext = ApplicationProvider.getApplicationContext();
+ mFeatureFactory = FakeFeatureFactory.setupForTest();
mController = new TrackpadReverseScrollingPreferenceController(mContext, PREFERENCE_KEY);
}
@@ -74,6 +87,10 @@
UserHandle.USER_CURRENT);
assertThat(result).isEqualTo(0);
+ verify(mFeatureFactory.metricsFeatureProvider).action(
+ any(),
+ eq(SettingsEnums.ACTION_GESTURE_REVERSE_SCROLLING_CHANGED),
+ eq(true));
}
@Test
@@ -87,6 +104,10 @@
UserHandle.USER_CURRENT);
assertThat(result).isEqualTo(1);
+ verify(mFeatureFactory.metricsFeatureProvider).action(
+ any(),
+ eq(SettingsEnums.ACTION_GESTURE_REVERSE_SCROLLING_CHANGED),
+ eq(false));
}
@Test
diff --git a/tests/robotests/src/com/android/settings/inputmethod/TrackpadSwitchAppsPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/inputmethod/TrackpadSwitchAppsPreferenceControllerTest.java
index 3f16025..5e354d2 100644
--- a/tests/robotests/src/com/android/settings/inputmethod/TrackpadSwitchAppsPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/inputmethod/TrackpadSwitchAppsPreferenceControllerTest.java
@@ -18,6 +18,11 @@
import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.verify;
+
+import android.app.settings.SettingsEnums;
import android.content.Context;
import android.provider.Settings;
@@ -25,25 +30,33 @@
import com.android.settings.R;
import com.android.settings.core.BasePreferenceController;
+import com.android.settings.testutils.FakeFeatureFactory;
import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
+import org.mockito.junit.MockitoJUnit;
+import org.mockito.junit.MockitoRule;
import org.robolectric.RobolectricTestRunner;
/** Tests for {@link TrackpadSwitchAppsPreferenceController} */
@RunWith(RobolectricTestRunner.class)
public class TrackpadSwitchAppsPreferenceControllerTest {
+ @Rule
+ public MockitoRule rule = MockitoJUnit.rule();
private static final String PREFERENCE_KEY = "gesture_switch_apps";
private static final String SETTING_KEY = Settings.Secure.TRACKPAD_GESTURE_QUICK_SWITCH_ENABLED;
private Context mContext;
private TrackpadSwitchAppsPreferenceController mController;
+ private FakeFeatureFactory mFeatureFactory;
@Before
public void setUp() {
mContext = ApplicationProvider.getApplicationContext();
+ mFeatureFactory = FakeFeatureFactory.setupForTest();
mController = new TrackpadSwitchAppsPreferenceController(mContext, PREFERENCE_KEY);
}
@@ -65,6 +78,10 @@
int result = Settings.Secure.getInt(mContext.getContentResolver(), SETTING_KEY, 1);
assertThat(result).isEqualTo(1);
+ verify(mFeatureFactory.metricsFeatureProvider).action(
+ any(),
+ eq(SettingsEnums.ACTION_GESTURE_SWITCH_APPS_CHANGED),
+ eq(true));
}
@Test
@@ -74,6 +91,10 @@
int result = Settings.Secure.getInt(mContext.getContentResolver(), SETTING_KEY, 1);
assertThat(result).isEqualTo(0);
+ verify(mFeatureFactory.metricsFeatureProvider).action(
+ any(),
+ eq(SettingsEnums.ACTION_GESTURE_SWITCH_APPS_CHANGED),
+ eq(false));
}
@Test
diff --git a/tests/robotests/src/com/android/settings/inputmethod/TrackpadTapToClickPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/inputmethod/TrackpadTapToClickPreferenceControllerTest.java
index 241e3df..8e9d026 100644
--- a/tests/robotests/src/com/android/settings/inputmethod/TrackpadTapToClickPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/inputmethod/TrackpadTapToClickPreferenceControllerTest.java
@@ -18,6 +18,11 @@
import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.verify;
+
+import android.app.settings.SettingsEnums;
import android.content.Context;
import android.os.UserHandle;
import android.provider.Settings;
@@ -26,10 +31,14 @@
import com.android.settings.R;
import com.android.settings.core.BasePreferenceController;
+import com.android.settings.testutils.FakeFeatureFactory;
import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
+import org.mockito.junit.MockitoJUnit;
+import org.mockito.junit.MockitoRule;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.annotation.Config;
@@ -39,16 +48,20 @@
com.android.settings.testutils.shadow.ShadowSystemSettings.class,
})
public class TrackpadTapToClickPreferenceControllerTest {
+ @Rule
+ public MockitoRule rule = MockitoJUnit.rule();
private static final String PREFERENCE_KEY = "trackpad_tap_to_click";
private static final String SETTING_KEY = Settings.System.TOUCHPAD_TAP_TO_CLICK;
private Context mContext;
private TrackpadTapToClickPreferenceController mController;
+ private FakeFeatureFactory mFeatureFactory;
@Before
public void setUp() {
mContext = ApplicationProvider.getApplicationContext();
+ mFeatureFactory = FakeFeatureFactory.setupForTest();
mController = new TrackpadTapToClickPreferenceController(mContext, PREFERENCE_KEY);
}
@@ -74,6 +87,10 @@
UserHandle.USER_CURRENT);
assertThat(result).isEqualTo(1);
+ verify(mFeatureFactory.metricsFeatureProvider).action(
+ any(),
+ eq(SettingsEnums.ACTION_GESTURE_TAP_TO_CLICK_CHANGED),
+ eq(true));
}
@Test
@@ -87,6 +104,10 @@
UserHandle.USER_CURRENT);
assertThat(result).isEqualTo(0);
+ verify(mFeatureFactory.metricsFeatureProvider).action(
+ any(),
+ eq(SettingsEnums.ACTION_GESTURE_TAP_TO_CLICK_CHANGED),
+ eq(false));
}
@Test
diff --git a/tests/robotests/src/com/android/settings/security/ContentProtectionPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/security/ContentProtectionPreferenceControllerTest.java
index 5cc931e..a7990d4 100644
--- a/tests/robotests/src/com/android/settings/security/ContentProtectionPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/security/ContentProtectionPreferenceControllerTest.java
@@ -17,54 +17,109 @@
package com.android.settings.security;
import static android.view.contentprotection.flags.Flags.FLAG_SETTING_UI_ENABLED;
+
import static com.google.common.truth.Truth.assertThat;
-import android.content.ContentResolver;
+import android.content.ComponentName;
import android.content.Context;
import android.platform.test.flag.junit.SetFlagsRule;
-import android.provider.Settings;
-import androidx.preference.Preference;
+import androidx.test.core.app.ApplicationProvider;
-import com.android.settings.R;
-
-import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
-import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-import org.robolectric.annotation.Config;
@RunWith(RobolectricTestRunner.class)
public class ContentProtectionPreferenceControllerTest {
+ private static final String PACKAGE_NAME = "com.test.package";
+
+ private static final ComponentName COMPONENT_NAME =
+ new ComponentName(PACKAGE_NAME, "TestClass");
+
@Rule public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
- private Context mContext;
+ private final Context mContext = ApplicationProvider.getApplicationContext();
+
+ private String mConfigDefaultContentProtectionService = COMPONENT_NAME.flattenToString();
+
private ContentProtectionPreferenceController mController;
- private Preference mPreference;
+
+ private boolean mSettingUiEnabled;
@Before
public void setUp() {
- MockitoAnnotations.initMocks(this);
- mContext = RuntimeEnvironment.application;
- mController = new ContentProtectionPreferenceController(mContext, "key");
- mPreference = new Preference(mContext);
- mPreference.setKey(mController.getPreferenceKey());
+ mController = new TestContentProtectionPreferenceController();
}
@Test
public void isAvailable_flagSettingUiDisabled_isFalse() {
- mSetFlagsRule.disableFlags(FLAG_SETTING_UI_ENABLED);
+ mSettingUiEnabled = false;
+
assertThat(mController.isAvailable()).isFalse();
}
@Test
- public void isAvailable_flagSettingUiEnabled_isTrue() {
+ public void isAvailable_componentNameNull_isFalse() {
+ mConfigDefaultContentProtectionService = null;
mSetFlagsRule.enableFlags(FLAG_SETTING_UI_ENABLED);
+ mController = new TestContentProtectionPreferenceController();
+
+ assertThat(mController.isAvailable()).isFalse();
+ }
+
+ @Test
+ public void isAvailable_componentNameEmpty_isFalse() {
+ mConfigDefaultContentProtectionService = "";
+ mSetFlagsRule.enableFlags(FLAG_SETTING_UI_ENABLED);
+ mController = new TestContentProtectionPreferenceController();
+
+ assertThat(mController.isAvailable()).isFalse();
+ }
+
+ @Test
+ public void isAvailable_componentNameBlank_isFalse() {
+ mConfigDefaultContentProtectionService = " ";
+ mSetFlagsRule.enableFlags(FLAG_SETTING_UI_ENABLED);
+ mController = new TestContentProtectionPreferenceController();
+
+ assertThat(mController.isAvailable()).isFalse();
+ }
+
+ @Test
+ public void isAvailable_componentNameInvalid_isFalse() {
+ mConfigDefaultContentProtectionService = "invalid";
+ mSetFlagsRule.enableFlags(FLAG_SETTING_UI_ENABLED);
+ mController = new TestContentProtectionPreferenceController();
+
+ assertThat(mController.isAvailable()).isFalse();
+ }
+
+ @Test
+ public void isAvailable_flagSettingUiEnabled_componentNameValid_isTrue() {
+ mSettingUiEnabled = true;
+
assertThat(mController.isAvailable()).isTrue();
}
+
+ private class TestContentProtectionPreferenceController
+ extends ContentProtectionPreferenceController {
+
+ TestContentProtectionPreferenceController() {
+ super(ContentProtectionPreferenceControllerTest.this.mContext, "key");
+ }
+
+ @Override
+ protected String getContentProtectionServiceFlatComponentName() {
+ return mConfigDefaultContentProtectionService;
+ }
+
+ @Override
+ protected boolean settingUiEnabled() {
+ return mSettingUiEnabled;
+ }
+ }
}
diff --git a/tests/robotests/src/com/android/settings/security/ContentProtectionPreferenceFragmentTest.java b/tests/robotests/src/com/android/settings/security/ContentProtectionPreferenceFragmentTest.java
index 431dd0c..c9b1c64 100644
--- a/tests/robotests/src/com/android/settings/security/ContentProtectionPreferenceFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/security/ContentProtectionPreferenceFragmentTest.java
@@ -17,16 +17,29 @@
package com.android.settings.security;
import static android.app.settings.SettingsEnums.CONTENT_PROTECTION_PREFERENCE;
+
+import static com.android.settings.security.ContentProtectionPreferenceFragment.KEY_WORK_PROFILE_SWITCH;
+
import static com.google.common.truth.Truth.assertThat;
+
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.spy;
+import android.content.ComponentName;
import android.content.Context;
+import android.content.pm.UserInfo;
+import android.os.UserHandle;
+import android.os.UserManager;
import android.provider.SearchIndexableResource;
+import androidx.preference.PreferenceScreen;
+import androidx.preference.SwitchPreference;
+
import com.android.settings.R;
+import com.android.settings.Utils;
import com.android.settings.testutils.XmlTestUtils;
import com.android.settings.testutils.shadow.ShadowDashboardFragment;
+import com.android.settings.testutils.shadow.ShadowUtils;
import org.junit.Before;
import org.junit.Test;
@@ -37,44 +50,116 @@
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
+import java.util.Arrays;
import java.util.List;
@RunWith(RobolectricTestRunner.class)
-@Config(shadows = ShadowDashboardFragment.class)
+@Config(
+ shadows = {
+ ShadowDashboardFragment.class,
+ ShadowUtils.class,
+ })
public class ContentProtectionPreferenceFragmentTest {
+ private static final int TEST_PRIMARY_USER_ID = 10;
+ private static final int TEST_MANAGED_PROFILE_ID = 11;
- @Mock
- private ContentProtectionPreferenceFragment mMockFragment;
+ private ContentProtectionPreferenceFragment mFragment;
+ @Mock private UserManager mMockUserManager;
private Context mContext;
+ private PreferenceScreen mScreen;
+ private SwitchPreference mWorkProfileSwitch;
@Before
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
- mContext = spy(RuntimeEnvironment.application);
- mMockFragment = spy(new ContentProtectionPreferenceFragment());
- doReturn(mContext).when(mMockFragment).getContext();
+ mContext = spy(RuntimeEnvironment.application);
+ mFragment = spy(new ContentProtectionPreferenceFragment());
+ mScreen = spy(new PreferenceScreen(mContext, /* attrs= */ null));
+
+ doReturn(mContext).when(mFragment).getContext();
+ doReturn(mScreen).when(mFragment).getPreferenceScreen();
+
+ mWorkProfileSwitch = new SwitchPreference(mContext);
+ mWorkProfileSwitch.setVisible(false);
+ doReturn(mWorkProfileSwitch).when(mScreen).findPreference(KEY_WORK_PROFILE_SWITCH);
+
+ doReturn(mMockUserManager).when(mContext).getSystemService(UserManager.class);
+ doReturn(TEST_PRIMARY_USER_ID).when(mMockUserManager).getUserHandle();
+ UserInfo primaryUser =
+ new UserInfo(
+ TEST_PRIMARY_USER_ID,
+ null,
+ UserInfo.FLAG_INITIALIZED | UserInfo.FLAG_PRIMARY);
+ doReturn(primaryUser).when(mMockUserManager).getUserInfo(TEST_PRIMARY_USER_ID);
+ UserInfo managedProfile =
+ new UserInfo(
+ TEST_MANAGED_PROFILE_ID,
+ null,
+ UserInfo.FLAG_INITIALIZED | UserInfo.FLAG_MANAGED_PROFILE);
+ doReturn(managedProfile).when(mMockUserManager).getUserInfo(TEST_MANAGED_PROFILE_ID);
+ }
+
+ @Test
+ public void onActivityCreated_workProfileDisplayWorkSwitch() {
+ UserHandle[] userHandles =
+ new UserHandle[] {
+ new UserHandle(TEST_PRIMARY_USER_ID), new UserHandle(TEST_MANAGED_PROFILE_ID)
+ };
+ doReturn(Arrays.asList(userHandles)).when(mMockUserManager).getUserProfiles();
+
+ assertThat(Utils.getManagedProfile(mMockUserManager).getIdentifier())
+ .isEqualTo(TEST_MANAGED_PROFILE_ID);
+
+ mFragment.onActivityCreated(null);
+
+ assertThat(mWorkProfileSwitch.isVisible()).isTrue();
+ assertThat(mWorkProfileSwitch.isChecked()).isFalse();
+ assertThat(mWorkProfileSwitch.isEnabled()).isFalse();
+ }
+
+ @Test
+ public void onActivityCreated_fullyManagedMode_bottomSwitchInvisible() {
+ final ComponentName componentName =
+ ComponentName.unflattenFromString("com.android.test/.DeviceAdminReceiver");
+ ShadowUtils.setDeviceOwnerComponent(componentName);
+
+ mFragment.onActivityCreated(null);
+
+ assertThat(mWorkProfileSwitch.isVisible()).isFalse();
+ }
+
+ @Test
+ public void onActivityCreated_personalProfileHideWorkSwitch() {
+ UserHandle[] userHandles = new UserHandle[] {new UserHandle(TEST_PRIMARY_USER_ID)};
+ doReturn(Arrays.asList(userHandles)).when(mMockUserManager).getUserProfiles();
+
+ assertThat(Utils.getManagedProfile(mMockUserManager)).isNull();
+
+ mFragment.onActivityCreated(null);
+
+ assertThat(mWorkProfileSwitch.isVisible()).isFalse();
}
@Test
public void getMetricsCategory() {
- assertThat(mMockFragment.getMetricsCategory()).isEqualTo(CONTENT_PROTECTION_PREFERENCE);
+ assertThat(mFragment.getMetricsCategory()).isEqualTo(CONTENT_PROTECTION_PREFERENCE);
}
@Test
- public void getPreferenceScreenResId(){
- assertThat(mMockFragment.getPreferenceScreenResId())
- .isEqualTo(R.layout.content_protection_preference_fragment);
+ public void getPreferenceScreenResId() {
+ assertThat(mFragment.getPreferenceScreenResId())
+ .isEqualTo(R.layout.content_protection_preference_fragment);
}
@Test
public void getNonIndexableKeys_existInXmlLayout() {
final List<String> nonIndexableKeys =
- ContentProtectionPreferenceFragment.SEARCH_INDEX_DATA_PROVIDER
- .getNonIndexableKeys(mContext);
+ ContentProtectionPreferenceFragment.SEARCH_INDEX_DATA_PROVIDER.getNonIndexableKeys(
+ mContext);
final List<String> allKeys =
- XmlTestUtils.getKeysFromPreferenceXml(mContext,
- R.layout.content_protection_preference_fragment);
+ XmlTestUtils.getKeysFromPreferenceXml(
+ mContext, R.layout.content_protection_preference_fragment);
assertThat(allKeys).containsAtLeastElementsIn(nonIndexableKeys);
}
@@ -83,10 +168,11 @@
public void searchIndexProvider_shouldIndexResource() {
final List<SearchIndexableResource> indexRes =
ContentProtectionPreferenceFragment.SEARCH_INDEX_DATA_PROVIDER
- .getXmlResourcesToIndex(mContext, /* enabled = */ true);
+ .getXmlResourcesToIndex(mContext, /* enabled= */ true);
assertThat(indexRes).isNotNull();
assertThat(indexRes).isNotEmpty();
- assertThat(indexRes.get(0).xmlResId).isEqualTo(mMockFragment.getPreferenceScreenResId());
+ assertThat(indexRes.get(0).xmlResId).isEqualTo(mFragment.getPreferenceScreenResId());
}
}
+
diff --git a/tests/robotests/src/com/android/settings/security/ContentProtectionTogglePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/security/ContentProtectionTogglePreferenceControllerTest.java
new file mode 100644
index 0000000..b10ff22
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/security/ContentProtectionTogglePreferenceControllerTest.java
@@ -0,0 +1,146 @@
+/*
+ * 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.security;
+
+import static com.android.settings.security.ContentProtectionTogglePreferenceController.KEY_CONTENT_PROTECTION_PREFERENCE;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.when;
+
+import android.content.ComponentName;
+import android.content.Context;
+import android.platform.test.flag.junit.SetFlagsRule;
+import android.provider.Settings;
+
+import androidx.preference.PreferenceScreen;
+import androidx.test.core.app.ApplicationProvider;
+
+import com.android.settings.testutils.shadow.ShadowUtils;
+import com.android.settings.widget.SettingsMainSwitchPreference;
+
+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;
+import org.mockito.MockitoAnnotations;
+import org.mockito.junit.MockitoJUnit;
+import org.mockito.junit.MockitoRule;
+import org.robolectric.RobolectricTestRunner;
+import org.robolectric.annotation.Config;
+
+@RunWith(RobolectricTestRunner.class)
+@Config(
+ shadows = {
+ ShadowUtils.class,
+ })
+public class ContentProtectionTogglePreferenceControllerTest {
+
+ @Rule public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
+ @Rule public final MockitoRule mMockitoRule = MockitoJUnit.rule();
+
+ @Mock private PreferenceScreen mScreen;
+
+ private SettingsMainSwitchPreference mSwitchPreference;
+ private final Context mContext = ApplicationProvider.getApplicationContext();
+ private ContentProtectionTogglePreferenceController mController;
+ private int mSettingBackupValue;
+
+ @Before
+ public void setUp() {
+ MockitoAnnotations.initMocks(this);
+ mController = new ContentProtectionTogglePreferenceController(mContext, "key");
+ mSwitchPreference = new SettingsMainSwitchPreference(mContext);
+ when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mSwitchPreference);
+ mSettingBackupValue = getContentProtectionGlobalSetting();
+ Settings.Global.putInt(mContext.getContentResolver(), KEY_CONTENT_PROTECTION_PREFERENCE, 0);
+ }
+
+ @After
+ public void tearDown() {
+ Settings.Global.putInt(
+ mContext.getContentResolver(),
+ KEY_CONTENT_PROTECTION_PREFERENCE,
+ mSettingBackupValue);
+ }
+
+ @Test
+ public void isAvailable_alwaysAvailable() {
+ assertThat(mController.isAvailable()).isTrue();
+ }
+
+ @Test
+ public void isChecked_settingTurnOn() {
+ Settings.Global.putInt(mContext.getContentResolver(), KEY_CONTENT_PROTECTION_PREFERENCE, 1);
+
+ assertThat(mController.isChecked()).isTrue();
+ }
+
+ @Test
+ public void isChecked_fullyManagedMode_settingTurnOff() {
+ final ComponentName componentName =
+ ComponentName.unflattenFromString("com.android.test/.DeviceAdminReceiver");
+ ShadowUtils.setDeviceOwnerComponent(componentName);
+ Settings.Global.putInt(mContext.getContentResolver(), KEY_CONTENT_PROTECTION_PREFERENCE, 1);
+
+ ContentProtectionTogglePreferenceController controller =
+ new ContentProtectionTogglePreferenceController(mContext, "key");
+
+ assertThat(controller.isChecked()).isFalse();
+ }
+
+ @Test
+ public void isChecked_settingTurnOff() {
+ Settings.Global.putInt(
+ mContext.getContentResolver(), KEY_CONTENT_PROTECTION_PREFERENCE, -1);
+
+ assertThat(mController.isChecked()).isFalse();
+ assertThat(getContentProtectionGlobalSetting()).isEqualTo(-1);
+ }
+
+ @Test
+ public void isChecked_settingDefaultOn() {
+ assertThat(mController.isChecked()).isTrue();
+ assertThat(getContentProtectionGlobalSetting()).isEqualTo(0);
+ }
+
+ @Test
+ public void onSwitchChanged_switchChecked_manuallyEnabled() {
+ mController.displayPreference(mScreen);
+ mController.setChecked(false);
+
+ mController.onSwitchChanged(/* switchView= */ null, /* isChecked= */ true);
+
+ assertThat(getContentProtectionGlobalSetting()).isEqualTo(1);
+ }
+
+ @Test
+ public void onSwitchChanged_switchUnchecked_manuallyDisabled() {
+ mController.displayPreference(mScreen);
+
+ mController.onSwitchChanged(/* switchView= */ null, /* isChecked= */ false);
+
+ assertThat(getContentProtectionGlobalSetting()).isEqualTo(-1);
+ }
+
+ private int getContentProtectionGlobalSetting() {
+ return Settings.Global.getInt(
+ mContext.getContentResolver(), KEY_CONTENT_PROTECTION_PREFERENCE, 0);
+ }
+}