[automerger skipped] Import translations. DO NOT MERGE ANYWHERE am: 0baf26c03a -s ours am: 1e304eb35f -s ours
am skip reason: subject contains skip directive
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/services/Telecomm/+/13842301
MUST ONLY BE SUBMITTED BY AUTOMERGER
Change-Id: Ifb9ca0a1cad1208b06ee11cde197b52b7f2e42d1
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 327d0a2..45e3151 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -47,6 +47,7 @@
<uses-permission android:name="android.permission.READ_CALL_LOG"/>
<uses-permission android:name="android.permission.READ_DEVICE_CONFIG"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
+ <uses-permission android:name="android.permission.READ_PROJECTION_STATE"/>
<uses-permission android:name="android.permission.SEND_SMS"/>
<uses-permission android:name="android.permission.STOP_APP_SWITCHES"/>
<uses-permission android:name="android.permission.VIBRATE"/>
@@ -165,6 +166,7 @@
<activity-alias android:name="PrivilegedCallActivity"
android:targetActivity=".components.UserCallActivity"
android:permission="android.permission.CALL_PRIVILEGED"
+ android:exported="true"
android:process=":ui">
<intent-filter android:priority="1000">
<action android:name="android.intent.action.CALL_PRIVILEGED"/>
@@ -200,6 +202,7 @@
<activity-alias android:name="EmergencyCallActivity"
android:targetActivity=".components.UserCallActivity"
android:permission="android.permission.CALL_PRIVILEGED"
+ android:exported="true"
android:process=":ui">
<intent-filter android:priority="1000">
<action android:name="android.intent.action.CALL_EMERGENCY"/>
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
index ac2140b..2857be3 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -28,10 +28,11 @@
<string name="notification_missedCall_message" msgid="4054698824390076431">"Boodskap"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"Oproep is ontkoppel"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"Die oproep na <xliff:g id="CALLER">%s</xliff:g> is ontkoppel as gevolg van \'n noodoproep wat gemaak word."</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"Jou oproep is ontkoppel as gevolg van \'n noodoproep wat gemaak word."</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"Agtergrondoproep"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"<xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g> het \'n oproep in die agtergrond geplaas. Hierdie program kan dalk toegang tot oudio kry en dit oor die oproep speel."</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"Omgevalde foonprogram"</string>
- <string name="notification_crashedInCallService_body" msgid="7821729360036047995">"Jou foonprogram <xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> het omgeval. Jou oproep is voortgesit deur die foonprogram te gebruik wat jy saam met jou toestel gekry het."</string>
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> het opgehou reageer"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"Jou oproep het die foonprogram gebruik wat saam met jou toestel gekom het"</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"Oproep stilgemaak."</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Luidsprekerfoon geaktiveer."</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Kan nie nou praat nie. Hoe\'s dit?"</string>
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
index 1c2d161..df8215c 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -28,11 +28,11 @@
<string name="notification_missedCall_message" msgid="4054698824390076431">"መልዕክት"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"የተቋረጠ ጥሪ"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"የአደጋ ጊዜ ጥሪ እየተደረገ ስለሆነ ወደ <xliff:g id="CALLER">%s</xliff:g> የሚደረገው ጥሪ ተቋርጧል።"</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"የአደጋ ጊዜ ጥሪ እየተደረገ ስለሆነ የእርስዎ ጥሪ ተቋርጧል።"</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"የጀርባ ጥሪ"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"<xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g> ጥሪን ወደ ጀርባ አስቀምጧል። ይህ መተግበሪያ ጥሪው ላይ ኦዲዮ ላይ እየደረሰ ወይም እያጫወተ ሊሆን ይችላል።"</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"የተበላሸ የስልክ መተግበሪያ"</string>
- <!-- no translation found for notification_crashedInCallService_body (7821729360036047995) -->
- <skip />
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> ምላሽ መስጠት አቁሟል"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"ጥሪዎ ከእርስዎ መሣሪያ ጋር የመጣውን የስልክ መተግበሪያ ተጠቅሟል"</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"ጥሪ ፀጥ ብሏል"</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"የስልክ ድምፅ ማጉያ ነቅቷል።"</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"አሁን ማውራት አልችልም። ሰላም ነው?"</string>
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index 70d2334..7e204d0 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -28,11 +28,11 @@
<string name="notification_missedCall_message" msgid="4054698824390076431">"رسالة"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"تم قطع الاتصال"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"تم قطع اتصالك بجهة الاتصال <xliff:g id="CALLER">%s</xliff:g> بسبب إجراء مكالمة طوارئ."</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"تم قطع مكالمتك بسبب إجراء مكالمة طوارئ."</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"مكالمة في الخلفية"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"وضَع <xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g> مكالمة في الخلفية. يمكن لهذا التطبيق الوصول إلى الصوت وتشغيله عبر المكالمة."</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"لقد تعطّل تطبيق الهاتف"</string>
- <!-- no translation found for notification_crashedInCallService_body (7821729360036047995) -->
- <skip />
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"توقّف <xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> عن الاستجابة"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"تمت مكالمتك باستخدام تطبيق \"الهاتف\" الذي أتى مع جهازك."</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"تم كتم صوت المكالمة."</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"تم تفعيل مكبر صوت الهاتف."</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"لا يمكنني التحدث الآن. ما الأمر؟"</string>
@@ -73,10 +73,10 @@
<string name="non_primary_user" msgid="315564589279622098">"يمكن لمالك الجهاز فقط الاطّلاع على الأرقام المحظورة وإدارتها."</string>
<string name="delete_icon_description" msgid="5335959254954774373">"إلغاء الحظر"</string>
<string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"تم إيقاف الحظر مؤقتًا"</string>
- <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"بعد الاتصال الهاتفي أو إرسال رسالة نصية إلى رقم طوارئ، يتم إيقاف تفعيل الحظر لضمان تمكن خدمات الطوارئ من الاتصال بك."</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"بعد الاتصال الهاتفي أو إرسال رسالة نصية إلى رقم طوارئ، يتم إيقاف الحظر لضمان تمكن خدمات الطوارئ من الاتصال بك."</string>
<string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"إعادة تفعيل الآن"</string>
<string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"تم حظر <xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g>"</string>
- <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"تم إلغاء حظر <xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g>"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"تمت إزالة حظر <xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g>"</string>
<string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"غير قادر على حظر رقم الطوارئ."</string>
<string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"تم حظر <xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> بالفعل."</string>
<string name="toast_personal_call_msg" msgid="5817631570381795610">"يتم استخدام أداة الاتصال الشخصي لإجراء الاتصال"</string>
diff --git a/res/values-as/strings.xml b/res/values-as/strings.xml
index 5f123f9..2f5de68 100644
--- a/res/values-as/strings.xml
+++ b/res/values-as/strings.xml
@@ -28,10 +28,11 @@
<string name="notification_missedCall_message" msgid="4054698824390076431">"বাৰ্তা"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"সংযোগ বিচ্ছিন্ন কৰা কল"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"এট জৰুৰীকালীন কল কৰাৰ কাৰণে <xliff:g id="CALLER">%s</xliff:g>লৈ কৰা কলটোৰ সংযোগ বিচ্ছিন্ন কৰা হৈছে।"</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"এট জৰুৰীকালীন কল কৰাৰ কাৰণে আপোনাৰ কলটোৰ সংযোগ বিচ্ছিন্ন কৰা হৈছে।"</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"নেপথ্যৰ কল"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"<xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g>এ নেপথ্যত এটা কল কৰিছে। এই এপ্টোৱে কলটোত অডিঅ’ এক্সেছ আৰু প্লে’ কৰি থাকিব পাৰে।"</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"ক্ৰেশ্ব হোৱা ফ\'ন এপ্"</string>
- <string name="notification_crashedInCallService_body" msgid="7821729360036047995">"আপোনাৰ ফ\'ন এপ্ <xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> ক্ৰেশ্ব হৈছে। আপোনাৰ ডিভাইচটোৰ লগত অহা ফ\'ন এপ্টো ব্যৱহাৰ কৰি আপোনাৰ কলটো অব্যাহত ৰখা হৈছিল।"</string>
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g>এ সঁহাৰি দিয়া বন্ধ কৰিছে"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"আপোনাৰ কলটোৱে আপোনাৰ ডিভাইচটোৰ লগত অহা ফ’ন এপ্টো ব্যৱহাৰ কৰিছে"</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"কল মিউট কৰা হৈছে।"</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"স্পীকাৰফ\'ন সক্ষম কৰা হৈছে।"</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"এতিয়া কথা পাতিব নোৱাৰোঁ। কি খবৰ?"</string>
diff --git a/res/values-az/strings.xml b/res/values-az/strings.xml
index aa176e7..d79343f 100644
--- a/res/values-az/strings.xml
+++ b/res/values-az/strings.xml
@@ -28,10 +28,11 @@
<string name="notification_missedCall_message" msgid="4054698824390076431">"Mesaj"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"Əlaqəsi kəsilmiş zəng"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"Hazırda təcili zəng edildiyi üçün <xliff:g id="CALLER">%s</xliff:g> ilə zəng kəsilib."</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"Təcili zəng edildiyinə görə zənginizin əlaqəsi kəsildi."</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"Arxa fon zəngi"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"<xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g> arxa fonda zəng edib. Bu tətbiq zəng ilə daxil ola və oxuda bilər."</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"Xəta baş verən telefon tətbiqi"</string>
- <string name="notification_crashedInCallService_body" msgid="7821729360036047995">"<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> tətbiqində xəta baş verdi. Zənginiz cihazda əvvəlcədən quraşdırılmış telefon tətbiqindən davam etdirildi."</string>
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> tətbiqində xəta baş verdi"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"Zəng üçün cihazda əvvəlcədən quraşdırılan telefon tətbiqindən istifadə edildi"</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"Səssiz zəng edin."</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Spikerfon aktivdir."</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"İndi danışmaq olmur. Nə olub?"</string>
diff --git a/res/values-b+sr+Latn/strings.xml b/res/values-b+sr+Latn/strings.xml
index 03225e5..eba8c5c 100644
--- a/res/values-b+sr+Latn/strings.xml
+++ b/res/values-b+sr+Latn/strings.xml
@@ -20,7 +20,7 @@
<string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"Telefon"</string>
<string name="unknown" msgid="6993977514360123431">"Nepoznato"</string>
<string name="notification_missedCallTitle" msgid="5060387047205532974">"Propušten poziv"</string>
- <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"Propušten poziv za Work"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"Propušten poslovni poziv"</string>
<string name="notification_missedCallsTitle" msgid="3910479625507893809">"Propušteni pozivi"</string>
<string name="notification_missedCallsMsg" msgid="5055782736170916682">"Broj propuštenih poziva: <xliff:g id="NUM_MISSED_CALLS">%s</xliff:g>"</string>
<string name="notification_missedCallTicker" msgid="6731461957487087769">"Propušten poziv od: <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
@@ -28,10 +28,11 @@
<string name="notification_missedCall_message" msgid="4054698824390076431">"Poruka"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"Poziv je prekinut"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"Poziv sa <xliff:g id="CALLER">%s</xliff:g> je prekinut jer se upućuje hitni poziv."</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"Poziv je prekinut jer se upućuje hitni poziv."</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"Poziv u pozadini"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"Aplikacija <xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g> je uputila poziv u pozadini. Ona može da pristupa zvuku i pušta ga tokom poziva."</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"Aplikacija za telefoniranje koja je otkazala"</string>
- <string name="notification_crashedInCallService_body" msgid="7821729360036047995">"Aplikacija za telefoniranje <xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> je otkazala. Poziv je nastavljen pomoću aplikacije za telefoniranje koju ste dobili uz uređaj."</string>
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> više ne reaguje"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"Poziv je koristio aplikaciju za telefoniranje koju ste dobili uz uređaj"</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"Zvuk poziva je isključen."</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Spikerfon je omogućen."</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"U gužvi sam. O čemu se radi?"</string>
diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml
index 3668e38..b6dd707 100644
--- a/res/values-be/strings.xml
+++ b/res/values-be/strings.xml
@@ -27,17 +27,17 @@
<string name="notification_missedCall_call_back" msgid="7900333283939789732">"Адказаць"</string>
<string name="notification_missedCall_message" msgid="4054698824390076431">"Паведамленне"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"Выклік перарваны"</string>
- <string name="notification_disconnectedCall_body" msgid="600491714584417536">"Выклік абанента <xliff:g id="CALLER">%s</xliff:g> быў перарваны з-за ажыццяўлення экстраннага выкліку."</string>
+ <string name="notification_disconnectedCall_body" msgid="600491714584417536">"Выклік да абанента <xliff:g id="CALLER">%s</xliff:g> перарваны, бо выконваецца экстранны выклік."</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"Бягучы выклік перарваны, бо выконваецца экстранны выклік."</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"Фонавы выклік"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"Праграма \"<xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g>\" перавяла выклік у фонавы рэжым і можа прайграваць аўдыя падчас выкліку."</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"Збой у праграме \"Тэлефон\""</string>
- <!-- no translation found for notification_crashedInCallService_body (7821729360036047995) -->
- <skip />
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"Праграма \"<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g>\" не адказвае"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"Выклік зроблены ў стандартнай праграме \"Тэлефон\" на прыладзе"</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"Гук выключаны."</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Уключаная гучная сувязь."</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Не магу гаварыць. У чым справа?"</string>
- <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"Я выклікаю цябе праз момант."</string>
- <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"Я выклікаю цябе пазней."</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"Я зараз перазваню."</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"Перазваню пазней."</string>
<string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"Не магу адказаць. Пагаворым пазней?"</string>
<string name="respond_via_sms_setting_title" msgid="4762275482898830160">"Хуткія адказы"</string>
<string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"Рэдагаваць хуткія адказы"</string>
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index cfb9c12..7afddc2 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -28,11 +28,11 @@
<string name="notification_missedCall_message" msgid="4054698824390076431">"Съобщение"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"Прекъснато обаждане"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"Обаждането до <xliff:g id="CALLER">%s</xliff:g> бе прекъснато, тъй като се извършва спешно обаждане."</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"Обаждането ви бе прекъснато, тъй като се извършва спешно обаждане."</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"Обаждане: заден план"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"<xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g> постави обаждане на заден план. Приложението може да има достъп до обаждането и да възпроизвежда звук върху него."</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"Приложение за телефон с прекъсната работа"</string>
- <!-- no translation found for notification_crashedInCallService_body (7821729360036047995) -->
- <skip />
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> престана да реагира"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"Обаждането ви бе извършено с приложението за телефон, което сте получили с устройството си"</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"Обаждането бе спряно."</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Високоговорителят бе активиран."</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Сега не мога да говоря. Какво има?"</string>
diff --git a/res/values-bn/strings.xml b/res/values-bn/strings.xml
index 7bdbcf7..cf04d40 100644
--- a/res/values-bn/strings.xml
+++ b/res/values-bn/strings.xml
@@ -28,11 +28,11 @@
<string name="notification_missedCall_message" msgid="4054698824390076431">"মেসেজ"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"ডিসকানেক্ট করা কল"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"জরুরি কল করার জন্য <xliff:g id="CALLER">%s</xliff:g>-কে করা কল ডিসকানেক্ট করা হয়েছে।"</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"জরুরী কল করার জন্য আপনার কল ডিসকানেক্ট করা হয়েছে।"</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"ব্যাকগ্রাউন্ডের কল"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"<xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g> ব্যাকগ্রাউন্ডে কল রেখেছে। এই অ্যাপটি হয়ত কলের মাধ্যমে অডিও অ্যাক্সেস করে চালাচ্ছে।"</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"ক্র্যাশ হওয়া ফোন অ্যাপ"</string>
- <!-- no translation found for notification_crashedInCallService_body (7821729360036047995) -->
- <skip />
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> কাজ করছে না"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"আপনার ডিভাইসের ফোন অ্যাপ ব্যবহার করে কল করা হত"</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"কল মিউট করা আছে৷"</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"স্পীকারফোন সক্ষম করা আছে৷"</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"এখন কথা বলতে পারছি না৷ কি খবর?"</string>
diff --git a/res/values-bs/strings.xml b/res/values-bs/strings.xml
index f6619e5..1968357 100644
--- a/res/values-bs/strings.xml
+++ b/res/values-bs/strings.xml
@@ -28,11 +28,11 @@
<string name="notification_missedCall_message" msgid="4054698824390076431">"Poruka"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"Poziv je prekinut"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"Poziv upućen kontaktu <xliff:g id="CALLER">%s</xliff:g> je prekinut zbog upućivanja hitnog poziva."</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"Poziv je prekinut zbog upućivanja hitnog poziva."</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"Poziv u pozadini"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"Aplikacija <xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g> je uputila poziv u pozadini. Ova aplikacija može pristupati zvuku i reproducirati ga tokom poziva."</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"Pad aplikacije za telefon"</string>
- <!-- no translation found for notification_crashedInCallService_body (7821729360036047995) -->
- <skip />
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"Aplikacija <xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> je prestala reagirati"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"Za poziv se koristila aplikacija za telefon koju ste dobili uz uređaj"</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"Zvuk poziva je isključen."</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Zvučnik je omogućen."</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Ne mogu sada pričati. O čemu se radi?"</string>
@@ -113,7 +113,7 @@
<string name="phone_settings_payphone_txt" msgid="5003987966052543965">"Telefonska govornica"</string>
<string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"Blokirajte pozive s telefonskih govornica"</string>
<string name="phone_settings_unknown_txt" msgid="3577926178354772728">"Nepoznato"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"Blokirajte pozive neidentificiranih pozivalaca"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"Blokiraj pozive neidentificiranih pozivaoca"</string>
<string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"Blokiranje poziva"</string>
<string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"Blokiranje poziva je onemogućeno"</string>
<string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"Upućen je hitni poziv"</string>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index b098bbb..69a7b6e 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -28,10 +28,11 @@
<string name="notification_missedCall_message" msgid="4054698824390076431">"Missatge"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"Trucada desconnectada"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"La trucada a <xliff:g id="CALLER">%s</xliff:g> s\'ha desconnectat perquè s\'ha fet una trucada d\'emergència."</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"La teva trucada s\'ha desconnectat perquè s\'ha fet una trucada d\'emergència."</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"Trucada en segon pla"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"<xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g> ha fet una trucada en segon pla. És possible que aquesta aplicació estigui accedint a l\'àudio i reproduint-lo a través de la trucada."</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"Aplicació del telèfon que s\'ha bloquejat"</string>
- <string name="notification_crashedInCallService_body" msgid="7821729360036047995">"L\'aplicació per a telèfons <xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> s\'ha bloquejat. La trucada ha continuat amb l\'aplicació que hi ha al dispositiu."</string>
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> ha deixat de respondre"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"A la trucada s\'ha fet servir l\'aplicació de telèfon que hi ha al dispositiu"</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"Trucada silenciada."</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Altaveu activat."</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Ara no puc parlar. Què passa?"</string>
@@ -44,7 +45,7 @@
<string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"Resposta ràpida"</string>
<string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"Missatge enviat a <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
<string name="respond_via_sms_failure_format" msgid="5198680980054596391">"No s\'ha pogut enviar el missatge a <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
- <string name="enable_account_preference_title" msgid="6949224486748457976">"Comptes de trucades"</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"Comptes de trucada"</string>
<string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"Només es permeten les trucades d\'emergència."</string>
<string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"Aquesta aplicació no pot fer trucades sortints sense el permís del telèfon."</string>
<string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"Per realitzar una trucada, introdueix un número vàlid."</string>
@@ -98,7 +99,7 @@
<string name="notification_channel_call_blocking" msgid="2028807677868598710">"Bloqueig de trucades"</string>
<string name="notification_channel_background_calls" msgid="7785659903711350506">"Trucades en segon pla"</string>
<string name="notification_channel_disconnected_calls" msgid="8228636543997645757">"Trucades desconnectades"</string>
- <string name="notification_channel_in_call_service_crash" msgid="7313237519166984267">"Aplicacions del telèfon que s\'han bloquejat"</string>
+ <string name="notification_channel_in_call_service_crash" msgid="7313237519166984267">"Aplicacions del telèfon que han fallat"</string>
<string name="alert_outgoing_call" msgid="5319895109298927431">"En fer aquesta trucada, finalitzarà la de l\'aplicació <xliff:g id="OTHER_APP">%1$s</xliff:g>."</string>
<string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"Tria com vols fer aquesta trucada"</string>
<string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"Desvia la trucada amb <xliff:g id="OTHER_APP">%1$s</xliff:g>"</string>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index 7683e9f..1730a30 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -28,10 +28,11 @@
<string name="notification_missedCall_message" msgid="4054698824390076431">"Zpráva"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"Hovor byl odpojen"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"Hovor s volajícím <xliff:g id="CALLER">%s</xliff:g> byl odpojen, protože začalo být prováděno tísňové volání."</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"Váš hovor byl odpojen, protože bylo zahájeno tísňové volání."</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"Hovor na pozadí"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"Aplikace <xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g> přesunula hovor na pozadí. Tato aplikace může v hovoru používat a přehrávat zvuk."</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"Aplikace na telefonování spadla"</string>
- <string name="notification_crashedInCallService_body" msgid="7821729360036047995">"Vaše aplikace na telefonování <xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> spadla. Hovor pokračoval přes aplikaci, která byla na vašem zařízení předinstalovaná."</string>
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"Aplikace <xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> přestala reagovat"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"Při hovoru byla použita předinstalovaná telefonní aplikace"</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"Hovor ztlumen."</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Reproduktor je zapnutý."</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Teď nemůžu mluvit, o co jde?"</string>
@@ -98,7 +99,7 @@
<string name="notification_channel_call_blocking" msgid="2028807677868598710">"Blokování hovorů"</string>
<string name="notification_channel_background_calls" msgid="7785659903711350506">"Hovory na pozadí"</string>
<string name="notification_channel_disconnected_calls" msgid="8228636543997645757">"Odpojené hovory"</string>
- <string name="notification_channel_in_call_service_crash" msgid="7313237519166984267">"Aplikace na telefonování spadly"</string>
+ <string name="notification_channel_in_call_service_crash" msgid="7313237519166984267">"Aplikace, které spadly"</string>
<string name="alert_outgoing_call" msgid="5319895109298927431">"Uskutečněním tohoto hovoru ukončíte hovor <xliff:g id="OTHER_APP">%1$s</xliff:g>."</string>
<string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"Vyberte, jak chcete tento hovor provést"</string>
<string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"Přesměrovat hovor přes aplikaci <xliff:g id="OTHER_APP">%1$s</xliff:g>"</string>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index 5819f2b..6a208c4 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -19,7 +19,7 @@
<string name="telecommAppLabel" product="default" msgid="3077225713817780583">"Opkaldsstyring"</string>
<string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"Opkald"</string>
<string name="unknown" msgid="6993977514360123431">"Ukendt"</string>
- <string name="notification_missedCallTitle" msgid="5060387047205532974">"Ubesvarede opkald"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"Ubesvaret opkald"</string>
<string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"Ubesvaret arbejdsopkald"</string>
<string name="notification_missedCallsTitle" msgid="3910479625507893809">"Ubesvarede opkald"</string>
<string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> ubesvarede opkald"</string>
@@ -28,10 +28,11 @@
<string name="notification_missedCall_message" msgid="4054698824390076431">"Besked"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"Afbrudt opkald"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"Opkaldet til <xliff:g id="CALLER">%s</xliff:g> er blevet afbrudt, fordi der foretages et nødopkald."</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"Dit opkald er blevet afbrudt, fordi der foretages et nødopkald."</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"Opkald i baggrunden"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"<xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g> har foretaget et opkald i baggrunden. Denne app har muligvis adgang til og afspiller lyd i opkaldet."</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"Opkaldsapp, der er gået ned"</string>
- <string name="notification_crashedInCallService_body" msgid="7821729360036047995">"Opkaldsappen <xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> er gået ned. Dit opkald fortsatte ved hjælp af den opkaldsapp, din enhed er født med."</string>
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> svarer ikke"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"Dit opkald brugte den opkaldsapp, din enhed er født med"</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"Lyd slået fra opkald."</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Højttalertelefon aktiveret."</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Kan ikke tale nu. Hvad sker der?"</string>
@@ -65,7 +66,7 @@
<string name="blocked_numbers_msg" msgid="2797422132329662697">"Du modtager ikke opkald og sms-beskeder fra blokerede numre."</string>
<string name="block_number" msgid="3784343046852802722">"Tilføj et nummer"</string>
<string name="unblock_dialog_body" msgid="2723393535797217261">"Vil du fjerne blokeringen af <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
- <string name="unblock_button" msgid="8732021675729981781">"Fjern blokeringen"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"Fjern blokering"</string>
<string name="add_blocked_dialog_body" msgid="8599974422407139255">"Bloker opkald og sms-beskeder fra"</string>
<string name="add_blocked_number_hint" msgid="8769422085658041097">"Telefonnummer"</string>
<string name="block_button" msgid="485080149164258770">"Bloker"</string>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index 16e7901..c434ecc 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -21,17 +21,18 @@
<string name="unknown" msgid="6993977514360123431">"Unbekannt"</string>
<string name="notification_missedCallTitle" msgid="5060387047205532974">"Entgangener Anruf"</string>
<string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"Verpasster geschäftlicher Anruf"</string>
- <string name="notification_missedCallsTitle" msgid="3910479625507893809">"Entgangene Anrufe"</string>
- <string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> entgangene Anrufe"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"Verpasste Anrufe"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> verpasste Anrufe"</string>
<string name="notification_missedCallTicker" msgid="6731461957487087769">"Entgangener Anruf von <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
<string name="notification_missedCall_call_back" msgid="7900333283939789732">"Zurückrufen"</string>
<string name="notification_missedCall_message" msgid="4054698824390076431">"Nachricht"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"Anruf beendet"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"Der Anruf mit <xliff:g id="CALLER">%s</xliff:g> wurde beendet, weil ein Notruf getätigt wurde."</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"Der Anruf wurde beendet, weil ein Notruf getätigt wurde."</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"Anruf im Hintergrund"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"<xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g> hat einen Anruf in den Hintergrund verschoben. Diese App greift möglicherweise auf den Anruf zu und spielt Audio darüber ab."</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"Abgestürzte Telefon-App"</string>
- <string name="notification_crashedInCallService_body" msgid="7821729360036047995">"Deine Telefon-App \"<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g>\" ist abgestürzt. Der Anruf wurde mit der auf deinem Gerät vorinstallierten App fortgesetzt."</string>
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> reagiert nicht mehr"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"Für den Anruf wurde die auf deinem Gerät vorinstallierte App verwendet"</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"Anruf stummgeschaltet"</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Freisprechfunktion aktiviert"</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Kann jetzt nicht sprechen. Was gibt\'s?"</string>
@@ -46,7 +47,7 @@
<string name="respond_via_sms_failure_format" msgid="5198680980054596391">"Fehler beim Senden der Nachricht an <xliff:g id="PHONE_NUMBER">%s</xliff:g>"</string>
<string name="enable_account_preference_title" msgid="6949224486748457976">"Anrufkonten"</string>
<string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"Es sind nur Notrufe erlaubt."</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"Diese App darf ohne die Berechtigung \"Standard-App für Telefonie\" keine ausgehenden Anrufe tätigen."</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"Diese App darf ohne die Berechtigung \"Telefon-App\" keine ausgehenden Anrufe tätigen."</string>
<string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"Gib eine gültige Nummer ein."</string>
<string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"Der Anruf kann momentan nicht hinzugefügt werden."</string>
<string name="no_vm_number" msgid="2179959110602180844">"Fehlende Mailbox-Nummer"</string>
@@ -62,7 +63,7 @@
<string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"Als Standard festlegen"</string>
<string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"Abbrechen"</string>
<string name="blocked_numbers" msgid="8322134197039865180">"Blockierte Nummern"</string>
- <string name="blocked_numbers_msg" msgid="2797422132329662697">"Du erhältst keine Anrufe oder SMS von blockierten Nummern."</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"Du erhältst von blockierten Nummern keine Anrufe oder SMS."</string>
<string name="block_number" msgid="3784343046852802722">"Nummer hinzufügen"</string>
<string name="unblock_dialog_body" msgid="2723393535797217261">"Blockierung von <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g> aufheben?"</string>
<string name="unblock_button" msgid="8732021675729981781">"Blockierung aufheben"</string>
@@ -94,7 +95,7 @@
<string name="cant_call_due_to_ongoing_calls" msgid="6379163795277824868">"Dieser Anruf kann aufgrund deiner Anrufe in <xliff:g id="OTHER_CALL">%1$s</xliff:g> nicht getätigt werden."</string>
<string name="cant_call_due_to_ongoing_unknown_call" msgid="8243532328969433172">"Dieser Anruf kann aufgrund eines Anrufs in einer anderen App nicht getätigt werden."</string>
<string name="notification_channel_incoming_call" msgid="5245550964701715662">"Eingehende Anrufe"</string>
- <string name="notification_channel_missed_call" msgid="7168893015283909012">"Entgangene Anrufe"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"Verpasste Anrufe"</string>
<string name="notification_channel_call_blocking" msgid="2028807677868598710">"Anrufblockierung"</string>
<string name="notification_channel_background_calls" msgid="7785659903711350506">"Anrufe im Hintergrund"</string>
<string name="notification_channel_disconnected_calls" msgid="8228636543997645757">"Beendete Anrufe"</string>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index 2d856b1..ab523c1 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -28,11 +28,11 @@
<string name="notification_missedCall_message" msgid="4054698824390076431">"Μήνυμα"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"Αποσύνδεση κλήσης"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"Η κλήση προς <xliff:g id="CALLER">%s</xliff:g> αποσυνδέθηκε λόγω πραγματοποίησης κλήσης έκτακτης ανάγκης."</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"Η κλήση σας αποσυνδέθηκε λόγω πραγματοποίησης κλήσης έκτακτης ανάγκης."</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"Κλήση στο παρασκήνιο"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"Η εφαρμογή <xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g> πραγματοποίησε μια κλήση στο παρασκήνιο. Η εφαρμογή αυτή ενδέχεται να έχει δικαίωμα προσπέλασης και αναπαραγωγής ήχου κατά τη διάρκεια της κλήσης."</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"Εφαρμογή τηλεφώνου που αντιμετώπισε σφάλμα λειτουργίας"</string>
- <!-- no translation found for notification_crashedInCallService_body (7821729360036047995) -->
- <skip />
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"Η εφαρμογή <xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> έπαψε να αποκρίνεται"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"Η κλήση σας πραγματοποιήθηκε μέσω της αρχικής εφαρμογής τηλεφώνου της συσκευής σας."</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"Η κλήση τέθηκε σε σίγαση."</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Η ανοικτή συνομιλία ενεργοποιήθηκε."</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Δεν μπορώ τώρα. Συμβαίνει κάτι;"</string>
diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml
index afda868..4de7584 100644
--- a/res/values-en-rAU/strings.xml
+++ b/res/values-en-rAU/strings.xml
@@ -28,10 +28,11 @@
<string name="notification_missedCall_message" msgid="4054698824390076431">"Message"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"Disconnected call"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"The call to <xliff:g id="CALLER">%s</xliff:g> has been disconnected due to an emergency call being placed."</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"Your call has been disconnected due to an emergency call being placed."</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"Background call"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"<xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g> has placed a call into the background. This app may be accessing and playing audio over the call."</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"Crashed Phone app"</string>
- <string name="notification_crashedInCallService_body" msgid="7821729360036047995">"Your phone app <xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> has crashed. You call was continued using the phone app that came with your device."</string>
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> stopped responding"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"Your call used the phone app that came with your device"</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"Call muted."</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Speakerphone enabled."</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Can\'t talk now. What\'s going on?"</string>
diff --git a/res/values-en-rCA/strings.xml b/res/values-en-rCA/strings.xml
index afda868..4de7584 100644
--- a/res/values-en-rCA/strings.xml
+++ b/res/values-en-rCA/strings.xml
@@ -28,10 +28,11 @@
<string name="notification_missedCall_message" msgid="4054698824390076431">"Message"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"Disconnected call"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"The call to <xliff:g id="CALLER">%s</xliff:g> has been disconnected due to an emergency call being placed."</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"Your call has been disconnected due to an emergency call being placed."</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"Background call"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"<xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g> has placed a call into the background. This app may be accessing and playing audio over the call."</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"Crashed Phone app"</string>
- <string name="notification_crashedInCallService_body" msgid="7821729360036047995">"Your phone app <xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> has crashed. You call was continued using the phone app that came with your device."</string>
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> stopped responding"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"Your call used the phone app that came with your device"</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"Call muted."</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Speakerphone enabled."</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Can\'t talk now. What\'s going on?"</string>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index afda868..4de7584 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -28,10 +28,11 @@
<string name="notification_missedCall_message" msgid="4054698824390076431">"Message"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"Disconnected call"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"The call to <xliff:g id="CALLER">%s</xliff:g> has been disconnected due to an emergency call being placed."</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"Your call has been disconnected due to an emergency call being placed."</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"Background call"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"<xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g> has placed a call into the background. This app may be accessing and playing audio over the call."</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"Crashed Phone app"</string>
- <string name="notification_crashedInCallService_body" msgid="7821729360036047995">"Your phone app <xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> has crashed. You call was continued using the phone app that came with your device."</string>
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> stopped responding"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"Your call used the phone app that came with your device"</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"Call muted."</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Speakerphone enabled."</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Can\'t talk now. What\'s going on?"</string>
diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml
index afda868..4de7584 100644
--- a/res/values-en-rIN/strings.xml
+++ b/res/values-en-rIN/strings.xml
@@ -28,10 +28,11 @@
<string name="notification_missedCall_message" msgid="4054698824390076431">"Message"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"Disconnected call"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"The call to <xliff:g id="CALLER">%s</xliff:g> has been disconnected due to an emergency call being placed."</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"Your call has been disconnected due to an emergency call being placed."</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"Background call"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"<xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g> has placed a call into the background. This app may be accessing and playing audio over the call."</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"Crashed Phone app"</string>
- <string name="notification_crashedInCallService_body" msgid="7821729360036047995">"Your phone app <xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> has crashed. You call was continued using the phone app that came with your device."</string>
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> stopped responding"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"Your call used the phone app that came with your device"</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"Call muted."</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Speakerphone enabled."</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Can\'t talk now. What\'s going on?"</string>
diff --git a/res/values-en-rXC/strings.xml b/res/values-en-rXC/strings.xml
index e1edced..3b3a983 100644
--- a/res/values-en-rXC/strings.xml
+++ b/res/values-en-rXC/strings.xml
@@ -28,10 +28,11 @@
<string name="notification_missedCall_message" msgid="4054698824390076431">"Message"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"Disconnected call"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"The call to <xliff:g id="CALLER">%s</xliff:g> has been disconnected due to an emergency call being placed."</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"Your call has been disconnected due to an emergency call being placed."</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"Background call"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"<xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g> has placed a call into the background. This app may be accessing and playing audio over the call."</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"Crashed phone app"</string>
- <string name="notification_crashedInCallService_body" msgid="7821729360036047995">"Your phone app <xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> has crashed. You call was continued using the phone app that came with your device."</string>
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> stopped responding"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"Your call used the phone app that came with your device"</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"Call muted."</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Speakerphone enabled."</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Can\'t talk now. What\'s up?"</string>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index 89ba06f..826b877 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -28,11 +28,11 @@
<string name="notification_missedCall_message" msgid="4054698824390076431">"Mensaje"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"Se desconectó la llamada"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"Se desconectó la llamada a <xliff:g id="CALLER">%s</xliff:g> porque se está realizando una llamada de emergencia."</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"Se desconectó tu llamada porque se está haciendo una llamada de emergencia."</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"Llamada en 2.° plano"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"<xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g> movió una a segundo plano. Es posible que esta app acceda a la llamada y reproduzca audio."</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"App de teléfono con fallas"</string>
- <!-- no translation found for notification_crashedInCallService_body (7821729360036047995) -->
- <skip />
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> dejó de responder"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"Tu llamada se hizo con la app de teléfono que venía en tu dispositivo"</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"Llamada silenciada"</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Altavoz habilitado"</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"No puedo hablar ahora. ¿Todo bien?"</string>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index 5860766..e124de4 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -28,10 +28,11 @@
<string name="notification_missedCall_message" msgid="4054698824390076431">"Mensaje"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"Llamada interrumpida"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"Se ha interrumpido la llamada a <xliff:g id="CALLER">%s</xliff:g> debido a una llamada de emergencia."</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"Se ha interrumpido tu llamada debido a una llamada de emergencia."</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"Llamada en segundo plano"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"<xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g> ha llamado en segundo plano. Puede que esta aplicación acceda al audio y lo reproduzca durante la llamada."</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"Aplicación para teléfonos bloqueada"</string>
- <string name="notification_crashedInCallService_body" msgid="7821729360036047995">"Tu aplicación para teléfonos <xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> se ha bloqueado. La llamada continuó con la aplicación para teléfonos de tu dispositivo."</string>
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> ha dejado de responder"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"La llamada se utilizó la aplicación para teléfonos que venía con tu dispositivo"</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"Llamada silenciada"</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Altavoz habilitado"</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"No puedo hablar. ¿Es importante?"</string>
@@ -44,7 +45,7 @@
<string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"Respuesta rápida"</string>
<string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"Mensaje enviado a <xliff:g id="PHONE_NUMBER">%s</xliff:g>"</string>
<string name="respond_via_sms_failure_format" msgid="5198680980054596391">"No se ha podido enviar el mensaje al <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
- <string name="enable_account_preference_title" msgid="6949224486748457976">"Cuentas de llamadas"</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"Cuentas de llamada"</string>
<string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"Solo se permiten llamadas de emergencia."</string>
<string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"Esta aplicación no puede hacer llamadas sin permiso del teléfono."</string>
<string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"Para realizar una llamada, introduce un número válido."</string>
@@ -98,7 +99,7 @@
<string name="notification_channel_call_blocking" msgid="2028807677868598710">"Bloqueo de llamadas"</string>
<string name="notification_channel_background_calls" msgid="7785659903711350506">"Llamadas en segundo plano"</string>
<string name="notification_channel_disconnected_calls" msgid="8228636543997645757">"Llamadas interrumpidas"</string>
- <string name="notification_channel_in_call_service_crash" msgid="7313237519166984267">"Aplicaciones para teléfonos bloqueadas"</string>
+ <string name="notification_channel_in_call_service_crash" msgid="7313237519166984267">"Aplicaciones para teléfonos con bloqueos"</string>
<string name="alert_outgoing_call" msgid="5319895109298927431">"Si haces esta llamada, se finalizará la de <xliff:g id="OTHER_APP">%1$s</xliff:g>."</string>
<string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"Elige cómo quieres hacer esta llamada"</string>
<string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"Redirigir llamada con <xliff:g id="OTHER_APP">%1$s</xliff:g>"</string>
diff --git a/res/values-et/strings.xml b/res/values-et/strings.xml
index 71531f1..bb291ad 100644
--- a/res/values-et/strings.xml
+++ b/res/values-et/strings.xml
@@ -28,11 +28,11 @@
<string name="notification_missedCall_message" msgid="4054698824390076431">"Sõnum"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"Kõne on katkestatud"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"Kõne helistajaga <xliff:g id="CALLER">%s</xliff:g> on katkestatud, kuna alustati hädaabikõnet."</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"Teie kõne katkestati, kuna alustati hädaabikõnet."</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"Taustal olev kõne"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"<xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g> lülitas kõne taustale. See rakendus võib helile juurde pääseda ja seda kõne ajal esitada."</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"Kokkujooksnud telefonirakendus"</string>
- <!-- no translation found for notification_crashedInCallService_body (7821729360036047995) -->
- <skip />
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> lõpetas reageerimise"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"Teie kõne kasutas teie seadmega kaasas olnud telefonirakendust"</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"Kõne on summutatud."</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Valjuhääldi on sisse lülitatud."</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Ei saa praegu rääkida. Milles asi?"</string>
diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml
index 9649ab6..c8956cd 100644
--- a/res/values-eu/strings.xml
+++ b/res/values-eu/strings.xml
@@ -28,10 +28,11 @@
<string name="notification_missedCall_message" msgid="4054698824390076431">"Mezua"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"Deia deskonektatu egin da"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"<xliff:g id="CALLER">%s</xliff:g> deitzaileari egiten ari zinen deia deskonektatu da larrialdi-dei bat egiten ari zarelako."</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"Deia deskonektatu egin da, larrialdi-dei bat egiten ari zarelako."</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"Atzeko planoko deia"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"<xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g> aplikazioak atzeko planoan jarri du deia. Baliteke aplikazioak audioa atzitzea eta erreproduzitzea deian zehar."</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"Telefonoko aplikazioak huts egin du"</string>
- <string name="notification_crashedInCallService_body" msgid="7821729360036047995">"<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> telefono-aplikazioak huts egin du. Gailuaren telefono-aplikazioa erabilita jarraitu da deia egiten."</string>
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"Erantzuteari utzi dio <xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> aplikazioak"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"Gailuaren telefono-aplikazioarekin egin da deia"</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"Deiaren audioa desaktibatu da."</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Bozgorailua gaitu da."</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Ezin dut hitz egin. Arazoren bat al dago?"</string>
@@ -97,7 +98,7 @@
<string name="notification_channel_missed_call" msgid="7168893015283909012">"Dei galduak"</string>
<string name="notification_channel_call_blocking" msgid="2028807677868598710">"Deiak blokeatzeko aukera"</string>
<string name="notification_channel_background_calls" msgid="7785659903711350506">"Atzeko planoko deiak"</string>
- <string name="notification_channel_disconnected_calls" msgid="8228636543997645757">"Deiak deskonektatu egin dira"</string>
+ <string name="notification_channel_disconnected_calls" msgid="8228636543997645757">"Deskonektatutako deiak"</string>
<string name="notification_channel_in_call_service_crash" msgid="7313237519166984267">"Huts egin duten telefonoko aplikazioak"</string>
<string name="alert_outgoing_call" msgid="5319895109298927431">"Dei hau egiten baduzu, amaitu egingo da <xliff:g id="OTHER_APP">%1$s</xliff:g> aplikazioko deia."</string>
<string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"Aukeratu dei hau egiteko modua"</string>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index 3cc5bb6..c873159 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -28,14 +28,15 @@
<string name="notification_missedCall_message" msgid="4054698824390076431">"پیام"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"تماس قطعشده"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"بهدلیل انجام تماسی اضطراری، تماس با <xliff:g id="CALLER">%s</xliff:g> قطع شده است."</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"بهدلیل برقراری تماس اضطراری، تماس شما قطع شده است."</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"تماس پسزمینه"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"<xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g> تماسی را در پسزمینه قرار داد. ممکن است این برنامه درحین تماس به صدا دسترسی پیدا کند و آن را پخش کند."</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"برنامه خراب تلفن"</string>
- <string name="notification_crashedInCallService_body" msgid="7821729360036047995">"«برنامه تلفن» <xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> خراب شده است. تماستان بااستفاده از «برنامه تلفن» ارائهشده در دستگاه ادامه پیدا کرد."</string>
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> متوقف شد"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"تماستان بااستفاده از برنامه تلفن ارائهشده در دستگاهتان برقرار شد"</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"تماس نادیده گرفته شد."</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"تلفن آیفوندار فعال شد."</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"الآن نمیتوانم صحبت کنم. موضوع چیست؟"</string>
- <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"همین حالا با شما تماس میگیرم.."</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"همین حالا با شما تماس میگیرم."</string>
<string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"بعداً با شما تماس میگیرم."</string>
<string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"اکنون نمیتوانم صحبت کنم. بعداً به من زنگ میزنید؟"</string>
<string name="respond_via_sms_setting_title" msgid="4762275482898830160">"پاسخهای سریع"</string>
@@ -80,13 +81,13 @@
<string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> قبلاً مسدود شده است."</string>
<string name="toast_personal_call_msg" msgid="5817631570381795610">"استفاده از شمارهگیر شخصی برای گرفتن تماس"</string>
<string name="notification_incoming_call" msgid="1233481138362230894">"<xliff:g id="CALL_VIA">%1$s</xliff:g> تماس از <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
- <string name="notification_incoming_video_call" msgid="5795968314037063900">"<xliff:g id="CALL_VIA">%1$s</xliff:g> تماس ویدیویی از <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+ <string name="notification_incoming_video_call" msgid="5795968314037063900">"<xliff:g id="CALL_VIA">%1$s</xliff:g> تماس تصویری از <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
<string name="answering_ends_other_call" msgid="8653544281903986641">"پاسخگویی به تماس <xliff:g id="CALL_VIA">%1$s</xliff:g> پایان میدهد"</string>
<string name="answering_ends_other_calls" msgid="3702302838456922535">"پاسخگویی به تماسهای <xliff:g id="CALL_VIA">%1$s</xliff:g> شما پاسخ میدهد"</string>
- <string name="answering_ends_other_video_call" msgid="8572022039304239958">"پاسخگویی به تماس ویدیویی <xliff:g id="CALL_VIA">%1$s</xliff:g> شما پایان میدهد"</string>
+ <string name="answering_ends_other_video_call" msgid="8572022039304239958">"پاسخگویی به تماس تصویری <xliff:g id="CALL_VIA">%1$s</xliff:g> شما پایان میدهد"</string>
<string name="answering_ends_other_managed_call" msgid="4031778317409881805">"پاسخگویی به تماس درحال انجامتان پایان میدهد"</string>
<string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"پاسخگویی به تماسهای درحال انجامتان پایان میدهد"</string>
- <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"پاسخگویی به تماس ویدیویی درحال انجامتان پایان میدهد"</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"پاسخگویی به تماس تصویری درحال انجامتان پایان میدهد"</string>
<string name="answer_incoming_call" msgid="2045888814782215326">"پاسخگویی"</string>
<string name="decline_incoming_call" msgid="922147089348451310">"نپذیرفتن"</string>
<string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"بهدلیل اینکه هیچ حساب تماسی وجود ندارد که از این نوع تماس پشتیبانی کند، تماس برقرار نشد."</string>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index ab0830c..cf57d62 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -28,11 +28,11 @@
<string name="notification_missedCall_message" msgid="4054698824390076431">"Viesti"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"Puhelu katkaistu"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"Puhelu vastaanottajalle <xliff:g id="CALLER">%s</xliff:g> on katkaistu hätäpuhelun soittamisen vuoksi."</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"Puhelusi on katkaistu hätäpuhelun soittamisen vuoksi."</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"Taustapuhelu"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"<xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g> on asettanut puhelun taustalle. Tämä sovellus voi käyttää ja toistaa ääntä puhelun päällä."</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"Kaatunut puhelinsovellus"</string>
- <!-- no translation found for notification_crashedInCallService_body (7821729360036047995) -->
- <skip />
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> lakkasi vastaamasta"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"Puhelu soitettiin laitteen mukana tulleella puhelinsovelluksella"</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"Puhelu mykistetty."</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Kaiutin käytössä."</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"En voi vastata. Mitä asiaa?"</string>
diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml
index 24c2eff..74faab9 100644
--- a/res/values-fr-rCA/strings.xml
+++ b/res/values-fr-rCA/strings.xml
@@ -28,11 +28,11 @@
<string name="notification_missedCall_message" msgid="4054698824390076431">"Message"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"Appel déconnecté"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"L\'appel à <xliff:g id="CALLER">%s</xliff:g> a été déconnecté en raison d\'un appel d\'urgence qui a été passé."</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"Votre appel a été déconnecté en raison d\'un appel d\'urgence en cours de lancement."</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"Appel en arrière-plan"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"<xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g> a passé un appel en arrière-plan. Cette application peut accéder à l\'audio de l\'appel et faire jouer un contenu audio par l\'intermédiaire de l\'appel."</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"L\'application téléphonique a planté"</string>
- <!-- no translation found for notification_crashedInCallService_body (7821729360036047995) -->
- <skip />
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> a arrêté de répondre"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"Votre appel a utilisé l\'application Téléphone intégrée à votre appareil"</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"Son coupé"</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Haut-parleur activé"</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Peux pas parler. Quoi de neuf?"</string>
@@ -76,7 +76,7 @@
<string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"Lorsque vous communiquez avec les services d\'urgence par téléphone ou par message texte, la fonctionnalité de blocage est désactivée pour que ceux-ci puissent vous joindre."</string>
<string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"Réactiver le blocage maintenant"</string>
<string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"Le numéro <xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> a été bloqué."</string>
- <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"Le numéro <xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> a été débloqué."</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"Le numéro <xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> a été débloqué"</string>
<string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"Impossible de bloquer le numéro d\'urgence."</string>
<string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"Le numéro <xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> a déjà été bloqué."</string>
<string name="toast_personal_call_msg" msgid="5817631570381795610">"Utilisation du clavier personnel pour faire l\'appel…"</string>
@@ -99,7 +99,7 @@
<string name="notification_channel_call_blocking" msgid="2028807677868598710">"Blocage des appels"</string>
<string name="notification_channel_background_calls" msgid="7785659903711350506">"Appels en arrière-plan"</string>
<string name="notification_channel_disconnected_calls" msgid="8228636543997645757">"Appels déconnectés"</string>
- <string name="notification_channel_in_call_service_crash" msgid="7313237519166984267">"Les applications téléphoniques ont planté"</string>
+ <string name="notification_channel_in_call_service_crash" msgid="7313237519166984267">"Applications téléphoniques qui ont planté"</string>
<string name="alert_outgoing_call" msgid="5319895109298927431">"Si vous passez cet appel, vous mettrez fin à l\'appel <xliff:g id="OTHER_APP">%1$s</xliff:g>."</string>
<string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"Choisissez comment passer cet appel"</string>
<string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"Rediriger l\'appel en utilisant <xliff:g id="OTHER_APP">%1$s</xliff:g>"</string>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index 071f208..c2a95a2 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -28,17 +28,17 @@
<string name="notification_missedCall_message" msgid="4054698824390076431">"Message"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"Appel interrompu"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"L\'appel avec <xliff:g id="CALLER">%s</xliff:g> a été interrompu en raison d\'un appel d\'urgence."</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"Votre appel a été interrompu en raison d\'un appel d\'urgence."</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"Appel en arrière-plan"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"<xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g> a placé un appel en arrière-plan. Il est possible que cette application lise des fichiers audio pendant l\'appel."</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"Une application d\'appel a planté"</string>
- <!-- no translation found for notification_crashedInCallService_body (7821729360036047995) -->
- <skip />
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> a cessé de répondre"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"L\'appel s\'est poursuivi dans l\'application d\'appel préinstallée sur votre appareil"</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"Son coupé"</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Haut-parleur activé"</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Je ne peux pas répondre. Ça va ?"</string>
<string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"Je te rappelle tout de suite."</string>
<string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"Je t\'appelle plus tard."</string>
- <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"Peux pas répondre. On se rappelle ?"</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"Je ne peux pas répondre. On se rappelle ?"</string>
<string name="respond_via_sms_setting_title" msgid="4762275482898830160">"Réponses rapides"</string>
<string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"Modifier les réponses rapides"</string>
<string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
@@ -99,7 +99,7 @@
<string name="notification_channel_call_blocking" msgid="2028807677868598710">"Blocage d\'appels"</string>
<string name="notification_channel_background_calls" msgid="7785659903711350506">"Appels en arrière-plan"</string>
<string name="notification_channel_disconnected_calls" msgid="8228636543997645757">"Appels interrompus"</string>
- <string name="notification_channel_in_call_service_crash" msgid="7313237519166984267">"Des applications d\'appel ont planté"</string>
+ <string name="notification_channel_in_call_service_crash" msgid="7313237519166984267">"Applications téléphoniques ayant planté"</string>
<string name="alert_outgoing_call" msgid="5319895109298927431">"Si vous passez cet appel, vous mettrez fin à celui qui est en cours dans l\'application <xliff:g id="OTHER_APP">%1$s</xliff:g>."</string>
<string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"Choisissez comment passer cet appel"</string>
<string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"Rediriger l\'appel avec <xliff:g id="OTHER_APP">%1$s</xliff:g>"</string>
@@ -113,7 +113,7 @@
<string name="phone_settings_payphone_txt" msgid="5003987966052543965">"Cabines téléphoniques"</string>
<string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"Bloquez les appels provenant de cabines téléphoniques"</string>
<string name="phone_settings_unknown_txt" msgid="3577926178354772728">"Numéros inconnus"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"Bloquez les appels provenant de personnes non identifiées"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"Bloquer les appels provenant de personnes non identifiées"</string>
<string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"Blocage d\'appels"</string>
<string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"Blocage d\'appels désactivé"</string>
<string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"Appel d\'urgence"</string>
diff --git a/res/values-gl/strings.xml b/res/values-gl/strings.xml
index d558f99..42c55d6 100644
--- a/res/values-gl/strings.xml
+++ b/res/values-gl/strings.xml
@@ -28,11 +28,11 @@
<string name="notification_missedCall_message" msgid="4054698824390076431">"Mensaxe"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"Chamada desconectada"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"Desconectouse a chamada a <xliff:g id="CALLER">%s</xliff:g> porque se realizou unha chamada de emerxencia."</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"Desconectouse a chamada porque se realizou unha chamada de emerxencia."</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"Chamada seg. plano"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"<xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g> chamou en segundo plano. Pode que esta aplicación acceda ao audio e o reproduza durante a chamada."</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"Fallou a aplicación de teléfono"</string>
- <!-- no translation found for notification_crashedInCallService_body (7821729360036047995) -->
- <skip />
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> deixou de responder"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"Usouse a aplicación para teléfonos que ven co teu dispositivo na chamada"</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"Chamada silenciada"</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Altofalante activado"</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Non podo falar agora. Que pasa?"</string>
diff --git a/res/values-gu/strings.xml b/res/values-gu/strings.xml
index c20fb1b..7455080 100644
--- a/res/values-gu/strings.xml
+++ b/res/values-gu/strings.xml
@@ -19,7 +19,7 @@
<string name="telecommAppLabel" product="default" msgid="3077225713817780583">"કૉલ સંચાલન"</string>
<string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"ફોન"</string>
<string name="unknown" msgid="6993977514360123431">"અજાણ્યું"</string>
- <string name="notification_missedCallTitle" msgid="5060387047205532974">"છૂટેલો કૉલ"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"ચૂકી ગયેલો કૉલ"</string>
<string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"ચૂકી ગયેલ કાર્ય કૉલ"</string>
<string name="notification_missedCallsTitle" msgid="3910479625507893809">"છૂટેલા કૉલ્સ"</string>
<string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> છૂટેલા કૉલ્સ"</string>
@@ -28,11 +28,11 @@
<string name="notification_missedCall_message" msgid="4054698824390076431">"સંદેશ"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"ડિસ્કનેક્ટ કરેલો કૉલ"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"ઇમર્જન્સી કૉલને કારણે <xliff:g id="CALLER">%s</xliff:g>નો કૉલ ડિસ્કનેક્ટ કરવામાં આવ્યો છે."</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"ઇમર્જન્સી કૉલને કારણે તમારો કૉલ ડિસ્કનેક્ટ કરવામાં આવ્યો છે."</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"બૅકગ્રાઉન્ડ કૉલ"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"<xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g>એ કૉલ બેકગ્રાઉન્ડમાં રાખ્યો છે. આ ઍપ કૉલ પરથી ઑડિયો ઍક્સેસ કરીને તેને ચલાવી શકે છે."</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"ફોન ઍપ ક્રૅશ થઈ"</string>
- <!-- no translation found for notification_crashedInCallService_body (7821729360036047995) -->
- <skip />
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> ઍપ પ્રતિસાદ આપી રહી નથી"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"તમારા કૉલ માટે તમારા ડિવાઇસમાં પહેલેથી ઇન્સ્ટૉલ કરેલી ફોન ઍપનો ઉપયોગ કરવામાં આવ્યો"</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"કૉલ મ્યૂટ કરેલ છે."</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"સ્પીકરફોન પસંદ કરેલ છે."</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"હમણાં વાત નહીં કરી શકું. શું હતું?"</string>
@@ -45,7 +45,7 @@
<string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"ઝડપી પ્રતિસાદ"</string>
<string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"<xliff:g id="PHONE_NUMBER">%s</xliff:g> પર સંદેશ મોકલ્યો."</string>
<string name="respond_via_sms_failure_format" msgid="5198680980054596391">"<xliff:g id="PHONE_NUMBER">%s</xliff:g>ને સંદેશ મોકલવામાં નિષ્ફળ રહ્યાં."</string>
- <string name="enable_account_preference_title" msgid="6949224486748457976">"કૉલિંગ એકાઉન્ટ્સ"</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"કૉલ કરવા માટેના એકાઉન્ટ"</string>
<string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"ફક્ત કટોકટીના કૉલ્સને મંજૂરી છે."</string>
<string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"ફોન પરવાનગી વિના આ ઍપ્લિકેશન આઉટગોઇંગ કૉલ્સ કરી શકતી નથી."</string>
<string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"કૉલ કરવા માટે, માન્ય નંબર દાખલ કરો."</string>
@@ -65,8 +65,8 @@
<string name="blocked_numbers" msgid="8322134197039865180">"અવરોધિત નંબરો"</string>
<string name="blocked_numbers_msg" msgid="2797422132329662697">"બ્લૉક કરેલા નંબર પરથી કૉલ અથવા ટેક્સ્ટ તમને આવશે નહિ."</string>
<string name="block_number" msgid="3784343046852802722">"એક નંબર ઉમેરો"</string>
- <string name="unblock_dialog_body" msgid="2723393535797217261">"<xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g> ને બ્લૉક કરીએ?"</string>
- <string name="unblock_button" msgid="8732021675729981781">"અનાવરોધિત કરો"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"<xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g> ને અનબ્લૉક કરીએ?"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"અનબ્લૉક કરો"</string>
<string name="add_blocked_dialog_body" msgid="8599974422407139255">"આ નંબરના કૉલ અને ટેક્સ્ટને અવરોધિત કરો"</string>
<string name="add_blocked_number_hint" msgid="8769422085658041097">"ફોન નંબર"</string>
<string name="block_button" msgid="485080149164258770">"અવરોધિત કરો"</string>
@@ -76,7 +76,7 @@
<string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"તમે કોઈ કટોકટીનો નંબર ડાયલ કરો કે ટેક્સ્ટ કરો તે પછી, કટોકટીની સેવાઓ તમારો સંપર્ક કરી શકે તેની ખાતરી કરવા માટે અવરોધિત કરવું બંધ કરવામાં આવે છે."</string>
<string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"હવે ફરીથી સક્ષમ કરો"</string>
<string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> અવરોધિત કર્યો"</string>
- <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> અનાવરોધિત કર્યો"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> અનબ્લૉક કર્યો"</string>
<string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"કટોકટીના નંબરને અવરોધિત કરવામાં અસમર્થ."</string>
<string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g>, પહેલાંથી અવરોધિત કરવામાં આવ્યો છે."</string>
<string name="toast_personal_call_msg" msgid="5817631570381795610">"કૉલ કરવા માટે વ્યક્તિગત ડાયલરનો ઉપયોગ કરી રહ્યાં છે"</string>
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index cfea7a5..ed623b8 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -28,11 +28,11 @@
<string name="notification_missedCall_message" msgid="4054698824390076431">"मैसेज"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"कॉल डिसकनेक्ट किया गया"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"<xliff:g id="CALLER">%s</xliff:g> के साथ चल रहे कॉल को डिसकनेक्ट किया गया क्योंकि एक आपातकालीन कॉल किया जा रहा है."</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"एक आपातकालीन कॉल किया जा रहा है, इसलिए आपका कॉल डिसकनेक्ट कर दिया गया है."</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"बैकग्राउंड कॉल"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"<xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g> ने कॉल को बैकग्राउंड में रखा है हो सकता है कि यह ऐप्लिकेशन आपके कॉल से ऑडियो ऐक्सेस करके उसे चला रहा हो."</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"फ़ोन ऐप्लिकेशन जो बंद हो गया"</string>
- <!-- no translation found for notification_crashedInCallService_body (7821729360036047995) -->
- <skip />
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> ऐप्लिकेशन बंद हो गया है"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"कॉल करने के लिए, आपके डिवाइस में पहले से मौजूद फ़ोन ऐप्लिकेशन का इस्तेमाल किया गया"</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"कॉल म्यूट की गई."</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"स्पीकरफ़ोन सक्षम."</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"अभी बात नहीं हो सकती. क्या हो रहा है?"</string>
@@ -66,7 +66,7 @@
<string name="blocked_numbers_msg" msgid="2797422132329662697">"ब्लॉक किए गए नंबर से आपको कॉल या मैसेज नहीं मिलेंगे."</string>
<string name="block_number" msgid="3784343046852802722">"नंबर जोड़ें"</string>
<string name="unblock_dialog_body" msgid="2723393535797217261">"<xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g> को अनब्लॉक करें?"</string>
- <string name="unblock_button" msgid="8732021675729981781">"अनवरोधित करें"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"अनब्लॉक करें"</string>
<string name="add_blocked_dialog_body" msgid="8599974422407139255">"इसके कॉल और मैसेज रोकें"</string>
<string name="add_blocked_number_hint" msgid="8769422085658041097">"फ़ोन नंबर"</string>
<string name="block_button" msgid="485080149164258770">"ब्लॉक करें"</string>
@@ -76,7 +76,7 @@
<string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"आपातकालीन नंबर डायल करने या उस पर लेख संदेश भेजने के बाद, अवरोधन बंद हो जाता है ताकि आपातकालीन सेवाएं आपसे संपर्क कर सकें."</string>
<string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"अभी फिर से सक्षम करें"</string>
<string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> अवरोधित है"</string>
- <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> अनवरोधित है"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> अनब्लॉक किया गया"</string>
<string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"आपातकालीन नंबर ब्लॉक करने में असमर्थ."</string>
<string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> पहले से अवरोधित है."</string>
<string name="toast_personal_call_msg" msgid="5817631570381795610">"कॉल करने के लिए व्यक्तिगत डायलर का उपयोग करना"</string>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index 184ebfb..ff38e54 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -28,11 +28,11 @@
<string name="notification_missedCall_message" msgid="4054698824390076431">"Poruka"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"Prekinuti poziv"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"Poziv upućen <xliff:g id="CALLER">%s</xliff:g> prekinut je zbog uspostavljanja hitnog poziva."</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"Poziv je prekinut zbog hitnog poziva."</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"Poziv u pozadini"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"Aplikacija <xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g> prebacila je poziv u pozadinu. Ta aplikacija možda pristupa zvuku i reproducira ga putem poziva."</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"Aplikacija telefona srušila se"</string>
- <!-- no translation found for notification_crashedInCallService_body (7821729360036047995) -->
- <skip />
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> više ne odgovara"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"Vaš je poziv upotrijebio aplikaciju telefona koju ste dobili na uređaju"</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"Zvuk poziva isključen."</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Zvučnik je omogućen."</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Sada ne mogu razgovarati. Što ima?"</string>
@@ -76,7 +76,7 @@
<string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"Nakon što nazovete broj hitne službe ili pošaljete poruku na njega, blokada će se isključiti kako bi vam se hitna služba mogla javiti."</string>
<string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"Ponovno omogući sada"</string>
<string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"Broj <xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> blokiran je"</string>
- <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"Broj <xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> deblokiran je"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"Broj <xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> je deblokiran"</string>
<string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"Broj hitne službe ne može se blokirati."</string>
<string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"Broj <xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> već je blokiran."</string>
<string name="toast_personal_call_msg" msgid="5817631570381795610">"Za upućivanje poziva upotrebljava se osobni program za biranje"</string>
@@ -99,7 +99,7 @@
<string name="notification_channel_call_blocking" msgid="2028807677868598710">"Blokiranje poziva"</string>
<string name="notification_channel_background_calls" msgid="7785659903711350506">"Pozivi u pozadini"</string>
<string name="notification_channel_disconnected_calls" msgid="8228636543997645757">"Prekinuti pozivi"</string>
- <string name="notification_channel_in_call_service_crash" msgid="7313237519166984267">"Aplikacije telefona su se srušile"</string>
+ <string name="notification_channel_in_call_service_crash" msgid="7313237519166984267">"Rušenja aplikacija telefona"</string>
<string name="alert_outgoing_call" msgid="5319895109298927431">"Upućivanjem ovog poziva prekinut ćete poziv u aplikaciji <xliff:g id="OTHER_APP">%1$s</xliff:g>."</string>
<string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"Odaberite kako ćete uputiti poziv"</string>
<string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"Preusmjeri poziv putem aplikacije <xliff:g id="OTHER_APP">%1$s</xliff:g>"</string>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index d0cf42f..55e5535 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -28,10 +28,11 @@
<string name="notification_missedCall_message" msgid="4054698824390076431">"Üzenet"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"Bontott hívás"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"Az Ön és <xliff:g id="CALLER">%s</xliff:g> közötti hívást a szolgáltató egy segélyhívás kezdeményezése miatt bontotta."</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"Segélyhívást kezdeményeztek, ezért az Ön hívását megszakítottuk."</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"Háttérbeli hívás"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"A(z) <xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g> a háttérbe helyezett egy hívást. Ez az alkalmazás hozzáférhet a híváshoz, és hangot játszhat le benne."</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"Telefonalkalmazás összeomlása"</string>
- <string name="notification_crashedInCallService_body" msgid="7821729360036047995">"<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> nevű telefonalkalmazása összeomlott. A hívása a készülékéhez mellékelt telefonalkalmazásban folyatódott."</string>
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"A(z) <xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> lefagyott"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"A hívása a készülékhez mellékelt telefonalkalmazást használta"</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"Hívás némítva."</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Kihangosítás engedélyezve."</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Most nem alkalmas. Mi újság?"</string>
diff --git a/res/values-hy/strings.xml b/res/values-hy/strings.xml
index 6ce8dc9..6987dab 100644
--- a/res/values-hy/strings.xml
+++ b/res/values-hy/strings.xml
@@ -28,10 +28,11 @@
<string name="notification_missedCall_message" msgid="4054698824390076431">"Գրել"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"Զանգն ընդհատվեց"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"<xliff:g id="CALLER">%s</xliff:g>-ի հետ ընթացիկ զանգն ընդհատվեց շտապ կանչի պատճառով։"</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"Ձեր զանգն ընդհատվեց շտապ կանչի պատճառով։"</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"Ֆոնային զանգ"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"<xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g> հավելվածը տեղափոխեց զանգը ֆոնային ռեժիմ և կարող է զանգի ընթացքում աուդիո ֆայլ նվագարկել:"</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"Հեռախոսի հավելվածի աշխատանքը խափանվեց"</string>
- <string name="notification_crashedInCallService_body" msgid="7821729360036047995">"Սխալի պատճառով հեռախոսի ձեր հավելվածի (<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g>) աշխատանքը խափանվեց։ Զանգը շարունակվեց արտադրողի կողմից ձեր սարքում տեղադրված հեռախոսի հավելվածով։"</string>
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> հավելվածը չի արձագանքում"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"Զանգն իրականացվեց արտադրողի կողմից ձեր սարքում տեղադրված հեռախոսի հավելվածով։"</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"Զանգը խլացված է:"</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Բարձրախոսը միացված է:"</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Հիմա չեմ կարող խոսել: Ի՞նչ կա:"</string>
@@ -97,7 +98,7 @@
<string name="notification_channel_missed_call" msgid="7168893015283909012">"Բաց թողնված զանգեր"</string>
<string name="notification_channel_call_blocking" msgid="2028807677868598710">"Զանգերի արգելափակում"</string>
<string name="notification_channel_background_calls" msgid="7785659903711350506">"Ֆոնային զանգեր"</string>
- <string name="notification_channel_disconnected_calls" msgid="8228636543997645757">"Ընդհատված զանգեր"</string>
+ <string name="notification_channel_disconnected_calls" msgid="8228636543997645757">"Անջատված զանգեր"</string>
<string name="notification_channel_in_call_service_crash" msgid="7313237519166984267">"Հեռախոսի հավելվածներ, որոնց աշխատանքը սխալի պատճառով խափանվել է"</string>
<string name="alert_outgoing_call" msgid="5319895109298927431">"Այս զանգը կատարելու դեպքում <xliff:g id="OTHER_APP">%1$s</xliff:g>-ի ընթացիկ զանգը կընդհատվի"</string>
<string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"Ընտրեք, թե ինչպես եք ուզում կատարել այս զանգը"</string>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index 47bda07..23ebb73 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -28,10 +28,11 @@
<string name="notification_missedCall_message" msgid="4054698824390076431">"Pesan"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"Panggilan terputus"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"Panggilan kepada <xliff:g id="CALLER">%s</xliff:g> terputus karena ada panggilan darurat."</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"Panggilan Anda terputus karena ada panggilan darurat."</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"Panggilan latar belakang"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"<xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g> telah menempatkan panggilan telepon ke latar belakang. Aplikasi ini mungkin mengakses dan memutar audio melalui panggilan telepon."</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"Aplikasi telepon error"</string>
- <string name="notification_crashedInCallService_body" msgid="7821729360036047995">"Aplikasi telepon <xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> mengalami error. Panggilan Anda dilanjutkan menggunakan aplikasi telepon yang disertakan dengan perangkat."</string>
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> berhenti merespons"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"Panggilan Anda menggunakan aplikasi telepon bawaan perangkat Anda"</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"Panggilan disenyapkan."</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Pengeras suara ponsel diaktifkan."</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Tak bisa bicara sekarang. Ada apa?"</string>
@@ -80,13 +81,13 @@
<string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> sudah diblokir."</string>
<string name="toast_personal_call_msg" msgid="5817631570381795610">"Menggunakan telepon pribadi untuk melakukan panggilan"</string>
<string name="notification_incoming_call" msgid="1233481138362230894">"<xliff:g id="CALL_VIA">%1$s</xliff:g> panggilan dari <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
- <string name="notification_incoming_video_call" msgid="5795968314037063900">"<xliff:g id="CALL_VIA">%1$s</xliff:g> video call dari <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+ <string name="notification_incoming_video_call" msgid="5795968314037063900">"<xliff:g id="CALL_VIA">%1$s</xliff:g> panggilan video dari <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
<string name="answering_ends_other_call" msgid="8653544281903986641">"Menjawab panggilan akan mengakhiri panggilan <xliff:g id="CALL_VIA">%1$s</xliff:g> Anda"</string>
<string name="answering_ends_other_calls" msgid="3702302838456922535">"Menjawab panggilan akan mengakhiri panggilan <xliff:g id="CALL_VIA">%1$s</xliff:g> Anda"</string>
- <string name="answering_ends_other_video_call" msgid="8572022039304239958">"Menjawab panggilan akan mengakhiri video call <xliff:g id="CALL_VIA">%1$s</xliff:g> Anda"</string>
+ <string name="answering_ends_other_video_call" msgid="8572022039304239958">"Menjawab panggilan akan mengakhiri panggilan video <xliff:g id="CALL_VIA">%1$s</xliff:g> Anda"</string>
<string name="answering_ends_other_managed_call" msgid="4031778317409881805">"Menjawab panggilan akan mengakhiri panggilan yang sedang berlangsung"</string>
<string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"Menjawab panggilan akan mengakhiri panggilan yang sedang berlangsung"</string>
- <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"Menjawab panggilan akan mengakhiri video call yang sedang berlangsung"</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"Menjawab panggilan akan mengakhiri panggilan video yang sedang berlangsung"</string>
<string name="answer_incoming_call" msgid="2045888814782215326">"Jawab"</string>
<string name="decline_incoming_call" msgid="922147089348451310">"Tolak"</string>
<string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"Panggilan tidak dapat dilakukan karena tidak ada akun panggilan yang mendukung jenis panggilan ini."</string>
diff --git a/res/values-is/strings.xml b/res/values-is/strings.xml
index a7037cc..442b9d5 100644
--- a/res/values-is/strings.xml
+++ b/res/values-is/strings.xml
@@ -28,11 +28,11 @@
<string name="notification_missedCall_message" msgid="4054698824390076431">"Skilaboð"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"Aftengt símtal"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"Símtalið til <xliff:g id="CALLER">%s</xliff:g> hefur verið aftengt vegna þess að neyðarsímtal var hringt."</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"Símtalið var aftengt vegna þess að neyðarsímtal var hringt."</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"Bakgrunnssímtal"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"<xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g> hefur sett símtal í bakgrunn. Hugsanlega fær þetta forrit aðgang að hljóði yfir símtalið og spilar það."</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"Hrun í símaforriti"</string>
- <!-- no translation found for notification_crashedInCallService_body (7821729360036047995) -->
- <skip />
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> hætti að svara"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"Símtalið þitt notaði símaforritið sem fylgdi tækinu"</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"Símtal þaggað."</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Kveikt á hátalara."</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Kemst ekki í símann. Eitthvað títt?"</string>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index ba34c94..60f32d7 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -28,11 +28,11 @@
<string name="notification_missedCall_message" msgid="4054698824390076431">"Messaggio"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"Chiamata disconnessa"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"La chiamata a <xliff:g id="CALLER">%s</xliff:g> è stata disconnessa per dare priorità a una chiamata di emergenza."</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"La tua chiamata è stata disconnessa per dare priorità a una chiamata di emergenza."</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"In sottofondo"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"<xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g> ha spostato una chiamata in sottofondo. L\'app potrà accedere all\'audio e riprodurlo in sovrapposizione alla chiamata."</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"App per telefono arrestata in modo anomalo"</string>
- <!-- no translation found for notification_crashedInCallService_body (7821729360036047995) -->
- <skip />
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> non risponde più"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"Per la tua chiamata è stata utilizzata l\'app per telefono integrata nel tuo dispositivo"</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"Chiamata disattivata."</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Vivavoce attivo."</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Non posso parlare ora. Che succede?"</string>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index 841d482..30a909b 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -28,10 +28,11 @@
<string name="notification_missedCall_message" msgid="4054698824390076431">"שליחת הודעה"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"השיחה נותקה"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"השיחה עם <xliff:g id="CALLER">%s</xliff:g> נותקה בגלל שיחת חירום."</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"השיחה נותקה בגלל שיחת חירום."</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"שיחה ברקע"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"האפליקציה <xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g> התחילה שיחה ברקע. ייתכן שלאפליקציה יש גישה לאודיו או שהיא משמיעה אודיו בשיחה."</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"אפליקציית טלפון קרסה"</string>
- <string name="notification_crashedInCallService_body" msgid="7821729360036047995">"אפליקציית השיחות <xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> קרסה. השיחה נמשכה באפליקציית השיחות של המכשיר."</string>
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"אפליקציית <xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> הפסיקה להגיב"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"השיחה הייתה דרך אפליקציית הטלפון המקורית של המכשיר"</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"שיחה מושתקת."</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"רמקול מופעל."</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"לא נוח לי עכשיו. מה קורה?"</string>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index 1937bf4..bd87d66 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -28,11 +28,11 @@
<string name="notification_missedCall_message" msgid="4054698824390076431">"メッセージ"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"通話が切断されました"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"緊急通報番号宛に発信中のため、<xliff:g id="CALLER">%s</xliff:g> さんとの通話が切断されました。"</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"緊急通報番号宛に発信中のため、通話が切断されました。"</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"バックグラウンド通話"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"<xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g> が通話をバックグラウンドに切り替えました。これで、このアプリは通話を通じて音声にアクセスして再生できます。"</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"スマートフォン アプリがクラッシュしました"</string>
- <!-- no translation found for notification_crashedInCallService_body (7821729360036047995) -->
- <skip />
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> が応答しなくなりました"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"通話には、ご利用のデバイスにプリインストールされていた通話アプリが使用されていました"</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"通話がミュートされています。"</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"スピーカーが有効です。"</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"ただいま電話に出られません。ご用件をお知らせください。"</string>
@@ -57,9 +57,9 @@
<string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"デフォルトに設定"</string>
<string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"キャンセル"</string>
<string name="change_default_dialer_warning_message" msgid="8461963987376916114">"<xliff:g id="NEW_APP">%s</xliff:g> はすべての通話の発信や制御を行えるようになります。デフォルトの電話アプリに設定するのは信頼できるアプリだけにしてください。"</string>
- <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"<xliff:g id="NEW_APP">%s</xliff:g> をデフォルトのコール スクリーニング アプリにしますか?"</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"<xliff:g id="NEW_APP">%s</xliff:g> をデフォルトの通話スクリーニング アプリにしますか?"</string>
<string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"<xliff:g id="OLD_APP">%s</xliff:g> では通話をスクリーニングできなくなります。"</string>
- <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"<xliff:g id="NEW_APP">%s</xliff:g> をデフォルトにすると、連絡先に登録されていない発信者の情報を確認したり、そのような発信者からの通話をブロックしたりできるようになります。デフォルトのコール スクリーニング アプリに設定するのは信頼できるアプリだけにしてください。"</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"<xliff:g id="NEW_APP">%s</xliff:g> をデフォルトにすると、連絡先に登録されていない発信者の情報を確認したり、そのような発信者からの通話をブロックしたりできるようになります。デフォルトの通話スクリーニング アプリに設定するのは信頼できるアプリだけにしてください。"</string>
<string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"デフォルトに設定"</string>
<string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"キャンセル"</string>
<string name="blocked_numbers" msgid="8322134197039865180">"ブロックした番号"</string>
@@ -112,7 +112,7 @@
<string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"番号非通知の発信者をブロック"</string>
<string name="phone_settings_payphone_txt" msgid="5003987966052543965">"公衆電話"</string>
<string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"公衆電話からの着信をブロック"</string>
- <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"不明"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"不明な発信者"</string>
<string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"不明な発信者からの着信をブロック"</string>
<string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"着信のブロック"</string>
<string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"着信のブロックを無効にしました"</string>
diff --git a/res/values-ka/strings.xml b/res/values-ka/strings.xml
index 442f54a..be27e8b 100644
--- a/res/values-ka/strings.xml
+++ b/res/values-ka/strings.xml
@@ -28,11 +28,11 @@
<string name="notification_missedCall_message" msgid="4054698824390076431">"შეტყობინების გაგზავნა"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"გათიშული ზარი"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"ზარი <xliff:g id="CALLER">%s</xliff:g>-თან გაითიშა გადაუდებელი ზარის განთავსების გამო."</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"თქვენი ზარი გაითიშა, რადგან ხორციელდება გადაუდებელი ზარი."</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"ზარი ფონში"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"<xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g>-მა განათავსა ზარი ფონში. ამ აპმა შეიძლება წვდომა იქონიოს აუდიოზე ზარიდან და დაუკრას ის."</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"ავარიულად გათიშული ტელეფონის აპი"</string>
- <!-- no translation found for notification_crashedInCallService_body (7821729360036047995) -->
- <skip />
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g>-მა რეაგირება შეწყვიტა"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"თქვენმა ზარმა გამოიყენა ტელეფონის აპი, რომელიც თქვენს მოწყობილობას მოჰყვა"</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"ზარი დადუმებულია."</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"სპიკერები ჩართულია."</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"ვერ ვპასუხობ. რა ხდება?"</string>
diff --git a/res/values-kk/strings.xml b/res/values-kk/strings.xml
index 6155604..0bab244 100644
--- a/res/values-kk/strings.xml
+++ b/res/values-kk/strings.xml
@@ -28,11 +28,11 @@
<string name="notification_missedCall_message" msgid="4054698824390076431">"Хабар"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"Қоңырау ажыратылды"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"Құтқару қызметіне қоңырау шалғандықтан, сіз бен <xliff:g id="CALLER">%s</xliff:g> арасындағы қоңырау ажыратылды."</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"Құтқару қызметіне қоңырау шалғандықтан, қоңырауыңыз ажыратылды."</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"Фондық қоңырау"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"<xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g> қоңырауды фондық режимге ауыстырды. Бұл қолданба қоңырау барысында аудионы пайдалана және ойната алады."</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"Бұзылған телефон қолданбасы"</string>
- <!-- no translation found for notification_crashedInCallService_body (7821729360036047995) -->
- <skip />
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> жауап бермейді"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"Қоңырау құрылғының әдепкі телефон қолданбасы арқылы шалынды."</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"Қоңырау үнсіздендірілген."</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Үндеткішті телефон қосылды."</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Қазір сөйлесе алмаймын. Не болды?"</string>
@@ -76,7 +76,7 @@
<string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"Төтенше жағдай нөмірін терген немесе мәтіндік хабар жіберген соң, төтенше жағдай қызметтері сізге хабарласа алуы үшін тыйым алынады."</string>
<string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"Қазір қайта қосу"</string>
<string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> бөгелген"</string>
- <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> бөгеуден шығарылған"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> бөгеуден шығарылды"</string>
<string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"Жедел қызмет нөмірін бөгеу мүмкін емес."</string>
<string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> бұрыннан бөгелген."</string>
<string name="toast_personal_call_msg" msgid="5817631570381795610">"Қоңырау шалу үшін жеке нөмір тергішті пайдалану"</string>
diff --git a/res/values-km/strings.xml b/res/values-km/strings.xml
index 6818583..58b2abf 100644
--- a/res/values-km/strings.xml
+++ b/res/values-km/strings.xml
@@ -28,10 +28,11 @@
<string name="notification_missedCall_message" msgid="4054698824390076431">"សារ"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"បានផ្ដាច់ការហៅទូរសព្ទ"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"ការហៅទូរសព្ទទៅ <xliff:g id="CALLER">%s</xliff:g> ត្រូវបានផ្ដាច់ ដោយសារកំពុងហៅទៅលេខសង្គ្រោះបន្ទាន់។"</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"ការហៅទូរសព្ទរបស់អ្នកត្រូវបានផ្ដាច់ ដោយសារតែកំពុងធ្វើការហៅទៅលេខសង្គ្រោះបន្ទាន់។"</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"ការហៅនៅផ្ទៃខាងក្រោយ"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"<xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g> បានធ្វើការហៅទូរសព្ទនៅផ្ទៃខាងក្រោយ។ កម្មវិធីនេះអាចកំពុងចូលប្រើប្រាស់ និងចាក់សំឡេងតាមការហៅទូរសព្ទ។"</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"កម្មវិធីទូរសព្ទគាំង"</string>
- <string name="notification_crashedInCallService_body" msgid="7821729360036047995">"កម្មវិធីទូរសព្ទ <xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> របស់អ្នកបានគាំង។ ការហៅទូរសព្ទរបស់អ្នកត្រូវបានបន្តដោយប្រើប្រាស់កម្មវិធីទូរសព្ទដែលមានភ្ជាប់មកជាមួយឧបករណ៍របស់អ្នក។"</string>
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> បានគាំង"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"ការហៅទូរសព្ទរបស់អ្នកបានប្រើប្រាស់កម្មវិធីទូរសព្ទដែលភ្ជាប់មកជាមួយឧបករណ៍របស់អ្នក"</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"ការហៅបិទសំឡេង។"</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"បានបើកអូប៉ាល័រទូរស័ព្ទ។"</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"មិនអាចនិយាយបានទេ ឥឡូវនេះ។ មានការអីដែរ?"</string>
@@ -97,7 +98,7 @@
<string name="notification_channel_missed_call" msgid="7168893015283909012">"ការហៅដែលមិនបានទទួល"</string>
<string name="notification_channel_call_blocking" msgid="2028807677868598710">"ការទប់ស្កាត់ការហៅ"</string>
<string name="notification_channel_background_calls" msgid="7785659903711350506">"ការហៅនៅផ្ទៃខាងក្រោយ"</string>
- <string name="notification_channel_disconnected_calls" msgid="8228636543997645757">"បានផ្ដាច់ការហៅទូរសព្ទ"</string>
+ <string name="notification_channel_disconnected_calls" msgid="8228636543997645757">"ការហៅទូរសព្ទដែលបានផ្ដាច់"</string>
<string name="notification_channel_in_call_service_crash" msgid="7313237519166984267">"កម្មវិធីទូរសព្ទគាំង"</string>
<string name="alert_outgoing_call" msgid="5319895109298927431">"ការហៅទូរសព្ទនេះ នឹងបញ្ចប់ការហៅ <xliff:g id="OTHER_APP">%1$s</xliff:g> របស់អ្នក។"</string>
<string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"ជ្រើសរើសរបៀបធ្វើការហៅទូរសព្ទនេះ"</string>
diff --git a/res/values-kn/strings.xml b/res/values-kn/strings.xml
index c7873f5..6e0bb59 100644
--- a/res/values-kn/strings.xml
+++ b/res/values-kn/strings.xml
@@ -21,18 +21,18 @@
<string name="unknown" msgid="6993977514360123431">"ಅಪರಿಚಿತ"</string>
<string name="notification_missedCallTitle" msgid="5060387047205532974">"ಮಿಸ್ಡ್ ಕಾಲ್"</string>
<string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"ಮಿಸ್ಡ್ ಕೆಲಸದ ಕರೆ"</string>
- <string name="notification_missedCallsTitle" msgid="3910479625507893809">"ಮಿಸ್ಡ್ ಕರೆಗಳು"</string>
- <string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> ಮಿಸ್ಡ್ ಕರೆಗಳು"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"ಮಿಸ್ಡ್ ಕಾಲ್ಗಳು"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> ಮಿಸ್ಡ್ ಕಾಲ್ಗಳು"</string>
<string name="notification_missedCallTicker" msgid="6731461957487087769">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g> ಅವರಿಂದ ಮಿಸ್ಡ್ ಕಾಲ್"</string>
<string name="notification_missedCall_call_back" msgid="7900333283939789732">"ಮರಳಿ ಕರೆ ಮಾಡಿ"</string>
<string name="notification_missedCall_message" msgid="4054698824390076431">"ಸಂದೇಶ"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"ಕರೆಯ ಕನೆಕ್ಷನ್ ಅನ್ನು ಕಡಿತಗೊಳಿಸಲಾಗಿದೆ"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"ತುರ್ತು ಕರೆಯನ್ನು ಮಾಡುತ್ತಿರುವ ಕಾರಣ <xliff:g id="CALLER">%s</xliff:g> ಗೆ ಕರೆಯ ಕನೆಕ್ಷನ್ ಅನ್ನು ಕಡಿತಗೊಳಿಸಲಾಗಿದೆ."</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"ತುರ್ತು ಕರೆಯನ್ನು ಮಾಡುತ್ತಿರುವ ಕಾರಣ ನಿಮ್ಮ ಕರೆಯನ್ನು ಕಡಿತಗೊಳಿಸಲಾಗಿದೆ."</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"ಹಿನ್ನೆಲೆ ಕರೆ"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"<xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g> ಆ್ಯಪ್, ಕರೆಯನ್ನು ಹಿನ್ನೆಲೆಯಲ್ಲಿ ಇರಿಸಿದೆ. ಈ ಆ್ಯಪ್ ಕರೆಯ ಮೂಲಕ ಆಡಿಯೊವನ್ನು ಪ್ರವೇಶಿಸಬಹುದು ಮತ್ತು ಪ್ಲೇ ಮಾಡಬಹುದು."</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"ಕ್ರ್ಯಾಶ್ ಆಗಿರುವ ಫೋನ್ ಆ್ಯಪ್"</string>
- <!-- no translation found for notification_crashedInCallService_body (7821729360036047995) -->
- <skip />
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> ಪ್ರತಿಕ್ರಿಯಿಸುವುದನ್ನು ನಿಲ್ಲಿಸಿದೆ"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"ನಿಮ್ಮ ಕರೆಯು ಸಾಧನದ ಜೊತೆಗೆ ನೀಡಲಾದ ಫೋನ್ ಆ್ಯಪ್ ಅನ್ನು ಬಳಸಿದೆ."</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"ಕರೆಯನ್ನು ಮ್ಯೂಟ್ ಮಾಡಲಾಗಿದೆ."</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"ಸ್ಪೀಕರ್ಫೋನ್ ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ."</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"ಕ್ಷಮಿಸಿ, ಈಗ ಮಾತನಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ. ಸಮಾಚಾರವೇನು?"</string>
@@ -95,7 +95,7 @@
<string name="cant_call_due_to_ongoing_calls" msgid="6379163795277824868">"ನಿಮ್ಮ <xliff:g id="OTHER_CALL">%1$s</xliff:g> ಕರೆಗಳ ಕಾರಣ ಕರೆ ಮಾಡಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ."</string>
<string name="cant_call_due_to_ongoing_unknown_call" msgid="8243532328969433172">"ಬೇರೊಂದು ಅಪ್ಲಿಕೇಶನ್ನಲ್ಲಿ ಕರೆಯಲ್ಲಿರುವುದರಿಂದ ಕರೆ ಮಾಡಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ."</string>
<string name="notification_channel_incoming_call" msgid="5245550964701715662">"ಒಳಬರುವ ಕರೆಗಳು"</string>
- <string name="notification_channel_missed_call" msgid="7168893015283909012">"ಮಿಸ್ಡ್ ಕರೆಗಳು"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"ಮಿಸ್ಡ್ ಕಾಲ್ಗಳು"</string>
<string name="notification_channel_call_blocking" msgid="2028807677868598710">"ಕರೆ ನಿರ್ಬಂಧಿಸುವಿಕೆ"</string>
<string name="notification_channel_background_calls" msgid="7785659903711350506">"ಹಿನ್ನೆಲೆ ಕರೆಗಳು"</string>
<string name="notification_channel_disconnected_calls" msgid="8228636543997645757">"ಕರೆಗಳ ಕನೆಕ್ಷನ್ ಅನ್ನು ಕಡಿತಗೊಳಿಸಲಾಗಿದೆ"</string>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index 03a89d6..1a29b2e 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -28,11 +28,11 @@
<string name="notification_missedCall_message" msgid="4054698824390076431">"문자 메시지"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"연결 해제된 통화"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"긴급 전화 연결로 인해 <xliff:g id="CALLER">%s</xliff:g>님에게 건 통화가 연결 해제되었습니다."</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"긴급 전화 연결로 인해 통화가 연결 해제되었습니다."</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"백그라운드 통화"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"<xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g>에서 통화를 백그라운드로 전환했습니다. 앱이 통화에 사용되는 오디오에 액세스하거나 재생 중일 수 있습니다."</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"다운된 전화 앱"</string>
- <!-- no translation found for notification_crashedInCallService_body (7821729360036047995) -->
- <skip />
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g>의 응답이 중지됨"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"기기의 기본 전화 앱을 사용하여 통화했습니다."</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"통화가 음소거되었습니다."</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"스피커폰이 사용 설정되었습니다."</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"통화 불가. 용무를 남겨주세요."</string>
@@ -63,7 +63,7 @@
<string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"기본으로 설정"</string>
<string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"취소"</string>
<string name="blocked_numbers" msgid="8322134197039865180">"차단된 번호"</string>
- <string name="blocked_numbers_msg" msgid="2797422132329662697">"차단한 번호에서 걸려오는 전화나 문자는 더 이상 수신되지 않습니다."</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"차단된 번호에서 걸려오는 전화나 문자는 더 이상 수신되지 않습니다."</string>
<string name="block_number" msgid="3784343046852802722">"번호 추가"</string>
<string name="unblock_dialog_body" msgid="2723393535797217261">"<xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>번을 차단 해제하시겠습니까?"</string>
<string name="unblock_button" msgid="8732021675729981781">"차단 해제"</string>
diff --git a/res/values-ky/strings.xml b/res/values-ky/strings.xml
index 82e7b61..83e498e 100644
--- a/res/values-ky/strings.xml
+++ b/res/values-ky/strings.xml
@@ -28,10 +28,11 @@
<string name="notification_missedCall_message" msgid="4054698824390076431">"Билдирүү"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"Ажыратылган чалуу"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"Учурда шашылыш чалуудан улам, <xliff:g id="CALLER">%s</xliff:g> чалуу ажыратылган."</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"Учурда шашылыш чалуудан улам, чалууңуз ажыратылган."</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"Фондогу чалуу"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"<xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g> чалууну фонго койгон. Бул колдонмо чалуу аркылуу аудиого кирип, ойното алат."</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"Телефондун колдонмосунда ката кетти"</string>
- <string name="notification_crashedInCallService_body" msgid="7821729360036047995">"<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> телефон колдонмоңузда ката кеткен. Чалууңуз түзмөгүңүз менен келген телефон колдонмосу пайдаланып улантылган."</string>
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> жооп берүүнү токтотту"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"Чалууңуз түзмөгүңүз менен келген телефон колдонмосун пайдаланды"</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"Чалуу үнсүз тартипте."</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Динамик иштеп жатат."</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Азыр сүйлөшө албайм. Эмне болду?"</string>
@@ -98,7 +99,7 @@
<string name="notification_channel_call_blocking" msgid="2028807677868598710">"Чалууну бөгөттөө"</string>
<string name="notification_channel_background_calls" msgid="7785659903711350506">"Фондогу чалуулар"</string>
<string name="notification_channel_disconnected_calls" msgid="8228636543997645757">"Ажыратылган чалуулар"</string>
- <string name="notification_channel_in_call_service_crash" msgid="7313237519166984267">"Телефондун колдонмолорунда ката кетти"</string>
+ <string name="notification_channel_in_call_service_crash" msgid="7313237519166984267">"Катадан улам иштебей калган телефон колдонмолору"</string>
<string name="alert_outgoing_call" msgid="5319895109298927431">"Эгер чалып баштасаңыз, <xliff:g id="OTHER_APP">%1$s</xliff:g> чалууңуз аяктайт."</string>
<string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"Чалуу жолун тандаңыз"</string>
<string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"<xliff:g id="OTHER_APP">%1$s</xliff:g> аркылуу чалуу багытын буруу"</string>
diff --git a/res/values-lo/strings.xml b/res/values-lo/strings.xml
index d5c2e6c..64142ca 100644
--- a/res/values-lo/strings.xml
+++ b/res/values-lo/strings.xml
@@ -28,11 +28,11 @@
<string name="notification_missedCall_message" msgid="4054698824390076431">"ຂໍ້ຄວາມ"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"ສາຍຖືກຕັດແລ້ວ"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"ສາຍໂທຫາ <xliff:g id="CALLER">%s</xliff:g> ຖືກຕັດແລ້ວ ເນື່ອງຈາກກຳລັງມີການໂທສຸກເສີນຢູ່."</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"ສາຍໂທຂອງທ່ານໄດ້ຖືກຕັດແລ້ວ ເນື່ອງຈາກກຳລັງມີການໂທສຸກເສີນຢູ່."</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"ການໂທໃນພື້ນຫຼັງ"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"<xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g> ວາງການໂທໄວ້ພື້ນຫຼັງແລ້ວ. ແອັບນີ້ອາດເຂົ້າເຖິງ ແລະ ຫຼິ້ນສຽງຜ່ານການໂທໄດ້."</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"ແອັບໂທລະສັບຂັດຂ້ອງ"</string>
- <!-- no translation found for notification_crashedInCallService_body (7821729360036047995) -->
- <skip />
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> ໄດ້ຢຸດການຕອບສະໜອງແລ້ວ"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"ການໂທຂອງທ່ານໃຊ້ແອັບໂທລະສັບທີ່ມາພ້ອມກັບອຸປະກອນຂອງທ່ານ"</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"ປິດສຽງການໂທແລ້ວ."</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"ເປີດລຳໂພງແລ້ວ."</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"ບໍ່ສາມາດລົມໄດ້ໃນຕອນນີ້. ມີຫຍັງບໍ່?"</string>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index 7acbc58..29090d1 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -28,11 +28,11 @@
<string name="notification_missedCall_message" msgid="4054698824390076431">"Pranešimas"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"Skambutis atjungtas"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"Skambutis kontaktui <xliff:g id="CALLER">%s</xliff:g> buvo atjungtas dėl atliekamo skambučio pagalbos numeriu."</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"Skambutis buvo atjungtas dėl atliekamo skambučio pagalbos numeriu."</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"Skambutis fone"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"Programa „<xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g>“ perkėlė skambutį į foną. Ši programa gali pasiekti ir leisti garsą vykstant skambučiui."</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"Užstrigusi telefono programa"</string>
- <!-- no translation found for notification_crashedInCallService_body (7821729360036047995) -->
- <skip />
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"Programa „<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g>“ nebereaguoja"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"Atliekant skambutį buvo naudojama telefono programa, kuri buvo įrenginyje jį įsigijus"</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"Skambutis nutildytas."</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Garsiakalbis įgalintas."</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Dabar negaliu kalbėti. Kas nutiko?"</string>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index 1e88d48..782777d 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -28,11 +28,11 @@
<string name="notification_missedCall_message" msgid="4054698824390076431">"Ziņojums"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"Pārtraukts zvans"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"Zvans lietotājam <xliff:g id="CALLER">%s</xliff:g> ir pārtraukts, jo tiek veikts ārkārtas izsaukums."</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"Jūsu zvans ir pārtraukts, jo tiek veikts ārkārtas izsaukums."</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"Saruna fonā"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"<xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g> pārcēla sarunu uz darbību fonā. Sarunas laikā šī lietotne var piekļūt audio saturam un to atskaņot."</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"Avarējusī tālruņa lietotne"</string>
- <!-- no translation found for notification_crashedInCallService_body (7821729360036047995) -->
- <skip />
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> pārtrauca reaģēt"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"Zvanam tika izmantota jūsu ierīcē iebūvētā tālruņa lietotne"</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"Zvana skaņa ir izslēgta."</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Skaļrunis ir iespējots."</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Nevaru runāt. Kas gadījās?"</string>
diff --git a/res/values-mk/strings.xml b/res/values-mk/strings.xml
index 4cc54b1..99e211f 100644
--- a/res/values-mk/strings.xml
+++ b/res/values-mk/strings.xml
@@ -16,7 +16,7 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"Управување со повик"</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"Управување со повици"</string>
<string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"Телефон"</string>
<string name="unknown" msgid="6993977514360123431">"Непознато"</string>
<string name="notification_missedCallTitle" msgid="5060387047205532974">"Пропуштен повик"</string>
@@ -24,15 +24,15 @@
<string name="notification_missedCallsTitle" msgid="3910479625507893809">"Пропуштени повици"</string>
<string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> пропуштени повици"</string>
<string name="notification_missedCallTicker" msgid="6731461957487087769">"Пропуштен повик од <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
- <string name="notification_missedCall_call_back" msgid="7900333283939789732">"Повикува назад"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"Повикај го"</string>
<string name="notification_missedCall_message" msgid="4054698824390076431">"Порака"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"Исклучен повик"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"Повикот до <xliff:g id="CALLER">%s</xliff:g> се исклучи поради воспоставувањето итен повик."</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"Повикот ќе се исклучи поради воспоставувањето итен повик."</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"Повик во заднина"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"<xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g> воспостави повик во заднината. Апликацијава можеби пристапува до и пушта аудио во повикот."</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"Падната апликација за телефон"</string>
- <!-- no translation found for notification_crashedInCallService_body (7821729360036047995) -->
- <skip />
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> падна"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"Повикот се обави на апликацијата за телефон што дојде со уредот"</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"Повикот е со исклучен звук"</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Интерфонот е овозможен."</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Не можам да зборувам сега. Што има?"</string>
@@ -44,7 +44,7 @@
<string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
<string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"Брз одговор"</string>
<string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"Порака е испратена на <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
- <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"Пораката не можеше да се испрати на <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"Пораката не може да се испрати на <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
<string name="enable_account_preference_title" msgid="6949224486748457976">"Сметки за повици"</string>
<string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"Дозволени се само итни повици."</string>
<string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"Оваа апликација не може да прави појдовни повици без дозволата Телефон."</string>
diff --git a/res/values-ml/strings.xml b/res/values-ml/strings.xml
index de08a5b..5c64034 100644
--- a/res/values-ml/strings.xml
+++ b/res/values-ml/strings.xml
@@ -16,7 +16,7 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"കോൾ മാനേജുമെന്റ്"</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"കോൾ മാനേജ്മെന്റ്"</string>
<string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"ഫോണ്"</string>
<string name="unknown" msgid="6993977514360123431">"അജ്ഞാതം"</string>
<string name="notification_missedCallTitle" msgid="5060387047205532974">"മിസ്ഡ് കോൾ"</string>
@@ -24,15 +24,15 @@
<string name="notification_missedCallsTitle" msgid="3910479625507893809">"മിസ്ഡ് കോളുകൾ"</string>
<string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> മിസ്ഡ് കോളുകൾ"</string>
<string name="notification_missedCallTicker" msgid="6731461957487087769">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g> എന്നതിൽ നിന്നുള്ള മിസ്ഡ് കോൾ"</string>
- <string name="notification_missedCall_call_back" msgid="7900333283939789732">"കോൾബാക്ക്"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"തിരിച്ചുവിളിക്കുക"</string>
<string name="notification_missedCall_message" msgid="4054698824390076431">"സന്ദേശം"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"വിച്ഛേദിക്കപ്പെട്ട കോൾ"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"ഒരു അടിയന്തര കോൾ നടക്കുന്നതിനാൽ <xliff:g id="CALLER">%s</xliff:g> എന്നയാൾക്ക് ചെയ്യുന്ന കോൾ വിച്ഛേദിക്കപ്പെട്ടിരിക്കുന്നു."</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"ഒരു അടിയന്തര കോൾ നടക്കുന്നതിനാൽ നിങ്ങളുടെ കോൾ വിച്ഛേദിക്കപ്പെട്ടിരിക്കുന്നു."</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"പശ്ചാത്തല കോൾ"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"<xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g> കോൾ പശ്ചാത്തലത്തിലേക്ക് മാറ്റി. കോൾ ചെയ്യുമ്പോൾ ഈ ആപ്പിന് ഓഡിയോ ആക്സസ് ചെയ്യാനും പ്ലേ ചെയ്യാനും കഴിഞ്ഞേക്കാം."</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"ക്രാഷായ ഫോൺ ആപ്പ്"</string>
- <!-- no translation found for notification_crashedInCallService_body (7821729360036047995) -->
- <skip />
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> ആപ്പ് പ്രതികരിക്കുന്നത് നിർത്തി"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"നിങ്ങളുടെ കോൾ, നിങ്ങളുടെ ഉപകരണത്തിനൊപ്പം ലഭ്യമായ ഫോൺ ആപ്പ് ഉപയോഗിച്ചു"</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"കോൾ നിശബ്ദമാക്കി."</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"സ്പീക്കർഫോൺ പ്രവർത്തനക്ഷമമാക്കി."</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"ഇപ്പോൾ സംസാരിക്കാനാകില്ല. എന്താ വിളിച്ചത്?"</string>
@@ -76,7 +76,7 @@
<string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"നിങ്ങൾ ഒരു എമർജൻസി നമ്പർ ഡയൽ ചെയ്ത് കഴിയുമ്പോഴോ അതിലേക്ക് സന്ദേശമയച്ചുകഴിയുമ്പോഴോ, എമർജൻസി സേവനങ്ങൾ നിങ്ങളിലേക്ക് എത്തുമെന്ന് ഉറപ്പാക്കാൻ കോൾ ബ്ലോക്കിംഗ് ഓഫാക്കും."</string>
<string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"ഇപ്പോൾ വീണ്ടും പ്രവർത്തനക്ഷമമാക്കുക"</string>
<string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> ബ്ലോക്ക് ചെയ്തു"</string>
- <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> അൺബ്ലോക്കുചെയ്തു"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> അൺബ്ലോക്ക് ചെയ്തു"</string>
<string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"അടിയന്തര നമ്പർ ബ്ലോക്കുചെയ്യാനാകുന്നില്ല."</string>
<string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> മുമ്പേതന്നെ ബ്ലോക്കുചെയ്തതാണ്."</string>
<string name="toast_personal_call_msg" msgid="5817631570381795610">"കോൾ ചെയ്യുന്നതിന് സ്വകാര്യ ഡയലർ ഉപയോഗിക്കുന്നു"</string>
diff --git a/res/values-mn/strings.xml b/res/values-mn/strings.xml
index 86f55d4..cdef26b 100644
--- a/res/values-mn/strings.xml
+++ b/res/values-mn/strings.xml
@@ -25,25 +25,26 @@
<string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> аваагүй дуудлага"</string>
<string name="notification_missedCallTicker" msgid="6731461957487087769">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g>-н аваагүй дуудлага"</string>
<string name="notification_missedCall_call_back" msgid="7900333283939789732">"Буцааж залгах"</string>
- <string name="notification_missedCall_message" msgid="4054698824390076431">"Мессэж"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"Мессеж"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"Дуудлага саллаа"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"Яаралтай дуудлага ирсэн тул <xliff:g id="CALLER">%s</xliff:g> руу хийсэн дуудлагыг салгалаа."</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"Яаралтай дуудлага ирсэн тул таны дуудлагыг салгалаа."</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"Арын дуудлага"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"<xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g> дуудлагыг ард оруулсан байна. Энэхүү апп нь дуудлагаар аудиод хандаж, тоглуулж байна."</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"Гэмтсэн гар утасны апп"</string>
- <string name="notification_crashedInCallService_body" msgid="7821729360036047995">"Таны гар утасны апп болох <xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> гэмтсэн байна. Таны дуудлагыг таны төхөөрөмжтэй хамт ирсэн гар утасны аппаар үргэлжлүүлсэн."</string>
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> хариу өгөхөө больсон"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"Таны дуудлагыг таны төхөөрөмжтэй хамт ирсэн гар утасны аппаар хийсэн"</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"Дууг хаасан."</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Чанга яригчийг идэвхжүүлсэн."</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Ярих боломжгүй байна. Сонин юу байна?"</string>
- <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"Би тань руу одоо буцаагаад залгая."</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"Би тань руу одоохон эргээд залгая."</string>
<string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"Би тань руу дараа залгая."</string>
<string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"Ярих боломжгүй байна. Дараа залгах уу?"</string>
<string name="respond_via_sms_setting_title" msgid="4762275482898830160">"Шуурхай хариунууд"</string>
<string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"Шуурхай хариуг засах"</string>
<string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
<string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"Шуурхай хариу"</string>
- <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"Зурвасыг <xliff:g id="PHONE_NUMBER">%s</xliff:g> руу илгээв."</string>
- <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"<xliff:g id="PHONE_NUMBER">%s</xliff:g> руу зурвас илгээж чадсангүй."</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"Мессежийг <xliff:g id="PHONE_NUMBER">%s</xliff:g> руу илгээв."</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"<xliff:g id="PHONE_NUMBER">%s</xliff:g> руу мессеж илгээж чадсангүй."</string>
<string name="enable_account_preference_title" msgid="6949224486748457976">"Дуудлагын эрхтэй бүртгэлүүд"</string>
<string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"Зөвхөн яаралтай тусламжийн дуудлага хийх боломжтой."</string>
<string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"Энэ апп нь утасны зөвшөөрөлгүйгээр дуудлага хийх боломжгүй."</string>
@@ -70,12 +71,12 @@
<string name="add_blocked_number_hint" msgid="8769422085658041097">"Утасны дугаар"</string>
<string name="block_button" msgid="485080149164258770">"Блоклох"</string>
<string name="non_primary_user" msgid="315564589279622098">"Зөвхөн энэ төхөөрөмжийн эзэн блоклосон дугаарыг харж, өөрчлөх боломжтой."</string>
- <string name="delete_icon_description" msgid="5335959254954774373">"Хоригийг тайлах"</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"Блокоос гаргах"</string>
<string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"Дугаар хориглох түр хугацаанд идэвхгүй болсон"</string>
<string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"Түргэн тусламжийн дугаар руу залгах буюу мессеж бичсэний дараа түргэн тусламжаас тантай холбогдох боломжтой байлгахын тулд дугаар хориглохыг идэвхгүй болгоно."</string>
<string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"Одоо дахин идэвхжүүлэх"</string>
- <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g>-г хориглосон"</string>
- <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g>-н хоригийг авсан"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g>-г блоклосон"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g>-г блокоос гаргасан"</string>
<string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"Яаралтай дугаарыг хориглох боломжгүй."</string>
<string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g>-г аль хэдийн хориглосон байна."</string>
<string name="toast_personal_call_msg" msgid="5817631570381795610">"Дуудлага хийхийн тулд хувийн залгагчийг ашиглаж байна"</string>
diff --git a/res/values-mr/strings.xml b/res/values-mr/strings.xml
index 5230356..331cf5c 100644
--- a/res/values-mr/strings.xml
+++ b/res/values-mr/strings.xml
@@ -28,11 +28,11 @@
<string name="notification_missedCall_message" msgid="4054698824390076431">"मेसेज"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"डिस्कनेक्ट केलेला कॉल"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"आणीबाणी कॉल केल्यामुळे <xliff:g id="CALLER">%s</xliff:g> ला केलेला कॉल डिस्कनेक्ट केला गेला."</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"आणीबाणी कॉल केल्यामुळे तुमचा कॉल डिस्कनेक्ट केला गेला आहे."</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"बॅकग्राउंड कॉल"</string>
- <string name="notification_audioProcessing_body" msgid="6397005913770420388">"<xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g> यांनी कॉल बॅकग्राउंडवर ठेवला आहे हे ॲप कदाचित कॉलद्वारे ऑडिओ ॲक्सेस आणि प्ले करत आहे."</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"क्रॅश झालेले फोन ॲप"</string>
- <!-- no translation found for notification_crashedInCallService_body (7821729360036047995) -->
- <skip />
+ <string name="notification_audioProcessing_body" msgid="6397005913770420388">"<xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g> यांनी कॉल बॅकग्राउंडवर ठेवला आहे हे अॅप कदाचित कॉलद्वारे ऑडिओ ॲक्सेस आणि प्ले करत आहे."</string>
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> ने प्रतिसाद देणे थांबवले आहे"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"तुमच्या कॉलने डिव्हाइससोबत दिलेले फोन अॅप वापरले आहे"</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"कॉल नि.शब्द केला."</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"स्पीकरफोन सक्षम केला."</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"आत्ता बोलू शकत नाही. कशासाठी कॉल केला होता?"</string>
@@ -85,9 +85,9 @@
<string name="answering_ends_other_call" msgid="8653544281903986641">"उत्तर देण्यामुळे तुमचा <xliff:g id="CALL_VIA">%1$s</xliff:g> कॉल समाप्त होईल"</string>
<string name="answering_ends_other_calls" msgid="3702302838456922535">"उत्तर देण्यामुळे तुमचे <xliff:g id="CALL_VIA">%1$s</xliff:g> कॉल समाप्त होतील"</string>
<string name="answering_ends_other_video_call" msgid="8572022039304239958">"उत्तर देण्यामुळे तुमचा <xliff:g id="CALL_VIA">%1$s</xliff:g> व्हिडिओ कॉल समाप्त होईल"</string>
- <string name="answering_ends_other_managed_call" msgid="4031778317409881805">"उत्तर देण्यामुळे तुमचा सुरु असलेला कॉल समाप्त होईल"</string>
- <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"उत्तर देण्यामुळे तुमचे सुरु असलेले कॉल समाप्त होतील"</string>
- <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"उत्तर देण्यामुळे तुमचा सुरु असलेला व्हिडिओ कॉल समाप्त होईल"</string>
+ <string name="answering_ends_other_managed_call" msgid="4031778317409881805">"उत्तर देण्यामुळे तुमचा सुरू असलेला कॉल समाप्त होईल"</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"उत्तर देण्यामुळे तुमचे सुरू असलेले कॉल समाप्त होतील"</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"उत्तर देण्यामुळे तुमचा सुरू असलेला व्हिडिओ कॉल समाप्त होईल"</string>
<string name="answer_incoming_call" msgid="2045888814782215326">"उत्तर द्या"</string>
<string name="decline_incoming_call" msgid="922147089348451310">"नकार द्या"</string>
<string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"कॉल करू शकत नाही कारण अशाप्रकारच्या कॉलला सपोर्ट करतील अशी कोणतीही कॉलिंग खाती नाहीत."</string>
@@ -95,11 +95,11 @@
<string name="cant_call_due_to_ongoing_calls" msgid="6379163795277824868">"आपल्या <xliff:g id="OTHER_CALL">%1$s</xliff:g> कॉलमुळे कॉल केला जाऊ शकत नाही."</string>
<string name="cant_call_due_to_ongoing_unknown_call" msgid="8243532328969433172">"दुसर्या ॲपमधील कॉलमुळे कॉल केला जाऊ शकत नाही."</string>
<string name="notification_channel_incoming_call" msgid="5245550964701715662">"येणारे कॉल"</string>
- <string name="notification_channel_missed_call" msgid="7168893015283909012">"सुटलेले कॉल"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"मिस्ड कॉल"</string>
<string name="notification_channel_call_blocking" msgid="2028807677868598710">"कॉल ब्लॉक करणे"</string>
<string name="notification_channel_background_calls" msgid="7785659903711350506">"बॅकग्राउंड कॉल"</string>
<string name="notification_channel_disconnected_calls" msgid="8228636543997645757">"डिस्कनेक्ट केलेले कॉल"</string>
- <string name="notification_channel_in_call_service_crash" msgid="7313237519166984267">"क्रॅश झालेले फोन ॲप्स"</string>
+ <string name="notification_channel_in_call_service_crash" msgid="7313237519166984267">"क्रॅश झालेली फोन ॲप्स"</string>
<string name="alert_outgoing_call" msgid="5319895109298927431">"हा कॉल केल्याने तुमचा <xliff:g id="OTHER_APP">%1$s</xliff:g> कॉल समाप्त होईल."</string>
<string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"हा कॉल कसा करायचा ते निवडा"</string>
<string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"<xliff:g id="OTHER_APP">%1$s</xliff:g> वापरून कॉल रीडिरेक्ट करा"</string>
diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml
index 9d2bad2..b43b554 100644
--- a/res/values-ms/strings.xml
+++ b/res/values-ms/strings.xml
@@ -28,10 +28,11 @@
<string name="notification_missedCall_message" msgid="4054698824390076431">"Mesej"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"Panggilan diputuskan sambungan"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"Panggilan kepada <xliff:g id="CALLER">%s</xliff:g> telah diputuskan sambungannya kerana panggilan kecemasan sedang dibuat."</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"Panggilan anda telah diputuskan sambungan kerana panggilan kecemasan sedang dibuat."</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"Panggilan latar blkg"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"<xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g> telah meletakkan panggilan dalam latar belakang Apl ini mungkin mengakses dan memainkan audio mengatasi panggilan."</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"Aplikasi telefon yang ranap"</string>
- <string name="notification_crashedInCallService_body" msgid="7821729360036047995">"Apl telefon anda, <xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> telah ranap. Panggilan anda telah diteruskan menggunakan apl telefon yang disertakan dengan peranti anda."</string>
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> telah berhenti memberikan respons"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"Panggilan anda telah menggunakan aplikasi telefon yang disertakan bersama peranti anda"</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"Panggilan diredam."</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Telefon pembesar suara didayakan."</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Sedang sibuk. Ada apa?"</string>
diff --git a/res/values-my/strings.xml b/res/values-my/strings.xml
index fe724dc..c1b3124 100644
--- a/res/values-my/strings.xml
+++ b/res/values-my/strings.xml
@@ -28,11 +28,11 @@
<string name="notification_missedCall_message" msgid="4054698824390076431">"စာတို"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"ခေါ်ဆိုမှုကို ဖြတ်တောက်လိုက်သည်"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"အရေးပေါ်ဖုန်းခေါ်ဆိုမှု ပြုလုပ်နေသောကြောင့် <xliff:g id="CALLER">%s</xliff:g> ထံသို့ ခေါ်ဆိုမှုကို ဖြတ်တောက်လိုက်သည်။"</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"အရေးပေါ်ဖုန်းခေါ်ဆိုမှု ပြုလုပ်နေသောကြောင့် သင်၏ ခေါ်ဆိုမှုကို ဖြတ်တောက်လိုက်သည်။"</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"နောက်ခံမှ ခေါ်ဆိုမှု"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"<xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g> သည် ခေါ်ဆိုမှုကို နောက်ခံသို့ ထည့်လိုက်ပါသည်။ ဤအက်ပ်သည် ခေါ်ဆိုမှုမှတစ်ဆင့် အသံများကို သုံးခြင်းနှင့် ဖွင့်ခြင်းတို့ ပြုလုပ်နိုင်ပါသည်။"</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"ရပ်တန့်သွားသော ဖုန်းအက်ပ်"</string>
- <!-- no translation found for notification_crashedInCallService_body (7821729360036047995) -->
- <skip />
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> က တုံ့ပြန်ခြင်းကို ရပ်လိုက်သည်"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"သင့်စက်ပစ္စည်းနှင့် အတူပါလာသော ဖုန်းအက်ပ်သုံးပြီး ခေါ်ဆိုမှုကို ပြုလုပ်ထားသည်"</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"နားထောင်ရုံသာ (စကားပြောပိတ်ထားသည်)"</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"စပီကာဖုန်း သုံးလို့ရသည်"</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"အခုပြောလို့မရဘူး။ အကြောင်းထူးရှိလား။"</string>
@@ -65,18 +65,18 @@
<string name="blocked_numbers" msgid="8322134197039865180">"ပိတ်ထားသည့် နံပါတ်များ"</string>
<string name="blocked_numbers_msg" msgid="2797422132329662697">"ပိတ်ထားသော နံပါတ်များမှ ဖုန်းခေါ်ခြင်း (သို့) စာသားပို့ခြင်းတို့ကို သင်လက်ခံရရှိမည် မဟုတ်ပါ။"</string>
<string name="block_number" msgid="3784343046852802722">"နံပါတ်တစ်ခု ထည့်ပါ"</string>
- <string name="unblock_dialog_body" msgid="2723393535797217261">"<xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g> ကို ပိတ်ဆို့မှုပြန်ဖွင့်မလား။"</string>
- <string name="unblock_button" msgid="8732021675729981781">"ပိတ်ဆို့မှုပြန်ဖွင့်ပါ"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"<xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g> ကို ပြန်ဖွင့်မလား။"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"ပြန်ဖွင့်ရန်"</string>
<string name="add_blocked_dialog_body" msgid="8599974422407139255">"ဤနံပါတ်မှ ခေါ်ဆိုမှုနှင့် စာများကို ပိတ်ဆို့ပါ"</string>
<string name="add_blocked_number_hint" msgid="8769422085658041097">"ဖုန်းနံပါတ်"</string>
<string name="block_button" msgid="485080149164258770">"ပိတ်ဆို့ပါ"</string>
<string name="non_primary_user" msgid="315564589279622098">"ပိတ်ဆို့ထားသည့် နံပါတ်များကို စက်ပစ္စည်းပိုင်ရှင်သာလျှင် ကြည့်ရှု၍ စီမံခန့်ခွဲနိုင်ပါသည်။"</string>
- <string name="delete_icon_description" msgid="5335959254954774373">"မပိတ်ဆို့တော့ပါ"</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"ပြန်ဖွင့်ရန်"</string>
<string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"ဘလော့ခ်လုပ်ခြင်းကို ပိတ်ထားပါသည်"</string>
<string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"သင် အရေးပေါ်နံပါတ်တစ်ခုကို ဖုန်းခေါ် (သို့) စာသားပို့ပြီးနောက် အရေးပေါ်ဝန်ဆောင်မှုများက သင့်ကို ဆက်သွယ်နိုင်ကြောင်း သေချာစေရန် ဘလော့ခ်လုပ်ခြင်းကို ပိတ်ထားပါသည်။"</string>
<string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"ယခု ပြန်ဖွင့်လိုက်ပါ"</string>
<string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> ကို ပိတ်ဆို့ပြီးပါပြီ"</string>
- <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> ကို မပိတ်ဆို့တော့ပါ"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> ကို ပြန်ဖွင့်လိုက်သည်"</string>
<string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"အရေးပေါ်နံပါတ်ကို ပိတ်ဆို့၍ မရပါ။"</string>
<string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> ကို ပိတ်ဆို့ထားပြီး ဖြစ်သည်။"</string>
<string name="toast_personal_call_msg" msgid="5817631570381795610">"ဖုန်းခေါ်ဆိုမှုပြုလုပ်ရန် ကိုယ်ရေးကိုယ်တာ ဖုန်းခေါ်ဆိုမှုစနစ်ကို အသုံးပြုခြင်း"</string>
@@ -96,7 +96,7 @@
<string name="cant_call_due_to_ongoing_unknown_call" msgid="8243532328969433172">"အခြားအက်ပ်သုံးပြီးပြောနေသည့်အတွက် အထွက်ခေါ်ဆိုမှုကို မပြုလုပ်နိုင်ပါ။"</string>
<string name="notification_channel_incoming_call" msgid="5245550964701715662">"အဝင်ဖုန်းခေါ်ဆိုမှုများ"</string>
<string name="notification_channel_missed_call" msgid="7168893015283909012">"လွတ်သွားသော ဖုန်းခေါ်ဆိုမှုများ"</string>
- <string name="notification_channel_call_blocking" msgid="2028807677868598710">"ခေါ်ဆိုမှု ပိတ်ခြင်း"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"ခေါ်ဆိုမှု ပိတ်ထားခြင်း"</string>
<string name="notification_channel_background_calls" msgid="7785659903711350506">"နောက်ခံမှ ခေါ်ဆိုမှုများ"</string>
<string name="notification_channel_disconnected_calls" msgid="8228636543997645757">"ခေါ်ဆိုမှုများကို ဖြတ်တောက်လိုက်သည်"</string>
<string name="notification_channel_in_call_service_crash" msgid="7313237519166984267">"ရပ်တန့်သွားသော ဖုန်းအက်ပ်များ"</string>
@@ -105,7 +105,7 @@
<string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"ခေါ်ဆိုမှုကို <xliff:g id="OTHER_APP">%1$s</xliff:g> ဖြင့် တစ်ဆင့်ပြန်ညွှန်ရန်"</string>
<string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"ကျွန်ုပ်၏ ဖုန်းနံပါတ်ဖြင့် ဖုန်းခေါ်ရန်"</string>
<string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"<xliff:g id="OTHER_APP">%1$s</xliff:g> ဖြင့်ဖုန်းခေါ်ဆို၍မရပါ။ ဖုန်းခေါ်ဆိုမှု တစ်ဆင့်ပြန်ညွှန်ပြသည့် အခြားအက်ပ်ကို အသုံးပြုပါ (သို့) အကူအညီအတွက် ဆော့ဖ်ဝဲအင်ဂျင်နီယာကို ဆက်သွယ်ပါ။"</string>
- <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"ခေါ်ဆိုမှု ပိတ်ခြင်း"</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"ခေါ်ဆိုမှု ပိတ်ထားခြင်း"</string>
<string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"\'အဆက်အသွယ်များ\' ထဲတွင် မရှိသော နံပါတ်များ"</string>
<string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"သင်၏ \'အဆက်အသွယ်များ\' ထဲတွင် မပါဝင်သော နံပါတ်များကို ပိတ်ပါ"</string>
<string name="phone_settings_private_num_txt" msgid="6339272760338475619">"သီးသန့်"</string>
@@ -114,7 +114,7 @@
<string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"အများသုံးဖုန်းများမှ ခေါ်ဆိုမှုများကို ပိတ်ပါ"</string>
<string name="phone_settings_unknown_txt" msgid="3577926178354772728">"အမည်မသိ"</string>
<string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"အမည်မသိသော ခေါ်ဆိုသူများကို ပိတ်ပါ"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"ခေါ်ဆိုမှု ပိတ်ခြင်း"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"ခေါ်ဆိုမှု ပိတ်ထားခြင်း"</string>
<string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"\'ခေါ်ဆိုမှု ပိတ်ခြင်း\' ကို ရပ်ထားပါသည်"</string>
<string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"အရေးပေါ် ခေါ်ဆိုမှု ပြုလုပ်ထားပါသည်"</string>
<string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"အရေးပေါ်တုံ့ပြန်သူများက သင့်အား ဆက်သွယ်နိုင်စေရန် \'ခေါ်ဆိုမှု ပိတ်ခြင်း\' ကို ရပ်ထားပါသည်။"</string>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index 915c37b..3f65c62 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -28,11 +28,11 @@
<string name="notification_missedCall_message" msgid="4054698824390076431">"Melding"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"Koblet fra anropet"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"Anropet til <xliff:g id="CALLER">%s</xliff:g> er koblet fra fordi et nødanrop ble utført."</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"Samtalen din ble brutt fordi et nødanrop ble utført."</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"Bakgrunnsanrop"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"<xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g> har flyttet et anrop til bakgrunnen. Det kan hende denne appen bruker og spiller av lyd over anropet."</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"Krasjet telefonapp"</string>
- <!-- no translation found for notification_crashedInCallService_body (7821729360036047995) -->
- <skip />
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> sluttet å svare"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"Anropet ble gjort med telefonappen som fulgte med enheten din"</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"Samtalelyd er kuttet."</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Høyttaler er aktivert."</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Kan ikke snakke nå. Hva skjer?"</string>
diff --git a/res/values-ne/strings.xml b/res/values-ne/strings.xml
index 9acbdcf..1e2b32f 100644
--- a/res/values-ne/strings.xml
+++ b/res/values-ne/strings.xml
@@ -27,12 +27,12 @@
<string name="notification_missedCall_call_back" msgid="7900333283939789732">"फेरि कल गर्नुहोस्"</string>
<string name="notification_missedCall_message" msgid="4054698824390076431">"सन्देश"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"विच्छेद गरिएको कल"</string>
- <string name="notification_disconnectedCall_body" msgid="600491714584417536">"आपत्कालीन कल गरिएको हुनाले <xliff:g id="CALLER">%s</xliff:g> लाई गरिएको कल विच्छेद गरियो।"</string>
+ <string name="notification_disconnectedCall_body" msgid="600491714584417536">"आपत्कालीन कल गरिएको हुनाले <xliff:g id="CALLER">%s</xliff:g> लाई गरिएको कल विच्छेद गरियो।"</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"आपत्कालीन कल जारी रहेको हुनाले तपाईंको कल विच्छेद गरिएको छ।"</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"पृष्ठभूमिको कल"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"<xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g> ले एउटा कल पृष्ठभूमिमा राखेको छ। कल गरेको बेला यो अनुप्रयोगले अडियोमाथि पहुँच राखेर प्ले गरिरहेको हुन सक्छ।"</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"क्र्यास भएको फोन एप"</string>
- <!-- no translation found for notification_crashedInCallService_body (7821729360036047995) -->
- <skip />
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> ले काम गर्न छाड्यो"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"कल गर्नका लागि तपाईंको यन्त्रमा पहिल्यैदेखि रहेको फोन एप प्रयोग गरियो"</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"कल म्युट भयो।"</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"स्पिकरफोन सक्षम भयो।"</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"अहिले कुरा गर्न मिल्दैन। के भइरहेको छ?"</string>
@@ -46,24 +46,24 @@
<string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"<xliff:g id="PHONE_NUMBER">%s</xliff:g> लाई सन्देश पठाइयो।"</string>
<string name="respond_via_sms_failure_format" msgid="5198680980054596391">"<xliff:g id="PHONE_NUMBER">%s</xliff:g> मा सन्देश पठाउन सकिएन।"</string>
<string name="enable_account_preference_title" msgid="6949224486748457976">"कलिङ खाताहरू"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"आपतकालीन कलहरूलाई मात्र अनुमति दिइएको छ।"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"आपत्कालीन कलहरूलाई मात्र अनुमति दिइएको छ।"</string>
<string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"यो अनुप्रयोगले फोनको अनुमति बिना बहिर्गमन कलहरू गर्न सक्दैन।"</string>
<string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"एक कल गर्नको लागि, एक वैध नम्बर प्रविष्टि गर्नुहोस्।"</string>
<string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"यस समयमा कल थप गर्न सकिँदैन।"</string>
<string name="no_vm_number" msgid="2179959110602180844">"भ्वाइसमेल नम्बर हराइरहेको छ"</string>
<string name="no_vm_number_msg" msgid="1339245731058529388">"SIM कार्डमा कुनै पनि भ्वाइसमेल नम्बर भण्डारण भएको छैन।"</string>
<string name="add_vm_number_str" msgid="5179510133063168998">"नम्बर थप्नुहोस्"</string>
- <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"तपाईंको पूर्वनिर्धारित फोन अनुप्रयोग <xliff:g id="NEW_APP">%s</xliff:g> बनाउने हो?"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"तपाईंको पूर्वनिर्धारित फोन एप <xliff:g id="NEW_APP">%s</xliff:g> बनाउने हो?"</string>
<string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"पूर्वनिर्धारित रूपमा सेट गर्नुहोस्"</string>
<string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"रद्द गर्नुहोस्"</string>
- <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"<xliff:g id="NEW_APP">%s</xliff:g> कलका सबै पक्षहरूलाई स्थापित गर्न र नियन्त्रण गर्न सक्षम हुने छ। तपाईंलाई विश्वास लाग्ने अनुप्रयोगहरूलाई मात्र फोनमा पूर्वनिर्धारित अनुप्रयोगका रूपमा सेट गर्नुपर्छ।"</string>
- <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"तपाईंको पूर्वनिर्धारित कल स्क्रिन अनुप्रयोग <xliff:g id="NEW_APP">%s</xliff:g> बनाउने हो?"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"<xliff:g id="NEW_APP">%s</xliff:g> कलका सबै पक्षहरूलाई स्थापित गर्न र नियन्त्रण गर्न सक्षम हुने छ। तपाईंलाई विश्वास लाग्ने एपहरूलाई मात्र फोनमा पूर्वनिर्धारित एपका रूपमा सेट गर्नुपर्छ।"</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"तपाईंको पूर्वनिर्धारित कल स्क्रिन एप <xliff:g id="NEW_APP">%s</xliff:g> बनाउने हो?"</string>
<string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"<xliff:g id="OLD_APP">%s</xliff:g> ले अब उप्रान्त कलहरू स्क्रिन गर्न सक्ने छैनन्।"</string>
- <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"<xliff:g id="NEW_APP">%s</xliff:g> ले तपाईंको सम्पर्कमा नभएका कल गर्ने व्यक्तिका जानकारी हेर्न सक्छ र तिनीहरूमाथि रोक लगाउन सक्छ। तपाईंलाई विश्वास लाग्ने अनुप्रयोगहरूलाई मात्र कल स्क्रिन पूर्वनिर्धारित अनुप्रयोगका रूपमा सेट गर्नुपर्छ।"</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"<xliff:g id="NEW_APP">%s</xliff:g> ले तपाईंको सम्पर्कमा नभएका कल गर्ने व्यक्तिका जानकारी हेर्न सक्छ र तिनीहरूमाथि रोक लगाउन सक्छ। तपाईंलाई विश्वास लाग्ने एपहरूलाई मात्र कल स्क्रिन पूर्वनिर्धारित एपका रूपमा सेट गर्नुपर्छ।"</string>
<string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"पूर्वनिर्धारित रूपमा सेट गर्नुहोस्"</string>
<string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"रद्द गर्नुहोस्"</string>
<string name="blocked_numbers" msgid="8322134197039865180">"रोकिएका नम्बरहरू"</string>
- <string name="blocked_numbers_msg" msgid="2797422132329662697">"तपाईँले रोक लगाइएका नम्बरहरूबाट फोन वा पाठ सन्देशहरू प्राप्त गर्नुहुने छैन।"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"तपाईँले रोक लगाइएका नम्बरहरूबाट फोन वा टेक्स्ट म्यासेजहरू प्राप्त गर्नुहुने छैन।"</string>
<string name="block_number" msgid="3784343046852802722">"नम्बर थप्नुहोस्"</string>
<string name="unblock_dialog_body" msgid="2723393535797217261">"<xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g> लाई अनब्लक गर्ने हो?"</string>
<string name="unblock_button" msgid="8732021675729981781">"अनब्लक गर्नुहोस्"</string>
@@ -73,11 +73,11 @@
<string name="non_primary_user" msgid="315564589279622098">"यन्त्रको मालिकले रोकिएका नम्बरहरूलाई हेर्न र व्यवस्थापन गर्न सक्छ।"</string>
<string name="delete_icon_description" msgid="5335959254954774373">"अनब्लक गर्नुहोस्"</string>
<string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"रोक लगाउने काम अस्थायी रूपमा निष्क्रिय छ"</string>
- <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"तपाईँले आपतकालीन नम्बरमा डायल गरेपछि वा पाठ सन्देश पठाएपछि आपतकालीन सेवाहरूले तपाईँलाई सम्पर्क गर्न सकून् भन्ने कुरा सुनिश्चित गर्न कलमाथिको अवरोध निष्क्रिय गरिन्छ।"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"तपाईँले आपत्कालीन नम्बरमा डायल गरेपछि वा पाठ सन्देश पठाएपछि आपत्कालीन सेवाहरूले तपाईँलाई सम्पर्क गर्न सकून् भन्ने कुरा सुनिश्चित गर्न कलमाथिको अवरोध निष्क्रिय गरिन्छ।"</string>
<string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"अब पुन:-सक्रिय गर्नुहोस्"</string>
<string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> माथि रोक लगाइयो"</string>
<string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> माथिको रोक हटाइयो"</string>
- <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"आपतकालीन नम्बरमाथि रोक लगाउन सकिएन।"</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"आपत्कालीन नम्बरमाथि रोक लगाउन सकिएन।"</string>
<string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> लाई पहिले नै रोकिएको छ।"</string>
<string name="toast_personal_call_msg" msgid="5817631570381795610">"कल गर्न व्यक्तिगत डायलर प्रयोग गर्दै"</string>
<string name="notification_incoming_call" msgid="1233481138362230894">"<xliff:g id="CALL_FROM">%2$s</xliff:g> ले गरेको <xliff:g id="CALL_VIA">%1$s</xliff:g> कल"</string>
@@ -97,14 +97,14 @@
<string name="notification_channel_incoming_call" msgid="5245550964701715662">"आगमन कलहरू"</string>
<string name="notification_channel_missed_call" msgid="7168893015283909012">"छुटेका कलहरू"</string>
<string name="notification_channel_call_blocking" msgid="2028807677868598710">"कलमाथि रोक लगाउने सुविधा"</string>
- <string name="notification_channel_background_calls" msgid="7785659903711350506">"पृष्ठभूमिका कलहरू"</string>
+ <string name="notification_channel_background_calls" msgid="7785659903711350506">"ब्याकग्राउन्डका कलहरू"</string>
<string name="notification_channel_disconnected_calls" msgid="8228636543997645757">"विच्छेद गरिएका कल"</string>
<string name="notification_channel_in_call_service_crash" msgid="7313237519166984267">"क्र्यास भएका फोन एपहरू"</string>
<string name="alert_outgoing_call" msgid="5319895109298927431">"यो कल गर्नुले तपाईंको <xliff:g id="OTHER_APP">%1$s</xliff:g> कल अन्त्य गर्दछ।"</string>
<string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"यो कल गर्ने तरिका छनौट गर्नुहोस्"</string>
<string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"<xliff:g id="OTHER_APP">%1$s</xliff:g> प्रयोग गरी कल रिडाइरेक्ट गर्नुहोस्"</string>
<string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"फोन नम्बर प्रयोग गरी कल गर्नुहोस्"</string>
- <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"<xliff:g id="OTHER_APP">%1$s</xliff:g> प्रयोग गरेर कल गर्न सकिएन। कुनै अर्को रिडिरेक्टिङ अनुप्रयोगको प्रयोग वा मद्दतका लागि विकासकर्तासँग सम्पर्क गरी हेर्नुहोस्।"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"<xliff:g id="OTHER_APP">%1$s</xliff:g> प्रयोग गरेर कल गर्न सकिएन। कुनै अर्को रिडिरेक्टिङ एपको प्रयोग वा मद्दतका लागि विकासकर्तासँग सम्पर्क गरी हेर्नुहोस्।"</string>
<string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"कलमाथि रोक लगाउने सुविधा"</string>
<string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"सम्पर्क सूचीहरूमा नरहेका नम्बरहरू"</string>
<string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"आफ्नो सम्पर्क सूचीहरूमा सूचीबद्ध नगरिएका नम्बरहरूमाथि रोक लगाउनुहोस्"</string>
@@ -116,8 +116,8 @@
<string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"अज्ञात कल गर्ने व्यक्तिहरूको कलमाथि रोक लगाउनुहोस्"</string>
<string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"कलमाथि रोक लगाउने सुविधा"</string>
<string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"कलमाथि रोक लगाउने सुविधालाई असक्षम पारियो"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"आपतकालीन कल गरियो"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"आपतकालीन अवस्थामा उद्दार गर्ने मान्छेहरूलाई तपाईंलाई सम्पर्क गर्न दिन कलमाथि रोक लगाउने सुविधा असक्षम पारिएको छ।"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"आपत्कालीन कल गरियो"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"आपत्कालीन अवस्थामा उद्दार गर्ने मान्छेहरूलाई तपाईंलाई सम्पर्क गर्न दिन कलमाथि रोक लगाउने सुविधा असक्षम पारिएको छ।"</string>
<string name="developer_title" msgid="9146088855661672353">"टेलिकमको विकासकर्ताको मेनु"</string>
- <string name="toast_emergency_can_not_pull_call" msgid="9074229465338410869">"आपत्कालीन कल चलिराखेको बेलामा अरु कल स्वीकार गर्न सकिँदैन।"</string>
+ <string name="toast_emergency_can_not_pull_call" msgid="9074229465338410869">"आपत्कालीन कल चलिराखेको बेलामा अरु कल स्वीकार गर्न सकिँदैन।"</string>
</resources>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index 10b8d82..166e95d 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -28,11 +28,11 @@
<string name="notification_missedCall_message" msgid="4054698824390076431">"Bericht"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"Beëindigd gesprek"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"Het gesprek met <xliff:g id="CALLER">%s</xliff:g> is beëindigd omdat er een noodoproep is geplaatst."</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"Je gesprek is beëindigd omdat er een noodoproep is geplaatst."</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"Achtergrondgesprek"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"<xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g> heeft een gesprek op de achtergrond geplaatst. Deze app kan audio openen en afspelen over het gesprek."</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"Gecrashte telefoon-app"</string>
- <!-- no translation found for notification_crashedInCallService_body (7821729360036047995) -->
- <skip />
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> reageert niet meer"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"Voor je gesprek is de telefoon-app van je apparaat gebruikt"</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"Gesprek gedempt."</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Luidspreker is aan."</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Kan nu niet opnemen. Alles goed?"</string>
diff --git a/res/values-or/strings.xml b/res/values-or/strings.xml
index 40f513c..e3ca712 100644
--- a/res/values-or/strings.xml
+++ b/res/values-or/strings.xml
@@ -21,18 +21,18 @@
<string name="unknown" msgid="6993977514360123431">"ଅଜଣା"</string>
<string name="notification_missedCallTitle" msgid="5060387047205532974">"ମିସଡ୍ କଲ୍"</string>
<string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"କାର୍ଯ୍ୟସ୍ଥଳୀରୁ ଆସିଥିବା ମିସଡ୍ କଲ୍"</string>
- <string name="notification_missedCallsTitle" msgid="3910479625507893809">"ମିସଡ୍ କଲ୍"</string>
- <string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g>ଟି ମିସଡ୍ କଲ୍"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"ମିସ୍ଡ କଲ୍"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g>ଟି ମିସ୍ଡ କଲ୍"</string>
<string name="notification_missedCallTicker" msgid="6731461957487087769">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g>ଙ୍କ ଠାରୁ ମିସ୍-କଲ୍ ମିଳିଛି"</string>
<string name="notification_missedCall_call_back" msgid="7900333283939789732">"କଲବ୍ୟାକ୍ କରନ୍ତୁ"</string>
<string name="notification_missedCall_message" msgid="4054698824390076431">"ମେସେଜ୍ ଦିଅନ୍ତୁ"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"କଲ୍ ବିଚ୍ଛିନ୍ନ କରାଯାଇଛି"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"ଏକ ଜରୁରୀକାଳୀନ କଲ୍ କରାଯାଇଥିବାରୁ <xliff:g id="CALLER">%s</xliff:g>ଙ୍କୁ କରାଯାଇଥିବା କଲ୍ ବିଚ୍ଛିନ୍ନ କରାଯାଇଛି।"</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"ଏକ ଜରୁରୀକାଳୀନ କଲ୍ କରାଯାଉଥିବା ଯୋଗୁଁ ଆପଣଙ୍କ କଲ୍ ବିଚ୍ଛିନ୍ନ ହୋଇଯାଇଛି।"</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"ବ୍ୟାକ୍ଗ୍ରାଉଣ୍ଡ କଲ୍"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"<xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g> ବ୍ୟାକ୍ଗ୍ରାଉଣ୍ଡରେ ଏକ କଲ୍ କରିଛି। ଏହା ଆପ୍ କଲ୍ ସମୟରେ ଅଡିଓ ଆକ୍ସେସ୍ କରିପାରେ ଏବଂ ଚଲେଇପାରେ।"</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"କ୍ରାଶ୍ ହୋଇଥିବା ଫୋନ୍ ଆପ୍"</string>
- <!-- no translation found for notification_crashedInCallService_body (7821729360036047995) -->
- <skip />
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> ଉତ୍ତର ଦେଉନାହିଁ"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"ଆପଣଙ୍କ କଲ୍ ପାଇଁ ଆପଣଙ୍କ ଡିଭାଇସରେ ଥିବା ଫୋନ୍ ଆପ୍ ବ୍ୟବହାର କରାଯାଇଥିଲା"</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"କଲ୍ ମ୍ୟୁଟ୍ କରାଯାଇଛି।"</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"ସ୍ପିକରଫୋନ୍କୁ ସକ୍ଷମ କରାଯାଇଛି ।"</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"ବର୍ତ୍ତମାନ କଥା ହୋଇପାରିବ ନାହିଁ। କଥା କ’ଣ?"</string>
@@ -55,7 +55,7 @@
<string name="add_vm_number_str" msgid="5179510133063168998">"ନମ୍ବର୍ ଯୋଡ଼ନ୍ତୁ"</string>
<string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"<xliff:g id="NEW_APP">%s</xliff:g>କୁ ଆପଣଙ୍କ ଫୋନ୍ର ଡିଫଲ୍ଟ ଆପ୍ କରିବେ?"</string>
<string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"ଡିଫଲ୍ଟ ସେଟ୍ କରନ୍ତୁ"</string>
- <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"କ୍ୟାନ୍ସଲ୍ କରନ୍ତୁ"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"ବାତିଲ୍ କରନ୍ତୁ"</string>
<string name="change_default_dialer_warning_message" msgid="8461963987376916114">"<xliff:g id="NEW_APP">%s</xliff:g> କଲ୍ କରିବା ଏବଂ କଲ୍ର ସମସ୍ତ ଦିଗକୁ ନିୟନ୍ତ୍ରଣ କରିବାରେ ସକ୍ଷମ ହେବ। କେବଳ ନିଜର ଭରସାଯୋଗ୍ୟ ଆପ୍କୁ ଡିଫଲ୍ଟ ଫୋନ୍ ଆପ୍ ଭାବେ ସେଟ୍ କରିବା ଉଚିତ୍।"</string>
<string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"<xliff:g id="NEW_APP">%s</xliff:g>କୁ ଆପଣଙ୍କ ଡିଫଲ୍ଟ କଲ୍ ସ୍କ୍ରିନିଂ ଆପ୍ କରିବେ?"</string>
<string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"<xliff:g id="OLD_APP">%s</xliff:g> କଲ୍ ସ୍କ୍ରିନ୍ କରିପାରିରିବେ ନାହିଁ।"</string>
@@ -65,8 +65,8 @@
<string name="blocked_numbers" msgid="8322134197039865180">"ବ୍ଲକ୍ କରାଯାଇଥିବା ନମ୍ବର୍"</string>
<string name="blocked_numbers_msg" msgid="2797422132329662697">"ବ୍ଲକ୍ କରାଯାଇଥିବା ନମ୍ବର୍ରୁ ଆପଣ କଲ୍ କିମ୍ବା ଟେକ୍ସଟ୍ ଗ୍ରହଣ କରିପାରିବେ ନାହିଁ।"</string>
<string name="block_number" msgid="3784343046852802722">"ଗୋଟିଏ ନମ୍ବର୍ ଯୋଡ଼ନ୍ତୁ"</string>
- <string name="unblock_dialog_body" msgid="2723393535797217261">"<xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>ରୁ ବ୍ଲକ୍ ହଟାଇବେ?"</string>
- <string name="unblock_button" msgid="8732021675729981781">"ଅବରୋଧ ହଟାନ୍ତୁ"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"<xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>କୁ ଅନବ୍ଲକ୍ କରିବେ?"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"ଅନବ୍ଲକ୍ କରନ୍ତୁ"</string>
<string name="add_blocked_dialog_body" msgid="8599974422407139255">"ଏହାର କଲ୍ ଓ ଟେକ୍ସଟ୍କୁ ବ୍ଲକ୍ କରନ୍ତୁ"</string>
<string name="add_blocked_number_hint" msgid="8769422085658041097">"ଫୋନ୍ ନମ୍ଵର୍"</string>
<string name="block_button" msgid="485080149164258770">"ବ୍ଲକ୍ କରନ୍ତୁ"</string>
@@ -76,7 +76,7 @@
<string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"ଆପଣ ଗୋଟିଏ ଜରୁରିକାଳୀନ ନମ୍ବର୍କୁ ଡାଏଲ୍ କିମ୍ବା ଟେକ୍ସଟ୍ କରିବା ପରେ, ଜରୁରିକାଳୀନ ସେବା ଆପଣଙ୍କୁ ଯୋଗାଯୋଗ କରିବାକୁ ସୁନିଶ୍ଚିତ କରିବା ପାଇଁ ଅବରୋଧକୁ ବନ୍ଦ କରିଦିଆଯାଇଥାଏ।"</string>
<string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"ବର୍ତ୍ତମାନ ପୁନଃସକ୍ଷମ କରନ୍ତୁ"</string>
<string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> ବ୍ଲକ୍ କରାଯାଇଛି"</string>
- <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> ଅବରୋଧ ହଟାଇଦିଆଯାଇଛି"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> ଅନବ୍ଲକ୍ କରାଯାଇଛି"</string>
<string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"ଜରୁରିକାଳୀନ ନମ୍ବର୍କୁ ଅବରୋଧ କରିବାରେ ଅକ୍ଷମ।"</string>
<string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g>କୁ ଅବରୋଧ କରାଯାଇସରିଛି।"</string>
<string name="toast_personal_call_msg" msgid="5817631570381795610">"କଲ୍ କରିବା ପାଇଁ ବ୍ୟକ୍ତିଗତ ଡାଏଲର୍କୁ ବ୍ୟବହାର କରନ୍ତୁ"</string>
@@ -95,17 +95,17 @@
<string name="cant_call_due_to_ongoing_calls" msgid="6379163795277824868">"ଆପଣଙ୍କର <xliff:g id="OTHER_CALL">%1$s</xliff:g> କଲ୍ ହେତୁ କଲ୍ କରାଯାଇପାରିବ ନାହିଁ।"</string>
<string name="cant_call_due_to_ongoing_unknown_call" msgid="8243532328969433172">"ଅନ୍ୟ ଆପ୍ରେ କରାଯାଇଥିବା କଲ୍ ହେତୁ କଲ୍ କରାଯାଇପାରିବ ନାହିଁ।"</string>
<string name="notification_channel_incoming_call" msgid="5245550964701715662">"ଇନ୍କମିଙ୍ଗ କଲ୍"</string>
- <string name="notification_channel_missed_call" msgid="7168893015283909012">"ମିସଡ୍ କଲ୍"</string>
- <string name="notification_channel_call_blocking" msgid="2028807677868598710">"କଲ୍କୁ ଅବରୋଧ କରନ୍ତୁ"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"ମିସ୍ଡ କଲ୍"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"କଲ୍ ବ୍ଲକିଂ"</string>
<string name="notification_channel_background_calls" msgid="7785659903711350506">"ବ୍ୟାକ୍ଗ୍ରାଉଣ୍ଡ କଲ୍ଗୁଡ଼ିକ"</string>
<string name="notification_channel_disconnected_calls" msgid="8228636543997645757">"ବିଚ୍ଛିନ୍ନ କରାଯାଇଥିବା କଲ୍ଗୁଡ଼ିକ"</string>
- <string name="notification_channel_in_call_service_crash" msgid="7313237519166984267">"କ୍ରାଶ୍ ହୋଇଥିବା ଫୋନ୍ ଆପ୍ସ"</string>
+ <string name="notification_channel_in_call_service_crash" msgid="7313237519166984267">"କ୍ରାସ୍ ହୋଇଥିବା ଫୋନ୍ ଆପ୍ସ"</string>
<string name="alert_outgoing_call" msgid="5319895109298927431">"ଏହି କଲ୍କୁ ସ୍ଥାପନ କରିବା ଦ୍ଵାରା ଆପଣଙ୍କର <xliff:g id="OTHER_APP">%1$s</xliff:g> କଲ୍ ସମାପ୍ତ ହୋଇଯିବ।"</string>
<string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"ଏହି କଲ୍ କିପରି କରିବାକୁ ଚାହାନ୍ତି ବାଛନ୍ତୁ"</string>
<string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"<xliff:g id="OTHER_APP">%1$s</xliff:g> ବ୍ୟବହାର କରି କଲ୍ ରିଡାଇରେକ୍ଟ କରନ୍ତୁ"</string>
<string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"ମୋ ଫୋନ୍ ନମ୍ବର ବ୍ୟବହାର କରି କଲ୍ କରନ୍ତୁ"</string>
<string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"<xliff:g id="OTHER_APP">%1$s</xliff:g> କଲ୍ କରିପାରିବ ନାହିଁ। ଏକ ଭିନ୍ନ କଲ୍ ପୁନଃନିର୍ଦ୍ଦେଶିତ ଆପ୍ ବ୍ୟବହାର କରି ଚେଷ୍ଟା କରନ୍ତୁ କିମ୍ବା ସାହାଯ୍ୟ ପାଇଁ ଡେଭେଲପ୍ରଙ୍କ ସହ ଯୋଗାଯୋଗ କରନ୍ତୁ।"</string>
- <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"କଲ୍କୁ ଅବରୋଧ କରନ୍ତୁ"</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"କଲ୍ ବ୍ଲକିଂ"</string>
<string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"ଯୋଗାଯୋଗରେ ନଥିବା ନମ୍ବର୍"</string>
<string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"ଆପଣଙ୍କ ଯୋଗାଯୋଗରେ ତାଲିକାଭୁକ୍ତ ହୋଇନଥିବା ନମ୍ବର୍କୁ ଅବରୋଧ କରନ୍ତୁ"</string>
<string name="phone_settings_private_num_txt" msgid="6339272760338475619">"ଗୋପନୀୟ"</string>
@@ -113,9 +113,9 @@
<string name="phone_settings_payphone_txt" msgid="5003987966052543965">"ପେ-ଫୋନ୍"</string>
<string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"ପେ-ଫୋନ୍ରୁ କଲ୍କୁ ଅବରୋଧ କରନ୍ତୁ"</string>
<string name="phone_settings_unknown_txt" msgid="3577926178354772728">"ଅଜଣା"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"ଅଜଣା କଲକର୍ତ୍ତାଙ୍କର କଲ୍କୁ ବ୍ଲକ୍ କରନ୍ତୁ"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"କଲ୍କୁ ଅବରୋଧ କରନ୍ତୁ"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"କଲ୍ ଅବରୋଧ ସୁବିଧାକୁ ଅକ୍ଷମ କରାଯାଇଛି"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"ଅଜଣା କଲରର କଲ୍କୁ ବ୍ଲକ୍ କରନ୍ତୁ"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"କଲ୍ ବ୍ଲକିଂ"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"କଲ୍ ବ୍ଲକିଂକୁ ଅକ୍ଷମ କରାଯାଇଛି"</string>
<string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"ଜରୁରିକାଳୀନ କଲ୍ କରାଗଲା"</string>
<string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"ଜରୁରିକାଳୀନ ସହାୟତା କର୍ମଚାରୀମାନେ ଆପଣଙ୍କୁ ଯୋଗଯୋଗ କରିବା ପାଇଁ କଲ୍ ଅବରୋଧକୁ ଅକ୍ଷମ କରାଯାଇଛି।"</string>
<string name="developer_title" msgid="9146088855661672353">"ଟେଲେକମ୍ ଡେଭେଲପର୍ ମେନୁ"</string>
diff --git a/res/values-pa/strings.xml b/res/values-pa/strings.xml
index 5a5bc35..2b94316 100644
--- a/res/values-pa/strings.xml
+++ b/res/values-pa/strings.xml
@@ -28,11 +28,11 @@
<string name="notification_missedCall_message" msgid="4054698824390076431">"ਸੁਨੇਹਾ"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"ਕਾਲ ਡਿਸਕਨੈਕਟ ਹੋ ਗਿਆ"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"<xliff:g id="CALLER">%s</xliff:g> ਦੀ ਕਾਲ ਨੂੰ ਕਿਸੇ ਸੰਕਟਕਾਲੀਨ ਕਾਲ ਦੇ ਚਲਦੇ ਕੱਟ ਦਿੱਤਾ ਗਿਆ ਹੈ।"</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"ਕਿਸੇ ਸੰਕਟਕਾਲੀਨ ਕਾਲ ਕਰਕੇ ਤੁਹਾਡੀ ਕਾਲ ਕੱਟ ਦਿੱਤੀ ਗਈ ਹੈ।"</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"Background call"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"<xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g> has placed a call into the background. This app may be accessing and playing audio over the call."</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"ਕ੍ਰੈਸ਼ ਹੋਈ ਫ਼ੋਨ ਐਪ"</string>
- <!-- no translation found for notification_crashedInCallService_body (7821729360036047995) -->
- <skip />
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> ਨੇ ਕੰਮ ਕਰਨਾ ਬੰਦ ਕਰ ਦਿੱਤਾ"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"ਤੁਹਾਡੀ ਕਾਲ ਨੇ ਤੁਹਾਡੇ ਡੀਵਾਈਸ \'ਤੇ ਪਹਿਲਾਂ ਤੋਂ ਸਥਾਪਤ ਫ਼ੋਨ ਐਪ ਦੀ ਵਰਤੋਂ ਕੀਤੀ"</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"ਕਾਲ ਮਿਊਟ ਕੀਤੀ।"</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"ਸਪੀਕਰਫੋਨ ਸਮਰਥਿਤ।"</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"ਹੁਣੇ ਗੱਲ ਨਹੀਂ ਹੋ ਸਕਦੀ। ਕੀ ਹੋਇਆ?"</string>
@@ -95,17 +95,17 @@
<string name="cant_call_due_to_ongoing_calls" msgid="6379163795277824868">"ਤੁਹਾਡੀਆਂ <xliff:g id="OTHER_CALL">%1$s</xliff:g> ਕਾਲਾਂ ਦੇ ਕਾਰਨ ਕਾਲ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕਦੀ।"</string>
<string name="cant_call_due_to_ongoing_unknown_call" msgid="8243532328969433172">"ਕਿਸੇ ਹੋਰ ਐਪ ਵਿੱਚ ਇੱਕ ਕਾਲ ਹੋਣ ਦੇ ਕਾਰਨ ਕਾਲ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕਦੀ।"</string>
<string name="notification_channel_incoming_call" msgid="5245550964701715662">"ਇਨਕਮਿੰਗ ਕਾਲਾਂ"</string>
- <string name="notification_channel_missed_call" msgid="7168893015283909012">"ਖੁੰਝੀਆਂ ਕਾਲਾਂ"</string>
- <string name="notification_channel_call_blocking" msgid="2028807677868598710">"ਕਾਲ ਬਲਾਕਿੰਗ"</string>
- <string name="notification_channel_background_calls" msgid="7785659903711350506">"Background calls"</string>
- <string name="notification_channel_disconnected_calls" msgid="8228636543997645757">"ਕਾਲਾਂ ਡਿਸਕਨੈਕਟ ਹੋ ਗਈਆਂ"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"ਮਿਸ ਕਾਲਾਂ"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"ਕਾਲ ਬਲਾਕ ਕਰਨਾ"</string>
+ <string name="notification_channel_background_calls" msgid="7785659903711350506">"ਬੈਕਗ੍ਰਾਊਂਡ ਕਾਲਾਂ"</string>
+ <string name="notification_channel_disconnected_calls" msgid="8228636543997645757">"ਡਿਸਕਨੈਕਟ ਕੀਤੀਆਂ ਕਾਲਾਂ"</string>
<string name="notification_channel_in_call_service_crash" msgid="7313237519166984267">"ਕ੍ਰੈਸ਼ ਹੋਈਆਂ ਫ਼ੋਨ ਐਪਾਂ"</string>
<string name="alert_outgoing_call" msgid="5319895109298927431">"ਇਹ ਕਾਲ ਕਰਨ ਨਾਲ ਤੁਹਾਡੀ <xliff:g id="OTHER_APP">%1$s</xliff:g> ਕਾਲ ਸਮਾਪਤ ਹੋ ਜਾਵੇਗੀ।"</string>
<string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"ਚੁਣੋ ਕਿ ਕਾਲ ਕਿਵੇਂ ਕਰਨੀ ਹੈ"</string>
<string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"<xliff:g id="OTHER_APP">%1$s</xliff:g> ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਕਾਲ ਰੀਡਾਇਰੈਕਟ ਕਰੋ"</string>
<string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"ਮੇਰਾ ਫ਼ੋਨ ਨੰਬਰ ਵਰਤ ਕੇ ਕਾਲ ਕਰੋ"</string>
<string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"<xliff:g id="OTHER_APP">%1$s</xliff:g> ਤੋਂ ਕਾਲ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕਦੀ। ਕਾਲ ਨੂੰ ਰੀਡਾਇਰੈਕਟ ਕਰਨ ਲਈ ਕੋਈ ਵੱਖਰੀ ਐਪ ਵਰਤ ਕੇ ਦੇਖੋ ਜਾਂ ਮਦਦ ਲਈ ਵਿਕਾਸਕਾਰ ਨਾਲ ਸੰਪਰਕ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰੋ।"</string>
- <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"ਕਾਲ ਬਲਾਕਿੰਗ"</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"ਕਾਲ ਬਲਾਕ ਕਰਨਾ"</string>
<string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"ਨੰਬਰ ਜੋ ਤੁਹਾਡੇ ਸੰਪਰਕਾਂ ਵਿੱਚ ਨਹੀਂ ਹਨ"</string>
<string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"ਉਹ ਨੰਬਰ ਬਲਾਕ ਕਰੋ ਜੋ ਤੁਹਾਡੇ ਸੰਪਰਕਾਂ ਵਿੱਚ ਨਹੀਂ ਹਨ"</string>
<string name="phone_settings_private_num_txt" msgid="6339272760338475619">"ਨਿੱਜੀ"</string>
@@ -114,7 +114,7 @@
<string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"ਜਨਤਕ ਫ਼ੋਨਾਂ ਵਾਲੀਆਂ ਕਾਲਾਂ ਬਲਾਕ ਕਰੋ"</string>
<string name="phone_settings_unknown_txt" msgid="3577926178354772728">"ਅਗਿਆਤ"</string>
<string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"ਅਣਪਛਾਤੇ ਕਾਲਰਾਂ ਵਾਲੀਆਂ ਕਾਲਾਂ ਬਲਾਕ ਕਰੋ"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"ਕਾਲ ਬਲਾਕਿੰਗ"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"ਕਾਲ ਬਲਾਕ ਕਰਨਾ"</string>
<string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"ਕਾਲ ਬਲਾਕਿੰਗ ਵਿਕਲਪ ਬੰਦ ਕੀਤਾ ਗਿਆ"</string>
<string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"ਸੰਕਟਕਾਲੀਨ ਕਾਲ ਕੀਤੀ ਗਈ"</string>
<string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"ਸੰਕਟਕਾਲੀਨ ਸਥਿਤੀ ਵਿੱਚ ਮਦਦ ਕਰਨ ਵਾਲੇ ਵਿਅਕਤੀ ਨੂੰ ਤੁਹਾਨੂੰ ਸੰਪਰਕ ਕਰਨ ਦੇਣ ਲਈ ਕਾਲ ਬਲਾਕਿੰਗ ਵਿਕਲਪ ਬੰਦ ਕਰ ਦਿੱਤਾ ਗਿਆ ਹੈ।"</string>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index d103958..9cb1980 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -28,11 +28,11 @@
<string name="notification_missedCall_message" msgid="4054698824390076431">"Wiadomość"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"Przerwane połączenie"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"Połączenie z rozmówcą <xliff:g id="CALLER">%s</xliff:g> zostało przerwane z powodu nawiązania połączenia alarmowego."</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"Połączenie zostało przerwane z powodu nawiązania połączenia alarmowego."</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"Połączenie w tle"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"Aplikacja <xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g> umieściła połączenie w tle. Może ona uzyskiwać dostęp do dźwięku i odtwarzać go podczas połączenia."</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"Aplikacja telefoniczna uległa awarii"</string>
- <!-- no translation found for notification_crashedInCallService_body (7821729360036047995) -->
- <skip />
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"Aplikacja <xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> nie odpowiada"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"Połączenie zostało zrealizowane za pomocą aplikacji do obsługi telefonu zainstalowanej na urządzeniu"</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"Połączenie wyciszone."</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Głośnik włączony."</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Nie mogę rozmawiać. Co słychać?"</string>
@@ -99,7 +99,7 @@
<string name="notification_channel_call_blocking" msgid="2028807677868598710">"Blokowanie połączeń"</string>
<string name="notification_channel_background_calls" msgid="7785659903711350506">"Połączenia w tle"</string>
<string name="notification_channel_disconnected_calls" msgid="8228636543997645757">"Przerwane połączenia"</string>
- <string name="notification_channel_in_call_service_crash" msgid="7313237519166984267">"Aplikacje telefoniczne, które uległy awarii"</string>
+ <string name="notification_channel_in_call_service_crash" msgid="7313237519166984267">"Aplikacje telefoniczne po awarii"</string>
<string name="alert_outgoing_call" msgid="5319895109298927431">"Jeśli zadzwonisz, połączenie w aplikacji <xliff:g id="OTHER_APP">%1$s</xliff:g> zostanie zakończone."</string>
<string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"Wybierz, jak chcesz zadzwonić"</string>
<string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"Przekieruj połączenie za pomocą aplikacji <xliff:g id="OTHER_APP">%1$s</xliff:g>"</string>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index e91ac83..bb5213e 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -28,11 +28,11 @@
<string name="notification_missedCall_message" msgid="4054698824390076431">"Mensagem"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"Chamada desligada"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"A chamada para <xliff:g id="CALLER">%s</xliff:g> foi desligada porque foi efetuada uma chamada de emergência."</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"A chamada foi desligada porque foi efetuada uma chamada de emergência."</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"Cham. segundo plano"</string>
- <string name="notification_audioProcessing_body" msgid="6397005913770420388">"<xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g> colocou uma chamada em segundo plano. Esta aplicação pode estar a aceder e a reproduzir áudio sobre a chamada."</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"Aplicação Telefone com falha"</string>
- <!-- no translation found for notification_crashedInCallService_body (7821729360036047995) -->
- <skip />
+ <string name="notification_audioProcessing_body" msgid="6397005913770420388">"<xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g> colocou uma chamada em segundo plano. Esta app pode estar a aceder e a reproduzir áudio sobre a chamada."</string>
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> deixou de responder."</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"A chamada utilizou a app de telefone incluída com o dispositivo."</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"Chamada sem som."</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Alta voz ativada."</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Não posso falar agora. Que se passa?"</string>
@@ -47,19 +47,19 @@
<string name="respond_via_sms_failure_format" msgid="5198680980054596391">"Falha ao enviar a mensagem para <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
<string name="enable_account_preference_title" msgid="6949224486748457976">"Contas de chamadas"</string>
<string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"Apenas são permitidas chamadas de emergência."</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"Esta aplicação não pode fazer chamadas sem a autorização do telefone."</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"Esta app não pode fazer chamadas sem a autorização do telefone."</string>
<string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"Para telefonar, introduza um número válido."</string>
<string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"Não é possível adicionar a chamada neste momento."</string>
<string name="no_vm_number" msgid="2179959110602180844">"Número do correio de voz em falta"</string>
<string name="no_vm_number_msg" msgid="1339245731058529388">"Não existe um número de correio de voz armazenado no cartão SIM."</string>
<string name="add_vm_number_str" msgid="5179510133063168998">"Adicionar número"</string>
- <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"Predefinir <xliff:g id="NEW_APP">%s</xliff:g> como a sua aplicação Telefone?"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"Predefinir <xliff:g id="NEW_APP">%s</xliff:g> como a sua app Telefone?"</string>
<string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"Predefinir"</string>
<string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"Cancelar"</string>
- <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"A aplicação <xliff:g id="NEW_APP">%s</xliff:g> poderá efetuar chamadas e controlar todos os aspetos das mesmas. Apenas as aplicações em que confia devem ser escolhidas como a aplicação de telefone predefinida."</string>
- <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"Predefinir <xliff:g id="NEW_APP">%s</xliff:g> como a sua aplicação Telefone?"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"A app <xliff:g id="NEW_APP">%s</xliff:g> poderá efetuar chamadas e controlar todos os aspetos das mesmas. Apenas as aplicações em que confia devem ser escolhidas como a app de telefone predefinida."</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"Predefinir <xliff:g id="NEW_APP">%s</xliff:g> como a sua app Telefone?"</string>
<string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"<xliff:g id="OLD_APP">%s</xliff:g> deixará de poder filtrar as chamadas."</string>
- <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"<xliff:g id="NEW_APP">%s</xliff:g> poderá ver informações sobre os autores das chamadas que não se encontrem nos seus contactos e poderá bloquear estas chamadas. Apenas deve predefinir como aplicação de filtro de chamadas as aplicações nas quais confia."</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"<xliff:g id="NEW_APP">%s</xliff:g> poderá ver informações sobre os autores das chamadas que não se encontrem nos seus contactos e poderá bloquear estas chamadas. Apenas deve predefinir como app de filtro de chamadas as aplicações nas quais confia."</string>
<string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"Predefinir"</string>
<string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"Cancelar"</string>
<string name="blocked_numbers" msgid="8322134197039865180">"Números bloqueados"</string>
@@ -93,18 +93,18 @@
<string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"Não é possível efetuar a chamada porque não existem contas de chamadas que suportem chamadas deste tipo."</string>
<string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"Não é possível efetuar a chamada devido à sua chamada do <xliff:g id="OTHER_CALL">%1$s</xliff:g>."</string>
<string name="cant_call_due_to_ongoing_calls" msgid="6379163795277824868">"Não é possível efetuar a chamada devido às suas chamadas do <xliff:g id="OTHER_CALL">%1$s</xliff:g>."</string>
- <string name="cant_call_due_to_ongoing_unknown_call" msgid="8243532328969433172">"Não é possível efetuar a chamada devido a uma chamada noutra aplicação."</string>
+ <string name="cant_call_due_to_ongoing_unknown_call" msgid="8243532328969433172">"Não é possível efetuar a chamada devido a uma chamada noutra app."</string>
<string name="notification_channel_incoming_call" msgid="5245550964701715662">"Chamadas recebidas"</string>
<string name="notification_channel_missed_call" msgid="7168893015283909012">"Chamadas não atendidas"</string>
<string name="notification_channel_call_blocking" msgid="2028807677868598710">"Bloqueio de chamadas"</string>
<string name="notification_channel_background_calls" msgid="7785659903711350506">"Chamadas em segundo plano"</string>
<string name="notification_channel_disconnected_calls" msgid="8228636543997645757">"Chamadas desligadas"</string>
- <string name="notification_channel_in_call_service_crash" msgid="7313237519166984267">"Aplicações Telefone com falhas"</string>
- <string name="alert_outgoing_call" msgid="5319895109298927431">"Ao efetuar esta chamada, irá terminar a chamada na aplicação <xliff:g id="OTHER_APP">%1$s</xliff:g>."</string>
+ <string name="notification_channel_in_call_service_crash" msgid="7313237519166984267">"Apps Telefone com falhas"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"Ao efetuar esta chamada, irá terminar a chamada na app <xliff:g id="OTHER_APP">%1$s</xliff:g>."</string>
<string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"Escolha como pretende efetuar esta chamada"</string>
<string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"Redirecionar chamada através de <xliff:g id="OTHER_APP">%1$s</xliff:g>"</string>
<string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"Ligar com o meu número de telefone"</string>
- <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"Não é possível efetuar uma chamada através da aplicação <xliff:g id="OTHER_APP">%1$s</xliff:g>. Experimente utilizar uma aplicação de redirecionamento de chamadas diferente ou contactar o programador para obter ajuda."</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"Não é possível efetuar uma chamada através da app <xliff:g id="OTHER_APP">%1$s</xliff:g>. Experimente utilizar uma app de redirecionamento de chamadas diferente ou contactar o programador para obter ajuda."</string>
<string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"Bloqueio de chamadas"</string>
<string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"Números não incluídos nos Contactos"</string>
<string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"Bloquear números que não estejam na sua lista de Contactos"</string>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index 135abd2..5d88619 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -28,10 +28,11 @@
<string name="notification_missedCall_message" msgid="4054698824390076431">"Mensagem"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"Chamada desconectada"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"A chamada para <xliff:g id="CALLER">%s</xliff:g> foi desconectada porque uma chamada de emergência está sendo realizada."</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"Sua chamada foi desconectada porque uma chamada de emergência está sendo feita."</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"Chamada em 2º plano"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"O app <xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g> colocou uma chamada em segundo plano. Talvez ele esteja acessando e tocando o áudio durante a chamada."</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"Falha com o app de telefone"</string>
- <string name="notification_crashedInCallService_body" msgid="7821729360036047995">"Seu app de telefone <xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> falhou. A chamada continuou usando o app de telefone que veio com seu dispositivo."</string>
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"O app <xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> parou de responder"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"A chamada usou o aplicativo de telefone que veio com seu dispositivo"</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"Chamada sem áudio."</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Viva-voz ativado."</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Não posso falar agora. Manda um SMS, por favor?"</string>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index b0e569e..a95d4a4 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -28,10 +28,11 @@
<string name="notification_missedCall_message" msgid="4054698824390076431">"Mesaj"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"Apel deconectat"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"Apelul către <xliff:g id="CALLER">%s</xliff:g> a fost deconectat deoarece a fost inițiat un apel de urgență."</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"Apelul a fost deconectat deoarece a fost inițiat un apel de urgență."</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"Apel în fundal"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"<xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g> a inițiat un apel în fundal. Este posibil ca această aplicație să acceseze și să redea mesaje audio peste apel."</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"Aplicație pentru telefon blocată"</string>
- <string name="notification_crashedInCallService_body" msgid="7821729360036047995">"Aplicația dvs. pentru telefon <xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> s-a blocat. Apelul dvs. a fost continuat cu aplicația Telefon instalată pe dispozitiv."</string>
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> nu mai răspunde"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"Apelul dvs. a folosit aplicația Telefon instalată pe dispozitiv"</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"Apel cu sunet dezactivat."</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Difuzor activat."</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Nu pot acum. Despre ce e vorba?"</string>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index 808da40..a50907a 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -28,16 +28,16 @@
<string name="notification_missedCall_message" msgid="4054698824390076431">"Написать"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"Вызов прекращен"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"Вызов абонента <xliff:g id="CALLER">%s</xliff:g> был прекращен, так как осуществляется экстренный вызов."</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"Ваш вызов прекращен, так как осуществляется экстренный вызов."</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"Фоновый вызов"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"Приложение <xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g> перевело вызов в фоновый режим. Это приложение может получать доступ к аудио вызова или воспроизводить в нем свое аудио."</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"Прекращена работа приложения телефона"</string>
- <!-- no translation found for notification_crashedInCallService_body (7821729360036047995) -->
- <skip />
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> не отвечает"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"Вызов был сделан с использованием приложения, которое установлено на ваше устройство производителем."</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"Звук выключен."</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Громкая связь включена."</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Не могу говорить. Что случилось?"</string>
- <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"Я сейчас вам перезвоню."</string>
- <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"Я перезвоню вам позже."</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"Я сейчас перезвоню."</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"Я перезвоню позже."</string>
<string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"Не могу говорить. Позвоните позже."</string>
<string name="respond_via_sms_setting_title" msgid="4762275482898830160">"Быстрые ответы"</string>
<string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"Быстрые ответы"</string>
diff --git a/res/values-si/strings.xml b/res/values-si/strings.xml
index 9ce63d4..b73272b 100644
--- a/res/values-si/strings.xml
+++ b/res/values-si/strings.xml
@@ -28,11 +28,11 @@
<string name="notification_missedCall_message" msgid="4054698824390076431">"පණිවිඩය"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"විසන්ධි කළ ඇමතුම"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"<xliff:g id="CALLER">%s</xliff:g> වෙත ඇමතුම හදිසි ඇමතුමක් ගනිමින් ඇති නිසා විසන්ධි කර ඇත."</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"හදිසි ඇමතුමක් ගනිමින් පැවතීම හේතුවෙන් ඔබේ ඇමතුම විසන්ධි කර ඇත."</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"පසුබිම් ඇමතුම"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"<xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g> පසුබිම තුළට ඇමතුමක් ගෙන ඇත. මෙම යෙදුම ඇමතුම හරහා ඕඩියෝ වෙත ප්රවේශ වෙමින් සහ වාදනය කරමින් සිටිය හැකිය."</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"බිඳ වැටුණු දුරකථන යෙදුම"</string>
- <!-- no translation found for notification_crashedInCallService_body (7821729360036047995) -->
- <skip />
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> ප්රතිචාර දැක්වීම නතර කළේය"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"ඔබේ ඇමතුම ඔබේ උපාංගය සමග පැමිණි දුරකථන යෙදුම භාවිත කළේය"</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"ඇමතුම නිශ්ශබ්දයි."</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"ස්පිකර්ෆෝන් සබලයි."</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"දැන් කතාකරන්න බැහැ. මොකද වෙලා තියෙන්නෙ?"</string>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index af4dedf..0d79f1a 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -28,11 +28,11 @@
<string name="notification_missedCall_message" msgid="4054698824390076431">"Napísať"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"Zrušený hovor"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"Hovor kontaktu <xliff:g id="CALLER">%s</xliff:g> bol zrušený, aby mohlo prebehnúť tiesňové volanie."</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"Váš hovor bol zrušený, aby mohlo prebehnúť tiesňové volanie."</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"Hovor na pozadí"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"Aplikácia <xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g> umiestnila hovor do pozadia. Táto aplikácia môže mať počas hovoru prístup k zvuku a prehrávať ho."</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"Telefónna aplikácia sa zrútila"</string>
- <!-- no translation found for notification_crashedInCallService_body (7821729360036047995) -->
- <skip />
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"Aplikácia <xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> prestala reagovať"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"Na hovor bola použitá telefónna aplikácia, ktorá bola vopred nainštalovaná vo vašom zariadení"</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"Zvuk hovoru bol vypnutý."</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Reproduktor je povolený."</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Teraz nemôžem hovoriť, o čo ide?"</string>
@@ -99,7 +99,7 @@
<string name="notification_channel_call_blocking" msgid="2028807677868598710">"Blokovanie hovorov"</string>
<string name="notification_channel_background_calls" msgid="7785659903711350506">"Hovory na pozadí"</string>
<string name="notification_channel_disconnected_calls" msgid="8228636543997645757">"Zrušené hovory"</string>
- <string name="notification_channel_in_call_service_crash" msgid="7313237519166984267">"Telefónne aplikácie sa zrútili"</string>
+ <string name="notification_channel_in_call_service_crash" msgid="7313237519166984267">"Zrútené telefónne aplikácie"</string>
<string name="alert_outgoing_call" msgid="5319895109298927431">"Ak uskutočníte tento hovor, hovor cez <xliff:g id="OTHER_APP">%1$s</xliff:g> bude ukončený."</string>
<string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"Vyberte, ako chcete tento hovor uskutočniť"</string>
<string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"Presmerovať hovor cez aplikáciu <xliff:g id="OTHER_APP">%1$s</xliff:g>"</string>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index 7cb871e..5595c40 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -28,11 +28,11 @@
<string name="notification_missedCall_message" msgid="4054698824390076431">"Sporočilo"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"Klic je prekinjen"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"Klic za stik <xliff:g id="CALLER">%s</xliff:g> je prekinjen zaradi vzpostavljanja klica v sili."</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"Klic je prekinjen zaradi vzpostavljanja klica v sili."</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"Klic v ozadju"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"Aplikacija <xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g> je klic premaknila v ozadje. Ta aplikacija morda dostopa do zvoka in ga predvaja prek klica."</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"Aplikacija za klicanje se je zrušila"</string>
- <!-- no translation found for notification_crashedInCallService_body (7821729360036047995) -->
- <skip />
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"Aplikacija <xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> se ne odziva več"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"Klic je bil opravljen prek aplikacije za klicanje, ki jo je v napravo namestil proizvajalec"</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"Klic izključen."</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Zvočnik omogočen."</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Zdaj ne morem govoriti. Za kaj gre?"</string>
@@ -98,8 +98,8 @@
<string name="notification_channel_missed_call" msgid="7168893015283909012">"Neodgovorjeni klici"</string>
<string name="notification_channel_call_blocking" msgid="2028807677868598710">"Blokiranje klicev"</string>
<string name="notification_channel_background_calls" msgid="7785659903711350506">"Klici v ozadju"</string>
- <string name="notification_channel_disconnected_calls" msgid="8228636543997645757">"Klici so prekinjeni"</string>
- <string name="notification_channel_in_call_service_crash" msgid="7313237519166984267">"Aplikacije za klicanje so se zrušile"</string>
+ <string name="notification_channel_disconnected_calls" msgid="8228636543997645757">"Prekinjeni klici"</string>
+ <string name="notification_channel_in_call_service_crash" msgid="7313237519166984267">"Zrušene aplikacije za klicanje"</string>
<string name="alert_outgoing_call" msgid="5319895109298927431">"Če opravite ta klic, bo končan klic prek aplikacije <xliff:g id="OTHER_APP">%1$s</xliff:g>."</string>
<string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"Izberite, kako želite opraviti klic"</string>
<string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"Preusmeri klic z aplikacijo <xliff:g id="OTHER_APP">%1$s</xliff:g>"</string>
diff --git a/res/values-sq/strings.xml b/res/values-sq/strings.xml
index 859cc05..53f4efc 100644
--- a/res/values-sq/strings.xml
+++ b/res/values-sq/strings.xml
@@ -28,11 +28,11 @@
<string name="notification_missedCall_message" msgid="4054698824390076431">"Mesazh"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"Telefonatë e shkëputur"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"Telefonata me <xliff:g id="CALLER">%s</xliff:g> është shkëputur sepse është kryer një telefonatë urgjence."</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"Telefonata jote është shkëputur sepse është kryer një telefonatë urgjence."</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"Telefonatë në sfond"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"<xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g> e ka vendosur një telefonatë në sfond. Ky aplikacion mund të ketë qasje dhe të luajë audio mbi telefonatë."</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"Aplikacioni i telefonit që ka pësuar një ndërprerje aksidentale"</string>
- <!-- no translation found for notification_crashedInCallService_body (7821729360036047995) -->
- <skip />
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> nuk përgjigjet më"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"Telefonata jote ka përdorur aplikacionin e telefonit që ke marrë me pajisjen tënde"</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"Telefonata kaloi në heshtje."</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Altoparlanti u aktivizua."</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Nuk flas dot tani. Si është puna?"</string>
@@ -65,7 +65,7 @@
<string name="blocked_numbers" msgid="8322134197039865180">"Numrat e bllokuar"</string>
<string name="blocked_numbers_msg" msgid="2797422132329662697">"Nuk do të marrësh telefonata ose mesazhe me tekst nga numrat e bllokuar."</string>
<string name="block_number" msgid="3784343046852802722">"Shto një numër"</string>
- <string name="unblock_dialog_body" msgid="2723393535797217261">"Zhblloko <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"Të zhbllokohet <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
<string name="unblock_button" msgid="8732021675729981781">"Zhblloko"</string>
<string name="add_blocked_dialog_body" msgid="8599974422407139255">"Blloko telefonatat dhe mesazhet me tekst nga"</string>
<string name="add_blocked_number_hint" msgid="8769422085658041097">"Numri i telefonit"</string>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index 5a7ef47..adfece0 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -20,7 +20,7 @@
<string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"Телефон"</string>
<string name="unknown" msgid="6993977514360123431">"Непознато"</string>
<string name="notification_missedCallTitle" msgid="5060387047205532974">"Пропуштен позив"</string>
- <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"Пропуштен позив за Work"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"Пропуштен пословни позив"</string>
<string name="notification_missedCallsTitle" msgid="3910479625507893809">"Пропуштени позиви"</string>
<string name="notification_missedCallsMsg" msgid="5055782736170916682">"Број пропуштених позива: <xliff:g id="NUM_MISSED_CALLS">%s</xliff:g>"</string>
<string name="notification_missedCallTicker" msgid="6731461957487087769">"Пропуштен позив од: <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
@@ -28,10 +28,11 @@
<string name="notification_missedCall_message" msgid="4054698824390076431">"Порука"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"Позив је прекинут"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"Позив са <xliff:g id="CALLER">%s</xliff:g> је прекинут јер се упућује хитни позив."</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"Позив је прекинут јер се упућује хитни позив."</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"Позив у позадини"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"Апликација <xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g> је упутила позив у позадини. Она може да приступа звуку и пушта га током позива."</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"Апликација за телефонирање која је отказала"</string>
- <string name="notification_crashedInCallService_body" msgid="7821729360036047995">"Апликација за телефонирање <xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> је отказала. Позив је настављен помоћу апликације за телефонирање коју сте добили уз уређај."</string>
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> више не реагује"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"Позив је користио апликацију за телефонирање коју сте добили уз уређај"</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"Звук позива је искључен."</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Спикерфон је омогућен."</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"У гужви сам. О чему се ради?"</string>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index 8b11861..b646cbb 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -28,10 +28,11 @@
<string name="notification_missedCall_message" msgid="4054698824390076431">"Sms:a"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"Samtalet kopplades från"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"Samtalet <xliff:g id="CALLER">%s</xliff:g> kopplades från eftersom ett nödsamtal ringdes."</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"Samtalets kopplades bort på grund av ett nödsamtal."</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"Bakgrundssamtal"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"<xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g> har ringt ett samtal i bakgrunden. Denna app kan få åtkomst till och spela upp ljud från samtalet."</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"Kraschad telefonapp"</string>
- <string name="notification_crashedInCallService_body" msgid="7821729360036047995">"Telefonappen <xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> har kraschat. Samtalet fortsatte med appen Telefon som medföljer enheten."</string>
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> slutade svara"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"Samtalet använde telefonappen som medföljer enheten"</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"Samtalets ljud avstängt."</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Högtalartelefon aktiverad."</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Kan inte prata nu. Läget?"</string>
@@ -56,9 +57,9 @@
<string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"Ange standard"</string>
<string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"Avbryt"</string>
<string name="change_default_dialer_warning_message" msgid="8461963987376916114">"<xliff:g id="NEW_APP">%s</xliff:g> kan ringa och styra allt omkring samtal. Endast appar du litar på bör ställas in som standardtelefonapp."</string>
- <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"Vill du göra <xliff:g id="NEW_APP">%s</xliff:g> till din standardapp för samtalsspärr?"</string>
- <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"<xliff:g id="OLD_APP">%s</xliff:g> kommer inte längre att användas för samtalsspärr."</string>
- <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"<xliff:g id="NEW_APP">%s</xliff:g> kommer att kunna se information om uppringare som inte finns i dina kontakter och blockera dessa samtal. Endast appar du litar på bör ställas in som standardapp för samtalsspärr."</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"Vill du göra <xliff:g id="NEW_APP">%s</xliff:g> till din standardapp för samtalsfiltrering?"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"<xliff:g id="OLD_APP">%s</xliff:g> kommer inte längre att användas för samtalsfiltrering."</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"<xliff:g id="NEW_APP">%s</xliff:g> kommer att kunna se information om uppringare som inte finns i dina kontakter och blockera dessa samtal. Endast appar du litar på bör ställas in som standardapp för samtalsfiltrering."</string>
<string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"Ange standard"</string>
<string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"Avbryt"</string>
<string name="blocked_numbers" msgid="8322134197039865180">"Blockerade nummer"</string>
@@ -74,7 +75,7 @@
<string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"Blockeringen har inaktiverats tillfälligt"</string>
<string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"När du ringer eller sms:ar ett nödnummer inaktiveras blockering för att säkerställa att räddningstjänsten kan kontakta dig."</string>
<string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"Återaktivera nu"</string>
- <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> blockerade"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> har blockerats"</string>
<string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> avblockerat"</string>
<string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"Det går inte att blockera nödnummer."</string>
<string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> är redan blockerat."</string>
@@ -97,7 +98,7 @@
<string name="notification_channel_missed_call" msgid="7168893015283909012">"Missade samtal"</string>
<string name="notification_channel_call_blocking" msgid="2028807677868598710">"Samtalsblockering"</string>
<string name="notification_channel_background_calls" msgid="7785659903711350506">"Bakgrundssamtal"</string>
- <string name="notification_channel_disconnected_calls" msgid="8228636543997645757">"Samtalen kopplades från"</string>
+ <string name="notification_channel_disconnected_calls" msgid="8228636543997645757">"Frånkopplade samtal"</string>
<string name="notification_channel_in_call_service_crash" msgid="7313237519166984267">"Kraschade telefonappar"</string>
<string name="alert_outgoing_call" msgid="5319895109298927431">"Ringer du det här samtalet avslutas samtalet i <xliff:g id="OTHER_APP">%1$s</xliff:g>."</string>
<string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"Välj hur du vill ringa samtalet"</string>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index 90becc5..d1142f7 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -28,11 +28,11 @@
<string name="notification_missedCall_message" msgid="4054698824390076431">"Ujumbe"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"Simu imekatwa"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"Simu uliyompigia <xliff:g id="CALLER">%s</xliff:g> imekatwa kwa sababu kuna simu ya dharura inayopigwa."</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"Simu yako imekatwa kwa sababu kuna simu ya dharura inayopigwa."</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"Simu ya chinichini"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"<xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g> inapiga simu chinichini. Huenda programu hii inafikia na kucheza sauti huku simu ikiendelea."</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"Programu ya simu iliyoacha kufanya kazi"</string>
- <!-- no translation found for notification_crashedInCallService_body (7821729360036047995) -->
- <skip />
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> imeacha kufanya kazi"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"Ulipiga simu kwa kutumia Programu ya simu iliyokuja na kifaa chako"</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"Simu imezimwa."</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Spika za simu zimewezeshwa"</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Siwezi kuongea sasa. Kuna nini?"</string>
@@ -43,7 +43,7 @@
<string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"Hariri majibu ya haraka"</string>
<string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
<string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"Majibu ya haraka"</string>
- <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"Ujumbe uliotumwa kwa <xliff:g id="PHONE_NUMBER">%s</xliff:g> ."</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"Ujumbe umetumwa kwa <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
<string name="respond_via_sms_failure_format" msgid="5198680980054596391">"Imeshindwa kutuma SMS kwa <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
<string name="enable_account_preference_title" msgid="6949224486748457976">"Akaunti za simu"</string>
<string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"Piga simu za dharura pekee."</string>
diff --git a/res/values-ta/strings.xml b/res/values-ta/strings.xml
index 0bf91b4..ee48214 100644
--- a/res/values-ta/strings.xml
+++ b/res/values-ta/strings.xml
@@ -28,10 +28,11 @@
<string name="notification_missedCall_message" msgid="4054698824390076431">"செய்தி"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"அழைப்பு துண்டிக்கப்பட்டது"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"அவசர அழைப்பு மேற்கொள்ளப்பட்டதால் <xliff:g id="CALLER">%s</xliff:g> உடனான அழைப்பு துண்டிக்கப்பட்டது."</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"அவசர அழைப்பு மேற்கொள்ளப்படுவதால் உங்கள் அழைப்பு துண்டிக்கப்பட்டுள்ளது."</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"பின்னணி அழைப்பு"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"அழைப்பை பின்னணியில் செயல்படும் வகையில் <xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g> மாற்றியுள்ளது. அழைப்பின் மூலமாக இந்த ஆப்ஸ் ஆடியோவை அணுகி இயக்கக்கூடும்."</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"சிதைவடைந்த மொபைல் ஆப்ஸ்"</string>
- <string name="notification_crashedInCallService_body" msgid="7821729360036047995">"உங்கள் மொபைல் ஆப்ஸான <xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> சிதைவடைந்துள்ளது. உங்கள் சாதனத்துடன் கிடைக்கும் மொபைல் ஆப்ஸ் மூலமே உங்கள் அழைப்பு தொடரப்பட்டது."</string>
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> செயலிழந்துவிட்டது"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"உங்கள் சாதனத்துடன் கிடைக்கும் மொபைல் ஆப்ஸ் மூலம் அழைப்பு மேற்கொள்ளப்பட்டது"</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"அழைப்பு முடக்கப்பட்டது."</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"ஸ்பீக்கர்ஃபோன் இயக்கப்பட்டது."</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"இப்போது பேசமுடியாது. என்ன விஷயம்?"</string>
diff --git a/res/values-te/strings.xml b/res/values-te/strings.xml
index 1837ef3..58eb225 100644
--- a/res/values-te/strings.xml
+++ b/res/values-te/strings.xml
@@ -21,18 +21,18 @@
<string name="unknown" msgid="6993977514360123431">"తెలియదు"</string>
<string name="notification_missedCallTitle" msgid="5060387047205532974">"సమాధానం ఇవ్వని కాల్"</string>
<string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"మిస్డ్ కార్యాలయ కాల్"</string>
- <string name="notification_missedCallsTitle" msgid="3910479625507893809">"సమాధానం ఇవ్వని కాల్లు"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"సమాధానం ఇవ్వని కాల్స్"</string>
<string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> సమాధానం ఇవ్వని కాల్లు"</string>
<string name="notification_missedCallTicker" msgid="6731461957487087769">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g> నుండి సమాధానం ఇవ్వని కాల్"</string>
<string name="notification_missedCall_call_back" msgid="7900333283939789732">"కాల్ చేయి"</string>
<string name="notification_missedCall_message" msgid="4054698824390076431">"సందేశం"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"కాల్ డిస్కనెక్ట్ చేయబడింది"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"అత్యవసర కాల్ చేయబడినందున <xliff:g id="CALLER">%s</xliff:g>తో కాల్ డిస్కనెక్ట్ చేయబడింది."</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"అత్యవసర కాల్ చేయబడినందున మీ కాల్ డిస్కనెక్ట్ చేయబడింది."</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"నేపథ్యం కాల్"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"<xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g> కాల్ను నేపథ్యంలోకి పంపింది. కాల్ ద్వారా ఈ యాప్, ఆడియోను యాక్సెస్ ఇంకా ప్లే చేస్తుండవచ్చు."</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"క్రాష్ అయిన ఫోన్ యాప్"</string>
- <!-- no translation found for notification_crashedInCallService_body (7821729360036047995) -->
- <skip />
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> స్పందించడం ఆగిపోయింది"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"మీ కాల్, మీ పరికరంతో వచ్చిన ఫోన్ యాప్ను ఉపయోగించింది"</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"కాల్ మ్యూట్ చేయబడింది."</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"స్పీకర్ ఫోన్ ప్రారంభించబడింది."</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"ఇప్పుడు మాట్లాడలేను. విషయం ఏమిటి?"</string>
@@ -94,11 +94,11 @@
<string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"మీ <xliff:g id="OTHER_CALL">%1$s</xliff:g> కాల్ కొనసాగుతున్నందున కాల్ చేయడం సాధ్యపడదు."</string>
<string name="cant_call_due_to_ongoing_calls" msgid="6379163795277824868">"మీ <xliff:g id="OTHER_CALL">%1$s</xliff:g> కాల్లు కొనసాగుతున్నందున కాల్ చేయడం సాధ్యపడదు."</string>
<string name="cant_call_due_to_ongoing_unknown_call" msgid="8243532328969433172">"వేరొక అనువర్తనంలో కాల్ కొనసాగుతున్నందున కాల్ చేయడం సాధ్యపడదు."</string>
- <string name="notification_channel_incoming_call" msgid="5245550964701715662">"ఇన్కమింగ్ కాల్లు"</string>
- <string name="notification_channel_missed_call" msgid="7168893015283909012">"సమాధానం ఇవ్వని కాల్లు"</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"ఇన్కమింగ్ కాల్స్"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"సమాధానం ఇవ్వని కాల్స్"</string>
<string name="notification_channel_call_blocking" msgid="2028807677868598710">"కాల్ బ్లాక్ చేయడం"</string>
- <string name="notification_channel_background_calls" msgid="7785659903711350506">"నేపథ్యం కాల్లు"</string>
- <string name="notification_channel_disconnected_calls" msgid="8228636543997645757">"డిస్కనెక్ట్ చేసిన కాల్లు"</string>
+ <string name="notification_channel_background_calls" msgid="7785659903711350506">"బ్యాక్గ్రౌండ్ కాల్స్"</string>
+ <string name="notification_channel_disconnected_calls" msgid="8228636543997645757">"డిస్కనెక్ట్ చేసిన కాల్స్"</string>
<string name="notification_channel_in_call_service_crash" msgid="7313237519166984267">"క్రాష్ అయిన ఫోన్ యాప్స్"</string>
<string name="alert_outgoing_call" msgid="5319895109298927431">"ఈ కాల్ చేయడం వలన మీ <xliff:g id="OTHER_APP">%1$s</xliff:g> కాల్ ముగుస్తుంది."</string>
<string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"ఈ కాల్ ఎలా చేయాలో ఎంచుకోండి"</string>
@@ -118,6 +118,6 @@
<string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"కాల్ బ్లాక్ చేయడం నిలిపివేయబడింది"</string>
<string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"అత్యవసర కాల్ చేయబడింది"</string>
<string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"మిమ్మల్ని సంప్రదించడానికి అత్యవసర ప్రతిస్పందనదారులను అనుమతించడానికి కాల్ బ్లాక్ చేయడం నిలిపివేయబడింది."</string>
- <string name="developer_title" msgid="9146088855661672353">"టెలికామ్ డెవలపర్ మెను"</string>
+ <string name="developer_title" msgid="9146088855661672353">"టెలికామ్ డెవలపర్ మెనూ"</string>
<string name="toast_emergency_can_not_pull_call" msgid="9074229465338410869">"అత్యవసర కాల్లో వున్నప్పుడు కాల్లను స్వీకరించడానికి వీలుపడదు."</string>
</resources>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index 1dfb513..615abb9 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -28,11 +28,11 @@
<string name="notification_missedCall_message" msgid="4054698824390076431">"ข้อความ"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"สายถูกตัด"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"สายที่โทรหา <xliff:g id="CALLER">%s</xliff:g> ถูกตัดเนื่องจากมีการโทรหาหมายเลขฉุกเฉิน"</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"สายของคุณถูกตัดเพราะมีการโทรหาหมายเลขฉุกเฉิน"</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"การโทรในเบื้องหลัง"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"<xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g> ได้ทำการโทรในเบื้องหลัง แอปนี้อาจกำลังเข้าถึงและเล่นเสียงผ่านการโทร"</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"แอปโทรศัพท์ขัดข้อง"</string>
- <!-- no translation found for notification_crashedInCallService_body (7821729360036047995) -->
- <skip />
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> หยุดตอบสนอง"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"สายของคุณใช้แอปโทรศัพท์ที่มาพร้อมกับอุปกรณ์"</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"ปิดเสียงการโทร"</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"เปิดใช้งานลำโพงแล้ว"</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"ตอนนี้คุยไม่ได้ มีอะไรหรือเปล่า"</string>
@@ -62,7 +62,7 @@
<string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"<xliff:g id="NEW_APP">%s</xliff:g> จะดูข้อมูลเกี่ยวกับผู้โทรที่ไม่ได้อยู่ในรายชื่อติดต่อของคุณและจะบล็อกการโทรเหล่านี้ได้ คุณควรตั้งเฉพาะแอปที่คุณเชื่อถือเป็นแอปสกรีนสายเรียกเข้าเริ่มต้นเท่านั้น"</string>
<string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"ตั้งเป็นค่าเริ่มต้น"</string>
<string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"ยกเลิก"</string>
- <string name="blocked_numbers" msgid="8322134197039865180">"หมายเลขที่ถูกบล็อก"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"หมายเลขที่บล็อก"</string>
<string name="blocked_numbers_msg" msgid="2797422132329662697">"คุณจะไม่สามารถรับสายหรือข้อความจากหมายเลขที่บล็อก"</string>
<string name="block_number" msgid="3784343046852802722">"เพิ่มหมายเลข"</string>
<string name="unblock_dialog_body" msgid="2723393535797217261">"เลิกบล็อก <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g> ใช่ไหม"</string>
@@ -94,7 +94,7 @@
<string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"ไม่สามารถโทรออกได้เนื่องจากกำลังใช้สายอยู่ใน <xliff:g id="OTHER_CALL">%1$s</xliff:g>"</string>
<string name="cant_call_due_to_ongoing_calls" msgid="6379163795277824868">"ไม่สามารถโทรออกได้เนื่องจากกำลังใช้สายอยู่ใน <xliff:g id="OTHER_CALL">%1$s</xliff:g>"</string>
<string name="cant_call_due_to_ongoing_unknown_call" msgid="8243532328969433172">"ไม่สามารถโทรออกได้เนื่องจากกำลังใช้สายอยู่ในแอปอื่น"</string>
- <string name="notification_channel_incoming_call" msgid="5245550964701715662">"สายโทรเข้า"</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"สายเรียกเข้า"</string>
<string name="notification_channel_missed_call" msgid="7168893015283909012">"สายที่ไม่ได้รับ"</string>
<string name="notification_channel_call_blocking" msgid="2028807677868598710">"การบล็อกสาย"</string>
<string name="notification_channel_background_calls" msgid="7785659903711350506">"การโทรในเบื้องหลัง"</string>
@@ -112,7 +112,7 @@
<string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"บล็อกผู้โทรที่ไม่เปิดเผยหมายเลขโทรศัพท์"</string>
<string name="phone_settings_payphone_txt" msgid="5003987966052543965">"โทรศัพท์สาธารณะ"</string>
<string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"บล็อกสายจากโทรศัพท์สาธารณะ"</string>
- <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"ไม่ทราบ"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"ไม่รู้จัก"</string>
<string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"บล็อกสายจากผู้โทรที่ไม่สามารถระบุได้"</string>
<string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"การบล็อกสาย"</string>
<string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"ปิดใช้การบล็อกสาย"</string>
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index 06cd979..998abef 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -28,19 +28,19 @@
<string name="notification_missedCall_message" msgid="4054698824390076431">"Padalhan ng mensahe"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"Nadiskonektang tawag"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"Nadiskonekta ang tawag kay <xliff:g id="CALLER">%s</xliff:g> dahil sa ginagawang pang-emergency na tawag."</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"Nadiskonekta ang iyong tawag dahil sa ginagawang pang-emergency na tawag."</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"Tawag sa background"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"Naglagay ng tawag ang <xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g> sa background. Posibleng ina-access at pine-play ng app na ito ang audio sa tawag."</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"Nag-crash ang phone app"</string>
- <!-- no translation found for notification_crashedInCallService_body (7821729360036047995) -->
- <skip />
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"Huminto ang <xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> sa pagtugon"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"Ginamit ng tawag mo ang app na telepono na kasama sa iyong device"</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"Naka-mute ang tawag."</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Pinapagana ang speakerphone."</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Di masagot ngayon. Ano\'ng meron?"</string>
<string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"Ako na lang ang tatawag sa \'yo."</string>
<string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"Tawagan kita mamaya."</string>
<string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"Di masagot ngayon. Tawag ka mamaya?"</string>
- <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"Mga mabilisang tugon"</string>
- <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"I-edit ang mga quick response"</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"Mga mabilis na sagot"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"I-edit ang mabilis na sagot"</string>
<string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
<string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"Mabilisang tugon"</string>
<string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"Naipadala ang mensahe sa <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index 8f93ff1..2e02f8c 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -28,11 +28,11 @@
<string name="notification_missedCall_message" msgid="4054698824390076431">"Mesaj gönder"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"Aramanın bağlantısı kesildi"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"Bir acil durum araması yapıldığı için <xliff:g id="CALLER">%s</xliff:g> ile olan görüşmenin bağlantısı kesildi."</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"Bir acil durum araması yapıldığı için görüşmenizin bağlantısı kesildi."</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"Arka plandaki arama"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"<xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g> arka plana bir arama yerleştirdi. Bu uygulama arama üzerinden sese erişiyor ve ses çalıyor olabilir."</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"Kilitlenen telefon uygulaması"</string>
- <!-- no translation found for notification_crashedInCallService_body (7821729360036047995) -->
- <skip />
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> yanıt vermeyi durdurdu"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"Görüşmeniz için, cihazınızla gelen telefon uygulaması kullanıldı"</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"Çağrı sesi kapatıldı."</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Hoparlör etkin."</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Şimdi konuşamam. Konu nedir?"</string>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index 95b21f0..d86b3eb 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -28,10 +28,11 @@
<string name="notification_missedCall_message" msgid="4054698824390076431">"Повідомлення"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"Виклик припинено"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"Виклик абонента <xliff:g id="CALLER">%s</xliff:g> припинено, оскільки здійснюється екстрений виклик."</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"Виклик перервано, оскільки здійснюється екстрений виклик."</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"У фоновий режим"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"Додаток <xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g> перевів виклик у фоновий режим і може відтворювати аудіо під час виклику."</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"Збій у додатку для дзвінків"</string>
- <string name="notification_crashedInCallService_body" msgid="7821729360036047995">"Додаток для дзвінків <xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> аварійно завершив роботу. Поточний дзвінок було перенаправлено в додаток, що постачається разом із пристроєм."</string>
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"Додаток <xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> не відповідає"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"Поточний дзвінок було перенаправлено в додаток, що постачається разом із пристроєм"</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"Звук виклику вимкнено."</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Гучний зв’язок увімкнено."</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Не можу говорити. У чому справа?"</string>
diff --git a/res/values-ur/strings.xml b/res/values-ur/strings.xml
index b0c622e..20cca1b 100644
--- a/res/values-ur/strings.xml
+++ b/res/values-ur/strings.xml
@@ -28,11 +28,11 @@
<string name="notification_missedCall_message" msgid="4054698824390076431">"پیغام"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"کال غیر منسلک کر دیا گیا"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"ہنگامی کال کی وجہ سے <xliff:g id="CALLER">%s</xliff:g> کی کال کو غیر منسلک کر دیا گیا ہے۔"</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"ہنگامی کال لگائے جانے کی وجہ سے آپ کی کال غیر منسلک ہوگئی ہے۔"</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"پس منظر کی کال"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"<xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g> نے پس منظر میں کال لگا دیا ہے۔ یہ ایپ کال کے دوران آواز تک رسائی حاصل اور چلا سکتی ہے۔"</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"کریشڈ فون ایپ"</string>
- <!-- no translation found for notification_crashedInCallService_body (7821729360036047995) -->
- <skip />
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> نے جواب دینا بند کر دیا"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"آپ کی کال نے آپ کے آلہ کے ساتھ آئی ہوئی فون ایپ کا استعمال کیا"</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"کال خاموش کر دی گئی۔"</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"اسپیکر فون فعال ہوگیا۔"</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"ابھی بات نہیں کرسکتے۔ کیا ہو رہا ہے؟"</string>
@@ -98,13 +98,13 @@
<string name="notification_channel_missed_call" msgid="7168893015283909012">"چھوٹی ہوئی کالیں"</string>
<string name="notification_channel_call_blocking" msgid="2028807677868598710">"کال مسدود کرنا"</string>
<string name="notification_channel_background_calls" msgid="7785659903711350506">"پس منظر کی کالز"</string>
- <string name="notification_channel_disconnected_calls" msgid="8228636543997645757">"کالز غیر منسلک کر دیے گئے"</string>
+ <string name="notification_channel_disconnected_calls" msgid="8228636543997645757">"منقطع کالز"</string>
<string name="notification_channel_in_call_service_crash" msgid="7313237519166984267">"کریشڈ فون ایپس"</string>
<string name="alert_outgoing_call" msgid="5319895109298927431">"یہ کال کرنے سے <xliff:g id="OTHER_APP">%1$s</xliff:g> کال ختم ہو جائے گی۔"</string>
<string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"یہ کال کرنے کا طریقہ منتخب کریں"</string>
<string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"<xliff:g id="OTHER_APP">%1$s</xliff:g> کے ذریعے کال کو ریڈائریکٹ کریں"</string>
<string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"میرا فون نمبر استعمال کر کے کال کريں"</string>
- <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"<xliff:g id="OTHER_APP">%1$s</xliff:g> کے ذریعے کال نہیں کی جا سکتی۔ کال آگے بڑھانے والی کوئی دوسری ایپ آزما کر یا مدد کے لیے ڈیولپر سے رابطہ کر کے دیکھیں۔"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"<xliff:g id="OTHER_APP">%1$s</xliff:g> کے ذریعے کال نہیں کی جا سکتی۔ کال آگے بڑھانے والی کوئی دوسری ایپ آزما کر یا مدد کے لیے ڈویلپر سے رابطہ کر کے دیکھیں۔"</string>
<string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"کال مسدود کرنا"</string>
<string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"وہ نمبرز جو رابطوں میں نہیں ہیں"</string>
<string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"ان نمبرز کو مسدود کریں جو آپ کے رابطوں میں مندرج نہیں ہیں"</string>
@@ -118,6 +118,6 @@
<string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"کال مسدود کرنا غیر فعال ہو گیا ہے"</string>
<string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"ہنگامی کال کی گئی"</string>
<string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"ہنگامی حالت میں جواب دہندگان کو آپ سے رابطہ کرنے کی اجازت دینے کیلئے کال مسدود کرنا غیر فعال ہو گیا ہے۔"</string>
- <string name="developer_title" msgid="9146088855661672353">"ٹیلی کام ڈیولپر مینو"</string>
+ <string name="developer_title" msgid="9146088855661672353">"ٹیلی کام ڈویلپر مینو"</string>
<string name="toast_emergency_can_not_pull_call" msgid="9074229465338410869">"ہنگامی کال کے دوران کالز نہیں لی جائیں گی۔"</string>
</resources>
diff --git a/res/values-uz/strings.xml b/res/values-uz/strings.xml
index 253734b..3271245 100644
--- a/res/values-uz/strings.xml
+++ b/res/values-uz/strings.xml
@@ -16,7 +16,7 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"Qo‘ng‘iroqlar boshqaruvi"</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"Chaqiruvlar boshqaruvi"</string>
<string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"Telefon"</string>
<string name="unknown" msgid="6993977514360123431">"Noma’lum"</string>
<string name="notification_missedCallTitle" msgid="5060387047205532974">"Javobsiz chaqiruv"</string>
@@ -28,11 +28,11 @@
<string name="notification_missedCall_message" msgid="4054698824390076431">"SMS"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"Chaqiruv tugatildi"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"Favqulodda chaqiruv amalga oshirilayotgani uchun <xliff:g id="CALLER">%s</xliff:g> bilan suhbatingiz tugatildi."</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"Favqulodda chaqiruv amalga oshirilayotgani uchun joriy chaqiruvingiz to‘xtatildi."</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"Orqa fondagi chaqiruv"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"<xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g> ilovasi chaqiruvni orqa fonga joyladi. Bu ilova ovozli chaqiruvga kirishi yoki unda audio ijro etishi mumkin."</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"Telefon ilovasi ishi xatolik tufayli to‘xtatildi"</string>
- <!-- no translation found for notification_crashedInCallService_body (7821729360036047995) -->
- <skip />
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> javob bermayapti"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"Chaqiruv qurilmangizga avvaldan o‘rnatilgan ilova orqali amalga oshirildi"</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"Qo‘ng‘iroq ovozi o‘chirildi."</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Karnaychalar yoqildi."</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Hozir gaplasholmayman. Tinchlikmi?"</string>
@@ -99,7 +99,7 @@
<string name="notification_channel_call_blocking" msgid="2028807677868598710">"Chaqiruvlarni bloklash"</string>
<string name="notification_channel_background_calls" msgid="7785659903711350506">"Orqa fondagi chaqiruvlar"</string>
<string name="notification_channel_disconnected_calls" msgid="8228636543997645757">"Tugatilgan chaqiruvlar"</string>
- <string name="notification_channel_in_call_service_crash" msgid="7313237519166984267">"Xatolik tufayli ishi to‘xtatilgan telefon ilovalari"</string>
+ <string name="notification_channel_in_call_service_crash" msgid="7313237519166984267">"Ishdan chiqqan telefon ilovalari"</string>
<string name="alert_outgoing_call" msgid="5319895109298927431">"Bu qo‘ng‘iroqni amalga oshirsangiz, <xliff:g id="OTHER_APP">%1$s</xliff:g> qo‘ng‘irog‘i tugatiladi."</string>
<string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"Telefon qilish usulini tanlang"</string>
<string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"Chaqiruv <xliff:g id="OTHER_APP">%1$s</xliff:g> orqali qayta uzatilsin"</string>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index 79b16bf..c6fe44a 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -28,10 +28,11 @@
<string name="notification_missedCall_message" msgid="4054698824390076431">"Tin nhắn"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"Cuộc gọi bị ngắt kết nối"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"Cuộc gọi đến <xliff:g id="CALLER">%s</xliff:g> đã bị ngắt kết nối do một cuộc gọi khẩn cấp được thực hiện."</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"Cuộc gọi của bạn đã bị ngắt kết nối do một cuộc gọi khẩn cấp đang được thực hiện."</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"Cuộc gọi trong nền"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"<xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g> đã gọi điện ở chế độ nền. Ứng dụng này có thể đang truy cập và phát âm thanh qua cuộc gọi."</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"Ứng dụng điện thoại bị lỗi"</string>
- <string name="notification_crashedInCallService_body" msgid="7821729360036047995">"Ứng dụng điện thoại <xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> của bạn bị lỗi. Cuộc gọi của bạn đã được tiếp tục trên ứng dụng điện thoại đi kèm với thiết bị."</string>
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> đã dừng phản hồi"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"Cuộc gọi của bạn đã dùng ứng dụng dành cho điện thoại đi kèm với thiết bị"</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"Đã tắt tiếng cuộc gọi."</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Đã bật loa ngoài."</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Giờ tôi không nói chuyện được. Có việc gì không?"</string>
@@ -80,13 +81,13 @@
<string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> đã bị chặn."</string>
<string name="toast_personal_call_msg" msgid="5817631570381795610">"Sử dụng trình quay số cá nhân để gọi điện"</string>
<string name="notification_incoming_call" msgid="1233481138362230894">"Cuộc gọi <xliff:g id="CALL_VIA">%1$s</xliff:g> từ <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
- <string name="notification_incoming_video_call" msgid="5795968314037063900">"Cuộc gọi điện video <xliff:g id="CALL_VIA">%1$s</xliff:g> từ <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+ <string name="notification_incoming_video_call" msgid="5795968314037063900">"Cuộc gọi video <xliff:g id="CALL_VIA">%1$s</xliff:g> từ <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
<string name="answering_ends_other_call" msgid="8653544281903986641">"Trả lời sẽ kết thúc cuộc gọi <xliff:g id="CALL_VIA">%1$s</xliff:g> của bạn"</string>
<string name="answering_ends_other_calls" msgid="3702302838456922535">"Trả lời sẽ kết thúc cuộc gọi <xliff:g id="CALL_VIA">%1$s</xliff:g> của bạn"</string>
- <string name="answering_ends_other_video_call" msgid="8572022039304239958">"Trả lời sẽ kết thúc cuộc gọi điện video <xliff:g id="CALL_VIA">%1$s</xliff:g> của bạn"</string>
+ <string name="answering_ends_other_video_call" msgid="8572022039304239958">"Trả lời sẽ kết thúc cuộc gọi video <xliff:g id="CALL_VIA">%1$s</xliff:g> của bạn"</string>
<string name="answering_ends_other_managed_call" msgid="4031778317409881805">"Trả lời sẽ kết thúc cuộc gọi đang diễn ra của bạn"</string>
<string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"Trả lời sẽ kết thúc cuộc gọi đang diễn ra của bạn"</string>
- <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"Trả lời sẽ kết thúc cuộc gọi điện video đang diễn ra của bạn"</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"Trả lời sẽ kết thúc cuộc gọi video đang diễn ra của bạn"</string>
<string name="answer_incoming_call" msgid="2045888814782215326">"Trả lời"</string>
<string name="decline_incoming_call" msgid="922147089348451310">"Từ chối"</string>
<string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"Không thể thực hiện cuộc gọi do không có tài khoản hỗ trợ loại cuộc gọi này."</string>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index e3c7f31..bbda818 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -28,11 +28,11 @@
<string name="notification_missedCall_message" msgid="4054698824390076431">"发短信"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"已中断的通话"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"由于要进行紧急呼叫,与 <xliff:g id="CALLER">%s</xliff:g> 的通话已中断。"</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"由于要进行紧急呼叫,您的通话已中断。"</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"后台通话"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"<xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g> 已将通话切换到后台进行。此应用可以接入通话,并播放通话音频。"</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"崩溃的手机应用"</string>
- <!-- no translation found for notification_crashedInCallService_body (7821729360036047995) -->
- <skip />
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g>已停止响应"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"系统使用您设备自带的电话应用拨打了电话"</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"通话已静音。"</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"扬声器已启用。"</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"现在无法接听。有什么事吗?"</string>
diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml
index c191fe0..0f26c9d 100644
--- a/res/values-zh-rHK/strings.xml
+++ b/res/values-zh-rHK/strings.xml
@@ -28,10 +28,11 @@
<string name="notification_missedCall_message" msgid="4054698824390076431">"短訊"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"已中斷的通話"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"因撥打緊急電話緣故,與<xliff:g id="CALLER">%s</xliff:g>的通話已中斷。"</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"因撥打緊急電話緣故,您的通話已中斷。"</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"背景通話"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"「<xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g>」已將通話放到背景。這個應用程式可以存取該通話,並透過該通話播放音訊。"</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"當機的手機應用程式"</string>
- <string name="notification_crashedInCallService_body" msgid="7821729360036047995">"您的手機應用程式「<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g>」已當機。您使用了裝置隨付的手機應用程式來繼續通話。"</string>
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g>已停止回應"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"您使用了裝置隨付的手機應用程式來通話"</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"通話已靜音。"</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"擴音器已啟用"</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"我現在不方便通話,有什麼事呢?"</string>
@@ -56,9 +57,9 @@
<string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"設為預設"</string>
<string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"取消"</string>
<string name="change_default_dialer_warning_message" msgid="8461963987376916114">"「<xliff:g id="NEW_APP">%s</xliff:g>」將可撥打電話並控制所有相關功能。只有您信任的應用程式,才應設為預設手機應用程式。"</string>
- <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"要將「<xliff:g id="NEW_APP">%s</xliff:g>」設為預設來電篩選應用程式嗎?"</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"要將「<xliff:g id="NEW_APP">%s</xliff:g>」設為預設來電過濾應用程式嗎?"</string>
<string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"「<xliff:g id="OLD_APP">%s</xliff:g>」無法再篩選來電。"</string>
- <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"「<xliff:g id="NEW_APP">%s</xliff:g>」將可查看通訊錄以外來電者的相關資訊,並封鎖這些來電。只有您信任的應用程式才適合設為預設來電篩選應用程式。"</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"「<xliff:g id="NEW_APP">%s</xliff:g>」將可查看通訊錄以外來電者的相關資訊,並封鎖這些來電。只有您信任的應用程式才適合設為預設來電過濾應用程式。"</string>
<string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"設為預設"</string>
<string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"取消"</string>
<string name="blocked_numbers" msgid="8322134197039865180">"已封鎖的號碼"</string>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index 312386a..7c98928 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -28,10 +28,11 @@
<string name="notification_missedCall_message" msgid="4054698824390076431">"簡訊"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"通話中斷"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"由於你正在撥打緊急電話,因此你與<xliff:g id="CALLER">%s</xliff:g>的通話已中斷。"</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"你撥出了緊急電話,因此目前的通話已中斷。"</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"背景通話"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"「<xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g>」已將通話切換到在背景進行。這個應用程式可能會在通話期間存取及播放音訊。"</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"通話應用程式異常終止"</string>
- <string name="notification_crashedInCallService_body" msgid="7821729360036047995">"你的通話應用程式「<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g>」已異常終止。系統目前已使用裝置內建的通話應用程式繼續進行通話。"</string>
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"「<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g>」已停止回應"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"目前是透過裝置內建的電話應用程式進行通話"</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"通話已靜音。"</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"喇叭已啟用"</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"我現在不方便講話,有什麼事?"</string>
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index 674af06..30c147d 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -28,11 +28,11 @@
<string name="notification_missedCall_message" msgid="4054698824390076431">"Umlayezo"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"Ikholi enqanyuliwe"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"Ikholi eya ku-<xliff:g id="CALLER">%s</xliff:g> inqanyuliwe ngenxa yekholi yesimo esiphuthumayo efakwayo."</string>
+ <string name="notification_disconnectedCall_generic_body" msgid="5282765206349184853">"Ikholi yakho inqanyuliwe ngenxa yekholi yesimo esiphuthumayo eyenziwe."</string>
<string name="notification_audioProcessing_title" msgid="1619035039880584575">"Ikholi engemuva"</string>
<string name="notification_audioProcessing_body" msgid="6397005913770420388">"<xliff:g id="AUDIO_PROCESSING_APP_NAME">%s</xliff:g> yenze ikholi ngemuva. Kungenzeka ukuthi lolu hlelo lokusebenza lufinyelela futhi ludlala okulalelwayo ngaphezu kwekholi."</string>
- <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"Uhlelo lokusebenza lwefoni olukhubazekile"</string>
- <!-- no translation found for notification_crashedInCallService_body (7821729360036047995) -->
- <skip />
+ <string name="notification_incallservice_not_responding_title" msgid="5347557574288598548">"<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> iyeke ukuphendula"</string>
+ <string name="notification_incallservice_not_responding_body" msgid="9209308270131968623">"Ikholi yakho isebenzise uhlelo lokusebenza lefoni elize nedivayisi yakho"</string>
<string name="accessibility_call_muted" msgid="2968461092554300779">"Ikholu ithulisiwe"</string>
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Isipikha sefoni sinikwe amandla"</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Angikwazi ukukhuluma okwamanje. Kwenzenjani?"</string>
diff --git a/src/com/android/server/telecom/Call.java b/src/com/android/server/telecom/Call.java
index 15f9cd1..c4f398c 100644
--- a/src/com/android/server/telecom/Call.java
+++ b/src/com/android/server/telecom/Call.java
@@ -2655,7 +2655,8 @@
return mState == CallState.ACTIVE;
}
- Bundle getExtras() {
+ @VisibleForTesting
+ public Bundle getExtras() {
return mExtras;
}
@@ -3915,6 +3916,10 @@
mIsUsingCallFiltering = isUsingCallFiltering;
}
+ public boolean isUsingCallFiltering() {
+ return mIsUsingCallFiltering;
+ }
+
/**
* Returns whether or not Volte call was used.
*
diff --git a/src/com/android/server/telecom/CallLogManager.java b/src/com/android/server/telecom/CallLogManager.java
index 3cec618..0ec2362 100755
--- a/src/com/android/server/telecom/CallLogManager.java
+++ b/src/com/android/server/telecom/CallLogManager.java
@@ -16,7 +16,7 @@
package com.android.server.telecom;
-import static android.provider.CallLog.Calls.MISSED_REASON_NOT_MISSED;
+import static android.provider.CallLog.Calls.BLOCK_REASON_NOT_BLOCKED;
import static android.telephony.CarrierConfigManager.KEY_SUPPORT_IMS_CONFERENCE_EVENT_PACKAGE_BOOL;
import android.annotation.Nullable;
@@ -24,25 +24,26 @@
import android.content.Intent;
import android.location.Country;
import android.location.CountryDetector;
+import android.location.Location;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Looper;
import android.os.UserHandle;
import android.os.PersistableBundle;
+import android.provider.CallLog;
import android.provider.CallLog.Calls;
import android.telecom.Connection;
import android.telecom.DisconnectCause;
import android.telecom.Log;
import android.telecom.PhoneAccount;
import android.telecom.PhoneAccountHandle;
+import android.telecom.TelecomManager;
import android.telecom.VideoProfile;
import android.telephony.CarrierConfigManager;
import android.telephony.PhoneNumberUtils;
import android.telephony.SubscriptionManager;
-// TODO: Needed for move to system service: import com.android.internal.R;
import com.android.internal.annotations.VisibleForTesting;
-import android.telecom.CallerInfo;
import com.android.server.telecom.callfiltering.CallFilteringResult;
import java.util.Arrays;
@@ -66,71 +67,19 @@
* Parameter object to hold the arguments to add a call in the call log DB.
*/
private static class AddCallArgs {
- /**
- * @param callerInfo Caller details.
- * @param number The phone number to be logged.
- * @param presentation Number presentation of the phone number to be logged.
- * @param callType The type of call (e.g INCOMING_TYPE). @see
- * {@link android.provider.CallLog} for the list of values.
- * @param features The features of the call (e.g. FEATURES_VIDEO). @see
- * {@link android.provider.CallLog} for the list of values.
- * @param creationDate Time when the call was created (milliseconds since epoch).
- * @param durationInMillis Duration of the call (milliseconds).
- * @param dataUsage Data usage in bytes, or null if not applicable.
- * @param isRead Indicates if the entry has been read or not.
- * @param logCallCompletedListener optional callback called after the call is logged.
- */
- public AddCallArgs(Context context, CallerInfo callerInfo, String number,
- String postDialDigits, String viaNumber, int presentation, int callType,
- int features, PhoneAccountHandle accountHandle, long creationDate,
- long durationInMillis, Long dataUsage, UserHandle initiatingUser, boolean isRead,
- @Nullable LogCallCompletedListener logCallCompletedListener, int callBlockReason,
- CharSequence callScreeningAppName, String callScreeningComponentName,
- long missedReason) {
+ public AddCallArgs(Context context, CallLog.AddCallParams params,
+ @Nullable LogCallCompletedListener logCallCompletedListener) {
this.context = context;
- this.callerInfo = callerInfo;
- this.number = number;
- this.postDialDigits = postDialDigits;
- this.viaNumber = viaNumber;
- this.presentation = presentation;
- this.callType = callType;
- this.features = features;
- this.accountHandle = accountHandle;
- this.timestamp = creationDate;
- this.durationInSec = (int)(durationInMillis / 1000);
- this.dataUsage = dataUsage;
- this.initiatingUser = initiatingUser;
- this.isRead = isRead;
+ this.params = params;
this.logCallCompletedListener = logCallCompletedListener;
- this.callBockReason = callBlockReason;
- this.callScreeningAppName = callScreeningAppName;
- this.callScreeningComponentName = callScreeningComponentName;
- this.missedReason = missedReason;
+
}
// Since the members are accessed directly, we don't use the
// mXxxx notation.
public final Context context;
- public final CallerInfo callerInfo;
- public final String number;
- public final String postDialDigits;
- public final String viaNumber;
- public final int presentation;
- public final int callType;
- public final int features;
- public final PhoneAccountHandle accountHandle;
- public final long timestamp;
- public final int durationInSec;
- public final Long dataUsage;
- public final UserHandle initiatingUser;
- public final boolean isRead;
-
+ public final CallLog.AddCallParams params;
@Nullable
public final LogCallCompletedListener logCallCompletedListener;
-
- public final int callBockReason;
- public final CharSequence callScreeningAppName;
- public final String callScreeningComponentName;
- public final long missedReason;
}
private static final String TAG = CallLogManager.class.getSimpleName();
@@ -315,47 +264,50 @@
*/
void logCall(Call call, int callLogType,
@Nullable LogCallCompletedListener logCallCompletedListener, CallFilteringResult result) {
- long creationTime;
+ CallLog.AddCallParams.AddCallParametersBuilder paramBuilder =
+ new CallLog.AddCallParams.AddCallParametersBuilder();
if (call.getConnectTimeMillis() != 0
&& call.getConnectTimeMillis() < call.getCreationTimeMillis()) {
// If connected time is available, use connected time. The connected time might be
// earlier than created time since it might come from carrier sent special SMS to
// notifier user earlier missed call.
- creationTime = call.getConnectTimeMillis();
+ paramBuilder.setStart(call.getConnectTimeMillis());
} else {
- creationTime = call.getCreationTimeMillis();
+ paramBuilder.setStart(call.getCreationTimeMillis());
}
- final long age = call.getAgeMillis();
+ paramBuilder.setDuration((int) (call.getAgeMillis() / 1000));
- final String logNumber = getLogNumber(call);
+ String logNumber = getLogNumber(call);
+ paramBuilder.setNumber(logNumber);
Log.d(TAG, "logNumber set to: %s", Log.pii(logNumber));
- final PhoneAccountHandle emergencyAccountHandle =
- TelephonyUtil.getDefaultEmergencyPhoneAccount().getAccountHandle();
-
String formattedViaNumber = PhoneNumberUtils.formatNumber(call.getViaNumber(),
getCountryIso());
formattedViaNumber = (formattedViaNumber != null) ?
formattedViaNumber : call.getViaNumber();
+ paramBuilder.setViaNumber(formattedViaNumber);
+ final PhoneAccountHandle emergencyAccountHandle =
+ TelephonyUtil.getDefaultEmergencyPhoneAccount().getAccountHandle();
PhoneAccountHandle accountHandle = call.getTargetPhoneAccount();
if (emergencyAccountHandle.equals(accountHandle)) {
accountHandle = null;
}
+ paramBuilder.setAccountHandle(accountHandle);
- Long callDataUsage = call.getCallDataUsage() == Call.DATA_USAGE_NOT_SET ? null :
- call.getCallDataUsage();
+ paramBuilder.setDataUsage(call.getCallDataUsage() == Call.DATA_USAGE_NOT_SET
+ ? Long.MIN_VALUE : call.getCallDataUsage());
- int callFeatures = getCallFeatures(call.getVideoStateHistory(),
+ paramBuilder.setFeatures(getCallFeatures(call.getVideoStateHistory(),
call.getDisconnectCause().getCode() == DisconnectCause.CALL_PULLED,
call.wasHighDefAudio(), call.wasWifi(),
(call.getConnectionProperties() & Connection.PROPERTY_ASSISTED_DIALING) ==
Connection.PROPERTY_ASSISTED_DIALING,
call.wasEverRttCall(),
- call.wasVolte());
+ call.wasVolte()));
if (result == null) {
result = new CallFilteringResult.Builder()
@@ -363,67 +315,82 @@
.setCallScreeningComponentName(call.getCallScreeningComponentName())
.build();
}
-
if (callLogType == Calls.BLOCKED_TYPE || callLogType == Calls.MISSED_TYPE) {
- logCall(call.getCallerInfo(), logNumber, call.getPostDialDigits(), formattedViaNumber,
- call.getHandlePresentation(), callLogType, callFeatures, accountHandle,
- creationTime, age, callDataUsage, call.isEmergencyCall(),
- call.getInitiatingUser(), call.isSelfManaged(), logCallCompletedListener,
- result.mCallBlockReason, result.mCallScreeningAppName,
- result.mCallScreeningComponentName, call.getMissedReason());
+ paramBuilder.setCallBlockReason(result.mCallBlockReason);
+ paramBuilder.setCallScreeningComponentName(result.mCallScreeningComponentName);
+ paramBuilder.setCallScreeningAppName(result.mCallScreeningAppName);
} else {
- logCall(call.getCallerInfo(), logNumber, call.getPostDialDigits(), formattedViaNumber,
- call.getHandlePresentation(), callLogType, callFeatures, accountHandle,
- creationTime, age, callDataUsage, call.isEmergencyCall(),
- call.getInitiatingUser(), call.isSelfManaged(), logCallCompletedListener,
- Calls.BLOCK_REASON_NOT_BLOCKED, null /*callScreeningAppName*/,
- null /*callScreeningComponentName*/, call.getMissedReason());
+ paramBuilder.setCallBlockReason(BLOCK_REASON_NOT_BLOCKED);
+ }
+
+ PhoneAccount phoneAccount = mPhoneAccountRegistrar.getPhoneAccountUnchecked(accountHandle);
+ UserHandle initiatingUser = call.getInitiatingUser();
+ if (phoneAccount != null &&
+ phoneAccount.hasCapabilities(PhoneAccount.CAPABILITY_MULTI_USER)) {
+ if (initiatingUser != null &&
+ UserUtil.isManagedProfile(mContext, initiatingUser)) {
+ paramBuilder.setUserToBeInsertedTo(initiatingUser);
+ paramBuilder.setAddForAllUsers(false);
+ } else {
+ paramBuilder.setAddForAllUsers(true);
+ }
+ } else {
+ if (accountHandle == null) {
+ paramBuilder.setAddForAllUsers(true);
+ } else {
+ paramBuilder.setUserToBeInsertedTo(accountHandle.getUserHandle());
+ paramBuilder.setAddForAllUsers(accountHandle.getUserHandle() == null);
+ }
+ }
+ if (call.getIntentExtras() != null) {
+ if (call.getIntentExtras().containsKey(TelecomManager.EXTRA_PRIORITY)) {
+ paramBuilder.setPriority(call.getIntentExtras()
+ .getInt(TelecomManager.EXTRA_PRIORITY));
+ }
+ if (call.getIntentExtras().containsKey(TelecomManager.EXTRA_CALL_SUBJECT)) {
+ paramBuilder.setSubject(call.getIntentExtras()
+ .getString(TelecomManager.EXTRA_CALL_SUBJECT));
+ }
+ if (call.getIntentExtras().containsKey(TelecomManager.EXTRA_PICTURE_URI)) {
+ paramBuilder.setPictureUri(call.getIntentExtras()
+ .getParcelable(TelecomManager.EXTRA_PICTURE_URI));
+ }
+ // The picture uri can end up either in extras or in intent extras due to how these
+ // two bundles are set. For incoming calls they're in extras, but for outgoing calls
+ // they're in intentExtras.
+ if (call.getExtras() != null
+ && call.getExtras().containsKey(TelecomManager.EXTRA_PICTURE_URI)) {
+ paramBuilder.setPictureUri(call.getExtras()
+ .getParcelable(TelecomManager.EXTRA_PICTURE_URI));
+ }
+ if (call.getIntentExtras().containsKey(TelecomManager.EXTRA_LOCATION)) {
+ Location l = call.getIntentExtras().getParcelable(TelecomManager.EXTRA_LOCATION);
+ if (l != null) {
+ paramBuilder.setLatitude(l.getLatitude());
+ paramBuilder.setLongitude(l.getLongitude());
+ }
+ }
+ }
+
+ paramBuilder.setCallerInfo(call.getCallerInfo());
+ paramBuilder.setPostDialDigits(call.getPostDialDigits());
+ paramBuilder.setPresentation(call.getHandlePresentation());
+ paramBuilder.setCallType(callLogType);
+ paramBuilder.setIsRead(call.isSelfManaged());
+ paramBuilder.setMissedReason(call.getMissedReason());
+
+ sendAddCallBroadcast(callLogType, call.getAgeMillis());
+
+ boolean okayToLog =
+ okayToLogCall(accountHandle, logNumber, call.isEmergencyCall());
+ if (okayToLog) {
+ AddCallArgs args = new AddCallArgs(mContext, paramBuilder.build(),
+ logCallCompletedListener);
+ logCallAsync(args);
}
}
- /**
- * Inserts a call into the call log, based on the parameters passed in.
- *
- * @param callerInfo Caller details.
- * @param number The number the call was made to or from.
- * @param postDialDigits The post-dial digits that were dialed after the number,
- * if it was an outgoing call. Otherwise ''.
- * @param presentation
- * @param callType The type of call.
- * @param features The features of the call.
- * @param start The start time of the call, in milliseconds.
- * @param duration The duration of the call, in milliseconds.
- * @param dataUsage The data usage for the call, null if not applicable.
- * @param isEmergency {@code true} if this is an emergency call, {@code false} otherwise.
- * @param logCallCompletedListener optional callback called after the call is logged.
- * @param initiatingUser The user the call was initiated under.
- * @param isSelfManaged {@code true} if this is a self-managed call, {@code false} otherwise.
- * @param callBlockReason The reason why the call is blocked.
- * @param callScreeningAppName The call screening application name which block the call.
- * @param callScreeningComponentName The call screening component name which block the call.
- * @param missedReason The encoded information about reasons for missed call.
- */
- private void logCall(
- CallerInfo callerInfo,
- String number,
- String postDialDigits,
- String viaNumber,
- int presentation,
- int callType,
- int features,
- PhoneAccountHandle accountHandle,
- long start,
- long duration,
- Long dataUsage,
- boolean isEmergency,
- UserHandle initiatingUser,
- boolean isSelfManaged,
- @Nullable LogCallCompletedListener logCallCompletedListener,
- int callBlockReason,
- CharSequence callScreeningAppName,
- String callScreeningComponentName,
- long missedReason) {
-
+ boolean okayToLogCall(PhoneAccountHandle accountHandle, String number, boolean isEmergency) {
// On some devices, to avoid accidental redialing of emergency numbers, we *never* log
// emergency calls to the Call Log. (This behavior is set on a per-product basis, based
// on carrier requirements.)
@@ -438,29 +405,8 @@
}
// Don't log emergency numbers if the device doesn't allow it.
- final boolean isOkToLogThisCall = (!isEmergency || okToLogEmergencyNumber)
+ return (!isEmergency || okToLogEmergencyNumber)
&& !isUnloggableNumber(number, configBundle);
-
- sendAddCallBroadcast(callType, duration);
-
- if (isOkToLogThisCall) {
- Log.d(TAG, "Logging Call log entry: " + callerInfo + ", "
- + Log.pii(number) + "," + presentation + ", " + callType
- + ", " + start + ", " + duration);
- boolean isRead = false;
- if (isSelfManaged) {
- // Mark self-managed calls are read since they're being handled by their own app.
- // Their inclusion in the call log is informational only.
- isRead = true;
- }
- AddCallArgs args = new AddCallArgs(mContext, callerInfo, number, postDialDigits,
- viaNumber, presentation, callType, features, accountHandle, start, duration,
- dataUsage, initiatingUser, isRead, logCallCompletedListener, callBlockReason,
- callScreeningAppName, callScreeningComponentName, missedReason);
- logCallAsync(args);
- } else {
- Log.d(TAG, "Not adding emergency call to call log.");
- }
}
private boolean isUnloggableNumber(String callNumber, PersistableBundle carrierConfig) {
@@ -566,7 +512,7 @@
mListeners[i] = c.logCallCompletedListener;
try {
// May block.
- result[i] = addCall(c);
+ result[i] = Calls.addCall(c.context, c.params);
} catch (Exception e) {
// This is very rare but may happen in legitimate cases.
// E.g. If the phone is encrypted and thus write request fails, it may cause
@@ -582,37 +528,6 @@
return result;
}
- private Uri addCall(AddCallArgs c) {
- PhoneAccount phoneAccount = mPhoneAccountRegistrar
- .getPhoneAccountUnchecked(c.accountHandle);
- if (phoneAccount != null &&
- phoneAccount.hasCapabilities(PhoneAccount.CAPABILITY_MULTI_USER)) {
- if (c.initiatingUser != null &&
- UserUtil.isManagedProfile(mContext, c.initiatingUser)) {
- return addCall(c, c.initiatingUser);
- } else {
- return addCall(c, null);
- }
- } else {
- return addCall(c, c.accountHandle == null ? null : c.accountHandle.getUserHandle());
- }
- }
-
- /**
- * Insert the call to a specific user or all users except managed profile.
- * @param c context
- * @param userToBeInserted user handle of user that the call going be inserted to. null
- * if insert to all users except managed profile.
- */
- private Uri addCall(AddCallArgs c, UserHandle userToBeInserted) {
- return Calls.addCall(c.callerInfo, c.context, c.number, c.postDialDigits, c.viaNumber,
- c.presentation, c.callType, c.features, c.accountHandle, c.timestamp,
- c.durationInSec, c.dataUsage, userToBeInserted == null,
- userToBeInserted, c.isRead, c.callBockReason, c.callScreeningAppName,
- c.callScreeningComponentName, c.missedReason);
- }
-
-
@Override
protected void onPostExecute(Uri[] result) {
for (int i = 0; i < result.length; i++) {
diff --git a/src/com/android/server/telecom/CallScreeningServiceHelper.java b/src/com/android/server/telecom/CallScreeningServiceHelper.java
index f02b924..9435250 100644
--- a/src/com/android/server/telecom/CallScreeningServiceHelper.java
+++ b/src/com/android/server/telecom/CallScreeningServiceHelper.java
@@ -55,23 +55,8 @@
}
@Override
- public void allowCall(String s) throws RemoteException {
- unbindCallScreeningService();
- }
-
- @Override
- public void silenceCall(String s) throws RemoteException {
- unbindCallScreeningService();
- }
-
- @Override
- public void screenCallFurther(String callId) throws RemoteException {
- unbindCallScreeningService();
- }
-
- @Override
- public void disallowCall(String s, boolean b, boolean b1, boolean b2,
- ComponentName componentName) throws RemoteException {
+ public void onScreeningResponse(String callId, ComponentName componentName,
+ CallScreeningService.ParcelableCallResponse callResponse) {
unbindCallScreeningService();
}
diff --git a/src/com/android/server/telecom/CallsManager.java b/src/com/android/server/telecom/CallsManager.java
index 7742422..d2d50ad 100755
--- a/src/com/android/server/telecom/CallsManager.java
+++ b/src/com/android/server/telecom/CallsManager.java
@@ -72,6 +72,7 @@
import android.provider.Settings;
import android.sysprop.TelephonyProperties;
import android.telecom.CallAudioState;
+import android.telecom.CallScreeningService;
import android.telecom.CallerInfo;
import android.telecom.Conference;
import android.telecom.Connection;
@@ -767,6 +768,42 @@
return;
}
+ // Inform our connection service that call filtering is done (if it was performed at all).
+ if (incomingCall.isUsingCallFiltering()) {
+ boolean isInContacts = incomingCall.getCallerInfo() != null
+ && incomingCall.getCallerInfo().contactExists;
+ Connection.CallFilteringCompletionInfo completionInfo =
+ new Connection.CallFilteringCompletionInfo(!result.shouldAllowCall,
+ isInContacts,
+ result.mCallScreeningResponse == null
+ ? null : result.mCallScreeningResponse.toCallResponse(),
+ result.mCallScreeningComponentName == null ? null
+ : ComponentName.unflattenFromString(
+ result.mCallScreeningComponentName));
+ incomingCall.getConnectionService().onCallFilteringCompleted(incomingCall,
+ completionInfo);
+ }
+
+ // Get rid of the call composer attachments that aren't wanted
+ if (result.mIsResponseFromSystemDialer && result.mCallScreeningResponse != null
+ && result.mCallScreeningResponse.getCallComposerAttachmentsToShow() >= 0) {
+ int attachmentMask = result.mCallScreeningResponse.getCallComposerAttachmentsToShow();
+ if ((attachmentMask
+ & CallScreeningService.CallResponse.CALL_COMPOSER_ATTACHMENT_LOCATION) == 0) {
+ incomingCall.getIntentExtras().remove(TelecomManager.EXTRA_LOCATION);
+ }
+
+ if ((attachmentMask
+ & CallScreeningService.CallResponse.CALL_COMPOSER_ATTACHMENT_SUBJECT) == 0) {
+ incomingCall.getIntentExtras().remove(TelecomManager.EXTRA_CALL_SUBJECT);
+ }
+
+ if ((attachmentMask
+ & CallScreeningService.CallResponse.CALL_COMPOSER_ATTACHMENT_PRIORITY) == 0) {
+ incomingCall.getIntentExtras().remove(TelecomManager.EXTRA_PRIORITY);
+ }
+ }
+
if (result.shouldAllowCall) {
incomingCall.setPostCallPackageName(
getRoleManagerAdapter().getDefaultCallScreeningApp());
@@ -2877,8 +2914,8 @@
}
private boolean isRttSettingOn(PhoneAccountHandle handle) {
- boolean isRttModeSettingOn = Settings.Secure.getInt(mContext.getContentResolver(),
- Settings.Secure.RTT_CALLING_MODE, 0) != 0;
+ boolean isRttModeSettingOn = Settings.Secure.getIntForUser(mContext.getContentResolver(),
+ Settings.Secure.RTT_CALLING_MODE, 0, mContext.getUserId()) != 0;
// If the carrier config says that we should ignore the RTT mode setting from the user,
// assume that it's off (i.e. only make an RTT call if it's requested through the extra).
boolean shouldIgnoreRttModeSetting = getCarrierConfigForPhoneAccount(handle)
diff --git a/src/com/android/server/telecom/CarModeTracker.java b/src/com/android/server/telecom/CarModeTracker.java
index e64ef5d..737ce5a 100644
--- a/src/com/android/server/telecom/CarModeTracker.java
+++ b/src/com/android/server/telecom/CarModeTracker.java
@@ -30,6 +30,7 @@
import java.util.Objects;
import java.util.Optional;
import java.util.PriorityQueue;
+import java.util.function.Function;
import java.util.stream.Collectors;
/**
@@ -40,30 +41,40 @@
* Data class holding information about apps which have requested to enter car mode.
*/
private class CarModeApp {
- private @IntRange(from = 0) int mPriority;
+ private final boolean mAutomotiveProjection;
+ private final @IntRange(from = 0) int mPriority;
private @NonNull String mPackageName;
+ public CarModeApp(@NonNull String packageName) {
+ this(true, 0, packageName);
+ }
+
public CarModeApp(int priority, @NonNull String packageName) {
+ this(false, priority, packageName);
+ }
+
+ private CarModeApp(boolean automotiveProjection, int priority, @NonNull String packageName) {
+ mAutomotiveProjection = automotiveProjection;
mPriority = priority;
mPackageName = Objects.requireNonNull(packageName);
}
+ public boolean hasSetAutomotiveProjection() {
+ return mAutomotiveProjection;
+ }
+
/**
* The priority at which the app requested to enter car mode.
* Will be the same as the one specified when {@link UiModeManager#enableCarMode(int, int)}
- * was called, or {@link UiModeManager#DEFAULT_PRIORITY} if no priority was specifeid.
+ * was called, or {@link UiModeManager#DEFAULT_PRIORITY} if no priority was specified.
* @return The priority.
*/
public int getPriority() {
return mPriority;
}
- public void setPriority(int priority) {
- mPriority = priority;
- }
-
/**
- * @return The package name of the app which requested to enter car mode.
+ * @return The package name of the app which requested to enter car mode/set projection.
*/
public String getPackageName() {
return mPackageName;
@@ -72,26 +83,24 @@
public void setPackageName(String packageName) {
mPackageName = packageName;
}
- }
- /**
- * Comparator used to maintain the car mode priority queue ordering.
- */
- private class CarModeAppComparator implements Comparator<CarModeApp> {
- @Override
- public int compare(CarModeApp o1, CarModeApp o2) {
- // highest priority takes precedence.
- return Integer.compare(o2.getPriority(), o1.getPriority());
+ public String toString() {
+ return String.format("[%s, %s]",
+ mAutomotiveProjection ? "PROJECTION SET" : mPriority,
+ mPackageName);
}
}
/**
- * Priority list of apps which have entered or exited car mode, ordered with the highest
- * priority app at the top of the queue. Where items have the same priority, they are ordered
- * by insertion time.
+ * Priority list of apps which have entered or exited car mode, ordered first by whether the app
+ * has set automotive projection, and then by highest priority. Where items have the same
+ * priority, order is arbitrary, but we only allow one item in the queue per priority.
*/
private PriorityQueue<CarModeApp> mCarModeApps = new PriorityQueue<>(2,
- new CarModeAppComparator());
+ // Natural ordering of booleans is False, True. Natural ordering of ints is increasing.
+ Comparator.comparing(CarModeApp::hasSetAutomotiveProjection)
+ .thenComparing(CarModeApp::getPriority)
+ .reversed());
private final LocalLog mCarModeChangeLog = new LocalLog(20);
@@ -144,6 +153,47 @@
mCarModeApps.removeIf(c -> c.getPriority() == priority);
}
+ public void handleSetAutomotiveProjection(@NonNull String packageName) {
+ Optional<CarModeApp> projectingApp = mCarModeApps.stream()
+ .filter(CarModeApp::hasSetAutomotiveProjection)
+ .findAny();
+ // No app with automotive projection? Easy peasy, just add it.
+ if (!projectingApp.isPresent()) {
+ Log.i(this, "handleSetAutomotiveProjection: %s", packageName);
+ mCarModeChangeLog.log("setAutomotiveProjection: packageName=" + packageName);
+ mCarModeApps.add(new CarModeApp(packageName));
+ return;
+ }
+ // Otherwise an app already has automotive projection set. Is it the same app?
+ if (packageName.equals(projectingApp.get().getPackageName())) {
+ Log.w(this, "handleSetAutomotiveProjection: %s already the automotive projection app",
+ packageName);
+ return;
+ }
+ // We have a new app for automotive projection. As a shortcut just reuse the same object by
+ // overwriting the package name.
+ Log.i(this, "handleSetAutomotiveProjection: %s replacing %s as automotive projection app",
+ packageName, projectingApp.get().getPackageName());
+ mCarModeChangeLog.log("setAutomotiveProjection: " + packageName + " replaces "
+ + projectingApp.get().getPackageName());
+ projectingApp.get().setPackageName(packageName);
+ }
+
+ public void handleReleaseAutomotiveProjection() {
+ Optional<String> projectingPackage = mCarModeApps.stream()
+ .filter(CarModeApp::hasSetAutomotiveProjection)
+ .map(CarModeApp::getPackageName)
+ .findAny();
+ if (!projectingPackage.isPresent()) {
+ Log.w(this, "handleReleaseAutomotiveProjection: no current automotive projection app");
+ return;
+ }
+ Log.i(this, "handleReleaseAutomotiveProjection: %s", projectingPackage.get());
+ mCarModeChangeLog.log("releaseAutomotiveProjection: packageName="
+ + projectingPackage.get());
+ mCarModeApps.removeIf(CarModeApp::hasSetAutomotiveProjection);
+ }
+
/**
* Force-removes a package from the car mode tracking list, no matter at which priority.
*
@@ -151,19 +201,21 @@
* from the tracking list so they don't cause a leak.
* @param packageName Package name of the app to force-remove
*/
- public void forceExitCarMode(@NonNull String packageName) {
- Optional<CarModeApp> forcedApp = mCarModeApps.stream()
+ public void forceRemove(@NonNull String packageName) {
+ // We must account for the possibility that the app has set both car mode AND projection.
+ List<CarModeApp> forcedApp = mCarModeApps.stream()
.filter(c -> c.getPackageName().equals(packageName))
- .findAny();
- if (forcedApp.isPresent()) {
- String logString = String.format("forceExitCarMode: packageName=%s, was at priority=%s",
- packageName, forcedApp.get().getPriority());
+ .collect(Collectors.toList());
+ if (forcedApp.isEmpty()) {
+ Log.i(this, "Package %s is not tracked.", packageName);
+ return;
+ }
+ for (CarModeApp app : forcedApp) {
+ String logString = "forceRemove: " + app;
Log.i(this, logString);
mCarModeChangeLog.log(logString);
- mCarModeApps.removeIf(c -> c.getPackageName().equals(packageName));
- } else {
- Log.i(this, "Package %s is not tracked as requesting car mode", packageName);
}
+ mCarModeApps.removeIf(c -> c.getPackageName().equals(packageName));
}
/**
@@ -175,7 +227,7 @@
return mCarModeApps
.stream()
.sorted(mCarModeApps.comparator())
- .map(cma -> cma.getPackageName())
+ .map(CarModeApp::getPackageName)
.collect(Collectors.toList());
}
@@ -183,7 +235,7 @@
return mCarModeApps
.stream()
.sorted(mCarModeApps.comparator())
- .map(cma -> "[" + cma.getPriority() + ", " + cma.getPackageName() + "]")
+ .map(CarModeApp::toString)
.collect(Collectors.joining(", "));
}
@@ -216,7 +268,7 @@
pw.increaseIndent();
for (CarModeApp app : mCarModeApps) {
pw.print("[");
- pw.print(app.getPriority());
+ pw.print(app.hasSetAutomotiveProjection() ? "PROJECTION SET" : app.getPriority());
pw.print("] ");
pw.println(app.getPackageName());
}
diff --git a/src/com/android/server/telecom/ConnectionServiceWrapper.java b/src/com/android/server/telecom/ConnectionServiceWrapper.java
index 1cb3957..705fe4f 100755
--- a/src/com/android/server/telecom/ConnectionServiceWrapper.java
+++ b/src/com/android/server/telecom/ConnectionServiceWrapper.java
@@ -18,6 +18,7 @@
import static android.Manifest.permission.MODIFY_PHONE_STATE;
+import android.Manifest;
import android.app.AppOpsManager;
import android.content.ComponentName;
import android.content.Context;
@@ -30,6 +31,7 @@
import android.os.RemoteException;
import android.os.UserHandle;
import android.telecom.CallAudioState;
+import android.telecom.CallScreeningService;
import android.telecom.Connection;
import android.telecom.ConnectionRequest;
import android.telecom.ConnectionService;
@@ -1863,6 +1865,28 @@
}
}
+ void onCallFilteringCompleted(Call call,
+ Connection.CallFilteringCompletionInfo completionInfo) {
+ final String callId = mCallIdMapper.getCallId(call);
+ if (callId != null && isServiceValid("onCallFilteringCompleted")) {
+ try {
+ logOutgoing("onCallFilteringCompleted %s", completionInfo);
+ int contactsPermission = mContext.getPackageManager()
+ .checkPermission(Manifest.permission.READ_CONTACTS,
+ getComponentName().getPackageName());
+ if (contactsPermission == PackageManager.PERMISSION_GRANTED) {
+ mServiceInterface.onCallFilteringCompleted(callId, completionInfo,
+ Log.getExternalSession(TELECOM_ABBREVIATION));
+ } else {
+ logOutgoing("Skipping call filtering complete message for %s due"
+ + " to lack of READ_CONTACTS", getComponentName().getPackageName());
+ }
+ } catch (RemoteException e) {
+ Log.e(this, e, "Remote exception calling onCallFilteringCompleted");
+ }
+ }
+ }
+
void onExtrasChanged(Call call, Bundle extras) {
final String callId = mCallIdMapper.getCallId(call);
if (callId != null && isServiceValid("onExtrasChanged")) {
diff --git a/src/com/android/server/telecom/DtmfLocalTonePlayer.java b/src/com/android/server/telecom/DtmfLocalTonePlayer.java
index 304a698..5869008 100644
--- a/src/com/android/server/telecom/DtmfLocalTonePlayer.java
+++ b/src/com/android/server/telecom/DtmfLocalTonePlayer.java
@@ -193,8 +193,9 @@
final Context context = call.getContext();
final boolean areLocalTonesEnabled;
if (context.getResources().getBoolean(R.bool.allow_local_dtmf_tones)) {
- areLocalTonesEnabled = Settings.System.getInt(
- context.getContentResolver(), Settings.System.DTMF_TONE_WHEN_DIALING, 1) == 1;
+ areLocalTonesEnabled = Settings.System.getIntForUser(
+ context.getContentResolver(), Settings.System.DTMF_TONE_WHEN_DIALING, 1,
+ context.getUserId()) == 1;
} else {
areLocalTonesEnabled = false;
}
diff --git a/src/com/android/server/telecom/InCallController.java b/src/com/android/server/telecom/InCallController.java
index b138eae..08a64ca 100644
--- a/src/com/android/server/telecom/InCallController.java
+++ b/src/com/android/server/telecom/InCallController.java
@@ -622,6 +622,10 @@
}
}
+ public boolean isCarMode() {
+ return mIsCarMode;
+ }
+
@Override
public int connect(Call call) {
if (mIsConnected) {
@@ -919,8 +923,18 @@
}
@Override
+ public void onAutomotiveProjectionStateSet(String automotiveProjectionPackage) {
+ InCallController.this.handleSetAutomotiveProjection(automotiveProjectionPackage);
+ }
+
+ @Override
+ public void onAutomotiveProjectionStateReleased() {
+ InCallController.this.handleReleaseAutomotiveProjection();
+ }
+
+ @Override
public void onPackageUninstalled(String packageName) {
- mCarModeTracker.forceExitCarMode(packageName);
+ mCarModeTracker.forceRemove(packageName);
updateCarModeForConnections();
}
};
@@ -972,6 +986,11 @@
*/
private boolean mIsCallUsingMicrophone = false;
+ /**
+ * A list of call IDs which are currently using the camera.
+ */
+ private ArrayList<String> mCallsUsingCamera = new ArrayList<>();
+
public InCallController(Context context, TelecomSystem.SyncRoot lock, CallsManager callsManager,
SystemStateHelper systemStateHelper, DefaultDialerCache defaultDialerCache,
Timeouts.Adapter timeoutsAdapter, EmergencyCallHelper emergencyCallHelper,
@@ -1070,6 +1089,7 @@
call.removeListener(mCallListener);
mCallIdMapper.removeCall(call);
maybeTrackMicrophoneUse(isMuted());
+ onSetCamera(call, null);
}
@Override
@@ -1242,13 +1262,28 @@
*/
@Override
public void onSetCamera(Call call, String cameraId) {
+ if (call == null) {
+ return;
+ }
+
Log.i(this, "onSetCamera callId=%s, cameraId=%s", call.getId(), cameraId);
if (cameraId != null) {
- mAppOpsManager.startOp(AppOpsManager.OP_PHONE_CALL_CAMERA, myUid(),
- mContext.getOpPackageName(), false, null, null);
+ boolean shouldStart = mCallsUsingCamera.isEmpty();
+ if (!mCallsUsingCamera.contains(call.getId())) {
+ mCallsUsingCamera.add(call.getId());
+ }
+
+ if (shouldStart) {
+ mAppOpsManager.startOp(AppOpsManager.OP_PHONE_CALL_CAMERA, myUid(),
+ mContext.getOpPackageName(), false, null, null);
+ }
} else {
- mAppOpsManager.finishOp(AppOpsManager.OP_PHONE_CALL_CAMERA, myUid(),
- mContext.getOpPackageName(), null);
+ boolean hadCall = !mCallsUsingCamera.isEmpty();
+ mCallsUsingCamera.remove(call.getId());
+ if (hadCall && mCallsUsingCamera.isEmpty()) {
+ mAppOpsManager.finishOp(AppOpsManager.OP_PHONE_CALL_CAMERA, myUid(),
+ mContext.getOpPackageName(), null);
+ }
}
}
@@ -1546,13 +1581,15 @@
mKnownNonUiInCallServices.add(foundComponentName);
}
+ boolean isEnabled = isServiceEnabled(foundComponentName,
+ serviceInfo, packageManager);
boolean isRequestedType;
if (requestedType == IN_CALL_SERVICE_TYPE_INVALID) {
isRequestedType = true;
} else {
isRequestedType = requestedType == currentType;
}
- if (serviceInfo.enabled && isRequestedType) {
+ if (isEnabled && isRequestedType) {
retval.add(new InCallServiceInfo(foundComponentName, isExternalCallsSupported,
isSelfManageCallsSupported, requestedType));
}
@@ -1561,6 +1598,21 @@
return retval;
}
+ private boolean isServiceEnabled(ComponentName componentName,
+ ServiceInfo serviceInfo, PackageManager packageManager) {
+ int componentEnabledState = packageManager.getComponentEnabledSetting(componentName);
+
+ if (componentEnabledState == PackageManager.COMPONENT_ENABLED_STATE_ENABLED) {
+ return true;
+ }
+
+ if (componentEnabledState == PackageManager.COMPONENT_ENABLED_STATE_DEFAULT) {
+ return serviceInfo.isEnabled();
+ }
+
+ return false;
+ }
+
private boolean shouldUseCarModeUI() {
return mCarModeTracker.isInCarMode();
}
@@ -1976,15 +2028,39 @@
updateCarModeForConnections();
}
+ public void handleSetAutomotiveProjection(@NonNull String packageName) {
+ Log.i(this, "handleSetAutomotiveProjection: packageName=%s", packageName);
+ if (!isCarModeInCallService(packageName)) {
+ Log.i(this, "handleSetAutomotiveProjection: not a valid InCallService: packageName=%s",
+ packageName);
+ return;
+ }
+ mCarModeTracker.handleSetAutomotiveProjection(packageName);
+
+ updateCarModeForConnections();
+ }
+
+ public void handleReleaseAutomotiveProjection() {
+ Log.i(this, "handleReleaseAutomotiveProjection");
+ mCarModeTracker.handleReleaseAutomotiveProjection();
+
+ updateCarModeForConnections();
+ }
+
public void updateCarModeForConnections() {
Log.i(this, "updateCarModeForConnections: car mode apps: %s",
mCarModeTracker.getCarModeApps().stream().collect(Collectors.joining(", ")));
if (mInCallServiceConnection != null) {
if (shouldUseCarModeUI()) {
+ Log.i(this, "updateCarModeForConnections: potentially update car mode app.");
mInCallServiceConnection.changeCarModeApp(
mCarModeTracker.getCurrentCarModePackage());
} else {
- mInCallServiceConnection.disableCarMode();
+ if (mInCallServiceConnection.isCarMode()) {
+ Log.i(this, "updateCarModeForConnections: car mode no longer "
+ + "applicable; disabling");
+ mInCallServiceConnection.disableCarMode();
+ }
}
}
}
@@ -2039,7 +2115,7 @@
private boolean isTrackingManagedAliveCall() {
return mCallIdMapper.getCalls().stream().anyMatch(c -> !c.isExternalCall()
&& !c.isSelfManaged() && c.isAlive() && c.getState() != CallState.ON_HOLD
- && c.getState() != CallState.AUDIO_PROCESSING);
+ && c.getState() != CallState.AUDIO_PROCESSING && c.getState() != CallState.DIALING);
}
/**
diff --git a/src/com/android/server/telecom/ParcelableCallUtils.java b/src/com/android/server/telecom/ParcelableCallUtils.java
index a5291e7..f500828 100644
--- a/src/com/android/server/telecom/ParcelableCallUtils.java
+++ b/src/com/android/server/telecom/ParcelableCallUtils.java
@@ -27,6 +27,7 @@
import android.telecom.ParcelableCall;
import android.telecom.ParcelableRttCall;
import android.telecom.TelecomManager;
+import android.telephony.ims.ImsCallProfile;
import android.text.TextUtils;
import java.util.ArrayList;
@@ -61,6 +62,7 @@
static {
RESTRICTED_CALL_SCREENING_EXTRA_KEYS = new ArrayList<>();
RESTRICTED_CALL_SCREENING_EXTRA_KEYS.add(android.telecom.Connection.EXTRA_SIP_INVITE);
+ RESTRICTED_CALL_SCREENING_EXTRA_KEYS.add(ImsCallProfile.EXTRA_IS_BUSINESS_CALL);
}
public static class Converter {
@@ -554,7 +556,10 @@
android.telecom.Call.Details.PROPERTY_NETWORK_IDENTIFIED_EMERGENCY_CALL,
Connection.PROPERTY_IS_ADHOC_CONFERENCE,
- android.telecom.Call.Details.PROPERTY_IS_ADHOC_CONFERENCE
+ android.telecom.Call.Details.PROPERTY_IS_ADHOC_CONFERENCE,
+
+ Connection.PROPERTY_CROSS_SIM,
+ android.telecom.Call.Details.PROPERTY_CROSS_SIM
};
private static int convertConnectionToCallProperties(int connectionProperties) {
diff --git a/src/com/android/server/telecom/PhoneAccountRegistrar.java b/src/com/android/server/telecom/PhoneAccountRegistrar.java
index 9a4f7df..5ef3dd5 100644
--- a/src/com/android/server/telecom/PhoneAccountRegistrar.java
+++ b/src/com/android/server/telecom/PhoneAccountRegistrar.java
@@ -1993,8 +1993,8 @@
* @return {@code True} if SIP should be used for all calls.
*/
private boolean useSipForPstnCalls(Context context) {
- String option = Settings.System.getString(context.getContentResolver(),
- Settings.System.SIP_CALL_OPTIONS);
+ String option = Settings.System.getStringForUser(context.getContentResolver(),
+ Settings.System.SIP_CALL_OPTIONS, context.getUserId());
option = (option != null) ? option : Settings.System.SIP_ADDRESS_ONLY;
return option.equals(Settings.System.SIP_ALWAYS);
}
diff --git a/src/com/android/server/telecom/Ringer.java b/src/com/android/server/telecom/Ringer.java
index a769a94..267e7da 100644
--- a/src/com/android/server/telecom/Ringer.java
+++ b/src/com/android/server/telecom/Ringer.java
@@ -20,26 +20,27 @@
import android.app.NotificationManager;
import android.app.Person;
import android.content.Context;
-import android.os.VibrationEffect;
-import android.telecom.Log;
-import android.telecom.TelecomManager;
import android.media.AudioAttributes;
import android.media.AudioManager;
import android.media.Ringtone;
import android.media.VolumeShaper;
import android.net.Uri;
import android.os.Bundle;
+import android.os.Handler;
+import android.os.HandlerThread;
+import android.os.VibrationEffect;
import android.os.Vibrator;
+import android.telecom.Log;
+import android.telecom.TelecomManager;
import com.android.internal.annotations.VisibleForTesting;
import com.android.server.telecom.LogUtils.EventTimer;
import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
-import java.util.stream.Collectors;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
/**
* Controls the ringtone player.
@@ -114,6 +115,8 @@
private static final int REPEAT_SIMPLE_VIBRATION_AT = 1;
+ private static final long RINGER_ATTRIBUTES_TIMEOUT = 5000; // 5 seconds
+
private static final float EPSILON = 1e-6f;
private static final AudioAttributes VIBRATION_ATTRIBUTES = new AudioAttributes.Builder()
@@ -147,6 +150,7 @@
private InCallTonePlayer mCallWaitingPlayer;
private RingtoneFactory mRingtoneFactory;
+ private AudioManager mAudioManager;
/**
* Call objects that are ringing, vibrating or call-waiting. These are used only for logging
@@ -161,6 +165,8 @@
*/
private boolean mIsVibrating = false;
+ private Handler mHandler = null;
+
/** Initializes the Ringer. */
@VisibleForTesting
public Ringer(
@@ -183,6 +189,7 @@
mRingtoneFactory = ringtoneFactory;
mInCallController = inCallController;
mVibrationEffectProxy = vibrationEffectProxy;
+ mAudioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
if (mContext.getResources().getBoolean(R.bool.use_simple_vibration_pattern)) {
mDefaultVibrationEffect = mVibrationEffectProxy.createWaveform(SIMPLE_VIBRATION_PATTERN,
@@ -216,58 +223,39 @@
return false;
}
- AudioManager audioManager =
- (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
- LogUtils.EventTimer timer = new EventTimer();
- boolean isVolumeOverZero = audioManager.getStreamVolume(AudioManager.STREAM_RING) > 0;
- timer.record("isVolumeOverZero");
- boolean shouldRingForContact = shouldRingForContact(foregroundCall.getContactUri());
- timer.record("shouldRingForContact");
- boolean isRingtonePresent = !(mRingtoneFactory.getRingtone(foregroundCall) == null);
- timer.record("getRingtone");
- boolean isSelfManaged = foregroundCall.isSelfManaged();
- timer.record("isSelfManaged");
- boolean isSilentRingingRequested = foregroundCall.isSilentRingingRequested();
- timer.record("isSilentRingRequested");
+ // Use completable future to establish a timeout, not intent to make these work outside the
+ // main thread asynchronously
+ // TODO: moving these RingerAttributes calculation out of Telecom lock to avoid blocking.
+ CompletableFuture<RingerAttributes> ringerAttributesFuture = CompletableFuture
+ .supplyAsync(() -> getRingerAttributes(foregroundCall, isHfpDeviceAttached),
+ new LoggedHandlerExecutor(getHandler(), "R.sR", null));
- boolean isRingerAudible = isVolumeOverZero && shouldRingForContact && isRingtonePresent;
- timer.record("isRingerAudible");
- boolean hasExternalRinger = hasExternalRinger(foregroundCall);
- timer.record("hasExternalRinger");
- // Don't do call waiting operations or vibration unless these are false.
- boolean isTheaterModeOn = mSystemSettingsUtil.isTheaterModeOn(mContext);
- timer.record("isTheaterModeOn");
- boolean letDialerHandleRinging = mInCallController.doesConnectedDialerSupportRinging();
- timer.record("letDialerHandleRinging");
+ RingerAttributes attributes = null;
+ try {
+ attributes = ringerAttributesFuture.get(
+ RINGER_ATTRIBUTES_TIMEOUT, TimeUnit.MILLISECONDS);
+ } catch (ExecutionException | InterruptedException | TimeoutException e) {
+ // Keep attributs as null
+ Log.i(this, "getAttributes error: " + e);
+ }
- Log.i(this, "startRinging timings: " + timer);
- boolean endEarly = isTheaterModeOn || letDialerHandleRinging || isSelfManaged ||
- hasExternalRinger || isSilentRingingRequested;
+ if (attributes == null) {
+ Log.addEvent(foregroundCall, LogUtils.Events.SKIP_RINGING, "RingerAttributes error");
+ return false;
+ }
- // Acquire audio focus under any of the following conditions:
- // 1. Should ring for contact and there's an HFP device attached
- // 2. Volume is over zero, we should ring for the contact, and there's a audible ringtone
- // present.
- // 3. The call is self-managed.
- boolean shouldAcquireAudioFocus =
- isRingerAudible || (isHfpDeviceAttached && shouldRingForContact) || isSelfManaged;
-
- if (endEarly) {
- if (letDialerHandleRinging) {
+ if (attributes.isEndEarly()) {
+ if (attributes.letDialerHandleRinging()) {
Log.addEvent(foregroundCall, LogUtils.Events.SKIP_RINGING, "Dialer handles");
}
- if (isSilentRingingRequested) {
+ if (attributes.isSilentRingingRequested()) {
Log.addEvent(foregroundCall, LogUtils.Events.SKIP_RINGING, "Silent ringing "
+ "requested");
}
- Log.i(this, "Ending early -- isTheaterModeOn=%s, letDialerHandleRinging=%s, " +
- "isSelfManaged=%s, hasExternalRinger=%s, silentRingingRequested=%s",
- isTheaterModeOn, letDialerHandleRinging, isSelfManaged, hasExternalRinger,
- isSilentRingingRequested);
if (mBlockOnRingingFuture != null) {
mBlockOnRingingFuture.complete(null);
}
- return shouldAcquireAudioFocus;
+ return attributes.shouldAcquireAudioFocus();
}
stopCallWaiting();
@@ -276,7 +264,7 @@
CompletableFuture<Boolean> hapticsFuture = null;
// Determine if the settings and DND mode indicate that the vibrator can be used right now.
boolean isVibratorEnabled = isVibratorEnabled(mContext, foregroundCall);
- if (isRingerAudible) {
+ if (attributes.isRingerAudible()) {
mRingingCall = foregroundCall;
Log.addEvent(foregroundCall, LogUtils.Events.START_RINGER);
// Because we wait until a contact info query to complete before processing a
@@ -309,15 +297,14 @@
effect = getVibrationEffectForCall(mRingtoneFactory, foregroundCall);
}
} else {
- String reason = String.format(
- "isVolumeOverZero=%s, shouldRingForContact=%s, isRingtonePresent=%s",
- isVolumeOverZero, shouldRingForContact, isRingtonePresent);
- Log.i(this, "startRinging: skipping because ringer would not be audible. " + reason);
- Log.addEvent(foregroundCall, LogUtils.Events.SKIP_RINGING, "Inaudible: " + reason);
+ Log.addEvent(foregroundCall, LogUtils.Events.SKIP_RINGING, "Inaudible: "
+ + attributes.getInaudibleReason());
effect = mDefaultVibrationEffect;
}
if (hapticsFuture != null) {
+ final boolean shouldRingForContact = attributes.shouldRingForContact();
+ final boolean isRingerAudible = attributes.isRingerAudible();
mVibrateFuture = hapticsFuture.thenAccept(isUsingAudioCoupledHaptics -> {
if (!isUsingAudioCoupledHaptics || !mIsHapticPlaybackSupportedByDevice) {
Log.i(this, "startRinging: fileHasHaptics=%b, hapticsSupported=%b",
@@ -342,11 +329,11 @@
mBlockOnRingingFuture.complete(null);
}
Log.w(this, "startRinging: No haptics future; fallback to default behavior");
- maybeStartVibration(foregroundCall, shouldRingForContact, effect, isVibratorEnabled,
- isRingerAudible);
+ maybeStartVibration(foregroundCall, attributes.shouldRingForContact(), effect,
+ isVibratorEnabled, attributes.isRingerAudible());
}
- return shouldAcquireAudioFocus;
+ return attributes.shouldAcquireAudioFocus();
}
private void maybeStartVibration(Call foregroundCall, boolean shouldRingForContact,
@@ -517,4 +504,75 @@
return mSystemSettingsUtil.canVibrateWhenRinging(context)
|| mSystemSettingsUtil.applyRampingRinger(context);
}
+
+ private RingerAttributes getRingerAttributes(Call call, boolean isHfpDeviceAttached) {
+ RingerAttributes.Builder builder = new RingerAttributes.Builder();
+
+ LogUtils.EventTimer timer = new EventTimer();
+
+ boolean isVolumeOverZero = mAudioManager.getStreamVolume(AudioManager.STREAM_RING) > 0;
+ timer.record("isVolumeOverZero");
+ boolean shouldRingForContact = shouldRingForContact(call.getContactUri());
+ timer.record("shouldRingForContact");
+ boolean isRingtonePresent = !(mRingtoneFactory.getRingtone(call) == null);
+ timer.record("getRingtone");
+ boolean isSelfManaged = call.isSelfManaged();
+ timer.record("isSelfManaged");
+ boolean isSilentRingingRequested = call.isSilentRingingRequested();
+ timer.record("isSilentRingRequested");
+
+ boolean isRingerAudible = isVolumeOverZero && shouldRingForContact && isRingtonePresent;
+ timer.record("isRingerAudible");
+ String inaudibleReason = "";
+ if (!isRingerAudible) {
+ inaudibleReason = String.format(
+ "isVolumeOverZero=%s, shouldRingForContact=%s, isRingtonePresent=%s",
+ isVolumeOverZero, shouldRingForContact, isRingtonePresent);
+ }
+
+ boolean hasExternalRinger = hasExternalRinger(call);
+ timer.record("hasExternalRinger");
+ // Don't do call waiting operations or vibration unless these are false.
+ boolean isTheaterModeOn = mSystemSettingsUtil.isTheaterModeOn(mContext);
+ timer.record("isTheaterModeOn");
+ boolean letDialerHandleRinging = mInCallController.doesConnectedDialerSupportRinging();
+ timer.record("letDialerHandleRinging");
+
+ Log.i(this, "startRinging timings: " + timer);
+ boolean endEarly = isTheaterModeOn || letDialerHandleRinging || isSelfManaged ||
+ hasExternalRinger || isSilentRingingRequested;
+
+ if (endEarly) {
+ Log.i(this, "Ending early -- isTheaterModeOn=%s, letDialerHandleRinging=%s, " +
+ "isSelfManaged=%s, hasExternalRinger=%s, silentRingingRequested=%s",
+ isTheaterModeOn, letDialerHandleRinging, isSelfManaged, hasExternalRinger,
+ isSilentRingingRequested);
+ }
+
+ // Acquire audio focus under any of the following conditions:
+ // 1. Should ring for contact and there's an HFP device attached
+ // 2. Volume is over zero, we should ring for the contact, and there's a audible ringtone
+ // present.
+ // 3. The call is self-managed.
+ boolean shouldAcquireAudioFocus =
+ isRingerAudible || (isHfpDeviceAttached && shouldRingForContact) || isSelfManaged;
+
+ return builder.setEndEarly(endEarly)
+ .setLetDialerHandleRinging(letDialerHandleRinging)
+ .setAcquireAudioFocus(shouldAcquireAudioFocus)
+ .setRingerAudible(isRingerAudible)
+ .setInaudibleReason(inaudibleReason)
+ .setShouldRingForContact(shouldRingForContact)
+ .setSilentRingingRequested(isSilentRingingRequested)
+ .build();
+ }
+
+ private Handler getHandler() {
+ if (mHandler == null) {
+ HandlerThread handlerThread = new HandlerThread("Ringer");
+ handlerThread.start();
+ mHandler = handlerThread.getThreadHandler();
+ }
+ return mHandler;
+ }
}
diff --git a/src/com/android/server/telecom/RingerAttributes.java b/src/com/android/server/telecom/RingerAttributes.java
new file mode 100644
index 0000000..840d815
--- /dev/null
+++ b/src/com/android/server/telecom/RingerAttributes.java
@@ -0,0 +1,118 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.telecom;
+
+public class RingerAttributes {
+ public static class Builder {
+ private boolean mEndEarly;
+ private boolean mLetDialerHandleRinging;
+ private boolean mAcquireAudioFocus;
+ private boolean mRingerAudible;
+ private String mInaudibleReason;
+ private boolean mShouldRingForContact;
+ private boolean mSilentRingingRequested;
+
+ public RingerAttributes.Builder setEndEarly(boolean endEarly) {
+ mEndEarly = endEarly;
+ return this;
+ }
+
+ public RingerAttributes.Builder setLetDialerHandleRinging(boolean letDialerHandleRinging) {
+ mLetDialerHandleRinging = letDialerHandleRinging;
+ return this;
+ }
+
+ public RingerAttributes.Builder setAcquireAudioFocus(boolean acquireAudioFocus) {
+ mAcquireAudioFocus = acquireAudioFocus;
+ return this;
+ }
+
+ public RingerAttributes.Builder setRingerAudible(boolean ringerAudible) {
+ mRingerAudible = ringerAudible;
+ return this;
+ }
+
+ public RingerAttributes.Builder setInaudibleReason(String inaudibleReason) {
+ mInaudibleReason = inaudibleReason;
+ return this;
+ }
+
+ public RingerAttributes.Builder setShouldRingForContact(boolean shouldRingForContact) {
+ mShouldRingForContact = shouldRingForContact;
+ return this;
+ }
+
+ public RingerAttributes.Builder setSilentRingingRequested(boolean silentRingingRequested) {
+ mSilentRingingRequested = silentRingingRequested;
+ return this;
+ }
+
+ public RingerAttributes build() {
+ return new RingerAttributes(mEndEarly, mLetDialerHandleRinging, mAcquireAudioFocus,
+ mRingerAudible, mInaudibleReason, mShouldRingForContact,
+ mSilentRingingRequested);
+ }
+ }
+
+ private boolean mEndEarly;
+ private boolean mLetDialerHandleRinging;
+ private boolean mAcquireAudioFocus;
+ private boolean mRingerAudible;
+ private String mInaudibleReason;
+ private boolean mShouldRingForContact;
+ private boolean mSilentRingingRequested;
+
+ private RingerAttributes(boolean endEarly, boolean letDialerHandleRinging,
+ boolean acquireAudioFocus, boolean ringerAudible, String inaudibleReason,
+ boolean shouldRingForContact, boolean silentRingingRequested) {
+ mEndEarly = endEarly;
+ mLetDialerHandleRinging = letDialerHandleRinging;
+ mAcquireAudioFocus = acquireAudioFocus;
+ mRingerAudible = ringerAudible;
+ mInaudibleReason = inaudibleReason;
+ mShouldRingForContact = shouldRingForContact;
+ mSilentRingingRequested = silentRingingRequested;
+ }
+
+ public boolean isEndEarly() {
+ return mEndEarly;
+ }
+
+ public boolean letDialerHandleRinging() {
+ return mLetDialerHandleRinging;
+ }
+
+ public boolean shouldAcquireAudioFocus() {
+ return mAcquireAudioFocus;
+ }
+
+ public boolean isRingerAudible() {
+ return mRingerAudible;
+ }
+
+ public String getInaudibleReason() {
+ return mInaudibleReason;
+ }
+
+ public boolean shouldRingForContact() {
+ return mShouldRingForContact;
+ }
+
+ public boolean isSilentRingingRequested() {
+ return mSilentRingingRequested;
+ }
+}
diff --git a/src/com/android/server/telecom/SystemSettingsUtil.java b/src/com/android/server/telecom/SystemSettingsUtil.java
index f104f27..7baae05 100644
--- a/src/com/android/server/telecom/SystemSettingsUtil.java
+++ b/src/com/android/server/telecom/SystemSettingsUtil.java
@@ -40,18 +40,19 @@
}
public boolean canVibrateWhenRinging(Context context) {
- return Settings.System.getInt(context.getContentResolver(),
- Settings.System.VIBRATE_WHEN_RINGING, 0) != 0;
+ return Settings.System.getIntForUser(context.getContentResolver(),
+ Settings.System.VIBRATE_WHEN_RINGING, 0, context.getUserId()) != 0;
}
public boolean isEnhancedCallBlockingEnabled(Context context) {
- return Settings.System.getInt(context.getContentResolver(),
- Settings.System.DEBUG_ENABLE_ENHANCED_CALL_BLOCKING, 0) != 0;
+ return Settings.System.getIntForUser(context.getContentResolver(),
+ Settings.System.DEBUG_ENABLE_ENHANCED_CALL_BLOCKING, 0, context.getUserId()) != 0;
}
public boolean setEnhancedCallBlockingEnabled(Context context, boolean enabled) {
- return Settings.System.putInt(context.getContentResolver(),
- Settings.System.DEBUG_ENABLE_ENHANCED_CALL_BLOCKING, enabled ? 1 : 0);
+ return Settings.System.putIntForUser(context.getContentResolver(),
+ Settings.System.DEBUG_ENABLE_ENHANCED_CALL_BLOCKING, enabled ? 1 : 0,
+ context.getUserId());
}
public boolean applyRampingRinger(Context context) {
diff --git a/src/com/android/server/telecom/SystemStateHelper.java b/src/com/android/server/telecom/SystemStateHelper.java
index 3be3d5e..f78d21c 100644
--- a/src/com/android/server/telecom/SystemStateHelper.java
+++ b/src/com/android/server/telecom/SystemStateHelper.java
@@ -16,6 +16,7 @@
package com.android.server.telecom;
+import android.annotation.NonNull;
import android.app.UiModeManager;
import android.content.BroadcastReceiver;
import android.content.Context;
@@ -38,7 +39,7 @@
/**
* Provides various system states to the rest of the telecom codebase.
*/
-public class SystemStateHelper {
+public class SystemStateHelper implements UiModeManager.OnProjectionStateChangeListener {
public interface SystemStateListener {
/**
* Listener method to inform interested parties when a package name requests to enter or
@@ -51,6 +52,19 @@
void onCarModeChanged(int priority, String packageName, boolean isCarMode);
/**
+ * Listener method to inform interested parties when a package has set automotive projection
+ * state.
+ * @param automotiveProjectionPackage the package that set automotive projection.
+ */
+ void onAutomotiveProjectionStateSet(String automotiveProjectionPackage);
+
+ /**
+ * Listener method to inform interested parties when automotive projection state has been
+ * cleared.
+ */
+ void onAutomotiveProjectionStateReleased();
+
+ /**
* Notifies when a package has been uninstalled.
* @param packageName the package name of the uninstalled package
*/
@@ -61,37 +75,41 @@
private final BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
- Log.startSession("SSP.oR");
+ Log.startSession("SSH.oR");
try {
- String action = intent.getAction();
- if (UiModeManager.ACTION_ENTER_CAR_MODE_PRIORITIZED.equals(action)) {
- int priority = intent.getIntExtra(UiModeManager.EXTRA_PRIORITY,
- UiModeManager.DEFAULT_PRIORITY);
- String callingPackage = intent.getStringExtra(
- UiModeManager.EXTRA_CALLING_PACKAGE);
- Log.i(SystemStateHelper.this, "ENTER_CAR_MODE_PRIORITIZED; priority=%d, pkg=%s",
- priority, callingPackage);
- onEnterCarMode(priority, callingPackage);
- } else if (UiModeManager.ACTION_EXIT_CAR_MODE_PRIORITIZED.equals(action)) {
- int priority = intent.getIntExtra(UiModeManager.EXTRA_PRIORITY,
- UiModeManager.DEFAULT_PRIORITY);
- String callingPackage = intent.getStringExtra(
- UiModeManager.EXTRA_CALLING_PACKAGE);
- Log.i(SystemStateHelper.this, "EXIT_CAR_MODE_PRIORITIZED; priority=%d, pkg=%s",
- priority, callingPackage);
- onExitCarMode(priority, callingPackage);
- } else if (Intent.ACTION_PACKAGE_REMOVED.equals(action)) {
- Uri data = intent.getData();
- if (data == null) {
+ synchronized (mLock) {
+ String action = intent.getAction();
+ if (UiModeManager.ACTION_ENTER_CAR_MODE_PRIORITIZED.equals(action)) {
+ int priority = intent.getIntExtra(UiModeManager.EXTRA_PRIORITY,
+ UiModeManager.DEFAULT_PRIORITY);
+ String callingPackage = intent.getStringExtra(
+ UiModeManager.EXTRA_CALLING_PACKAGE);
+ Log.i(SystemStateHelper.this,
+ "ENTER_CAR_MODE_PRIORITIZED; priority=%d, pkg=%s",
+ priority, callingPackage);
+ onEnterCarMode(priority, callingPackage);
+ } else if (UiModeManager.ACTION_EXIT_CAR_MODE_PRIORITIZED.equals(action)) {
+ int priority = intent.getIntExtra(UiModeManager.EXTRA_PRIORITY,
+ UiModeManager.DEFAULT_PRIORITY);
+ String callingPackage = intent.getStringExtra(
+ UiModeManager.EXTRA_CALLING_PACKAGE);
+ Log.i(SystemStateHelper.this,
+ "EXIT_CAR_MODE_PRIORITIZED; priority=%d, pkg=%s",
+ priority, callingPackage);
+ onExitCarMode(priority, callingPackage);
+ } else if (Intent.ACTION_PACKAGE_REMOVED.equals(action)) {
+ Uri data = intent.getData();
+ if (data == null) {
+ Log.w(SystemStateHelper.this,
+ "Got null data for package removed, ignoring");
+ return;
+ }
+ mListeners.forEach(
+ l -> l.onPackageUninstalled(data.getEncodedSchemeSpecificPart()));
+ } else {
Log.w(SystemStateHelper.this,
- "Got null data for package removed, ignoring");
- return;
+ "Unexpected intent received: %s", intent.getAction());
}
- mListeners.forEach(
- l -> l.onPackageUninstalled(data.getEncodedSchemeSpecificPart()));
- } else {
- Log.w(SystemStateHelper.this,
- "Unexpected intent received: %s", intent.getAction());
}
} finally {
Log.endSession();
@@ -99,11 +117,31 @@
}
};
- private Set<SystemStateListener> mListeners = new CopyOnWriteArraySet<>();
- private boolean mIsCarMode;
+ @Override
+ public void onProjectionStateChanged(int activeProjectionTypes,
+ @NonNull Set<String> projectingPackages) {
+ Log.startSession("SSH.oPSC");
+ try {
+ synchronized (mLock) {
+ if (projectingPackages.isEmpty()) {
+ onReleaseAutomotiveProjection();
+ } else {
+ onSetAutomotiveProjection(projectingPackages.iterator().next());
+ }
+ }
+ } finally {
+ Log.endSession();
+ }
- public SystemStateHelper(Context context) {
+ }
+
+ private Set<SystemStateListener> mListeners = new CopyOnWriteArraySet<>();
+ private boolean mIsCarModeOrProjectionActive;
+ private final TelecomSystem.SyncRoot mLock;
+
+ public SystemStateHelper(Context context, TelecomSystem.SyncRoot lock) {
mContext = context;
+ mLock = lock;
IntentFilter intentFilter1 = new IntentFilter(
UiModeManager.ACTION_ENTER_CAR_MODE_PRIORITIZED);
@@ -116,7 +154,9 @@
Log.i(this, "Registering broadcast receiver: %s", intentFilter1);
Log.i(this, "Registering broadcast receiver: %s", intentFilter2);
- mIsCarMode = getSystemCarMode();
+ mContext.getSystemService(UiModeManager.class).addOnProjectionStateChangeListener(
+ UiModeManager.PROJECTION_TYPE_AUTOMOTIVE, mContext.getMainExecutor(), this);
+ mIsCarModeOrProjectionActive = getSystemCarModeOrProjectionState();
}
public void addListener(SystemStateListener listener) {
@@ -129,8 +169,8 @@
return mListeners.remove(listener);
}
- public boolean isCarMode() {
- return mIsCarMode;
+ public boolean isCarModeOrProjectionActive() {
+ return mIsCarModeOrProjectionActive;
}
public boolean isDeviceAtEar() {
@@ -215,7 +255,7 @@
private void onEnterCarMode(int priority, String packageName) {
Log.i(this, "Entering carmode");
- mIsCarMode = getSystemCarMode();
+ mIsCarModeOrProjectionActive = getSystemCarModeOrProjectionState();
for (SystemStateListener listener : mListeners) {
listener.onCarModeChanged(priority, packageName, true /* isCarMode */);
}
@@ -223,25 +263,44 @@
private void onExitCarMode(int priority, String packageName) {
Log.i(this, "Exiting carmode");
- mIsCarMode = getSystemCarMode();
+ mIsCarModeOrProjectionActive = getSystemCarModeOrProjectionState();
for (SystemStateListener listener : mListeners) {
listener.onCarModeChanged(priority, packageName, false /* isCarMode */);
}
}
- /**
- * Checks the system for the current car mode.
- *
- * @return True if in car mode, false otherwise.
- */
- private boolean getSystemCarMode() {
- UiModeManager uiModeManager =
- (UiModeManager) mContext.getSystemService(Context.UI_MODE_SERVICE);
-
- if (uiModeManager != null) {
- return uiModeManager.getCurrentModeType() == Configuration.UI_MODE_TYPE_CAR;
+ private void onSetAutomotiveProjection(String packageName) {
+ Log.i(this, "Automotive projection set.");
+ mIsCarModeOrProjectionActive = getSystemCarModeOrProjectionState();
+ for (SystemStateListener listener : mListeners) {
+ listener.onAutomotiveProjectionStateSet(packageName);
}
+ }
+
+ private void onReleaseAutomotiveProjection() {
+ Log.i(this, "Automotive projection released.");
+ mIsCarModeOrProjectionActive = getSystemCarModeOrProjectionState();
+ for (SystemStateListener listener : mListeners) {
+ listener.onAutomotiveProjectionStateReleased();
+ }
+ }
+
+ /**
+ * Checks the system for the current car projection state.
+ *
+ * @return True if projection is active, false otherwise.
+ */
+ private boolean getSystemCarModeOrProjectionState() {
+ UiModeManager uiModeManager = mContext.getSystemService(UiModeManager.class);
+
+ if (uiModeManager != null) {
+ return uiModeManager.getCurrentModeType() == Configuration.UI_MODE_TYPE_CAR
+ || (uiModeManager.getActiveProjectionTypes()
+ & UiModeManager.PROJECTION_TYPE_AUTOMOTIVE) != 0;
+ }
+
+ Log.w(this, "Got null UiModeManager, returning false.");
return false;
}
}
diff --git a/src/com/android/server/telecom/TelecomServiceImpl.java b/src/com/android/server/telecom/TelecomServiceImpl.java
index 69ffd26..a18ae6d 100644
--- a/src/com/android/server/telecom/TelecomServiceImpl.java
+++ b/src/com/android/server/telecom/TelecomServiceImpl.java
@@ -30,6 +30,7 @@
import android.Manifest;
import android.app.ActivityManager;
import android.app.AppOpsManager;
+import android.app.UiModeManager;
import android.content.ComponentName;
import android.content.ContentResolver;
import android.content.Context;
@@ -58,7 +59,6 @@
import android.util.EventLog;
import com.android.internal.telecom.ITelecomService;
-import com.android.internal.telephony.TelephonyPermissions;
import com.android.internal.util.IndentingPrintWriter;
import com.android.server.telecom.components.UserCallIntentProcessorFactory;
import com.android.server.telecom.settings.BlockedNumbersActivity;
@@ -1798,6 +1798,28 @@
}
}
+ /**
+ * A method intended for use in testing to reset car mode at all priorities.
+ *
+ * Runs during setup to avoid cascading failures from failing car mode CTS.
+ */
+ @Override
+ public void resetCarMode() {
+ Log.startSession("TCI.rCM");
+ try {
+ synchronized (mLock) {
+ enforceShellOnly(Binder.getCallingUid(), "resetCarMode");
+ Binder.withCleanCallingIdentity(() -> {
+ UiModeManager uiModeManager =
+ mContext.getSystemService(UiModeManager.class);
+ uiModeManager.disableCarMode(UiModeManager.DISABLE_CAR_MODE_ALL_PRIORITIES);
+ });
+ }
+ } finally {
+ Log.endSession();
+ }
+ }
+
@Override
public void setTestDefaultCallRedirectionApp(String packageName) {
try {
diff --git a/src/com/android/server/telecom/TelecomSystem.java b/src/com/android/server/telecom/TelecomSystem.java
index 5f6b62a..613f50d 100644
--- a/src/com/android/server/telecom/TelecomSystem.java
+++ b/src/com/android/server/telecom/TelecomSystem.java
@@ -238,7 +238,7 @@
mContext.registerReceiver(bluetoothStateReceiver, BluetoothStateReceiver.INTENT_FILTER);
WiredHeadsetManager wiredHeadsetManager = new WiredHeadsetManager(mContext);
- SystemStateHelper systemStateHelper = new SystemStateHelper(mContext);
+ SystemStateHelper systemStateHelper = new SystemStateHelper(mContext, mLock);
mMissedCallNotifier = missedCallNotifierImplFactory
.makeMissedCallNotifierImpl(mContext, mPhoneAccountRegistrar, defaultDialerCache,
diff --git a/src/com/android/server/telecom/Timeouts.java b/src/com/android/server/telecom/Timeouts.java
index 2309596..4d53d6d 100644
--- a/src/com/android/server/telecom/Timeouts.java
+++ b/src/com/android/server/telecom/Timeouts.java
@@ -85,7 +85,8 @@
* @return The timeout value from Settings or the default value if it hasn't been changed.
*/
private static long get(ContentResolver contentResolver, String key, long defaultValue) {
- return Settings.Secure.getLong(contentResolver, PREFIX + key, defaultValue);
+ return Settings.Secure.getLongForUser(contentResolver, PREFIX + key, defaultValue,
+ contentResolver.getUserId());
}
/**
diff --git a/src/com/android/server/telecom/TtyManager.java b/src/com/android/server/telecom/TtyManager.java
index dfddb8f..457ba36 100644
--- a/src/com/android/server/telecom/TtyManager.java
+++ b/src/com/android/server/telecom/TtyManager.java
@@ -42,10 +42,11 @@
mWiredHeadsetManager = wiredHeadsetManager;
mWiredHeadsetManager.addListener(this);
- mPreferredTtyMode = Settings.Secure.getInt(
+ mPreferredTtyMode = Settings.Secure.getIntForUser(
mContext.getContentResolver(),
Settings.Secure.PREFERRED_TTY_MODE,
- TelecomManager.TTY_MODE_OFF);
+ TelecomManager.TTY_MODE_OFF,
+ mContext.getUserId());
IntentFilter intentFilter = new IntentFilter(
TelecomManager.ACTION_TTY_PREFERRED_MODE_CHANGED);
diff --git a/src/com/android/server/telecom/callfiltering/CallFilteringResult.java b/src/com/android/server/telecom/callfiltering/CallFilteringResult.java
index d95d578..84ce4d4 100644
--- a/src/com/android/server/telecom/callfiltering/CallFilteringResult.java
+++ b/src/com/android/server/telecom/callfiltering/CallFilteringResult.java
@@ -18,6 +18,7 @@
import android.provider.CallLog;
import android.provider.CallLog.Calls;
+import android.telecom.CallScreeningService;
import android.text.TextUtils;
import java.util.Objects;
@@ -34,6 +35,8 @@
private int mCallBlockReason = Calls.BLOCK_REASON_NOT_BLOCKED;
private CharSequence mCallScreeningAppName = null;
private String mCallScreeningComponentName = null;
+ private CallScreeningService.ParcelableCallResponse mCallScreeningResponse = null;
+ private boolean mIsResponseFromSystemDialer = false;
public Builder setShouldAllowCall(boolean shouldAllowCall) {
mShouldAllowCall = shouldAllowCall;
@@ -80,6 +83,13 @@
return this;
}
+ public Builder setCallScreeningResponse(
+ CallScreeningService.ParcelableCallResponse response, boolean isFromSystemDialer) {
+ mCallScreeningResponse = response;
+ mIsResponseFromSystemDialer = isFromSystemDialer;
+ return this;
+ }
+
public Builder setContactExists(boolean contactExists) {
mContactExists = contactExists;
return this;
@@ -96,14 +106,16 @@
.setShouldScreenViaAudio(result.shouldScreenViaAudio)
.setCallScreeningAppName(result.mCallScreeningAppName)
.setCallScreeningComponentName(result.mCallScreeningComponentName)
+ .setCallScreeningResponse(result.mCallScreeningResponse,
+ result.mIsResponseFromSystemDialer)
.setContactExists(result.contactExists);
}
public CallFilteringResult build() {
return new CallFilteringResult(mShouldAllowCall, mShouldReject, mShouldSilence,
mShouldAddToCallLog, mShouldShowNotification, mCallBlockReason,
- mCallScreeningAppName, mCallScreeningComponentName, mShouldScreenViaAudio,
- mContactExists);
+ mCallScreeningAppName, mCallScreeningComponentName, mCallScreeningResponse,
+ mIsResponseFromSystemDialer, mShouldScreenViaAudio, mContactExists);
}
}
@@ -116,11 +128,15 @@
public int mCallBlockReason;
public CharSequence mCallScreeningAppName;
public String mCallScreeningComponentName;
+ public CallScreeningService.ParcelableCallResponse mCallScreeningResponse;
+ public boolean mIsResponseFromSystemDialer;
public boolean contactExists;
private CallFilteringResult(boolean shouldAllowCall, boolean shouldReject, boolean
shouldSilence, boolean shouldAddToCallLog, boolean shouldShowNotification, int
callBlockReason, CharSequence callScreeningAppName, String callScreeningComponentName,
+ CallScreeningService.ParcelableCallResponse callScreeningResponse,
+ boolean isResponseFromSystemDialer,
boolean shouldScreenViaAudio, boolean contactExists) {
this.shouldAllowCall = shouldAllowCall;
this.shouldReject = shouldReject;
@@ -131,6 +147,8 @@
this.mCallBlockReason = callBlockReason;
this.mCallScreeningAppName = callScreeningAppName;
this.mCallScreeningComponentName = callScreeningComponentName;
+ this.mCallScreeningResponse = callScreeningResponse;
+ this.mIsResponseFromSystemDialer = isResponseFromSystemDialer;
this.contactExists = contactExists;
}
@@ -148,25 +166,25 @@
if (isBlockedByProvider(mCallBlockReason)) {
return getCombinedCallFilteringResult(other, mCallBlockReason,
- null /*callScreeningAppName*/, null /*callScreeningComponentName*/);
+ null /*callScreeningAppName*/, null /*callScreeningComponentName*/);
} else if (isBlockedByProvider(other.mCallBlockReason)) {
return getCombinedCallFilteringResult(other, other.mCallBlockReason,
- null /*callScreeningAppName*/, null /*callScreeningComponentName*/);
+ null /*callScreeningAppName*/, null /*callScreeningComponentName*/);
}
if (mCallBlockReason == Calls.BLOCK_REASON_DIRECT_TO_VOICEMAIL
- || other.mCallBlockReason == Calls.BLOCK_REASON_DIRECT_TO_VOICEMAIL) {
+ || other.mCallBlockReason == Calls.BLOCK_REASON_DIRECT_TO_VOICEMAIL) {
return getCombinedCallFilteringResult(other, Calls.BLOCK_REASON_DIRECT_TO_VOICEMAIL,
- null /*callScreeningAppName*/, null /*callScreeningComponentName*/);
+ null /*callScreeningAppName*/, null /*callScreeningComponentName*/);
}
if (shouldReject && mCallBlockReason == CallLog.Calls.BLOCK_REASON_CALL_SCREENING_SERVICE) {
return getCombinedCallFilteringResult(other, Calls.BLOCK_REASON_CALL_SCREENING_SERVICE,
- mCallScreeningAppName, mCallScreeningComponentName);
+ mCallScreeningAppName, mCallScreeningComponentName);
} else if (other.shouldReject && other.mCallBlockReason == CallLog.Calls
- .BLOCK_REASON_CALL_SCREENING_SERVICE) {
+ .BLOCK_REASON_CALL_SCREENING_SERVICE) {
return getCombinedCallFilteringResult(other, Calls.BLOCK_REASON_CALL_SCREENING_SERVICE,
- other.mCallScreeningAppName, other.mCallScreeningComponentName);
+ other.mCallScreeningAppName, other.mCallScreeningComponentName);
}
if (shouldScreenViaAudio) {
@@ -177,15 +195,16 @@
other.mCallScreeningAppName, other.mCallScreeningComponentName);
}
- return new Builder()
+ Builder b = new Builder()
.setShouldAllowCall(shouldAllowCall && other.shouldAllowCall)
.setShouldReject(shouldReject || other.shouldReject)
.setShouldSilence(shouldSilence || other.shouldSilence)
.setShouldAddToCallLog(shouldAddToCallLog && other.shouldAddToCallLog)
.setShouldShowNotification(shouldShowNotification && other.shouldShowNotification)
.setShouldScreenViaAudio(shouldScreenViaAudio || other.shouldScreenViaAudio)
- .setContactExists(contactExists || other.contactExists)
- .build();
+ .setContactExists(contactExists || other.contactExists);
+ combineScreeningResponses(b, this, other);
+ return b.build();
}
private boolean isBlockedByProvider(int blockReason) {
@@ -201,8 +220,9 @@
}
private CallFilteringResult getCombinedCallFilteringResult(CallFilteringResult other,
- int callBlockReason, CharSequence callScreeningAppName, String callScreeningComponentName) {
- return new Builder()
+ int callBlockReason, CharSequence callScreeningAppName,
+ String callScreeningComponentName) {
+ Builder b = new Builder()
.setShouldAllowCall(shouldAllowCall && other.shouldAllowCall)
.setShouldReject(shouldReject || other.shouldReject)
.setShouldSilence(shouldSilence || other.shouldSilence)
@@ -212,10 +232,33 @@
.setCallBlockReason(callBlockReason)
.setCallScreeningAppName(callScreeningAppName)
.setCallScreeningComponentName(callScreeningComponentName)
- .setContactExists(contactExists || other.contactExists)
- .build();
+ .setContactExists(contactExists || other.contactExists);
+ combineScreeningResponses(b, this, other);
+ return b.build();
}
+ private static void combineScreeningResponses(Builder builder, CallFilteringResult r1,
+ CallFilteringResult r2) {
+ if (r1.mIsResponseFromSystemDialer) {
+ builder.setCallScreeningResponse(r1.mCallScreeningResponse, true);
+ builder.setCallScreeningComponentName(r1.mCallScreeningComponentName);
+ builder.setCallScreeningAppName(r1.mCallScreeningAppName);
+ } else if (r2.mIsResponseFromSystemDialer) {
+ builder.setCallScreeningResponse(r2.mCallScreeningResponse, true);
+ builder.setCallScreeningComponentName(r2.mCallScreeningComponentName);
+ builder.setCallScreeningAppName(r2.mCallScreeningAppName);
+ } else {
+ if (r1.mCallScreeningResponse != null) {
+ builder.setCallScreeningResponse(r1.mCallScreeningResponse, false);
+ builder.setCallScreeningComponentName(r1.mCallScreeningComponentName);
+ builder.setCallScreeningAppName(r1.mCallScreeningAppName);
+ } else {
+ builder.setCallScreeningResponse(r2.mCallScreeningResponse, false);
+ builder.setCallScreeningComponentName(r2.mCallScreeningComponentName);
+ builder.setCallScreeningAppName(r2.mCallScreeningAppName);
+ }
+ }
+ }
@Override
public boolean equals(Object o) {
diff --git a/src/com/android/server/telecom/callfiltering/CallScreeningServiceFilter.java b/src/com/android/server/telecom/callfiltering/CallScreeningServiceFilter.java
index 486cd8d..4a308e0 100644
--- a/src/com/android/server/telecom/callfiltering/CallScreeningServiceFilter.java
+++ b/src/com/android/server/telecom/callfiltering/CallScreeningServiceFilter.java
@@ -25,6 +25,7 @@
import android.os.IBinder;
import android.os.RemoteException;
import android.provider.CallLog;
+import android.telecom.CallScreeningService;
import android.telecom.Log;
import android.telecom.TelecomManager;
@@ -64,15 +65,44 @@
}
@Override
- public void allowCall(String callId) {
- Long token = Binder.clearCallingIdentity();
+ public void onScreeningResponse(String callId, ComponentName componentName,
+ CallScreeningService.ParcelableCallResponse callResponse) {
+ if (callResponse == null) {
+ Log.w(this, "Null responses are only supposed to happen for outgoing calls");
+ return;
+ }
+ if (callResponse.shouldDisallowCall()) {
+ disallowCall(callId, componentName, callResponse);
+ } else if (callResponse.shouldSilenceCall()) {
+ silenceCall(callId, componentName, callResponse);
+ } else if (callResponse.shouldScreenCallViaAudioProcessing()) {
+ screenCallFurther(callId, componentName, callResponse);
+ } else {
+ allowCall(callId, componentName, callResponse);
+ }
+ }
+
+ public void allowCall(String callId, ComponentName componentName,
+ CallScreeningService.ParcelableCallResponse response) {
+ long token = Binder.clearCallingIdentity();
Log.startSession("NCSSF.aC");
try {
if (mCall == null || (!mCall.getId().equals(callId))) {
Log.w(this, "allowCall, unknown call id: %s", callId);
}
- Log.addEvent(mCall, LogUtils.Events.SCREENING_COMPLETED, mPriorStageResult);
- mResultFuture.complete(mPriorStageResult);
+ CallFilteringResult result = new CallFilteringResult.Builder()
+ .setShouldAllowCall(true)
+ .setShouldReject(false)
+ .setShouldSilence(false)
+ .setShouldAddToCallLog(mPriorStageResult.shouldAddToCallLog)
+ .setShouldShowNotification(mPriorStageResult.shouldShowNotification)
+ .setCallScreeningAppName(mAppName)
+ .setCallScreeningComponentName(componentName.flattenToString())
+ .setCallScreeningResponse(response, isSystemDialer())
+ .setContactExists(mPriorStageResult.contactExists)
+ .build();
+ Log.addEvent(mCall, LogUtils.Events.SCREENING_COMPLETED, result);
+ mResultFuture.complete(result);
} finally {
unbindCallScreeningService();
Binder.restoreCallingIdentity(token);
@@ -80,24 +110,23 @@
}
}
- @Override
- public void disallowCall(String callId, boolean shouldReject,
- boolean shouldAddToCallLog, boolean shouldShowNotification,
- ComponentName componentName) {
+ public void disallowCall(String callId, ComponentName componentName,
+ CallScreeningService.ParcelableCallResponse response) {
long token = Binder.clearCallingIdentity();
Log.startSession("NCSSF.dC");
try {
if (mCall != null && mCall.getId().equals(callId)) {
CallFilteringResult result = new CallFilteringResult.Builder()
.setShouldAllowCall(false)
- .setShouldReject(shouldReject)
+ .setShouldReject(response.shouldRejectCall())
.setShouldSilence(false)
- .setShouldAddToCallLog(shouldAddToCallLog
+ .setShouldAddToCallLog(!response.shouldSkipCallLog()
|| packageTypeShouldAdd(mPackagetype))
- .setShouldShowNotification(shouldShowNotification)
+ .setShouldShowNotification(!response.shouldSkipNotification())
.setCallBlockReason(CallLog.Calls.BLOCK_REASON_CALL_SCREENING_SERVICE)
.setCallScreeningAppName(mAppName)
.setCallScreeningComponentName(componentName.flattenToString())
+ .setCallScreeningResponse(response, isSystemDialer())
.setContactExists(mPriorStageResult.contactExists)
.build();
Log.addEvent(mCall, LogUtils.Events.SCREENING_COMPLETED, result);
@@ -113,8 +142,8 @@
}
}
- @Override
- public void silenceCall(String callId) {
+ public void silenceCall(String callId, ComponentName componentName,
+ CallScreeningService.ParcelableCallResponse response) {
long token = Binder.clearCallingIdentity();
Log.startSession("NCSSF.sC");
try {
@@ -125,6 +154,9 @@
.setShouldSilence(true)
.setShouldAddToCallLog(true)
.setShouldShowNotification(true)
+ .setCallScreeningResponse(response, isSystemDialer())
+ .setCallScreeningAppName(mAppName)
+ .setCallScreeningComponentName(componentName.flattenToString())
.setContactExists(mPriorStageResult.contactExists)
.build();
Log.addEvent(mCall, LogUtils.Events.SCREENING_COMPLETED, result);
@@ -140,8 +172,8 @@
}
}
- @Override
- public void screenCallFurther(String callId) {
+ public void screenCallFurther(String callId, ComponentName componentName,
+ CallScreeningService.ParcelableCallResponse response) {
if (mPackagetype != PACKAGE_TYPE_DEFAULT_DIALER) {
throw new SecurityException("Only the default/system dialer may request screen via"
+ "background call audio");
@@ -158,6 +190,8 @@
.setShouldSilence(false)
.setShouldScreenViaAudio(true)
.setCallScreeningAppName(mAppName)
+ .setCallScreeningComponentName(componentName.flattenToString())
+ .setCallScreeningResponse(response, isSystemDialer())
.setContactExists(mPriorStageResult.contactExists)
.build();
Log.addEvent(mCall, LogUtils.Events.SCREENING_COMPLETED, result);
diff --git a/src/com/android/server/telecom/callfiltering/IncomingCallFilterGraph.java b/src/com/android/server/telecom/callfiltering/IncomingCallFilterGraph.java
index e3c68c9..9fa864e 100644
--- a/src/com/android/server/telecom/callfiltering/IncomingCallFilterGraph.java
+++ b/src/com/android/server/telecom/callfiltering/IncomingCallFilterGraph.java
@@ -49,7 +49,7 @@
private final HandlerThread mHandlerThread;
private final TelecomSystem.SyncRoot mLock;
private List<CallFilter> mFiltersList;
- private CallFilter mDummyComplete;
+ private CallFilter mCompletionSentinel;
private boolean mFinished;
private CallFilteringResult mCurrentResult;
private Context mContext;
@@ -70,7 +70,7 @@
scheduleFilter(filter);
}
}
- if (mFilter.equals(mDummyComplete)) {
+ if (mFilter.equals(mCompletionSentinel)) {
synchronized (mLock) {
mFinished = true;
mListener.onCallFilteringComplete(mCall, result, false);
@@ -105,15 +105,15 @@
public void performFiltering() {
Log.addEvent(mCall, LogUtils.Events.FILTERING_INITIATED);
CallFilter dummyStart = new CallFilter();
- mDummyComplete = new CallFilter();
+ mCompletionSentinel = new CallFilter();
for (CallFilter filter : mFiltersList) {
addEdge(dummyStart, filter);
}
for (CallFilter filter : mFiltersList) {
- addEdge(filter, mDummyComplete);
+ addEdge(filter, mCompletionSentinel);
}
- addEdge(dummyStart, mDummyComplete);
+ addEdge(dummyStart, mCompletionSentinel);
scheduleFilter(dummyStart);
mHandler.postDelayed(new Runnable("ICFG.pF", mLock) {
@@ -159,7 +159,11 @@
startFuture.thenComposeAsync(filter::startFilterLookup,
new LoggedHandlerExecutor(mHandler, "ICFG.sF", null))
.thenApplyAsync(postFilterTask::whenDone,
- new LoggedHandlerExecutor(mHandler, "ICFG.sF", null));
+ new LoggedHandlerExecutor(mHandler, "ICFG.sF", null))
+ .exceptionally((t) -> {
+ Log.e(filter, t, "Encountered exception running filter");
+ return null;
+ });
Log.i(TAG, "Filter %s scheduled.", filter);
}
diff --git a/src/com/android/server/telecom/callredirection/CallRedirectionProcessor.java b/src/com/android/server/telecom/callredirection/CallRedirectionProcessor.java
index e93ef22..a1f357b 100644
--- a/src/com/android/server/telecom/callredirection/CallRedirectionProcessor.java
+++ b/src/com/android/server/telecom/callredirection/CallRedirectionProcessor.java
@@ -294,7 +294,7 @@
* The current rule to decide whether the implemented {@link CallRedirectionService} should
* allow interactive responses with users is only based on whether it is in car mode.
*/
- mAllowInteractiveResponse = !callsManager.getSystemStateHelper().isCarMode();
+ mAllowInteractiveResponse = !callsManager.getSystemStateHelper().isCarModeOrProjectionActive();
mCallRedirectionProcessorHelper = new CallRedirectionProcessorHelper(
context, callsManager, phoneAccountRegistrar);
mProcessedDestinationUri = mCallRedirectionProcessorHelper.formatNumberForRedirection(
diff --git a/testapps/companionapp/Android.bp b/testapps/companionapp/Android.bp
new file mode 100644
index 0000000..8718b37
--- /dev/null
+++ b/testapps/companionapp/Android.bp
@@ -0,0 +1,28 @@
+//
+// Copyright (C) 2019 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
+android_test {
+ name: "TelecomCompanionApp",
+ static_libs: [
+ "androidx.legacy_legacy-support-v4",
+ "guava",
+ ],
+ srcs: ["src/**/*.java"],
+}
diff --git a/testapps/companionapp/AndroidManifest.xml b/testapps/companionapp/AndroidManifest.xml
new file mode 100644
index 0000000..7569d8f
--- /dev/null
+++ b/testapps/companionapp/AndroidManifest.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ coreApp="true"
+ package="com.android.server.telecom.companionapp">
+
+ <uses-sdk android:minSdkVersion="28"
+ android:targetSdkVersion="29"/>
+
+ <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
+ <uses-permission android:name="android.permission.MANAGE_ONGOING_CALLS" />
+ <uses-feature android:name="android.software.companion_device_setup"/>
+
+ <application android:label="Telecom Companion">
+ <uses-library android:name="android.test.runner"/>
+
+ <activity android:name="com.android.server.telecom.companionapp.CompanionTestApp"
+ android:label="CompanionTestApp">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+ <category android:name="android.intent.category.LAUNCHER" />
+ </intent-filter>
+ </activity>
+
+ <service android:name="com.android.server.telecom.companionapp.CompanionInCallServiceImpl"
+ android:permission="android.permission.BIND_INCALL_SERVICE"
+ android:exported="true">
+ <intent-filter>
+ <action android:name="android.telecom.InCallService"/>
+ </intent-filter>
+ </service>
+ </application>
+</manifest>
diff --git a/testapps/companionapp/res/drawable-hdpi/ic_android_black_24dp.png b/testapps/companionapp/res/drawable-hdpi/ic_android_black_24dp.png
new file mode 100644
index 0000000..ed3ee45
--- /dev/null
+++ b/testapps/companionapp/res/drawable-hdpi/ic_android_black_24dp.png
Binary files differ
diff --git a/testapps/companionapp/res/drawable-mdpi/ic_android_black_24dp.png b/testapps/companionapp/res/drawable-mdpi/ic_android_black_24dp.png
new file mode 100644
index 0000000..a4add51
--- /dev/null
+++ b/testapps/companionapp/res/drawable-mdpi/ic_android_black_24dp.png
Binary files differ
diff --git a/testapps/companionapp/res/drawable-xhdpi/ic_android_black_24dp.png b/testapps/companionapp/res/drawable-xhdpi/ic_android_black_24dp.png
new file mode 100644
index 0000000..41558f2
--- /dev/null
+++ b/testapps/companionapp/res/drawable-xhdpi/ic_android_black_24dp.png
Binary files differ
diff --git a/testapps/companionapp/res/drawable-xxhdpi/ic_android_black_24dp.png b/testapps/companionapp/res/drawable-xxhdpi/ic_android_black_24dp.png
new file mode 100644
index 0000000..6006b12
--- /dev/null
+++ b/testapps/companionapp/res/drawable-xxhdpi/ic_android_black_24dp.png
Binary files differ
diff --git a/testapps/companionapp/res/drawable-xxxhdpi/ic_android_black_24dp.png b/testapps/companionapp/res/drawable-xxxhdpi/ic_android_black_24dp.png
new file mode 100644
index 0000000..4f935bf
--- /dev/null
+++ b/testapps/companionapp/res/drawable-xxxhdpi/ic_android_black_24dp.png
Binary files differ
diff --git a/testapps/companionapp/res/layout/main.xml b/testapps/companionapp/res/layout/main.xml
new file mode 100644
index 0000000..e553754
--- /dev/null
+++ b/testapps/companionapp/res/layout/main.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2020 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:orientation="vertical"
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent">
+ <TextView
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:text="This is a test app for companion in call service."
+ android:padding="10dp"
+ android:textColor="#FFFFFF"/>
+ <Button
+ android:id="@+id/buttonStart"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:text="Start Association"/>
+ <Button
+ android:id="@+id/buttonStop"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:text="Stop Association"/>
+</LinearLayout>
diff --git a/testapps/companionapp/src/com/android/server/telecom/companionapp/CompanionInCallServiceImpl.java b/testapps/companionapp/src/com/android/server/telecom/companionapp/CompanionInCallServiceImpl.java
new file mode 100644
index 0000000..890cd77
--- /dev/null
+++ b/testapps/companionapp/src/com/android/server/telecom/companionapp/CompanionInCallServiceImpl.java
@@ -0,0 +1,78 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.server.telecom.companionapp;
+
+import android.content.Intent;
+import android.telecom.Call;
+import android.telecom.InCallService;
+import android.telecom.Phone;
+import android.util.Log;
+import android.widget.Toast;
+
+import java.lang.Override;
+import java.lang.String;
+
+/**
+ * Test Companion In-Call service implementation.
+ */
+public class CompanionInCallServiceImpl extends InCallService {
+ private static final String TAG = "CompanionInCallServiceImpl";
+
+ private Phone mPhone;
+
+ private Phone.Listener mPhoneListener = new Phone.Listener() {
+ @Override
+ public void onCallAdded(Phone phone, Call call) {
+ Log.i(TAG, "onCallAdded: " + call.toString());
+ Toast.makeText(
+ CompanionInCallServiceImpl.this, "onCallAdded", Toast.LENGTH_LONG).show();
+ }
+
+ @Override
+ public void onCallRemoved(Phone phone, Call call) {
+ Log.i(TAG, "onCallRemoved: " + call.toString());
+ Toast.makeText(
+ CompanionInCallServiceImpl.this, "onCallRemoved", Toast.LENGTH_LONG).show();
+ }
+ };
+
+ @Override
+ public void onPhoneCreated(Phone phone) {
+ Log.i(TAG, "onPhoneCreated");
+ mPhone = phone;
+ mPhone.addListener(mPhoneListener);
+ }
+
+ @Override
+ public boolean onUnbind(Intent intent) {
+ Log.i(TAG, "Companion TestApp InCallService unbind");
+ mPhone.removeListener(mPhoneListener);
+ mPhone = null;
+ return super.onUnbind(intent);
+ }
+
+ /**
+ * Used to bind a call
+ * @param intent
+ * @return
+ */
+ @Override
+ public android.os.IBinder onBind(Intent intent) {
+ Log.d(TAG, "Companion TestApp InCallService bind");
+ return super.onBind(intent);
+ }
+}
diff --git a/testapps/companionapp/src/com/android/server/telecom/companionapp/CompanionTestApp.java b/testapps/companionapp/src/com/android/server/telecom/companionapp/CompanionTestApp.java
new file mode 100644
index 0000000..7ed1e1e
--- /dev/null
+++ b/testapps/companionapp/src/com/android/server/telecom/companionapp/CompanionTestApp.java
@@ -0,0 +1,168 @@
+/*
+ * Copyright (C) 2020 Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.telecom.companionapp;
+
+import android.app.Activity;
+import android.bluetooth.BluetoothDevice;
+import android.companion.AssociationRequest;
+import android.companion.BluetoothDeviceFilter;
+import android.companion.CompanionDeviceManager;
+import android.content.Intent;
+import android.content.IntentSender;
+import android.os.Bundle;
+import android.os.ParcelUuid;
+import android.util.Log;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.widget.Button;
+import android.widget.Toast;
+
+import java.util.UUID;
+import java.util.regex.Pattern;
+
+/**
+ * Companion Test App in Telecom
+ */
+public class CompanionTestApp extends Activity {
+
+ private static String logtag = "CompanionTestApp";
+ private CompanionDeviceManager mDeviceManager;
+ private AssociationRequest mPairingRequest;
+ private BluetoothDeviceFilter mDeviceFilter;
+
+ private static final int SELECT_DEVICE_REQUEST_CODE = 42;
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ setupDeviceAssociation();
+
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.main);
+
+ Button buttonStart = (Button)findViewById(R.id.buttonStart);
+ buttonStart.setOnClickListener(startListener);
+
+ Button buttonStop = (Button)findViewById(R.id.buttonStop);
+ buttonStop.setOnClickListener(stopListener);
+ }
+
+ private OnClickListener startListener = new OnClickListener() {
+ public void onClick(View v) {
+ Log.d(logtag,"onClick() called - start button");
+ Toast.makeText(CompanionTestApp.this, "Start Association", Toast.LENGTH_LONG).show();
+ assosicate();
+ Log.d(logtag,"onClick() ended - start button");
+ }
+ };
+
+ private OnClickListener stopListener = new OnClickListener() {
+ public void onClick(View v) {
+ Log.d(logtag,"onClick() called - stop button");
+ Toast.makeText(CompanionTestApp.this, "Stop Association", Toast.LENGTH_LONG).show();
+ disassosicate();
+ Log.d(logtag,"onClick() ended - stop button");
+ }
+ };
+
+ // Setup Device Association Preparation, per
+ // https://developer.android.com/guide/topics/connectivity/companion-device-pairing
+ private void setupDeviceAssociation() {
+ mDeviceManager = getSystemService(CompanionDeviceManager.class);
+
+ mDeviceFilter = new BluetoothDeviceFilter.Builder()
+ .build();
+
+ mPairingRequest = new AssociationRequest.Builder()
+ .addDeviceFilter(mDeviceFilter)
+ .setDeviceProfile(AssociationRequest.DEVICE_PROFILE_WATCH)
+ .build();
+
+ }
+
+ // Associate bluetooth device, per
+ // https://developer.android.com/guide/topics/connectivity/companion-device-pairing
+ private void assosicate() {
+ // When the app tries to pair with the Bluetooth device, show the
+ // appropriate pairing request dialog to the user.
+ mDeviceManager.associate(mPairingRequest,
+ new CompanionDeviceManager.Callback() {
+ @Override
+ public void onDeviceFound(IntentSender chooserLauncher) {
+ try {
+ startIntentSenderForResult(chooserLauncher,
+ SELECT_DEVICE_REQUEST_CODE, null, 0, 0, 0);
+ } catch (Exception ex) {
+ Log.d(logtag, "Callback onDeviceFound() Exception: " + ex);
+ }
+ }
+
+ @Override
+ public void onFailure(CharSequence error) {
+ Log.d(logtag, "Callback onFailure() called - error: " + error);
+ }
+ },
+ null);
+ }
+
+ // Disassociate the associated bluetooth device
+ private void disassosicate() {
+ for (String macAddress : mDeviceManager.getAssociations()) {
+ mDeviceManager.disassociate(macAddress);
+ }
+ }
+
+ @Override
+ public void onActivityResult(int requestCode, int resultCode, Intent data) {
+ if (requestCode == SELECT_DEVICE_REQUEST_CODE &&
+ resultCode == Activity.RESULT_OK) {
+ // User has chosen to pair with the Bluetooth device.
+ BluetoothDevice deviceToPair =
+ data.getParcelableExtra(CompanionDeviceManager.EXTRA_DEVICE);
+ deviceToPair.createBond();
+ }
+ }
+
+ @Override
+ protected void onStart() {
+ Log.d(logtag,"onStart() called");
+ super.onStart();
+ }
+
+ @Override
+ protected void onResume() {
+ Log.d(logtag,"onResume() called");
+ super.onResume();
+ }
+
+ @Override
+ protected void onPause() {
+ Log.d(logtag,"onPause() called");
+ super.onPause();
+ }
+
+ @Override
+ protected void onStop() {
+ Log.d(logtag,"onStop() called");
+ super.onStop();
+ }
+
+ @Override
+ protected void onDestroy() {
+ Log.d(logtag,"onDestroy() called");
+ super.onDestroy();
+ }
+}
diff --git a/testapps/res/layout/incall_screen.xml b/testapps/res/layout/incall_screen.xml
index f8f919b..22d3574 100644
--- a/testapps/res/layout/incall_screen.xml
+++ b/testapps/res/layout/incall_screen.xml
@@ -131,6 +131,11 @@
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"/>
</LinearLayout>
+ <TextView
+ android:id="@+id/incoming_composer_attachments"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginLeft="10dp"/>
<Button
android:id="@+id/disable_incallservice"
android:layout_width="wrap_content"
diff --git a/testapps/res/layout/testdialer_main.xml b/testapps/res/layout/testdialer_main.xml
index 3f397b8..749d236 100644
--- a/testapps/res/layout/testdialer_main.xml
+++ b/testapps/res/layout/testdialer_main.xml
@@ -59,6 +59,11 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/startCallWithRtt"/>
+ <CheckBox
+ android:id="@+id/add_composer_attachments_checkbox"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/addComposerAttachments"/>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
diff --git a/testapps/res/values/donottranslate_strings.xml b/testapps/res/values/donottranslate_strings.xml
index 7331d5a..b1a1f80 100644
--- a/testapps/res/values/donottranslate_strings.xml
+++ b/testapps/res/values/donottranslate_strings.xml
@@ -44,6 +44,8 @@
<string name="startCallWithRtt">Start call with RTT</string>
+ <string name="addComposerAttachments">Add call composer attachments</string>
+
<string name="rttIfaceButton">RTT</string>
<string name="endRttButton">End RTT</string>
diff --git a/testapps/src/com/android/server/telecom/testapps/TestDialerActivity.java b/testapps/src/com/android/server/telecom/testapps/TestDialerActivity.java
index 1e06387..010d6ee 100644
--- a/testapps/src/com/android/server/telecom/testapps/TestDialerActivity.java
+++ b/testapps/src/com/android/server/telecom/testapps/TestDialerActivity.java
@@ -9,6 +9,7 @@
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
+import android.location.Location;
import android.net.Uri;
import android.os.Bundle;
import android.os.PersistableBundle;
@@ -32,8 +33,18 @@
private EditText mNumberView;
private CheckBox mRttCheckbox;
+ private CheckBox mComposerCheckbox;
private EditText mPriorityView;
+ private static final String COMPOSER_SUBJECT = "Sample call composer subject";
+ private static final Location COMPOSER_LOCATION;
+ static {
+ // Area 51
+ COMPOSER_LOCATION = new Location("");
+ COMPOSER_LOCATION.setLongitude(-115.806407);
+ COMPOSER_LOCATION.setLatitude(37.236214);
+ }
+
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -68,6 +79,7 @@
mNumberView = (EditText) findViewById(R.id.number);
mRttCheckbox = (CheckBox) findViewById(R.id.call_with_rtt_checkbox);
+ mComposerCheckbox = (CheckBox) findViewById(R.id.add_composer_attachments_checkbox);
findViewById(R.id.enable_car_mode).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
@@ -169,6 +181,11 @@
if (mRttCheckbox.isChecked()) {
extras.putBoolean(TelecomManager.EXTRA_START_CALL_WITH_RTT, true);
}
+ if (mComposerCheckbox.isChecked()) {
+ extras.putInt(TelecomManager.EXTRA_PRIORITY, TelecomManager.PRIORITY_URGENT);
+ extras.putParcelable(TelecomManager.EXTRA_LOCATION, COMPOSER_LOCATION);
+ extras.putString(TelecomManager.EXTRA_CALL_SUBJECT, COMPOSER_SUBJECT);
+ }
Bundle intentExtras = new Bundle();
intentExtras.putBundle(TelecomManager.EXTRA_OUTGOING_CALL_EXTRAS, extras);
diff --git a/testapps/src/com/android/server/telecom/testapps/TestInCallUI.java b/testapps/src/com/android/server/telecom/testapps/TestInCallUI.java
index 3f3a2c8..bdd4c1a 100644
--- a/testapps/src/com/android/server/telecom/testapps/TestInCallUI.java
+++ b/testapps/src/com/android/server/telecom/testapps/TestInCallUI.java
@@ -21,6 +21,7 @@
import android.content.ComponentName;
import android.content.Intent;
import android.content.pm.PackageManager;
+import android.location.Location;
import android.os.Bundle;
import android.telecom.Call;
import android.telecom.CallAudioState;
@@ -28,6 +29,7 @@
import android.telecom.PhoneAccountHandle;
import android.telecom.TelecomManager;
import android.telecom.VideoProfile;
+import android.telephony.ims.ImsCallProfile;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
@@ -248,6 +250,47 @@
enableInCallService();
}
});
+
+ // Find the ringing call and populate the composer extras
+ for (int i = 0; i < TestCallList.getInstance().size(); i++) {
+ Call call = TestCallList.getInstance().getCall(i);
+ if (call.getState() == Call.STATE_RINGING) {
+ int priority = call.getDetails()
+ .getIntentExtras().getInt(TelecomManager.EXTRA_PRIORITY, -1);
+ Location location = call.getDetails()
+ .getIntentExtras().getParcelable(TelecomManager.EXTRA_LOCATION);
+ String subject = call.getDetails()
+ .getIntentExtras().getString(TelecomManager.EXTRA_CALL_SUBJECT);
+ boolean isBusiness = call.getDetails()
+ .getExtras().getBoolean(ImsCallProfile.EXTRA_IS_BUSINESS_CALL);
+
+ StringBuilder display = new StringBuilder();
+ display.append("priority=");
+ switch (priority) {
+ case TelecomManager.PRIORITY_NORMAL:
+ display.append("normal");
+ break;
+ case TelecomManager.PRIORITY_URGENT:
+ display.append("urgent");
+ break;
+ default:
+ display.append("unset");
+ }
+ display.append(";");
+ if (location != null) {
+ display.append("lat=" + location.getLatitude());
+ display.append("lon=" + location.getLongitude());
+ } else {
+ display.append("loc=null");
+ }
+
+ display.append(" subject=" + subject);
+ display.append(" isBusiness=" + isBusiness);
+ TextView attachmentsTextView = findViewById(R.id.incoming_composer_attachments);
+ attachmentsTextView.setText(display.toString());
+ break;
+ }
+ }
}
public void updateCallAudioState(CallAudioState cas) {
diff --git a/tests/AndroidManifest.xml b/tests/AndroidManifest.xml
index 22f5348..caaf4d6 100644
--- a/tests/AndroidManifest.xml
+++ b/tests/AndroidManifest.xml
@@ -36,6 +36,9 @@
<uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
+ <!-- Used to access Projection State APIs -->
+ <uses-permission android:name="android.permission.READ_PROJECTION_STATE"/>
+
<application android:label="@string/app_name"
android:debuggable="true">
<uses-library android:name="android.test.runner" />
diff --git a/tests/src/com/android/server/telecom/tests/AnalyticsTests.java b/tests/src/com/android/server/telecom/tests/AnalyticsTests.java
index a64f39d..f52da08 100644
--- a/tests/src/com/android/server/telecom/tests/AnalyticsTests.java
+++ b/tests/src/com/android/server/telecom/tests/AnalyticsTests.java
@@ -29,6 +29,7 @@
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
+import android.content.ContentResolver;
import android.content.Context;
import android.os.Build;
import android.telecom.CallAudioState;
@@ -184,6 +185,8 @@
@MediumTest
@Test
public void testAnalyticsTwoCalls() throws Exception {
+ when(mTimeoutsAdapter.getCallScreeningTimeoutMillis(any(ContentResolver.class)))
+ .thenReturn((long) TEST_TIMEOUT);
IdPair testCall1 = startAndMakeActiveIncomingCall(
"650-555-1212",
mPhoneAccountA0.getAccountHandle(),
diff --git a/tests/src/com/android/server/telecom/tests/CallLogManagerTest.java b/tests/src/com/android/server/telecom/tests/CallLogManagerTest.java
index dfc3258..b9f5667 100644
--- a/tests/src/com/android/server/telecom/tests/CallLogManagerTest.java
+++ b/tests/src/com/android/server/telecom/tests/CallLogManagerTest.java
@@ -18,6 +18,7 @@
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.mockito.ArgumentMatchers.any;
@@ -40,7 +41,9 @@
import android.location.Country;
import android.location.CountryDetector;
import android.location.CountryListener;
+import android.location.Location;
import android.net.Uri;
+import android.os.Bundle;
import android.os.Looper;
import android.os.PersistableBundle;
import android.os.SystemClock;
@@ -52,6 +55,7 @@
import android.telecom.DisconnectCause;
import android.telecom.PhoneAccount;
import android.telecom.PhoneAccountHandle;
+import android.telecom.TelecomManager;
import android.telecom.VideoProfile;
import android.telephony.CarrierConfigManager;
import android.telephony.PhoneNumberUtils;
@@ -172,7 +176,7 @@
when(userManager.isUserUnlocked(any(UserHandle.class))).thenReturn(true);
when(userManager.hasUserRestriction(any(String.class), any(UserHandle.class)))
.thenReturn(false);
- when(userManager.getUsers(any(Boolean.class)))
+ when(userManager.getAliveUsers())
.thenReturn(Arrays.asList(userInfo, otherUserInfo, managedProfileUserInfo));
when(userManager.getUserInfo(eq(CURRENT_USER_ID))).thenReturn(userInfo);
when(userManager.getUserInfo(eq(OTHER_USER_ID))).thenReturn(otherUserInfo);
@@ -819,6 +823,54 @@
@SmallTest
@Test
+ public void testCallComposerElements() {
+ Call fakeCall = makeFakeCall(
+ DisconnectCause.LOCAL, // disconnectCauseCode
+ false, // isConference
+ true, // isIncoming
+ 1L, // creationTimeMillis
+ 1000L, // ageMillis
+ TEL_PHONEHANDLE, // callHandle
+ mDefaultAccountHandle, // phoneAccountHandle
+ NO_VIDEO_STATE, // callVideoState
+ POST_DIAL_STRING, // postDialDigits
+ VIA_NUMBER_STRING, // viaNumber
+ UserHandle.of(CURRENT_USER_ID)
+ );
+ String subject = "segmentation fault";
+ // =)
+ double lat = 40.649723;
+ double lon = -80.082090;
+ Location location = new Location("");
+ location.setLatitude(lat);
+ location.setLongitude(lon);
+
+ Uri fakeProviderUri = Uri.parse("content://nothing_to_see_here/12345");
+
+ Bundle extras = new Bundle();
+ extras.putInt(TelecomManager.EXTRA_PRIORITY, TelecomManager.PRIORITY_URGENT);
+ extras.putString(TelecomManager.EXTRA_CALL_SUBJECT, subject);
+ extras.putParcelable(TelecomManager.EXTRA_LOCATION, location);
+ extras.putParcelable(TelecomManager.EXTRA_PICTURE_URI, fakeProviderUri);
+ when(fakeCall.getIntentExtras()).thenReturn(extras);
+
+ mCallLogManager.onCallStateChanged(fakeCall, CallState.ACTIVE,
+ CallState.DISCONNECTED);
+ ContentValues locationValues = verifyLocationInsertionWithCapture(CURRENT_USER_ID);
+ assertEquals(lat, locationValues.getAsDouble(CallLog.Locations.LATITUDE), 0);
+ assertEquals(lon, locationValues.getAsDouble(CallLog.Locations.LONGITUDE), 0);
+
+ ContentValues callLogValues = verifyInsertionWithCapture(CURRENT_USER_ID);
+ assertEquals(subject, callLogValues.getAsString(Calls.SUBJECT));
+ assertEquals(fakeProviderUri.toString(),
+ callLogValues.getAsString(Calls.COMPOSER_PHOTO_URI));
+ assertEquals(TelecomManager.PRIORITY_URGENT,
+ (int) callLogValues.getAsInteger(Calls.PRIORITY));
+ assertNotNull(callLogValues.getAsString(Calls.LOCATION));
+ }
+
+ @SmallTest
+ @Test
public void testDoNotLogConferenceWithNoChildren() {
Call fakeCall = makeFakeCall(
DisconnectCause.LOCAL, // disconnectCauseCode
@@ -976,6 +1028,14 @@
return captor.getValue();
}
+ private ContentValues verifyLocationInsertionWithCapture(int userId) {
+ Uri uri = ContentProvider.maybeAddUserId(CallLog.Locations.CONTENT_URI, userId);
+ ArgumentCaptor<ContentValues> captor = ArgumentCaptor.forClass(ContentValues.class);
+ verify(mContentProvider, timeout(TEST_TIMEOUT_MILLIS).times(1)).insert(
+ eq(uri), captor.capture());
+ return captor.getValue();
+ }
+
private Call makeFakeCall(int disconnectCauseCode, boolean isConference, boolean isIncoming,
long creationTimeMillis, long ageMillis, Uri callHandle,
PhoneAccountHandle phoneAccountHandle, int callVideoState,
diff --git a/tests/src/com/android/server/telecom/tests/CallRedirectionProcessorTest.java b/tests/src/com/android/server/telecom/tests/CallRedirectionProcessorTest.java
index ff16880..0a896a8 100644
--- a/tests/src/com/android/server/telecom/tests/CallRedirectionProcessorTest.java
+++ b/tests/src/com/android/server/telecom/tests/CallRedirectionProcessorTest.java
@@ -65,8 +65,6 @@
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
-import java.util.ArrayList;
-
@RunWith(JUnit4.class)
public class CallRedirectionProcessorTest extends TelecomTestCase {
@Mock private Context mContext;
@@ -151,7 +149,7 @@
}
private void setIsInCarMode(boolean isInCarMode) {
- when(mSystemStateHelper.isCarMode()).thenReturn(isInCarMode);
+ when(mSystemStateHelper.isCarModeOrProjectionActive()).thenReturn(isInCarMode);
}
private void enableUserDefinedCallRedirectionService() {
diff --git a/tests/src/com/android/server/telecom/tests/CallScreeningServiceFilterTest.java b/tests/src/com/android/server/telecom/tests/CallScreeningServiceFilterTest.java
index c7b3a7e..68caf67 100644
--- a/tests/src/com/android/server/telecom/tests/CallScreeningServiceFilterTest.java
+++ b/tests/src/com/android/server/telecom/tests/CallScreeningServiceFilterTest.java
@@ -93,6 +93,16 @@
.setShouldShowNotification(true)
.build();
+ private static final CallFilteringResult PASS_RESULT_WITH_NAME =
+ new CallFilteringResult.Builder()
+ .setShouldAllowCall(true)
+ .setShouldReject(false)
+ .setShouldAddToCallLog(true)
+ .setShouldShowNotification(true)
+ .setCallScreeningAppName(APP_NAME)
+ .setCallScreeningComponentName(COMPONENT_NAME.flattenToString())
+ .build();
+
@Override
@Before
public void setUp() throws Exception {
@@ -235,8 +245,14 @@
serviceConnection.onServiceConnected(COMPONENT_NAME, mBinder);
ICallScreeningAdapter csAdapter = getCallScreeningAdapter();
- csAdapter.allowCall(CALL_ID);
- assertEquals(PASS_RESULT,
+ CallScreeningService.CallResponse allowCallResponse =
+ new CallScreeningService.CallResponse.Builder()
+ .setDisallowCall(false)
+ .setRejectCall(false)
+ .setSilenceCall(false)
+ .build();
+ csAdapter.onScreeningResponse(CALL_ID, COMPONENT_NAME, allowCallResponse.toParcelable());
+ assertEquals(PASS_RESULT_WITH_NAME,
resultFuture.toCompletableFuture().get(
CallScreeningServiceFilter.CALL_SCREENING_FILTER_TIMEOUT,
TimeUnit.MILLISECONDS));
@@ -264,12 +280,16 @@
ServiceConnection serviceConnection = verifyBindingIntent();
serviceConnection.onServiceConnected(COMPONENT_NAME, mBinder);
+ CallScreeningService.CallResponse disallowCallResponse =
+ new CallScreeningService.CallResponse.Builder()
+ .setDisallowCall(true)
+ .setRejectCall(true)
+ .setSkipCallLog(false)
+ .setSkipNotification(false)
+ .build();
ICallScreeningAdapter csAdapter = getCallScreeningAdapter();
- csAdapter.disallowCall(CALL_ID,
- true, // shouldReject
- true, //shouldAddToCallLog
- true, // shouldShowNotification
- COMPONENT_NAME);
+ csAdapter.onScreeningResponse(CALL_ID, COMPONENT_NAME, disallowCallResponse.toParcelable());
+
assertEquals(expectedResult,
resultFuture.toCompletableFuture().get(
CallScreeningServiceFilter.CALL_SCREENING_FILTER_TIMEOUT,
@@ -286,6 +306,8 @@
.setShouldSilence(true)
.setShouldAddToCallLog(true)
.setShouldShowNotification(true)
+ .setCallScreeningAppName(APP_NAME)
+ .setCallScreeningComponentName(COMPONENT_NAME.flattenToString())
.build();
CallScreeningServiceFilter filter = new CallScreeningServiceFilter(mCall, PKG_NAME,
CallScreeningServiceFilter.PACKAGE_TYPE_CARRIER, mContext, mCallsManager,
@@ -296,7 +318,13 @@
serviceConnection.onServiceConnected(COMPONENT_NAME, mBinder);
ICallScreeningAdapter csAdapter = getCallScreeningAdapter();
- csAdapter.silenceCall(CALL_ID);
+ CallScreeningService.CallResponse silenceCallResponse =
+ new CallScreeningService.CallResponse.Builder()
+ .setDisallowCall(false)
+ .setRejectCall(false)
+ .setSilenceCall(true)
+ .build();
+ csAdapter.onScreeningResponse(CALL_ID, COMPONENT_NAME, silenceCallResponse.toParcelable());
assertEquals(expectedResult,
resultFuture.toCompletableFuture().get(
CallScreeningServiceFilter.CALL_SCREENING_FILTER_TIMEOUT,
@@ -314,6 +342,7 @@
.setShouldSilence(false)
.setShouldScreenViaAudio(true)
.setCallScreeningAppName(APP_NAME)
+ .setCallScreeningComponentName(COMPONENT_NAME.flattenToString())
.build();
CallScreeningServiceFilter filter = new CallScreeningServiceFilter(mCall, PKG_NAME,
CallScreeningServiceFilter.PACKAGE_TYPE_DEFAULT_DIALER, mContext, mCallsManager,
@@ -323,8 +352,17 @@
ServiceConnection serviceConnection = verifyBindingIntent();
serviceConnection.onServiceConnected(COMPONENT_NAME, mBinder);
+
+ CallScreeningService.CallResponse additionalScreeningResponse =
+ new CallScreeningService.CallResponse.Builder()
+ .setDisallowCall(false)
+ .setRejectCall(false)
+ .setSilenceCall(false)
+ .setShouldScreenCallViaAudioProcessing(true)
+ .build();
ICallScreeningAdapter csAdapter = getCallScreeningAdapter();
- csAdapter.screenCallFurther(CALL_ID);
+ csAdapter.onScreeningResponse(CALL_ID, COMPONENT_NAME,
+ additionalScreeningResponse.toParcelable());
assertEquals(expectedResult,
resultFuture.toCompletableFuture().get(
CallScreeningServiceFilter.CALL_SCREENING_FILTER_TIMEOUT,
diff --git a/tests/src/com/android/server/telecom/tests/CarModeTrackerTest.java b/tests/src/com/android/server/telecom/tests/CarModeTrackerTest.java
index dbfcdb1..4ad46ae 100644
--- a/tests/src/com/android/server/telecom/tests/CarModeTrackerTest.java
+++ b/tests/src/com/android/server/telecom/tests/CarModeTrackerTest.java
@@ -21,9 +21,6 @@
import static junit.framework.Assert.assertTrue;
import static junit.framework.TestCase.assertNull;
-import static org.mockito.ArgumentMatchers.anyString;
-import static org.mockito.Mockito.when;
-
import android.app.UiModeManager;
import com.android.server.telecom.CarModeTracker;
@@ -33,7 +30,6 @@
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
-import org.mockito.Mock;
@RunWith(JUnit4.class)
public class CarModeTrackerTest extends TelecomTestCase {
@@ -110,7 +106,7 @@
@Test
public void testForceExitCarMode() {
testEnterCarModeBasic();
- mCarModeTracker.forceExitCarMode(CAR_MODE_APP1_PACKAGE_NAME);
+ mCarModeTracker.forceRemove(CAR_MODE_APP1_PACKAGE_NAME);
assertFalse(mCarModeTracker.isInCarMode());
assertNull(mCarModeTracker.getCurrentCarModePackage());
}
@@ -226,4 +222,109 @@
CAR_MODE_APP3_PACKAGE_NAME);
assertNull(mCarModeTracker.getCurrentCarModePackage());
}
+
+ /**
+ * Verifies that setting automotive projection by itself works.
+ */
+ @Test
+ public void testSetAutomotiveProjectionBasic() {
+ mCarModeTracker.handleSetAutomotiveProjection(CAR_MODE_APP1_PACKAGE_NAME);
+ assertEquals(CAR_MODE_APP1_PACKAGE_NAME, mCarModeTracker.getCurrentCarModePackage());
+ // We should be tracking our car mode app.
+ assertEquals(1, mCarModeTracker.getCarModeApps().size());
+ assertTrue(mCarModeTracker.isInCarMode());
+ }
+
+ /**
+ * Verifies that if we set automotive projection more than once with the same package, nothing
+ * changes.
+ */
+ @Test
+ public void testSetAutomotiveProjectionMultipleTimes() {
+ mCarModeTracker.handleSetAutomotiveProjection(CAR_MODE_APP1_PACKAGE_NAME);
+ mCarModeTracker.handleSetAutomotiveProjection(CAR_MODE_APP1_PACKAGE_NAME);
+ // Should still only have one app.
+ assertEquals(1, mCarModeTracker.getCarModeApps().size());
+ assertTrue(mCarModeTracker.isInCarMode());
+ // It should be the same one.
+ assertEquals(CAR_MODE_APP1_PACKAGE_NAME, mCarModeTracker.getCurrentCarModePackage());
+ }
+
+ /**
+ * Verifies that if we set automotive projection more than once, the new package overrides.
+ */
+ @Test
+ public void testSetAutomotiveProjectionMultipleTimesDifferentPackages() {
+ mCarModeTracker.handleSetAutomotiveProjection(CAR_MODE_APP1_PACKAGE_NAME);
+ mCarModeTracker.handleSetAutomotiveProjection(CAR_MODE_APP2_PACKAGE_NAME);
+ // Should still only have one app.
+ assertEquals(1, mCarModeTracker.getCarModeApps().size());
+ assertTrue(mCarModeTracker.isInCarMode());
+ // It should be the newer one.
+ assertEquals(CAR_MODE_APP2_PACKAGE_NAME, mCarModeTracker.getCurrentCarModePackage());
+ }
+
+ /**
+ * Verifies that releasing automotive projection works as expected.
+ */
+ @Test
+ public void testReleaseAutomotiveProjectionBasic() {
+ // Releasing before something's set shouldn't break anything.
+ mCarModeTracker.handleReleaseAutomotiveProjection();
+ assertEquals(0, mCarModeTracker.getCarModeApps().size());
+ assertFalse(mCarModeTracker.isInCarMode());
+
+ mCarModeTracker.handleSetAutomotiveProjection(CAR_MODE_APP1_PACKAGE_NAME);
+ mCarModeTracker.handleReleaseAutomotiveProjection();
+ // Should be gone now.
+ assertEquals(0, mCarModeTracker.getCarModeApps().size());
+ assertFalse(mCarModeTracker.isInCarMode());
+ }
+
+ /**
+ * Verifies that setting automotive projection overrides but doesn't overwrite car mode apps.
+ */
+ @Test
+ public void testAutomotiveProjectionOverridesCarMode() {
+ mCarModeTracker.handleEnterCarMode(50, CAR_MODE_APP1_PACKAGE_NAME);
+ mCarModeTracker.handleSetAutomotiveProjection(CAR_MODE_APP4_PACKAGE_NAME);
+
+ // Should have two apps now, the car mode and the automotive projection one.
+ assertEquals(2, mCarModeTracker.getCarModeApps().size());
+ assertTrue(mCarModeTracker.isInCarMode());
+
+ // Automotive projection takes priority.
+ assertEquals(CAR_MODE_APP4_PACKAGE_NAME, mCarModeTracker.getCurrentCarModePackage());
+
+ // If we add another car mode app, automotive projection still has priority.
+ mCarModeTracker.handleEnterCarMode(Integer.MAX_VALUE, CAR_MODE_APP2_PACKAGE_NAME);
+ assertEquals(3, mCarModeTracker.getCarModeApps().size());
+ assertTrue(mCarModeTracker.isInCarMode());
+ assertEquals(CAR_MODE_APP4_PACKAGE_NAME, mCarModeTracker.getCurrentCarModePackage());
+
+ // If we release automotive projection, we go back to the prioritized list of plain car
+ // mode apps.
+ mCarModeTracker.handleReleaseAutomotiveProjection();
+ assertEquals(2, mCarModeTracker.getCarModeApps().size());
+ assertTrue(mCarModeTracker.isInCarMode());
+ assertEquals(CAR_MODE_APP2_PACKAGE_NAME, mCarModeTracker.getCurrentCarModePackage());
+
+ // Make sure we didn't mess with the first app that was added.
+ mCarModeTracker.handleExitCarMode(Integer.MAX_VALUE, CAR_MODE_APP2_PACKAGE_NAME);
+ assertEquals(1, mCarModeTracker.getCarModeApps().size());
+ assertTrue(mCarModeTracker.isInCarMode());
+ assertEquals(CAR_MODE_APP1_PACKAGE_NAME, mCarModeTracker.getCurrentCarModePackage());
+ }
+
+ /**
+ * Verifies that releasing automotive projection doesn't interfere with plain car mode apps.
+ */
+ @Test
+ public void testReleaseAutomotiveProjectionNoopForCarModeApps() {
+ mCarModeTracker.handleEnterCarMode(50, CAR_MODE_APP1_PACKAGE_NAME);
+ mCarModeTracker.handleReleaseAutomotiveProjection();
+ assertEquals(1, mCarModeTracker.getCarModeApps().size());
+ assertTrue(mCarModeTracker.isInCarMode());
+ assertEquals(CAR_MODE_APP1_PACKAGE_NAME, mCarModeTracker.getCurrentCarModePackage());
+ }
}
diff --git a/tests/src/com/android/server/telecom/tests/ComponentContextFixture.java b/tests/src/com/android/server/telecom/tests/ComponentContextFixture.java
index a4302b6..1b15039 100644
--- a/tests/src/com/android/server/telecom/tests/ComponentContextFixture.java
+++ b/tests/src/com/android/server/telecom/tests/ComponentContextFixture.java
@@ -30,6 +30,7 @@
import android.app.AppOpsManager;
import android.app.NotificationManager;
import android.app.StatusBarManager;
+import android.app.UiModeManager;
import android.app.role.RoleManager;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
@@ -57,6 +58,7 @@
import android.os.PowerWhitelistManager;
import android.os.UserHandle;
import android.os.UserManager;
+import android.os.VibratorManager;
import android.telecom.CallAudioState;
import android.telecom.ConnectionService;
import android.telecom.Log;
@@ -68,6 +70,7 @@
import android.telephony.TelephonyManager;
import android.telephony.TelephonyRegistryManager;
import android.test.mock.MockContext;
+import android.util.DisplayMetrics;
import java.io.File;
import java.io.IOException;
@@ -206,6 +209,10 @@
return mRoleManager;
case Context.TELEPHONY_REGISTRY_SERVICE:
return mTelephonyRegistryManager;
+ case Context.UI_MODE_SERVICE:
+ return mUiModeManager;
+ case Context.VIBRATOR_MANAGER_SERVICE:
+ return mVibratorManager;
default:
return null;
}
@@ -227,6 +234,10 @@
return Context.TELEPHONY_SUBSCRIPTION_SERVICE;
} else if (svcClass == TelephonyRegistryManager.class) {
return Context.TELEPHONY_REGISTRY_SERVICE;
+ } else if (svcClass == UiModeManager.class) {
+ return Context.UI_MODE_SERVICE;
+ } else if (svcClass == VibratorManager.class) {
+ return Context.VIBRATOR_MANAGER_SERVICE;
}
throw new UnsupportedOperationException();
}
@@ -469,6 +480,7 @@
private final Resources.Theme mResourcesTheme = mock(Resources.Theme.class);
private final Resources mResources = mock(Resources.class);
private final Context mApplicationContextSpy = spy(mApplicationContext);
+ private final DisplayMetrics mDisplayMetrics = mock(DisplayMetrics.class);
private final PackageManager mPackageManager = mock(PackageManager.class);
private final Executor mMainExecutor = mock(Executor.class);
private final AudioManager mAudioManager = spy(new FakeAudioManager(mContext));
@@ -486,6 +498,8 @@
private final RoleManager mRoleManager = mock(RoleManager.class);
private final TelephonyRegistryManager mTelephonyRegistryManager =
mock(TelephonyRegistryManager.class);
+ private final VibratorManager mVibratorManager = mock(VibratorManager.class);
+ private final UiModeManager mUiModeManager = mock(UiModeManager.class);
private final PermissionInfo mPermissionInfo = mock(PermissionInfo.class);
private TelecomManager mTelecomManager = mock(TelecomManager.class);
@@ -495,6 +509,9 @@
when(mResources.getConfiguration()).thenReturn(mResourceConfiguration);
when(mResources.getString(anyInt())).thenReturn("");
when(mResources.getStringArray(anyInt())).thenReturn(new String[0]);
+ when(mResources.newTheme()).thenReturn(mResourcesTheme);
+ when(mResources.getDisplayMetrics()).thenReturn(mDisplayMetrics);
+ mDisplayMetrics.density = 3.125f;
mResourceConfiguration.setLocale(Locale.TAIWAN);
// TODO: Move into actual tests
@@ -548,6 +565,7 @@
}
when(mPermissionInfo.isAppOp()).thenReturn(true);
+ when(mVibratorManager.getVibratorIds()).thenReturn(new int[0]);
// Used in CreateConnectionProcessor to rank emergency numbers by viability.
// For the test, make them all equal to INVALID so that the preferred PhoneAccount will be
diff --git a/tests/src/com/android/server/telecom/tests/ConnectionServiceFixture.java b/tests/src/com/android/server/telecom/tests/ConnectionServiceFixture.java
index 5b4e800..6e6646f 100755
--- a/tests/src/com/android/server/telecom/tests/ConnectionServiceFixture.java
+++ b/tests/src/com/android/server/telecom/tests/ConnectionServiceFixture.java
@@ -34,6 +34,7 @@
import android.os.ParcelFileDescriptor;
import android.os.RemoteException;
import android.telecom.CallAudioState;
+import android.telecom.CallScreeningService;
import android.telecom.Conference;
import android.telecom.Connection;
import android.telecom.ConnectionRequest;
@@ -437,6 +438,10 @@
@Override
public void handoverComplete(String callId, Session.Info sessionInfo) {}
+
+ @Override
+ public void onCallFilteringCompleted(String callId,
+ Connection.CallFilteringCompletionInfo completionInfo, Session.Info sessionInfo) { }
}
FakeConnectionServiceDelegate mConnectionServiceDelegate;
diff --git a/tests/src/com/android/server/telecom/tests/InCallControllerTests.java b/tests/src/com/android/server/telecom/tests/InCallControllerTests.java
index 0b926fe..8ae823e 100644
--- a/tests/src/com/android/server/telecom/tests/InCallControllerTests.java
+++ b/tests/src/com/android/server/telecom/tests/InCallControllerTests.java
@@ -243,14 +243,53 @@
when(mMockCallsManager.getCurrentUserHandle()).thenReturn(mUserHandle);
when(mMockContext.getPackageManager()).thenReturn(mMockPackageManager);
- when(mMockSystemStateHelper.isCarMode()).thenReturn(true);
+ when(mMockSystemStateHelper.isCarModeOrProjectionActive()).thenReturn(true);
mSystemStateListener.onCarModeChanged(666, CAR_PKG, true);
verify(mCarModeTracker).handleEnterCarMode(666, CAR_PKG);
assertTrue(mCarModeTracker.isInCarMode());
mSystemStateListener.onPackageUninstalled(CAR_PKG);
- verify(mCarModeTracker).forceExitCarMode(CAR_PKG);
+ verify(mCarModeTracker).forceRemove(CAR_PKG);
+ assertFalse(mCarModeTracker.isInCarMode());
+ }
+
+ /**
+ * Ensure that if we remove a random unrelated app we don't exit car mode.
+ */
+ @SmallTest
+ @Test
+ public void testRandomAppRemovalInCarMode() {
+ setupMockPackageManager(true /* default */, true /* system */, true /* external calls */);
+ when(mMockCallsManager.getCurrentUserHandle()).thenReturn(mUserHandle);
+ when(mMockContext.getPackageManager()).thenReturn(mMockPackageManager);
+
+ when(mMockSystemStateHelper.isCarModeOrProjectionActive()).thenReturn(true);
+
+ mSystemStateListener.onCarModeChanged(666, CAR_PKG, true);
+ verify(mCarModeTracker).handleEnterCarMode(666, CAR_PKG);
+ assertTrue(mCarModeTracker.isInCarMode());
+
+ mSystemStateListener.onPackageUninstalled("com.foo.test");
+ verify(mCarModeTracker, never()).forceRemove(CAR_PKG);
+ assertTrue(mCarModeTracker.isInCarMode());
+ }
+
+ @SmallTest
+ @Test
+ public void testAutomotiveProjectionAppRemoval() {
+ setupMockPackageManager(true /* default */, true /* system */, true /* external calls */);
+ when(mMockCallsManager.getCurrentUserHandle()).thenReturn(mUserHandle);
+ when(mMockContext.getPackageManager()).thenReturn(mMockPackageManager);
+
+ when(mMockSystemStateHelper.isCarModeOrProjectionActive()).thenReturn(true);
+
+ mSystemStateListener.onAutomotiveProjectionStateSet(CAR_PKG);
+ verify(mCarModeTracker).handleSetAutomotiveProjection(CAR_PKG);
+ assertTrue(mCarModeTracker.isInCarMode());
+
+ mSystemStateListener.onPackageUninstalled(CAR_PKG);
+ verify(mCarModeTracker).forceRemove(CAR_PKG);
assertFalse(mCarModeTracker.isInCarMode());
}
@@ -786,7 +825,7 @@
setupMockPackageManager(true /* default */, true /* system */, true /* external calls */);
// Enable car mode
- when(mMockSystemStateHelper.isCarMode()).thenReturn(true);
+ when(mMockSystemStateHelper.isCarModeOrProjectionActive()).thenReturn(true);
mInCallController.handleCarModeChange(UiModeManager.DEFAULT_PRIORITY, CAR_PKG, true);
// Now bind; we should only bind to one app.
@@ -816,7 +855,7 @@
matches(Manifest.permission.CONTROL_INCALL_EXPERIENCE),
matches(CAR_PKG))).thenReturn(PackageManager.PERMISSION_DENIED);
// Enable car mode
- when(mMockSystemStateHelper.isCarMode()).thenReturn(true);
+ when(mMockSystemStateHelper.isCarModeOrProjectionActive()).thenReturn(true);
// Register the fact that the invalid app entered car mode.
mInCallController.handleCarModeChange(UiModeManager.DEFAULT_PRIORITY, CAR_PKG, true);
@@ -951,6 +990,31 @@
*/
@MediumTest
@Test
+ public void testRandomAppRemovalWhenNotInCarMode() throws Exception {
+ setupMocks(true /* isExternalCall */);
+ setupMockPackageManager(true /* default */, true /* system */, true /* external calls */);
+ // Bind to default dialer.
+ mInCallController.bindToServices(mMockCall);
+
+ // Uninstall an unrelated app.
+ mSystemStateListener.onPackageUninstalled("com.joe.stuff");
+
+ // Bind InCallServices, just once; we should not re-bind to the same app.
+ ArgumentCaptor<Intent> bindIntentCaptor = ArgumentCaptor.forClass(Intent.class);
+ verify(mMockContext).bindServiceAsUser(
+ bindIntentCaptor.capture(),
+ any(ServiceConnection.class),
+ eq(Context.BIND_AUTO_CREATE | Context.BIND_FOREGROUND_SERVICE
+ | Context.BIND_ALLOW_BACKGROUND_ACTIVITY_STARTS),
+ eq(UserHandle.CURRENT));
+ }
+
+ /**
+ * Ensures that the {@link InCallController} will bind to a higher priority car mode service
+ * when one becomes available.
+ */
+ @MediumTest
+ @Test
public void testCarmodeRebindHigherPriority() throws Exception {
setupMocks(true /* isExternalCall */);
setupMockPackageManager(true /* default */, true /* system */, true /* external calls */);
@@ -958,7 +1022,7 @@
mInCallController.bindToServices(mMockCall);
// Enable car mode and enter car mode at default priority.
- when(mMockSystemStateHelper.isCarMode()).thenReturn(true);
+ when(mMockSystemStateHelper.isCarModeOrProjectionActive()).thenReturn(true);
mInCallController.handleCarModeChange(UiModeManager.DEFAULT_PRIORITY, CAR_PKG, true);
// And change to the second car mode app.
@@ -1105,7 +1169,7 @@
// Now switch to car mode.
// Enable car mode and enter car mode at default priority.
- when(mMockSystemStateHelper.isCarMode()).thenReturn(true);
+ when(mMockSystemStateHelper.isCarModeOrProjectionActive()).thenReturn(true);
mInCallController.handleCarModeChange(UiModeManager.DEFAULT_PRIORITY, CAR_PKG, true);
ArgumentCaptor<Intent> bindIntentCaptor = ArgumentCaptor.forClass(Intent.class);
@@ -1145,7 +1209,7 @@
// Now switch to car mode.
// Enable car mode and enter car mode at default priority.
- when(mMockSystemStateHelper.isCarMode()).thenReturn(true);
+ when(mMockSystemStateHelper.isCarModeOrProjectionActive()).thenReturn(true);
mInCallController.handleCarModeChange(UiModeManager.DEFAULT_PRIORITY, CAR_PKG, true);
// We currently will bind to the car-mode InCallService even if there are no calls available
@@ -1379,6 +1443,28 @@
}
}).when(mMockPackageManager).queryIntentServicesAsUser(
any(Intent.class), anyInt(), eq(CURRENT_USER_ID));
+
+ if (useDefaultDialer) {
+ when(mMockPackageManager
+ .getComponentEnabledSetting(new ComponentName(DEF_PKG, DEF_CLASS)))
+ .thenReturn(PackageManager.COMPONENT_ENABLED_STATE_ENABLED);
+ }
+
+ when(mMockPackageManager
+ .getComponentEnabledSetting(new ComponentName(SYS_PKG, SYS_CLASS)))
+ .thenReturn(PackageManager.COMPONENT_ENABLED_STATE_ENABLED);
+
+ when(mMockPackageManager
+ .getComponentEnabledSetting(new ComponentName(CAR_PKG, CAR_CLASS)))
+ .thenReturn(PackageManager.COMPONENT_ENABLED_STATE_ENABLED);
+
+ when(mMockPackageManager
+ .getComponentEnabledSetting(new ComponentName(COMPANION_PKG, COMPANION_CLASS)))
+ .thenReturn(PackageManager.COMPONENT_ENABLED_STATE_ENABLED);
+
+ when(mMockPackageManager
+ .getComponentEnabledSetting(new ComponentName(CAR2_PKG, CAR2_CLASS)))
+ .thenReturn(PackageManager.COMPONENT_ENABLED_STATE_ENABLED);
}
private void setupMockPackageManagerLocationPermission(final String pkg,
diff --git a/tests/src/com/android/server/telecom/tests/MissedCallNotifierImplTest.java b/tests/src/com/android/server/telecom/tests/MissedCallNotifierImplTest.java
index db44dcd..2c3a6fc 100644
--- a/tests/src/com/android/server/telecom/tests/MissedCallNotifierImplTest.java
+++ b/tests/src/com/android/server/telecom/tests/MissedCallNotifierImplTest.java
@@ -611,7 +611,7 @@
assertNotNull("Not expecting null options bundle", bundleCaptor.getValue());
BroadcastOptions options = new BroadcastOptions(bundleCaptor.getValue());
assertTrue("App must have a temporary exemption set.",
- options.getTemporaryAppWhitelistDuration() > 0);
+ options.getTemporaryAppAllowlistDuration() > 0);
// A notification should never be posted by Telecom
verify(mNotificationManager, never()).notifyAsUser(nullable(String.class), anyInt(),
diff --git a/tests/src/com/android/server/telecom/tests/NewOutgoingCallIntentBroadcasterTest.java b/tests/src/com/android/server/telecom/tests/NewOutgoingCallIntentBroadcasterTest.java
index a5b78b7..e6c6bac 100644
--- a/tests/src/com/android/server/telecom/tests/NewOutgoingCallIntentBroadcasterTest.java
+++ b/tests/src/com/android/server/telecom/tests/NewOutgoingCallIntentBroadcasterTest.java
@@ -110,7 +110,7 @@
when(mPhoneAccountRegistrar.getPhoneAccountUnchecked(
any(PhoneAccountHandle.class))).thenReturn(mPhoneAccount);
when(mPhoneAccount.isSelfManaged()).thenReturn(true);
- when(mSystemStateHelper.isCarMode()).thenReturn(false);
+ when(mSystemStateHelper.isCarModeOrProjectionActive()).thenReturn(false);
}
@Override
diff --git a/tests/src/com/android/server/telecom/tests/ParcelableCallUtilsTest.java b/tests/src/com/android/server/telecom/tests/ParcelableCallUtilsTest.java
index 6c941fe..a503283 100644
--- a/tests/src/com/android/server/telecom/tests/ParcelableCallUtilsTest.java
+++ b/tests/src/com/android/server/telecom/tests/ParcelableCallUtilsTest.java
@@ -1,13 +1,12 @@
package com.android.server.telecom.tests;
-import static com.android.server.telecom.TelecomSystem.*;
+import static com.android.server.telecom.TelecomSystem.SyncRoot;
import static junit.framework.Assert.assertEquals;
import static junit.framework.Assert.assertFalse;
import static junit.framework.Assert.assertTrue;
import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.when;
import android.content.ComponentName;
@@ -17,6 +16,7 @@
import android.telecom.Connection;
import android.telecom.ParcelableCall;
import android.telecom.PhoneAccountHandle;
+import android.telephony.ims.ImsCallProfile;
import android.test.suitebuilder.annotation.SmallTest;
import com.android.server.telecom.Call;
@@ -26,7 +26,6 @@
import com.android.server.telecom.ParcelableCallUtils;
import com.android.server.telecom.PhoneAccountRegistrar;
import com.android.server.telecom.PhoneNumberUtilsAdapter;
-import com.android.server.telecom.TelecomSystem;
import com.android.server.telecom.ui.ToastFactory;
import org.junit.After;
@@ -98,6 +97,7 @@
Bundle parceledExtras = call.getExtras();
assertFalse(parceledExtras.containsKey(Connection.EXTRA_SIP_INVITE));
+ assertTrue(parceledExtras.containsKey(ImsCallProfile.EXTRA_IS_BUSINESS_CALL));
assertFalse(parceledExtras.containsKey("SomeExtra"));
assertTrue(parceledExtras.containsKey(Connection.EXTRA_CALL_SUBJECT));
}
@@ -115,6 +115,7 @@
Bundle parceledExtras = call.getExtras();
assertTrue(parceledExtras.containsKey(Connection.EXTRA_SIP_INVITE));
+ assertTrue(parceledExtras.containsKey(ImsCallProfile.EXTRA_IS_BUSINESS_CALL));
assertTrue(parceledExtras.containsKey("SomeExtra"));
assertTrue(parceledExtras.containsKey(Connection.EXTRA_CALL_SUBJECT));
}
@@ -128,6 +129,7 @@
Bundle parceledExtras = call.getExtras();
assertTrue(parceledExtras.containsKey(Connection.EXTRA_SIP_INVITE));
+ assertTrue(parceledExtras.containsKey(ImsCallProfile.EXTRA_IS_BUSINESS_CALL));
assertFalse(parceledExtras.containsKey("SomeExtra"));
assertFalse(parceledExtras.containsKey(Connection.EXTRA_CALL_SUBJECT));
}
@@ -141,6 +143,7 @@
Bundle parceledExtras = call.getExtras();
assertFalse(parceledExtras.containsKey(Connection.EXTRA_SIP_INVITE));
+ assertFalse(parceledExtras.containsKey(ImsCallProfile.EXTRA_IS_BUSINESS_CALL));
assertFalse(parceledExtras.containsKey("SomeExtra"));
assertFalse(parceledExtras.containsKey(Connection.EXTRA_CALL_SUBJECT));
}
@@ -192,6 +195,7 @@
extras.putString(Connection.EXTRA_SIP_INVITE, "scary data");
extras.putString("SomeExtra", "Extra Extra");
extras.putString(Connection.EXTRA_CALL_SUBJECT, "Blah");
+ extras.putBoolean(ImsCallProfile.EXTRA_IS_BUSINESS_CALL, true);
return extras;
}
}
diff --git a/tests/src/com/android/server/telecom/tests/RingerTest.java b/tests/src/com/android/server/telecom/tests/RingerTest.java
index 38f63d2..0e93481 100644
--- a/tests/src/com/android/server/telecom/tests/RingerTest.java
+++ b/tests/src/com/android/server/telecom/tests/RingerTest.java
@@ -79,6 +79,16 @@
}
@Override
+ public VibrationEffect resolve(int defaultAmplitude) {
+ return this;
+ }
+
+ @Override
+ public VibrationEffect scale(float scaleFactor) {
+ return this;
+ }
+
+ @Override
public void validate() {
// not needed
}
diff --git a/tests/src/com/android/server/telecom/tests/SystemStateHelperTest.java b/tests/src/com/android/server/telecom/tests/SystemStateHelperTest.java
index 893ae3d..94b8463 100644
--- a/tests/src/com/android/server/telecom/tests/SystemStateHelperTest.java
+++ b/tests/src/com/android/server/telecom/tests/SystemStateHelperTest.java
@@ -48,6 +48,7 @@
import com.android.server.telecom.SystemStateHelper;
import com.android.server.telecom.SystemStateHelper.SystemStateListener;
+import com.android.server.telecom.TelecomSystem;
import org.junit.After;
import org.junit.Before;
@@ -60,6 +61,7 @@
import org.mockito.internal.util.reflection.FieldSetter;
import java.util.List;
+import java.util.Set;
import java.util.function.Predicate;
import java.util.stream.Collectors;
@@ -77,6 +79,7 @@
@Mock SensorManager mSensorManager;
@Mock Intent mIntentEnter;
@Mock Intent mIntentExit;
+ TelecomSystem.SyncRoot mLock = new TelecomSystem.SyncRoot() { };
@Override
@Before
@@ -91,6 +94,8 @@
when(mSensorManager.getDefaultSensor(Sensor.TYPE_GRAVITY)).thenReturn(mGravitySensor);
when(mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY)).thenReturn(mProxSensor);
+ doReturn(mUiModeManager).when(mContext).getSystemService(UiModeManager.class);
+
mComponentContextFixture.putFloatResource(
R.dimen.device_on_ear_xy_gravity_threshold, 5.5f);
mComponentContextFixture.putFloatResource(
@@ -106,7 +111,7 @@
@SmallTest
@Test
public void testListeners() throws Exception {
- SystemStateHelper systemStateHelper = new SystemStateHelper(mContext);
+ SystemStateHelper systemStateHelper = new SystemStateHelper(mContext, mLock);
assertFalse(systemStateHelper.removeListener(mSystemStateListener));
systemStateHelper.addListener(mSystemStateListener);
@@ -117,17 +122,53 @@
@SmallTest
@Test
public void testQuerySystemForCarMode_True() {
- when(mContext.getSystemService(Context.UI_MODE_SERVICE)).thenReturn(mUiModeManager);
when(mUiModeManager.getCurrentModeType()).thenReturn(Configuration.UI_MODE_TYPE_CAR);
- assertTrue(new SystemStateHelper(mContext).isCarMode());
+ assertTrue(new SystemStateHelper(mContext, mLock).isCarModeOrProjectionActive());
}
@SmallTest
@Test
public void testQuerySystemForCarMode_False() {
- when(mContext.getSystemService(Context.UI_MODE_SERVICE)).thenReturn(mUiModeManager);
when(mUiModeManager.getCurrentModeType()).thenReturn(Configuration.UI_MODE_TYPE_NORMAL);
- assertFalse(new SystemStateHelper(mContext).isCarMode());
+ assertFalse(new SystemStateHelper(mContext, mLock).isCarModeOrProjectionActive());
+ }
+
+ @SmallTest
+ @Test
+ public void testQuerySystemForAutomotiveProjection_True() {
+ when(mUiModeManager.getActiveProjectionTypes())
+ .thenReturn(UiModeManager.PROJECTION_TYPE_AUTOMOTIVE);
+ assertTrue(new SystemStateHelper(mContext, mLock).isCarModeOrProjectionActive());
+
+ when(mUiModeManager.getActiveProjectionTypes())
+ .thenReturn(UiModeManager.PROJECTION_TYPE_ALL);
+ assertTrue(new SystemStateHelper(mContext, mLock).isCarModeOrProjectionActive());
+ }
+
+ @SmallTest
+ @Test
+ public void testQuerySystemForAutomotiveProjection_False() {
+ when(mUiModeManager.getActiveProjectionTypes())
+ .thenReturn(UiModeManager.PROJECTION_TYPE_NONE);
+ assertFalse(new SystemStateHelper(mContext, mLock).isCarModeOrProjectionActive());
+ }
+
+ @SmallTest
+ @Test
+ public void testQuerySystemForAutomotiveProjectionAndCarMode_True() {
+ when(mUiModeManager.getCurrentModeType()).thenReturn(Configuration.UI_MODE_TYPE_CAR);
+ when(mUiModeManager.getActiveProjectionTypes())
+ .thenReturn(UiModeManager.PROJECTION_TYPE_AUTOMOTIVE);
+ assertTrue(new SystemStateHelper(mContext, mLock).isCarModeOrProjectionActive());
+ }
+
+ @SmallTest
+ @Test
+ public void testQuerySystemForAutomotiveProjectionOrCarMode_nullService() {
+ when(mContext.getSystemService(UiModeManager.class))
+ .thenReturn(mUiModeManager) // Without this, class construction will throw NPE.
+ .thenReturn(null);
+ assertFalse(new SystemStateHelper(mContext, mLock).isCarModeOrProjectionActive());
}
@SmallTest
@@ -135,7 +176,7 @@
public void testPackageRemoved() {
ArgumentCaptor<BroadcastReceiver> receiver =
ArgumentCaptor.forClass(BroadcastReceiver.class);
- new SystemStateHelper(mContext).addListener(mSystemStateListener);
+ new SystemStateHelper(mContext, mLock).addListener(mSystemStateListener);
verify(mContext, atLeastOnce())
.registerReceiver(receiver.capture(), any(IntentFilter.class));
Intent packageRemovedIntent = new Intent(Intent.ACTION_PACKAGE_REMOVED);
@@ -149,7 +190,7 @@
public void testReceiverAndIntentFilter() {
ArgumentCaptor<IntentFilter> intentFilterCaptor =
ArgumentCaptor.forClass(IntentFilter.class);
- new SystemStateHelper(mContext);
+ new SystemStateHelper(mContext, mLock);
verify(mContext, times(2)).registerReceiver(
any(BroadcastReceiver.class), intentFilterCaptor.capture());
@@ -186,7 +227,7 @@
public void testOnEnterExitCarMode() {
ArgumentCaptor<BroadcastReceiver> receiver =
ArgumentCaptor.forClass(BroadcastReceiver.class);
- new SystemStateHelper(mContext).addListener(mSystemStateListener);
+ new SystemStateHelper(mContext, mLock).addListener(mSystemStateListener);
verify(mContext, atLeastOnce())
.registerReceiver(receiver.capture(), any(IntentFilter.class));
@@ -204,6 +245,40 @@
@SmallTest
@Test
+ public void testOnSetReleaseAutomotiveProjection() {
+ SystemStateHelper systemStateHelper = new SystemStateHelper(mContext, mLock);
+ // We don't care what listener is registered, that's an implementation detail, but we need
+ // to call methods on whatever it is.
+ ArgumentCaptor<UiModeManager.OnProjectionStateChangeListener> listenerCaptor =
+ ArgumentCaptor.forClass(UiModeManager.OnProjectionStateChangeListener.class);
+ verify(mUiModeManager).addOnProjectionStateChangeListener(
+ eq(UiModeManager.PROJECTION_TYPE_AUTOMOTIVE), any(), listenerCaptor.capture());
+ systemStateHelper.addListener(mSystemStateListener);
+
+ String packageName1 = "Sufjan Stevens";
+ String packageName2 = "The Ascension";
+
+ // Should pay attention to automotive projection, though.
+ listenerCaptor.getValue().onProjectionStateChanged(
+ UiModeManager.PROJECTION_TYPE_AUTOMOTIVE, Set.of(packageName2));
+ verify(mSystemStateListener).onAutomotiveProjectionStateSet(packageName2);
+
+ // Without any automotive projection, it should see it as released.
+ listenerCaptor.getValue().onProjectionStateChanged(
+ UiModeManager.PROJECTION_TYPE_NONE, Set.of());
+ verify(mSystemStateListener).onAutomotiveProjectionStateReleased();
+
+ // Try the whole thing again, with different values.
+ listenerCaptor.getValue().onProjectionStateChanged(
+ UiModeManager.PROJECTION_TYPE_AUTOMOTIVE, Set.of(packageName1));
+ verify(mSystemStateListener).onAutomotiveProjectionStateSet(packageName1);
+ listenerCaptor.getValue().onProjectionStateChanged(
+ UiModeManager.PROJECTION_TYPE_AUTOMOTIVE, Set.of());
+ verify(mSystemStateListener, times(2)).onAutomotiveProjectionStateReleased();
+ }
+
+ @SmallTest
+ @Test
public void testDeviceOnEarCorrectlyDetected() {
doAnswer(invocation -> {
SensorEventListener listener = invocation.getArgument(0);