Merge "Use AAPT2" into oc-dev am: d3b7539c1c
am: 23364e5ac6

Change-Id: I90e184eeaaf41e6cbd35efbef6b8ba26ae13be1d
diff --git a/Android.mk b/Android.mk
index 275213d..adb0ec1 100644
--- a/Android.mk
+++ b/Android.mk
@@ -37,6 +37,8 @@
 
 LOCAL_JACK_COVERAGE_INCLUDE_FILTER := com.android.emergency.*
 
+LOCAL_PROGUARD_FLAG_FILES := proguard.flags
+
 include $(BUILD_PACKAGE)
 
 include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/proguard.flags b/proguard.flags
new file mode 100644
index 0000000..2d44933
--- /dev/null
+++ b/proguard.flags
@@ -0,0 +1,5 @@
+# Keep annotated classes or class members.
+-keep @android.support.annotation.Keep class *
+-keepclassmembers class * {
+    @android.support.annotation.Keep *;
+}
diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml
index 65de12f..69470ed 100644
--- a/res/values-be/strings.xml
+++ b/res/values-be/strings.xml
@@ -16,7 +16,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1090682794607161063">"Звесткі для экстранных сітуац."</string>
+    <string name="app_label" msgid="1090682794607161063">"Даныя для экстранных сітуацый"</string>
     <string name="edit_info" msgid="5973929805855224805">"Рэдагаванне звестак для экстранных сітуацый"</string>
     <string name="tab_title_info" msgid="1402033103294855812">"Звесткі"</string>
     <string name="tab_title_contacts" msgid="4298341166404791209">"Кантакты"</string>
@@ -96,7 +96,7 @@
     <string name="cancel" msgid="7401575239009060939">"Скасаваць"</string>
     <string name="ok" msgid="163967937451981024">"ОК"</string>
     <string name="phone_type_and_phone_number" msgid="5034188169563878371">"<xliff:g id="PHONE_TYPE">%1$s</xliff:g> • <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
-    <string name="user_emergency_info_title" msgid="7827058167207376581">"Звесткі для экстранных сітуац."</string>
+    <string name="user_emergency_info_title" msgid="7827058167207376581">"Даныя для экстранных сітуацый"</string>
     <string name="user_emergency_info_consent" msgid="5636028073450797246">"Інфармацыя, якую вы ўведзяце тут, можа быць карыснай для асоб, якія будуць аказваць першую дапамогу ў выпадку надзвычайнай сітуацыі. Яна захоўваецца толькі на вашай прыладзе, і любы чалавек можа прачытаць яе ў набіральніку нумара для экстранных сітуацый, не разблакіроўваючы тэлефон."</string>
     <string name="emergency_info_continue" msgid="5453201508537906087">"Працягнуць"</string>
     <string name="no_info_provided" msgid="716200382010821001">"Няма інфармацыі аб уладальніку тэлефона"</string>
diff --git a/res/values-bs/strings.xml b/res/values-bs/strings.xml
index 8ca81a9..5453a1d 100644
--- a/res/values-bs/strings.xml
+++ b/res/values-bs/strings.xml
@@ -75,7 +75,7 @@
     <string name="medications" msgid="644428945685557183">"Lijekovi"</string>
     <string name="unknown_medications" msgid="2764171064510423734">"Nepoznato"</string>
     <string name="medications_hint" msgid="3221620025945593723">"Naprimjer, aspirin"</string>
-    <string name="medical_conditions" msgid="3555690011498283592">"Zdravstveni karton"</string>
+    <string name="medical_conditions" msgid="3555690011498283592">"Medicinske napomene"</string>
     <string name="unknown_medical_conditions" msgid="8051364895172053770">"Nepoznato"</string>
     <string name="medical_conditions_hint" msgid="6959152183029062882">"Naprimjer, astma"</string>
     <string name="organ_donor" msgid="5953509460007124827">"Donator organa"</string>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index bb40019..66c1d7b 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -16,9 +16,9 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1090682794607161063">"Oplysninger i nødsituationer"</string>
-    <string name="edit_info" msgid="5973929805855224805">"Rediger oplysninger i nødsituationer"</string>
-    <string name="tab_title_info" msgid="1402033103294855812">"Oplysninger"</string>
+    <string name="app_label" msgid="1090682794607161063">"Info til nødsituationer"</string>
+    <string name="edit_info" msgid="5973929805855224805">"Rediger info til nødsituationer"</string>
+    <string name="tab_title_info" msgid="1402033103294855812">"Info"</string>
     <string name="tab_title_contacts" msgid="4298341166404791209">"Kontaktpersoner"</string>
     <string name="name" msgid="4286267457738861977">"Navn"</string>
     <string name="unknown_name" msgid="2834802479170495056">"Ukendt"</string>
@@ -96,11 +96,11 @@
     <string name="cancel" msgid="7401575239009060939">"Annuller"</string>
     <string name="ok" msgid="163967937451981024">"OK"</string>
     <string name="phone_type_and_phone_number" msgid="5034188169563878371">"<xliff:g id="PHONE_TYPE">%1$s</xliff:g> • <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
-    <string name="user_emergency_info_title" msgid="7827058167207376581">"Oplysninger i nødsituationer"</string>
+    <string name="user_emergency_info_title" msgid="7827058167207376581">"Info til nødsituationer"</string>
     <string name="user_emergency_info_consent" msgid="5636028073450797246">"De oplysninger, du angiver her, kan hjælpe førstehjælpsydere i en nødsituation. De gemmes kun på din enhed, og alle kan se dem via funktionen Nødopkald på låseskærmen uden at låse din telefon op."</string>
     <string name="emergency_info_continue" msgid="5453201508537906087">"Fortsæt"</string>
     <string name="no_info_provided" msgid="716200382010821001">"Der er ingen oplysninger om telefonens ejer"</string>
-    <string name="tap_pencil" msgid="2723698054265296934">"Hvis dette er din telefon, skal du trykke på blyantikonet for at tilføje oplysninger, som vises her i nødsituationer"</string>
+    <string name="tap_pencil" msgid="2723698054265296934">"Hvis dette er din telefon, skal du trykke på blyantikonet for at tilføje information, som vises her, hvis der opstår en nødsituation"</string>
     <string name="clear_all" msgid="8899013032870561633">"Ryd alle"</string>
     <string name="clear" msgid="3648880442502887163">"Ryd"</string>
     <string name="clear_all_message" msgid="1548432000373861295">"Vil du rydde alle oplysninger og kontaktpersoner?"</string>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index 5c98949..c63b861 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -29,7 +29,7 @@
     <string name="dob" msgid="2813161080307245706">"(<xliff:g id="DATE_OF_BIRTH">%1$s</xliff:g>)"</string>
     <string name="age" msgid="8327537794752630199">"Edad: <xliff:g id="NUMERICAL_AGE">%1$d</xliff:g>"</string>
     <string name="remove_dob_icon_text" msgid="4413507180967999944">"Quitar la fecha de nacimiento"</string>
-    <string name="blood_type" msgid="6947022772999974608">"Tipo de sangre"</string>
+    <string name="blood_type" msgid="6947022772999974608">"Grupo sanguíneo"</string>
     <string name="unknown_blood_type" msgid="6337228278125085668">"Desconocido"</string>
     <string name="oplus" msgid="7759756742377867011">"O+"</string>
     <string name="ominus" msgid="5227278501191741055">"O-"</string>
@@ -71,13 +71,13 @@
     <string name="h_h" msgid="2183333409760379720">"HH"</string>
     <string name="allergies" msgid="2789200777539258165">"Alergias"</string>
     <string name="unknown_allergies" msgid="4383115953418061237">"Desconocida"</string>
-    <string name="allergies_hint" msgid="5488918780522184147">"Por ejemplo, maní"</string>
+    <string name="allergies_hint" msgid="5488918780522184147">"Por ejemplo, a las nueces"</string>
     <string name="medications" msgid="644428945685557183">"Medicamentos"</string>
     <string name="unknown_medications" msgid="2764171064510423734">"Desconocido"</string>
-    <string name="medications_hint" msgid="3221620025945593723">"Por ejemplo, aspirina"</string>
+    <string name="medications_hint" msgid="3221620025945593723">"Por ejemplo, a la penicilina"</string>
     <string name="medical_conditions" msgid="3555690011498283592">"Notas médicas"</string>
     <string name="unknown_medical_conditions" msgid="8051364895172053770">"Desconocida"</string>
-    <string name="medical_conditions_hint" msgid="6959152183029062882">"Por ejemplo, asma"</string>
+    <string name="medical_conditions_hint" msgid="6959152183029062882">"Por ejemplo, tengo asma"</string>
     <string name="organ_donor" msgid="5953509460007124827">"Donante de órganos"</string>
     <string name="unknown_organ_donor" msgid="2780515342875494225">"Desconocido"</string>
     <string name="yes" msgid="5829765567799916128">"Sí"</string>
@@ -100,7 +100,7 @@
     <string name="user_emergency_info_consent" msgid="5636028073450797246">"La información que ingreses aquí puede ayudar a los rescatistas en caso de emergencia. Se almacena solo en tu dispositivo, y cualquiera puede leerla desde el marcador de emergencia sin necesidad de desbloquear el teléfono."</string>
     <string name="emergency_info_continue" msgid="5453201508537906087">"Continuar"</string>
     <string name="no_info_provided" msgid="716200382010821001">"No hay información sobre el propietario del teléfono"</string>
-    <string name="tap_pencil" msgid="2723698054265296934">"Si este teléfono es tuyo, presiona el ícono el lápiz para agregar información que se mostrará aquí en caso de emergencia"</string>
+    <string name="tap_pencil" msgid="2723698054265296934">"Si este teléfono es tuyo, presiona el ícono del lápiz para agregar información que se mostrará aquí en caso de emergencia"</string>
     <string name="clear_all" msgid="8899013032870561633">"Borrar todo"</string>
     <string name="clear" msgid="3648880442502887163">"Borrar"</string>
     <string name="clear_all_message" msgid="1548432000373861295">"¿Quieres borrar toda la información y los contactos?"</string>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index 5dc40c9..62023c8 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -100,8 +100,8 @@
     <string name="user_emergency_info_consent" msgid="5636028073450797246">"La información que introduzcas aquí puede ser útil para los servicios de emergencia. Esta información solo se almacena en tu dispositivo, y cualquiera puede consultarla desde el marcador de emergencia sin desbloquear el teléfono."</string>
     <string name="emergency_info_continue" msgid="5453201508537906087">"Continuar"</string>
     <string name="no_info_provided" msgid="716200382010821001">"No hay información sobre el propietario del teléfono"</string>
-    <string name="tap_pencil" msgid="2723698054265296934">"Si eres el propietario de este teléfono, toca el icono de lápiz para añadir información que se mostrará en caso de emergencia"</string>
+    <string name="tap_pencil" msgid="2723698054265296934">"Si eres el propietario de este teléfono, toca el icono de lápiz para añadir información que mostrar en caso de emergencia"</string>
     <string name="clear_all" msgid="8899013032870561633">"Borrar todo"</string>
     <string name="clear" msgid="3648880442502887163">"Borrar"</string>
-    <string name="clear_all_message" msgid="1548432000373861295">"¿Borrar toda la información y todos los contactos?"</string>
+    <string name="clear_all_message" msgid="1548432000373861295">"¿Borrar toda la información y los contactos?"</string>
 </resources>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index 659e00a..926f7f4 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -79,7 +79,7 @@
     <string name="unknown_medical_conditions" msgid="8051364895172053770">"Inconnues"</string>
     <string name="medical_conditions_hint" msgid="6959152183029062882">"Par exemple, asthme"</string>
     <string name="organ_donor" msgid="5953509460007124827">"Donneur d\'organes"</string>
-    <string name="unknown_organ_donor" msgid="2780515342875494225">"Inconnu"</string>
+    <string name="unknown_organ_donor" msgid="2780515342875494225">"Ne sais pas"</string>
     <string name="yes" msgid="5829765567799916128">"Oui"</string>
     <string name="no" msgid="1681689233660683509">"Non"</string>
     <!-- no translation found for organ_donor_entries:0 (4680498266537823362) -->
diff --git a/res/values-gl/strings.xml b/res/values-gl/strings.xml
index 1d328fd..d4ff515 100644
--- a/res/values-gl/strings.xml
+++ b/res/values-gl/strings.xml
@@ -100,7 +100,7 @@
     <string name="user_emergency_info_consent" msgid="5636028073450797246">"A información que introduciches pode axudar aos servizos de primeira resposta en caso de emerxencia. Só se almacena no teu dispositivo, pero calquera persoa pode lela desde o marcador de emerxencia sen desbloquear o teu teléfono."</string>
     <string name="emergency_info_continue" msgid="5453201508537906087">"Continuar"</string>
     <string name="no_info_provided" msgid="716200382010821001">"Non hai información sobre o propietario do teléfono"</string>
-    <string name="tap_pencil" msgid="2723698054265296934">"Se este é o teu teléfono, toca a icona do lapis para engadir a información que se mostrara aquí en caso de emerxencia"</string>
+    <string name="tap_pencil" msgid="2723698054265296934">"Se este é o teu teléfono, toca a icona do lapis para engadir a información que se mostrará aquí en caso de emerxencia"</string>
     <string name="clear_all" msgid="8899013032870561633">"Borrar todo"</string>
     <string name="clear" msgid="3648880442502887163">"Borrar"</string>
     <string name="clear_all_message" msgid="1548432000373861295">"Queres borrar toda a información e os contactos?"</string>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index 300a6a7..b6aefb8 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -100,7 +100,7 @@
     <string name="user_emergency_info_consent" msgid="5636028073450797246">"Az Ön által itt megadott információk segíthetnek az elsőként a helyszínre érkezőknek vészhelyzet esetén. Az információkat kizárólag a telefon tárolja, és bárki elolvashatja őket a segélyhívó tárcsázóján a telefon feloldása nélkül."</string>
     <string name="emergency_info_continue" msgid="5453201508537906087">"Tovább"</string>
     <string name="no_info_provided" msgid="716200382010821001">"Nincs információ a telefon tulajdonosáról"</string>
-    <string name="tap_pencil" msgid="2723698054265296934">"Ha ez az Ön telefonja, koppintson a ceruza ikonra, és adja meg azokat az adatokat, amelyeket vészhelyzet esetén itt megjeleníthetünk."</string>
+    <string name="tap_pencil" msgid="2723698054265296934">"Ha ez az Ön telefonja, koppintson a ceruzára, és adja meg azokat az adatokat, amelyeket vészhelyzet esetén itt megjeleníthetünk."</string>
     <string name="clear_all" msgid="8899013032870561633">"Összes törlése"</string>
     <string name="clear" msgid="3648880442502887163">"Törlés"</string>
     <string name="clear_all_message" msgid="1548432000373861295">"Törli az összes információt és névjegyet?"</string>
diff --git a/res/values-hy/strings.xml b/res/values-hy/strings.xml
index 4748edd..e401dba 100644
--- a/res/values-hy/strings.xml
+++ b/res/values-hy/strings.xml
@@ -16,11 +16,11 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1090682794607161063">"Անհետաձգելի բուժօգնության տվյալներ"</string>
+    <string name="app_label" msgid="1090682794607161063">"Անձնական բուժտվյալներ"</string>
     <string name="edit_info" msgid="5973929805855224805">"Փոփոխել անհետաձգելի բուժօգնության տվյալները"</string>
     <string name="tab_title_info" msgid="1402033103294855812">"Տեղեկություններ"</string>
     <string name="tab_title_contacts" msgid="4298341166404791209">"Կոնտակտներ"</string>
-    <string name="name" msgid="4286267457738861977">"Անունը"</string>
+    <string name="name" msgid="4286267457738861977">"Անուն"</string>
     <string name="unknown_name" msgid="2834802479170495056">"Անհայտ"</string>
     <string name="address" msgid="6449303483151189969">"Հասցե"</string>
     <string name="unknown_address" msgid="4212576729941786121">"Անհայտ"</string>
@@ -96,7 +96,7 @@
     <string name="cancel" msgid="7401575239009060939">"Չեղարկել"</string>
     <string name="ok" msgid="163967937451981024">"Լավ"</string>
     <string name="phone_type_and_phone_number" msgid="5034188169563878371">"<xliff:g id="PHONE_TYPE">%1$s</xliff:g> • <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
-    <string name="user_emergency_info_title" msgid="7827058167207376581">"Անհետաձգելի բուժօգնության տվյալներ"</string>
+    <string name="user_emergency_info_title" msgid="7827058167207376581">"Անձնական բուժտվյալներ"</string>
     <string name="user_emergency_info_consent" msgid="5636028073450797246">"Արտակարգ իրավիճակների դեպքում այստեղ մուտքագրված ձեր բժշկական տվյալները և կոնտակտները կարող են օգտակար լինել առաջին օգնություն ցուցաբերողներին և փրկարարներին: Տվյալները պահվում են միայն ձեր սարքում և բոլորը կարող են կարդալ դրանք արտակարգ իրավիճակների համարհավաքիչից՝ առանց հեռախոսն ապակողպելու անհրաժեշտության:"</string>
     <string name="emergency_info_continue" msgid="5453201508537906087">"Շարունակել"</string>
     <string name="no_info_provided" msgid="716200382010821001">"Հեռախոսի սեփականատիրոջ մասին տեղեկություններ չկան"</string>
diff --git a/res/values-km/strings.xml b/res/values-km/strings.xml
index eadd7e5..19a8892 100644
--- a/res/values-km/strings.xml
+++ b/res/values-km/strings.xml
@@ -77,7 +77,7 @@
     <string name="medications_hint" msgid="3221620025945593723">"ឧទាហរណ៍៖ ថ្នាំអាស្ពីរីន"</string>
     <string name="medical_conditions" msgid="3555690011498283592">"កំណត់ហេតុវេជ្ជសាស្ត្រ"</string>
     <string name="unknown_medical_conditions" msgid="8051364895172053770">"មិនស្គាល់"</string>
-    <string name="medical_conditions_hint" msgid="6959152183029062882">"ឧទាហរណ៍៖ ជម្ងឺហឺត"</string>
+    <string name="medical_conditions_hint" msgid="6959152183029062882">"ឧទាហរណ៍៖ ជំងឺហឺត"</string>
     <string name="organ_donor" msgid="5953509460007124827">"អ្នកបរិច្ចាគសរីរាង្គ"</string>
     <string name="unknown_organ_donor" msgid="2780515342875494225">"មិនស្គាល់"</string>
     <string name="yes" msgid="5829765567799916128">"បាទ/ចាស"</string>
@@ -86,7 +86,7 @@
     <!-- no translation found for organ_donor_entries:1 (4906312680266515592) -->
     <!-- no translation found for organ_donor_entries:2 (9037713957399818892) -->
     <string name="emergency_contacts_title" msgid="5462202017417821030">"ទំនាក់ទំនងសង្គ្រោះបន្ទាន់"</string>
-    <string name="add_emergency_contact" msgid="4063577069613981029">"បន្ថែម​ទំនាក់ទំនង"</string>
+    <string name="add_emergency_contact" msgid="4063577069613981029">"បញ្ចូលទំនាក់ទំនង"</string>
     <string name="fail_load_contact_picker" msgid="817205483833876726">"រក​មិន​ឃើញ​កម្មវិធី​ជ្រើសរើស​ទំនាក់ទំនង​ទេ"</string>
     <string name="fail_display_contact" msgid="4128854688897045879">"មិន​អាច​បង្ហាញ​ទំនាក់ទំនង​នេះ​បានទេ"</string>
     <string name="remove_contact" msgid="6934983445723096759">"យក <xliff:g id="CONTACT_NAME">%1$s</xliff:g> ចេញពីទំនាក់ទំនងសង្គ្រោះបន្ទាន់ឬ?"</string>
@@ -100,7 +100,7 @@
     <string name="user_emergency_info_consent" msgid="5636028073450797246">"ព័ត៌មានដែលអ្នកបញ្ចូលនៅទីនេះអាចជួយដល់អ្នកសង្គ្រោះបន្ទាន់ នៅពេលដែល​មានអាសន្នកើតឡើង។ ព័ត៌មាន​នេះ​ត្រូវបាន​ផ្ទុកនៅក្នុងឧបករណ៍របស់អ្នកតែមួយគត់ ហើយអ្នកណាក៏អាចអានព័ត៌មាននេះបាននៅលើអេក្រង់ហៅទូរស័ព្ទសង្គ្រោះបន្ទាន់ដោយមិនចាំបាច់ដោះសោទូរស័ព្ទរបស់អ្នកឡើយ។"</string>
     <string name="emergency_info_continue" msgid="5453201508537906087">"បន្ត"</string>
     <string name="no_info_provided" msgid="716200382010821001">"គ្មានព័ត៌មានអំពីម្ចាស់ទូរសព្ទនេះទេ"</string>
-    <string name="tap_pencil" msgid="2723698054265296934">"ប្រសិនបើទូរសព្ទនេះជារបស់អ្នក សូមប៉ះរូបតំណាងខ្មៅដៃដើម្បីបន្ថែមព័ត៌មានដែលនឹងត្រូវបង្ហាញនៅទីនេះក្នុងករណីសង្គ្រោះបន្ទាន់"</string>
+    <string name="tap_pencil" msgid="2723698054265296934">"ប្រសិនបើទូរសព្ទនេះជារបស់អ្នក សូមប៉ះរូបតំណាងខ្មៅដៃដើម្បីបញ្ចូលព័ត៌មានដែលនឹងត្រូវបង្ហាញនៅទីនេះក្នុងករណីសង្គ្រោះបន្ទាន់"</string>
     <string name="clear_all" msgid="8899013032870561633">"ជម្រះទាំងអស់"</string>
     <string name="clear" msgid="3648880442502887163">"ជម្រះ"</string>
     <string name="clear_all_message" msgid="1548432000373861295">"លុបព័ត៌មាន និងទំនាក់ទំនងទាំងអស់ឬ?"</string>
diff --git a/res/values-ky/strings.xml b/res/values-ky/strings.xml
index 3c934c0..e9063ed 100644
--- a/res/values-ky/strings.xml
+++ b/res/values-ky/strings.xml
@@ -16,8 +16,8 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1090682794607161063">"Өзгөчө кырдаал маалыматы"</string>
-    <string name="edit_info" msgid="5973929805855224805">"Өзгөчө кырдаал маалыматын өзгөртүү"</string>
+    <string name="app_label" msgid="1090682794607161063">"Өзгөчө кырдаал жндө маалымат"</string>
+    <string name="edit_info" msgid="5973929805855224805">"Өзгөчө кырдаалга байланыштуу маалыматты өзгөртүү"</string>
     <string name="tab_title_info" msgid="1402033103294855812">"Маалымат"</string>
     <string name="tab_title_contacts" msgid="4298341166404791209">"Байланыштар"</string>
     <string name="name" msgid="4286267457738861977">"Аты"</string>
@@ -93,14 +93,14 @@
     <string name="remove_contact_icon_text" msgid="4576641386490101363">"Байланышты алып салуу"</string>
     <string name="fail_add_contact" msgid="6511490846952942291">"Байланыш маалыматы туура окулбай жатат"</string>
     <string name="remove" msgid="1243949503772376064">"Алып салуу"</string>
-    <string name="cancel" msgid="7401575239009060939">"Жокко чыгаруу"</string>
+    <string name="cancel" msgid="7401575239009060939">"Жок"</string>
     <string name="ok" msgid="163967937451981024">"Жарайт"</string>
     <string name="phone_type_and_phone_number" msgid="5034188169563878371">"<xliff:g id="PHONE_TYPE">%1$s</xliff:g> • <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
-    <string name="user_emergency_info_title" msgid="7827058167207376581">"Өзгөчө кырдаал маалыматы"</string>
-    <string name="user_emergency_info_consent" msgid="5636028073450797246">"Бул жерде көрсөтүлгөн маалымат түзмөгүңүздө гана сакталат, бирок аны өзгөчө кырдаалда телефон кулпуланып турса да каалаган адам окуй алат."</string>
+    <string name="user_emergency_info_title" msgid="7827058167207376581">"Өзгөчө кырдаал жндө маалымат"</string>
+    <string name="user_emergency_info_consent" msgid="5636028073450797246">"Бул жерде көрсөтүлгөн маалымат түзмөгүңүздө гана сакталып, өзгөчө кырдаалда атайын кызматтарга чалуу экранында телефон кулпуланып турса да баарына көрүнөт."</string>
     <string name="emergency_info_continue" msgid="5453201508537906087">"Улантуу"</string>
     <string name="no_info_provided" msgid="716200382010821001">"Телефондун ээси жөнүндө эч кандай маалымат жок"</string>
-    <string name="tap_pencil" msgid="2723698054265296934">"Эгер бул сиздин телефонуңуз болсо, өзгөчө кырдаалда бул жерде көрсөтүлө турган маалыматты кошуу үчүн калем сүрөтчөсүн таптаңыз"</string>
+    <string name="tap_pencil" msgid="2723698054265296934">"Эгер бул сиздин телефонуңуз болсо, калем сүрөтчөсүн басып туруп, өзгөчө кырдаалда колдонула турган маалыматты бул жерге киргизиңиз."</string>
     <string name="clear_all" msgid="8899013032870561633">"Баарын тазалоо"</string>
     <string name="clear" msgid="3648880442502887163">"Тазалоо"</string>
     <string name="clear_all_message" msgid="1548432000373861295">"Бардык маалымат жана байланыштар тазалансынбы?"</string>
diff --git a/res/values-my/strings.xml b/res/values-my/strings.xml
index fca2f48..51554d8 100644
--- a/res/values-my/strings.xml
+++ b/res/values-my/strings.xml
@@ -101,7 +101,7 @@
     <string name="emergency_info_continue" msgid="5453201508537906087">"ဆက်လုပ်ရန်"</string>
     <string name="no_info_provided" msgid="716200382010821001">"ဖုန်းပိုင်ရှင်နှင့် ပတ်သက်သည့် အချက်အလက်များ မရှိပါ"</string>
     <string name="tap_pencil" msgid="2723698054265296934">"ဤအရာသည် သင့်ဖုန်းဖြစ်ပါက အရေးပေါ်ကိစ္စကြုံလာလျှင် ပြသမည့် အချက်အလက်များထည့်ရန် ခဲတံသင်္ကေတကို တို့ပါ"</string>
-    <string name="clear_all" msgid="8899013032870561633">"အားလုံး ဖယ်ပါ"</string>
+    <string name="clear_all" msgid="8899013032870561633">"အားလုံး ရှင်းပါ"</string>
     <string name="clear" msgid="3648880442502887163">"ရှင်းရန်"</string>
-    <string name="clear_all_message" msgid="1548432000373861295">"အချက်အလက်များနှင့် အဆက်အသွယ်များအားလုံးကို ဖယ်ရှားမလား။"</string>
+    <string name="clear_all_message" msgid="1548432000373861295">"အချက်အလက်နှင့် အဆက်အသွယ်အားလုံးကို ရှင်းမလား။"</string>
 </resources>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index 8989f4e..877d758 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -69,7 +69,7 @@
     <string name="ab_positive" msgid="1931300033534642005">"A B positiv"</string>
     <string name="ab_negative" msgid="2064555613093591729">"A B negativ"</string>
     <string name="h_h" msgid="2183333409760379720">"H H"</string>
-    <string name="allergies" msgid="2789200777539258165">"Allergi"</string>
+    <string name="allergies" msgid="2789200777539258165">"Allergier"</string>
     <string name="unknown_allergies" msgid="4383115953418061237">"Ukjent"</string>
     <string name="allergies_hint" msgid="5488918780522184147">"For eksempel peanøtter"</string>
     <string name="medications" msgid="644428945685557183">"Medisiner"</string>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index e2a797a..211cd9f 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -21,16 +21,16 @@
     <string name="tab_title_info" msgid="1402033103294855812">"Informacje"</string>
     <string name="tab_title_contacts" msgid="4298341166404791209">"Kontakty"</string>
     <string name="name" msgid="4286267457738861977">"Imię i nazwisko"</string>
-    <string name="unknown_name" msgid="2834802479170495056">"Nieznane"</string>
+    <string name="unknown_name" msgid="2834802479170495056">"Brak informacji"</string>
     <string name="address" msgid="6449303483151189969">"Adres"</string>
-    <string name="unknown_address" msgid="4212576729941786121">"Nieznany"</string>
+    <string name="unknown_address" msgid="4212576729941786121">"Brak informacji"</string>
     <string name="date_of_birth" msgid="777979232444227891">"Data urodzenia"</string>
-    <string name="unknown_date_of_birth" msgid="7416355536916066758">"Nieznana"</string>
+    <string name="unknown_date_of_birth" msgid="7416355536916066758">"Brak informacji"</string>
     <string name="dob" msgid="2813161080307245706">"(<xliff:g id="DATE_OF_BIRTH">%1$s</xliff:g>)"</string>
     <string name="age" msgid="8327537794752630199">"Wiek: <xliff:g id="NUMERICAL_AGE">%1$d</xliff:g>"</string>
     <string name="remove_dob_icon_text" msgid="4413507180967999944">"Usuń datę urodzenia"</string>
     <string name="blood_type" msgid="6947022772999974608">"Grupa krwi"</string>
-    <string name="unknown_blood_type" msgid="6337228278125085668">"Nieznana"</string>
+    <string name="unknown_blood_type" msgid="6337228278125085668">"Brak informacji"</string>
     <string name="oplus" msgid="7759756742377867011">"0+"</string>
     <string name="ominus" msgid="5227278501191741055">"0-"</string>
     <string name="aplus" msgid="4982472245421753463">"A+"</string>
@@ -70,16 +70,16 @@
     <string name="ab_negative" msgid="2064555613093591729">"A B minus"</string>
     <string name="h_h" msgid="2183333409760379720">"H H"</string>
     <string name="allergies" msgid="2789200777539258165">"Alergie"</string>
-    <string name="unknown_allergies" msgid="4383115953418061237">"Nieznane"</string>
+    <string name="unknown_allergies" msgid="4383115953418061237">"Brak informacji"</string>
     <string name="allergies_hint" msgid="5488918780522184147">"Na przykład orzeszki ziemne"</string>
     <string name="medications" msgid="644428945685557183">"Leki"</string>
-    <string name="unknown_medications" msgid="2764171064510423734">"Nieznane"</string>
+    <string name="unknown_medications" msgid="2764171064510423734">"Brak informacji"</string>
     <string name="medications_hint" msgid="3221620025945593723">"Na przykład aspiryna"</string>
     <string name="medical_conditions" msgid="3555690011498283592">"Uwagi medyczne"</string>
-    <string name="unknown_medical_conditions" msgid="8051364895172053770">"Nieznane"</string>
+    <string name="unknown_medical_conditions" msgid="8051364895172053770">"Brak informacji"</string>
     <string name="medical_conditions_hint" msgid="6959152183029062882">"Na przykład astma"</string>
     <string name="organ_donor" msgid="5953509460007124827">"Dawca narządów"</string>
-    <string name="unknown_organ_donor" msgid="2780515342875494225">"Nieznana"</string>
+    <string name="unknown_organ_donor" msgid="2780515342875494225">"Brak informacji"</string>
     <string name="yes" msgid="5829765567799916128">"Tak"</string>
     <string name="no" msgid="1681689233660683509">"Nie"</string>
     <!-- no translation found for organ_donor_entries:0 (4680498266537823362) -->
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index 312b1ac..06233a0 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -16,8 +16,8 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1090682794607161063">"Núdzové informácie"</string>
-    <string name="edit_info" msgid="5973929805855224805">"Upraviť núdzové informácie"</string>
+    <string name="app_label" msgid="1090682794607161063">"Tiesňové informácie"</string>
+    <string name="edit_info" msgid="5973929805855224805">"Upraviť tiesňové informácie"</string>
     <string name="tab_title_info" msgid="1402033103294855812">"Informácie"</string>
     <string name="tab_title_contacts" msgid="4298341166404791209">"Kontakty"</string>
     <string name="name" msgid="4286267457738861977">"Meno"</string>
@@ -96,11 +96,11 @@
     <string name="cancel" msgid="7401575239009060939">"Zrušiť"</string>
     <string name="ok" msgid="163967937451981024">"OK"</string>
     <string name="phone_type_and_phone_number" msgid="5034188169563878371">"<xliff:g id="PHONE_TYPE">%1$s</xliff:g> • <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
-    <string name="user_emergency_info_title" msgid="7827058167207376581">"Núdzové informácie"</string>
-    <string name="user_emergency_info_consent" msgid="5636028073450797246">"Tu uvedené informácie pomôžu záchranárom, ak sa ocitnete v núdzovej situácii. Sú uložené iba na zariadení. Ktokoľvek si ich môže prečítať na obrazovke tiesňového vytáčania bez nutnosti odomknúť telefón."</string>
+    <string name="user_emergency_info_title" msgid="7827058167207376581">"Tiesňové informácie"</string>
+    <string name="user_emergency_info_consent" msgid="5636028073450797246">"Tu uvedené informácie pomôžu záchranárom, ak sa ocitnete v tiesňovej situácii. Sú uložené iba na zariadení. Ktokoľvek si ich môže prečítať na obrazovke tiesňového vytáčania bez nutnosti odomknúť telefón."</string>
     <string name="emergency_info_continue" msgid="5453201508537906087">"Pokračovať"</string>
     <string name="no_info_provided" msgid="716200382010821001">"Žiadne informácie o vlastníkovi telefónu"</string>
-    <string name="tap_pencil" msgid="2723698054265296934">"Ak je toto váš telefón, klepnite na ikonu ceruzky a pridajte informácie, ktoré sa tu zobrazia v prípade núdze"</string>
+    <string name="tap_pencil" msgid="2723698054265296934">"Ak je toto váš telefón, klepnite na ikonu ceruzky a pridajte informácie, ktoré sa tu zobrazia v prípade tiesne"</string>
     <string name="clear_all" msgid="8899013032870561633">"Vymazať všetko"</string>
     <string name="clear" msgid="3648880442502887163">"Vymazať"</string>
     <string name="clear_all_message" msgid="1548432000373861295">"Vymazať všetky informácie a kontakty?"</string>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index a54cf83..f74931b 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -78,7 +78,7 @@
     <string name="medical_conditions" msgid="3555690011498283592">"Madokezo ya matibabu"</string>
     <string name="unknown_medical_conditions" msgid="8051364895172053770">"Haijulikani"</string>
     <string name="medical_conditions_hint" msgid="6959152183029062882">"Kwa mfano, pumu"</string>
-    <string name="organ_donor" msgid="5953509460007124827">"Mfadhili wa kiungo cha mwili"</string>
+    <string name="organ_donor" msgid="5953509460007124827">"Mchangia kiungo cha mwili"</string>
     <string name="unknown_organ_donor" msgid="2780515342875494225">"Haijulikani"</string>
     <string name="yes" msgid="5829765567799916128">"Ndiyo"</string>
     <string name="no" msgid="1681689233660683509">"Hapana"</string>
@@ -99,9 +99,9 @@
     <string name="user_emergency_info_title" msgid="7827058167207376581">"Maelezo ya dharura"</string>
     <string name="user_emergency_info_consent" msgid="5636028073450797246">"Maelezo unayoandika hapa yanaweza kuwasaidia watu wa kwanza kuchukua hatua jambo la dharura likitokea. Maelezo haya huhifadhiwa kwenye kifaa chako pekee na mtu yeyote anaweza kuyasoma kutoka kipiga simu ya dharura bila kufungua simu yako."</string>
     <string name="emergency_info_continue" msgid="5453201508537906087">"Endelea"</string>
-    <string name="no_info_provided" msgid="716200382010821001">"Hatuna maelezo kuhusu mmiliki wa simu"</string>
+    <string name="no_info_provided" msgid="716200382010821001">"Hatuna maelezo kuhusu mwenye simu hii"</string>
     <string name="tap_pencil" msgid="2723698054265296934">"Ikiwa hii ni simu yako, gonga aikoni ya penseli ili uongeze maelezo ambayo yataonekana hapa wakati wa dharura."</string>
     <string name="clear_all" msgid="8899013032870561633">"Futa yote"</string>
     <string name="clear" msgid="3648880442502887163">"Futa"</string>
-    <string name="clear_all_message" msgid="1548432000373861295">"Ungependa kufuta maelezo na anwani zote?"</string>
+    <string name="clear_all_message" msgid="1548432000373861295">"Je, ungependa kufuta maelezo na anwani zote?"</string>
 </resources>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index 52a556e..ecbce7b 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -103,5 +103,5 @@
     <string name="tap_pencil" msgid="2723698054265296934">"Bu telefon size aitse, acil durumda burada görüntülenecek bilgileri eklemek için kalem simgesine dokunun"</string>
     <string name="clear_all" msgid="8899013032870561633">"Tümünü temizle"</string>
     <string name="clear" msgid="3648880442502887163">"Temizle"</string>
-    <string name="clear_all_message" msgid="1548432000373861295">"Tüm veriler ve kişiler temizlensin mi?"</string>
+    <string name="clear_all_message" msgid="1548432000373861295">"Tüm bilgiler ve kişiler temizlensin mi?"</string>
 </resources>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index 6df2e1e..bbb08a9 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -96,7 +96,7 @@
     <string name="cancel" msgid="7401575239009060939">"Скасувати"</string>
     <string name="ok" msgid="163967937451981024">"ОК"</string>
     <string name="phone_type_and_phone_number" msgid="5034188169563878371">"<xliff:g id="PHONE_TYPE">%1$s</xliff:g> • <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
-    <string name="user_emergency_info_title" msgid="7827058167207376581">"Дані для екстр. вип."</string>
+    <string name="user_emergency_info_title" msgid="7827058167207376581">"Для екстрених випадків"</string>
     <string name="user_emergency_info_consent" msgid="5636028073450797246">"Інформація, яку ви тут вводите, може допомогти в надзвичайних ситуаціях. Вона зберігається лише на вашому пристрої, але її може прочитати будь-яка людина навіть на заблокованому телефоні, відкривши екран екстреного виклику."</string>
     <string name="emergency_info_continue" msgid="5453201508537906087">"Продовжити"</string>
     <string name="no_info_provided" msgid="716200382010821001">"Немає інформації про власника телефона"</string>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index ceb29ea..ca9fe85 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -100,7 +100,7 @@
     <string name="user_emergency_info_consent" msgid="5636028073450797246">"您在此处输入的信息可协助第一线救援人员在发生紧急事件时提供相关援助。系统只会将这项信息存储在您的设备上,但任何人都能在您的手机未解锁的情况下通过紧急呼救拨号器看到此信息。"</string>
     <string name="emergency_info_continue" msgid="5453201508537906087">"继续"</string>
     <string name="no_info_provided" msgid="716200382010821001">"没有任何关于手机机主的信息"</string>
-    <string name="tap_pencil" msgid="2723698054265296934">"如果这是您的手机,请点按铅笔图标添加相应的信息,以便在发生紧急情况时显示在此处"</string>
+    <string name="tap_pencil" msgid="2723698054265296934">"如果这是您的手机,请点按铅笔图标,添加相应的信息,以备紧急时使用"</string>
     <string name="clear_all" msgid="8899013032870561633">"全部清除"</string>
     <string name="clear" msgid="3648880442502887163">"清除"</string>
     <string name="clear_all_message" msgid="1548432000373861295">"要清除所有信息和联系人吗?"</string>
diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml
index c0d03e9..e03351c 100644
--- a/res/values-zh-rHK/strings.xml
+++ b/res/values-zh-rHK/strings.xml
@@ -69,13 +69,13 @@
     <string name="ab_positive" msgid="1931300033534642005">"AB 正型"</string>
     <string name="ab_negative" msgid="2064555613093591729">"AB 負型"</string>
     <string name="h_h" msgid="2183333409760379720">"H H"</string>
-    <string name="allergies" msgid="2789200777539258165">"過敏症"</string>
+    <string name="allergies" msgid="2789200777539258165">"過敏"</string>
     <string name="unknown_allergies" msgid="4383115953418061237">"不明"</string>
     <string name="allergies_hint" msgid="5488918780522184147">"例如花生"</string>
     <string name="medications" msgid="644428945685557183">"服用中藥物"</string>
     <string name="unknown_medications" msgid="2764171064510423734">"不明"</string>
     <string name="medications_hint" msgid="3221620025945593723">"例如阿士匹靈"</string>
-    <string name="medical_conditions" msgid="3555690011498283592">"醫療事項"</string>
+    <string name="medical_conditions" msgid="3555690011498283592">"醫療注意事項"</string>
     <string name="unknown_medical_conditions" msgid="8051364895172053770">"不明"</string>
     <string name="medical_conditions_hint" msgid="6959152183029062882">"例如哮喘"</string>
     <string name="organ_donor" msgid="5953509460007124827">"器官捐贈者"</string>
@@ -99,8 +99,8 @@
     <string name="user_emergency_info_title" msgid="7827058167207376581">"緊急資料"</string>
     <string name="user_emergency_info_consent" msgid="5636028073450797246">"您在此輸入的資料將有助急救員處理緊急情況。雖然這些資料只會儲存在您的裝置中,但任何人士無需將手機解鎖也可從緊急撥號器看到。"</string>
     <string name="emergency_info_continue" msgid="5453201508537906087">"繼續"</string>
-    <string name="no_info_provided" msgid="716200382010821001">"沒有關於手機擁有者的資料"</string>
-    <string name="tap_pencil" msgid="2723698054265296934">"如果這部手機屬於您,請輕按鉛筆圖示,以加入發生緊急事件時在此顯示的資料"</string>
+    <string name="no_info_provided" msgid="716200382010821001">"沒有手機擁有者的資料"</string>
+    <string name="tap_pencil" msgid="2723698054265296934">"如果這是您的手機,請輕按鉛筆圖示加入資料,在緊急情況時便會在此顯示"</string>
     <string name="clear_all" msgid="8899013032870561633">"全部清除"</string>
     <string name="clear" msgid="3648880442502887163">"清除"</string>
     <string name="clear_all_message" msgid="1548432000373861295">"要清除所有資料和聯絡人嗎?"</string>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index f684940..acddc20 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -97,7 +97,7 @@
     <string name="ok" msgid="163967937451981024">"確定"</string>
     <string name="phone_type_and_phone_number" msgid="5034188169563878371">"<xliff:g id="PHONE_TYPE">%1$s</xliff:g> • <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
     <string name="user_emergency_info_title" msgid="7827058167207376581">"緊急資訊"</string>
-    <string name="user_emergency_info_consent" msgid="5636028073450797246">"您在這裡輸入的資訊可協助第一線處理人員在發生緊急事件時提供相關協助。這項資訊只會儲存在您的裝置上;任何人都能透過緊急撥號器讀取這項資訊,而不需將手機解鎖。"</string>
+    <string name="user_emergency_info_consent" msgid="5636028073450797246">"你在這裡輸入的資訊可協助第一線處理人員在發生緊急事件時提供相關協助。這項資訊只會儲存在你的裝置上;任何人都能透過緊急撥號器讀取這項資訊,而不需將手機解鎖。"</string>
     <string name="emergency_info_continue" msgid="5453201508537906087">"繼續"</string>
     <string name="no_info_provided" msgid="716200382010821001">"沒有任何關於手機擁有者的資訊"</string>
     <string name="tap_pencil" msgid="2723698054265296934">"如果這是你的手機,輕觸鉛筆圖示就能新增緊急救援資訊並顯示在這裡,以備不時之需"</string>
diff --git a/res/values/config.xml b/res/values/config.xml
new file mode 100644
index 0000000..54792d2
--- /dev/null
+++ b/res/values/config.xml
@@ -0,0 +1,21 @@
+<?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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+
+      <!-- Fully-qualified class name for the implementation of the FeatureFactory to be instantiated. -->
+    <string name="config_featureFactory" translatable="false">com.android.emergency.overlay.FeatureFactoryImpl</string>
+
+</resources>
diff --git a/src/com/android/emergency/edit/EditInfoActivity.java b/src/com/android/emergency/edit/EditInfoActivity.java
index 405e506..cda3642 100644
--- a/src/com/android/emergency/edit/EditInfoActivity.java
+++ b/src/com/android/emergency/edit/EditInfoActivity.java
@@ -35,6 +35,7 @@
 import com.android.emergency.EmergencyTabActivity;
 import com.android.emergency.PreferenceKeys;
 import com.android.emergency.R;
+import com.android.emergency.overlay.FeatureFactory;
 import com.android.emergency.view.ViewInfoActivity;
 import com.android.internal.logging.MetricsLogger;
 import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
@@ -104,12 +105,14 @@
 
     @Override
     protected ArrayList<Pair<String, Fragment>> setUpFragments() {
+        FeatureFactory featureFactory = FeatureFactory.getFactory(this);
+
         // Always return the two fragments in edit mode.
         ArrayList<Pair<String, Fragment>> fragments = new ArrayList<>(2);
         fragments.add(Pair.create(getResources().getString(R.string.tab_title_info),
                 EditEmergencyInfoFragment.newInstance()));
         fragments.add(Pair.create(getResources().getString(R.string.tab_title_contacts),
-                EditEmergencyContactsFragment.newInstance()));
+                featureFactory.getEmergencyContactsFeatureProvider().createEditContactsFragment()));
         return fragments;
     }
 
diff --git a/src/com/android/emergency/edit/EmergencyContactsFeatureProvider.java b/src/com/android/emergency/edit/EmergencyContactsFeatureProvider.java
new file mode 100644
index 0000000..3b2dcf5
--- /dev/null
+++ b/src/com/android/emergency/edit/EmergencyContactsFeatureProvider.java
@@ -0,0 +1,24 @@
+/*
+ * 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.emergency.edit;
+
+import android.app.Fragment;
+
+/** Feature provider for Emergency Contacts. */
+public interface EmergencyContactsFeatureProvider {
+    /** @return a fragment to edit emergency contacts. */
+    Fragment createEditContactsFragment();
+}
diff --git a/src/com/android/emergency/edit/EmergencyContactsFeatureProviderImpl.java b/src/com/android/emergency/edit/EmergencyContactsFeatureProviderImpl.java
new file mode 100644
index 0000000..b0c640c
--- /dev/null
+++ b/src/com/android/emergency/edit/EmergencyContactsFeatureProviderImpl.java
@@ -0,0 +1,26 @@
+/*
+ * 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.emergency.edit;
+
+import android.app.Fragment;
+
+/** AOSP implementation of Emergency Contacts data source. */
+public class EmergencyContactsFeatureProviderImpl implements EmergencyContactsFeatureProvider {
+    @Override
+    public Fragment createEditContactsFragment() {
+        return EditEmergencyContactsFragment.newInstance();
+    }
+}
diff --git a/src/com/android/emergency/overlay/FeatureFactory.java b/src/com/android/emergency/overlay/FeatureFactory.java
new file mode 100644
index 0000000..1e86d0d
--- /dev/null
+++ b/src/com/android/emergency/overlay/FeatureFactory.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.emergency.overlay;
+
+import android.content.Context;
+import android.text.TextUtils;
+import android.util.Log;
+
+import com.android.emergency.edit.EmergencyContactsFeatureProvider;
+import com.android.emergency.R;
+
+/**
+ * Abstract class for creating feature controllers. Allows OEM implementations to define their own
+ * factories with their own controllers containing whatever code is needed to implement the
+ * features. To provide a factory implementation, implementers should override
+ * {@link R.string#config_featureFactory} in their override.
+ */
+public abstract class FeatureFactory {
+    private static final String LOG_TAG = "FeatureFactory";
+    private static final boolean DEBUG = false;
+
+    protected static FeatureFactory sFactory;
+
+    /** @return a singleton factory instance. */
+    public static FeatureFactory getFactory(Context context) {
+        if (sFactory != null) {
+            return sFactory;
+        }
+
+        if (DEBUG) Log.d(LOG_TAG, "getFactory");
+        final String clsName = context.getString(R.string.config_featureFactory);
+        if (TextUtils.isEmpty(clsName)) {
+            throw new UnsupportedOperationException("No feature factory configured");
+        }
+        try {
+            sFactory = (FeatureFactory) context.getClassLoader().loadClass(clsName).newInstance();
+        } catch (InstantiationException | IllegalAccessException | ClassNotFoundException e) {
+            throw new FactoryNotFoundException(e);
+        }
+
+        if (DEBUG) Log.d(LOG_TAG, "started " + sFactory.getClass().getSimpleName());
+        return sFactory;
+    }
+
+    public abstract EmergencyContactsFeatureProvider getEmergencyContactsFeatureProvider();
+
+    /** Exception thrown when a factory can't be created. */
+    public static final class FactoryNotFoundException extends RuntimeException {
+        /**
+         * @param throwable The underlying cause for this exception.
+         */
+        public FactoryNotFoundException(Throwable throwable) {
+            super("Unable to create factory. Did you misconfigure Proguard?", throwable);
+        }
+    }
+}
diff --git a/src/com/android/emergency/overlay/FeatureFactoryImpl.java b/src/com/android/emergency/overlay/FeatureFactoryImpl.java
new file mode 100644
index 0000000..d25fd59
--- /dev/null
+++ b/src/com/android/emergency/overlay/FeatureFactoryImpl.java
@@ -0,0 +1,24 @@
+package com.android.emergency.overlay;
+
+import android.content.Context;
+import android.net.Uri;
+import android.support.annotation.Keep;
+
+import com.android.emergency.edit.EmergencyContactsFeatureProvider;
+import com.android.emergency.edit.EmergencyContactsFeatureProviderImpl;
+
+/**
+ * {@link FeatureFactory} implementation for AOSP Emergency Info.
+ */
+@Keep
+public class FeatureFactoryImpl extends FeatureFactory {
+    protected EmergencyContactsFeatureProvider mEmergencyContactsFeatureProvider;
+
+    @Override
+    public EmergencyContactsFeatureProvider getEmergencyContactsFeatureProvider() {
+        if (mEmergencyContactsFeatureProvider == null) {
+            mEmergencyContactsFeatureProvider = new EmergencyContactsFeatureProviderImpl();
+        }
+        return mEmergencyContactsFeatureProvider;
+    }
+}
diff --git a/src/com/android/emergency/preferences/EmergencyContactsPreference.java b/src/com/android/emergency/preferences/EmergencyContactsPreference.java
index cccc6c9..166e385 100644
--- a/src/com/android/emergency/preferences/EmergencyContactsPreference.java
+++ b/src/com/android/emergency/preferences/EmergencyContactsPreference.java
@@ -174,6 +174,9 @@
             // stored phone Uris.
             setEmergencyContacts(updatedEmergencyContacts);
         }
+        MetricsLogger.histogram(getContext(),
+                                "num_emergency_contacts",
+                                Math.min(3, emergencyContacts.size()));
     }
 
     /**