Merge "Support different SIM power states"
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index 3de29cf..6e041c1 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -159,7 +159,7 @@
     <string name="vm_change_pin_error_system_error" msgid="6610603326230000207">"No es pot canviar el PIN"</string>
     <string name="vvm_unsupported_message_format" msgid="11795090778411977">"Aquest tipus de missatge no s\'admet. Truca al <xliff:g id="NUMBER">%s</xliff:g> per escoltar-lo."</string>
     <string name="mobile_networks" msgid="5540397602919106177">"Configuració de la xarxa mòbil"</string>
-    <string name="network_settings_title" msgid="514120489499925574">"Xarxa de telefonia mòbil"</string>
+    <string name="network_settings_title" msgid="514120489499925574">"Xarxa mòbil"</string>
     <string name="label_available" msgid="1181658289009300430">"Xarxes disponibles"</string>
     <string name="load_networks_progress" msgid="5230707536168902952">"S\'està cercant…"</string>
     <string name="empty_networks_list" msgid="4249426905018815316">"No s\'ha trobat cap xarxa."</string>
diff --git a/res/values-gl/strings.xml b/res/values-gl/strings.xml
index 26ff0be..b025b3a 100644
--- a/res/values-gl/strings.xml
+++ b/res/values-gl/strings.xml
@@ -78,7 +78,7 @@
     <string name="voicemail_settings_with_label" msgid="152724978380748296">"Correo de voz (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="voicemail_abbreviated" msgid="2215592488517217448">"CV:"</string>
     <string name="networks" msgid="8873030692174541976">"Operadores de rede"</string>
-    <string name="cell_broadcast_settings" msgid="8740238216690502563">"Emisións de emerxencia"</string>
+    <string name="cell_broadcast_settings" msgid="8740238216690502563">"Difusións de emerxencia"</string>
     <string name="call_settings" msgid="6112441768261754562">"Configuración de chamada"</string>
     <string name="additional_gsm_call_settings" msgid="1391795981938800617">"Configuración adicional"</string>
     <string name="additional_gsm_call_settings_with_label" msgid="1385241520708457376">"Configuración adicional (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
@@ -216,8 +216,8 @@
     <string name="data_enable_summary" msgid="2382798156640007971">"Permitir o uso de datos"</string>
     <string name="dialog_alert_title" msgid="6751344986194435476">"Atención"</string>
     <string name="roaming" msgid="8871412572928323707">"Itinerancia de datos"</string>
-    <string name="roaming_enable" msgid="7331106985174381987">"Conecta cos servizos de datos durante a itinerancia"</string>
-    <string name="roaming_disable" msgid="1843417228755568110">"Conecta cos servizos de datos durante a itinerancia"</string>
+    <string name="roaming_enable" msgid="7331106985174381987">"Conéctase aos servizos de datos durante a itinerancia"</string>
+    <string name="roaming_disable" msgid="1843417228755568110">"Conéctase aos servizos de datos durante a itinerancia"</string>
     <string name="roaming_reenable_message" msgid="8913735676127858115">"Perdiches a conectividade de datos debido a que abandonaches a túa rede doméstica coa itinerancia de datos desactivada."</string>
     <string name="roaming_warning" msgid="1603164667540144353">"É posible que se apliquen custos elevados."</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"Permitir a itinerancia de datos?"</string>
diff --git a/res/values-hy/strings.xml b/res/values-hy/strings.xml
index 5b57c47..3654d4a 100644
--- a/res/values-hy/strings.xml
+++ b/res/values-hy/strings.xml
@@ -216,8 +216,8 @@
     <string name="data_enable_summary" msgid="2382798156640007971">"Թույլատրել տվյալների օգտագործումը"</string>
     <string name="dialog_alert_title" msgid="6751344986194435476">"Ուշադրություն"</string>
     <string name="roaming" msgid="8871412572928323707">"Տվյալների ռոումինգ"</string>
-    <string name="roaming_enable" msgid="7331106985174381987">"Միանալ տվյալների փոխանցման ծառայություններին ռոումինգում գտնվելիս"</string>
-    <string name="roaming_disable" msgid="1843417228755568110">"Միանալ տվյալների փոխանցման ծառայություններին ռոումինգում գտնվելիս"</string>
+    <string name="roaming_enable" msgid="7331106985174381987">"Միանալ տվյալների փոխանցման ծառայություններին ռոումինգում"</string>
+    <string name="roaming_disable" msgid="1843417228755568110">"Միանալ տվյալների փոխանցման ծառայություններին ռոումինգում"</string>
     <string name="roaming_reenable_message" msgid="8913735676127858115">"Դուք կորցրել եք տվյալների կապը, քանի որ անջատված եք թողել ձեր գլխավոր ցանցի տվյալների ռոումինգը:"</string>
     <string name="roaming_warning" msgid="1603164667540144353">"Դրա համար ձեզանից կարող են զգալի վճարներ գանձվել:"</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"Թույլատրե՞լ տվյալների ռոումինգը:"</string>
@@ -340,7 +340,7 @@
     <item msgid="1205664026446156265">"Ավտոմատ"</item>
   </string-array>
     <string name="cdma_subscription_title" msgid="1162564010076763284">"CDMA բաժանորդագրում"</string>
-    <string name="cdma_subscription_summary" msgid="2530890766115781140">"Փոխել RUIM/SIM-ի և NV-ի միջև"</string>
+    <string name="cdma_subscription_summary" msgid="2530890766115781140">"Փոխել RUIM/SIM քարտի և NV-ի միջև"</string>
     <string name="cdma_subscription_dialogtitle" msgid="2699527950523333110">"բաժանորդագրում"</string>
   <string-array name="cdma_subscription_choices">
     <item msgid="2258014151300708431">"RUIM/SIM"</item>
@@ -490,7 +490,7 @@
     <string name="onscreenVideoCallText" msgid="4800924186056115442">"Տեսազանգել"</string>
     <string name="importSimEntry" msgid="6614358325359736031">"Ներմուծել"</string>
     <string name="importAllSimEntries" msgid="1503181169636198673">"Ներմուծել բոլորը"</string>
-    <string name="importingSimContacts" msgid="7374056215462575769">"Ներմուծվում է SIM-ի կոնտակտներից"</string>
+    <string name="importingSimContacts" msgid="7374056215462575769">"Ներմուծվում է SIM քարտի կոնտակտներից"</string>
     <string name="importToFDNfromContacts" msgid="2130620207013368580">"Ներմուծել կոնտակտներից"</string>
     <string name="singleContactImportedMsg" msgid="6868483416182599206">"Ներմուծված կոնտակտ"</string>
     <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"Չհաջողվեց ներմուծել կոնտակտը"</string>
diff --git a/res/values-mk/strings.xml b/res/values-mk/strings.xml
index 618dacd..34b67a8 100644
--- a/res/values-mk/strings.xml
+++ b/res/values-mk/strings.xml
@@ -43,11 +43,11 @@
     <string name="pause_prompt_no" msgid="6686238803236884877">"Не"</string>
     <string name="wild_prompt_str" msgid="5543521676355533577">"Замени резервен знак со"</string>
     <string name="no_vm_number" msgid="4164780423805688336">"Недостасува број на говорна пошта"</string>
-    <string name="no_vm_number_msg" msgid="1300729501030053828">"Нема мемориран број на говорна пошта на СИМ картичката."</string>
+    <string name="no_vm_number_msg" msgid="1300729501030053828">"Нема мемориран број на говорна пошта на SIM картичката."</string>
     <string name="add_vm_number_str" msgid="4676479471644687453">"Додај број"</string>
     <string name="voice_number_setting_primary_user_only" msgid="6596604364907022416">"Поставките за говорна пошта може да ги измени само примарниот корисник."</string>
-    <string name="puk_unlocked" msgid="2284912838477558454">"Вашата СИМ картичка е одблокирана. Вашиот телефон се отклучува..."</string>
-    <string name="label_ndp" msgid="780479633159517250">"PIN за отклучување мрежа на СИМ"</string>
+    <string name="puk_unlocked" msgid="2284912838477558454">"Вашата SIM картичка е одблокирана. Вашиот телефон се отклучува..."</string>
+    <string name="label_ndp" msgid="780479633159517250">"PIN за отклучување мрежа на SIM"</string>
     <string name="sim_ndp_unlock_text" msgid="683628237760543009">"Отклучи"</string>
     <string name="sim_ndp_dismiss_text" msgid="1604823375752456947">"Отфрли"</string>
     <string name="requesting_unlock" msgid="6412629401033249351">"Барање за отклучување мрежа..."</string>
@@ -126,7 +126,7 @@
     <string name="updating_settings" msgid="8171225533884883252">"Ажурирање поставки..."</string>
     <string name="reverting_settings" msgid="4752151682666912828">"Враќање поставки..."</string>
     <string name="response_error" msgid="6674110501330139405">"Неочекуван одговор од мрежата."</string>
-    <string name="exception_error" msgid="7027667130619518211">"Грешка со мрежа или СИМ картичка."</string>
+    <string name="exception_error" msgid="7027667130619518211">"Грешка со мрежа или SIM картичка."</string>
     <string name="stk_cc_ss_to_dial_error" msgid="2816779198916570502">"Барањето SS е изменето во барање DIAL."</string>
     <string name="stk_cc_ss_to_ussd_error" msgid="7490626178582654236">"Барањето SS е изменето во барање USSD."</string>
     <string name="stk_cc_ss_to_ss_error" msgid="5057846756489053759">"Барањето SS е изменето во ново барање SS."</string>
@@ -166,7 +166,7 @@
     <string name="search_networks" msgid="1601136049300882441">"Пребарај мрежи"</string>
     <string name="network_query_error" msgid="6828516148953325006">"Грешка при пребарување мрежи."</string>
     <string name="register_on_network" msgid="9055203954040805084">"Регистрирање на <xliff:g id="NETWORK">%s</xliff:g>..."</string>
-    <string name="not_allowed" msgid="5613353860205691579">"Вашата СИМ картичка не дозволува поврзување со оваа мрежа."</string>
+    <string name="not_allowed" msgid="5613353860205691579">"Вашата SIM картичка не дозволува поврзување со оваа мрежа."</string>
     <string name="connect_later" msgid="2308119155752343975">"Не може да се поврзе со оваа мрежа во моментов. Обидете се повторно подоцна."</string>
     <string name="registration_done" msgid="495135664535876612">"Регистрирање на мрежа."</string>
     <string name="sum_carrier_select" msgid="3494252551249882718">"Избери оператор на мрежа"</string>
@@ -215,9 +215,9 @@
     <string name="data_enabled" msgid="5972538663568715366">"Податоците се овозможени"</string>
     <string name="data_enable_summary" msgid="2382798156640007971">"Дозволи користење интернет"</string>
     <string name="dialog_alert_title" msgid="6751344986194435476">"Внимание"</string>
-    <string name="roaming" msgid="8871412572928323707">"Роаминг на податоци"</string>
-    <string name="roaming_enable" msgid="7331106985174381987">"Поврзи се со податочни услуги во роаминг"</string>
-    <string name="roaming_disable" msgid="1843417228755568110">"Поврзи се со податочни услуги во роаминг"</string>
+    <string name="roaming" msgid="8871412572928323707">"Интернет роаминг"</string>
+    <string name="roaming_enable" msgid="7331106985174381987">"Поврзи се со интернет услуги во роаминг"</string>
+    <string name="roaming_disable" msgid="1843417228755568110">"Поврзи се со интернет услуги во роаминг"</string>
     <string name="roaming_reenable_message" msgid="8913735676127858115">"Изгубивте поврзување податоци зашто на вашата домашна мрежа исклучивте роаминг на податоци."</string>
     <string name="roaming_warning" msgid="1603164667540144353">"Може да направите големи трошоци."</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"Дозволи роаминг на податоци?"</string>
@@ -343,7 +343,7 @@
     <string name="cdma_subscription_summary" msgid="2530890766115781140">"Промена помеѓу RUIM/SMS и NV"</string>
     <string name="cdma_subscription_dialogtitle" msgid="2699527950523333110">"претплата"</string>
   <string-array name="cdma_subscription_choices">
-    <item msgid="2258014151300708431">"RUIM/СИМ"</item>
+    <item msgid="2258014151300708431">"RUIM/SIM"</item>
     <item msgid="5127722015571873880">"NV"</item>
   </string-array>
   <string-array name="cdma_subscription_values">
@@ -396,21 +396,21 @@
     <string name="fdn_invalid_number" msgid="8602417141715473998">"FDN не е ажуриран затоа што бројот е празен или содржи повеќе од 20 цифри."</string>
     <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"FDN не се ажурираше. PIN2 кодот е неточен или телефонскиот број е одбиен."</string>
     <string name="fdn_failed" msgid="540018079008319747">"Операцијата со FDN не успеа."</string>
-    <string name="simContacts_emptyLoading" msgid="2203331234764498011">"Се чита од СИМ картичка..."</string>
-    <string name="simContacts_empty" msgid="5270660846489561932">"Нема контакти на вашата СИМ картичка."</string>
+    <string name="simContacts_emptyLoading" msgid="2203331234764498011">"Се чита од SIM картичка..."</string>
+    <string name="simContacts_empty" msgid="5270660846489561932">"Нема контакти на вашата SIM картичка."</string>
     <string name="simContacts_title" msgid="1861472842524839921">"Избери контакти за увоз"</string>
-    <string name="simContacts_airplaneMode" msgid="5254946758982621072">"Исклучете го авионскиот режим за да ги увезете контактите од СИМ-картичката."</string>
-    <string name="enable_pin" msgid="5422767284133234860">"Овозможи/оневозможи PIN на СИМ"</string>
-    <string name="change_pin" msgid="9174186126330785343">"Промени PIN на СИМ"</string>
-    <string name="enter_pin_text" msgid="8532615714751931951">"PIN на СИМ:"</string>
+    <string name="simContacts_airplaneMode" msgid="5254946758982621072">"Исклучете го авионскиот режим за да ги увезете контактите од SIM-картичката."</string>
+    <string name="enable_pin" msgid="5422767284133234860">"Овозможи/оневозможи PIN на SIM"</string>
+    <string name="change_pin" msgid="9174186126330785343">"Промени PIN на SIM"</string>
+    <string name="enter_pin_text" msgid="8532615714751931951">"PIN на SIM:"</string>
     <string name="oldPinLabel" msgid="5287773661246368314">"Стар PIN"</string>
     <string name="newPinLabel" msgid="207488227285336897">"Нов PIN"</string>
     <string name="confirmPinLabel" msgid="257597715098070206">"Потврди нов PIN"</string>
     <string name="badPin" msgid="8955102849303984935">"Стариот PIN што го впишавте не е точен. Обидете се повторно."</string>
     <string name="mismatchPin" msgid="5923253370683071889">"PIN кодовите што ги внесовте не се совпаѓаат. Обидете се повторно."</string>
     <string name="invalidPin" msgid="5981171102258684792">"Внеси PIN од 4 до 8 броеви."</string>
-    <string name="disable_sim_pin" msgid="3419351358300716472">"Исчисти PIN на СИМ"</string>
-    <string name="enable_sim_pin" msgid="4845145659651484248">"Поставете PIN на СИМ"</string>
+    <string name="disable_sim_pin" msgid="3419351358300716472">"Исчисти PIN на SIM"</string>
+    <string name="enable_sim_pin" msgid="4845145659651484248">"Поставете PIN на SIM"</string>
     <string name="enable_in_progress" msgid="3417917024688497010">"PIN-кодот се поставува…"</string>
     <string name="enable_pin_ok" msgid="2918545971413270063">"PIN-кодот е поставен"</string>
     <string name="disable_pin_ok" msgid="2109571368635883688">"PIN-кодот е исчистен"</string>
@@ -429,11 +429,11 @@
     <string name="pin2_changed" msgid="3724522579945610956">"PIN2-кодот е ажуриран"</string>
     <string name="label_puk2_code" msgid="4688069961795341948">"Внесете го ПУК2-кодот"</string>
     <string name="fdn_enable_puk2_requested" msgid="4991074891459554705">"Лозинката е неточна. PIN2-кодот сега е блокиран. За да се обидете повторно, променете го PIN2-кодот."</string>
-    <string name="puk2_requested" msgid="5831015200030161434">"Лозинката е неточна. СИМ-картичката е сега заклучена. Внесете го ПУК2-кодот."</string>
+    <string name="puk2_requested" msgid="5831015200030161434">"Лозинката е неточна. SIM-картичката е сега заклучена. Внесете го ПУК2-кодот."</string>
     <string name="puk2_blocked" msgid="3150263853077280049">"ПУК2 кодот е трајно блокиран."</string>
     <string name="pin2_attempts" msgid="720736232885011507">\n"Имате уште <xliff:g id="NUMBER">%d</xliff:g> обиди."</string>
     <string name="pin2_unblocked" msgid="7791600368153469078">"PIN2-кодот веќе не е блокиран"</string>
-    <string name="pin2_error_exception" msgid="1088689322248996699">"Грешка со мрежа или СИМ картичка"</string>
+    <string name="pin2_error_exception" msgid="1088689322248996699">"Грешка со мрежа или SIM картичка"</string>
     <string name="doneButton" msgid="2859593360997984240">"Готово"</string>
     <string name="voicemail_settings_number_label" msgid="8524164258691887790">"Број на говорна пошта"</string>
     <string name="card_title_dialing" msgid="5769417478498348054">"Бирање"</string>
@@ -490,7 +490,7 @@
     <string name="onscreenVideoCallText" msgid="4800924186056115442">"Видео повик"</string>
     <string name="importSimEntry" msgid="6614358325359736031">"Увези"</string>
     <string name="importAllSimEntries" msgid="1503181169636198673">"Увези ги сите"</string>
-    <string name="importingSimContacts" msgid="7374056215462575769">"Увезување контакти од СИМ"</string>
+    <string name="importingSimContacts" msgid="7374056215462575769">"Увезување контакти од SIM"</string>
     <string name="importToFDNfromContacts" msgid="2130620207013368580">"Увези од контакти"</string>
     <string name="singleContactImportedMsg" msgid="6868483416182599206">"Увезен е контакт"</string>
     <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"Не успеа да увезе контакт"</string>
@@ -568,20 +568,20 @@
     <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Променете PIN"</string>
     <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Звук"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Мелодија и вибрации"</string>
-    <string name="pstn_connection_service_label" msgid="1743245930577325900">"Вградени СИМ-картички"</string>
+    <string name="pstn_connection_service_label" msgid="1743245930577325900">"Вградени SIM-картички"</string>
     <string name="enable_video_calling_title" msgid="7237253660669000899">"Вклучи видеоповикување"</string>
     <string name="enable_video_calling_dialog_msg" msgid="8948186136957417948">"За да вклучите видеоповикување, треба да овозможите Режим на подобрени 4G LTE во поставките за мрежа."</string>
     <string name="enable_video_calling_dialog_settings" msgid="576528473599603249">"Мрежни поставки"</string>
     <string name="enable_video_calling_dialog_close" msgid="7411471282167927991">"Затвори"</string>
     <string name="sim_label_emergency_calls" msgid="4847699229529306397">"Итни повици"</string>
     <string name="sim_description_emergency_calls" msgid="7535215397212301562">"Само итни повикувања"</string>
-    <string name="sim_description_default" msgid="4778679519938775515">"СИМ-картичка, отвор: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+    <string name="sim_description_default" msgid="4778679519938775515">"SIM-картичка, отвор: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
     <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Пристапност"</string>
     <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"Повик преку Wi-Fi од"</string>
     <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Повик преку Wi-Fi"</string>
     <string name="emergency_action_launch_hint" msgid="4906759256275562674">"Допрете повторно за да се отвори"</string>
     <string name="message_decode_error" msgid="3456481534066924855">"Настана грешка при дешифрирање на пораката."</string>
-    <string name="callFailed_cdma_activation" msgid="2307989779233262164">"Вашата СИМ-картичка ја активираше услугата и ги ажурираше способностите за роаминг на вашиот телефон."</string>
+    <string name="callFailed_cdma_activation" msgid="2307989779233262164">"Вашата SIM-картичка ја активираше услугата и ги ажурираше способностите за роаминг на вашиот телефон."</string>
     <string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Има премногу активни повици. Завршете или спојте ги постоечките повици пред да започнете нов."</string>
     <string name="callFailed_imei_not_accepted" msgid="132192626901238542">"Не може да се поврзе. Внесете важечка SIM-картичка."</string>
     <string name="callFailed_wifi_lost" msgid="5968076625137297184">"Wi-Fi-врската е прекината. Повикот заврши."</string>
diff --git a/res/values-pa/strings.xml b/res/values-pa/strings.xml
index 62ef04e..a1e4035 100644
--- a/res/values-pa/strings.xml
+++ b/res/values-pa/strings.xml
@@ -90,7 +90,7 @@
     <string name="sum_loading_settings" msgid="1826692909391168620">"ਸੈਟਿੰਗਾਂ ਨੂੰ ਲੋਡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ..."</string>
     <string name="sum_hide_caller_id" msgid="1071407020290873782">"ਆਊਟਗੋਇੰਗ ਕਾਲਾਂ ਵਿੱਚ ਲੁਕਾਇਆ ਨੰਬਰ"</string>
     <string name="sum_show_caller_id" msgid="6768534125447290401">"ਆਊਟਗੋਇੰਗ ਕਾਲਾਂ ਵਿੱਚ ਡਿਸਪਲੇ ਕੀਤਾ ਨੰਬਰ"</string>
-    <string name="sum_default_caller_id" msgid="1954518825510901365">"ਆਊਟਗੋਇੰਗ ਕਾਲਾਂ ਵਿੱਚ ਮੇਰਾ ਨੰਬਰ ਡਿਸਪਲੇ ਕਰਨ ਲਈ ਡਿਫੌਲਟ ਓਪਰੇਟਰ ਸੈਟਿੰਗਾਂ ਵਰਤੋ।"</string>
+    <string name="sum_default_caller_id" msgid="1954518825510901365">"ਆਊਟਗੋਇੰਗ ਕਾਲਾਂ ਵਿੱਚ ਮੇਰਾ ਨੰਬਰ ਡਿਸਪਲੇ ਕਰਨ ਲਈ ਪੂਰਵ-ਨਿਰਧਾਰਤ ਓਪਰੇਟਰ ਸੈਟਿੰਗਾਂ ਵਰਤੋ।"</string>
     <string name="labelCW" msgid="6120513814915920200">"ਕਾਲ ਉਡੀਕ ਵਿੱਚ"</string>
     <string name="sum_cw_enabled" msgid="8083061901633671397">"ਕਿਸੇ ਕਾਲ ਦੇ ਦੌਰਾਨ, ਮੈਨੂੰ ਇਨਕਮਿੰਗ ਕਾਲਾਂ ਦੀ ਸੂਚਨਾ ਦਿਓ"</string>
     <string name="sum_cw_disabled" msgid="3648693907300104575">"ਕਿਸੇ ਕਾਲ ਦੇ ਦੌਰਾਨ, ਮੈਨੂੰ ਇਨਕਮਿੰਗ ਕਾਲਾਂ ਦੀ ਸੂਚਨਾ ਦਿਓ"</string>
@@ -137,7 +137,7 @@
     <string name="disable" msgid="4678348128118573672">"ਬੰਦ ਕਰੋ"</string>
     <string name="change_num" msgid="239476305819844391">"ਅਪਡੇਟ"</string>
   <string-array name="clir_display_values">
-    <item msgid="5560134294467334594">"ਨੈਟਵਰਕ ਡਿਫੌਲਟ"</item>
+    <item msgid="5560134294467334594">"ਨੈਟਵਰਕ ਪੂਰਵ-ਨਿਰਧਾਰਤ"</item>
     <item msgid="7876195870037833661">"ਨੰਬਰ ਲੁਕਾਓ"</item>
     <item msgid="1108394741608734023">"ਨੰਬਰ ਦਿਖਾਓ"</item>
   </string-array>
@@ -469,7 +469,7 @@
     <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"ਕੋਈ ਸੇਵਾ ਨਹੀਂ। ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰ ਰਿਹਾ ਹੈ…"</string>
     <string name="radio_off_during_emergency_call" msgid="2535800034010306830">"ਕਿਸੇ ਐਮਰਜੈਂਸੀ ਕਾਲ ਦੌਰਾਨ ਜਹਾਜ਼ ਮੋਡ ਵਿੱਚ ਦਾਖਲ ਨਹੀਂ ਹੋਇਆ ਜਾ ਸਕਦਾ।"</string>
     <string name="dial_emergency_error" msgid="1509085166367420355">"ਕਾਲ ਨਹੀਂ ਕਰ ਸਕਦਾ। <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> ਇੱਕ ਐਮਰਜੈਂਸੀ ਨੰਬਰ ਨਹੀਂ ਹੈ।"</string>
-    <string name="dial_emergency_empty_error" msgid="9130194953830414638">"ਕਾਲ ਨਹੀਂ ਕਰ ਸਕਦਾ। ਇੱਕ ਐਮਰਜੈਂਸੀ ਨੰਬਰ ਡਾਇਲ ਕਰੋ।"</string>
+    <string name="dial_emergency_empty_error" msgid="9130194953830414638">"ਕਾਲ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕਦੀ। ਇੱਕ ਐਮਰਜੈਂਸੀ ਨੰਬਰ ਡਾਇਲ ਕਰੋ।"</string>
     <string name="dialerKeyboardHintText" msgid="9192914825413747792">"ਡਾਇਲ ਕਰਨ ਲਈ ਕੀ-ਬੋਰਡ ਵਰਤੋ"</string>
     <string name="onscreenHoldText" msgid="2285258239691145872">"ਹੋਲਡ ਕਰੋ"</string>
     <string name="onscreenEndCallText" msgid="4403855834875398585">"ਖ਼ਤਮ"</string>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index eea7531..aa57765 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -216,8 +216,8 @@
     <string name="data_enable_summary" msgid="2382798156640007971">"อนุญาตการใช้ข้อมูล"</string>
     <string name="dialog_alert_title" msgid="6751344986194435476">"โปรดทราบ"</string>
     <string name="roaming" msgid="8871412572928323707">"การโรมมิ่งข้อมูล"</string>
-    <string name="roaming_enable" msgid="7331106985174381987">"เชื่อมต่อบริการข้อมูลขณะโรมมิ่ง"</string>
-    <string name="roaming_disable" msgid="1843417228755568110">"เชื่อมต่อบริการข้อมูลขณะโรมมิ่ง"</string>
+    <string name="roaming_enable" msgid="7331106985174381987">"เชื่อมต่ออินเทอร์เน็ตมือถือขณะโรมมิ่ง"</string>
+    <string name="roaming_disable" msgid="1843417228755568110">"เชื่อมต่ออินเทอร์เน็ตมือถือขณะโรมมิ่ง"</string>
     <string name="roaming_reenable_message" msgid="8913735676127858115">"การเชื่อมต่อข้อมูลของคุณหายไปเนื่องจากคุณออกจากเครือข่ายที่บ้านโดยปิดการโรมมิ่งข้อมูลไว้"</string>
     <string name="roaming_warning" msgid="1603164667540144353">"คุณอาจต้องเสียค่าใช้จ่ายมาก"</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"อนุญาตการโรมมิ่งอินเทอร์เน็ตไหม"</string>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index df85dd5..4e98c02 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -172,6 +172,12 @@
     <string name="voicemail_settings_with_label">Voicemail (<xliff:g id="subscriptionlabel" example="Mock Carrier">%s</xliff:g>)</string>
     <!-- Call forwarding dialog box, voicemail number prefix -->
     <string name="voicemail_abbreviated">VM:</string>
+    <!-- DO NOT TRANSLATE. Internal key for a voicemail notification preference. -->
+    <string name="voicemail_notifications_key" translatable="false">voicemail_notification_key</string>
+
+    <!-- Voicemail notifications title. The user clicks on this preference navigate to the system settings screen for that channel
+    .[CHAR LIMIT=30] -->
+    <string name="voicemail_notifications_preference_title">Notifications</string>
     <!-- Mobile network settings screen, setting option name -->
     <string name="networks">Network operators</string>
     <!-- Cell Broadcast settings title.  [CHAR LIMIT=50] -->
@@ -1265,11 +1271,6 @@
     -->
     <string name="description_dial_button">dial</string>
 
-    <!-- Title for the vibration settings for voicemail notifications [CHAR LIMIT=40] -->
-    <string name="voicemail_notification_vibrate_when_title" msgid="8731372580674292759">Vibrate</string>
-    <!-- Dialog title for the vibration settings for voice mail notifications [CHAR LIMIT=40]-->
-    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="8995274609647451109">Vibrate</string>
-
     <!-- Visual voicemail on/off title [CHAR LIMIT=40] -->
     <string name="voicemail_visual_voicemail_switch_title">Visual Voicemail</string>
 
@@ -1278,21 +1279,6 @@
     <!-- Voicemail change PIN dialog title [CHAR LIMIT=40] -->
     <string name="voicemail_change_pin_dialog_title">Change PIN</string>
 
-    <!-- Voicemail ringtone title. The user clicks on this preference to select
-         which sound to play when a voicemail notification is received.
-         [CHAR LIMIT=30] -->
-    <string name="voicemail_notification_ringtone_title">Sound</string>
-
-    <!-- The default value value for voicemail notification. -->
-    <string name="voicemail_notification_vibrate_when_default" translatable="false">never</string>
-
-    <!-- Actual values used in our code for voicemail notifications. DO NOT TRANSLATE -->
-    <string-array name="voicemail_notification_vibrate_when_values" translatable="false">
-        <item>always</item>
-        <item>silent</item>
-        <item>never</item>
-    </string-array>
-
     <!-- Title for the category "ringtone", which is shown above ringtone and vibration
          related settings.
          [CHAR LIMIT=30] -->
@@ -1339,10 +1325,6 @@
     <!-- Status hint label for a call being made over a wifi network. [CHAR LIMIT=25] -->
     <string name="status_hint_label_wifi_call">Wi-Fi call</string>
 
-    <!-- DO NOT TRANSLATE. Internal key for a voicemail notification preference. -->
-    <string name="voicemail_notification_ringtone_key">voicemail_notification_ringtone_key</string>
-    <!-- DO NOT TRANSLATE. Internal key for a voicemail notification preference. -->
-    <string name="voicemail_notification_vibrate_key">voicemail_notification_vibrate_key</string>
     <!-- DO NOT TRANSLATE. Internal key for a visual voicemail preference. -->
     <string name="voicemail_visual_voicemail_key">voicemail_visual_voicemail_key</string>
     <!-- DO NOT TRANSLATE. Internal key for a voicemail change pin preference. -->
diff --git a/res/xml/voicemail_settings.xml b/res/xml/voicemail_settings.xml
index 1fc1fe1..021a764 100644
--- a/res/xml/voicemail_settings.xml
+++ b/res/xml/voicemail_settings.xml
@@ -50,14 +50,7 @@
 
     </PreferenceScreen>
 
-    <com.android.phone.settings.VoicemailRingtonePreference
-        android:key="@string/voicemail_notification_ringtone_key"
-        android:title="@string/voicemail_notification_ringtone_title"
-        android:persistent="false"
-        android:ringtoneType="notification" />
-
-    <SwitchPreference
-        android:key="@string/voicemail_notification_vibrate_key"
-        android:title="@string/voicemail_notification_vibrate_when_title"
-        android:persistent="true" />
+    <Preference
+        android:key="@string/voicemail_notifications_key"
+        android:title="@string/voicemail_notifications_preference_title"/>
 </PreferenceScreen>
diff --git a/src/com/android/phone/NotificationMgr.java b/src/com/android/phone/NotificationMgr.java
index 07b1b10..69c0871 100644
--- a/src/com/android/phone/NotificationMgr.java
+++ b/src/com/android/phone/NotificationMgr.java
@@ -55,7 +55,6 @@
 import com.android.internal.telephony.Phone;
 import com.android.internal.telephony.TelephonyCapabilities;
 import com.android.internal.telephony.util.NotificationChannelController;
-import com.android.phone.settings.VoicemailNotificationSettingsUtil;
 import com.android.phone.settings.VoicemailSettingsActivity;
 
 import java.util.Iterator;
@@ -333,11 +332,6 @@
 
             PendingIntent pendingIntent =
                     PendingIntent.getActivity(mContext, subId /* requestCode */, intent, 0);
-            Uri ringtoneUri = null;
-
-            if (enableNotificationSound) {
-                ringtoneUri = VoicemailNotificationSettingsUtil.getRingtoneUri(phone);
-            }
 
             Resources res = mContext.getResources();
             PersistableBundle carrierConfig = PhoneGlobals.getInstance().getCarrierConfigForSubId(
@@ -349,16 +343,11 @@
                     .setContentTitle(notificationTitle)
                     .setContentText(notificationText)
                     .setContentIntent(pendingIntent)
-                    .setSound(ringtoneUri)
                     .setColor(res.getColor(R.color.dialer_theme_color))
                     .setOngoing(carrierConfig.getBoolean(
                             CarrierConfigManager.KEY_VOICEMAIL_NOTIFICATION_PERSISTENT_BOOL))
                     .setChannel(NotificationChannelController.CHANNEL_ID_VOICE_MAIL);
 
-            if (VoicemailNotificationSettingsUtil.isVibrationEnabled(phone)) {
-                builder.setDefaults(Notification.DEFAULT_VIBRATE);
-            }
-
             final Notification notification = builder.build();
             List<UserInfo> users = mUserManager.getUsers(true);
             for (int i = 0; i < users.size(); i++) {
diff --git a/src/com/android/phone/settings/VoicemailNotificationSettingsUtil.java b/src/com/android/phone/settings/VoicemailNotificationSettingsUtil.java
index 9654ea7..fb7baf5 100644
--- a/src/com/android/phone/settings/VoicemailNotificationSettingsUtil.java
+++ b/src/com/android/phone/settings/VoicemailNotificationSettingsUtil.java
@@ -16,15 +16,14 @@
 
 package com.android.phone.settings;
 
-import android.content.Context;
+import android.app.NotificationChannel;
 import android.content.SharedPreferences;
 import android.net.Uri;
 import android.preference.PreferenceManager;
-import android.provider.Settings;
 import android.telephony.TelephonyManager;
-import android.text.TextUtils;
 
 import com.android.internal.telephony.Phone;
+import com.android.internal.telephony.util.NotificationChannelController;
 import com.android.phone.R;
 
 public class VoicemailNotificationSettingsUtil {
@@ -53,9 +52,9 @@
     }
 
     public static boolean isVibrationEnabled(Phone phone) {
-        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(phone.getContext());
-        migrateVoicemailVibrationSettingsIfNeeded(phone, prefs);
-        return prefs.getBoolean(getVoicemailVibrationSharedPrefsKey(phone), false /* defValue */);
+        final NotificationChannel channel = NotificationChannelController.getChannel(
+                NotificationChannelController.CHANNEL_ID_VOICE_MAIL, phone.getContext());
+        return (channel != null) ? channel.shouldVibrate() : false;
     }
 
    public static void setRingtoneUri(Phone phone, Uri ringtoneUri) {
@@ -68,12 +67,9 @@
     }
 
     public static Uri getRingtoneUri(Phone phone) {
-        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(phone.getContext());
-        migrateVoicemailRingtoneSettingsIfNeeded(phone, prefs);
-        String uriString = prefs.getString(
-                getVoicemailRingtoneSharedPrefsKey(phone),
-                Settings.System.DEFAULT_NOTIFICATION_URI.toString());
-        return !TextUtils.isEmpty(uriString) ? Uri.parse(uriString) : null;
+        final NotificationChannel channel = NotificationChannelController.getChannel(
+                NotificationChannelController.CHANNEL_ID_VOICE_MAIL, phone.getContext());
+        return (channel != null) ? channel.getSound() : null;
     }
 
     /**
diff --git a/src/com/android/phone/settings/VoicemailRingtonePreference.java b/src/com/android/phone/settings/VoicemailRingtonePreference.java
deleted file mode 100644
index bb82d4f..0000000
--- a/src/com/android/phone/settings/VoicemailRingtonePreference.java
+++ /dev/null
@@ -1,97 +0,0 @@
-package com.android.phone.settings;
-
-import android.content.Context;
-import android.media.RingtoneManager;
-import android.net.Uri;
-import android.os.Handler;
-import android.os.Message;
-import android.preference.Preference;
-import android.preference.RingtonePreference;
-import android.util.AttributeSet;
-
-import com.android.internal.telephony.Phone;
-import com.android.phone.common.util.SettingsUtil;
-
-/**
- * Looks up the voicemail ringtone's name asynchronously and updates the preference's summary when
- * it is created or updated.
- */
-public class VoicemailRingtonePreference extends RingtonePreference {
-    public interface VoicemailRingtoneNameChangeListener {
-        void onVoicemailRingtoneNameChanged(CharSequence name);
-    }
-
-    private static final int MSG_UPDATE_VOICEMAIL_RINGTONE_SUMMARY = 1;
-
-    private VoicemailRingtoneNameChangeListener mVoicemailRingtoneNameChangeListener;
-    private Runnable mVoicemailRingtoneLookupRunnable;
-    private Handler mVoicemailRingtoneLookupComplete;
-
-    private Phone mPhone;
-
-    public VoicemailRingtonePreference(Context context, AttributeSet attrs) {
-        super(context, attrs);
-
-        mVoicemailRingtoneLookupComplete = new Handler() {
-            @Override
-            public void handleMessage(Message msg) {
-                switch (msg.what) {
-                    case MSG_UPDATE_VOICEMAIL_RINGTONE_SUMMARY:
-                        if (mVoicemailRingtoneNameChangeListener != null) {
-                            mVoicemailRingtoneNameChangeListener.onVoicemailRingtoneNameChanged(
-                                    (CharSequence) msg.obj);
-                        }
-                        setSummary((CharSequence) msg.obj);
-                        break;
-                }
-            }
-        };
-    }
-
-    public void init(Phone phone, CharSequence oldRingtoneName) {
-        mPhone = phone;
-
-        // Requesting the ringtone will trigger migration if necessary.
-        VoicemailNotificationSettingsUtil.getRingtoneUri(phone);
-
-        final Preference preference = this;
-        final String preferenceKey =
-                VoicemailNotificationSettingsUtil.getVoicemailRingtoneSharedPrefsKey(mPhone);
-        setSummary(oldRingtoneName);
-        mVoicemailRingtoneLookupRunnable = new Runnable() {
-            @Override
-            public void run() {
-                SettingsUtil.updateRingtoneName(
-                        preference.getContext(),
-                        mVoicemailRingtoneLookupComplete,
-                        RingtoneManager.TYPE_NOTIFICATION,
-                        preferenceKey,
-                        MSG_UPDATE_VOICEMAIL_RINGTONE_SUMMARY);
-            }
-        };
-
-        updateRingtoneName();
-    }
-
-    public void setVoicemailRingtoneNameChangeListener(VoicemailRingtoneNameChangeListener l) {
-        mVoicemailRingtoneNameChangeListener = l;
-    }
-
-    @Override
-    protected Uri onRestoreRingtone() {
-        return VoicemailNotificationSettingsUtil.getRingtoneUri(mPhone);
-    }
-
-    @Override
-    protected void onSaveRingtone(Uri ringtoneUri) {
-        // Don't call superclass method because it uses the pref key as the SharedPreferences key.
-        // Delegate to the voicemail notification utility to save the ringtone instead.
-        VoicemailNotificationSettingsUtil.setRingtoneUri(mPhone, ringtoneUri);
-
-        updateRingtoneName();
-    }
-
-    private void updateRingtoneName() {
-        new Thread(mVoicemailRingtoneLookupRunnable).start();
-    }
-}
diff --git a/src/com/android/phone/settings/VoicemailSettingsActivity.java b/src/com/android/phone/settings/VoicemailSettingsActivity.java
index d0e0656..04e8bf5 100644
--- a/src/com/android/phone/settings/VoicemailSettingsActivity.java
+++ b/src/com/android/phone/settings/VoicemailSettingsActivity.java
@@ -30,6 +30,7 @@
 import android.preference.PreferenceScreen;
 import android.preference.SwitchPreference;
 import android.provider.ContactsContract.CommonDataKinds;
+import android.provider.Settings;
 import android.telephony.TelephonyManager;
 import android.text.BidiFormatter;
 import android.text.TextDirectionHeuristics;
@@ -42,6 +43,7 @@
 import com.android.internal.telephony.CallForwardInfo;
 import com.android.internal.telephony.Phone;
 import com.android.internal.telephony.PhoneConstants;
+import com.android.internal.telephony.util.NotificationChannelController;
 import com.android.phone.EditPhoneNumberPreference;
 import com.android.phone.PhoneGlobals;
 import com.android.phone.R;
@@ -57,8 +59,7 @@
         implements DialogInterface.OnClickListener,
                 Preference.OnPreferenceChangeListener,
                 EditPhoneNumberPreference.OnDialogClosedListener,
-                EditPhoneNumberPreference.GetDefaultNumberListener,
-                VoicemailRingtonePreference.VoicemailRingtoneNameChangeListener {
+                EditPhoneNumberPreference.GetDefaultNumberListener{
     private static final String LOG_TAG = VoicemailSettingsActivity.class.getSimpleName();
     private static final boolean DBG = (PhoneGlobals.DBG_LEVEL >= 2);
 
@@ -185,8 +186,6 @@
     private CallForwardInfo[] mNewFwdSettings;
     private String mNewVMNumber;
 
-    private CharSequence mOldVmRingtoneName = "";
-
     /**
      * Used to indicate that the voicemail preference should be shown.
      */
@@ -199,8 +198,7 @@
     private EditPhoneNumberPreference mSubMenuVoicemailSettings = null;
     private VoicemailProviderListPreference mVoicemailProviders;
     private PreferenceScreen mVoicemailSettings;
-    private VoicemailRingtonePreference mVoicemailNotificationRingtone;
-    private SwitchPreference mVoicemailNotificationVibrate;
+    private Preference mVoicemailNotificationPreference;
 
     //*********************************************************************************************
     // Preference Activity Methods
@@ -227,6 +225,14 @@
                 getActionBar(), getResources(), R.string.voicemail_settings_with_label);
         mPhone = mSubscriptionInfoHelper.getPhone();
         addPreferencesFromResource(R.xml.voicemail_settings);
+
+        mVoicemailNotificationPreference =
+                findPreference(getString(R.string.voicemail_notifications_key));
+        final Intent intent = new Intent(Settings.ACTION_CHANNEL_NOTIFICATION_SETTINGS);
+        intent.putExtra(Settings.EXTRA_CHANNEL_ID,
+                NotificationChannelController.CHANNEL_ID_VOICE_MAIL);
+        intent.putExtra(Settings.EXTRA_APP_PACKAGE, mPhone.getContext().getPackageName());
+        mVoicemailNotificationPreference.setIntent(intent);
     }
 
     @Override
@@ -254,15 +260,6 @@
 
         mVoicemailSettings = (PreferenceScreen) findPreference(BUTTON_VOICEMAIL_SETTING_KEY);
 
-        mVoicemailNotificationRingtone = (VoicemailRingtonePreference) findPreference(
-                getResources().getString(R.string.voicemail_notification_ringtone_key));
-        mVoicemailNotificationRingtone.setVoicemailRingtoneNameChangeListener(this);
-        mVoicemailNotificationRingtone.init(mPhone, mOldVmRingtoneName);
-
-        mVoicemailNotificationVibrate = (SwitchPreference) findPreference(
-                getResources().getString(R.string.voicemail_notification_vibrate_key));
-        mVoicemailNotificationVibrate.setOnPreferenceChangeListener(this);
-
         maybeHidePublicSettings();
 
         updateVMPreferenceWidgets(mVoicemailProviders.getValue());
@@ -286,9 +283,6 @@
 
         updateVoiceNumberField();
         mVMProviderSettingsForced = false;
-
-        mVoicemailNotificationVibrate.setChecked(
-                VoicemailNotificationSettingsUtil.isVibrationEnabled(mPhone));
     }
 
     /**
@@ -304,8 +298,7 @@
             log("maybeHidePublicSettings: settings hidden by EXTRA_HIDE_PUBLIC_SETTINGS");
         }
         PreferenceScreen preferenceScreen = getPreferenceScreen();
-        preferenceScreen.removePreference(mVoicemailNotificationRingtone);
-        preferenceScreen.removePreference(mVoicemailNotificationVibrate);
+        preferenceScreen.removePreference(mVoicemailNotificationPreference);
     }
 
     @Override
@@ -401,12 +394,6 @@
                 mChangingVMorFwdDueToProviderChange = true;
                 saveVoiceMailAndForwardingNumber(newProviderKey, newProviderSettings);
             }
-        } else if (preference.getKey().equals(mVoicemailNotificationVibrate.getKey())) {
-            // Check key instead of comparing reference because closing the voicemail notification
-            // ringtone dialog invokes onResume(), but leaves the old preference screen up,
-            // TODO: Revert to checking reference after migrating voicemail to its own activity.
-            VoicemailNotificationSettingsUtil.setVibrationEnabled(
-                    mPhone, Boolean.TRUE.equals(objValue));
         }
         // Always let the preference setting proceed.
         return true;
@@ -539,11 +526,6 @@
         super.onActivityResult(requestCode, resultCode, data);
     }
 
-    @Override
-    public void onVoicemailRingtoneNameChanged(CharSequence name) {
-        mOldVmRingtoneName = name;
-    }
-
     /**
      * Simulates user clicking on a passed preference.
      * Usually needed when the preference is a dialog preference and we want to invoke
@@ -1012,7 +994,6 @@
             mVoicemailProviders.setSummary(getString(R.string.sum_voicemail_choose_provider));
             mVoicemailSettings.setEnabled(false);
             mVoicemailSettings.setIntent(null);
-            mVoicemailNotificationVibrate.setEnabled(false);
         } else {
             if (DBG) log("updateVMPreferenceWidget: key: " + key + " -> " + provider.toString());
 
@@ -1020,7 +1001,6 @@
             mVoicemailProviders.setSummary(providerName);
             mVoicemailSettings.setEnabled(true);
             mVoicemailSettings.setIntent(provider.intent);
-            mVoicemailNotificationVibrate.setEnabled(true);
         }
     }
 
diff --git a/testapps/Android.mk b/testapps/Android.mk
new file mode 100644
index 0000000..5053e7d
--- /dev/null
+++ b/testapps/Android.mk
@@ -0,0 +1 @@
+include $(call all-subdir-makefiles)
diff --git a/testapps/EmbmsServiceTestApp/Android.mk b/testapps/EmbmsServiceTestApp/Android.mk
new file mode 100644
index 0000000..4dc522c
--- /dev/null
+++ b/testapps/EmbmsServiceTestApp/Android.mk
@@ -0,0 +1,19 @@
+LOCAL_PATH:= $(call my-dir)
+
+# Build the Sample Embms Services
+include $(CLEAR_VARS)
+
+src_dirs := src
+res_dirs := res
+
+LOCAL_SRC_FILES := $(call all-java-files-under, $(src_dirs))
+LOCAL_RESOURCE_DIR := $(addprefix $(LOCAL_PATH)/, $(res_dirs))
+
+LOCAL_PACKAGE_NAME := EmbmsTestService
+
+LOCAL_CERTIFICATE := platform
+LOCAL_PRIVILEGED_MODULE := true
+# Change the following to "debug" to build the EmbmsTestService into the userdebug build.
+LOCAL_MODULE_TAGS := optional
+
+include $(BUILD_PACKAGE)
diff --git a/testapps/EmbmsServiceTestApp/AndroidManifest.xml b/testapps/EmbmsServiceTestApp/AndroidManifest.xml
new file mode 100644
index 0000000..3adab28
--- /dev/null
+++ b/testapps/EmbmsServiceTestApp/AndroidManifest.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+        xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
+        package="com.android.phone.testapps.embmsmw"
+        coreApp="true">
+  <application android:label="EmbmsTestMiddleware">
+    <service android:name="com.android.phone.testapps.embmsmw.EmbmsTestStreamingService"
+            android:launchMode="singleInstance"
+            androidprv:systemUserOnly="true">
+      <intent-filter>
+          <action android:name="android.telephony.action.EmbmsStreaming" />
+      </intent-filter>
+    </service>
+  </application>
+</manifest>
+
diff --git a/testapps/EmbmsServiceTestApp/res/values/donottranslate_strings.xml b/testapps/EmbmsServiceTestApp/res/values/donottranslate_strings.xml
new file mode 100644
index 0000000..d33abb0
--- /dev/null
+++ b/testapps/EmbmsServiceTestApp/res/values/donottranslate_strings.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2017 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+
+<resources>
+</resources>
diff --git a/testapps/EmbmsServiceTestApp/src/com/android/phone/testapps/embmsmw/EmbmsTestStreamingService.java b/testapps/EmbmsServiceTestApp/src/com/android/phone/testapps/embmsmw/EmbmsTestStreamingService.java
new file mode 100644
index 0000000..c0e601f
--- /dev/null
+++ b/testapps/EmbmsServiceTestApp/src/com/android/phone/testapps/embmsmw/EmbmsTestStreamingService.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright (C) 2017 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.phone.testapps.embmsmw;
+
+import android.app.Service;
+import android.content.Intent;
+import android.os.IBinder;
+import android.telephony.mbms.IMbmsStreamingManagerCallback;
+import android.telephony.mbms.MbmsException;
+import android.telephony.mbms.vendor.IMbmsStreamingService;
+import android.telephony.mbms.vendor.MbmsStreamingServiceBase;
+import android.util.Log;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public class EmbmsTestStreamingService extends Service {
+    private final static String TAG = "EmbmsTestStreaming";
+    private final Map<String, IMbmsStreamingManagerCallback> mAppCallbacks = new HashMap<>();
+
+    private final IMbmsStreamingService.Stub mBinder = new MbmsStreamingServiceBase() {
+        @Override
+        public int initialize(IMbmsStreamingManagerCallback listener, String appName, int subId)
+                throws MbmsException {
+            String appKey = appName + subId;
+            if (!mAppCallbacks.containsKey(appKey)) {
+                mAppCallbacks.put(appKey, listener);
+            } else {
+                return MbmsException.ERROR_ALREADY_INITIALIZED;
+            }
+            return 0;
+        }
+    };
+
+    @Override
+    public void onCreate() {
+        super.onCreate();
+        logd("EmbmsTestStreamingService onCreate");
+    }
+
+    @Override
+    public void onDestroy() {
+        super.onCreate();
+        logd("EmbmsTestStreamingService onDestroy");
+    }
+
+    @Override
+    public IBinder onBind(Intent intent) {
+        return mBinder;
+    }
+
+    private static void logd(String s) {
+        Log.d(TAG, s);
+    }
+}
diff --git a/testapps/EmbmsTestStreamingApp/Android.mk b/testapps/EmbmsTestStreamingApp/Android.mk
new file mode 100644
index 0000000..2700522
--- /dev/null
+++ b/testapps/EmbmsTestStreamingApp/Android.mk
@@ -0,0 +1,17 @@
+LOCAL_PATH:= $(call my-dir)
+
+# Build the Sample Embms Streaming frontend
+include $(CLEAR_VARS)
+
+src_dirs := src
+res_dirs := res
+
+LOCAL_SRC_FILES := $(call all-java-files-under, $(src_dirs))
+LOCAL_RESOURCE_DIR := $(addprefix $(LOCAL_PATH)/, $(res_dirs))
+
+LOCAL_PACKAGE_NAME := EmbmsTestStreamingApp
+
+LOCAL_CERTIFICATE := platform
+LOCAL_MODULE_TAGS := tests
+
+include $(BUILD_PACKAGE)
diff --git a/testapps/EmbmsTestStreamingApp/AndroidManifest.xml b/testapps/EmbmsTestStreamingApp/AndroidManifest.xml
new file mode 100644
index 0000000..d13425d
--- /dev/null
+++ b/testapps/EmbmsTestStreamingApp/AndroidManifest.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+          package="com.android.phone.testapps.embmsfrontend">
+    <application android:label="EmbmsTestStreamingApp">
+        <activity
+            android:name=".EmbmsTestStreamingApp"
+            android:label="EmbmsStreamingFrontend">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.DEFAULT" />
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
+        </activity>
+    </application>
+</manifest>
+
diff --git a/testapps/EmbmsTestStreamingApp/res/layout/activity_main.xml b/testapps/EmbmsTestStreamingApp/res/layout/activity_main.xml
new file mode 100644
index 0000000..866e127
--- /dev/null
+++ b/testapps/EmbmsTestStreamingApp/res/layout/activity_main.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2017 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical" >
+    <Button
+        android:id="@+id/bind_button"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="@string/bind_button" />
+</LinearLayout>
diff --git a/testapps/EmbmsTestStreamingApp/res/values/donottranslate_strings.xml b/testapps/EmbmsTestStreamingApp/res/values/donottranslate_strings.xml
new file mode 100644
index 0000000..71808fa
--- /dev/null
+++ b/testapps/EmbmsTestStreamingApp/res/values/donottranslate_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2017 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+
+<resources>
+    <string name="bind_button">Bind to service</string>
+</resources>
\ No newline at end of file
diff --git a/testapps/EmbmsTestStreamingApp/src/com/android/phone/testapps/embmsfrontend/EmbmsTestStreamingApp.java b/testapps/EmbmsTestStreamingApp/src/com/android/phone/testapps/embmsfrontend/EmbmsTestStreamingApp.java
new file mode 100644
index 0000000..ed4fb6b
--- /dev/null
+++ b/testapps/EmbmsTestStreamingApp/src/com/android/phone/testapps/embmsfrontend/EmbmsTestStreamingApp.java
@@ -0,0 +1,68 @@
+/*
+ * Copyright (C) 2017 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.phone.testapps.embmsfrontend;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.HandlerThread;
+import android.telephony.MbmsStreamingManager;
+import android.telephony.mbms.MbmsException;
+import android.telephony.mbms.MbmsStreamingManagerCallback;
+import android.widget.Button;
+import android.widget.Toast;
+
+public class EmbmsTestStreamingApp extends Activity {
+    private MbmsStreamingManagerCallback mStreamingListener = new MbmsStreamingManagerCallback() {};
+    private MbmsStreamingManager mStreamingManager;
+
+    private Handler mHandler;
+    private HandlerThread mHandlerThread;
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_main);
+
+        mHandlerThread = new HandlerThread("EmbmsSampleFrontendWorker");
+        mHandlerThread.start();
+        mHandler = new Handler(mHandlerThread.getLooper());
+
+        Button bindButton = (Button) findViewById(R.id.bind_button);
+        bindButton.setOnClickListener((view) ->
+            mHandler.post(() -> {
+                try {
+                    mStreamingManager = MbmsStreamingManager.create(
+                            EmbmsTestStreamingApp.this, mStreamingListener, getPackageName());
+                } catch (MbmsException e) {
+                    EmbmsTestStreamingApp.this.runOnUiThread(() ->
+                            Toast.makeText(EmbmsTestStreamingApp.this,
+                                    "Init error: " + e.getErrorCode(), Toast.LENGTH_SHORT).show());
+                    return;
+                }
+                EmbmsTestStreamingApp.this.runOnUiThread(() ->
+                        Toast.makeText(EmbmsTestStreamingApp.this, "Successfully bound",
+                                Toast.LENGTH_SHORT).show());
+            })
+        );
+    }
+
+    @Override
+    protected void onDestroy() {
+        super.onDestroy();
+        mHandlerThread.quit();
+    }
+}