Merge "Handle runtime phone permission" into mnc-dev
diff --git a/res/drawable/tab_voicemail.xml b/res/drawable/tab_voicemail.xml
new file mode 100644
index 0000000..568891b
--- /dev/null
+++ b/res/drawable/tab_voicemail.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2015 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
+ -->
+
+<ripple xmlns:android="http://schemas.android.com/apk/res/android"
+ android:color="@color/tab_ripple_color">
+
+ <item>
+ <bitmap android:src="@drawable/ic_voicemail_24dp"
+ android:gravity="center" />
+ </item>
+
+ <item android:id="@android:id/mask">
+ <color android:color="@android:color/white" />
+ </item>
+
+</ripple>
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
index 49a6bd9..4c2deaa 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -131,6 +131,7 @@
<string name="tab_speed_dial" msgid="7552166276545648893">"Spoedbel"</string>
<string name="tab_recents" msgid="929949073851377206">"Onlangse kontakte"</string>
<string name="tab_all_contacts" msgid="1410922767166533690">"Kontakte"</string>
+ <string name="tab_voicemail" msgid="155024725947496746">"Stemboodskapdiens"</string>
<string name="favorite_hidden" msgid="5011234945140912047">"Verwyder uit gunstelinge"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"Ontdoen"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"Bel <xliff:g id="NUMBER">%s</xliff:g>"</string>
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
index 35c474d..ec86001 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -131,6 +131,7 @@
<string name="tab_speed_dial" msgid="7552166276545648893">"ፈጣን ደውል"</string>
<string name="tab_recents" msgid="929949073851377206">"የቅርብ ጊዜዎቹ"</string>
<string name="tab_all_contacts" msgid="1410922767166533690">"ዕውቂያዎች"</string>
+ <string name="tab_voicemail" msgid="155024725947496746">"የድምፅ መልዕክት"</string>
<string name="favorite_hidden" msgid="5011234945140912047">"ከተወዳጆች ውስጥ ተወግዷል።"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"ቀልብስ"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"ለ<xliff:g id="NUMBER">%s</xliff:g> ደውል"</string>
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index 0f7fc02..86fd385 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -135,6 +135,7 @@
<string name="tab_speed_dial" msgid="7552166276545648893">"اتصال سريع"</string>
<string name="tab_recents" msgid="929949073851377206">"الحديثة"</string>
<string name="tab_all_contacts" msgid="1410922767166533690">"جهات الاتصال"</string>
+ <string name="tab_voicemail" msgid="155024725947496746">"البريد الصوتي"</string>
<string name="favorite_hidden" msgid="5011234945140912047">"تمت إزالة جهة الاتصال من المفضلة"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"تراجع"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"الاتصال بالرقم <xliff:g id="NUMBER">%s</xliff:g>"</string>
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index 42e3d9b..3416bc6 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -131,6 +131,7 @@
<string name="tab_speed_dial" msgid="7552166276545648893">"Бързо набиране"</string>
<string name="tab_recents" msgid="929949073851377206">"Скорошни"</string>
<string name="tab_all_contacts" msgid="1410922767166533690">"Контакти"</string>
+ <string name="tab_voicemail" msgid="155024725947496746">"Гласова поща"</string>
<string name="favorite_hidden" msgid="5011234945140912047">"Премахнато от любимите"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"Отмяна"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"Обаждане на <xliff:g id="NUMBER">%s</xliff:g>"</string>
diff --git a/res/values-bn-rBD/strings.xml b/res/values-bn-rBD/strings.xml
index 4daa6c1..1fb13f1 100644
--- a/res/values-bn-rBD/strings.xml
+++ b/res/values-bn-rBD/strings.xml
@@ -131,6 +131,7 @@
<string name="tab_speed_dial" msgid="7552166276545648893">"দ্রুত ডায়াল"</string>
<string name="tab_recents" msgid="929949073851377206">"সাম্প্রতিকগুলি"</string>
<string name="tab_all_contacts" msgid="1410922767166533690">"পরিচিতিগুলি"</string>
+ <string name="tab_voicemail" msgid="155024725947496746">"ভয়েস মেল"</string>
<string name="favorite_hidden" msgid="5011234945140912047">"পছন্দসই থেকে সরানো হয়েছে"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"পূর্বাবস্থায় ফিরুন"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"<xliff:g id="NUMBER">%s</xliff:g> কে কল করুন"</string>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index 610e4f1..8d9fba4 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -131,6 +131,7 @@
<string name="tab_speed_dial" msgid="7552166276545648893">"Marcatge ràpid"</string>
<string name="tab_recents" msgid="929949073851377206">"Recents"</string>
<string name="tab_all_contacts" msgid="1410922767166533690">"Contactes"</string>
+ <string name="tab_voicemail" msgid="155024725947496746">"Bústia de veu"</string>
<string name="favorite_hidden" msgid="5011234945140912047">"Eliminat dels preferits"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"Desfés"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"Truca al <xliff:g id="NUMBER">%s</xliff:g>"</string>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index f586cd8..c061879 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -133,6 +133,7 @@
<string name="tab_speed_dial" msgid="7552166276545648893">"Rychlá volba"</string>
<string name="tab_recents" msgid="929949073851377206">"Poslední"</string>
<string name="tab_all_contacts" msgid="1410922767166533690">"Kontakty"</string>
+ <string name="tab_voicemail" msgid="155024725947496746">"Hlasová schránka"</string>
<string name="favorite_hidden" msgid="5011234945140912047">"Odebráno z oblíbených"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"Vrátit zpět"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"Zavolat na číslo <xliff:g id="NUMBER">%s</xliff:g>"</string>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index 7cf5d8e..6552e1d 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -131,6 +131,7 @@
<string name="tab_speed_dial" msgid="7552166276545648893">"Hurtigopkald"</string>
<string name="tab_recents" msgid="929949073851377206">"Seneste"</string>
<string name="tab_all_contacts" msgid="1410922767166533690">"Kontaktpersoner"</string>
+ <string name="tab_voicemail" msgid="155024725947496746">"Telefonsvarer"</string>
<string name="favorite_hidden" msgid="5011234945140912047">"Fjernet fra foretrukne"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"Fortryd"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"Ring til <xliff:g id="NUMBER">%s</xliff:g>"</string>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index 3718744..0a80009 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -131,6 +131,7 @@
<string name="tab_speed_dial" msgid="7552166276545648893">"Schnellauswahl"</string>
<string name="tab_recents" msgid="929949073851377206">"Neueste"</string>
<string name="tab_all_contacts" msgid="1410922767166533690">"Kontakte"</string>
+ <string name="tab_voicemail" msgid="155024725947496746">"Mailbox"</string>
<string name="favorite_hidden" msgid="5011234945140912047">"Aus Favoriten entfernt"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"Rückgängig machen"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"<xliff:g id="NUMBER">%s</xliff:g> wählen"</string>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index 87e3492..fcc0f3b 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -131,6 +131,7 @@
<string name="tab_speed_dial" msgid="7552166276545648893">"Γρήγορη κλήση"</string>
<string name="tab_recents" msgid="929949073851377206">"Πρόσφατα"</string>
<string name="tab_all_contacts" msgid="1410922767166533690">"Επαφές"</string>
+ <string name="tab_voicemail" msgid="155024725947496746">"Αυτόματος τηλεφωνητής"</string>
<string name="favorite_hidden" msgid="5011234945140912047">"Καταργήθηκε από τα αγαπημένα"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"Αναίρεση"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"Κλήση του αριθμού <xliff:g id="NUMBER">%s</xliff:g>"</string>
diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml
index b802e62..7bcb658 100644
--- a/res/values-en-rAU/strings.xml
+++ b/res/values-en-rAU/strings.xml
@@ -131,6 +131,7 @@
<string name="tab_speed_dial" msgid="7552166276545648893">"Speed dial"</string>
<string name="tab_recents" msgid="929949073851377206">"Recents"</string>
<string name="tab_all_contacts" msgid="1410922767166533690">"Contacts"</string>
+ <string name="tab_voicemail" msgid="155024725947496746">"Voicemail"</string>
<string name="favorite_hidden" msgid="5011234945140912047">"Removed from favourites"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"Undo"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"Call <xliff:g id="NUMBER">%s</xliff:g>"</string>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index b802e62..7bcb658 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -131,6 +131,7 @@
<string name="tab_speed_dial" msgid="7552166276545648893">"Speed dial"</string>
<string name="tab_recents" msgid="929949073851377206">"Recents"</string>
<string name="tab_all_contacts" msgid="1410922767166533690">"Contacts"</string>
+ <string name="tab_voicemail" msgid="155024725947496746">"Voicemail"</string>
<string name="favorite_hidden" msgid="5011234945140912047">"Removed from favourites"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"Undo"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"Call <xliff:g id="NUMBER">%s</xliff:g>"</string>
diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml
index b802e62..7bcb658 100644
--- a/res/values-en-rIN/strings.xml
+++ b/res/values-en-rIN/strings.xml
@@ -131,6 +131,7 @@
<string name="tab_speed_dial" msgid="7552166276545648893">"Speed dial"</string>
<string name="tab_recents" msgid="929949073851377206">"Recents"</string>
<string name="tab_all_contacts" msgid="1410922767166533690">"Contacts"</string>
+ <string name="tab_voicemail" msgid="155024725947496746">"Voicemail"</string>
<string name="favorite_hidden" msgid="5011234945140912047">"Removed from favourites"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"Undo"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"Call <xliff:g id="NUMBER">%s</xliff:g>"</string>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index 88ca1ab..74ad6b9 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -131,6 +131,7 @@
<string name="tab_speed_dial" msgid="7552166276545648893">"Marcado rápido"</string>
<string name="tab_recents" msgid="929949073851377206">"Recientes"</string>
<string name="tab_all_contacts" msgid="1410922767166533690">"Contactos"</string>
+ <string name="tab_voicemail" msgid="155024725947496746">"Buzón de voz"</string>
<string name="favorite_hidden" msgid="5011234945140912047">"Eliminado de favoritos"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"Deshacer"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"Llamar al <xliff:g id="NUMBER">%s</xliff:g>"</string>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index 4af50f9..b04848a 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -131,6 +131,7 @@
<string name="tab_speed_dial" msgid="7552166276545648893">"Marcación rápida"</string>
<string name="tab_recents" msgid="929949073851377206">"Recientes"</string>
<string name="tab_all_contacts" msgid="1410922767166533690">"Contactos"</string>
+ <string name="tab_voicemail" msgid="155024725947496746">"Buzón de voz"</string>
<string name="favorite_hidden" msgid="5011234945140912047">"Eliminado de favoritos"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"Deshacer"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"Llamar a <xliff:g id="NUMBER">%s</xliff:g>"</string>
diff --git a/res/values-et-rEE/strings.xml b/res/values-et-rEE/strings.xml
index da1b3d8..b2e7523 100644
--- a/res/values-et-rEE/strings.xml
+++ b/res/values-et-rEE/strings.xml
@@ -131,6 +131,7 @@
<string name="tab_speed_dial" msgid="7552166276545648893">"Kiirvalimine"</string>
<string name="tab_recents" msgid="929949073851377206">"Hiljutised"</string>
<string name="tab_all_contacts" msgid="1410922767166533690">"Kontaktid"</string>
+ <string name="tab_voicemail" msgid="155024725947496746">"Kõnepost"</string>
<string name="favorite_hidden" msgid="5011234945140912047">"Eemaldatud lemmikute hulgast"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"Võta tagasi"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"Helista <xliff:g id="NUMBER">%s</xliff:g>"</string>
diff --git a/res/values-eu-rES/strings.xml b/res/values-eu-rES/strings.xml
index 47e1472..b5e57a7 100644
--- a/res/values-eu-rES/strings.xml
+++ b/res/values-eu-rES/strings.xml
@@ -131,6 +131,7 @@
<string name="tab_speed_dial" msgid="7552166276545648893">"Markatze bizkorra"</string>
<string name="tab_recents" msgid="929949073851377206">"Azkenak"</string>
<string name="tab_all_contacts" msgid="1410922767166533690">"Kontaktuak"</string>
+ <string name="tab_voicemail" msgid="155024725947496746">"Erantzungailua"</string>
<string name="favorite_hidden" msgid="5011234945140912047">"Gogokoetatik kendu da"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"Desegin"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"Deitu <xliff:g id="NUMBER">%s</xliff:g> zenbakira"</string>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index a60302a..6ec5a7f 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -131,6 +131,7 @@
<string name="tab_speed_dial" msgid="7552166276545648893">"شمارهگیری سریع"</string>
<string name="tab_recents" msgid="929949073851377206">"موارد اخیر"</string>
<string name="tab_all_contacts" msgid="1410922767166533690">"مخاطبین"</string>
+ <string name="tab_voicemail" msgid="155024725947496746">"پست صوتی"</string>
<string name="favorite_hidden" msgid="5011234945140912047">"از موارد دلخواه حذف شد"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"لغو"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"تماس با <xliff:g id="NUMBER">%s</xliff:g>"</string>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index af90c99..7260441 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -131,6 +131,7 @@
<string name="tab_speed_dial" msgid="7552166276545648893">"Pikavalinta"</string>
<string name="tab_recents" msgid="929949073851377206">"Viimeisimmät"</string>
<string name="tab_all_contacts" msgid="1410922767166533690">"Yhteystiedot"</string>
+ <string name="tab_voicemail" msgid="155024725947496746">"Puhelinvastaaja"</string>
<string name="favorite_hidden" msgid="5011234945140912047">"Poistettu suosikeista"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"Kumoa"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"Soita <xliff:g id="NUMBER">%s</xliff:g>"</string>
diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml
index d149440..5b2935d 100644
--- a/res/values-fr-rCA/strings.xml
+++ b/res/values-fr-rCA/strings.xml
@@ -131,6 +131,7 @@
<string name="tab_speed_dial" msgid="7552166276545648893">"Composition abrégée"</string>
<string name="tab_recents" msgid="929949073851377206">"Récents"</string>
<string name="tab_all_contacts" msgid="1410922767166533690">"Contacts"</string>
+ <string name="tab_voicemail" msgid="155024725947496746">"Messagerie vocale"</string>
<string name="favorite_hidden" msgid="5011234945140912047">"Supprimé des favoris"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"Annuler"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"Appeler le <xliff:g id="NUMBER">%s</xliff:g>"</string>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index 611c74c..abac9f9 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -131,6 +131,7 @@
<string name="tab_speed_dial" msgid="7552166276545648893">"Numérotation abrégée"</string>
<string name="tab_recents" msgid="929949073851377206">"Récents"</string>
<string name="tab_all_contacts" msgid="1410922767166533690">"Contacts"</string>
+ <string name="tab_voicemail" msgid="155024725947496746">"Messagerie vocale"</string>
<string name="favorite_hidden" msgid="5011234945140912047">"Supprimé des favoris."</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"Annuler"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"Appeler le <xliff:g id="NUMBER">%s</xliff:g>"</string>
diff --git a/res/values-gl-rES/strings.xml b/res/values-gl-rES/strings.xml
index 529ee5a..8658b7f 100644
--- a/res/values-gl-rES/strings.xml
+++ b/res/values-gl-rES/strings.xml
@@ -131,6 +131,7 @@
<string name="tab_speed_dial" msgid="7552166276545648893">"Marcación rápida"</string>
<string name="tab_recents" msgid="929949073851377206">"Recentes"</string>
<string name="tab_all_contacts" msgid="1410922767166533690">"Contactos"</string>
+ <string name="tab_voicemail" msgid="155024725947496746">"Correo de voz"</string>
<string name="favorite_hidden" msgid="5011234945140912047">"Eliminado dos favoritos"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"Desfacer"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"Chamar a <xliff:g id="NUMBER">%s</xliff:g>"</string>
diff --git a/res/values-gu-rIN/strings.xml b/res/values-gu-rIN/strings.xml
index 1097faf..dbabef6 100644
--- a/res/values-gu-rIN/strings.xml
+++ b/res/values-gu-rIN/strings.xml
@@ -131,6 +131,7 @@
<string name="tab_speed_dial" msgid="7552166276545648893">"સ્પીડ ડાયલ"</string>
<string name="tab_recents" msgid="929949073851377206">"તાજેતરના"</string>
<string name="tab_all_contacts" msgid="1410922767166533690">"સંપર્કો"</string>
+ <string name="tab_voicemail" msgid="155024725947496746">"વૉઇસમેઇલ"</string>
<string name="favorite_hidden" msgid="5011234945140912047">"મનપસંદમાંથી દૂર કર્યું"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"પૂર્વવત્ કરો"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"<xliff:g id="NUMBER">%s</xliff:g> ને કૉલ કરો"</string>
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index 30be2be..fcb199f 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -131,6 +131,7 @@
<string name="tab_speed_dial" msgid="7552166276545648893">"स्पीड डायल"</string>
<string name="tab_recents" msgid="929949073851377206">"हाल ही के"</string>
<string name="tab_all_contacts" msgid="1410922767166533690">"संपर्क"</string>
+ <string name="tab_voicemail" msgid="155024725947496746">"वॉइसमेल"</string>
<string name="favorite_hidden" msgid="5011234945140912047">"पसंदीदा से निकाल दिया गया"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"वापस लाएं"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"<xliff:g id="NUMBER">%s</xliff:g> पर कॉल करें"</string>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index 29b0ca1..46eebf1 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -132,6 +132,7 @@
<string name="tab_speed_dial" msgid="7552166276545648893">"Brzo biranje"</string>
<string name="tab_recents" msgid="929949073851377206">"Najnoviji"</string>
<string name="tab_all_contacts" msgid="1410922767166533690">"Kontakti"</string>
+ <string name="tab_voicemail" msgid="155024725947496746">"Govorna pošta"</string>
<string name="favorite_hidden" msgid="5011234945140912047">"Uklonjeno iz favorita"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"Poništi"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"Nazovi <xliff:g id="NUMBER">%s</xliff:g>"</string>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index 03653bb..e175faa 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -131,6 +131,7 @@
<string name="tab_speed_dial" msgid="7552166276545648893">"Gyorshívó"</string>
<string name="tab_recents" msgid="929949073851377206">"Legutóbbiak"</string>
<string name="tab_all_contacts" msgid="1410922767166533690">"Címtár"</string>
+ <string name="tab_voicemail" msgid="155024725947496746">"Hangposta"</string>
<string name="favorite_hidden" msgid="5011234945140912047">"Eltávolítva a kedvencek közül"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"Visszavonás"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"Hívás: <xliff:g id="NUMBER">%s</xliff:g>"</string>
diff --git a/res/values-hy-rAM/strings.xml b/res/values-hy-rAM/strings.xml
index 632adc4..966722f 100644
--- a/res/values-hy-rAM/strings.xml
+++ b/res/values-hy-rAM/strings.xml
@@ -131,6 +131,8 @@
<string name="tab_speed_dial" msgid="7552166276545648893">"Արագ համարարկում"</string>
<string name="tab_recents" msgid="929949073851377206">"Վերջինները"</string>
<string name="tab_all_contacts" msgid="1410922767166533690">"Կոնտակտներ"</string>
+ <!-- no translation found for tab_voicemail (155024725947496746) -->
+ <skip />
<string name="favorite_hidden" msgid="5011234945140912047">"Հեռացված է ընտրյալներից"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"Հետարկել"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"Զանգել <xliff:g id="NUMBER">%s</xliff:g>"</string>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index 2d64b62..2f4907e 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -131,6 +131,7 @@
<string name="tab_speed_dial" msgid="7552166276545648893">"Panggilan cepat"</string>
<string name="tab_recents" msgid="929949073851377206">"Terbaru"</string>
<string name="tab_all_contacts" msgid="1410922767166533690">"Kontak"</string>
+ <string name="tab_voicemail" msgid="155024725947496746">"Pesan suara"</string>
<string name="favorite_hidden" msgid="5011234945140912047">"Dihapus dari favorit"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"Batalkan"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"Telepon <xliff:g id="NUMBER">%s</xliff:g>"</string>
diff --git a/res/values-is-rIS/strings.xml b/res/values-is-rIS/strings.xml
index 28816b6..020ef3e 100644
--- a/res/values-is-rIS/strings.xml
+++ b/res/values-is-rIS/strings.xml
@@ -131,6 +131,7 @@
<string name="tab_speed_dial" msgid="7552166276545648893">"Hraðval"</string>
<string name="tab_recents" msgid="929949073851377206">"Nýlegt"</string>
<string name="tab_all_contacts" msgid="1410922767166533690">"Tengiliðir"</string>
+ <string name="tab_voicemail" msgid="155024725947496746">"Talhólf"</string>
<string name="favorite_hidden" msgid="5011234945140912047">"Fjarlægður úr uppáhaldi"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"Afturkalla"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"Hringja í <xliff:g id="NUMBER">%s</xliff:g>"</string>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index 64ec2b1..7fefd60 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -131,6 +131,7 @@
<string name="tab_speed_dial" msgid="7552166276545648893">"Composizione rapida"</string>
<string name="tab_recents" msgid="929949073851377206">"Recenti"</string>
<string name="tab_all_contacts" msgid="1410922767166533690">"Contatti"</string>
+ <string name="tab_voicemail" msgid="155024725947496746">"Segreteria"</string>
<string name="favorite_hidden" msgid="5011234945140912047">"Rimosso dai preferiti"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"Annulla"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"Chiama <xliff:g id="NUMBER">%s</xliff:g>"</string>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index 2d53b9f..4ae0710 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -133,6 +133,7 @@
<string name="tab_speed_dial" msgid="7552166276545648893">"חיוג מהיר"</string>
<string name="tab_recents" msgid="929949073851377206">"אחרונים"</string>
<string name="tab_all_contacts" msgid="1410922767166533690">"אנשי קשר"</string>
+ <string name="tab_voicemail" msgid="155024725947496746">"דואר קולי"</string>
<string name="favorite_hidden" msgid="5011234945140912047">"הוסר מהמועדפים"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"בטל"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"התקשר אל <xliff:g id="NUMBER">%s</xliff:g>"</string>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index 55d31e9..25cb120 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -131,6 +131,7 @@
<string name="tab_speed_dial" msgid="7552166276545648893">"クイックアクセス"</string>
<string name="tab_recents" msgid="929949073851377206">"最近"</string>
<string name="tab_all_contacts" msgid="1410922767166533690">"連絡先"</string>
+ <string name="tab_voicemail" msgid="155024725947496746">"ボイスメール"</string>
<string name="favorite_hidden" msgid="5011234945140912047">"お気に入りから削除されました"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"元に戻す"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"<xliff:g id="NUMBER">%s</xliff:g>に発信"</string>
diff --git a/res/values-ka-rGE/strings.xml b/res/values-ka-rGE/strings.xml
index ae9d44c..e1098bf 100644
--- a/res/values-ka-rGE/strings.xml
+++ b/res/values-ka-rGE/strings.xml
@@ -131,6 +131,7 @@
<string name="tab_speed_dial" msgid="7552166276545648893">"სწრაფი დარეკვა"</string>
<string name="tab_recents" msgid="929949073851377206">"ბოლო"</string>
<string name="tab_all_contacts" msgid="1410922767166533690">"კონტაქტები"</string>
+ <string name="tab_voicemail" msgid="155024725947496746">"ხმოვანი ფოსტა"</string>
<string name="favorite_hidden" msgid="5011234945140912047">"წაიშალა რჩეულებიდან"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"დაბრუნება"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"დარეკვა <xliff:g id="NUMBER">%s</xliff:g>-ზე"</string>
diff --git a/res/values-kk-rKZ/strings.xml b/res/values-kk-rKZ/strings.xml
index 83b0120..83f9528 100644
--- a/res/values-kk-rKZ/strings.xml
+++ b/res/values-kk-rKZ/strings.xml
@@ -131,6 +131,8 @@
<string name="tab_speed_dial" msgid="7552166276545648893">"Жылдам теру"</string>
<string name="tab_recents" msgid="929949073851377206">"Жақындағылар"</string>
<string name="tab_all_contacts" msgid="1410922767166533690">"Контактілер"</string>
+ <!-- no translation found for tab_voicemail (155024725947496746) -->
+ <skip />
<string name="favorite_hidden" msgid="5011234945140912047">"Сүйіктілерден алынған"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"Кері орындау"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"<xliff:g id="NUMBER">%s</xliff:g> нөміріне қоңырау шалу"</string>
diff --git a/res/values-km-rKH/strings.xml b/res/values-km-rKH/strings.xml
index 36ce36a..168fbe3 100644
--- a/res/values-km-rKH/strings.xml
+++ b/res/values-km-rKH/strings.xml
@@ -131,6 +131,7 @@
<string name="tab_speed_dial" msgid="7552166276545648893">"ហៅទូរស័ព្ទល្បឿនលឿន"</string>
<string name="tab_recents" msgid="929949073851377206">"ថ្មីៗ"</string>
<string name="tab_all_contacts" msgid="1410922767166533690">"ទំនាក់ទំនង"</string>
+ <string name="tab_voicemail" msgid="155024725947496746">"សារជាសំឡេង"</string>
<string name="favorite_hidden" msgid="5011234945140912047">"បានលុបចេញពីទំនាក់ទំនងដែលនិយមប្រើ"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"មិនធ្វើវិញ"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"ហៅ <xliff:g id="NUMBER">%s</xliff:g>"</string>
diff --git a/res/values-kn-rIN/strings.xml b/res/values-kn-rIN/strings.xml
index ace7517..40e6127 100644
--- a/res/values-kn-rIN/strings.xml
+++ b/res/values-kn-rIN/strings.xml
@@ -132,6 +132,7 @@
<string name="tab_speed_dial" msgid="7552166276545648893">"ಸ್ಪೀಡ್ ಡಯಲ್"</string>
<string name="tab_recents" msgid="929949073851377206">"ಇತ್ತೀಚಿನವುಗಳು"</string>
<string name="tab_all_contacts" msgid="1410922767166533690">"ಸಂಪರ್ಕಗಳು"</string>
+ <string name="tab_voicemail" msgid="155024725947496746">"ಧ್ವನಿಮೇಲ್"</string>
<string name="favorite_hidden" msgid="5011234945140912047">"ಮೆಚ್ಚಿನವುಗಳಿಂದ ತೆಗೆದುಹಾಕಲಾಗಿದೆ"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"ರದ್ದುಮಾಡು"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"<xliff:g id="NUMBER">%s</xliff:g> ಕರೆ ಮಾಡಿ"</string>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index 1fd8cde..bc6fc00 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -131,6 +131,8 @@
<string name="tab_speed_dial" msgid="7552166276545648893">"단축번호"</string>
<string name="tab_recents" msgid="929949073851377206">"최근"</string>
<string name="tab_all_contacts" msgid="1410922767166533690">"주소록"</string>
+ <!-- no translation found for tab_voicemail (155024725947496746) -->
+ <skip />
<string name="favorite_hidden" msgid="5011234945140912047">"즐겨찾기에서 삭제됨"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"실행취소"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"<xliff:g id="NUMBER">%s</xliff:g>에 전화"</string>
diff --git a/res/values-ky-rKG/strings.xml b/res/values-ky-rKG/strings.xml
index 7349947..0983c97 100644
--- a/res/values-ky-rKG/strings.xml
+++ b/res/values-ky-rKG/strings.xml
@@ -158,6 +158,7 @@
<string name="tab_speed_dial" msgid="7552166276545648893">"Тез терүү"</string>
<string name="tab_recents" msgid="929949073851377206">"Акыркылар"</string>
<string name="tab_all_contacts" msgid="1410922767166533690">"Байланыштар"</string>
+ <string name="tab_voicemail" msgid="155024725947496746">"Үн почтасы"</string>
<string name="favorite_hidden" msgid="5011234945140912047">"Тандамалдардан өчүрүлдү"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"Кайтаруу"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"Чалуу <xliff:g id="NUMBER">%s</xliff:g>"</string>
diff --git a/res/values-lo-rLA/strings.xml b/res/values-lo-rLA/strings.xml
index 1303d22..2e29d91 100644
--- a/res/values-lo-rLA/strings.xml
+++ b/res/values-lo-rLA/strings.xml
@@ -131,6 +131,7 @@
<string name="tab_speed_dial" msgid="7552166276545648893">"ການໂທດ່ວນ"</string>
<string name="tab_recents" msgid="929949073851377206">"ຫາກໍໃຊ້"</string>
<string name="tab_all_contacts" msgid="1410922767166533690">"ລາຍຊື່ຜູ່ຕິດຕໍ່"</string>
+ <string name="tab_voicemail" msgid="155024725947496746">"ຂໍ້ຄວາມສຽງ"</string>
<string name="favorite_hidden" msgid="5011234945140912047">"ລຶບອອກຈາກລາຍການທີ່ມັກແລ້ວ"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"ຍົກເລີກ"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"ໂທຫາ <xliff:g id="NUMBER">%s</xliff:g>"</string>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index d803ced..147c974 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -133,6 +133,7 @@
<string name="tab_speed_dial" msgid="7552166276545648893">"Spartusis rinkimas"</string>
<string name="tab_recents" msgid="929949073851377206">"Naujausi"</string>
<string name="tab_all_contacts" msgid="1410922767166533690">"Kontaktai"</string>
+ <string name="tab_voicemail" msgid="155024725947496746">"Balso paštas"</string>
<string name="favorite_hidden" msgid="5011234945140912047">"Pašalintas iš adresyno"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"Anuliuoti"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"Skambinti numeriu <xliff:g id="NUMBER">%s</xliff:g>"</string>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index 6541493..b39562d 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -132,6 +132,7 @@
<string name="tab_speed_dial" msgid="7552166276545648893">"Ātrie zvani"</string>
<string name="tab_recents" msgid="929949073851377206">"Pēdējie"</string>
<string name="tab_all_contacts" msgid="1410922767166533690">"Kontaktpersonas"</string>
+ <string name="tab_voicemail" msgid="155024725947496746">"Balss pasts"</string>
<string name="favorite_hidden" msgid="5011234945140912047">"Noņemts no izlases"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"Atsaukt"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"Zvaniet: <xliff:g id="NUMBER">%s</xliff:g>"</string>
diff --git a/res/values-mk-rMK/strings.xml b/res/values-mk-rMK/strings.xml
index c5668b6..d79e7b9 100644
--- a/res/values-mk-rMK/strings.xml
+++ b/res/values-mk-rMK/strings.xml
@@ -131,6 +131,7 @@
<string name="tab_speed_dial" msgid="7552166276545648893">"Брзо бирање"</string>
<string name="tab_recents" msgid="929949073851377206">"Неодамнешни"</string>
<string name="tab_all_contacts" msgid="1410922767166533690">"Контакти"</string>
+ <string name="tab_voicemail" msgid="155024725947496746">"Говорна пошта"</string>
<string name="favorite_hidden" msgid="5011234945140912047">"Отстранет од омилени"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"Врати"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"Повикај <xliff:g id="NUMBER">%s</xliff:g>"</string>
diff --git a/res/values-ml-rIN/strings.xml b/res/values-ml-rIN/strings.xml
index 95aac8a..caac273 100644
--- a/res/values-ml-rIN/strings.xml
+++ b/res/values-ml-rIN/strings.xml
@@ -131,6 +131,7 @@
<string name="tab_speed_dial" msgid="7552166276545648893">"സ്പീഡ് ഡയൽ"</string>
<string name="tab_recents" msgid="929949073851377206">"പുതിയവ"</string>
<string name="tab_all_contacts" msgid="1410922767166533690">"കോണ്ടാക്റ്റുകള്"</string>
+ <string name="tab_voicemail" msgid="155024725947496746">"വോയ്സ്മെയിൽ"</string>
<string name="favorite_hidden" msgid="5011234945140912047">"പ്രിയപ്പെട്ടവയിൽ നിന്നും നീക്കംചെയ്തു"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"പഴയപടിയാക്കുക"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"<xliff:g id="NUMBER">%s</xliff:g> എന്നതിൽ വിളിക്കുക"</string>
diff --git a/res/values-mn-rMN/strings.xml b/res/values-mn-rMN/strings.xml
index c005bc9..92f29f8 100644
--- a/res/values-mn-rMN/strings.xml
+++ b/res/values-mn-rMN/strings.xml
@@ -131,6 +131,7 @@
<string name="tab_speed_dial" msgid="7552166276545648893">"Түргэн залгалт"</string>
<string name="tab_recents" msgid="929949073851377206">"Саяхных"</string>
<string name="tab_all_contacts" msgid="1410922767166533690">"Харилцагчид"</string>
+ <string name="tab_voicemail" msgid="155024725947496746">"Дуут шуудан"</string>
<string name="favorite_hidden" msgid="5011234945140912047">"Дуртай жагсаалтаас хасав"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"Буцаах"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"<xliff:g id="NUMBER">%s</xliff:g> руу залгах"</string>
diff --git a/res/values-mr-rIN/strings.xml b/res/values-mr-rIN/strings.xml
index 4594d81..998fba6 100644
--- a/res/values-mr-rIN/strings.xml
+++ b/res/values-mr-rIN/strings.xml
@@ -131,6 +131,7 @@
<string name="tab_speed_dial" msgid="7552166276545648893">"स्पीड डायल"</string>
<string name="tab_recents" msgid="929949073851377206">"अलीकडील"</string>
<string name="tab_all_contacts" msgid="1410922767166533690">"संपर्क"</string>
+ <string name="tab_voicemail" msgid="155024725947496746">"व्हॉइसमेल"</string>
<string name="favorite_hidden" msgid="5011234945140912047">"आवडी मधून काढले"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"पूर्ववत करा"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"<xliff:g id="NUMBER">%s</xliff:g> ला कॉल करा"</string>
diff --git a/res/values-ms-rMY/strings.xml b/res/values-ms-rMY/strings.xml
index 0ed605a..08e4d91 100644
--- a/res/values-ms-rMY/strings.xml
+++ b/res/values-ms-rMY/strings.xml
@@ -131,6 +131,8 @@
<string name="tab_speed_dial" msgid="7552166276545648893">"Dail laju"</string>
<string name="tab_recents" msgid="929949073851377206">"Terkini"</string>
<string name="tab_all_contacts" msgid="1410922767166533690">"Kenalan"</string>
+ <!-- no translation found for tab_voicemail (155024725947496746) -->
+ <skip />
<string name="favorite_hidden" msgid="5011234945140912047">"Dialih keluar daripada kegemaran"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"Buat asal"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"Panggil <xliff:g id="NUMBER">%s</xliff:g>"</string>
diff --git a/res/values-my-rMM/strings.xml b/res/values-my-rMM/strings.xml
index 441aa42..52dc93b 100644
--- a/res/values-my-rMM/strings.xml
+++ b/res/values-my-rMM/strings.xml
@@ -131,6 +131,7 @@
<string name="tab_speed_dial" msgid="7552166276545648893">"အမြန် နံပါတ်လှည့်မှု"</string>
<string name="tab_recents" msgid="929949073851377206">"မကြာမီက"</string>
<string name="tab_all_contacts" msgid="1410922767166533690">"အဆက်အသွယ်များ"</string>
+ <string name="tab_voicemail" msgid="155024725947496746">"အသံမေးလ်"</string>
<string name="favorite_hidden" msgid="5011234945140912047">"အနှစ်သက်ဆုံးများထဲမှာ ထုတ်လိုက်ပါပြီ"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"နောက်ပြန်လုပ်ပါ"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"<xliff:g id="NUMBER">%s</xliff:g> ကိုခေါ်ပါ"</string>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index 09d7d3c..220324c 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -131,6 +131,7 @@
<string name="tab_speed_dial" msgid="7552166276545648893">"Hurtigvalg"</string>
<string name="tab_recents" msgid="929949073851377206">"Sist brukte"</string>
<string name="tab_all_contacts" msgid="1410922767166533690">"Kontakter"</string>
+ <string name="tab_voicemail" msgid="155024725947496746">"Talepostkasse"</string>
<string name="favorite_hidden" msgid="5011234945140912047">"Fjernet fra favoritter"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"Angre"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"Ring <xliff:g id="NUMBER">%s</xliff:g>"</string>
diff --git a/res/values-ne-rNP/strings.xml b/res/values-ne-rNP/strings.xml
index c042fa7..46786f9 100644
--- a/res/values-ne-rNP/strings.xml
+++ b/res/values-ne-rNP/strings.xml
@@ -131,6 +131,7 @@
<string name="tab_speed_dial" msgid="7552166276545648893">"द्रूत डायल"</string>
<string name="tab_recents" msgid="929949073851377206">"हालैका"</string>
<string name="tab_all_contacts" msgid="1410922767166533690">"सम्पर्कहरू"</string>
+ <string name="tab_voicemail" msgid="155024725947496746">"भ्वाइसमेल"</string>
<string name="favorite_hidden" msgid="5011234945140912047">"मनपर्नेहरूबाट हटाइयो"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"अनडु गर्नुहोस्"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"<xliff:g id="NUMBER">%s</xliff:g> कल गर्नुहोस्"</string>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index 1e338ff..7991394 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -131,6 +131,7 @@
<string name="tab_speed_dial" msgid="7552166276545648893">"Snelkeuze"</string>
<string name="tab_recents" msgid="929949073851377206">"Recent"</string>
<string name="tab_all_contacts" msgid="1410922767166533690">"Contacten"</string>
+ <string name="tab_voicemail" msgid="155024725947496746">"Voicemail"</string>
<string name="favorite_hidden" msgid="5011234945140912047">"Verwijderd uit favorieten"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"Ongedaan maken"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"Bel <xliff:g id="NUMBER">%s</xliff:g>"</string>
diff --git a/res/values-pa-rIN/strings.xml b/res/values-pa-rIN/strings.xml
index 76b8f40..d73dce0 100644
--- a/res/values-pa-rIN/strings.xml
+++ b/res/values-pa-rIN/strings.xml
@@ -131,6 +131,7 @@
<string name="tab_speed_dial" msgid="7552166276545648893">"ਸਪੀਡ ਡਾਇਲ"</string>
<string name="tab_recents" msgid="929949073851377206">"ਹਾਲੀਆ"</string>
<string name="tab_all_contacts" msgid="1410922767166533690">"ਸੰਪਰਕ"</string>
+ <string name="tab_voicemail" msgid="155024725947496746">"ਵੌਇਸਮੇਲ"</string>
<string name="favorite_hidden" msgid="5011234945140912047">"ਮਨਪਸੰਦ ਵਿੱਚੋਂ ਹਟਾਇਆ ਗਿਆ"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"ਪਹਿਲਾਂ ਵਰਗਾ ਕਰੋ"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"<xliff:g id="NUMBER">%s</xliff:g> ਨੂੰ ਕਾਲ ਕਰੋ"</string>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index 5ca819a..eda54a8 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -133,6 +133,7 @@
<string name="tab_speed_dial" msgid="7552166276545648893">"Szybkie wybieranie"</string>
<string name="tab_recents" msgid="929949073851377206">"Ostatnie"</string>
<string name="tab_all_contacts" msgid="1410922767166533690">"Kontakty"</string>
+ <string name="tab_voicemail" msgid="155024725947496746">"Poczta głosowa"</string>
<string name="favorite_hidden" msgid="5011234945140912047">"Usunięto z ulubionych"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"Cofnij"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"Zadzwoń: <xliff:g id="NUMBER">%s</xliff:g>"</string>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index 0a12b2c..fd1896f 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -131,6 +131,7 @@
<string name="tab_speed_dial" msgid="7552166276545648893">"Marcação rápida"</string>
<string name="tab_recents" msgid="929949073851377206">"Recentes"</string>
<string name="tab_all_contacts" msgid="1410922767166533690">"Contactos"</string>
+ <string name="tab_voicemail" msgid="155024725947496746">"Correio de voz"</string>
<string name="favorite_hidden" msgid="5011234945140912047">"Removido dos favoritos"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"Anular"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"Telefonar para <xliff:g id="NUMBER">%s</xliff:g>"</string>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index ba4a950..57bc9d1 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -131,6 +131,7 @@
<string name="tab_speed_dial" msgid="7552166276545648893">"Discagem rápida"</string>
<string name="tab_recents" msgid="929949073851377206">"Recentes"</string>
<string name="tab_all_contacts" msgid="1410922767166533690">"Contatos"</string>
+ <string name="tab_voicemail" msgid="155024725947496746">"Correio de voz"</string>
<string name="favorite_hidden" msgid="5011234945140912047">"Removido dos favoritos"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"Desfazer"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"Ligar para <xliff:g id="NUMBER">%s</xliff:g>"</string>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index 04ca243..55e9f1d 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -132,6 +132,7 @@
<string name="tab_speed_dial" msgid="7552166276545648893">"Apelare rapidă"</string>
<string name="tab_recents" msgid="929949073851377206">"Recente"</string>
<string name="tab_all_contacts" msgid="1410922767166533690">"Agendă"</string>
+ <string name="tab_voicemail" msgid="155024725947496746">"Mesagerie vocală"</string>
<string name="favorite_hidden" msgid="5011234945140912047">"S-a eliminat din preferate"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"Anulați"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"Apelați <xliff:g id="NUMBER">%s</xliff:g>"</string>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index b0d950c..4cb4f6e 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -133,6 +133,8 @@
<string name="tab_speed_dial" msgid="7552166276545648893">"Быстрый набор"</string>
<string name="tab_recents" msgid="929949073851377206">"Недавние"</string>
<string name="tab_all_contacts" msgid="1410922767166533690">"Контакты"</string>
+ <!-- no translation found for tab_voicemail (155024725947496746) -->
+ <skip />
<string name="favorite_hidden" msgid="5011234945140912047">"Контакт удален из избранных"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"Отмена"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"Позвонить: <xliff:g id="NUMBER">%s</xliff:g>"</string>
diff --git a/res/values-si-rLK/strings.xml b/res/values-si-rLK/strings.xml
index 78c0179..c3f2c5a 100644
--- a/res/values-si-rLK/strings.xml
+++ b/res/values-si-rLK/strings.xml
@@ -131,6 +131,7 @@
<string name="tab_speed_dial" msgid="7552166276545648893">"වේග ඩයල් කිරීම"</string>
<string name="tab_recents" msgid="929949073851377206">"මෑත"</string>
<string name="tab_all_contacts" msgid="1410922767166533690">"සම්බන්ධතා"</string>
+ <string name="tab_voicemail" msgid="155024725947496746">"හඬ තැපෑල"</string>
<string name="favorite_hidden" msgid="5011234945140912047">"ප්රියතමයන්ගෙන් ඉවත් කරන්න"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"අස් කරන්න"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"<xliff:g id="NUMBER">%s</xliff:g> අමතන්න"</string>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index 0929e12..85b0aa2 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -133,6 +133,7 @@
<string name="tab_speed_dial" msgid="7552166276545648893">"Rýchla voľba"</string>
<string name="tab_recents" msgid="929949073851377206">"Nedávne"</string>
<string name="tab_all_contacts" msgid="1410922767166533690">"Kontakty"</string>
+ <string name="tab_voicemail" msgid="155024725947496746">"Hlasová schránka"</string>
<string name="favorite_hidden" msgid="5011234945140912047">"Odstránené z obľúbených"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"Späť"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"Volať na číslo <xliff:g id="NUMBER">%s</xliff:g>"</string>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index 48d0349..2beeb77 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -133,6 +133,7 @@
<string name="tab_speed_dial" msgid="7552166276545648893">"Hitro izbiranje"</string>
<string name="tab_recents" msgid="929949073851377206">"Nedavni"</string>
<string name="tab_all_contacts" msgid="1410922767166533690">"Stiki"</string>
+ <string name="tab_voicemail" msgid="155024725947496746">"Odzivnik"</string>
<string name="favorite_hidden" msgid="5011234945140912047">"Odstranjeno iz priljubljenih"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"Razveljavi"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"Pokliči <xliff:g id="NUMBER">%s</xliff:g>"</string>
diff --git a/res/values-sq-rAL/strings.xml b/res/values-sq-rAL/strings.xml
index a3d247d..8de2b4b 100644
--- a/res/values-sq-rAL/strings.xml
+++ b/res/values-sq-rAL/strings.xml
@@ -131,6 +131,7 @@
<string name="tab_speed_dial" msgid="7552166276545648893">"Telefonatë e shpejtë"</string>
<string name="tab_recents" msgid="929949073851377206">"Të fundit"</string>
<string name="tab_all_contacts" msgid="1410922767166533690">"Kontaktet"</string>
+ <string name="tab_voicemail" msgid="155024725947496746">"Posta zanore"</string>
<string name="favorite_hidden" msgid="5011234945140912047">"U hoq nga të preferuarat"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"Zhbëj"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"Telefono <xliff:g id="NUMBER">%s</xliff:g>"</string>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index 6a9b9fb..d4a73f8 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -132,6 +132,7 @@
<string name="tab_speed_dial" msgid="7552166276545648893">"Брзо бирање"</string>
<string name="tab_recents" msgid="929949073851377206">"Недавни контакти"</string>
<string name="tab_all_contacts" msgid="1410922767166533690">"Контакти"</string>
+ <string name="tab_voicemail" msgid="155024725947496746">"Говорна пошта"</string>
<string name="favorite_hidden" msgid="5011234945140912047">"Уклоњено је из омиљених"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"Опозови"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"Позови <xliff:g id="NUMBER">%s</xliff:g>"</string>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index 1eaeeaf..61d01c5 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -131,6 +131,7 @@
<string name="tab_speed_dial" msgid="7552166276545648893">"Kortnummer"</string>
<string name="tab_recents" msgid="929949073851377206">"Senaste"</string>
<string name="tab_all_contacts" msgid="1410922767166533690">"Kontakter"</string>
+ <string name="tab_voicemail" msgid="155024725947496746">"Röstbrevlåda"</string>
<string name="favorite_hidden" msgid="5011234945140912047">"Borttagen från favoriter"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"Ångra"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"Ring <xliff:g id="NUMBER">%s</xliff:g>"</string>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index ea99b51..bebcd10 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -131,6 +131,7 @@
<string name="tab_speed_dial" msgid="7552166276545648893">"Unaowasiliana nao zaidi"</string>
<string name="tab_recents" msgid="929949073851377206">"Zilizotumika majuzi"</string>
<string name="tab_all_contacts" msgid="1410922767166533690">"Anwani zote"</string>
+ <string name="tab_voicemail" msgid="155024725947496746">"Ujumbe wa sauti"</string>
<string name="favorite_hidden" msgid="5011234945140912047">"Imeondolowa kwenye vipendwa"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"Tendua"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"Piga simu <xliff:g id="NUMBER">%s</xliff:g>"</string>
diff --git a/res/values-ta-rIN/strings.xml b/res/values-ta-rIN/strings.xml
index 8bd2e85..f0fe1e7 100644
--- a/res/values-ta-rIN/strings.xml
+++ b/res/values-ta-rIN/strings.xml
@@ -131,6 +131,7 @@
<string name="tab_speed_dial" msgid="7552166276545648893">"விரைவு டயல்"</string>
<string name="tab_recents" msgid="929949073851377206">"சமீபத்தியவை"</string>
<string name="tab_all_contacts" msgid="1410922767166533690">"தொடர்புகள்"</string>
+ <string name="tab_voicemail" msgid="155024725947496746">"குரலஞ்சல்"</string>
<string name="favorite_hidden" msgid="5011234945140912047">"பிடித்தவற்றிலிருந்து அகற்றப்பட்டது"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"செயல்தவிர்"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"<xliff:g id="NUMBER">%s</xliff:g> ஐ அழை"</string>
diff --git a/res/values-te-rIN/strings.xml b/res/values-te-rIN/strings.xml
index 76b79c2..c6ba2c3 100644
--- a/res/values-te-rIN/strings.xml
+++ b/res/values-te-rIN/strings.xml
@@ -131,6 +131,7 @@
<string name="tab_speed_dial" msgid="7552166276545648893">"స్పీడ్ డయల్"</string>
<string name="tab_recents" msgid="929949073851377206">"ఇటీవలివి"</string>
<string name="tab_all_contacts" msgid="1410922767166533690">"పరిచయాలు"</string>
+ <string name="tab_voicemail" msgid="155024725947496746">"వాయిస్ మెయిల్"</string>
<string name="favorite_hidden" msgid="5011234945140912047">"ఇష్టమైనవాటి నుండి తీసివేయబడింది"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"చర్య రద్దు చేయి"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"<xliff:g id="NUMBER">%s</xliff:g>కు కాల్ చేయండి"</string>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index 2bac245..31ec946 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -131,6 +131,8 @@
<string name="tab_speed_dial" msgid="7552166276545648893">"การโทรด่วน"</string>
<string name="tab_recents" msgid="929949073851377206">"ล่าสุด"</string>
<string name="tab_all_contacts" msgid="1410922767166533690">"รายชื่อติดต่อ"</string>
+ <!-- no translation found for tab_voicemail (155024725947496746) -->
+ <skip />
<string name="favorite_hidden" msgid="5011234945140912047">"ลบจากรายการโปรด"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"เลิกทำ"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"โทร <xliff:g id="NUMBER">%s</xliff:g>"</string>
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index 9493e14..d0ffdc3 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -131,6 +131,7 @@
<string name="tab_speed_dial" msgid="7552166276545648893">"Speed dial"</string>
<string name="tab_recents" msgid="929949073851377206">"Mga Kamakailan"</string>
<string name="tab_all_contacts" msgid="1410922767166533690">"Mga Contact"</string>
+ <string name="tab_voicemail" msgid="155024725947496746">"Voicemail"</string>
<string name="favorite_hidden" msgid="5011234945140912047">"Inalis sa mga paborito"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"I-undo"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"Tumawag sa <xliff:g id="NUMBER">%s</xliff:g>"</string>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index 8fc84d7..c9132a3 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -131,6 +131,7 @@
<string name="tab_speed_dial" msgid="7552166276545648893">"Hızlı arama"</string>
<string name="tab_recents" msgid="929949073851377206">"Son Kişiler"</string>
<string name="tab_all_contacts" msgid="1410922767166533690">"Kişiler"</string>
+ <string name="tab_voicemail" msgid="155024725947496746">"Sesli mesaj"</string>
<string name="favorite_hidden" msgid="5011234945140912047">"Favorilerden kaldırıldı"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"Geri al"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"Telefon et: <xliff:g id="NUMBER">%s</xliff:g>"</string>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index 041f453..5df028b 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -133,6 +133,7 @@
<string name="tab_speed_dial" msgid="7552166276545648893">"Швидкий набір"</string>
<string name="tab_recents" msgid="929949073851377206">"Останні"</string>
<string name="tab_all_contacts" msgid="1410922767166533690">"Контакти"</string>
+ <string name="tab_voicemail" msgid="155024725947496746">"Голосова пошта"</string>
<string name="favorite_hidden" msgid="5011234945140912047">"Вилучено з вибраного"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"Відмінити"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"Набрати <xliff:g id="NUMBER">%s</xliff:g>"</string>
diff --git a/res/values-ur-rPK/strings.xml b/res/values-ur-rPK/strings.xml
index fded54a..64b1f82 100644
--- a/res/values-ur-rPK/strings.xml
+++ b/res/values-ur-rPK/strings.xml
@@ -131,6 +131,8 @@
<string name="tab_speed_dial" msgid="7552166276545648893">"اسپیڈ ڈائل"</string>
<string name="tab_recents" msgid="929949073851377206">"حالیہ"</string>
<string name="tab_all_contacts" msgid="1410922767166533690">"رابطے"</string>
+ <!-- no translation found for tab_voicemail (155024725947496746) -->
+ <skip />
<string name="favorite_hidden" msgid="5011234945140912047">"پسندیدہ سے ہٹا دیا گیا"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"کالعدم کریں"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"<xliff:g id="NUMBER">%s</xliff:g> کو کال کریں"</string>
diff --git a/res/values-uz-rUZ/strings.xml b/res/values-uz-rUZ/strings.xml
index 6735fa3..b638fef 100644
--- a/res/values-uz-rUZ/strings.xml
+++ b/res/values-uz-rUZ/strings.xml
@@ -131,6 +131,8 @@
<string name="tab_speed_dial" msgid="7552166276545648893">"Tezkor terish"</string>
<string name="tab_recents" msgid="929949073851377206">"So‘nggi"</string>
<string name="tab_all_contacts" msgid="1410922767166533690">"Kontaktlar"</string>
+ <!-- no translation found for tab_voicemail (155024725947496746) -->
+ <skip />
<string name="favorite_hidden" msgid="5011234945140912047">"Tanlanganlardan o‘chirilgan"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"Bekor qilish"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"Qo‘ng‘iroq: <xliff:g id="NUMBER">%s</xliff:g>"</string>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index eb4ea3f..ce5deeb 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -131,6 +131,7 @@
<string name="tab_speed_dial" msgid="7552166276545648893">"Quay số nhanh"</string>
<string name="tab_recents" msgid="929949073851377206">"Gần đây"</string>
<string name="tab_all_contacts" msgid="1410922767166533690">"Địa chỉ liên hệ"</string>
+ <string name="tab_voicemail" msgid="155024725947496746">"Thư thoại"</string>
<string name="favorite_hidden" msgid="5011234945140912047">"Đã xóa khỏi mục yêu thích"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"Hoàn tác"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"Gọi <xliff:g id="NUMBER">%s</xliff:g>"</string>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index 290263d..7f77d12 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -131,6 +131,8 @@
<string name="tab_speed_dial" msgid="7552166276545648893">"快速拨号"</string>
<string name="tab_recents" msgid="929949073851377206">"最近"</string>
<string name="tab_all_contacts" msgid="1410922767166533690">"联系人"</string>
+ <!-- no translation found for tab_voicemail (155024725947496746) -->
+ <skip />
<string name="favorite_hidden" msgid="5011234945140912047">"已从收藏中移除"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"撤消"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"拨打<xliff:g id="NUMBER">%s</xliff:g>"</string>
diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml
index b6917fd..55d5cae 100644
--- a/res/values-zh-rHK/strings.xml
+++ b/res/values-zh-rHK/strings.xml
@@ -131,6 +131,7 @@
<string name="tab_speed_dial" msgid="7552166276545648893">"快速撥號"</string>
<string name="tab_recents" msgid="929949073851377206">"最近存取的聯絡人"</string>
<string name="tab_all_contacts" msgid="1410922767166533690">"聯絡人"</string>
+ <string name="tab_voicemail" msgid="155024725947496746">"留言信箱"</string>
<string name="favorite_hidden" msgid="5011234945140912047">"已從「我的最愛」中移除"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"復原"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"撥打 <xliff:g id="NUMBER">%s</xliff:g>"</string>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index ee66149..8624b7d 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -131,6 +131,8 @@
<string name="tab_speed_dial" msgid="7552166276545648893">"快速撥號"</string>
<string name="tab_recents" msgid="929949073851377206">"近期通話"</string>
<string name="tab_all_contacts" msgid="1410922767166533690">"聯絡人"</string>
+ <!-- no translation found for tab_voicemail (155024725947496746) -->
+ <skip />
<string name="favorite_hidden" msgid="5011234945140912047">"已從最愛的聯絡人移除"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"復原"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"撥打 <xliff:g id="NUMBER">%s</xliff:g>"</string>
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index 1a5b0c6..798044c 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -131,6 +131,7 @@
<string name="tab_speed_dial" msgid="7552166276545648893">"Ukudayela okusheshayo"</string>
<string name="tab_recents" msgid="929949073851377206">"Okwakamuva"</string>
<string name="tab_all_contacts" msgid="1410922767166533690">"Oxhumana nabo"</string>
+ <string name="tab_voicemail" msgid="155024725947496746">"Ivoyisimeyili"</string>
<string name="favorite_hidden" msgid="5011234945140912047">"Kukhishiwe kusuka kuzintandokazi"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"Hlehlisa"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"Shayela ku-<xliff:g id="NUMBER">%s</xliff:g>"</string>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index e3b2682..21cd890 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -471,12 +471,19 @@
[CHAR LIMIT=30] -->
<string name="call_log_voicemail_title">Voicemail</string>
+ <!-- Accessibility text for the tab showing recent and favorite contacts who can be called.
+ [CHAR LIMIT=40] -->
<string name="tab_speed_dial">Speed dial</string>
+ <!-- Accessibility text for the tab showing the call log of recent calls. [CHAR LIMIT=40] -->
<string name="tab_recents">Recents</string>
+ <!-- Accessibility text for the tab showing the user's contacts. [CHAR LIMIT=40] -->
<string name="tab_all_contacts">Contacts</string>
+ <!-- Accessibility text for the tab showing the user's voicemails. [CHAR LIMIT=40] -->
+ <string name="tab_voicemail">Voicemail</string>
+
<!-- Text displayed when user swipes out a favorite contact -->
<string name="favorite_hidden">Removed from favorites</string>
<!-- Text displayed for the undo button to undo removing a favorite contact -->
diff --git a/src/com/android/dialer/CallDetailActivity.java b/src/com/android/dialer/CallDetailActivity.java
index db247ba..1c684a5 100644
--- a/src/com/android/dialer/CallDetailActivity.java
+++ b/src/com/android/dialer/CallDetailActivity.java
@@ -62,9 +62,6 @@
import com.android.dialer.util.DialerUtils;
import com.android.dialer.util.TelecomUtil;
import com.android.dialer.voicemail.VoicemailPlaybackFragment;
-import com.android.dialer.voicemail.VoicemailStatusHelper;
-import com.android.dialer.voicemail.VoicemailStatusHelper.StatusMessage;
-import com.android.dialer.voicemail.VoicemailStatusHelperImpl;
import java.util.List;
diff --git a/src/com/android/dialer/DialtactsActivity.java b/src/com/android/dialer/DialtactsActivity.java
index 96dc415..214f320 100644
--- a/src/com/android/dialer/DialtactsActivity.java
+++ b/src/com/android/dialer/DialtactsActivity.java
@@ -593,7 +593,7 @@
public void onClick(View view) {
switch (view.getId()) {
case R.id.floating_action_button:
- if (mListsFragment.getTabPosition() == ListsFragment.TAB_INDEX_ALL_CONTACTS) {
+ if (mListsFragment.getCurrentTabIndex() == ListsFragment.TAB_INDEX_ALL_CONTACTS) {
DialerUtils.startActivityWithErrorToast(
this,
IntentUtil.getNewContactIntent(),
@@ -1171,25 +1171,25 @@
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
- position = mListsFragment.getRtlPosition(position);
- // Only scroll the button when the first tab is selected. The button should scroll from
- // the middle to right position only on the transition from the first tab to the second
- // tab.
- // If the app is in RTL mode, we need to check against the second tab, rather than the
- // first. This is because if we are scrolling between the first and second tabs, the
- // viewpager will report that the starting tab position is 1 rather than 0, due to the
- // reversal of the order of the tabs.
- final boolean isLayoutRtl = DialerUtils.isRtl();
- final boolean shouldScrollButton = position == (isLayoutRtl
- ? ListsFragment.TAB_INDEX_RECENTS : ListsFragment.TAB_INDEX_SPEED_DIAL);
- if (shouldScrollButton && !mIsLandscape) {
- mFloatingActionButtonController.onPageScrolled(
- isLayoutRtl ? 1 - positionOffset : positionOffset);
- } else if (position != ListsFragment.TAB_INDEX_SPEED_DIAL) {
+ int tabIndex = mListsFragment.getCurrentTabIndex();
+
+ // Scroll the button from center to end when moving from the Speed Dial to Recents tab.
+ // In RTL, scroll when the current tab is Recents instead of Speed Dial, because the order
+ // of the tabs is reversed and the ViewPager returns the left tab position during scroll.
+ boolean isRtl = DialerUtils.isRtl();
+ if (!isRtl && tabIndex == ListsFragment.TAB_INDEX_SPEED_DIAL && !mIsLandscape) {
+ mFloatingActionButtonController.onPageScrolled(positionOffset);
+ } else if (isRtl && tabIndex == ListsFragment.TAB_INDEX_RECENTS && !mIsLandscape) {
+ mFloatingActionButtonController.onPageScrolled(1 - positionOffset);
+ } else if (tabIndex != ListsFragment.TAB_INDEX_SPEED_DIAL) {
mFloatingActionButtonController.onPageScrolled(1);
}
+ }
- if (position == ListsFragment.TAB_INDEX_ALL_CONTACTS) {
+ @Override
+ public void onPageSelected(int position) {
+ int tabIndex = mListsFragment.getCurrentTabIndex();
+ if (tabIndex == ListsFragment.TAB_INDEX_ALL_CONTACTS) {
mFloatingActionButtonController.changeIcon(
getResources().getDrawable(R.drawable.ic_person_add_24dp),
getResources().getString(R.string.search_shortcut_create_new_contact));
@@ -1201,10 +1201,6 @@
}
@Override
- public void onPageSelected(int position) {
- }
-
- @Override
public void onPageScrollStateChanged(int state) {
}
@@ -1248,7 +1244,7 @@
*/
private void updateFloatingActionButtonControllerAlignment(boolean animate) {
int align = (!mIsLandscape &&
- mListsFragment.getTabPosition() == ListsFragment.TAB_INDEX_SPEED_DIAL) ?
+ mListsFragment.getCurrentTabIndex() == ListsFragment.TAB_INDEX_SPEED_DIAL) ?
FloatingActionButtonController.ALIGN_MIDDLE :
FloatingActionButtonController.ALIGN_END;
mFloatingActionButtonController.align(align, 0 /* offsetX */, 0 /* offsetY */, animate);
diff --git a/src/com/android/dialer/calllog/CallLogActivity.java b/src/com/android/dialer/calllog/CallLogActivity.java
index 8a0cc13..00e5e6b 100644
--- a/src/com/android/dialer/calllog/CallLogActivity.java
+++ b/src/com/android/dialer/calllog/CallLogActivity.java
@@ -245,9 +245,10 @@
mHandler.removeCallbacks(mWaitForVoicemailTimeoutRunnable);
// Update mHasActiveVoicemailProvider, which controls the number of tabs displayed.
- int activeSources = mVoicemailStatusHelper.getNumberActivityVoicemailSources(statusCursor);
- if (activeSources > 0 != mHasActiveVoicemailProvider) {
- mHasActiveVoicemailProvider = activeSources > 0;
+ boolean hasActiveVoicemailProvider =
+ mVoicemailStatusHelper.getNumberActivityVoicemailSources(statusCursor) > 0;
+ if (hasActiveVoicemailProvider != mHasActiveVoicemailProvider) {
+ mHasActiveVoicemailProvider = hasActiveVoicemailProvider;
mViewPagerAdapter.notifyDataSetChanged();
mViewPagerTabs.setViewPager(mViewPager);
if (mSwitchToVoicemailTab) {
diff --git a/src/com/android/dialer/list/ListsFragment.java b/src/com/android/dialer/list/ListsFragment.java
index 6e30af2..a0e443c 100644
--- a/src/com/android/dialer/list/ListsFragment.java
+++ b/src/com/android/dialer/list/ListsFragment.java
@@ -9,6 +9,7 @@
import android.database.Cursor;
import android.os.Bundle;
import android.os.Trace;
+import android.provider.CallLog.Calls;
import android.support.v13.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
@@ -28,6 +29,8 @@
import com.android.dialer.calllog.CallLogQueryHandler;
import com.android.dialer.calllog.ContactInfoHelper;
import com.android.dialer.util.DialerUtils;
+import com.android.dialer.voicemail.VoicemailStatusHelper;
+import com.android.dialer.voicemail.VoicemailStatusHelperImpl;
import com.android.dialer.widget.ActionBarController;
import com.android.dialerbind.ObjectFactory;
@@ -41,7 +44,8 @@
* ViewPager containing the lists up above the search bar and pin it against the top of the
* screen.
*/
-public class ListsFragment extends Fragment implements ViewPager.OnPageChangeListener {
+public class ListsFragment extends Fragment
+ implements ViewPager.OnPageChangeListener, CallLogQueryHandler.Listener {
private static final boolean DEBUG = DialtactsActivity.DEBUG;
private static final String TAG = "ListsFragment";
@@ -49,16 +53,15 @@
public static final int TAB_INDEX_SPEED_DIAL = 0;
public static final int TAB_INDEX_RECENTS = 1;
public static final int TAB_INDEX_ALL_CONTACTS = 2;
+ public static final int TAB_INDEX_VOICEMAIL = 3;
- public static final int TAB_INDEX_COUNT = 3;
+ public static final int TAB_COUNT_DEFAULT = 3;
+ public static final int TAB_COUNT_WITH_VOICEMAIL = 4;
private static final int MAX_RECENTS_ENTRIES = 20;
// Oldest recents entry to display is 2 weeks old.
private static final long OLDEST_RECENTS_DATE = 1000L * 60 * 60 * 24 * 14;
- private static final String KEY_LAST_DISMISSED_CALL_SHORTCUT_DATE =
- "key_last_dismissed_call_shortcut_date";
-
public interface HostInterface {
public ActionBarController getActionBarController();
}
@@ -69,9 +72,14 @@
private ViewPagerAdapter mViewPagerAdapter;
private RemoveView mRemoveView;
private View mRemoveViewContent;
+
private SpeedDialFragment mSpeedDialFragment;
private CallLogFragment mRecentsFragment;
private AllContactsFragment mAllContactsFragment;
+ private CallLogFragment mVoicemailFragment;
+
+ private boolean mHasActiveVoicemailProvider;
+ private VoicemailStatusHelper mVoicemailStatusHelper;
private ArrayList<OnPageChangeListener> mOnPageChangeListeners =
new ArrayList<OnPageChangeListener>();
@@ -81,18 +89,7 @@
/**
* The position of the currently selected tab.
*/
- private int mTabPosition = TAB_INDEX_SPEED_DIAL;
-
- /**
- * Call shortcuts older than this date (persisted in shared preferences) will not show up in
- * at the top of the screen
- */
- private long mLastCallShortcutDate = 0;
-
- /**
- * The date of the current call shortcut that is showing on screen.
- */
- private long mCurrentCallShortcutDate = 0;
+ private int mTabIndex = TAB_INDEX_SPEED_DIAL;
public class ViewPagerAdapter extends FragmentPagerAdapter {
public ViewPagerAdapter(FragmentManager fm) {
@@ -117,6 +114,9 @@
case TAB_INDEX_ALL_CONTACTS:
mAllContactsFragment = new AllContactsFragment();
return mAllContactsFragment;
+ case TAB_INDEX_VOICEMAIL:
+ mVoicemailFragment = new CallLogFragment(Calls.VOICEMAIL_TYPE);
+ return mVoicemailFragment;
}
throw new IllegalStateException("No fragment at position " + position);
}
@@ -130,17 +130,19 @@
(Fragment) super.instantiateItem(container, position);
if (fragment instanceof SpeedDialFragment) {
mSpeedDialFragment = (SpeedDialFragment) fragment;
- } else if (fragment instanceof CallLogFragment) {
+ } else if (fragment instanceof CallLogFragment && position == TAB_INDEX_RECENTS) {
mRecentsFragment = (CallLogFragment) fragment;
} else if (fragment instanceof AllContactsFragment) {
mAllContactsFragment = (AllContactsFragment) fragment;
+ } else if (fragment instanceof CallLogFragment && position == TAB_INDEX_VOICEMAIL) {
+ mVoicemailFragment = (CallLogFragment) fragment;
}
return fragment;
}
@Override
public int getCount() {
- return TAB_INDEX_COUNT;
+ return mHasActiveVoicemailProvider ? TAB_COUNT_WITH_VOICEMAIL : TAB_COUNT_DEFAULT;
}
@Override
@@ -158,6 +160,7 @@
final String currentCountryIso = GeoUtil.getCurrentCountryIso(getActivity());
Trace.endSection();
+ mVoicemailStatusHelper = new VoicemailStatusHelperImpl();
Trace.endSection();
}
@@ -165,13 +168,15 @@
public void onResume() {
Trace.beginSection(TAG + " onResume");
super.onResume();
- final SharedPreferences prefs = getActivity().getSharedPreferences(
- DialtactsActivity.SHARED_PREFS_NAME, Context.MODE_PRIVATE);
- mLastCallShortcutDate = prefs.getLong(KEY_LAST_DISMISSED_CALL_SHORTCUT_DATE, 0);
mActionBar = getActivity().getActionBar();
if (getUserVisibleHint()) {
- sendScreenViewForPosition(mViewPager.getCurrentItem());
+ sendScreenViewForCurrentPosition();
}
+
+ // Fetch voicemail status to determine if we should show the voicemail tab.
+ CallLogQueryHandler callLogQueryHandler =
+ new CallLogQueryHandler(getActivity(), getActivity().getContentResolver(), this);
+ callLogQueryHandler.fetchVoicemailStatus();
Trace.endSection();
}
@@ -186,19 +191,21 @@
mViewPager = (ViewPager) parentView.findViewById(R.id.lists_pager);
mViewPagerAdapter = new ViewPagerAdapter(getChildFragmentManager());
mViewPager.setAdapter(mViewPagerAdapter);
- mViewPager.setOffscreenPageLimit(2);
+ mViewPager.setOffscreenPageLimit(TAB_COUNT_WITH_VOICEMAIL - 1);
mViewPager.setOnPageChangeListener(this);
mViewPager.setCurrentItem(getRtlPosition(TAB_INDEX_SPEED_DIAL));
- mTabTitles = new String[TAB_INDEX_COUNT];
+ mTabTitles = new String[TAB_COUNT_WITH_VOICEMAIL];
mTabTitles[TAB_INDEX_SPEED_DIAL] = getResources().getString(R.string.tab_speed_dial);
mTabTitles[TAB_INDEX_RECENTS] = getResources().getString(R.string.tab_recents);
mTabTitles[TAB_INDEX_ALL_CONTACTS] = getResources().getString(R.string.tab_all_contacts);
+ mTabTitles[TAB_INDEX_VOICEMAIL] = getResources().getString(R.string.tab_voicemail);
- mTabIcons = new int[TAB_INDEX_COUNT];
+ mTabIcons = new int[TAB_COUNT_WITH_VOICEMAIL];
mTabIcons[TAB_INDEX_SPEED_DIAL] = R.drawable.tab_speed_dial;
mTabIcons[TAB_INDEX_RECENTS] = R.drawable.tab_recents;
mTabIcons[TAB_INDEX_ALL_CONTACTS] = R.drawable.tab_contacts;
+ mTabIcons[TAB_INDEX_VOICEMAIL] = R.drawable.tab_voicemail;
mViewPagerTabs = (ViewPagerTabs) parentView.findViewById(R.id.lists_pager_header);
mViewPagerTabs.setTabIcons(mTabIcons);
@@ -221,6 +228,8 @@
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
+ mTabIndex = getRtlPosition(position);
+
final int count = mOnPageChangeListeners.size();
for (int i = 0; i < count; i++) {
mOnPageChangeListeners.get(i).onPageScrolled(position, positionOffset,
@@ -230,13 +239,13 @@
@Override
public void onPageSelected(int position) {
- mTabPosition = getRtlPosition(position);
+ mTabIndex = getRtlPosition(position);
final int count = mOnPageChangeListeners.size();
for (int i = 0; i < count; i++) {
mOnPageChangeListeners.get(i).onPageSelected(position);
}
- sendScreenViewForPosition(position);
+ sendScreenViewForCurrentPosition();
}
@Override
@@ -247,8 +256,30 @@
}
}
- public int getTabPosition() {
- return mTabPosition;
+ @Override
+ public void onVoicemailStatusFetched(Cursor statusCursor) {
+ if (getActivity() == null || getActivity().isFinishing()) {
+ return;
+ }
+
+ // Update mHasActiveVoicemailProvider, which controls the number of tabs displayed.
+ boolean hasActiveVoicemailProvider =
+ mVoicemailStatusHelper.getNumberActivityVoicemailSources(statusCursor) > 0;
+ if (hasActiveVoicemailProvider != mHasActiveVoicemailProvider) {
+ mHasActiveVoicemailProvider = hasActiveVoicemailProvider;
+ mViewPagerAdapter.notifyDataSetChanged();
+ mViewPagerTabs.setViewPager(mViewPager);
+ }
+ }
+
+ @Override
+ public boolean onCallsFetched(Cursor statusCursor) {
+ // Return false; did not take ownership of cursor
+ return false;
+ }
+
+ public int getCurrentTabIndex() {
+ return mTabIndex;
}
public void showRemoveView(boolean show) {
@@ -270,32 +301,31 @@
return mRemoveView;
}
- public int getRtlPosition(int position) {
+ private int getRtlPosition(int position) {
if (DialerUtils.isRtl()) {
- return TAB_INDEX_COUNT - 1 - position;
+ return mViewPagerAdapter.getCount() - 1 - position;
}
return position;
}
public void sendScreenViewForCurrentPosition() {
- sendScreenViewForPosition(mViewPager.getCurrentItem());
- }
-
- private void sendScreenViewForPosition(int position) {
if (!isResumed()) {
return;
}
+
String fragmentName;
- switch (getRtlPosition(position)) {
+ switch (getCurrentTabIndex()) {
case TAB_INDEX_SPEED_DIAL:
fragmentName = SpeedDialFragment.class.getSimpleName();
break;
case TAB_INDEX_RECENTS:
- fragmentName = CallLogFragment.class.getSimpleName();
+ fragmentName = CallLogFragment.class.getSimpleName() + "#Recents";
break;
case TAB_INDEX_ALL_CONTACTS:
fragmentName = AllContactsFragment.class.getSimpleName();
break;
+ case TAB_INDEX_VOICEMAIL:
+ fragmentName = CallLogFragment.class.getSimpleName() + "#Voicemail";
default:
return;
}
diff --git a/src/com/android/dialer/list/RegularSearchListAdapter.java b/src/com/android/dialer/list/RegularSearchListAdapter.java
index 6c70458..2be8a1d 100644
--- a/src/com/android/dialer/list/RegularSearchListAdapter.java
+++ b/src/com/android/dialer/list/RegularSearchListAdapter.java
@@ -22,6 +22,7 @@
import com.android.contacts.common.CallUtil;
import com.android.contacts.common.list.DirectoryPartition;
+import com.android.contacts.common.util.PhoneNumberHelper;
import com.android.dialer.calllog.ContactInfo;
import com.android.dialer.service.CachedNumberLookupService;
import com.android.dialer.service.CachedNumberLookupService.CachedContactInfo;
@@ -30,6 +31,7 @@
* List adapter to display regular search results.
*/
public class RegularSearchListAdapter extends DialerPhoneNumberListAdapter {
+ private boolean mIsQuerySipAddress;
public RegularSearchListAdapter(Context context) {
super(context);
@@ -67,12 +69,24 @@
}
@Override
+ public String getFormattedQueryString() {
+ if (mIsQuerySipAddress) {
+ // Return unnormalized SIP address
+ return getQueryString();
+ }
+ return super.getFormattedQueryString();
+ }
+
+ @Override
public void setQueryString(String queryString) {
// Don't show actions if the query string contains a letter.
final boolean showNumberShortcuts = !TextUtils.isEmpty(getFormattedQueryString())
&& hasDigitsInQueryString();
+ // Email addresses that could be SIP addresses are an exception.
+ mIsQuerySipAddress = PhoneNumberHelper.isUriNumber(queryString);
boolean changed = false;
- changed |= setShortcutEnabled(SHORTCUT_DIRECT_CALL, showNumberShortcuts);
+ changed |= setShortcutEnabled(SHORTCUT_DIRECT_CALL,
+ showNumberShortcuts || mIsQuerySipAddress);
changed |= setShortcutEnabled(SHORTCUT_SEND_SMS_MESSAGE, showNumberShortcuts);
changed |= setShortcutEnabled(SHORTCUT_MAKE_VIDEO_CALL,
showNumberShortcuts && CallUtil.isVideoEnabled(getContext()));
diff --git a/src/com/android/dialer/voicemail/VoicemailPlaybackFragment.java b/src/com/android/dialer/voicemail/VoicemailPlaybackFragment.java
index 8aa0197..ed70551 100644
--- a/src/com/android/dialer/voicemail/VoicemailPlaybackFragment.java
+++ b/src/com/android/dialer/voicemail/VoicemailPlaybackFragment.java
@@ -42,14 +42,9 @@
import com.android.common.io.MoreCloseables;
import com.android.contacts.commonbind.analytics.AnalyticsUtil;
import com.android.dialer.R;
-import com.android.dialer.util.AsyncTaskExecutors;
-import com.android.ex.variablespeed.MediaPlayerProxy;
-import com.android.ex.variablespeed.VariableSpeed;
import com.google.common.base.Preconditions;
-import java.util.concurrent.Executors;
-import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import javax.annotation.concurrent.GuardedBy;
@@ -74,9 +69,6 @@
};
private VoicemailPlaybackPresenter mPresenter;
- private static int mMediaPlayerRefCount = 0;
- private static MediaPlayerProxy mMediaPlayerInstance;
- private static ScheduledExecutorService mScheduledExecutorService;
private View mPlaybackLayout;
private PowerManager.WakeLock mProximityWakeLock;
@@ -108,11 +100,8 @@
mPresenter = new VoicemailPlaybackPresenter(
createPlaybackViewImpl(),
- getMediaPlayerInstance(),
voicemailUri,
- getScheduledExecutorServiceInstance(),
startPlayback,
- AsyncTaskExecutors.createAsyncTaskExecutor(),
mProximityWakeLock);
mPresenter.onCreate(savedInstanceState);
}
@@ -136,17 +125,15 @@
}
@Override
- public void onDestroy() {
- shutdownMediaPlayer();
- mPresenter.onDestroy();
- super.onDestroy();
+ public void onPause() {
+ mPresenter.onPause();
+ super.onPause();
}
@Override
- public void onPause() {
- releaseProximitySensor(false /* waitForFarState */);
- mPresenter.onPause();
- super.onPause();
+ public void onDestroy() {
+ mPresenter.onDestroy();
+ super.onDestroy();
}
private PlaybackViewImpl createPlaybackViewImpl() {
@@ -154,64 +141,7 @@
mPlaybackLayout);
}
- private static synchronized MediaPlayerProxy getMediaPlayerInstance() {
- ++mMediaPlayerRefCount;
- if (mMediaPlayerInstance == null) {
- mMediaPlayerInstance = VariableSpeed.createVariableSpeed(
- getScheduledExecutorServiceInstance());
- }
- return mMediaPlayerInstance;
- }
-
- private static synchronized ScheduledExecutorService getScheduledExecutorServiceInstance() {
- if (mScheduledExecutorService == null) {
- mScheduledExecutorService = Executors.newScheduledThreadPool(
- NUMBER_OF_THREADS_IN_POOL);
- }
- return mScheduledExecutorService;
- }
-
- private static synchronized void shutdownMediaPlayer() {
- --mMediaPlayerRefCount;
- if (mMediaPlayerRefCount > 0) {
- return;
- }
- if (mScheduledExecutorService != null) {
- mScheduledExecutorService.shutdown();
- mScheduledExecutorService = null;
- }
- if (mMediaPlayerInstance != null) {
- mMediaPlayerInstance.release();
- mMediaPlayerInstance = null;
- }
- }
-
- private void acquireProximitySensor() {
- if (mProximityWakeLock == null) {
- return;
- }
- if (!mProximityWakeLock.isHeld()) {
- Log.i(TAG, "Acquiring proximity wake lock");
- mProximityWakeLock.acquire();
- } else {
- Log.i(TAG, "Proximity wake lock already acquired");
- }
- }
-
- private void releaseProximitySensor(boolean waitForFarState) {
- if (mProximityWakeLock == null) {
- return;
- }
- if (mProximityWakeLock.isHeld()) {
- Log.i(TAG, "Releasing proximity wake lock");
- int flags = waitForFarState ? PowerManager.RELEASE_FLAG_WAIT_FOR_NO_PROXIMITY : 0;
- mProximityWakeLock.release(flags);
- } else {
- Log.i(TAG, "Proximity wake lock already released");
- }
- }
-
- /**
+ /**
* Formats a number of milliseconds as something that looks like {@code 00:05}.
* <p>
* We always use four digits, two for minutes two for seconds. In the very unlikely event
@@ -321,24 +251,6 @@
}
@Override
- public void enableProximitySensor() {
- // Only change the state if the activity is still around.
- Activity activity = mActivityReference.get();
- if (activity != null) {
- acquireProximitySensor();
- }
- }
-
- @Override
- public void disableProximitySensor() {
- // Only change the state if the activity is still around.
- Activity activity = mActivityReference.get();
- if (activity != null) {
- releaseProximitySensor(true /* waitForFarState */);
- }
- }
-
- @Override
public void registerContentObserver(Uri uri, ContentObserver observer) {
mApplicationContext.getContentResolver().registerContentObserver(uri, false, observer);
}
diff --git a/src/com/android/dialer/voicemail/VoicemailPlaybackPresenter.java b/src/com/android/dialer/voicemail/VoicemailPlaybackPresenter.java
index 029f5bd..1f63f5d 100644
--- a/src/com/android/dialer/voicemail/VoicemailPlaybackPresenter.java
+++ b/src/com/android/dialer/voicemail/VoicemailPlaybackPresenter.java
@@ -26,17 +26,22 @@
import android.os.Bundle;
import android.os.Handler;
import android.os.PowerManager;
+import android.util.Log;
import android.view.View;
import android.widget.SeekBar;
import com.android.dialer.R;
import com.android.dialer.util.AsyncTaskExecutor;
+import com.android.dialer.util.AsyncTaskExecutors;
import com.android.ex.variablespeed.MediaPlayerProxy;
import com.android.ex.variablespeed.SingleThreadedMediaPlayerProxy;
+import com.android.ex.variablespeed.VariableSpeed;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Preconditions;
+import java.util.concurrent.Executors;
+import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.RejectedExecutionException;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ScheduledFuture;
@@ -61,6 +66,7 @@
@NotThreadSafe
@VisibleForTesting
public class VoicemailPlaybackPresenter implements OnAudioFocusChangeListener {
+ private static final String TAG = VoicemailPlaybackPresenter.class.getSimpleName();
/** The stream used to playback voicemail. */
private static final int PLAYBACK_STREAM = AudioManager.STREAM_VOICE_CALL;
@@ -88,8 +94,6 @@
void setFetchContentTimeout();
void registerContentObserver(Uri uri, ContentObserver observer);
void unregisterContentObserver(ContentObserver observer);
- void enableProximitySensor();
- void disableProximitySensor();
void setVolumeControlStream(int streamType);
}
@@ -101,6 +105,7 @@
RESET_PREPARE_START_MEDIA_PLAYER,
}
+ private static final int NUMBER_OF_THREADS_IN_POOL = 2;
/** Update rate for the slider, 30fps. */
private static final int SLIDER_UPDATE_PERIOD_MILLIS = 1000 / 30;
/** Time our ui will wait for content to be fetched before reporting not available. */
@@ -127,16 +132,19 @@
*/
private final AtomicInteger mDuration = new AtomicInteger(0);
- private final PlaybackView mView;
- private final MediaPlayerProxy mPlayer;
- private final PositionUpdater mPositionUpdater;
+ private MediaPlayerProxy mPlayer;
+ private static int mMediaPlayerRefCount = 0;
+ private static MediaPlayerProxy mMediaPlayerInstance;
+ private final PlaybackView mView;
+ private final PositionUpdater mPositionUpdater;
/** Voicemail uri to play. */
private final Uri mVoicemailUri;
/** Start playing in onCreate iff this is true. */
private final boolean mStartPlayingImmediately;
/** Used to run async tasks that need to interact with the ui. */
private final AsyncTaskExecutor mAsyncTaskExecutor;
+ private static ScheduledExecutorService mScheduledExecutorService;
/**
* Used to handle the result of a successful or time-out fetch result.
@@ -144,23 +152,33 @@
* This variable is thread-contained, accessed only on the ui thread.
*/
private FetchResultHandler mFetchResultHandler;
- private PowerManager.WakeLock mWakeLock;
+ private PowerManager.WakeLock mProximityWakeLock;
private AsyncTask<Void, ?, ?> mPrepareTask;
private int mPosition;
private boolean mPlaying;
private AudioManager mAudioManager;
- public VoicemailPlaybackPresenter(PlaybackView view, MediaPlayerProxy player,
- Uri voicemailUri, ScheduledExecutorService executorService,
- boolean startPlayingImmediately, AsyncTaskExecutor asyncTaskExecutor,
+ public VoicemailPlaybackPresenter(
+ PlaybackView view,
+ Uri voicemailUri,
+ boolean startPlayingImmediately,
PowerManager.WakeLock wakeLock) {
mView = view;
- mPlayer = player;
mVoicemailUri = voicemailUri;
mStartPlayingImmediately = startPlayingImmediately;
- mAsyncTaskExecutor = asyncTaskExecutor;
- mPositionUpdater = new PositionUpdater(executorService, SLIDER_UPDATE_PERIOD_MILLIS);
- mWakeLock = wakeLock;
+ mPositionUpdater = new PositionUpdater(
+ getScheduledExecutorServiceInstance(), SLIDER_UPDATE_PERIOD_MILLIS);
+ mProximityWakeLock = wakeLock;
+
+ mAsyncTaskExecutor = AsyncTaskExecutors.createAsyncTaskExecutor();
+ mPlayer = VariableSpeed.createVariableSpeed(getScheduledExecutorServiceInstance());
+
+ ++mMediaPlayerRefCount;
+ if (mMediaPlayerInstance == null) {
+ mMediaPlayerInstance = VariableSpeed.createVariableSpeed(
+ getScheduledExecutorServiceInstance());
+ }
+ mPlayer = mMediaPlayerInstance;
}
public void onCreate(Bundle bundle) {
@@ -355,18 +373,62 @@
}
public void onDestroy() {
+ --mMediaPlayerRefCount;
+ if (mMediaPlayerRefCount == 0) {
+ if (mScheduledExecutorService != null) {
+ mScheduledExecutorService.shutdown();
+ mScheduledExecutorService = null;
+ }
+ if (mPlayer != null) {
+ mPlayer.release();
+ mPlayer = null;
+ }
+ }
+
if (mPrepareTask != null) {
mPrepareTask.cancel(false);
mPrepareTask = null;
}
- mPlayer.release();
if (mFetchResultHandler != null) {
mFetchResultHandler.destroy();
mFetchResultHandler = null;
}
mPositionUpdater.stopUpdating();
- if (mWakeLock.isHeld()) {
- mWakeLock.release();
+ if (mProximityWakeLock.isHeld()) {
+ mProximityWakeLock.release();
+ }
+ }
+
+ private static synchronized ScheduledExecutorService getScheduledExecutorServiceInstance() {
+ if (mScheduledExecutorService == null) {
+ mScheduledExecutorService = Executors.newScheduledThreadPool(
+ NUMBER_OF_THREADS_IN_POOL);
+ }
+ return mScheduledExecutorService;
+ }
+
+ private void enableProximitySensor() {
+ if (mProximityWakeLock == null) {
+ return;
+ }
+ if (!mProximityWakeLock.isHeld()) {
+ Log.i(TAG, "Acquiring proximity wake lock");
+ mProximityWakeLock.acquire();
+ } else {
+ Log.i(TAG, "Proximity wake lock already acquired");
+ }
+ }
+
+ private void disableProximitySensor(boolean waitForFarState) {
+ if (mProximityWakeLock == null) {
+ return;
+ }
+ if (mProximityWakeLock.isHeld()) {
+ Log.i(TAG, "Releasing proximity wake lock");
+ int flags = waitForFarState ? PowerManager.RELEASE_FLAG_WAIT_FOR_NO_PROXIMITY : 0;
+ mProximityWakeLock.release(flags);
+ } else {
+ Log.i(TAG, "Proximity wake lock already released");
}
}
@@ -439,12 +501,12 @@
mPlayer.start();
setPositionAndPlayingStatus(mPlayer.getCurrentPosition(), true);
mView.playbackStarted();
- if (!mWakeLock.isHeld()) {
- mWakeLock.acquire();
+ if (!mProximityWakeLock.isHeld()) {
+ mProximityWakeLock.acquire();
}
// Only enable if we are not currently using the speaker phone.
if (!mView.isSpeakerPhoneOn()) {
- mView.enableProximitySensor();
+ enableProximitySensor();
}
// Can throw RejectedExecutionException
mPositionUpdater.startUpdating(startPosition, duration);
@@ -504,11 +566,11 @@
getAudioManager().abandonAudioFocus(this);
mPositionUpdater.stopUpdating();
mView.playbackStopped();
- if (mWakeLock.isHeld()) {
- mWakeLock.release();
+ if (mProximityWakeLock.isHeld()) {
+ mProximityWakeLock.release();
}
// Always disable on stop.
- mView.disableProximitySensor();
+ disableProximitySensor(true /* waitForFarState */);
mView.setClipPosition(clipPosition, duration);
if (mPlayer.isPlaying()) {
mPlayer.pause();
@@ -557,10 +619,10 @@
if (mPlayer.isPlaying() && previousState) {
// If we are currently playing and we are disabling the speaker phone, enable the
// sensor.
- mView.enableProximitySensor();
+ enableProximitySensor();
} else {
// If we are not currently playing, disable the sensor.
- mView.disableProximitySensor();
+ disableProximitySensor(true /* waitForFarState */);
}
}
}
@@ -641,9 +703,8 @@
mPrepareTask.cancel(false);
mPrepareTask = null;
}
- if (mWakeLock.isHeld()) {
- mWakeLock.release();
- }
+
+ disableProximitySensor(false /* waitForFarState */);
}
private static int constrain(int amount, int low, int high) {