Merge Android R

Bug: 168057903
Merged-In: I6a389399d923fbb7853d99358d60a20dd85837d4
Change-Id: I1cb96400c470ba75d5667b7b9aee1f4c60354b4e
diff --git a/Android.bp b/Android.bp
index 50a41d0..0d89b00 100644
--- a/Android.bp
+++ b/Android.bp
@@ -1,8 +1,24 @@
+genrule {
+    name: "statslog-telecom-java-gen",
+    tools: ["stats-log-api-gen"],
+    cmd: "$(location stats-log-api-gen) --java $(out) --module telecom"
+        + " --javaPackage com.android.server.telecom --javaClass TelecomStatsLog",
+    out: ["com/android/server/telecom/TelecomStatsLog.java"],
+}
+
+filegroup {
+    name: "Telecom-srcs",
+    srcs: [
+        "src/**/*.java",
+        ":statslog-telecom-java-gen",
+    ],
+}
+
 // Build the Telecom service.
 android_app {
     name: "Telecom",
     srcs: [
-        "src/**/*.java",
+        ":Telecom-srcs",
         "proto/**/*.proto",
     ],
     resource_dirs: ["res"],
@@ -25,7 +41,7 @@
     static_libs: [
         "android-ex-camera2",
         "guava",
-        "mockito-target-inline",
+        "mockito-target-extended",
         "androidx.test.rules",
         "platform-test-annotations",
         "androidx.legacy_legacy-support-core-ui",
@@ -36,7 +52,7 @@
     ],
     srcs: [
         "tests/src/**/*.java",
-        "src/**/*.java",
+        ":Telecom-srcs",
         "proto/**/*.proto",
     ],
     proto: {
@@ -54,7 +70,10 @@
         "android.test.runner",
     ],
 
-    jni_libs: ["libdexmakerjvmtiagent"],
+    jni_libs: [
+        "libdexmakerjvmtiagent",
+        "libstaticjvmtiagent",
+    ],
 
     aaptflags: [
         "--auto-add-overlay",
diff --git a/res/raw/record.ogg b/res/raw/record.ogg
index a023e6d..732b42f 100644
--- a/res/raw/record.ogg
+++ b/res/raw/record.ogg
Binary files differ
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
index fe7e3d7..2857be3 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -31,8 +31,8 @@
     <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 29873e8..df8215c 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -31,8 +31,8 @@
     <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-ar/strings.xml b/res/values-ar/strings.xml
index e9e31ca..7e204d0 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -31,8 +31,8 @@
     <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-as/strings.xml b/res/values-as/strings.xml
index 690b289..2f5de68 100644
--- a/res/values-as/strings.xml
+++ b/res/values-as/strings.xml
@@ -31,8 +31,8 @@
     <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 4867691..d79343f 100644
--- a/res/values-az/strings.xml
+++ b/res/values-az/strings.xml
@@ -31,8 +31,8 @@
     <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 6f1d572..eba8c5c 100644
--- a/res/values-b+sr+Latn/strings.xml
+++ b/res/values-b+sr+Latn/strings.xml
@@ -31,8 +31,8 @@
     <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 6033b25..b6dd707 100644
--- a/res/values-be/strings.xml
+++ b/res/values-be/strings.xml
@@ -31,8 +31,8 @@
     <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-bg/strings.xml b/res/values-bg/strings.xml
index 14adb5f..7afddc2 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -31,8 +31,8 @@
     <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-bn/strings.xml b/res/values-bn/strings.xml
index f00b48c..cf04d40 100644
--- a/res/values-bn/strings.xml
+++ b/res/values-bn/strings.xml
@@ -31,8 +31,8 @@
     <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-bs/strings.xml b/res/values-bs/strings.xml
index dd0e1ad..1968357 100644
--- a/res/values-bs/strings.xml
+++ b/res/values-bs/strings.xml
@@ -31,8 +31,8 @@
     <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>
-    <string name="notification_crashedInCallService_body" msgid="7821729360036047995">"Došlo je do pada aplikacije za telefon <xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g>. Vaš poziv se nastavio putem aplikacije za telefon koju ste dobili uz uređaj."</string>
+    <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>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index e860191..69a7b6e 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -31,8 +31,8 @@
     <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>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index c0b9706..1730a30 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -31,8 +31,8 @@
     <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>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index a74572b..6a208c4 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -31,8 +31,8 @@
     <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>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index 2fe22ad..c434ecc 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -31,8 +31,8 @@
     <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>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index af8768f..ab523c1 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -31,8 +31,8 @@
     <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-en-rAU/strings.xml b/res/values-en-rAU/strings.xml
index c95c86e..4de7584 100644
--- a/res/values-en-rAU/strings.xml
+++ b/res/values-en-rAU/strings.xml
@@ -31,8 +31,8 @@
     <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 c95c86e..4de7584 100644
--- a/res/values-en-rCA/strings.xml
+++ b/res/values-en-rCA/strings.xml
@@ -31,8 +31,8 @@
     <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 c95c86e..4de7584 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -31,8 +31,8 @@
     <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 c95c86e..4de7584 100644
--- a/res/values-en-rIN/strings.xml
+++ b/res/values-en-rIN/strings.xml
@@ -31,8 +31,8 @@
     <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 55d8347..3b3a983 100644
--- a/res/values-en-rXC/strings.xml
+++ b/res/values-en-rXC/strings.xml
@@ -31,10 +31,8 @@
     <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>
-    <!-- no translation found for notification_crashedInCallService_title (7440244344965656743) -->
-    <skip />
-    <!-- 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>‎‏‎‎‏‏‏‎ 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 bef0f39..826b877 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -31,8 +31,8 @@
     <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>
-    <string name="notification_crashedInCallService_body" msgid="7821729360036047995">"Tu app de teléfono <xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> falló. La llamada continuó a través de la app de teléfono de tu dispositivo."</string>
+    <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 3ec6c54..e124de4 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -31,8 +31,8 @@
     <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>
diff --git a/res/values-et/strings.xml b/res/values-et/strings.xml
index 0fdb5ae..bb291ad 100644
--- a/res/values-et/strings.xml
+++ b/res/values-et/strings.xml
@@ -31,8 +31,8 @@
     <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>
-    <string name="notification_crashedInCallService_body" msgid="7821729360036047995">"Teie telefonirakendus <xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> jooksis kokku. Kõnet jätkati teie seadmega kaasas olnud telefonirakendusega."</string>
+    <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 8f557f0..c8956cd 100644
--- a/res/values-eu/strings.xml
+++ b/res/values-eu/strings.xml
@@ -31,8 +31,8 @@
     <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>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index aef61f3..c873159 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -31,8 +31,8 @@
     <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-fi/strings.xml b/res/values-fi/strings.xml
index 89e2622..cf57d62 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -31,8 +31,8 @@
     <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>
-    <string name="notification_crashedInCallService_body" msgid="7821729360036047995">"Puhelinsovellus <xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> kaatui. Puhelua jatkettiin laitteen mukana tulleella puhelinsovelluksella."</string>
+    <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 70c8366..74faab9 100644
--- a/res/values-fr-rCA/strings.xml
+++ b/res/values-fr-rCA/strings.xml
@@ -31,8 +31,8 @@
     <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>
-    <string name="notification_crashedInCallService_body" msgid="7821729360036047995">"Votre application téléphonique <xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> a planté. Votre appel s\'est poursuivi au moyen de l\'application téléphonique intégrée à votre appareil."</string>
+    <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>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index dc6cac8..c2a95a2 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -31,8 +31,8 @@
     <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>
-    <string name="notification_crashedInCallService_body" msgid="7821729360036047995">"L\'application <xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> a planté. L\'appel s\'est poursuivi dans l\'application d\'appel préinstallée sur votre appareil."</string>
+    <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>
diff --git a/res/values-gl/strings.xml b/res/values-gl/strings.xml
index 6f7f886..42c55d6 100644
--- a/res/values-gl/strings.xml
+++ b/res/values-gl/strings.xml
@@ -31,8 +31,8 @@
     <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>
-    <string name="notification_crashedInCallService_body" msgid="7821729360036047995">"Fallou a aplicación de teléfono <xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g>. A chamada continuou coa aplicación Teléfono do teu dispositivo."</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">"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 69fcf28..7455080 100644
--- a/res/values-gu/strings.xml
+++ b/res/values-gu/strings.xml
@@ -31,8 +31,8 @@
     <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-hi/strings.xml b/res/values-hi/strings.xml
index b31e4c8..ed623b8 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -31,8 +31,8 @@
     <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-hr/strings.xml b/res/values-hr/strings.xml
index 5249d25..ff38e54 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -31,8 +31,8 @@
     <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>
-    <string name="notification_crashedInCallService_body" msgid="7821729360036047995">"Aplikacija telefona <xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> srušila se. Vaš je poziv nastavljen pomoću aplikacije telefona koju ste dobili na uređaju."</string>
+    <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>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index c1479da..55e5535 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -31,8 +31,8 @@
     <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 a182c06..6987dab 100644
--- a/res/values-hy/strings.xml
+++ b/res/values-hy/strings.xml
@@ -31,8 +31,8 @@
     <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-in/strings.xml b/res/values-in/strings.xml
index bb1c189..23ebb73 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -31,8 +31,8 @@
     <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 bawaan perangkat Anda."</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>
diff --git a/res/values-is/strings.xml b/res/values-is/strings.xml
index e25931a..442b9d5 100644
--- a/res/values-is/strings.xml
+++ b/res/values-is/strings.xml
@@ -31,8 +31,8 @@
     <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>
-    <string name="notification_crashedInCallService_body" msgid="7821729360036047995">"Símaforritið <xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> hrundi. Haldið var áfram með símtalið í símaforritinu sem fylgdi tækinu."</string>
+    <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 ec2cad9..60f32d7 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -31,8 +31,8 @@
     <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>
-    <string name="notification_crashedInCallService_body" msgid="7821729360036047995">"La tua app per telefono <xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> ha avuto un arresto anomalo. La tua chiamata ha potuto continuare mediante l\'app per telefono integrata nel tuo dispositivo."</string>
+    <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 5bd8c16..30a909b 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -31,8 +31,8 @@
     <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 ed2bd4a..e157655 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -31,8 +31,8 @@
     <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-ka/strings.xml b/res/values-ka/strings.xml
index 5daa303..be27e8b 100644
--- a/res/values-ka/strings.xml
+++ b/res/values-ka/strings.xml
@@ -31,8 +31,8 @@
     <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-kk/strings.xml b/res/values-kk/strings.xml
index 50c63d1..0bab244 100644
--- a/res/values-kk/strings.xml
+++ b/res/values-kk/strings.xml
@@ -31,8 +31,8 @@
     <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-km/strings.xml b/res/values-km/strings.xml
index 018f098..58b2abf 100644
--- a/res/values-km/strings.xml
+++ b/res/values-km/strings.xml
@@ -31,8 +31,8 @@
     <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-kn/strings.xml b/res/values-kn/strings.xml
index 0de7e86..6e0bb59 100644
--- a/res/values-kn/strings.xml
+++ b/res/values-kn/strings.xml
@@ -31,8 +31,8 @@
     <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-ko/strings.xml b/res/values-ko/strings.xml
index a6de7c6..1a29b2e 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -31,8 +31,8 @@
     <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-ky/strings.xml b/res/values-ky/strings.xml
index c11313d..83e498e 100644
--- a/res/values-ky/strings.xml
+++ b/res/values-ky/strings.xml
@@ -31,8 +31,8 @@
     <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-lo/strings.xml b/res/values-lo/strings.xml
index 14c7ff5..64142ca 100644
--- a/res/values-lo/strings.xml
+++ b/res/values-lo/strings.xml
@@ -31,8 +31,8 @@
     <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-lt/strings.xml b/res/values-lt/strings.xml
index d09db32..29090d1 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -31,8 +31,8 @@
     <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>
-    <string name="notification_crashedInCallService_body" msgid="7821729360036047995">"Telefono programa „<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g>“ užstrigo. Skambutis buvo tęsiamas naudojant telefono programą, kuri buvo įrenginyje jį įsigijus."</string>
+    <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 b28b798..782777d 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -31,8 +31,8 @@
     <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>
-    <string name="notification_crashedInCallService_body" msgid="7821729360036047995">"Jūsu tālruņa lietotne <xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> avarēja. Zvans tika turpināts, izmantojot ierīcē iebūvēto tālruņa lietotni."</string>
+    <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 e2cc553..23c8033 100644
--- a/res/values-mk/strings.xml
+++ b/res/values-mk/strings.xml
@@ -31,8 +31,8 @@
     <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-ml/strings.xml b/res/values-ml/strings.xml
index 17e9fe6..5c64034 100644
--- a/res/values-ml/strings.xml
+++ b/res/values-ml/strings.xml
@@ -31,8 +31,8 @@
     <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-mn/strings.xml b/res/values-mn/strings.xml
index 8d8badc..c941fdd 100644
--- a/res/values-mn/strings.xml
+++ b/res/values-mn/strings.xml
@@ -31,8 +31,8 @@
     <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-mr/strings.xml b/res/values-mr/strings.xml
index 15931be..3b87593 100644
--- a/res/values-mr/strings.xml
+++ b/res/values-mr/strings.xml
@@ -31,8 +31,8 @@
     <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-ms/strings.xml b/res/values-ms/strings.xml
index 764f3ec..b43b554 100644
--- a/res/values-ms/strings.xml
+++ b/res/values-ms/strings.xml
@@ -31,8 +31,8 @@
     <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 9203df3..c1b3124 100644
--- a/res/values-my/strings.xml
+++ b/res/values-my/strings.xml
@@ -31,8 +31,8 @@
     <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-nb/strings.xml b/res/values-nb/strings.xml
index bebd828..3f65c62 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -31,8 +31,8 @@
     <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>
-    <string name="notification_crashedInCallService_body" msgid="7821729360036047995">"Telefonappen din, <xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g>, har krasjet. Anropet ditt ble fortsatt med telefonappen som fulgte med enheten din."</string>
+    <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 1b255c7..e65fa1d 100644
--- a/res/values-ne/strings.xml
+++ b/res/values-ne/strings.xml
@@ -31,8 +31,8 @@
     <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-nl/strings.xml b/res/values-nl/strings.xml
index fb234c0..166e95d 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -31,8 +31,8 @@
     <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>
-    <string name="notification_crashedInCallService_body" msgid="7821729360036047995">"Je telefoon-app <xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> is gecrasht. Je gesprek is voortgezet met de telefoon-app van je apparaat."</string>
+    <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 3acd5a0..e0061a7 100644
--- a/res/values-or/strings.xml
+++ b/res/values-or/strings.xml
@@ -31,8 +31,8 @@
     <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-pa/strings.xml b/res/values-pa/strings.xml
index a754e0c..2b94316 100644
--- a/res/values-pa/strings.xml
+++ b/res/values-pa/strings.xml
@@ -31,8 +31,8 @@
     <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>
-    <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-pl/strings.xml b/res/values-pl/strings.xml
index 41711f3..9cb1980 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -31,8 +31,8 @@
     <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>
-    <string name="notification_crashedInCallService_body" msgid="7821729360036047995">"Aplikacja do obsługi telefonu (<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g>) uległa awarii. Połączenie zostało utrzymane za pomocą aplikacji do obsługi telefonu zainstalowanej na urządzeniu."</string>
+    <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>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index e8e0141..bb5213e 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -31,8 +31,8 @@
     <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 app pode estar a aceder e a reproduzir áudio sobre a chamada."</string>
-    <string name="notification_crashedInCallService_title" msgid="7440244344965656743">"app Telefone com falha"</string>
-    <string name="notification_crashedInCallService_body" msgid="7821729360036047995">"Ocorreu uma falha na sua app telefone <xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g>. A sua chamada foi continuada através da app telefone incluída com o dispositivo."</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>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index 7bb059e..5d88619 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -31,8 +31,8 @@
     <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 91a5680..a95d4a4 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -31,8 +31,8 @@
     <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 692cdfd..a50907a 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -31,8 +31,8 @@
     <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-si/strings.xml b/res/values-si/strings.xml
index 0c0a4b8..b73272b 100644
--- a/res/values-si/strings.xml
+++ b/res/values-si/strings.xml
@@ -31,8 +31,8 @@
     <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-sk/strings.xml b/res/values-sk/strings.xml
index 9847bef..0d79f1a 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -31,8 +31,8 @@
     <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>
-    <string name="notification_crashedInCallService_body" msgid="7821729360036047995">"Vaša telefónna aplikácia <xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> sa zrútila. Hovor pokračoval v telefónnej aplikácii, ktorá bola vopred nainštalovaná vo vašom zariadení."</string>
+    <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>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index 952adc6..5595c40 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -31,8 +31,8 @@
     <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>
-    <string name="notification_crashedInCallService_body" msgid="7821729360036047995">"Aplikacija za klicanje <xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> se je zrušila. Klic se je nadaljeval prek aplikacije za klicanje, ki jo je v napravo namestil proizvajalec."</string>
+    <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>
diff --git a/res/values-sq/strings.xml b/res/values-sq/strings.xml
index b71ab55..53f4efc 100644
--- a/res/values-sq/strings.xml
+++ b/res/values-sq/strings.xml
@@ -31,8 +31,8 @@
     <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>
-    <string name="notification_crashedInCallService_body" msgid="7821729360036047995">"Aplikacioni i telefonit <xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> ka pësuar një ndërprerje aksidentale. Telefonata jote ka vazhduar me aplikacionin e telefonit që ke marrë me pajisjen tënde."</string>
+    <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>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index 613cd2b..adfece0 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -31,8 +31,8 @@
     <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 3694cd0..d59fc79 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -31,8 +31,8 @@
     <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>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index 97beaff..8b8a40c 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -31,8 +31,8 @@
     <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>
-    <string name="notification_crashedInCallService_body" msgid="7821729360036047995">"Programu yako ya simu inayoitwa <xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> imeacha kufanya kazi. Uliendelea kupiga simu kwa kutumia programu ya simu iliyokuja na kifaa chako."</string>
+    <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>
diff --git a/res/values-ta/strings.xml b/res/values-ta/strings.xml
index 4988bb8..ee48214 100644
--- a/res/values-ta/strings.xml
+++ b/res/values-ta/strings.xml
@@ -31,8 +31,8 @@
     <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 b12b8d8..94a72e4 100644
--- a/res/values-te/strings.xml
+++ b/res/values-te/strings.xml
@@ -31,8 +31,8 @@
     <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-th/strings.xml b/res/values-th/strings.xml
index 8168437..615abb9 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -31,8 +31,8 @@
     <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-tl/strings.xml b/res/values-tl/strings.xml
index cc6dcc9..998abef 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -31,8 +31,8 @@
     <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>
-    <string name="notification_crashedInCallService_body" msgid="7821729360036047995">"Nag-crash ang iyong app na telepono na <xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g>. Ipinagpatuloy ang iyong tawag gamit ang app na telepono na kasama sa iyong device."</string>
+    <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>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index 0c7d0b4..2e02f8c 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -31,8 +31,8 @@
     <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>
-    <string name="notification_crashedInCallService_body" msgid="7821729360036047995">"Telefon uygulamanız <xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> kilitlendi. Görüşmeniz, cihazınızla birlikte gelen telefon uygulaması kullanılarak sürdürüldü."</string>
+    <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 17da40c..d86b3eb 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -31,8 +31,8 @@
     <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 f35cee8..ae77978 100644
--- a/res/values-ur/strings.xml
+++ b/res/values-ur/strings.xml
@@ -31,8 +31,8 @@
     <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-uz/strings.xml b/res/values-uz/strings.xml
index 76bf6e4..3271245 100644
--- a/res/values-uz/strings.xml
+++ b/res/values-uz/strings.xml
@@ -31,8 +31,8 @@
     <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>
-    <string name="notification_crashedInCallService_body" msgid="7821729360036047995">"Telefoningizdagi <xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> ilovasi ishi xatolik tufayli to‘xtatildi. Chaqiruvingiz qurilmangizga avvaldan o‘rnatilgan Telefon ilovasi orqali davom ettirildi."</string>
+    <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>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index 91d51e9..c6fe44a 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -31,8 +31,8 @@
     <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>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index 93313f5..bbda818 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -31,8 +31,8 @@
     <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-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml
index a44133c..5f1c946 100644
--- a/res/values-zh-rHK/strings.xml
+++ b/res/values-zh-rHK/strings.xml
@@ -31,8 +31,8 @@
     <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-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index 5371c30..7c98928 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -31,8 +31,8 @@
     <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 15a8b8f..30c147d 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -31,8 +31,8 @@
     <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>
-    <string name="notification_crashedInCallService_body" msgid="7821729360036047995">"Uhlelo lwakho lokusebenza lwefoni lwe-<xliff:g id="IN_CALL_SERVICE_APP_NAME">%s</xliff:g> lukhubazekile. Ikholi yakho iye yaqhutshekiswa kusetshenziswa uhlelo lokusebenza lwefoni oluze nedivayisi yakho."</string>
+    <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/res/values/dimens.xml b/res/values/dimens.xml
index 52b688c..b617ae1 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -24,6 +24,7 @@
     <dimen name="blocked_numbers_large_padding">16dp</dimen>
     <dimen name="blocked_numbers_extra_large_padding">32dp</dimen>
     <dimen name="blocked_numbers_button_bottom_margin">20dp</dimen>
+    <dimen name="blocked_numbers_button_large_padding">15dp</dimen>
     <dimen name="blocked_numbers_dialog_padding">24dp</dimen>
     <dimen name="blocked_numbers_delete_icon_padding">12dp</dimen>
     <dimen name="blocked_numbers_progress_bar_padding">100dp</dimen>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 07d6cc9..df08d7c 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -75,13 +75,14 @@
         background. This app may be accessing and playing audio over the call.
     </string>
 
-    <!-- Crashed in call service notification label, used when the in call service has cranshed and
+    <!-- Crashed in call service notification label, used when the in call service has crashed and
          the system fall back to use system dialer. [CHAR LIMIT=NONE] -->
-    <string name="notification_crashedInCallService_title">Crashed phone app</string>
+    <string name="notification_incallservice_not_responding_title">
+        <xliff:g id="in_call_service_app_name">%s</xliff:g> stopped responding
+    </string>
     <!-- Body of the notification presented when an in call service crashed. [CHAR LIMIT=NONE] -->
-    <string name="notification_crashedInCallService_body">
-        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 name="notification_incallservice_not_responding_body">
+        Your call used the phone app that came with your device
     </string>
 
     <!-- Content description of the call muted notification icon for
diff --git a/res/xml/activity_blocked_numbers.xml b/res/xml/activity_blocked_numbers.xml
index 83423df..df1a759 100644
--- a/res/xml/activity_blocked_numbers.xml
+++ b/res/xml/activity_blocked_numbers.xml
@@ -78,6 +78,8 @@
                             android:layout_height="48dp"
                             android:text="@string/block_number"
                             android:layout_marginBottom="@dimen/blocked_numbers_button_bottom_margin"
+                            android:paddingTop="@dimen/blocked_numbers_button_large_padding"
+                            android:paddingBottom="@dimen/blocked_numbers_button_large_padding"
                             style="@style/BlockedNumbersButton"
                             android:background="?android:attr/selectableItemBackgroundBorderless" />
 
diff --git a/res/xml/layout_blocked_number.xml b/res/xml/layout_blocked_number.xml
index 720d71a..3cdd771 100644
--- a/res/xml/layout_blocked_number.xml
+++ b/res/xml/layout_blocked_number.xml
@@ -29,6 +29,8 @@
         android:layout_height="wrap_content"
         android:layout_alignParentStart="true"
         android:paddingTop="@dimen/blocked_numbers_delete_icon_padding"
+        android:layout_alignParentLeft="true"
+        android:layout_toLeftOf="@+id/delete_blocked_number"
         android:textDirection="ltr" />
 
     <ImageView
diff --git a/src/com/android/server/telecom/AsyncRingtonePlayer.java b/src/com/android/server/telecom/AsyncRingtonePlayer.java
index 53c5f07..bf2472f 100644
--- a/src/com/android/server/telecom/AsyncRingtonePlayer.java
+++ b/src/com/android/server/telecom/AsyncRingtonePlayer.java
@@ -255,4 +255,8 @@
             }
         }
     }
+
+    public boolean isPlaying() {
+        return mRingtone != null;
+    }
 }
diff --git a/src/com/android/server/telecom/Call.java b/src/com/android/server/telecom/Call.java
index 636a1b2..0785502 100644
--- a/src/com/android/server/telecom/Call.java
+++ b/src/com/android/server/telecom/Call.java
@@ -55,7 +55,6 @@
 import android.telephony.TelephonyManager;
 import android.telephony.emergency.EmergencyNumber;
 import android.text.TextUtils;
-import android.util.StatsLog;
 import android.widget.Toast;
 
 import com.android.internal.annotations.VisibleForTesting;
@@ -822,7 +821,7 @@
         return String.format(Locale.US, "[Call id=%s, state=%s, tpac=%s, cmgr=%s, handle=%s, "
                         + "vidst=%s, childs(%d), has_parent(%b), cap=%s, prop=%s]",
                 mId,
-                CallState.toString(mState),
+                CallState.toString(getParcelableCallState()),
                 getTargetPhoneAccount(),
                 getConnectionManagerPhoneAccount(),
                 Log.piiHandle(mHandle),
@@ -965,6 +964,20 @@
     }
 
     /**
+     * Similar to {@link #getState()}, except will return {@link CallState#DISCONNECTING} if the
+     * call is locally disconnecting.  This is the call state which is reported to the
+     * {@link android.telecom.InCallService}s when a call is parcelled.
+     * @return The parcelable call state.
+     */
+    public int getParcelableCallState() {
+        if (isLocallyDisconnecting() &&
+                (mState != android.telecom.Call.STATE_DISCONNECTED)) {
+            return CallState.DISCONNECTING;
+        }
+        return mState;
+    }
+
+    /**
      * Determines if this {@link Call} can receive call focus via the
      * {@link ConnectionServiceFocusManager}.
      * Only top-level calls and non-external calls are eligible.
@@ -1129,8 +1142,8 @@
             }
             int statsdDisconnectCause = (newState == CallState.DISCONNECTED) ?
                     getDisconnectCause().getCode() : DisconnectCause.UNKNOWN;
-            StatsLog.write(StatsLog.CALL_STATE_CHANGED, newState, statsdDisconnectCause,
-                    isSelfManaged(), isExternalCall());
+            TelecomStatsLog.write(TelecomStatsLog.CALL_STATE_CHANGED, newState,
+                    statsdDisconnectCause, isSelfManaged(), isExternalCall());
         }
         return true;
     }
@@ -2562,7 +2575,8 @@
         }
     }
 
-    boolean isActive() {
+    @VisibleForTesting
+    public boolean isActive() {
         return mState == CallState.ACTIVE;
     }
 
@@ -2594,7 +2608,7 @@
         for (Listener l : mListeners) {
             l.onExtrasChanged(this, source, extras);
         }
-      
+
         // If mExtra shows that the call using Volte, record it with mWasVolte
         if (mExtras.containsKey(TelecomManager.EXTRA_CALL_NETWORK_TYPE) &&
             mExtras.get(TelecomManager.EXTRA_CALL_NETWORK_TYPE)
@@ -3093,8 +3107,8 @@
         }
 
         // Is there a valid SMS application on the phone?
-        if (TelephonyManager.getDefaultRespondViaMessageApplication(mContext,
-                true /*updateIfNeeded*/) == null) {
+        if (mContext.getSystemService(TelephonyManager.class)
+                .getAndUpdateDefaultRespondViaMessageApplication() == null) {
             return false;
         }
 
@@ -3782,8 +3796,8 @@
 
     public void setIsUsingCallFiltering(boolean isUsingCallFiltering) {
         mIsUsingCallFiltering = isUsingCallFiltering;
-    }       
-          
+    }
+
     /**
      * Returns whether or not Volte call was used.
      *
diff --git a/src/com/android/server/telecom/CallAudioManager.java b/src/com/android/server/telecom/CallAudioManager.java
index b370815..a6509b4 100644
--- a/src/com/android/server/telecom/CallAudioManager.java
+++ b/src/com/android/server/telecom/CallAudioManager.java
@@ -423,7 +423,7 @@
                         CallAudioRouteStateMachine.NO_INCLUDE_BLUETOOTH_IN_BASELINE);
                 return;
             default:
-                Log.wtf(this, "Invalid route specified: %d", route);
+                Log.w(this, "InCallService requested an invalid audio route: %d", route);
         }
     }
 
@@ -449,6 +449,10 @@
         }
     }
 
+    public boolean isRingtonePlaying() {
+        return mRinger.isRinging();
+    }
+
     @VisibleForTesting
     public boolean startRinging() {
         synchronized (mCallsManager.getLock()) {
diff --git a/src/com/android/server/telecom/CallAudioModeStateMachine.java b/src/com/android/server/telecom/CallAudioModeStateMachine.java
index 86d2aaa..2aa9d5d 100644
--- a/src/com/android/server/telecom/CallAudioModeStateMachine.java
+++ b/src/com/android/server/telecom/CallAudioModeStateMachine.java
@@ -353,17 +353,28 @@
     }
 
     private class RingingFocusState extends BaseState {
+        // Keeps track of whether we're ringing with audio focus or if we've just entered the state
+        // without acquiring focus because of a silent ringtone or something.
+        private boolean mHasFocus = false;
+
         private void tryStartRinging() {
+            if (mHasFocus && mCallAudioManager.isRingtonePlaying()) {
+                Log.i(LOG_TAG, "RingingFocusState#tryStartRinging -- audio focus previously"
+                        + " acquired and ringtone already playing -- skipping.");
+                return;
+            }
+
             if (mCallAudioManager.startRinging()) {
                 mAudioManager.requestAudioFocusForCall(AudioManager.STREAM_RING,
                         AudioManager.AUDIOFOCUS_GAIN_TRANSIENT);
                 // Do not set MODE_RINGTONE if we were previously in the CALL_SCREENING mode -- this
                 // trips up the audio system.
-                if (mAudioManager.getMode() != NEW_AUDIO_MODE_FOR_AUDIO_PROCESSING) {
+                if (mAudioManager.getMode() != AudioManager.MODE_CALL_SCREENING) {
                     mAudioManager.setMode(AudioManager.MODE_RINGTONE);
                 }
                 mCallAudioManager.setCallAudioRouteFocusState(
                         CallAudioRouteStateMachine.RINGING_FOCUS);
+                mHasFocus = true;
             } else {
                 Log.i(LOG_TAG, "RINGING state, try start ringing but not acquiring audio focus");
             }
@@ -380,6 +391,7 @@
         public void exit() {
             // Audio mode and audio stream will be set by the next state.
             mCallAudioManager.stopRinging();
+            mHasFocus = false;
         }
 
         @Override
diff --git a/src/com/android/server/telecom/CallRecordingTonePlayer.java b/src/com/android/server/telecom/CallRecordingTonePlayer.java
index 999148c..1b522bc 100644
--- a/src/com/android/server/telecom/CallRecordingTonePlayer.java
+++ b/src/com/android/server/telecom/CallRecordingTonePlayer.java
@@ -24,6 +24,7 @@
 import android.media.MediaPlayer;
 import android.os.Handler;
 import android.os.Looper;
+import android.os.Message;
 import android.provider.MediaStore;
 import android.telecom.Log;
 
@@ -61,19 +62,71 @@
                 }
     };
 
+    private class LoopingTonePlayer extends Handler {
+        private Runnable mPlayToneRunnable = new Runnable() {
+            @Override
+            public void run() {
+                if (mRecordingTonePlayer != null) {
+                    mRecordingTonePlayer.start();
+                    postDelayed(this, mRepeatInterval);
+                }
+            }
+        };
+        private MediaPlayer mRecordingTonePlayer = null;
+
+        LoopingTonePlayer() {
+            // We're using the main looper here to avoid creating more threads and risking a thread
+            // leak. The actual playing of the tone doesn't take up much time on the calling
+            // thread, so it's okay to use the main thread for this.
+            super(Looper.getMainLooper());
+        }
+
+        private boolean start() {
+            if (mRecordingTonePlayer != null) {
+                Log.w(CallRecordingTonePlayer.this, "Can't start looping tone player more than"
+                        + " once");
+                return false;
+            }
+            AudioDeviceInfo telephonyDevice = getTelephonyDevice(mAudioManager);
+            if (telephonyDevice != null) {
+                mRecordingTonePlayer = MediaPlayer.create(mContext, R.raw.record);
+                mRecordingTonePlayer.setPreferredDevice(telephonyDevice);
+                mRecordingTonePlayer.setVolume(0.1f);
+                AudioAttributes audioAttributes = new AudioAttributes.Builder()
+                        .setUsage(AudioAttributes.USAGE_VOICE_COMMUNICATION).build();
+                mRecordingTonePlayer.setAudioAttributes(audioAttributes);
+
+                post(mPlayToneRunnable);
+                return true;
+            } else {
+                Log.w(this ,"startCallRecordingTone: can't find telephony audio device.");
+                return false;
+            }
+        }
+
+        private void stop() {
+            mRecordingTonePlayer.release();
+            mRecordingTonePlayer = null;
+        }
+    }
+
     private final AudioManager mAudioManager;
     private final Context mContext;
     private final TelecomSystem.SyncRoot mLock;
     private final Handler mMainThreadHandler = new Handler(Looper.getMainLooper());
+    private final long mRepeatInterval;
     private boolean mIsRecording = false;
-    private MediaPlayer mRecordingTonePlayer = null;
+    private LoopingTonePlayer mLoopingTonePlayer;
     private List<Call> mCalls = new ArrayList<>();
 
     public CallRecordingTonePlayer(Context context, AudioManager audioManager,
+            Timeouts.Adapter timeouts,
             TelecomSystem.SyncRoot lock) {
         mContext = context;
         mAudioManager = audioManager;
         mLock = lock;
+        mRepeatInterval = timeouts.getCallRecordingToneRepeatIntervalMillis(
+                context.getContentResolver());
     }
 
     @Override
@@ -163,7 +216,7 @@
      */
     private void maybeStartCallAudioTone() {
         if (mIsRecording && hasActiveCall()) {
-            startCallRecordingTone(mContext);
+            startCallRecordingTone();
         }
     }
 
@@ -231,26 +284,15 @@
      * Begins playing the call recording tone to the remote end of the call.
      * The call recording tone is played via the telephony audio output device; this means that it
      * will only be audible to the remote end of the call, not the local side.
-     *
-     * @param context required for obtaining media player.
      */
-    private void startCallRecordingTone(Context context) {
-        if (mRecordingTonePlayer != null) {
+    private void startCallRecordingTone() {
+        if (mLoopingTonePlayer != null) {
+            Log.w(this, "Tone is already playing");
             return;
         }
-        AudioDeviceInfo telephonyDevice = getTelephonyDevice(mAudioManager);
-        if (telephonyDevice != null) {
-            Log.i(this ,"startCallRecordingTone: playing call recording tone to remote end.");
-            mRecordingTonePlayer = MediaPlayer.create(context, R.raw.record);
-            mRecordingTonePlayer.setLooping(true);
-            mRecordingTonePlayer.setPreferredDevice(telephonyDevice);
-            mRecordingTonePlayer.setVolume(0.1f);
-            AudioAttributes audioAttributes = new AudioAttributes.Builder()
-                    .setUsage(AudioAttributes.USAGE_VOICE_COMMUNICATION).build();
-            mRecordingTonePlayer.setAudioAttributes(audioAttributes);
-            mRecordingTonePlayer.start();
-        } else {
-            Log.w(this ,"startCallRecordingTone: can't find telephony audio device.");
+        mLoopingTonePlayer = new LoopingTonePlayer();
+        if (!mLoopingTonePlayer.start()) {
+            mLoopingTonePlayer = null;
         }
     }
 
@@ -258,10 +300,10 @@
      * Attempts to stop the call recording tone if it is playing.
      */
     private void stopCallRecordingTone() {
-        if (mRecordingTonePlayer != null) {
-            Log.i(this ,"stopCallRecordingTone: stopping call recording tone.");
-            mRecordingTonePlayer.stop();
-            mRecordingTonePlayer = null;
+        if (mLoopingTonePlayer != null) {
+            Log.i(this, "stopCallRecordingTone: stopping call recording tone.");
+            mLoopingTonePlayer.stop();
+            mLoopingTonePlayer = null;
         }
     }
 
diff --git a/src/com/android/server/telecom/CallsManager.java b/src/com/android/server/telecom/CallsManager.java
index 41506a9..ff3122f 100755
--- a/src/com/android/server/telecom/CallsManager.java
+++ b/src/com/android/server/telecom/CallsManager.java
@@ -390,6 +390,8 @@
 
     private LinkedList<HandlerThread> mGraphHandlerThreads;
 
+    private boolean mHasActiveRttCall = false;
+
     /**
      * Listener to PhoneAccountRegistrar events.
      */
@@ -541,7 +543,8 @@
         mRinger = new Ringer(playerFactory, context, systemSettingsUtil, asyncRingtonePlayer,
                 ringtoneFactory, systemVibrator,
                 new Ringer.VibrationEffectProxy(), mInCallController);
-        mCallRecordingTonePlayer = new CallRecordingTonePlayer(mContext, audioManager, mLock);
+        mCallRecordingTonePlayer = new CallRecordingTonePlayer(mContext, audioManager,
+                mTimeoutsAdapter, mLock);
         mCallAudioManager = new CallAudioManager(callAudioRouteStateMachine,
                 this, callAudioModeStateMachineFactory.create(systemStateHelper,
                 (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE)),
@@ -897,6 +900,13 @@
     }
 
     @Override
+    public void onConnectionPropertiesChanged(Call call, boolean didRttChange) {
+        if (didRttChange) {
+            updateHasActiveRttCall();
+        }
+    }
+
+    @Override
     public void onParentChanged(Call call) {
         // parent-child relationship affects which call should be foreground, so do an update.
         updateCanAddCall();
@@ -1258,6 +1268,11 @@
         // TODO: Move this to be a part of addCall()
         call.addListener(this);
 
+        if (extras.containsKey(TelecomManager.EXTRA_CALL_DISCONNECT_MESSAGE)) {
+          String disconnectMessage = extras.getString(TelecomManager.EXTRA_CALL_DISCONNECT_MESSAGE);
+          Log.i(this, "processIncomingCallIntent Disconnect message " + disconnectMessage);
+        }
+
         boolean isHandoverAllowed = true;
         if (isHandover) {
             if (!isHandoverInProgress() &&
@@ -2543,7 +2558,11 @@
             Log.w(this, "Unknown call (%s) asked to disconnect", call);
         } else {
             mLocallyDisconnectingCalls.add(call);
+            int previousState = call.getState();
             call.disconnect();
+            for (CallsManagerListener listener : mListeners) {
+                listener.onCallStateChanged(call, previousState, call.getState());
+            }
             // Cancel any of the outgoing call futures if they're still around.
             if (mPendingCallConfirm != null && !mPendingCallConfirm.isDone()) {
                 mPendingCallConfirm.complete(null);
@@ -2940,6 +2959,9 @@
                     call.setState(CallState.AUDIO_PROCESSING, "active set explicitly and adding");
                     addCall(call);
                 }
+                // Clear mPendingAudioProcessingCall so that future attempts to mark the call as
+                // active (e.g. coming off of hold) don't put the call into audio processing instead
+                mPendingAudioProcessingCall = null;
                 return;
             }
             setCallState(call, CallState.ACTIVE, "active set explicitly");
@@ -2960,7 +2982,8 @@
      * @param disconnectCause The disconnect cause, see {@link android.telecom.DisconnectCause}.
      */
     void markCallAsDisconnected(Call call, DisconnectCause disconnectCause) {
-        if (call.getState() == CallState.SIMULATED_RINGING
+      int oldState = call.getState();
+      if (call.getState() == CallState.SIMULATED_RINGING
                 && disconnectCause.getCode() == DisconnectCause.REMOTE) {
             // If the remote end hangs up while in SIMULATED_RINGING, the call should
             // be marked as missed.
@@ -2968,6 +2991,12 @@
         }
         call.setDisconnectCause(disconnectCause);
         setCallState(call, CallState.DISCONNECTED, "disconnected set explicitly");
+
+        if(oldState == CallState.NEW && disconnectCause.getCode() == DisconnectCause.MISSED) {
+            Log.i(this, "markCallAsDisconnected: logging missed call ");
+            mCallLogManager.logCall(call, Calls.MISSED_TYPE, true, null);
+        }
+
     }
 
     /**
@@ -3432,7 +3461,7 @@
                 SystemClock.elapsedRealtime());
 
         updateCanAddCall();
-
+        updateHasActiveRttCall();
         updateExternalCallCanPullSupport();
         // onCallAdded for calls which immediately take the foreground (like the first call).
         for (CallsManagerListener listener : mListeners) {
@@ -3468,6 +3497,7 @@
         // Only broadcast changes for calls that are being tracked.
         if (shouldNotify) {
             updateCanAddCall();
+            updateHasActiveRttCall();
             for (CallsManagerListener listener : mListeners) {
                 if (LogUtils.SYSTRACE_DEBUG) {
                     Trace.beginSection(listener.getClass().toString() + " onCallRemoved");
@@ -3481,6 +3511,24 @@
         Trace.endSection();
     }
 
+    private void updateHasActiveRttCall() {
+        boolean hasActiveRttCall = hasActiveRttCall();
+        if (hasActiveRttCall != mHasActiveRttCall) {
+            Log.i(this, "updateHasActiveRttCall %s -> %s", mHasActiveRttCall, hasActiveRttCall);
+            AudioManager.setRttEnabled(hasActiveRttCall);
+            mHasActiveRttCall = hasActiveRttCall;
+        }
+    }
+
+    private boolean hasActiveRttCall() {
+        for (Call call : mCalls) {
+            if (call.isActive() && call.isRttCall()) {
+                return true;
+            }
+        }
+        return false;
+    }
+
     /**
      * Sets the specified state on the specified call.
      *
@@ -3492,7 +3540,8 @@
             return;
         }
         int oldState = call.getState();
-        Log.i(this, "setCallState %s -> %s, call: %s", CallState.toString(oldState),
+        Log.i(this, "setCallState %s -> %s, call: %s",
+                CallState.toString(call.getParcelableCallState()),
                 CallState.toString(newState), call);
         if (newState != oldState) {
             // If the call switches to held state while a DTMF tone is playing, stop the tone to
@@ -3522,6 +3571,7 @@
                 // Only broadcast state change for calls that are being tracked.
                 if (mCalls.contains(call)) {
                     updateCanAddCall();
+                    updateHasActiveRttCall();
                     for (CallsManagerListener listener : mListeners) {
                         if (LogUtils.SYSTRACE_DEBUG) {
                             Trace.beginSection(listener.getClass().toString() +
diff --git a/src/com/android/server/telecom/ConnectionServiceWrapper.java b/src/com/android/server/telecom/ConnectionServiceWrapper.java
index 7bd5376..72c3f24 100755
--- a/src/com/android/server/telecom/ConnectionServiceWrapper.java
+++ b/src/com/android/server/telecom/ConnectionServiceWrapper.java
@@ -69,6 +69,8 @@
 public class ConnectionServiceWrapper extends ServiceBinder implements
         ConnectionServiceFocusManager.ConnectionServiceFocus {
 
+    private static final String TELECOM_ABBREVIATION = "cast";
+
     private final class Adapter extends IConnectionServiceAdapter.Stub {
 
         @Override
@@ -1237,7 +1239,7 @@
                             connectionRequest,
                             call.shouldAttachToExistingConnection(),
                             call.isUnknown(),
-                            Log.getExternalSession());
+                            Log.getExternalSession(TELECOM_ABBREVIATION));
 
                 } catch (RemoteException e) {
                     Log.e(this, e, "Failure to createConference -- %s", getComponentName());
@@ -1326,7 +1328,7 @@
                             connectionRequest,
                             call.shouldAttachToExistingConnection(),
                             call.isUnknown(),
-                            Log.getExternalSession());
+                            Log.getExternalSession(TELECOM_ABBREVIATION));
 
                 } catch (RemoteException e) {
                     Log.e(this, e, "Failure to createConnection -- %s", getComponentName());
@@ -1373,7 +1375,7 @@
                                         callId,
                                         false),
                                 call.isIncoming(),
-                                Log.getExternalSession());
+                                Log.getExternalSession(TELECOM_ABBREVIATION));
                         call.setDisconnectCause(new DisconnectCause(DisconnectCause.CANCELED));
                         call.disconnect();
                     } catch (RemoteException e) {
@@ -1419,7 +1421,7 @@
                                         callId,
                                         false),
                                 call.isIncoming(),
-                                Log.getExternalSession());
+                                Log.getExternalSession(TELECOM_ABBREVIATION));
                         call.setDisconnectCause(new DisconnectCause(DisconnectCause.CANCELED));
                         call.disconnect();
                     } catch (RemoteException e) {
@@ -1457,7 +1459,9 @@
                                         call.getIntentExtras(),
                                         call.getVideoState(),
                                         callId,
-                                        false), reason, Log.getExternalSession());
+                                        false),
+                                reason,
+                                Log.getExternalSession(TELECOM_ABBREVIATION));
                     } catch (RemoteException e) {
                     }
                 }
@@ -1485,7 +1489,7 @@
                     try {
                         mServiceInterface.handoverComplete(
                                 callId,
-                                Log.getExternalSession());
+                                Log.getExternalSession(TELECOM_ABBREVIATION));
                     } catch (RemoteException e) {
                     }
                 }
@@ -1511,7 +1515,7 @@
         if (callId != null && isServiceValid("abort")) {
             try {
                 logOutgoing("abort %s", callId);
-                mServiceInterface.abort(callId, Log.getExternalSession());
+                mServiceInterface.abort(callId, Log.getExternalSession(TELECOM_ABBREVIATION));
             } catch (RemoteException e) {
             }
         }
@@ -1525,7 +1529,7 @@
         if (callId != null && isServiceValid("silence")) {
             try {
                 logOutgoing("silence %s", callId);
-                mServiceInterface.silence(callId, Log.getExternalSession());
+                mServiceInterface.silence(callId, Log.getExternalSession(TELECOM_ABBREVIATION));
             } catch (RemoteException e) {
             }
         }
@@ -1537,7 +1541,7 @@
         if (callId != null && isServiceValid("hold")) {
             try {
                 logOutgoing("hold %s", callId);
-                mServiceInterface.hold(callId, Log.getExternalSession());
+                mServiceInterface.hold(callId, Log.getExternalSession(TELECOM_ABBREVIATION));
             } catch (RemoteException e) {
             }
         }
@@ -1549,7 +1553,7 @@
         if (callId != null && isServiceValid("unhold")) {
             try {
                 logOutgoing("unhold %s", callId);
-                mServiceInterface.unhold(callId, Log.getExternalSession());
+                mServiceInterface.unhold(callId, Log.getExternalSession(TELECOM_ABBREVIATION));
             } catch (RemoteException e) {
             }
         }
@@ -1563,7 +1567,7 @@
             try {
                 logOutgoing("onCallAudioStateChanged %s %s", callId, audioState);
                 mServiceInterface.onCallAudioStateChanged(callId, audioState,
-                        Log.getExternalSession());
+                        Log.getExternalSession(TELECOM_ABBREVIATION));
             } catch (RemoteException e) {
             }
         }
@@ -1575,7 +1579,7 @@
         if (callId != null && isServiceValid("disconnect")) {
             try {
                 logOutgoing("disconnect %s", callId);
-                mServiceInterface.disconnect(callId, Log.getExternalSession());
+                mServiceInterface.disconnect(callId, Log.getExternalSession(TELECOM_ABBREVIATION));
             } catch (RemoteException e) {
             }
         }
@@ -1588,9 +1592,10 @@
             try {
                 logOutgoing("answer %s %d", callId, videoState);
                 if (VideoProfile.isAudioOnly(videoState)) {
-                    mServiceInterface.answer(callId, Log.getExternalSession());
+                    mServiceInterface.answer(callId, Log.getExternalSession(TELECOM_ABBREVIATION));
                 } else {
-                    mServiceInterface.answerVideo(callId, videoState, Log.getExternalSession());
+                    mServiceInterface.answerVideo(callId, videoState,
+                            Log.getExternalSession(TELECOM_ABBREVIATION));
                 }
             } catch (RemoteException e) {
             }
@@ -1603,7 +1608,8 @@
         if (callId != null && isServiceValid("deflect")) {
             try {
                 logOutgoing("deflect %s", callId);
-                mServiceInterface.deflect(callId, address, Log.getExternalSession());
+                mServiceInterface.deflect(callId, address,
+                        Log.getExternalSession(TELECOM_ABBREVIATION));
             } catch (RemoteException e) {
             }
         }
@@ -1618,9 +1624,10 @@
 
                 if (rejectWithMessage && call.can(
                         Connection.CAPABILITY_CAN_SEND_RESPONSE_VIA_CONNECTION)) {
-                    mServiceInterface.rejectWithMessage(callId, message, Log.getExternalSession());
+                    mServiceInterface.rejectWithMessage(callId, message,
+                            Log.getExternalSession(TELECOM_ABBREVIATION));
                 } else {
-                    mServiceInterface.reject(callId, Log.getExternalSession());
+                    mServiceInterface.reject(callId, Log.getExternalSession(TELECOM_ABBREVIATION));
                 }
             } catch (RemoteException e) {
             }
@@ -1634,7 +1641,8 @@
             try {
                 logOutgoing("rejectReason %s, %d", callId, rejectReason);
 
-                mServiceInterface.rejectWithReason(callId, rejectReason, Log.getExternalSession());
+                mServiceInterface.rejectWithReason(callId, rejectReason,
+                        Log.getExternalSession(TELECOM_ABBREVIATION));
             } catch (RemoteException e) {
             }
         }
@@ -1647,7 +1655,7 @@
             try {
                 logOutgoing("transfer %s", callId);
                 mServiceInterface.transfer(callId, number, isConfirmationRequired,
-                        Log.getExternalSession());
+                        Log.getExternalSession(TELECOM_ABBREVIATION));
             } catch (RemoteException e) {
             }
         }
@@ -1661,7 +1669,7 @@
             try {
                 logOutgoing("consultativeTransfer %s", callId);
                 mServiceInterface.consultativeTransfer(callId, otherCallId,
-                        Log.getExternalSession());
+                        Log.getExternalSession(TELECOM_ABBREVIATION));
             } catch (RemoteException e) {
             }
         }
@@ -1673,7 +1681,8 @@
         if (callId != null && isServiceValid("playDtmfTone")) {
             try {
                 logOutgoing("playDtmfTone %s %c", callId, digit);
-                mServiceInterface.playDtmfTone(callId, digit, Log.getExternalSession());
+                mServiceInterface.playDtmfTone(callId, digit,
+                        Log.getExternalSession(TELECOM_ABBREVIATION));
             } catch (RemoteException e) {
             }
         }
@@ -1685,7 +1694,8 @@
         if (callId != null && isServiceValid("stopDtmfTone")) {
             try {
                 logOutgoing("stopDtmfTone %s", callId);
-                mServiceInterface.stopDtmfTone(callId, Log.getExternalSession());
+                mServiceInterface.stopDtmfTone(callId,
+                        Log.getExternalSession(TELECOM_ABBREVIATION));
             } catch (RemoteException e) {
             }
         }
@@ -1732,7 +1742,8 @@
         if (callId != null && isServiceValid("onPostDialContinue")) {
             try {
                 logOutgoing("onPostDialContinue %s %b", callId, proceed);
-                mServiceInterface.onPostDialContinue(callId, proceed, Log.getExternalSession());
+                mServiceInterface.onPostDialContinue(callId, proceed,
+                        Log.getExternalSession(TELECOM_ABBREVIATION));
             } catch (RemoteException ignored) {
             }
         }
@@ -1744,7 +1755,8 @@
         if (callId != null && otherCallId != null && isServiceValid("conference")) {
             try {
                 logOutgoing("conference %s %s", callId, otherCallId);
-                mServiceInterface.conference(callId, otherCallId, Log.getExternalSession());
+                mServiceInterface.conference(callId, otherCallId,
+                        Log.getExternalSession(TELECOM_ABBREVIATION));
             } catch (RemoteException ignored) {
             }
         }
@@ -1755,7 +1767,8 @@
         if (callId != null && isServiceValid("splitFromConference")) {
             try {
                 logOutgoing("splitFromConference %s", callId);
-                mServiceInterface.splitFromConference(callId, Log.getExternalSession());
+                mServiceInterface.splitFromConference(callId,
+                        Log.getExternalSession(TELECOM_ABBREVIATION));
             } catch (RemoteException ignored) {
             }
         }
@@ -1766,7 +1779,8 @@
         if (callId != null && isServiceValid("mergeConference")) {
             try {
                 logOutgoing("mergeConference %s", callId);
-                mServiceInterface.mergeConference(callId, Log.getExternalSession());
+                mServiceInterface.mergeConference(callId,
+                        Log.getExternalSession(TELECOM_ABBREVIATION));
             } catch (RemoteException ignored) {
             }
         }
@@ -1777,7 +1791,8 @@
         if (callId != null && isServiceValid("swapConference")) {
             try {
                 logOutgoing("swapConference %s", callId);
-                mServiceInterface.swapConference(callId, Log.getExternalSession());
+                mServiceInterface.swapConference(callId,
+                        Log.getExternalSession(TELECOM_ABBREVIATION));
             } catch (RemoteException ignored) {
             }
         }
@@ -1789,7 +1804,7 @@
             try {
                 logOutgoing("addConferenceParticipants %s", callId);
                 mServiceInterface.addConferenceParticipants(callId, participants,
-                        Log.getExternalSession());
+                        Log.getExternalSession(TELECOM_ABBREVIATION));
             } catch (RemoteException ignored) {
             }
         }
@@ -1801,7 +1816,8 @@
         if (callId != null && isServiceValid("pullExternalCall")) {
             try {
                 logOutgoing("pullExternalCall %s", callId);
-                mServiceInterface.pullExternalCall(callId, Log.getExternalSession());
+                mServiceInterface.pullExternalCall(callId,
+                        Log.getExternalSession(TELECOM_ABBREVIATION));
             } catch (RemoteException ignored) {
             }
         }
@@ -1812,7 +1828,8 @@
         if (callId != null && isServiceValid("sendCallEvent")) {
             try {
                 logOutgoing("sendCallEvent %s %s", callId, event);
-                mServiceInterface.sendCallEvent(callId, event, extras, Log.getExternalSession());
+                mServiceInterface.sendCallEvent(callId, event, extras,
+                        Log.getExternalSession(TELECOM_ABBREVIATION));
             } catch (RemoteException ignored) {
             }
         }
@@ -1823,7 +1840,8 @@
         if (callId != null && isServiceValid("onExtrasChanged")) {
             try {
                 logOutgoing("onExtrasChanged %s %s", callId, extras);
-                mServiceInterface.onExtrasChanged(callId, extras, Log.getExternalSession());
+                mServiceInterface.onExtrasChanged(callId, extras,
+                        Log.getExternalSession(TELECOM_ABBREVIATION));
             } catch (RemoteException ignored) {
             }
         }
@@ -1834,7 +1852,8 @@
         if (callId != null && isServiceValid("startRtt")) {
             try {
                 logOutgoing("startRtt: %s %s %s", callId, fromInCall, toInCall);
-                mServiceInterface.startRtt(callId, fromInCall, toInCall, Log.getExternalSession());
+                mServiceInterface.startRtt(callId, fromInCall, toInCall,
+                        Log.getExternalSession(TELECOM_ABBREVIATION));
             } catch (RemoteException ignored) {
             }
         }
@@ -1845,7 +1864,7 @@
         if (callId != null && isServiceValid("stopRtt")) {
             try {
                 logOutgoing("stopRtt: %s", callId);
-                mServiceInterface.stopRtt(callId, Log.getExternalSession());
+                mServiceInterface.stopRtt(callId, Log.getExternalSession(TELECOM_ABBREVIATION));
             } catch (RemoteException ignored) {
             }
         }
@@ -1858,7 +1877,7 @@
             try {
                 logOutgoing("respondToRttRequest: %s %s %s", callId, fromInCall, toInCall);
                 mServiceInterface.respondToRttUpgradeRequest(
-                        callId, fromInCall, toInCall, Log.getExternalSession());
+                        callId, fromInCall, toInCall, Log.getExternalSession(TELECOM_ABBREVIATION));
             } catch (RemoteException ignored) {
             }
         }
@@ -1897,7 +1916,8 @@
             @Override
             public void onSuccess() {
                 try {
-                    mServiceInterface.connectionServiceFocusLost(Log.getExternalSession());
+                    mServiceInterface.connectionServiceFocusLost(
+                            Log.getExternalSession(TELECOM_ABBREVIATION));
                 } catch (RemoteException ignored) {
                     Log.d(this, "failed to inform the focus lost event");
                 }
@@ -1915,7 +1935,8 @@
             @Override
             public void onSuccess() {
                 try {
-                    mServiceInterface.connectionServiceFocusGained(Log.getExternalSession());
+                    mServiceInterface.connectionServiceFocusGained(
+                            Log.getExternalSession(TELECOM_ABBREVIATION));
                 } catch (RemoteException ignored) {
                     Log.d(this, "failed to inform the focus gained event");
                 }
@@ -2007,12 +2028,14 @@
     }
 
     private void logIncoming(String msg, Object... params) {
-        Log.d(this, "ConnectionService -> Telecom[" + mComponentName.flattenToShortString() + "]: "
+        // Keep these as debug; the incoming logging is traced on a package level through the
+        // session logging.
+        Log.d(this, "CS -> TC[" + Log.getPackageAbbreviation(mComponentName) + "]: "
                 + msg, params);
     }
 
     private void logOutgoing(String msg, Object... params) {
-        Log.d(this, "Telecom -> ConnectionService[" + mComponentName.flattenToShortString() + "]: "
+        Log.d(this, "TC -> CS[" + Log.getPackageAbbreviation(mComponentName) + "]: "
                 + msg, params);
     }
 
diff --git a/src/com/android/server/telecom/CreateConnectionProcessor.java b/src/com/android/server/telecom/CreateConnectionProcessor.java
index a4b64a4..2221cb9 100644
--- a/src/com/android/server/telecom/CreateConnectionProcessor.java
+++ b/src/com/android/server/telecom/CreateConnectionProcessor.java
@@ -17,6 +17,7 @@
 package com.android.server.telecom;
 
 import android.content.Context;
+import android.content.pm.PackageManager;
 import android.telecom.DisconnectCause;
 import android.telecom.Log;
 import android.telecom.ParcelableConference;
@@ -388,7 +389,8 @@
             List<PhoneAccount> allAccounts = mPhoneAccountRegistrar
                     .getAllPhoneAccountsOfCurrentUser();
 
-            if (allAccounts.isEmpty()) {
+            if (allAccounts.isEmpty() && mContext.getPackageManager().hasSystemFeature(
+                    PackageManager.FEATURE_TELEPHONY)) {
                 // If the list of phone accounts is empty at this point, it means Telephony hasn't
                 // registered any phone accounts yet. Add a fallback emergency phone account so
                 // that emergency calls can still go through. We create a new ArrayLists here just
diff --git a/src/com/android/server/telecom/InCallAdapter.java b/src/com/android/server/telecom/InCallAdapter.java
index 3b66a51..0fda5f8 100755
--- a/src/com/android/server/telecom/InCallAdapter.java
+++ b/src/com/android/server/telecom/InCallAdapter.java
@@ -45,7 +45,7 @@
         mCallIdMapper = callIdMapper;
         mLock = lock;
         mOwnerPackageName = ownerPackageName;
-        mOwnerPackageAbbreviation = ServiceBinder.getPackageAbbreviation(ownerPackageName);
+        mOwnerPackageAbbreviation = Log.getPackageAbbreviation(ownerPackageName);
     }
 
     @Override
diff --git a/src/com/android/server/telecom/InCallController.java b/src/com/android/server/telecom/InCallController.java
index 5969659..d685a53 100644
--- a/src/com/android/server/telecom/InCallController.java
+++ b/src/com/android/server/telecom/InCallController.java
@@ -26,7 +26,6 @@
 import android.content.Intent;
 import android.content.IntentFilter;
 import android.content.ServiceConnection;
-import android.content.pm.ApplicationInfo;
 import android.content.pm.PackageManager;
 import android.content.pm.ResolveInfo;
 import android.content.pm.ServiceInfo;
@@ -199,7 +198,7 @@
         private final ServiceConnection mServiceConnection = new ServiceConnection() {
             @Override
             public void onServiceConnected(ComponentName name, IBinder service) {
-                Log.startSession("ICSBC.oSC", ServiceBinder.getPackageAbbreviation(name));
+                Log.startSession("ICSBC.oSC", Log.getPackageAbbreviation(name));
                 synchronized (mLock) {
                     try {
                         Log.d(this, "onServiceConnected: %s %b %b", name, mIsBound, mIsConnected);
@@ -216,7 +215,7 @@
 
             @Override
             public void onServiceDisconnected(ComponentName name) {
-                Log.startSession("ICSBC.oSD", ServiceBinder.getPackageAbbreviation(name));
+                Log.startSession("ICSBC.oSD", Log.getPackageAbbreviation(name));
                 synchronized (mLock) {
                     try {
                         Log.d(this, "onDisconnected: %s", name);
@@ -230,7 +229,7 @@
 
             @Override
             public void onNullBinding(ComponentName name) {
-                Log.startSession("ICSBC.oNB", ServiceBinder.getPackageAbbreviation(name));
+                Log.startSession("ICSBC.oNB", Log.getPackageAbbreviation(name));
                 synchronized (mLock) {
                     try {
                         Log.d(this, "onNullBinding: %s", name);
@@ -245,7 +244,7 @@
 
             @Override
             public void onBindingDied(ComponentName name) {
-                Log.startSession("ICSBC.oBD", ServiceBinder.getPackageAbbreviation(name));
+                Log.startSession("ICSBC.oBD", Log.getPackageAbbreviation(name));
                 synchronized (mLock) {
                     try {
                         Log.d(this, "onBindingDied: %s", name);
@@ -1405,10 +1404,12 @@
                 (systemPackageName != null && systemPackageName.equals(packageName))
                 ? getInCallServiceComponent(packageName, IN_CALL_SERVICE_TYPE_SYSTEM_UI)
                 : getInCallServiceComponent(packageName, IN_CALL_SERVICE_TYPE_DIALER_UI);
-        if (packageName != null && defaultDialerComponent == null) {
-            // The in call service of default phone app is disabled, send notification.
-            sendCrashedInCallServiceNotification(packageName);
-        }
+        /* TODO: in Android 12 re-enable this an InCallService is required by the dialer role.
+            if (packageName != null && defaultDialerComponent == null) {
+                // The in call service of default phone app is disabled, send notification.
+                sendCrashedInCallServiceNotification(packageName);
+            }
+        */
         return defaultDialerComponent;
     }
 
@@ -1916,12 +1917,11 @@
         builder.setSmallIcon(R.drawable.ic_phone)
                 .setColor(mContext.getResources().getColor(R.color.theme_color))
                 .setContentTitle(
-                        mContext.getText(
-                                R.string.notification_crashedInCallService_title))
+                        mContext.getString(
+                                R.string.notification_incallservice_not_responding_title, appName))
                 .setStyle(new Notification.BigTextStyle()
-                        .bigText(mContext.getString(
-                                R.string.notification_crashedInCallService_body,
-                                appName)));
+                        .bigText(mContext.getText(
+                                R.string.notification_incallservice_not_responding_body)));
         notificationManager.notify(NOTIFICATION_TAG, IN_CALL_SERVICE_NOTIFICATION_ID,
                 builder.build());
     }
diff --git a/src/com/android/server/telecom/ParcelableCallUtils.java b/src/com/android/server/telecom/ParcelableCallUtils.java
index f9c0045..a5291e7 100644
--- a/src/com/android/server/telecom/ParcelableCallUtils.java
+++ b/src/com/android/server/telecom/ParcelableCallUtils.java
@@ -381,7 +381,7 @@
 
     private static int getParcelableState(Call call, boolean supportsExternalCalls) {
         int state = CallState.NEW;
-        switch (call.getState()) {
+        switch (call.getParcelableCallState()) {
             case CallState.ABORTED:
             case CallState.DISCONNECTED:
                 state = android.telecom.Call.STATE_DISCONNECTED;
@@ -433,12 +433,6 @@
                 break;
         }
 
-        // If we are marked as 'locally disconnecting' then mark ourselves as disconnecting instead.
-        // Unless we're disconnect*ED*, in which case leave it at that.
-        if (call.isLocallyDisconnecting() &&
-                (state != android.telecom.Call.STATE_DISCONNECTED)) {
-            state = android.telecom.Call.STATE_DISCONNECTING;
-        }
         return state;
     }
 
diff --git a/src/com/android/server/telecom/RespondViaSmsManager.java b/src/com/android/server/telecom/RespondViaSmsManager.java
index a709ae5..00d94f0 100644
--- a/src/com/android/server/telecom/RespondViaSmsManager.java
+++ b/src/com/android/server/telecom/RespondViaSmsManager.java
@@ -212,7 +212,8 @@
                     messageParts.size());
             context.registerReceiver(receiver, new IntentFilter(ACTION_MESSAGE_SENT));
             smsManager.sendMultipartTextMessage(phoneNumber, null, messageParts,
-                    sentIntents/*sentIntent*/, null /*deliveryIntent*/, context.getOpPackageName());
+                    sentIntents/*sentIntent*/, null /*deliveryIntent*/, context.getOpPackageName(),
+                    context.getAttributionTag());
         } catch (IllegalArgumentException e) {
             Log.w(RespondViaSmsManager.this, "Couldn't send SMS message: " +
                     e.getMessage());
diff --git a/src/com/android/server/telecom/RespondViaSmsSettings.java b/src/com/android/server/telecom/RespondViaSmsSettings.java
index 3bee5f7..6d7c5c6 100644
--- a/src/com/android/server/telecom/RespondViaSmsSettings.java
+++ b/src/com/android/server/telecom/RespondViaSmsSettings.java
@@ -18,16 +18,18 @@
 
 import android.app.ActionBar;
 import android.app.Activity;
-import android.content.Context;
+import android.app.AlertDialog;
 import android.content.SharedPreferences;
-import android.telecom.Log;
 import android.os.Bundle;
 import android.preference.EditTextPreference;
 import android.preference.Preference;
 import android.preference.PreferenceActivity;
 import android.preference.PreferenceScreen;
-import android.view.Menu;
+import android.telecom.Log;
+import android.text.Editable;
+import android.text.TextWatcher;
 import android.view.MenuItem;
+import android.widget.Button;
 
 // TODO: This class is newly copied into Telecom (com.android.server.telecom) from it previous
 // location in Telephony (com.android.phone). User's preferences stored in the old location
@@ -103,11 +105,15 @@
         // (Watch out: onPreferenceChange() is called *before* the
         // Preference itself gets updated, so we need to use newValue here
         // rather than pref.getText().)
-        pref.setTitle((String) newValue);
+        // If the newValue is an empty string, skip this to avoid setting an empty response.
+        // TODO: Show a popup to inform user that response didn't set because it's empty.
+        if (((String) newValue).length() != 0) {
+            pref.setTitle((String) newValue);
 
-        // Save the new preference value.
-        SharedPreferences.Editor editor = mPrefs.edit();
-        editor.putString(pref.getKey(), (String) newValue).commit();
+            // Save the new preference value.
+            SharedPreferences.Editor editor = mPrefs.edit();
+            editor.putString(pref.getKey(), (String) newValue).commit();
+        }
 
         // If the user just reset the quick response to its original text, clear the pref.
         QuickResponseUtils.maybeResetQuickResponses(this, mPrefs);
@@ -141,6 +147,33 @@
         EditTextPreference pref = (EditTextPreference) preference;
         pref.setText(mPrefs.getString(pref.getKey(), pref.getText()));
         pref.setTitle(pref.getText());
+        pref.getEditText().addTextChangedListener(new TextWatcher() {
+
+            @Override
+            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
+
+            }
+
+            @Override
+            public void onTextChanged(CharSequence s, int start, int before, int count) {
+
+            }
+
+            @Override
+            public void afterTextChanged(Editable s) {
+                try {
+                    Button button = ((AlertDialog) pref.getDialog())
+                            .getButton(AlertDialog.BUTTON_POSITIVE);
+                    if (s.toString().length() == 0) {
+                        button.setEnabled(false);
+                    } else {
+                        button.setEnabled(true);
+                    }
+                } catch (NullPointerException e) {
+                    Log.d(this, e.toString());
+                }
+            }
+        });
         pref.setOnPreferenceChangeListener(this);
     }
 }
diff --git a/src/com/android/server/telecom/Ringer.java b/src/com/android/server/telecom/Ringer.java
index 7841199..a769a94 100644
--- a/src/com/android/server/telecom/Ringer.java
+++ b/src/com/android/server/telecom/Ringer.java
@@ -20,27 +20,26 @@
 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.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
+import java.util.stream.Collectors;
 
 /**
  * Controls the ringtone player.
@@ -75,6 +74,9 @@
 
     private static final int[] PULSE_AMPLITUDE;
 
+    private static final int RAMPING_RINGER_VIBRATION_DURATION = 5000;
+    private static final int RAMPING_RINGER_DURATION = 10000;
+
     static {
         // construct complete pulse pattern
         PULSE_PATTERN = new long[PULSE_PRIMING_PATTERN.length + PULSE_RAMPING_PATTERN.length];
@@ -112,15 +114,6 @@
 
     private static final int REPEAT_SIMPLE_VIBRATION_AT = 1;
 
-    private static final int DEFAULT_RAMPING_RINGER_DURATION = 10000;  // 10 seconds
-
-    private static final long RINGER_ATTRIBUTES_TIMEOUT = 5000; // 5 seconds
-
-    private int mRampingRingerDuration = -1;  // ramping ringer duration in millisecond
-
-    // vibration duration before ramping ringer in second
-    private int mRampingRingerVibrationDuration = 0;
-
     private static final float EPSILON = 1e-6f;
 
     private static final AudioAttributes VIBRATION_ATTRIBUTES = new AudioAttributes.Builder()
@@ -154,7 +147,6 @@
 
     private InCallTonePlayer mCallWaitingPlayer;
     private RingtoneFactory mRingtoneFactory;
-    private AudioManager mAudioManager;
 
     /**
      * Call objects that are ringing, vibrating or call-waiting. These are used only for logging
@@ -169,8 +161,6 @@
      */
     private boolean mIsVibrating = false;
 
-    private Handler mHandler = null;
-
     /** Initializes the Ringer. */
     @VisibleForTesting
     public Ringer(
@@ -193,7 +183,6 @@
         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,
@@ -227,39 +216,58 @@
             return false;
         }
 
-        // 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));
+        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");
 
-        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);
-        }
+        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");
 
-        if (attributes == null) {
-            Log.addEvent(foregroundCall, LogUtils.Events.SKIP_RINGING, "RingerAttributes error");
-            return false;
-        }
+        Log.i(this, "startRinging timings: " + timer);
+        boolean endEarly = isTheaterModeOn || letDialerHandleRinging || isSelfManaged ||
+                hasExternalRinger || isSilentRingingRequested;
 
-        if (attributes.isEndEarly()) {
-            if (attributes.letDialerHandleRinging()) {
+        // 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) {
                 Log.addEvent(foregroundCall, LogUtils.Events.SKIP_RINGING, "Dialer handles");
             }
-            if (attributes.isSilentRingingRequested()) {
+            if (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 attributes.shouldAcquireAudioFocus();
+            return shouldAcquireAudioFocus;
         }
 
         stopCallWaiting();
@@ -268,43 +276,25 @@
         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 (attributes.isRingerAudible()) {
+        if (isRingerAudible) {
             mRingingCall = foregroundCall;
             Log.addEvent(foregroundCall, LogUtils.Events.START_RINGER);
             // Because we wait until a contact info query to complete before processing a
             // call (for the purposes of direct-to-voicemail), the information about custom
             // ringtones should be available by the time this code executes. We can safely
             // request the custom ringtone from the call and expect it to be current.
-            if (mSystemSettingsUtil.applyRampingRinger(mContext)
-                && mSystemSettingsUtil.enableRampingRingerFromDeviceConfig()) {
+            if (mSystemSettingsUtil.applyRampingRinger(mContext)) {
                 Log.i(this, "start ramping ringer.");
-                // configure vibration effect for ramping ringer.
-                int previousRampingRingerVibrationDuration = mRampingRingerVibrationDuration;
-                // get vibration duration in millisecond and round down to second.
-                mRampingRingerVibrationDuration =
-                    mSystemSettingsUtil.getRampingRingerVibrationDuration() >= 0
-                    ? mSystemSettingsUtil.getRampingRingerVibrationDuration() / 1000
-                    : 0;
                 if (mSystemSettingsUtil.enableAudioCoupledVibrationForRampingRinger()) {
                     effect = getVibrationEffectForCall(mRingtoneFactory, foregroundCall);
                 } else {
                     effect = mDefaultVibrationEffect;
                 }
-
-                // configure volume shaper for ramping ringer
-                int previousRampingRingerDuration = mRampingRingerDuration;
-                mRampingRingerDuration =
-                    mSystemSettingsUtil.getRampingRingerDuration() > 0
-                        ? mSystemSettingsUtil.getRampingRingerDuration()
-                        : DEFAULT_RAMPING_RINGER_DURATION;
-                if (mRampingRingerDuration != previousRampingRingerDuration
-                    || mRampingRingerVibrationDuration != previousRampingRingerVibrationDuration
-                    || mVolumeShaperConfig == null) {
-                    float silencePoint = (float) (mRampingRingerVibrationDuration * 1000)
-                        / (float) (mRampingRingerVibrationDuration * 1000 + mRampingRingerDuration);
+                if (mVolumeShaperConfig == null) {
+                    float silencePoint = (float) (RAMPING_RINGER_VIBRATION_DURATION)
+                        / (float) (RAMPING_RINGER_VIBRATION_DURATION + RAMPING_RINGER_DURATION);
                     mVolumeShaperConfig = new VolumeShaper.Configuration.Builder()
-                        .setDuration(mRampingRingerVibrationDuration * 1000
-                            + mRampingRingerDuration)
+                        .setDuration(RAMPING_RINGER_VIBRATION_DURATION + RAMPING_RINGER_DURATION)
                         .setCurve(new float[] {0.f, silencePoint + EPSILON /*keep monotonicity*/,
                             1.f}, new float[] {0.f, 0.f, 1.f})
                         .setInterpolatorType(VolumeShaper.Configuration.INTERPOLATOR_TYPE_LINEAR)
@@ -319,14 +309,15 @@
                 effect = getVibrationEffectForCall(mRingtoneFactory, foregroundCall);
             }
         } else {
-            Log.addEvent(foregroundCall, LogUtils.Events.SKIP_RINGING, "Inaudible: "
-                    + attributes.getInaudibleReason());
+            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);
             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",
@@ -334,7 +325,6 @@
                     maybeStartVibration(foregroundCall, shouldRingForContact, effect,
                             isVibratorEnabled, isRingerAudible);
                 } else if (mSystemSettingsUtil.applyRampingRinger(mContext)
-                           && mSystemSettingsUtil.enableRampingRingerFromDeviceConfig()
                            && !mSystemSettingsUtil.enableAudioCoupledVibrationForRampingRinger()) {
                     Log.i(this, "startRinging: apply ramping ringer vibration");
                     maybeStartVibration(foregroundCall, shouldRingForContact, effect,
@@ -352,11 +342,11 @@
                 mBlockOnRingingFuture.complete(null);
             }
             Log.w(this, "startRinging: No haptics future; fallback to default behavior");
-            maybeStartVibration(foregroundCall, attributes.shouldRingForContact(), effect,
-                    isVibratorEnabled, attributes.isRingerAudible());
+            maybeStartVibration(foregroundCall, shouldRingForContact, effect, isVibratorEnabled,
+                    isRingerAudible);
         }
 
-        return attributes.shouldAcquireAudioFocus();
+        return shouldAcquireAudioFocus;
     }
 
     private void maybeStartVibration(Call foregroundCall, boolean shouldRingForContact,
@@ -364,7 +354,6 @@
         if (isVibrationEnabled
                 && !mIsVibrating && shouldRingForContact) {
             if (mSystemSettingsUtil.applyRampingRinger(mContext)
-                    && mSystemSettingsUtil.enableRampingRingerFromDeviceConfig()
                     && isRingerAudible) {
                 Log.i(this, "start vibration for ramping ringer.");
                 mIsVibrating = true;
@@ -469,6 +458,10 @@
         }
     }
 
+    public boolean isRinging() {
+        return mRingtonePlayer.isPlaying();
+    }
+
     private boolean shouldRingForContact(Uri contactUri) {
         final NotificationManager manager =
                 (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE);
@@ -522,78 +515,6 @@
             return false;
         }
         return mSystemSettingsUtil.canVibrateWhenRinging(context)
-            || (mSystemSettingsUtil.applyRampingRinger(context)
-                && mSystemSettingsUtil.enableRampingRingerFromDeviceConfig());
-    }
-
-    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;
+            || mSystemSettingsUtil.applyRampingRinger(context);
     }
 }
diff --git a/src/com/android/server/telecom/RingerAttributes.java b/src/com/android/server/telecom/RingerAttributes.java
deleted file mode 100644
index 840d815..0000000
--- a/src/com/android/server/telecom/RingerAttributes.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * 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/ServiceBinder.java b/src/com/android/server/telecom/ServiceBinder.java
index 3ad9070..aa2e2a2 100644
--- a/src/com/android/server/telecom/ServiceBinder.java
+++ b/src/com/android/server/telecom/ServiceBinder.java
@@ -30,11 +30,9 @@
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.util.Preconditions;
 
-import java.util.Arrays;
 import java.util.Collections;
 import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
-import java.util.stream.Collectors;
 
 /**
  * Abstract class to perform the work of binding and unbinding to the specified service interface.
@@ -123,7 +121,7 @@
             try {
                 synchronized (mLock) {
                     Log.startSession("SDR.bD",
-                            ServiceBinder.getPackageAbbreviation(mComponentName));
+                            Log.getPackageAbbreviation(mComponentName));
                     Log.i(this, "binderDied: ConnectionService %s died.", mComponentName);
                     logServiceDisconnected("binderDied");
                     handleDisconnect();
@@ -147,7 +145,7 @@
         @Override
         public void onServiceConnected(ComponentName componentName, IBinder binder) {
             try {
-                Log.startSession("SBC.oSC", getPackageAbbreviation(componentName));
+                Log.startSession("SBC.oSC", Log.getPackageAbbreviation(componentName));
                 synchronized (mLock) {
                     Log.i(this, "Service bound %s", componentName);
 
@@ -185,7 +183,7 @@
         @Override
         public void onServiceDisconnected(ComponentName componentName) {
             try {
-                Log.startSession("SBC.oSD", getPackageAbbreviation(componentName));
+                Log.startSession("SBC.oSD", Log.getPackageAbbreviation(componentName));
                 synchronized (mLock) {
                     logServiceDisconnected("onServiceDisconnected");
                     handleDisconnect();
@@ -269,7 +267,7 @@
         mLock = lock;
         mServiceAction = serviceAction;
         mComponentName = componentName;
-        mPackageAbbreviation = getPackageAbbreviation(componentName);
+        mPackageAbbreviation = Log.getPackageAbbreviation(componentName);
         mUserHandle = userHandle;
     }
 
@@ -450,32 +448,4 @@
      * Removes the service interface before the service is unbound.
      */
     protected abstract void removeServiceInterface();
-
-    /**
-     * Generates an abbreviated version of the package name from a component.
-     * E.g. com.android.phone becomes cap
-     * @param componentName The component name to abbreviate.
-     * @return Abbreviation of empty string if component is null.
-     */
-    public static String getPackageAbbreviation(ComponentName componentName) {
-        if (componentName == null) {
-            return "";
-        }
-        return getPackageAbbreviation(componentName.getPackageName());
-    }
-
-    /**
-     * Generates an abbreviated version of the package name.
-     * E.g. com.android.phone becomes cap
-     * @param packageName The packageName name to abbreviate.
-     * @return Abbreviation of empty string if package is null.
-     */
-    public static String getPackageAbbreviation(String packageName) {
-        if (packageName == null) {
-            return "";
-        }
-        return Arrays.stream(packageName.split("\\."))
-                .map(s -> s.substring(0,1))
-                .collect(Collectors.joining(""));
-    }
 }
diff --git a/src/com/android/server/telecom/SystemSettingsUtil.java b/src/com/android/server/telecom/SystemSettingsUtil.java
index 62e1a68..f104f27 100644
--- a/src/com/android/server/telecom/SystemSettingsUtil.java
+++ b/src/com/android/server/telecom/SystemSettingsUtil.java
@@ -30,16 +30,6 @@
 @VisibleForTesting
 public class SystemSettingsUtil {
 
-    /** Flag for ringer ramping time in milliseconds. */
-    private static final String RAMPING_RINGER_DURATION_MILLIS = "ramping_ringer_duration";
-
-    /** Flag for vibration time in milliseconds before ramping ringer starts. */
-    private static final String RAMPING_RINGER_VIBRATION_DURATION =
-            "ramping_ringer_vibration_duration";
-
-    /** Flag for whether or not to apply ramping ringer on incoming phone calls. */
-    private static final String RAMPING_RINGER_ENABLED = "ramping_ringer_enabled";
-
     /** Flag for whether or not to support audio coupled haptics in ramping ringer. */
     private static final String RAMPING_RINGER_AUDIO_COUPLED_VIBRATION_ENABLED =
             "ramping_ringer_audio_coupled_vibration_enabled";
@@ -69,26 +59,11 @@
                 Settings.Global.APPLY_RAMPING_RINGER, 0) == 1;
     }
 
-    public boolean enableRampingRingerFromDeviceConfig() {
-        return DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_TELEPHONY, RAMPING_RINGER_ENABLED,
-                false);
-    }
-
     public boolean enableAudioCoupledVibrationForRampingRinger() {
         return DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_TELEPHONY,
                 RAMPING_RINGER_AUDIO_COUPLED_VIBRATION_ENABLED, false);
     }
 
-    public int getRampingRingerDuration() {
-	return DeviceConfig.getInt(DeviceConfig.NAMESPACE_TELEPHONY,
-                RAMPING_RINGER_DURATION_MILLIS, -1);
-    }
-
-    public int getRampingRingerVibrationDuration() {
-        return DeviceConfig.getInt(DeviceConfig.NAMESPACE_TELEPHONY, 
-                RAMPING_RINGER_VIBRATION_DURATION, 0);
-    }
-
     public boolean isHapticPlaybackSupported(Context context) {
         return context.getSystemService(AudioManager.class).isHapticPlaybackSupported();
     }
diff --git a/src/com/android/server/telecom/TelecomServiceImpl.java b/src/com/android/server/telecom/TelecomServiceImpl.java
index 9421639..1cf25a3 100644
--- a/src/com/android/server/telecom/TelecomServiceImpl.java
+++ b/src/com/android/server/telecom/TelecomServiceImpl.java
@@ -20,8 +20,10 @@
 import static android.Manifest.permission.CALL_PRIVILEGED;
 import static android.Manifest.permission.DUMP;
 import static android.Manifest.permission.MODIFY_PHONE_STATE;
+import static android.Manifest.permission.READ_PHONE_NUMBERS;
 import static android.Manifest.permission.READ_PHONE_STATE;
 import static android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE;
+import static android.Manifest.permission.READ_SMS;
 import static android.Manifest.permission.REGISTER_SIM_SUBSCRIPTION;
 import static android.Manifest.permission.WRITE_SECURE_SETTINGS;
 
@@ -55,6 +57,7 @@
 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;
@@ -109,18 +112,15 @@
     private final ITelecomService.Stub mBinderImpl = new ITelecomService.Stub() {
         @Override
         public PhoneAccountHandle getDefaultOutgoingPhoneAccount(String uriScheme,
-                String callingPackage) {
+                String callingPackage, String callingFeatureId) {
             try {
                 Log.startSession("TSI.gDOPA");
                 synchronized (mLock) {
-                    if (!canReadPhoneState(callingPackage, "getDefaultOutgoingPhoneAccount")) {
-                        return null;
-                    }
-
+                    PhoneAccountHandle phoneAccountHandle = null;
                     final UserHandle callingUserHandle = Binder.getCallingUserHandle();
                     long token = Binder.clearCallingIdentity();
                     try {
-                        return mPhoneAccountRegistrar
+                        phoneAccountHandle = mPhoneAccountRegistrar
                                 .getOutgoingPhoneAccountForScheme(uriScheme, callingUserHandle);
                     } catch (Exception e) {
                         Log.e(this, e, "getDefaultOutgoingPhoneAccount");
@@ -128,6 +128,14 @@
                     } finally {
                         Binder.restoreCallingIdentity(token);
                     }
+                    if (isCallerSimCallManager(phoneAccountHandle)
+                        || canReadPhoneState(
+                            callingPackage,
+                            callingFeatureId,
+                            "getDefaultOutgoingPhoneAccount")) {
+                      return phoneAccountHandle;
+                    }
+                    return null;
                 }
             } finally {
                 Log.endSession();
@@ -180,7 +188,7 @@
 
         @Override
         public List<PhoneAccountHandle> getCallCapablePhoneAccounts(
-                boolean includeDisabledAccounts, String callingPackage) {
+                boolean includeDisabledAccounts, String callingPackage, String callingFeatureId) {
             try {
                 Log.startSession("TSI.gCCPA");
                 if (includeDisabledAccounts &&
@@ -188,7 +196,8 @@
                                 callingPackage, "getCallCapablePhoneAccounts")) {
                     return Collections.emptyList();
                 }
-                if (!canReadPhoneState(callingPackage, "getCallCapablePhoneAccounts")) {
+                if (!canReadPhoneState(callingPackage, callingFeatureId,
+                        "getCallCapablePhoneAccounts")) {
                     return Collections.emptyList();
                 }
                 synchronized (mLock) {
@@ -210,10 +219,12 @@
         }
 
         @Override
-        public List<PhoneAccountHandle> getSelfManagedPhoneAccounts(String callingPackage) {
+        public List<PhoneAccountHandle> getSelfManagedPhoneAccounts(String callingPackage,
+                String callingFeatureId) {
             try {
                 Log.startSession("TSI.gSMPA");
-                if (!canReadPhoneState(callingPackage, "Requires READ_PHONE_STATE permission.")) {
+                if (!canReadPhoneState(callingPackage, callingFeatureId,
+                        "Requires READ_PHONE_STATE permission.")) {
                     throw new SecurityException("Requires READ_PHONE_STATE permission.");
                 }
                 synchronized (mLock) {
@@ -564,11 +575,11 @@
          */
         @Override
         public boolean isVoiceMailNumber(PhoneAccountHandle accountHandle, String number,
-                String callingPackage) {
+                String callingPackage, String callingFeatureId) {
             try {
                 Log.startSession("TSI.iVMN");
                 synchronized (mLock) {
-                    if (!canReadPhoneState(callingPackage, "isVoiceMailNumber")) {
+                    if (!canReadPhoneState(callingPackage, callingFeatureId, "isVoiceMailNumber")) {
                         return false;
                     }
                     final UserHandle callingUserHandle = Binder.getCallingUserHandle();
@@ -596,10 +607,11 @@
          * @see android.telecom.TelecomManager#getVoiceMailNumber
          */
         @Override
-        public String getVoiceMailNumber(PhoneAccountHandle accountHandle, String callingPackage) {
+        public String getVoiceMailNumber(PhoneAccountHandle accountHandle, String callingPackage,
+                String callingFeatureId) {
             try {
                 Log.startSession("TSI.gVMN");
-                if (!canReadPhoneState(callingPackage, "getVoiceMailNumber")) {
+                if (!canReadPhoneState(callingPackage, callingFeatureId, "getVoiceMailNumber")) {
                     return null;
                 }
                 try {
@@ -631,10 +643,11 @@
          * @see android.telecom.TelecomManager#getLine1Number
          */
         @Override
-        public String getLine1Number(PhoneAccountHandle accountHandle, String callingPackage) {
+        public String getLine1Number(PhoneAccountHandle accountHandle, String callingPackage,
+                String callingFeatureId) {
             try {
                 Log.startSession("getL1N");
-                if (!canReadPhoneState(callingPackage, "getLine1Number")) {
+                if (!canReadPhoneNumbers(callingPackage, callingFeatureId, "getLine1Number")) {
                     return null;
                 }
 
@@ -785,10 +798,10 @@
          * @see android.telecom.TelecomManager#isInCall
          */
         @Override
-        public boolean isInCall(String callingPackage) {
+        public boolean isInCall(String callingPackage, String callingFeatureId) {
             try {
                 Log.startSession("TSI.iIC");
-                if (!canReadPhoneState(callingPackage, "isInCall")) {
+                if (!canReadPhoneState(callingPackage, callingFeatureId, "isInCall")) {
                     return false;
                 }
 
@@ -804,10 +817,10 @@
          * @see android.telecom.TelecomManager#isInManagedCall
          */
         @Override
-        public boolean isInManagedCall(String callingPackage) {
+        public boolean isInManagedCall(String callingPackage, String callingFeatureId) {
             try {
                 Log.startSession("TSI.iIMC");
-                if (!canReadPhoneState(callingPackage, "isInManagedCall")) {
+                if (!canReadPhoneState(callingPackage, callingFeatureId, "isInManagedCall")) {
                     throw new SecurityException("Only the default dialer or caller with " +
                             "READ_PHONE_STATE permission can use this method.");
                 }
@@ -938,10 +951,11 @@
          * @see android.telecom.TelecomManager#showInCallScreen
          */
         @Override
-        public void showInCallScreen(boolean showDialpad, String callingPackage) {
+        public void showInCallScreen(boolean showDialpad, String callingPackage,
+                String callingFeatureId) {
             try {
                 Log.startSession("TSI.sICS");
-                if (!canReadPhoneState(callingPackage, "showInCallScreen")) {
+                if (!canReadPhoneState(callingPackage, callingFeatureId, "showInCallScreen")) {
                     return;
                 }
 
@@ -1087,10 +1101,10 @@
          * @see android.telecom.TelecomManager#isTtySupported
          */
         @Override
-        public boolean isTtySupported(String callingPackage) {
+        public boolean isTtySupported(String callingPackage, String callingFeatureId) {
             try {
                 Log.startSession("TSI.iTS");
-                if (!canReadPhoneState(callingPackage, "isTtySupported")) {
+                if (!canReadPhoneState(callingPackage, callingFeatureId, "isTtySupported")) {
                     throw new SecurityException("Only default dialer or an app with" +
                             "READ_PRIVILEGED_PHONE_STATE or READ_PHONE_STATE can call this api");
                 }
@@ -1107,10 +1121,10 @@
          * @see android.telecom.TelecomManager#getCurrentTtyMode
          */
         @Override
-        public int getCurrentTtyMode(String callingPackage) {
+        public int getCurrentTtyMode(String callingPackage, String callingFeatureId) {
             try {
                 Log.startSession("TSI.gCTM");
-                if (!canReadPhoneState(callingPackage, "getCurrentTtyMode")) {
+                if (!canReadPhoneState(callingPackage, callingFeatureId, "getCurrentTtyMode")) {
                     return TelecomManager.TTY_MODE_OFF;
                 }
 
@@ -1357,7 +1371,8 @@
          * @see android.telecom.TelecomManager#placeCall
          */
         @Override
-        public void placeCall(Uri handle, Bundle extras, String callingPackage) {
+        public void placeCall(Uri handle, Bundle extras, String callingPackage,
+                String callingFeatureId) {
             try {
                 Log.startSession("TSI.pC");
                 enforceCallingPackage(callingPackage);
@@ -1379,14 +1394,14 @@
 
                     if (!callingPackage.equals(
                             phoneAccountHandle.getComponentName().getPackageName())
-                            && !canCallPhone(callingPackage,
+                            && !canCallPhone(callingPackage, callingFeatureId,
                             "CALL_PHONE permission required to place calls.")) {
                         // The caller is not allowed to place calls, so we want to ensure that it
                         // can only place calls through itself.
                         throw new SecurityException("Self-managed ConnectionServices can only "
                                 + "place calls through their own ConnectionService.");
                     }
-                } else if (!canCallPhone(callingPackage, "placeCall")) {
+                } else if (!canCallPhone(callingPackage, callingFeatureId, "placeCall")) {
                     throw new SecurityException("Package " + callingPackage
                             + " is not allowed to place phone calls");
                 }
@@ -1399,7 +1414,8 @@
                 // by {@link UserCallIntentProcessor}.
 
                 final boolean hasCallAppOp = mAppOpsManager.noteOp(AppOpsManager.OP_CALL_PHONE,
-                        Binder.getCallingUid(), callingPackage) == AppOpsManager.MODE_ALLOWED;
+                        Binder.getCallingUid(), callingPackage, callingFeatureId, null)
+                        == AppOpsManager.MODE_ALLOWED;
 
                 final boolean hasCallPermission = mContext.checkCallingPermission(CALL_PHONE) ==
                         PackageManager.PERMISSION_GRANTED;
@@ -2138,7 +2154,8 @@
         throw new SecurityException(message + ": Only shell user can call it");
     }
 
-    private boolean canReadPhoneState(String callingPackage, String message) {
+    private boolean canReadPhoneState(String callingPackage, String callingFeatureId,
+            String message) {
         // The system/default dialer can always read phone state - so that emergency calls will
         // still work.
         if (isPrivilegedDialerCalling(callingPackage)) {
@@ -2155,11 +2172,64 @@
             mContext.enforceCallingOrSelfPermission(READ_PHONE_STATE, message);
 
             // Some apps that have the permission can be restricted via app ops.
-            return mAppOpsManager.noteOp(AppOpsManager.OP_READ_PHONE_STATE,
-                    Binder.getCallingUid(), callingPackage) == AppOpsManager.MODE_ALLOWED;
+            return mAppOpsManager.noteOp(AppOpsManager.OP_READ_PHONE_STATE, Binder.getCallingUid(),
+                    callingPackage, callingFeatureId, message) == AppOpsManager.MODE_ALLOWED;
         }
     }
 
+    private boolean canReadPhoneNumbers(String callingPackage, String callingFeatureId,
+            String message) {
+        boolean targetSdkPreR = false;
+        int uid = Binder.getCallingUid();
+        try {
+            ApplicationInfo applicationInfo = mPackageManager.getApplicationInfoAsUser(
+                    callingPackage, 0, UserHandle.getUserHandleForUid(Binder.getCallingUid()));
+            targetSdkPreR = applicationInfo != null
+                    && applicationInfo.targetSdkVersion < Build.VERSION_CODES.R;
+        } catch (PackageManager.NameNotFoundException e) {
+            // In the case that the PackageManager cannot find the specified calling package apply
+            // the more restrictive target R+ requirements.
+        }
+        // Apps targeting pre-R can access phone numbers via READ_PHONE_STATE
+        if (targetSdkPreR) {
+            try {
+                return canReadPhoneState(callingPackage, callingFeatureId, message);
+            } catch (SecurityException e) {
+                // Apps targeting pre-R can still access phone numbers via the additional checks
+                // below.
+            }
+        } else {
+            // The system/default dialer can always read phone state - so that emergency calls will
+            // still work.
+            if (isPrivilegedDialerCalling(callingPackage)) {
+                return true;
+            }
+            if (mContext.checkCallingOrSelfPermission(READ_PRIVILEGED_PHONE_STATE)
+                    == PackageManager.PERMISSION_GRANTED) {
+                return true;
+            }
+        }
+        if (mContext.checkCallingOrSelfPermission(READ_PHONE_NUMBERS)
+                == PackageManager.PERMISSION_GRANTED && mAppOpsManager.noteOpNoThrow(
+                AppOpsManager.OPSTR_READ_PHONE_NUMBERS, uid, callingPackage, callingFeatureId,
+                message) == AppOpsManager.MODE_ALLOWED) {
+            return true;
+        }
+        if (mContext.checkCallingOrSelfPermission(READ_SMS) == PackageManager.PERMISSION_GRANTED
+                && mAppOpsManager.noteOpNoThrow(AppOpsManager.OPSTR_READ_SMS, uid, callingPackage,
+                callingFeatureId, message) == AppOpsManager.MODE_ALLOWED) {
+            return true;
+        }
+        // The default SMS app with the WRITE_SMS appop granted can access phone numbers.
+        if (mAppOpsManager.noteOpNoThrow(AppOpsManager.OPSTR_WRITE_SMS, uid, callingPackage,
+                callingFeatureId, message) == AppOpsManager.MODE_ALLOWED) {
+            return true;
+        }
+        throw new SecurityException("Package " + callingPackage
+                + " does not meet the requirements to access the phone number");
+    }
+
+
     private boolean canReadPrivilegedPhoneState(String callingPackage, String message) {
         // The system/default dialer can always read phone state - so that emergency calls will
         // still work.
@@ -2194,6 +2264,10 @@
     }
 
     private boolean canCallPhone(String callingPackage, String message) {
+        return canCallPhone(callingPackage, null /* featureId */, message);
+    }
+
+    private boolean canCallPhone(String callingPackage, String callingFeatureId, String message) {
         // The system/default dialer can always read phone state - so that emergency calls will
         // still work.
         if (isPrivilegedDialerCalling(callingPackage)) {
@@ -2205,7 +2279,8 @@
 
         // Some apps that have the permission can be restricted via app ops.
         return mAppOpsManager.noteOp(AppOpsManager.OP_CALL_PHONE,
-                Binder.getCallingUid(), callingPackage) == AppOpsManager.MODE_ALLOWED;
+                Binder.getCallingUid(), callingPackage, callingFeatureId, message)
+                == AppOpsManager.MODE_ALLOWED;
     }
 
     private boolean isCallerSimCallManager(PhoneAccountHandle targetPhoneAccount) {
diff --git a/src/com/android/server/telecom/TelecomSystem.java b/src/com/android/server/telecom/TelecomSystem.java
index f3b3895..807cc2d 100644
--- a/src/com/android/server/telecom/TelecomSystem.java
+++ b/src/com/android/server/telecom/TelecomSystem.java
@@ -32,6 +32,7 @@
 import com.android.server.telecom.DefaultDialerCache.DefaultDialerManagerAdapter;
 import com.android.server.telecom.ui.ToastFactory;
 
+import android.app.ActivityManager;
 import android.Manifest;
 import android.content.BroadcastReceiver;
 import android.content.Context;
@@ -336,9 +337,19 @@
         mRespondViaSmsManager = new RespondViaSmsManager(mCallsManager, mLock);
         mCallsManager.setRespondViaSmsManager(mRespondViaSmsManager);
 
-        mContext.registerReceiver(mUserSwitchedReceiver, USER_SWITCHED_FILTER);
-        mContext.registerReceiver(mUserStartingReceiver, USER_STARTING_FILTER);
-        mContext.registerReceiver(mBootCompletedReceiver, BOOT_COMPLETE_FILTER);
+        mContext.registerReceiverAsUser(mUserSwitchedReceiver, UserHandle.ALL,
+                USER_SWITCHED_FILTER, null, null);
+        mContext.registerReceiverAsUser(mUserStartingReceiver, UserHandle.ALL,
+                USER_STARTING_FILTER, null, null);
+        mContext.registerReceiverAsUser(mBootCompletedReceiver, UserHandle.ALL,
+                BOOT_COMPLETE_FILTER, null, null);
+
+        // Set current user explicitly since USER_SWITCHED_FILTER intent can be missed at startup
+        synchronized(mLock) {
+            UserHandle currentUserHandle = UserHandle.of(ActivityManager.getCurrentUser());
+            mPhoneAccountRegistrar.setCurrentUserHandle(currentUserHandle);
+            mCallsManager.onUserSwitch(currentUserHandle);
+        }
 
         mBluetoothPhoneServiceImpl = bluetoothPhoneServiceImplFactory.makeBluetoothPhoneServiceImpl(
                 mContext, mLock, mCallsManager, mPhoneAccountRegistrar);
diff --git a/src/com/android/server/telecom/Timeouts.java b/src/com/android/server/telecom/Timeouts.java
index 37f9363..a701b88 100644
--- a/src/com/android/server/telecom/Timeouts.java
+++ b/src/com/android/server/telecom/Timeouts.java
@@ -29,7 +29,8 @@
  */
 public final class Timeouts {
     public static class Adapter {
-        public Adapter() { }
+        public Adapter() {
+        }
 
         public long getCallScreeningTimeoutMillis(ContentResolver cr) {
             return Timeouts.getCallScreeningTimeoutMillis(cr);
@@ -62,20 +63,25 @@
         public long getPhoneAccountSuggestionServiceTimeout(ContentResolver cr) {
             return Timeouts.getPhoneAccountSuggestionServiceTimeout(cr);
         }
+
+        public long getCallRecordingToneRepeatIntervalMillis(ContentResolver cr) {
+            return Timeouts.getCallRecordingToneRepeatIntervalMillis(cr);
+        }
     }
 
     /** A prefix to use for all keys so to not clobber the global namespace. */
     private static final String PREFIX = "telecom.";
 
-    private Timeouts() {}
+    private Timeouts() {
+    }
 
     /**
      * Returns the timeout value from Settings or the default value if it hasn't been changed. This
      * method is safe to call from any thread, including the UI thread.
      *
      * @param contentResolver The content resolved.
-     * @param key Settings key to retrieve.
-     * @param defaultValue Default value, in milliseconds.
+     * @param key             Settings key to retrieve.
+     * @param defaultValue    Default value, in milliseconds.
      * @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) {
@@ -176,8 +182,8 @@
      * as potential emergency callbacks.
      */
     public static long getEmergencyCallbackWindowMillis(ContentResolver contentResolver) {
-      return get(contentResolver, "emergency_callback_window_millis",
-          TimeUnit.MILLISECONDS.convert(5, TimeUnit.MINUTES));
+        return get(contentResolver, "emergency_callback_window_millis",
+                TimeUnit.MILLISECONDS.convert(5, TimeUnit.MINUTES));
     }
 
     /**
@@ -187,7 +193,7 @@
      */
     public static long getUserDefinedCallRedirectionTimeoutMillis(ContentResolver contentResolver) {
         return get(contentResolver, "user_defined_call_redirection_timeout",
-            5000L /* 5 seconds */);
+                5000L /* 5 seconds */);
     }
 
     /**
@@ -198,4 +204,11 @@
     public static long getCarrierCallRedirectionTimeoutMillis(ContentResolver contentResolver) {
         return get(contentResolver, "carrier_call_redirection_timeout", 5000L /* 5 seconds */);
     }
+
+    /**
+     * Returns the number of milliseconds between two plays of the call recording tone.
+     */
+    public static long getCallRecordingToneRepeatIntervalMillis(ContentResolver contentResolver) {
+        return get(contentResolver, "call_recording_tone_repeat_interval", 15000L /* 15 seconds */);
+    }
 }
diff --git a/src/com/android/server/telecom/callfiltering/CallScreeningServiceFilter.java b/src/com/android/server/telecom/callfiltering/CallScreeningServiceFilter.java
index 51608a0..1e52c5a 100644
--- a/src/com/android/server/telecom/callfiltering/CallScreeningServiceFilter.java
+++ b/src/com/android/server/telecom/callfiltering/CallScreeningServiceFilter.java
@@ -34,6 +34,7 @@
 import com.android.server.telecom.Call;
 import com.android.server.telecom.CallScreeningServiceHelper;
 import com.android.server.telecom.CallsManager;
+import com.android.server.telecom.LogUtils;
 import com.android.server.telecom.ParcelableCallUtils;
 
 import java.util.concurrent.CompletableFuture;
@@ -70,6 +71,7 @@
                 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);
             } finally {
                 unbindCallScreeningService();
@@ -86,7 +88,7 @@
             Log.startSession("NCSSF.dC");
             try {
                 if (mCall != null && mCall.getId().equals(callId)) {
-                    mResultFuture.complete(new CallFilteringResult.Builder()
+                    CallFilteringResult result = new CallFilteringResult.Builder()
                             .setShouldAllowCall(false)
                             .setShouldReject(shouldReject)
                             .setShouldSilence(false)
@@ -97,7 +99,9 @@
                             .setCallScreeningAppName(mAppName)
                             .setCallScreeningComponentName(componentName.flattenToString())
                             .setContactExists(mPriorStageResult.contactExists)
-                            .build());
+                            .build();
+                    Log.addEvent(mCall, LogUtils.Events.SCREENING_COMPLETED, result);
+                    mResultFuture.complete(result);
                 } else {
                     Log.w(this, "disallowCall, unknown call id: %s", callId);
                     mResultFuture.complete(mPriorStageResult);
@@ -115,14 +119,16 @@
             Log.startSession("NCSSF.sC");
             try {
                 if (mCall != null && mCall.getId().equals(callId)) {
-                    mResultFuture.complete(new CallFilteringResult.Builder()
+                    CallFilteringResult result = new CallFilteringResult.Builder()
                             .setShouldAllowCall(true)
                             .setShouldReject(false)
                             .setShouldSilence(true)
                             .setShouldAddToCallLog(true)
                             .setShouldShowNotification(true)
                             .setContactExists(mPriorStageResult.contactExists)
-                            .build());
+                            .build();
+                    Log.addEvent(mCall, LogUtils.Events.SCREENING_COMPLETED, result);
+                    mResultFuture.complete(result);
                 } else {
                     Log.w(this, "silenceCall, unknown call id: %s", callId);
                     mResultFuture.complete(mPriorStageResult);
@@ -146,14 +152,16 @@
 
             try {
                 if (mCall != null && mCall.getId().equals(callId)) {
-                    mResultFuture.complete(new CallFilteringResult.Builder()
+                    CallFilteringResult result = new CallFilteringResult.Builder()
                             .setShouldAllowCall(true)
                             .setShouldReject(false)
                             .setShouldSilence(false)
                             .setShouldScreenViaAudio(true)
                             .setCallScreeningAppName(mAppName)
                             .setContactExists(mPriorStageResult.contactExists)
-                            .build());
+                            .build();
+                    Log.addEvent(mCall, LogUtils.Events.SCREENING_COMPLETED, result);
+                    mResultFuture.complete(result);
                 } else {
                     Log.w(this, "screenCallFurther, unknown call id: %s", callId);
                     mResultFuture.complete(mPriorStageResult);
@@ -185,6 +193,7 @@
                 Log.e(this, e, "Failed to set the call screening adapter");
                 mResultFuture.complete(mPriorStageResult);
             }
+            Log.addEvent(mCall, LogUtils.Events.SCREENING_BOUND, componentName);
             Log.i(this, "Binding completed.");
         }
 
diff --git a/src/com/android/server/telecom/settings/BlockedNumbersAdapter.java b/src/com/android/server/telecom/settings/BlockedNumbersAdapter.java
index 1463ad2..df68f6e 100644
--- a/src/com/android/server/telecom/settings/BlockedNumbersAdapter.java
+++ b/src/com/android/server/telecom/settings/BlockedNumbersAdapter.java
@@ -43,10 +43,18 @@
         final String rawNumber = cursor.getString(cursor.getColumnIndex(
                 BlockedNumberContract.BlockedNumbers.COLUMN_ORIGINAL_NUMBER));
         final String formattedNumber = BlockedNumbersUtil.formatNumber(rawNumber);
-        TextView numberView = (TextView) view.findViewById(R.id.blocked_number);
-        Spannable numberSpannable = new SpannableString(formattedNumber);
-        PhoneNumberUtils.addTtsSpan(numberSpannable, 0, numberSpannable.length());
-        numberView.setText(numberSpannable);
+        TextView textView = (TextView) view.findViewById(R.id.blocked_number);
+
+        if (formattedNumber != null
+                && formattedNumber.contains("@") || formattedNumber.contains("%40")) {
+            // An email address
+            textView.setText(formattedNumber);
+        } else {
+            // A phone number
+            Spannable numberSpannable = new SpannableString(formattedNumber);
+            PhoneNumberUtils.addTtsSpan(numberSpannable, 0, numberSpannable.length());
+            textView.setText(numberSpannable);
+        }
 
         View deleteButton = view.findViewById(R.id.delete_blocked_number);
         deleteButton.setOnClickListener(new View.OnClickListener() {
diff --git a/src/com/android/server/telecom/settings/BlockedNumbersUtil.java b/src/com/android/server/telecom/settings/BlockedNumbersUtil.java
index 5acfe64..67634e4 100644
--- a/src/com/android/server/telecom/settings/BlockedNumbersUtil.java
+++ b/src/com/android/server/telecom/settings/BlockedNumbersUtil.java
@@ -108,7 +108,7 @@
                     .setContentText(message)
                     .setContentIntent(pendingIntent)
                     .setShowWhen(true)
-                    .setChannel(NotificationChannelManager.CHANNEL_ID_CALL_BLOCKING)
+                    .setChannelId(NotificationChannelManager.CHANNEL_ID_CALL_BLOCKING)
                     .build();
 
             notification.flags |= Notification.FLAG_NO_CLEAR;
diff --git a/src/com/android/server/telecom/ui/MissedCallNotifierImpl.java b/src/com/android/server/telecom/ui/MissedCallNotifierImpl.java
index e64e67c..a0eca8f 100644
--- a/src/com/android/server/telecom/ui/MissedCallNotifierImpl.java
+++ b/src/com/android/server/telecom/ui/MissedCallNotifierImpl.java
@@ -472,7 +472,7 @@
         TaskStackBuilder taskStackBuilder = TaskStackBuilder.create(mContext);
         taskStackBuilder.addNextIntent(intent);
 
-        return taskStackBuilder.getPendingIntent(0, 0, null, userHandle);
+        return taskStackBuilder.getPendingIntent(0, PendingIntent.FLAG_IMMUTABLE, null, userHandle);
     }
 
     /**
diff --git a/tests/src/com/android/server/telecom/tests/BasicCallTests.java b/tests/src/com/android/server/telecom/tests/BasicCallTests.java
index 756d31b..a8e1c00 100644
--- a/tests/src/com/android/server/telecom/tests/BasicCallTests.java
+++ b/tests/src/com/android/server/telecom/tests/BasicCallTests.java
@@ -103,8 +103,10 @@
                 mPhoneAccountA0.getAccountHandle(), mConnectionServiceFixtureA);
 
         mInCallServiceFixtureX.mInCallAdapter.disconnectCall(ids.mCallId);
-        assertEquals(Call.STATE_ACTIVE, mInCallServiceFixtureX.getCall(ids.mCallId).getState());
-        assertEquals(Call.STATE_ACTIVE, mInCallServiceFixtureY.getCall(ids.mCallId).getState());
+        assertEquals(Call.STATE_DISCONNECTING,
+                mInCallServiceFixtureX.getCall(ids.mCallId).getState());
+        assertEquals(Call.STATE_DISCONNECTING,
+                mInCallServiceFixtureY.getCall(ids.mCallId).getState());
 
         when(mClockProxy.currentTimeMillis()).thenReturn(TEST_DISCONNECT_TIME);
         when(mClockProxy.elapsedRealtime()).thenReturn(TEST_DISCONNECT_ELAPSED_TIME);
@@ -268,12 +270,15 @@
         IdPair ids = startAndMakeActiveIncomingCall("650-555-1212",
                 mPhoneAccountA0.getAccountHandle(), mConnectionServiceFixtureA);
         mInCallServiceFixtureX.mInCallAdapter.disconnectCall(ids.mCallId);
-        assertEquals(Call.STATE_ACTIVE, mInCallServiceFixtureX.getCall(ids.mCallId).getState());
-        assertEquals(Call.STATE_ACTIVE, mInCallServiceFixtureY.getCall(ids.mCallId).getState());
+        assertEquals(Call.STATE_DISCONNECTING,
+                mInCallServiceFixtureX.getCall(ids.mCallId).getState());
+        assertEquals(Call.STATE_DISCONNECTING,
+                mInCallServiceFixtureY.getCall(ids.mCallId).getState());
 
         when(mClockProxy.currentTimeMillis()).thenReturn(TEST_DISCONNECT_TIME);
         when(mClockProxy.elapsedRealtime()).thenReturn(TEST_DISCONNECT_ELAPSED_TIME);
         mConnectionServiceFixtureA.sendSetDisconnected(ids.mConnectionId, DisconnectCause.LOCAL);
+
         assertEquals(Call.STATE_DISCONNECTED,
                 mInCallServiceFixtureX.getCall(ids.mCallId).getState());
         assertEquals(Call.STATE_DISCONNECTED,
@@ -823,6 +828,7 @@
     private void blockNumberWithAnswer(String phoneNumber, Answer answer) throws Exception {
         when(getBlockedNumberProvider().call(
                 anyString(),
+                nullable(String.class),
                 anyString(),
                 eq(BlockedNumberContract.SystemContract.METHOD_SHOULD_SYSTEM_BLOCK_NUMBER),
                 eq(phoneNumber),
diff --git a/tests/src/com/android/server/telecom/tests/CallAudioModeStateMachineTest.java b/tests/src/com/android/server/telecom/tests/CallAudioModeStateMachineTest.java
index ca84c4c..38f58fd 100644
--- a/tests/src/com/android/server/telecom/tests/CallAudioModeStateMachineTest.java
+++ b/tests/src/com/android/server/telecom/tests/CallAudioModeStateMachineTest.java
@@ -180,6 +180,81 @@
                 CallAudioRouteStateMachine.RINGING_FOCUS);
     }
 
+    @SmallTest
+    @Test
+    public void testDoNotRingTwiceWhenHfpConnected() {
+        CallAudioModeStateMachine sm = new CallAudioModeStateMachine(mSystemStateHelper,
+                mAudioManager, mTestThread.getLooper());
+        sm.setCallAudioManager(mCallAudioManager);
+        sm.sendMessage(CallAudioModeStateMachine.ABANDON_FOCUS_FOR_TESTING);
+        waitForHandlerAction(sm.getHandler(), TEST_TIMEOUT);
+
+        resetMocks();
+        when(mCallAudioManager.startRinging()).thenReturn(true);
+
+        sm.sendMessage(CallAudioModeStateMachine.NEW_RINGING_CALL, new Builder()
+                .setHasActiveOrDialingCalls(false)
+                .setHasRingingCalls(true)
+                .setHasHoldingCalls(false)
+                .setIsTonePlaying(false)
+                .setForegroundCallIsVoip(false)
+                .setSession(null)
+                .build());
+        waitForHandlerAction(sm.getHandler(), TEST_TIMEOUT);
+
+        assertEquals(CallAudioModeStateMachine.RING_STATE_NAME, sm.getCurrentStateName());
+
+        verify(mAudioManager).requestAudioFocusForCall(AudioManager.STREAM_RING,
+                AudioManager.AUDIOFOCUS_GAIN_TRANSIENT);
+        verify(mAudioManager).setMode(AudioManager.MODE_RINGTONE);
+        verify(mCallAudioManager).setCallAudioRouteFocusState(
+                CallAudioRouteStateMachine.RINGING_FOCUS);
+
+        when(mCallAudioManager.isRingtonePlaying()).thenReturn(true);
+        sm.sendMessage(CallAudioModeStateMachine.RINGER_MODE_CHANGE);
+        waitForHandlerAction(sm.getHandler(), TEST_TIMEOUT);
+
+        // Make sure we don't try and start ringing again.
+        verify(mCallAudioManager, times(1)).startRinging();
+    }
+
+    @SmallTest
+    @Test
+    public void testStartRingingAfterHfpConnectedIfNotAlreadyPlaying() {
+        CallAudioModeStateMachine sm = new CallAudioModeStateMachine(mSystemStateHelper,
+                mAudioManager, mTestThread.getLooper());
+        sm.setCallAudioManager(mCallAudioManager);
+        sm.sendMessage(CallAudioModeStateMachine.ABANDON_FOCUS_FOR_TESTING);
+        waitForHandlerAction(sm.getHandler(), TEST_TIMEOUT);
+
+        resetMocks();
+        when(mCallAudioManager.startRinging()).thenReturn(true);
+
+        sm.sendMessage(CallAudioModeStateMachine.NEW_RINGING_CALL, new Builder()
+                .setHasActiveOrDialingCalls(false)
+                .setHasRingingCalls(true)
+                .setHasHoldingCalls(false)
+                .setIsTonePlaying(false)
+                .setForegroundCallIsVoip(false)
+                .setSession(null)
+                .build());
+        waitForHandlerAction(sm.getHandler(), TEST_TIMEOUT);
+
+        assertEquals(CallAudioModeStateMachine.RING_STATE_NAME, sm.getCurrentStateName());
+
+        verify(mAudioManager).requestAudioFocusForCall(AudioManager.STREAM_RING,
+                AudioManager.AUDIOFOCUS_GAIN_TRANSIENT);
+        verify(mAudioManager).setMode(AudioManager.MODE_RINGTONE);
+        verify(mCallAudioManager).setCallAudioRouteFocusState(
+                CallAudioRouteStateMachine.RINGING_FOCUS);
+
+        when(mCallAudioManager.isRingtonePlaying()).thenReturn(false);
+        sm.sendMessage(CallAudioModeStateMachine.RINGER_MODE_CHANGE);
+        waitForHandlerAction(sm.getHandler(), TEST_TIMEOUT);
+
+        // Make sure we do try and start ringing again, since the ringtone wasn't already playing.
+        verify(mCallAudioManager, times(2)).startRinging();
+    }
 
     private void resetMocks() {
         clearInvocations(mCallAudioManager, mAudioManager);
diff --git a/tests/src/com/android/server/telecom/tests/CallLogManagerTest.java b/tests/src/com/android/server/telecom/tests/CallLogManagerTest.java
index d53c73c..953c711 100644
--- a/tests/src/com/android/server/telecom/tests/CallLogManagerTest.java
+++ b/tests/src/com/android/server/telecom/tests/CallLogManagerTest.java
@@ -16,15 +16,13 @@
 
 package com.android.server.telecom.tests;
 
-
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.anyString;
-import static org.mockito.Matchers.eq;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.atLeast;
 import static org.mockito.Mockito.doAnswer;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.never;
@@ -34,9 +32,9 @@
 
 import android.content.ComponentName;
 import android.content.ContentProvider;
+import android.content.ContentResolver;
 import android.content.ContentValues;
 import android.content.Context;
-import android.content.IContentProvider;
 import android.content.pm.UserInfo;
 import android.content.res.Resources;
 import android.location.Country;
@@ -45,6 +43,7 @@
 import android.net.Uri;
 import android.os.Looper;
 import android.os.PersistableBundle;
+import android.os.SystemClock;
 import android.os.UserHandle;
 import android.os.UserManager;
 import android.provider.CallLog;
@@ -74,6 +73,7 @@
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.JUnit4;
+import org.mockito.Answers;
 import org.mockito.ArgumentCaptor;
 import org.mockito.Mock;
 import org.mockito.invocation.InvocationOnMock;
@@ -85,7 +85,6 @@
 public class CallLogManagerTest extends TelecomTestCase {
 
     private CallLogManager mCallLogManager;
-    private IContentProvider mContentProvider;
     private PhoneAccountHandle mDefaultAccountHandle;
     private PhoneAccountHandle mOtherUserAccountHandle;
     private PhoneAccountHandle mManagedProfileAccountHandle;
@@ -112,8 +111,10 @@
     private static final String TEST_ISO = "KR";
     private static final String TEST_ISO_2 = "JP";
 
-    @Mock PhoneAccountRegistrar mMockPhoneAccountRegistrar;
-
+    @Mock(answer = Answers.CALLS_REAL_METHODS)
+    ContentProvider mContentProvider;
+    @Mock
+    PhoneAccountRegistrar mMockPhoneAccountRegistrar;
     @Mock
     MissedCallNotifier mMissedCallNotifier;
 
@@ -124,8 +125,6 @@
         mContext = mComponentContextFixture.getTestDouble().getApplicationContext();
         mCallLogManager = new CallLogManager(mContext, mMockPhoneAccountRegistrar,
                 mMissedCallNotifier);
-        mContentProvider =
-                mContext.getContentResolver().acquireProvider("0@call_log");
         mDefaultAccountHandle = new PhoneAccountHandle(
                 new ComponentName("com.android.server.telecom.tests", "CallLogManagerTest"),
                 TEST_PHONE_ACCOUNT_ID,
@@ -150,6 +149,9 @@
                 UserHandle.of(CURRENT_USER_ID)
         );
 
+        // Since we can't mock ContentResolver directly, use a ContentProvider
+        when(mContext.getContentResolver()).thenReturn(ContentResolver.wrap(mContentProvider));
+
         UserManager userManager = (UserManager) mContext.getSystemService(Context.USER_SERVICE);
         UserInfo userInfo = new UserInfo(CURRENT_USER_ID, "test", 0);
         UserInfo otherUserInfo = new UserInfo(OTHER_USER_ID, "test2", 0);
@@ -159,9 +161,9 @@
         doAnswer(new Answer<Uri>() {
             @Override
             public Uri answer(InvocationOnMock invocation) throws Throwable {
-                return (Uri) invocation.getArguments()[1];
+                return (Uri) invocation.getArguments()[0];
             }
-        }).when(mContentProvider).insert(anyString(), any(Uri.class), any(ContentValues.class));
+        }).when(mContentProvider).insert(any(Uri.class), any(ContentValues.class));
 
         when(userManager.isUserRunning(any(UserHandle.class))).thenReturn(true);
         when(userManager.isUserUnlocked(any(UserHandle.class))).thenReturn(true);
@@ -538,13 +540,24 @@
 
         // Outgoing call placed through a phone account with multi user capability is inserted to
         // all users except managed profile.
-        ContentValues insertedValues = verifyInsertionWithCapture(CURRENT_USER_ID);
-        assertEquals(insertedValues.getAsInteger(CallLog.Calls.TYPE),
-                Integer.valueOf(CallLog.Calls.OUTGOING_TYPE));
-        insertedValues = verifyInsertionWithCapture(OTHER_USER_ID);
-        assertEquals(insertedValues.getAsInteger(CallLog.Calls.TYPE),
-                Integer.valueOf(CallLog.Calls.OUTGOING_TYPE));
-        verifyNoInsertionInUser(MANAGED_USER_ID);
+        SystemClock.sleep(TEST_TIMEOUT_MILLIS);
+
+        ArgumentCaptor<Uri> uris = ArgumentCaptor.forClass(Uri.class);
+        ArgumentCaptor<ContentValues> values = ArgumentCaptor.forClass(ContentValues.class);
+
+        verify(mContentProvider, atLeast(2)).insert(uris.capture(), values.capture());
+
+        assertTrue(uris.getAllValues().contains(
+                ContentProvider.maybeAddUserId(CallLog.Calls.CONTENT_URI, CURRENT_USER_ID)));
+        assertTrue(uris.getAllValues().contains(
+                ContentProvider.maybeAddUserId(CallLog.Calls.CONTENT_URI, OTHER_USER_ID)));
+        assertFalse(uris.getAllValues().contains(
+                ContentProvider.maybeAddUserId(CallLog.Calls.CONTENT_URI, MANAGED_USER_ID)));
+
+        for (ContentValues v : values.getAllValues()) {
+            assertEquals(v.getAsInteger(CallLog.Calls.TYPE),
+                    Integer.valueOf(CallLog.Calls.OUTGOING_TYPE));
+        }
     }
 
     @MediumTest
@@ -572,13 +585,24 @@
 
         // Incoming call using a phone account with multi user capability is inserted to all users
         // except managed profile.
-        ContentValues insertedValues = verifyInsertionWithCapture(CURRENT_USER_ID);
-        assertEquals(insertedValues.getAsInteger(CallLog.Calls.TYPE),
-                Integer.valueOf(CallLog.Calls.INCOMING_TYPE));
-        insertedValues = verifyInsertionWithCapture(OTHER_USER_ID);
-        assertEquals(insertedValues.getAsInteger(CallLog.Calls.TYPE),
-                Integer.valueOf(CallLog.Calls.INCOMING_TYPE));
-        verifyNoInsertionInUser(MANAGED_USER_ID);
+        SystemClock.sleep(TEST_TIMEOUT_MILLIS);
+
+        ArgumentCaptor<Uri> uris = ArgumentCaptor.forClass(Uri.class);
+        ArgumentCaptor<ContentValues> values = ArgumentCaptor.forClass(ContentValues.class);
+
+        verify(mContentProvider, atLeast(2)).insert(uris.capture(), values.capture());
+
+        assertTrue(uris.getAllValues().contains(
+                ContentProvider.maybeAddUserId(CallLog.Calls.CONTENT_URI, CURRENT_USER_ID)));
+        assertTrue(uris.getAllValues().contains(
+                ContentProvider.maybeAddUserId(CallLog.Calls.CONTENT_URI, OTHER_USER_ID)));
+        assertFalse(uris.getAllValues().contains(
+                ContentProvider.maybeAddUserId(CallLog.Calls.CONTENT_URI, MANAGED_USER_ID)));
+
+        for (ContentValues v : values.getAllValues()) {
+            assertEquals(v.getAsInteger(CallLog.Calls.TYPE),
+                    Integer.valueOf(CallLog.Calls.INCOMING_TYPE));
+        }
     }
 
     @MediumTest
@@ -929,48 +953,26 @@
     }
 
     private void verifyNoInsertion() {
-        try {
-            Thread.sleep(TEST_TIMEOUT_MILLIS);
-            verify(mContentProvider, never()).insert(any(String.class),
-                    any(Uri.class), any(ContentValues.class));
-        } catch (android.os.RemoteException e) {
-            fail("Remote exception occurred during test execution");
-        } catch (InterruptedException e) {
-            e.printStackTrace();
-        }
+        SystemClock.sleep(TEST_TIMEOUT_MILLIS);
+
+        verify(mContentProvider, never()).insert(any(Uri.class), any(ContentValues.class));
     }
 
-
     private void verifyNoInsertionInUser(int userId) {
-        try {
-            Uri uri = ContentProvider.maybeAddUserId(CallLog.Calls.CONTENT_URI, userId);
-            Thread.sleep(TEST_TIMEOUT_MILLIS);
-            verify(getContentProviderForUser(userId), never())
-                    .insert(any(String.class), eq(uri), any(ContentValues.class));
-        } catch (android.os.RemoteException e) {
-            fail("Remote exception occurred during test execution");
-        } catch (InterruptedException e) {
-            e.printStackTrace();
-        }
+        SystemClock.sleep(TEST_TIMEOUT_MILLIS);
+
+        Uri uri = ContentProvider.maybeAddUserId(CallLog.Calls.CONTENT_URI, userId);
+        verify(mContentProvider, never()).insert(eq(uri), any(ContentValues.class));
     }
 
     private ContentValues verifyInsertionWithCapture(int userId) {
+        Uri uri = ContentProvider.maybeAddUserId(CallLog.Calls.CONTENT_URI, userId);
         ArgumentCaptor<ContentValues> captor = ArgumentCaptor.forClass(ContentValues.class);
-        try {
-            Uri uri = ContentProvider.maybeAddUserId(CallLog.Calls.CONTENT_URI, userId);
-            verify(getContentProviderForUser(userId), timeout(TEST_TIMEOUT_MILLIS).atLeastOnce())
-                    .insert(any(String.class), eq(uri), captor.capture());
-        } catch (android.os.RemoteException e) {
-            fail("Remote exception occurred during test execution");
-        }
-
+        verify(mContentProvider, timeout(TEST_TIMEOUT_MILLIS).times(1)).insert(
+                eq(uri), captor.capture());
         return captor.getValue();
     }
 
-    private IContentProvider getContentProviderForUser(int userId) {
-        return mContext.getContentResolver().acquireProvider(userId + "@call_log");
-    }
-
     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/CallRecordingTonePlayerTest.java b/tests/src/com/android/server/telecom/tests/CallRecordingTonePlayerTest.java
index 5151d4c..b5c6468 100644
--- a/tests/src/com/android/server/telecom/tests/CallRecordingTonePlayerTest.java
+++ b/tests/src/com/android/server/telecom/tests/CallRecordingTonePlayerTest.java
@@ -22,22 +22,37 @@
 import static junit.framework.Assert.assertTrue;
 
 import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.nullable;
+import static org.mockito.Mockito.atLeast;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.reset;
+import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
 import android.content.ComponentName;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.media.AudioDeviceInfo;
 import android.media.AudioFormat;
 import android.media.AudioManager;
 import android.media.AudioRecordingConfiguration;
+import android.media.MediaPlayer;
 import android.media.MediaRecorder;
+import android.net.Uri;
 import android.os.Handler;
 import android.os.Looper;
 import android.telecom.PhoneAccountHandle;
 import android.test.suitebuilder.annotation.MediumTest;
 
+import com.android.dx.mockito.inline.extended.ExtendedMockito;
 import com.android.server.telecom.Call;
 import com.android.server.telecom.CallRecordingTonePlayer;
+import com.android.server.telecom.CallState;
 import com.android.server.telecom.TelecomSystem;
+import com.android.server.telecom.Timeouts;
 
 import org.junit.After;
 import org.junit.Before;
@@ -48,6 +63,7 @@
 import org.mockito.Mock;
 import org.mockito.Mockito;
 import org.mockito.MockitoAnnotations;
+import org.mockito.MockitoSession;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -62,22 +78,29 @@
     private static final String PHONE_ACCOUNT_CLASS = "MyFancyConnectionService";
     private static final String PHONE_ACCOUNT_ID = "1";
     private static final String RECORDING_APP_PACKAGE = "com.recording.app";
+    private static final long TEST_RECORDING_TONE_INTERVAL = 300L;
 
     private static final PhoneAccountHandle TEST_PHONE_ACCOUNT = new PhoneAccountHandle(
             new ComponentName(PHONE_ACCOUNT_PACKAGE, PHONE_ACCOUNT_CLASS), PHONE_ACCOUNT_ID);
 
     private CallRecordingTonePlayer mCallRecordingTonePlayer;
-    private TelecomSystem.SyncRoot mSyncRoot = new TelecomSystem.SyncRoot() { };
-    @Mock private AudioManager mAudioManager;
+    private TelecomSystem.SyncRoot mSyncRoot = new TelecomSystem.SyncRoot() {
+    };
+    @Mock
+    private AudioManager mAudioManager;
+    @Mock
+    private Timeouts.Adapter mTimeouts;
 
     @Override
     @Before
     public void setUp() throws Exception {
         super.setUp();
         MockitoAnnotations.initMocks(this);
+        when(mTimeouts.getCallRecordingToneRepeatIntervalMillis(nullable(ContentResolver.class)))
+                .thenReturn(500L);
         mCallRecordingTonePlayer = new CallRecordingTonePlayer(
                 mComponentContextFixture.getTestDouble().getApplicationContext(),
-                mAudioManager, mSyncRoot);
+                mAudioManager, mTimeouts, mSyncRoot);
         when(mAudioManager.getActiveRecordingConfigurations()).thenReturn(null);
     }
 
@@ -87,6 +110,45 @@
         super.tearDown();
     }
 
+    @MediumTest
+    @Test
+    public void testToneLooping() throws Exception {
+        MediaPlayer mockMediaPlayer = mock(MediaPlayer.class);
+        MockitoSession session = ExtendedMockito.mockitoSession().mockStatic(MediaPlayer.class)
+                .startMocking();
+        ExtendedMockito.doReturn(mockMediaPlayer).when(() ->
+                MediaPlayer.create(nullable(Context.class), anyInt()));
+
+        when(mAudioManager.getActiveRecordingConfigurations()).thenReturn(
+                getAudioRecordingConfig(RECORDING_APP_PACKAGE));
+
+        AudioDeviceInfo mockAudioDeviceInfo = mock(AudioDeviceInfo.class);
+        when(mockAudioDeviceInfo.getType()).thenReturn(AudioDeviceInfo.TYPE_TELEPHONY);
+        when(mAudioManager.getDevices(AudioManager.GET_DEVICES_OUTPUTS))
+                .thenReturn(new AudioDeviceInfo[] { mockAudioDeviceInfo });
+
+        Call call = addValidCall();
+        when(call.isActive()).thenReturn(true);
+        mCallRecordingTonePlayer.onCallStateChanged(call, CallState.NEW, CallState.ACTIVE);
+
+        waitForHandlerAction(Handler.getMain(), TEST_TIMEOUT);
+        verify(mockMediaPlayer).start();
+
+        // Sleep for 4x the interval, then make sure it played more. No exact count,
+        // since timing can be tricky in tests.
+        Thread.sleep(TEST_RECORDING_TONE_INTERVAL * 4);
+        verify(mockMediaPlayer, atLeast(2)).start();
+        reset(mockMediaPlayer);
+
+        // Remove the call and verify that we're not starting the tone anymore.
+        mCallRecordingTonePlayer.onCallRemoved(call);
+        Thread.sleep(TEST_RECORDING_TONE_INTERVAL * 3 + 50);
+        verify(mockMediaPlayer, never()).start();
+        verify(mockMediaPlayer).release();
+
+        session.finishMocking();
+    }
+
     /**
      * Ensures that child calls are not tracked.
      */
diff --git a/tests/src/com/android/server/telecom/tests/CallsManagerTest.java b/tests/src/com/android/server/telecom/tests/CallsManagerTest.java
index 4796ed2..0cc04d6 100644
--- a/tests/src/com/android/server/telecom/tests/CallsManagerTest.java
+++ b/tests/src/com/android/server/telecom/tests/CallsManagerTest.java
@@ -66,6 +66,7 @@
 import com.android.server.telecom.CallState;
 import com.android.server.telecom.CallerInfoLookupHelper;
 import com.android.server.telecom.CallsManager;
+import com.android.server.telecom.CallsManagerListenerBase;
 import com.android.server.telecom.ClockProxy;
 import com.android.server.telecom.ConnectionServiceFocusManager;
 import com.android.server.telecom.ConnectionServiceFocusManager.ConnectionServiceFocusManagerFactory;
@@ -1301,8 +1302,8 @@
     @SmallTest
     @Test
     public void testParentInheritsChildConnectTime() throws Exception {
-        Call callSim1 = createCall(SIM_1_HANDLE, CallState.ACTIVE);
-        Call callSim2 = createCall(SIM_1_HANDLE, CallState.ACTIVE);
+        Call callSim1 = createCall(SIM_1_HANDLE, null, CallState.ACTIVE);
+        Call callSim2 = createCall(SIM_1_HANDLE, null, CallState.ACTIVE);
         callSim1.setConnectTimeMillis(100);
 
         // Pretend it is a conference made later.
@@ -1314,7 +1315,7 @@
         assertEquals(100, callSim2.getConnectTimeMillis());
 
         // Add another later call.
-        Call callSim3 = createCall(SIM_1_HANDLE, CallState.ACTIVE);
+        Call callSim3 = createCall(SIM_1_HANDLE, null, CallState.ACTIVE);
         callSim3.setConnectTimeMillis(200);
         callSim3.setChildOf(callSim2);
 
@@ -1410,6 +1411,26 @@
         verify(heldCall).unhold(any());
     }
 
+    /**
+     * Verifies we inform the InCallService on local disconnect.
+     * @throws Exception
+     */
+    @SmallTest
+    @Test
+    public void testRequestDisconnect() throws Exception {
+        CallsManager.CallsManagerListener listener = mock(CallsManager.CallsManagerListener.class);
+        mCallsManager.addListener(listener);
+
+        Call ongoingCall = addSpyCall(CallState.ACTIVE);
+        mCallsManager.addCall(ongoingCall);
+
+        mCallsManager.disconnectCall(ongoingCall);
+        // Seems odd, but ultimately the call state is still active even though it is locally
+        // disconnecting.
+        verify(listener).onCallStateChanged(eq(ongoingCall), eq(CallState.ACTIVE),
+                eq(CallState.ACTIVE));
+    }
+
     private Call addSpyCall() {
         return addSpyCall(SIM_2_HANDLE, CallState.ACTIVE);
     }
diff --git a/tests/src/com/android/server/telecom/tests/MissedCallNotifierImplTest.java b/tests/src/com/android/server/telecom/tests/MissedCallNotifierImplTest.java
index fa59059..10a0194 100644
--- a/tests/src/com/android/server/telecom/tests/MissedCallNotifierImplTest.java
+++ b/tests/src/com/android/server/telecom/tests/MissedCallNotifierImplTest.java
@@ -445,7 +445,7 @@
                         CallLog.Calls.PRESENTATION_ALLOWED, CALL_TIMESTAMP)
                 .build();
 
-        when(cp.query(anyString(), eq(queryUri), nullable(String[].class),
+        when(cp.query(anyString(), nullable(String.class), eq(queryUri), nullable(String[].class),
                 nullable(Bundle.class), nullable(ICancellationSignal.class)))
                 .thenReturn(mockMissedCallsCursor);
 
@@ -514,7 +514,7 @@
                 PRIMARY_USER.getIdentifier());
         IContentProvider cp = getContentProviderForUser(PRIMARY_USER.getIdentifier());
 
-        when(cp.query(anyString(), eq(queryUri), nullable(String[].class),
+        when(cp.query(anyString(), nullable(String.class), eq(queryUri), nullable(String[].class),
                 nullable(Bundle.class), nullable(ICancellationSignal.class)))
                 .thenReturn(mockMissedCallsCursor);
 
diff --git a/tests/src/com/android/server/telecom/tests/RingerTest.java b/tests/src/com/android/server/telecom/tests/RingerTest.java
index 53ddd93..38f63d2 100644
--- a/tests/src/com/android/server/telecom/tests/RingerTest.java
+++ b/tests/src/com/android/server/telecom/tests/RingerTest.java
@@ -374,7 +374,6 @@
         mRingerUnderTest.startCallWaiting(mockCall1);
         ensureRingerIsAudible();
         enableRampingRinger();
-        enableRampingRingerFromDeviceConfig();
         mFuture.complete(false); // not using audio coupled haptics
         enableVibrationWhenRinging();
         assertTrue(mRingerUnderTest.startRinging(mockCall2, false));
@@ -442,8 +441,4 @@
     private void enableRampingRinger() {
         when(mockSystemSettingsUtil.applyRampingRinger(any(Context.class))).thenReturn(true);
     }
-
-    private void enableRampingRingerFromDeviceConfig() {
-        when(mockSystemSettingsUtil.enableRampingRingerFromDeviceConfig()).thenReturn(true);
-    }
 }
diff --git a/tests/src/com/android/server/telecom/tests/TelecomServiceImplTest.java b/tests/src/com/android/server/telecom/tests/TelecomServiceImplTest.java
index 815b523..0dfe29a 100644
--- a/tests/src/com/android/server/telecom/tests/TelecomServiceImplTest.java
+++ b/tests/src/com/android/server/telecom/tests/TelecomServiceImplTest.java
@@ -19,6 +19,7 @@
 import static android.Manifest.permission.CALL_PHONE;
 import static android.Manifest.permission.CALL_PRIVILEGED;
 import static android.Manifest.permission.MODIFY_PHONE_STATE;
+import static android.Manifest.permission.READ_PHONE_NUMBERS;
 import static android.Manifest.permission.READ_PHONE_STATE;
 import static android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE;
 
@@ -32,6 +33,7 @@
 import android.content.pm.PackageManager;
 import android.net.Uri;
 import android.os.Binder;
+import android.os.Build;
 import android.os.Bundle;
 import android.os.RemoteException;
 import android.os.UserHandle;
@@ -70,6 +72,7 @@
 import java.util.concurrent.Executor;
 import java.util.function.IntConsumer;
 
+import static android.Manifest.permission.READ_SMS;
 import static android.Manifest.permission.REGISTER_SIM_SUBSCRIPTION;
 import static android.Manifest.permission.WRITE_SECURE_SETTINGS;
 import static org.junit.Assert.assertEquals;
@@ -168,6 +171,8 @@
     private TelecomServiceImpl.SettingsSecureAdapter mSettingsSecureAdapter =
         spy(new SettingsSecureAdapterFake());
     @Mock private UserCallIntentProcessor mUserCallIntentProcessor;
+    private PackageManager mPackageManager;
+    @Mock private ApplicationInfo mApplicationInfo;
 
     private final TelecomSystem.SyncRoot mLock = new TelecomSystem.SyncRoot() { };
 
@@ -230,6 +235,8 @@
                 .thenReturn(DEFAULT_DIALER_PACKAGE);
         when(mDefaultDialerCache.isDefaultOrSystemDialer(eq(DEFAULT_DIALER_PACKAGE), anyInt()))
                 .thenReturn(true);
+
+        mPackageManager = mContext.getPackageManager();
     }
 
     @Override
@@ -248,13 +255,50 @@
                 .getOutgoingPhoneAccountForScheme(eq("sip"), any(UserHandle.class)))
                 .thenReturn(SIP_PA_HANDLE_17);
         makeAccountsVisibleToAllUsers(TEL_PA_HANDLE_16, SIP_PA_HANDLE_17);
+        PhoneAccount phoneAccount = makePhoneAccount(TEL_PA_HANDLE_CURRENT).build();
+        phoneAccount.setIsEnabled(true);
+        doReturn(phoneAccount).when(mFakePhoneAccountRegistrar).getPhoneAccount(
+                eq(TEL_PA_HANDLE_CURRENT), any(UserHandle.class));
+        doNothing().when(mAppOpsManager).checkPackage(anyInt(), anyString());
 
         PhoneAccountHandle returnedHandleTel
-                = mTSIBinder.getDefaultOutgoingPhoneAccount("tel", DEFAULT_DIALER_PACKAGE);
+                = mTSIBinder.getDefaultOutgoingPhoneAccount("tel", DEFAULT_DIALER_PACKAGE, null);
         assertEquals(TEL_PA_HANDLE_16, returnedHandleTel);
 
         PhoneAccountHandle returnedHandleSip
-                = mTSIBinder.getDefaultOutgoingPhoneAccount("sip", DEFAULT_DIALER_PACKAGE);
+                = mTSIBinder.getDefaultOutgoingPhoneAccount("sip", DEFAULT_DIALER_PACKAGE, null);
+        assertEquals(SIP_PA_HANDLE_17, returnedHandleSip);
+    }
+
+    @SmallTest
+    @Test
+    public void testGetDefaultOutgoingPhoneAccountSucceedsIfCallerIsSimCallManager()
+            throws RemoteException {
+        when(mFakePhoneAccountRegistrar
+                .getOutgoingPhoneAccountForScheme(eq("tel"), any(UserHandle.class)))
+                .thenReturn(TEL_PA_HANDLE_16);
+        when(mFakePhoneAccountRegistrar
+                .getOutgoingPhoneAccountForScheme(eq("sip"), any(UserHandle.class)))
+                .thenReturn(SIP_PA_HANDLE_17);
+        makeAccountsVisibleToAllUsers(TEL_PA_HANDLE_16, SIP_PA_HANDLE_17);
+        PhoneAccount phoneAccount = makePhoneAccount(TEL_PA_HANDLE_CURRENT).build();
+        phoneAccount.setIsEnabled(true);
+        doReturn(phoneAccount).when(mFakePhoneAccountRegistrar).getPhoneAccount(
+                eq(TEL_PA_HANDLE_CURRENT), any(UserHandle.class));
+        doReturn(TEL_PA_HANDLE_CURRENT).when(mFakePhoneAccountRegistrar)
+                .getSimCallManagerFromHandle(
+                eq(TEL_PA_HANDLE_CURRENT), any(UserHandle.class));
+        // doNothing will make #isCallerSimCallManager return true
+        doNothing().when(mAppOpsManager).checkPackage(anyInt(), anyString());
+        doThrow(new SecurityException()).when(mContext)
+                .enforceCallingOrSelfPermission(eq(READ_PRIVILEGED_PHONE_STATE), anyString());
+
+        PhoneAccountHandle returnedHandleTel
+                = mTSIBinder.getDefaultOutgoingPhoneAccount("tel", DEFAULT_DIALER_PACKAGE, null);
+        assertEquals(TEL_PA_HANDLE_16, returnedHandleTel);
+
+        PhoneAccountHandle returnedHandleSip
+                = mTSIBinder.getDefaultOutgoingPhoneAccount("sip", DEFAULT_DIALER_PACKAGE, null);
         assertEquals(SIP_PA_HANDLE_17, returnedHandleSip);
     }
 
@@ -269,13 +313,21 @@
                 .thenReturn(TEL_PA_HANDLE_16);
         when(mFakePhoneAccountRegistrar.getPhoneAccountUnchecked(TEL_PA_HANDLE_16)).thenReturn(
                 makePhoneAccount(TEL_PA_HANDLE_16).build());
-        when(mAppOpsManager.noteOp(eq(AppOpsManager.OP_READ_PHONE_STATE), anyInt(), anyString()))
+        when(mAppOpsManager.noteOp(eq(AppOpsManager.OP_READ_PHONE_STATE), anyInt(), anyString(),
+                nullable(String.class), nullable(String.class)))
                 .thenReturn(AppOpsManager.MODE_IGNORED);
+        PhoneAccount phoneAccount = makePhoneAccount(TEL_PA_HANDLE_CURRENT).build();
+        phoneAccount.setIsEnabled(true);
+        doReturn(phoneAccount).when(mFakePhoneAccountRegistrar).getPhoneAccount(
+                eq(TEL_PA_HANDLE_CURRENT), any(UserHandle.class));
+        doReturn(TEL_PA_HANDLE_16).when(mFakePhoneAccountRegistrar).getSimCallManagerFromHandle(
+                eq(TEL_PA_HANDLE_CURRENT), any(UserHandle.class));
+        doNothing().when(mAppOpsManager).checkPackage(anyInt(), anyString());
         doThrow(new SecurityException()).when(mContext)
                 .enforceCallingOrSelfPermission(eq(READ_PRIVILEGED_PHONE_STATE), anyString());
 
         PhoneAccountHandle returnedHandleTel
-                = mTSIBinder.getDefaultOutgoingPhoneAccount("tel", "");
+                = mTSIBinder.getDefaultOutgoingPhoneAccount("tel", "", null);
         assertNull(returnedHandleTel);
     }
 
@@ -338,9 +390,9 @@
         makeAccountsVisibleToAllUsers(TEL_PA_HANDLE_16, SIP_PA_HANDLE_17);
 
         assertEquals(fullPHList,
-                mTSIBinder.getCallCapablePhoneAccounts(true, DEFAULT_DIALER_PACKAGE));
+                mTSIBinder.getCallCapablePhoneAccounts(true, DEFAULT_DIALER_PACKAGE, null));
         assertEquals(smallPHList,
-                mTSIBinder.getCallCapablePhoneAccounts(false, DEFAULT_DIALER_PACKAGE));
+                mTSIBinder.getCallCapablePhoneAccounts(false, DEFAULT_DIALER_PACKAGE, null));
     }
 
     @SmallTest
@@ -355,7 +407,7 @@
 
         List<PhoneAccountHandle> result = null;
         try {
-            result = mTSIBinder.getCallCapablePhoneAccounts(true, "");
+            result = mTSIBinder.getCallCapablePhoneAccounts(true, "", null);
         } catch (SecurityException e) {
             // intended behavior
         }
@@ -684,14 +736,15 @@
         Uri handle = Uri.parse("tel:6505551234");
         Bundle extras = createSampleExtras();
 
-        when(mAppOpsManager.noteOp(eq(AppOpsManager.OP_CALL_PHONE), anyInt(), anyString()))
+        when(mAppOpsManager.noteOp(eq(AppOpsManager.OP_CALL_PHONE), anyInt(), anyString(),
+                nullable(String.class), nullable(String.class)))
                 .thenReturn(AppOpsManager.MODE_ALLOWED);
         doReturn(PackageManager.PERMISSION_GRANTED)
                 .when(mContext).checkCallingPermission(CALL_PHONE);
         doReturn(PackageManager.PERMISSION_DENIED)
                 .when(mContext).checkCallingPermission(CALL_PRIVILEGED);
 
-        mTSIBinder.placeCall(handle, extras, DEFAULT_DIALER_PACKAGE);
+        mTSIBinder.placeCall(handle, extras, DEFAULT_DIALER_PACKAGE, null);
         placeCallTestHelper(handle, extras, true);
     }
 
@@ -701,14 +754,15 @@
         Uri handle = Uri.parse("tel:6505551234");
         Bundle extras = createSampleExtras();
 
-        when(mAppOpsManager.noteOp(eq(AppOpsManager.OP_CALL_PHONE), anyInt(), anyString()))
+        when(mAppOpsManager.noteOp(eq(AppOpsManager.OP_CALL_PHONE), anyInt(), anyString(),
+                nullable(String.class), nullable(String.class)))
                 .thenReturn(AppOpsManager.MODE_IGNORED);
         doReturn(PackageManager.PERMISSION_GRANTED)
                 .when(mContext).checkCallingPermission(CALL_PHONE);
         doReturn(PackageManager.PERMISSION_DENIED)
                 .when(mContext).checkCallingPermission(CALL_PRIVILEGED);
 
-        mTSIBinder.placeCall(handle, extras, DEFAULT_DIALER_PACKAGE);
+        mTSIBinder.placeCall(handle, extras, DEFAULT_DIALER_PACKAGE, null);
         placeCallTestHelper(handle, extras, false);
     }
 
@@ -718,14 +772,15 @@
         Uri handle = Uri.parse("tel:6505551234");
         Bundle extras = createSampleExtras();
 
-        when(mAppOpsManager.noteOp(eq(AppOpsManager.OP_CALL_PHONE), anyInt(), anyString()))
+        when(mAppOpsManager.noteOp(eq(AppOpsManager.OP_CALL_PHONE), anyInt(), anyString(),
+                nullable(String.class), nullable(String.class)))
                 .thenReturn(AppOpsManager.MODE_ALLOWED);
         doReturn(PackageManager.PERMISSION_DENIED)
                 .when(mContext).checkCallingPermission(CALL_PHONE);
         doReturn(PackageManager.PERMISSION_DENIED)
                 .when(mContext).checkCallingPermission(CALL_PRIVILEGED);
 
-        mTSIBinder.placeCall(handle, extras, DEFAULT_DIALER_PACKAGE);
+        mTSIBinder.placeCall(handle, extras, DEFAULT_DIALER_PACKAGE, null);
         placeCallTestHelper(handle, extras, false);
     }
 
@@ -750,7 +805,7 @@
                 .when(mContext).enforceCallingOrSelfPermission(eq(CALL_PHONE), anyString());
 
         try {
-            mTSIBinder.placeCall(handle, extras, "arbitrary_package_name");
+            mTSIBinder.placeCall(handle, extras, "arbitrary_package_name", null);
         } catch (SecurityException e) {
             // expected
         }
@@ -823,7 +878,7 @@
         doReturn(true).when(mFakePhoneAccountRegistrar).isVoiceMailNumber(TEL_PA_HANDLE_CURRENT,
                 vmNumber);
         assertTrue(mTSIBinder.isVoiceMailNumber(TEL_PA_HANDLE_CURRENT,
-                vmNumber, DEFAULT_DIALER_PACKAGE));
+                vmNumber, DEFAULT_DIALER_PACKAGE, null));
     }
 
     @SmallTest
@@ -837,7 +892,7 @@
         when(mFakePhoneAccountRegistrar.getPhoneAccount(TEL_PA_HANDLE_CURRENT,
                 Binder.getCallingUserHandle())).thenReturn(null);
         assertFalse(mTSIBinder
-                .isVoiceMailNumber(TEL_PA_HANDLE_CURRENT, vmNumber, DEFAULT_DIALER_PACKAGE));
+                .isVoiceMailNumber(TEL_PA_HANDLE_CURRENT, vmNumber, DEFAULT_DIALER_PACKAGE, null));
     }
 
     @SmallTest
@@ -854,7 +909,7 @@
                 (TelephonyManager) mContext.getSystemService(Context.TELEPHONY_SERVICE);
         when(mockTelephonyManager.getVoiceMailNumber()).thenReturn(vmNumber);
 
-        assertEquals(vmNumber, mTSIBinder.getVoiceMailNumber(null, DEFAULT_DIALER_PACKAGE));
+        assertEquals(vmNumber, mTSIBinder.getVoiceMailNumber(null, DEFAULT_DIALER_PACKAGE, null));
     }
 
     @SmallTest
@@ -873,23 +928,147 @@
                 .thenReturn(subId);
 
         assertEquals(vmNumber,
-                mTSIBinder.getVoiceMailNumber(TEL_PA_HANDLE_CURRENT, DEFAULT_DIALER_PACKAGE));
+                mTSIBinder.getVoiceMailNumber(TEL_PA_HANDLE_CURRENT, DEFAULT_DIALER_PACKAGE, null));
     }
 
     @SmallTest
     @Test
-    public void testGetLine1Number() throws Exception {
+    public void testGetLine1NumberWithNoPermissionTargetPreR() throws Exception {
+        setupGetLine1NumberTest();
+        setTargetSdkVersion(Build.VERSION_CODES.Q);
+
+        try {
+            String line1Number = mTSIBinder.getLine1Number(TEL_PA_HANDLE_CURRENT,
+                    DEFAULT_DIALER_PACKAGE, null);
+            fail("Should have thrown a SecurityException when invoking getLine1Number without "
+                    + "permission, received "
+                    + line1Number);
+        } catch (SecurityException expected) {
+        }
+    }
+
+    @SmallTest
+    @Test
+    public void testGetLine1NumberWithNoPermissionTargetR() throws Exception {
+        setupGetLine1NumberTest();
+
+        try {
+            String line1Number = mTSIBinder.getLine1Number(TEL_PA_HANDLE_CURRENT,
+                    DEFAULT_DIALER_PACKAGE, null);
+            fail("Should have thrown a SecurityException when invoking getLine1Number without "
+                    + "permission, received "
+                    + line1Number);
+        } catch (SecurityException expected) {
+        }
+    }
+
+    @SmallTest
+    @Test
+    public void testGetLine1NumberWithReadPhoneStateTargetPreR() throws Exception {
+        String line1Number = setupGetLine1NumberTest();
+        setTargetSdkVersion(Build.VERSION_CODES.Q);
+        grantPermissionAndAppOp(READ_PHONE_STATE, AppOpsManager.OPSTR_READ_PHONE_STATE);
+
+        assertEquals(line1Number,
+                mTSIBinder.getLine1Number(TEL_PA_HANDLE_CURRENT, DEFAULT_DIALER_PACKAGE, null));
+    }
+
+    @SmallTest
+    @Test
+    public void testGetLine1NumberWithReadPhoneStateTargetR() throws Exception {
+        setupGetLine1NumberTest();
+        grantPermissionAndAppOp(READ_PHONE_STATE, AppOpsManager.OPSTR_READ_PHONE_STATE);
+
+        try {
+            String line1Number = mTSIBinder.getLine1Number(TEL_PA_HANDLE_CURRENT,
+                    DEFAULT_DIALER_PACKAGE, null);
+            fail("Should have thrown a SecurityException when invoking getLine1Number on target R"
+                    + " with READ_PHONE_STATE permission, received "
+                    + line1Number);
+        } catch (SecurityException expected) {
+        }
+    }
+
+    @SmallTest
+    @Test
+    public void testGetLine1NumberWithReadPhoneNumbersTargetR() throws Exception {
+        String line1Number = setupGetLine1NumberTest();
+        grantPermissionAndAppOp(READ_PHONE_NUMBERS, AppOpsManager.OPSTR_READ_PHONE_NUMBERS);
+
+        assertEquals(line1Number,
+                mTSIBinder.getLine1Number(TEL_PA_HANDLE_CURRENT, DEFAULT_DIALER_PACKAGE, null));
+    }
+
+    @SmallTest
+    @Test
+    public void testGetLine1NumberWithReadSmsTargetR() throws Exception {
+        String line1Number = setupGetLine1NumberTest();
+        grantPermissionAndAppOp(READ_SMS, AppOpsManager.OPSTR_READ_SMS);
+
+        assertEquals(line1Number,
+                mTSIBinder.getLine1Number(TEL_PA_HANDLE_CURRENT, DEFAULT_DIALER_PACKAGE, null));
+    }
+
+    @SmallTest
+    @Test
+    public void testGetLine1NumberWithWriteSmsTargetR() throws Exception {
+        String line1Number = setupGetLine1NumberTest();
+        doReturn(AppOpsManager.MODE_ALLOWED).when(mAppOpsManager).noteOpNoThrow(
+                eq(AppOpsManager.OPSTR_WRITE_SMS), anyInt(), eq(DEFAULT_DIALER_PACKAGE), any(),
+                any());
+
+        assertEquals(line1Number,
+                mTSIBinder.getLine1Number(TEL_PA_HANDLE_CURRENT, DEFAULT_DIALER_PACKAGE, null));
+    }
+
+
+    @SmallTest
+    @Test
+    public void testGetLine1NumberAsDefaultDialer() throws Exception {
+        String line1Number = setupGetLine1NumberTest();
+        doReturn(true).when(mDefaultDialerCache).isDefaultOrSystemDialer(
+                eq(DEFAULT_DIALER_PACKAGE), anyInt());
+
+        assertEquals(line1Number,
+                mTSIBinder.getLine1Number(TEL_PA_HANDLE_CURRENT, DEFAULT_DIALER_PACKAGE, null));
+    }
+
+    private String setupGetLine1NumberTest() throws Exception {
         int subId = 58374;
         String line1Number = "9482752023479";
+
+        setTargetSdkVersion(Build.VERSION_CODES.R);
+        doReturn(AppOpsManager.MODE_DEFAULT).when(mAppOpsManager).noteOpNoThrow(anyString(),
+                anyInt(), eq(DEFAULT_DIALER_PACKAGE), any(), any());
         makeAccountsVisibleToAllUsers(TEL_PA_HANDLE_CURRENT);
         when(mFakePhoneAccountRegistrar.getSubscriptionIdForPhoneAccount(TEL_PA_HANDLE_CURRENT))
                 .thenReturn(subId);
         TelephonyManager mockTelephonyManager =
                 (TelephonyManager) mContext.getSystemService(Context.TELEPHONY_SERVICE);
         when(mockTelephonyManager.getLine1Number()).thenReturn(line1Number);
+        doThrow(new SecurityException()).when(mContext).enforceCallingOrSelfPermission(anyString(),
+                anyString());
+        doReturn(PackageManager.PERMISSION_DENIED).when(mContext).checkCallingOrSelfPermission(
+                anyString());
+        doReturn(false).when(mDefaultDialerCache).isDefaultOrSystemDialer(
+                eq(DEFAULT_DIALER_PACKAGE), anyInt());
+        return line1Number;
+    }
 
-        assertEquals(line1Number,
-                mTSIBinder.getLine1Number(TEL_PA_HANDLE_CURRENT, DEFAULT_DIALER_PACKAGE));
+    private void grantPermissionAndAppOp(String permission, String appop) {
+        doReturn(PackageManager.PERMISSION_GRANTED).when(mContext).checkCallingOrSelfPermission(
+                eq(permission));
+        doNothing().when(mContext).enforceCallingOrSelfPermission(eq(permission), anyString());
+        doReturn(AppOpsManager.MODE_ALLOWED).when(mAppOpsManager).noteOp(eq(appop), anyInt(),
+                eq(DEFAULT_DIALER_PACKAGE), any(), any());
+        doReturn(AppOpsManager.MODE_ALLOWED).when(mAppOpsManager).noteOpNoThrow(eq(appop), anyInt(),
+                eq(DEFAULT_DIALER_PACKAGE), any(), any());
+    }
+
+    private void setTargetSdkVersion(int targetSdkVersion) throws Exception {
+        mApplicationInfo.targetSdkVersion = targetSdkVersion;
+        doReturn(mApplicationInfo).when(mPackageManager).getApplicationInfoAsUser(
+                eq(DEFAULT_DIALER_PACKAGE), anyInt(), any());
     }
 
     @SmallTest
@@ -970,14 +1149,14 @@
     @Test
     public void testIsInCall() throws Exception {
         when(mFakeCallsManager.hasOngoingCalls()).thenReturn(true);
-        assertTrue(mTSIBinder.isInCall(DEFAULT_DIALER_PACKAGE));
+        assertTrue(mTSIBinder.isInCall(DEFAULT_DIALER_PACKAGE, null));
     }
 
     @SmallTest
     @Test
     public void testNotIsInCall() throws Exception {
         when(mFakeCallsManager.hasOngoingCalls()).thenReturn(false);
-        assertFalse(mTSIBinder.isInCall(DEFAULT_DIALER_PACKAGE));
+        assertFalse(mTSIBinder.isInCall(DEFAULT_DIALER_PACKAGE, null));
     }
 
     @SmallTest
@@ -986,7 +1165,7 @@
         doThrow(new SecurityException()).when(mContext).enforceCallingOrSelfPermission(
                 anyString(), any());
         try {
-            mTSIBinder.isInCall("blah");
+            mTSIBinder.isInCall("blah", null);
             fail();
         } catch (SecurityException e) {
             // desired result
@@ -998,14 +1177,14 @@
     @Test
     public void testIsInManagedCall() throws Exception {
         when(mFakeCallsManager.hasOngoingManagedCalls()).thenReturn(true);
-        assertTrue(mTSIBinder.isInManagedCall(DEFAULT_DIALER_PACKAGE));
+        assertTrue(mTSIBinder.isInManagedCall(DEFAULT_DIALER_PACKAGE, null));
     }
 
     @SmallTest
     @Test
     public void testNotIsInManagedCall() throws Exception {
         when(mFakeCallsManager.hasOngoingManagedCalls()).thenReturn(false);
-        assertFalse(mTSIBinder.isInManagedCall(DEFAULT_DIALER_PACKAGE));
+        assertFalse(mTSIBinder.isInManagedCall(DEFAULT_DIALER_PACKAGE, null));
     }
 
     @SmallTest
@@ -1014,7 +1193,7 @@
         doThrow(new SecurityException()).when(mContext).enforceCallingOrSelfPermission(
                 anyString(), any());
         try {
-            mTSIBinder.isInManagedCall("blah");
+            mTSIBinder.isInManagedCall("blah", null);
             fail();
         } catch (SecurityException e) {
             // desired result