diff --git a/Android.mk b/Android.mk index 984cd286d284695f8f47a2221b7ffc5694a61464..dc34cc4a459da51cba9032756cd5073535834d05 100644 --- a/Android.mk +++ b/Android.mk @@ -4,6 +4,13 @@ # * removed com.google.android.geo.API_KEY key. This should be added to # the manifest files in java/com/android/incallui/calllocation/impl/ # and /java/com/android/incallui/maps/impl/ +# * b/62417801 removed translation string variant: +# $ find java/com/android/incallui/res/*mcc262*/strings.xml | xargs rm +# * b/62343966 include manually generated GRPC service class: +# $ protoc --plugin=protoc-gen-grpc-java=prebuilts/tools/common/m2/repository/io/grpc/protoc-gen-grpc-java/1.0.3/protoc-gen-grpc-java-1.0.3-linux-x86_64.exe \ +# --grpc-java_out=lite:"packages/apps/Dialer/java/com/android/voicemail/impl/" \ +# --proto_path="packages/apps/Dialer/java/com/android/voicemail/impl/transcribe/grpc/" "packages/apps/Dialer/java/com/android/voicemail/impl/transcribe/grpc/voicemail_transcription.proto" +# * b/62787062 / b/37077388 temporarily disable proguard with javac LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) @@ -20,11 +27,13 @@ BASE_DIR := java/com/android SRC_DIRS := \ $(BASE_DIR)/contacts/common \ $(BASE_DIR)/dialer \ + $(BASE_DIR)/dialershared \ $(BASE_DIR)/incallui \ $(BASE_DIR)/voicemail # Exclude files incompatible with AOSP. EXCLUDE_FILES := \ + $(BASE_DIR)/dialer/calllog/testing/FakeCallLogApplication.java \ $(BASE_DIR)/incallui/calllocation/impl/AuthException.java \ $(BASE_DIR)/incallui/calllocation/impl/CallLocationImpl.java \ $(BASE_DIR)/incallui/calllocation/impl/CallLocationModule.java \ @@ -39,7 +48,7 @@ EXCLUDE_FILES := \ $(BASE_DIR)/incallui/calllocation/impl/TrafficStatsTags.java \ $(BASE_DIR)/incallui/maps/impl/MapsImpl.java \ $(BASE_DIR)/incallui/maps/impl/MapsModule.java \ - $(BASE_DIR)/incallui/maps/impl/StaticMapFragment.java + $(BASE_DIR)/incallui/maps/impl/StaticMapFragment.java \ # Exclude testing only class, not used anywhere here EXCLUDE_FILES += \ @@ -62,19 +71,25 @@ RES_DIRS := \ $(BASE_DIR)/dialer/calllog/ui/res \ $(BASE_DIR)/dialer/calllogutils/res \ $(BASE_DIR)/dialer/common/res \ + $(BASE_DIR)/dialer/contactactions/res \ $(BASE_DIR)/dialer/contactsfragment/res \ $(BASE_DIR)/dialer/dialpadview/res \ $(BASE_DIR)/dialer/interactions/res \ + $(BASE_DIR)/dialer/main/impl/res \ $(BASE_DIR)/dialer/notification/res \ $(BASE_DIR)/dialer/oem/res \ $(BASE_DIR)/dialer/phonenumberutil/res \ $(BASE_DIR)/dialer/postcall/res \ + $(BASE_DIR)/dialer/searchfragment/list/res \ + $(BASE_DIR)/dialer/searchfragment/nearbyplaces/res \ + $(BASE_DIR)/dialer/searchfragment/common/res \ $(BASE_DIR)/dialer/shortcuts/res \ $(BASE_DIR)/dialer/speeddial/res \ $(BASE_DIR)/dialer/theme/res \ $(BASE_DIR)/dialer/util/res \ $(BASE_DIR)/dialer/voicemailstatus/res \ $(BASE_DIR)/dialer/widget/res \ + $(BASE_DIR)/dialershared/bubble/res \ $(BASE_DIR)/incallui/answer/impl/affordance/res \ $(BASE_DIR)/incallui/answer/impl/answermethod/res \ $(BASE_DIR)/incallui/answer/impl/hint/res \ @@ -88,6 +103,7 @@ RES_DIRS := \ $(BASE_DIR)/incallui/incall/impl/res \ $(BASE_DIR)/incallui/res \ $(BASE_DIR)/incallui/sessiondata/res \ + $(BASE_DIR)/incallui/speakerbuttonlogic/res \ $(BASE_DIR)/incallui/telecomeventui/res \ $(BASE_DIR)/incallui/video/impl/res \ $(BASE_DIR)/incallui/video/protocol/res \ @@ -113,13 +129,18 @@ DIALER_MANIFEST_FILES += \ $(BASE_DIR)/dialer/calllog/ui/AndroidManifest.xml \ $(BASE_DIR)/dialer/calllogutils/AndroidManifest.xml \ $(BASE_DIR)/dialer/common/AndroidManifest.xml \ + $(BASE_DIR)/dialer/contactactions/AndroidManifest.xml \ $(BASE_DIR)/dialer/contactsfragment/AndroidManifest.xml \ $(BASE_DIR)/dialer/dialpadview/AndroidManifest.xml \ $(BASE_DIR)/dialer/interactions/AndroidManifest.xml \ + $(BASE_DIR)/dialer/main/impl/AndroidManifest.xml \ $(BASE_DIR)/dialer/notification/AndroidManifest.xml \ $(BASE_DIR)/dialer/oem/AndroidManifest.xml \ $(BASE_DIR)/dialer/phonenumberutil/AndroidManifest.xml \ $(BASE_DIR)/dialer/postcall/AndroidManifest.xml \ + $(BASE_DIR)/dialer/searchfragment/list/AndroidManifest.xml \ + $(BASE_DIR)/dialer/searchfragment/nearbyplaces/AndroidManifest.xml \ + $(BASE_DIR)/dialer/searchfragment/common/AndroidManifest.xml \ $(BASE_DIR)/dialer/shortcuts/AndroidManifest.xml \ $(BASE_DIR)/dialer/simulator/impl/AndroidManifest.xml \ $(BASE_DIR)/dialer/speeddial/AndroidManifest.xml \ @@ -127,6 +148,7 @@ DIALER_MANIFEST_FILES += \ $(BASE_DIR)/dialer/util/AndroidManifest.xml \ $(BASE_DIR)/dialer/voicemailstatus/AndroidManifest.xml \ $(BASE_DIR)/dialer/widget/AndroidManifest.xml \ + $(BASE_DIR)/dialershared/bubble/AndroidManifest.xml \ $(BASE_DIR)/incallui/AndroidManifest.xml \ $(BASE_DIR)/incallui/answer/impl/affordance/AndroidManifest.xml \ $(BASE_DIR)/incallui/answer/impl/AndroidManifest.xml \ @@ -139,12 +161,13 @@ DIALER_MANIFEST_FILES += \ $(BASE_DIR)/incallui/hold/AndroidManifest.xml \ $(BASE_DIR)/incallui/incall/impl/AndroidManifest.xml \ $(BASE_DIR)/incallui/sessiondata/AndroidManifest.xml \ + $(BASE_DIR)/incallui/speakerbuttonlogic/AndroidManifest.xml \ $(BASE_DIR)/incallui/telecomeventui/AndroidManifest.xml \ $(BASE_DIR)/incallui/video/impl/AndroidManifest.xml \ $(BASE_DIR)/incallui/video/protocol/AndroidManifest.xml \ $(BASE_DIR)/incallui/wifi/AndroidManifest.xml \ $(BASE_DIR)/voicemail/impl/AndroidManifest.xml \ - $(BASE_DIR)/voicemail/permissions.xml \ + $(BASE_DIR)/voicemail/AndroidManifest.xml \ # Merge all manifest files. @@ -180,19 +203,25 @@ LOCAL_AAPT_FLAGS := \ --extra-packages com.android.dialer.calllog.ui \ --extra-packages com.android.dialer.calllogutils \ --extra-packages com.android.dialer.common \ + --extra-packages com.android.dialer.contactactions \ --extra-packages com.android.dialer.contactsfragment \ --extra-packages com.android.dialer.dialpadview \ --extra-packages com.android.dialer.interactions \ + --extra-packages com.android.dialer.main.impl \ --extra-packages com.android.dialer.notification \ --extra-packages com.android.dialer.oem \ --extra-packages com.android.dialer.phonenumberutil \ --extra-packages com.android.dialer.postcall \ + --extra-packages com.android.dialer.searchfragment.list \ + --extra-packages com.android.dialer.searchfragment.nearbyplaces \ + --extra-packages com.android.dialer.searchfragment.common \ --extra-packages com.android.dialer.shortcuts \ --extra-packages com.android.dialer.speeddial \ --extra-packages com.android.dialer.theme \ --extra-packages com.android.dialer.util \ --extra-packages com.android.dialer.voicemailstatus \ --extra-packages com.android.dialer.widget \ + --extra-packages com.android.dialershared.bubble \ --extra-packages com.android.incallui \ --extra-packages com.android.incallui.answer.impl \ --extra-packages com.android.incallui.answer.impl.affordance \ @@ -209,6 +238,7 @@ LOCAL_AAPT_FLAGS := \ --extra-packages com.android.incallui.incall.impl \ --extra-packages com.android.incallui.maps.impl \ --extra-packages com.android.incallui.sessiondata \ + --extra-packages com.android.incallui.speakerbuttonlogic \ --extra-packages com.android.incallui.telecomeventui \ --extra-packages com.android.incallui.video \ --extra-packages com.android.incallui.video.impl \ @@ -223,6 +253,7 @@ LOCAL_AAPT_FLAGS := \ LOCAL_STATIC_JAVA_LIBRARIES := \ android-common \ + android-support-dynamic-animation \ com.android.vcard \ dialer-commons-io-target \ dialer-dagger2-target \ @@ -230,6 +261,11 @@ LOCAL_STATIC_JAVA_LIBRARIES := \ dialer-gifdecoder-target \ dialer-glide-target \ dialer-guava-target \ + dialer-grpc-all-target \ + dialer-grpc-core-target \ + dialer-grpc-okhttp-target \ + dialer-grpc-protobuf-lite-target \ + dialer-grpc-stub-target \ dialer-javax-annotation-api-target \ dialer-javax-inject-target \ dialer-libshortcutbadger-target \ @@ -270,6 +306,13 @@ LOCAL_ADDITIONAL_DEPENDENCIES += $(PROCESSOR_JARS) LOCAL_JACK_FLAGS += --processorpath $(call normalize-path-list,$(PROCESSOR_JARS)) LOCAL_JAVACFLAGS += -processorpath $(call normalize-path-list,$(PROCESSOR_JARS)) + +# Begin Bug: 37077388 +LOCAL_DX_FLAGS := --core-library --multi-dex +LOCAL_JACK_FLAGS := --multi-dex native + +LOCAL_PROGUARD_ENABLED := disabled +ifdef LOCAL_JACK_ENABLED # Proguard includes LOCAL_PROGUARD_FLAG_FILES := \ java/com/android/dialer/common/proguard.flags \ @@ -279,11 +322,11 @@ LOCAL_PROGUARD_FLAG_FILES := \ java/com/android/incallui/answer/impl/proguard.flags LOCAL_PROGUARD_ENABLED := custom -ifdef LOCAL_JACK_ENABLED -# Bug: 37077388 LOCAL_PROGUARD_ENABLED += optimization endif +# End Bug: 37077388 + LOCAL_SDK_VERSION := system_current LOCAL_MODULE_TAGS := optional LOCAL_PACKAGE_NAME := Dialer @@ -314,6 +357,11 @@ LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := \ dialer-dagger2:../../../prebuilts/tools/common/m2/repository/com/google/dagger/dagger/2.7/dagger-2.7$(COMMON_JAVA_PACKAGE_SUFFIX) \ dialer-dagger2-producers:../../../prebuilts/tools/common/m2/repository/com/google/dagger/dagger-producers/2.7/dagger-producers-2.7$(COMMON_JAVA_PACKAGE_SUFFIX) \ dialer-guava:../../../prebuilts/tools/common/m2/repository/com/google/guava/guava/20.0/guava-20.0$(COMMON_JAVA_PACKAGE_SUFFIX) \ + dialer-grpc-all:../../../prebuilts/tools/common/m2/repository/io/grpc/grpc-all/1.0.3/grpc-all-1.0.3$(COMMON_JAVA_PACKAGE_SUFFIX) \ + dialer-grpc-core:../../../prebuilts/tools/common/m2/repository/io/grpc/grpc-core/1.0.3/grpc-core-1.0.3$(COMMON_JAVA_PACKAGE_SUFFIX) \ + dialer-grpc-okhttp:../../../prebuilts/tools/common/m2/repository/io/grpc/grpc-okhttp/1.0.3/grpc-okhttp-1.0.3$(COMMON_JAVA_PACKAGE_SUFFIX) \ + dialer-grpc-protobuf-lite:../../../prebuilts/tools/common/m2/repository/io/grpc/grpc-protobuf-lite/1.0.3/grpc-protobuf-lite-1.0.3$(COMMON_JAVA_PACKAGE_SUFFIX) \ + dialer-grpc-stub:../../../prebuilts/tools/common/m2/repository/io/grpc/grpc-stub/1.0.3/grpc-stub-1.0.3$(COMMON_JAVA_PACKAGE_SUFFIX) \ dialer-javax-annotation-api:../../../prebuilts/tools/common/m2/repository/javax/annotation/javax.annotation-api/1.2/javax.annotation-api-1.2$(COMMON_JAVA_PACKAGE_SUFFIX) \ dialer-javax-inject:../../../prebuilts/tools/common/m2/repository/javax/inject/javax.inject/1/javax.inject-1$(COMMON_JAVA_PACKAGE_SUFFIX) @@ -432,3 +480,53 @@ LOCAL_UNINSTALLABLE_MODULE := true include $(BUILD_PREBUILT) include $(CLEAR_VARS) + +LOCAL_MODULE_CLASS := JAVA_LIBRARIES +LOCAL_MODULE := dialer-grpc-core-target +LOCAL_SDK_VERSION := current +LOCAL_SRC_FILES := ../../../prebuilts/tools/common/m2/repository/io/grpc/grpc-core/1.0.3/grpc-core-1.0.3$(COMMON_JAVA_PACKAGE_SUFFIX) +LOCAL_UNINSTALLABLE_MODULE := true + +include $(BUILD_PREBUILT) + +include $(CLEAR_VARS) + +LOCAL_MODULE_CLASS := JAVA_LIBRARIES +LOCAL_MODULE := dialer-grpc-okhttp-target +LOCAL_SDK_VERSION := current +LOCAL_SRC_FILES := ../../../prebuilts/tools/common/m2/repository/io/grpc/grpc-okhttp/1.0.3/grpc-okhttp-1.0.3$(COMMON_JAVA_PACKAGE_SUFFIX) +LOCAL_UNINSTALLABLE_MODULE := true + +include $(BUILD_PREBUILT) + +include $(CLEAR_VARS) + +LOCAL_MODULE_CLASS := JAVA_LIBRARIES +LOCAL_MODULE := dialer-grpc-protobuf-lite-target +LOCAL_SDK_VERSION := current +LOCAL_SRC_FILES := ../../../prebuilts/tools/common/m2/repository/io/grpc/grpc-protobuf-lite/1.0.3/grpc-protobuf-lite-1.0.3$(COMMON_JAVA_PACKAGE_SUFFIX) +LOCAL_UNINSTALLABLE_MODULE := true + +include $(BUILD_PREBUILT) + +include $(CLEAR_VARS) + +LOCAL_MODULE_CLASS := JAVA_LIBRARIES +LOCAL_MODULE := dialer-grpc-stub-target +LOCAL_SDK_VERSION := current +LOCAL_SRC_FILES := ../../../prebuilts/tools/common/m2/repository/io/grpc/grpc-stub/1.0.3/grpc-stub-1.0.3$(COMMON_JAVA_PACKAGE_SUFFIX) +LOCAL_UNINSTALLABLE_MODULE := true + +include $(BUILD_PREBUILT) + +include $(CLEAR_VARS) + +LOCAL_MODULE_CLASS := JAVA_LIBRARIES +LOCAL_MODULE := dialer-grpc-all-target +LOCAL_SDK_VERSION := current +LOCAL_SRC_FILES := ../../../prebuilts/tools/common/m2/repository/io/grpc/grpc-all/1.0.3/grpc-all-1.0.3$(COMMON_JAVA_PACKAGE_SUFFIX) +LOCAL_UNINSTALLABLE_MODULE := true + +include $(BUILD_PREBUILT) + +include $(CLEAR_VARS) diff --git a/AndroidManifest.xml b/AndroidManifest.xml index c04f8bec98a71ef940fc1d61867bac9902f12bee..8dc9f6bb98cb7a52a83f1180a38658cddad84dee 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -16,8 +16,8 @@ + android:versionCode="140000" + android:versionName="11.0"> + - - diff --git a/java/com/android/contacts/common/res/drawable/list_selector_background_transition_holo_light.xml b/java/com/android/contacts/common/res/drawable/list_selector_background_transition_holo_light.xml deleted file mode 100644 index 35fff99c271ac042de294898040141151843f5e5..0000000000000000000000000000000000000000 --- a/java/com/android/contacts/common/res/drawable/list_selector_background_transition_holo_light.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - diff --git a/java/com/android/contacts/common/res/layout/dialog_call_subject.xml b/java/com/android/contacts/common/res/layout/dialog_call_subject.xml index a33b2ac8573779398af4be980a68711dbbe68400..df8e8d299020f5b2bddf30e5f51e688b840953dc 100644 --- a/java/com/android/contacts/common/res/layout/dialog_call_subject.xml +++ b/java/com/android/contacts/common/res/layout/dialog_call_subject.xml @@ -129,7 +129,7 @@ android:layout_height="25dp" android:layout_alignParentStart="true" android:layout_centerVertical="true" - android:src="@drawable/quantum_ic_history_white_24" + android:src="@drawable/quantum_ic_history_vd_theme_24" android:tint="@color/call_subject_history_icon"/> diff --git a/java/com/android/contacts/common/res/values-af/strings.xml b/java/com/android/contacts/common/res/values-af/strings.xml index 52e612da9e68e51e6f0cf68db351eecceaaf5a7d..4ca39cf96f475ab3716e6e388a58c29107ba0d22 100644 --- a/java/com/android/contacts/common/res/values-af/strings.xml +++ b/java/com/android/contacts/common/res/values-af/strings.xml @@ -70,10 +70,12 @@ "Weg" "Besig" "Kontakte" + "Topvoorgestel" "Ander" "Gids" "Werkgids" "Alle kontakte" + "Voorstelle" "Ek" "Soek tans…" "Meer as %d gevind." @@ -248,7 +250,7 @@ "Tik \'n nota om saam met oproep te stuur …" "STUUR EN BEL" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "%1$s-oortjie" %1$s-oortjie %2$d ongelese items. diff --git a/java/com/android/contacts/common/res/values-am/strings.xml b/java/com/android/contacts/common/res/values-am/strings.xml index 0283fbb0ad70e688cb197267720241c38ac1f514..d216b0be648f7e18c888af72c4969201a840a611 100644 --- a/java/com/android/contacts/common/res/values-am/strings.xml +++ b/java/com/android/contacts/common/res/values-am/strings.xml @@ -70,10 +70,12 @@ "ወጣ ብሏል" "ተይዟል" "እውቅያዎች" + "በብዛት የተጠቆሙ" "ሌላ" "ማውጫ" "የሥራ ስልክ ማውጫ" "ሁሉም እውቅያዎች" + "ጥቆማዎች" "እኔ" "በመፈለግ ላይ…" "ከ%d በላይ ተገኝተዋል።" @@ -248,7 +250,7 @@ "ከጥሪ ጋር ለመላክ የማስታወሻ ጽሑፍ ይተይቡ ..." "ላክ እና ደውል" "%1$s / %2$s" - "%1$s%2$s" + "%1$s%2$s" "የ%1$s ትር።" %1$s ትር። %2$d ያልተነበቡ ንጥሎች። diff --git a/java/com/android/contacts/common/res/values-ar/strings.xml b/java/com/android/contacts/common/res/values-ar/strings.xml index a3862fe09ee454debbd2f9731e5d822fbabab3b4..040b544774284a64c214903121bf2611e5c1be8b 100644 --- a/java/com/android/contacts/common/res/values-ar/strings.xml +++ b/java/com/android/contacts/common/res/values-ar/strings.xml @@ -70,10 +70,12 @@ "بالخارج" "مشغول" "جهات الاتصال" + "أهم المقترحات" "غير ذلك" "الدليل" "دليل العمل" "جميع جهات الاتصال" + "الاقتراحات" "أنا" "جارِ البحث…" "تم العثور على أكثر من %d من جهات الاتصال." @@ -252,7 +254,7 @@ "اكتب ملاحظة لإرسالها مع المكالمة ..." "إرسال واتصال" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "علامة تبويب %1$s." %1$s علامة تبويب. %2$d عناصر غير مقروءة. diff --git a/java/com/android/contacts/common/res/values-az/strings.xml b/java/com/android/contacts/common/res/values-az/strings.xml index 94337712725bba4babbd57b7d72e42421a307f25..13250f7e087ba63d4e9b1e25a602666d35a4dcfb 100644 --- a/java/com/android/contacts/common/res/values-az/strings.xml +++ b/java/com/android/contacts/common/res/values-az/strings.xml @@ -70,10 +70,12 @@ "Kənar" "Məşğul" "Kontaktlar" + "Ən yaxşı Təkliflər" "Digər" "Kataloq" "İş kataloqu" "Bütün kontaktlar" + "Təkliflər" "Mən" "Axtarılır..." "%d ədəddən çox tapılıb." @@ -248,7 +250,7 @@ "Zəng ilə göndərmək üçün qeyd yazın..." "GÖNDƏRİN VƏ ZƏNG EDİN" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "%1$s tabel." %1$s tabel. %2$d oxunmamış element. diff --git a/java/com/android/contacts/common/res/values-b+sr+Latn/strings.xml b/java/com/android/contacts/common/res/values-b+sr+Latn/strings.xml index fc99567f104edcaa580289158900fc17eb9ab343..d3b6b0c05225e5c430e904d4fda6ccb6a674dfe5 100644 --- a/java/com/android/contacts/common/res/values-b+sr+Latn/strings.xml +++ b/java/com/android/contacts/common/res/values-b+sr+Latn/strings.xml @@ -70,10 +70,12 @@ "Odsutan/na" "Zauzet/a" "Kontakti" + "Najpopularniji predlozi" "Drugo" "Direktorijum" "Direktorijum za Work" "Svi kontakti" + "Predlozi" "Ja" "Pretražuje se…" "Pronađeno je više od %d." @@ -249,7 +251,7 @@ "Unesite belešku koju ćete poslati uz poziv..." "POŠALJI I POZOVI" "%1$s/%2$s" - "%1$s%2$s" + "%1$s %2$s" "Kartica %1$s." Kartica %1$s. %2$d nepročitana stavka. diff --git a/java/com/android/contacts/common/res/values-be/strings.xml b/java/com/android/contacts/common/res/values-be/strings.xml index a9652a1c104af7de5efbff5cb25be240771e1e1c..ca8f16421eeb65e99c6fc0b634091fc3fcd3ec38 100644 --- a/java/com/android/contacts/common/res/values-be/strings.xml +++ b/java/com/android/contacts/common/res/values-be/strings.xml @@ -70,10 +70,12 @@ "Адсутнічае" "Заняты" "Кантакты" + "Лепшыя прапановы" "Іншае" "Дырэкторыя" "Працоўны каталог" "Усе кантакты" + "Прапановы" "Я" "Пошук..." "Знойдзена вынікаў: больш за %d." @@ -250,7 +252,7 @@ "Увесці нататку для адпраўкі з выклікам…" "АДПРАВІЦЬ І ВЫКЛІКАЦЬ" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "Укладка %1$s." Укладка %1$s. %2$d непрачытаны элемент. diff --git a/java/com/android/contacts/common/res/values-bg/strings.xml b/java/com/android/contacts/common/res/values-bg/strings.xml index 0b57eb6a5ae089f642b0ff1ea75e42dec66b7b8c..4fdcc8c018b7d44ea187ad267389e886c4bfb995 100644 --- a/java/com/android/contacts/common/res/values-bg/strings.xml +++ b/java/com/android/contacts/common/res/values-bg/strings.xml @@ -70,10 +70,12 @@ "Отсъства" "Зает/а" "Контакти" + "Водещи предложения" "Други" "Директория" "Служебен указател" "Всички контакти" + "Предложения" "Аз" "Търси се…" "Намерени са повече от %d." @@ -248,7 +250,7 @@ "Напишете придружаваща бележка, която ще се изпрати при извършване на обаждането..." "ИЗПРАЩАНЕ И ОБАЖДАНЕ" "%1$s/%2$s" - "%1$s%2$s" + "%1$s %2$s" "Раздел „%1$s“." Раздел „%1$s“. %2$d непрочетени елемента. diff --git a/java/com/android/contacts/common/res/values-bn/strings.xml b/java/com/android/contacts/common/res/values-bn/strings.xml index 8e783d129e2a73051614b52d98fa864e675af316..debbe582ed541eba9e6f586d23536900e921623b 100644 --- a/java/com/android/contacts/common/res/values-bn/strings.xml +++ b/java/com/android/contacts/common/res/values-bn/strings.xml @@ -70,10 +70,12 @@ "অন্যত্র" "ব্যস্ত" "পরিচিতিগুলি" + "শীর্ষস্থানীয় প্রস্তাবনা" "অন্যান্য" "ডিরেক্টরি" "কাজের সংগ্রহ" "সকল পরিচিতি" + "প্রস্তাবনাগুলি" "আমি" "অনুসন্ধান করছে..." "%dটির থেকে বেশি খুঁজে পাওয়া গিয়েছে৷" @@ -248,7 +250,7 @@ "কলের সাথে পাঠানোর জন্য একটি নোট লিখুন ..." "পাঠান এবং কল করুন" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "%1$s ট্যাব৷" %1$s ট্যাব৷ %2$dটি অপঠিত আইটেম৷ diff --git a/java/com/android/contacts/common/res/values-bs/strings.xml b/java/com/android/contacts/common/res/values-bs/strings.xml index 278f6a8d06e47b8eb253f4140baa3c5ab485a148..c5f85e58856c7c53da3e8c93a5ee16f06f1cea2c 100644 --- a/java/com/android/contacts/common/res/values-bs/strings.xml +++ b/java/com/android/contacts/common/res/values-bs/strings.xml @@ -70,10 +70,12 @@ "Odsutan" "Zauzeto" "Kontakti" + "Najbolji prijedlozi" "Ostalo" "Imenik" "Poslovni imenik" "Svi kontakti" + "Prijedlozi" "Ja" "Pretraživanje…" "Pronađeno je više od %d." @@ -249,7 +251,7 @@ "Upišite bilješku koja će se poslati uz poziv ..." "POŠALJI I POZOVI" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "Kartica %1$s." Kartica %1$s. %2$d nepročitana stavka. diff --git a/java/com/android/contacts/common/res/values-ca/strings.xml b/java/com/android/contacts/common/res/values-ca/strings.xml index ad31a01b6e198c496ba85193368b1699cddb8a79..7e814ff32840a6235b8fae79e644f60021117169 100644 --- a/java/com/android/contacts/common/res/values-ca/strings.xml +++ b/java/com/android/contacts/common/res/values-ca/strings.xml @@ -70,10 +70,12 @@ "Absent" "Ocupat" "Contactes" + "Suggeriments principals" "Altres" "Directori" "Directori de la feina" "Tots els contactes" + "Suggeriments" "Jo" "S\'està cercant…" "Se n\'han trobat més de %d." @@ -248,7 +250,7 @@ "Escriu una nota per enviar-la juntament amb la trucada..." "ENVIA I TRUCA" "%1$s/%2$s" - "%1$s%2$s" + "%1$s %2$s" "Pestanya %1$s" Pestanya %1$s: %2$d elements no llegits diff --git a/java/com/android/contacts/common/res/values-cs/strings.xml b/java/com/android/contacts/common/res/values-cs/strings.xml index ab54be93aa4e1a6ffb4faecb6613d3a3a19518ff..0bea069ceb210627a39e2168b4bfeceae4c8baf5 100644 --- a/java/com/android/contacts/common/res/values-cs/strings.xml +++ b/java/com/android/contacts/common/res/values-cs/strings.xml @@ -70,10 +70,12 @@ "Pryč" "Nemám čas" "Kontakty" + "Hlavní návrhy" "Ostatní" "Adresář" "Pracovní adresář" "Všechny kontakty" + "Návrhy" "Já" "Vyhledávání..." "Nalezeno více kontaktů než %d." @@ -250,7 +252,7 @@ "Zadejte poznámku, která se odešle pomocí volání…" "ODESLAT A ZAVOLAT" "%1$s/%2$s" - "%1$s%2$s" + "%1$s %2$s" "Karta %1$s." Karta %1$s. %2$d nepřečtené položky. diff --git a/java/com/android/contacts/common/res/values-da/strings.xml b/java/com/android/contacts/common/res/values-da/strings.xml index 965d04a732f42a17d252ccdbcf2fdfa0c8a3f55e..c000b2fe51986e138add082cec52a64e5d92c404 100644 --- a/java/com/android/contacts/common/res/values-da/strings.xml +++ b/java/com/android/contacts/common/res/values-da/strings.xml @@ -70,10 +70,12 @@ "Ikke til stede" "Optaget" "Kontakter" + "Populære forslag" "Andre" "Indeks" "Indeks for arbejde" "Alle kontakter" + "Forslag" "Mig" "Søger..." "Der er fundet mere end %d." @@ -248,7 +250,7 @@ "Indtast en note, som skal sendes ved opkald..." "SEND OG RING" "%1$s/%2$s" - "%1$s%2$s" + "%1$s %2$s" "Fanen %1$s." Fanen %1$s. %2$d ulæst element. diff --git a/java/com/android/contacts/common/res/values-de/strings.xml b/java/com/android/contacts/common/res/values-de/strings.xml index 60c5e6806e9e61b150517b26ef55c453a58ae4be..90e1336088dcb8918c493dbf79c66fe42751e83b 100644 --- a/java/com/android/contacts/common/res/values-de/strings.xml +++ b/java/com/android/contacts/common/res/values-de/strings.xml @@ -70,10 +70,12 @@ "Abwesend" "Beschäftigt" "Kontakte" + "Top-Vorschläge" "Andere" "Verzeichnis" "Verzeichnis geschäftlicher Kontakte" "Alle Kontakte" + "Vorschläge" "Ich" "Suche läuft..." "Mehr als %d Kontakte gefunden" @@ -248,7 +250,7 @@ "Notiz eingeben, die beim Anrufen gesendet wird..." "SENDEN UND ANRUFEN" "%1$s/%2$s" - "%1$s%2$s" + "%1$s %2$s" "Tab \"%1$s\"." Tab \"%1$s\". %2$d ungelesene Elemente. diff --git a/java/com/android/contacts/common/res/values-el/strings.xml b/java/com/android/contacts/common/res/values-el/strings.xml index 9af3bc55af6e59b93578c4a4dbbf14ccf75f0a2f..33d2db4f6a16308e80438e3dfdfa7fa6ca06aa03 100644 --- a/java/com/android/contacts/common/res/values-el/strings.xml +++ b/java/com/android/contacts/common/res/values-el/strings.xml @@ -70,10 +70,12 @@ "Μη διαθέσιμος" "Απασχολημένος" "Επαφές" + "Κορυφαίες προτάσεις" "Άλλο" "Κατάλογος" "Κατάλογος εργασίας" "Όλες οι επαφές" + "Προτάσεις" "Εγώ" "Αναζήτηση..." "Βρέθηκαν περισσότερα από %d." @@ -248,7 +250,7 @@ "Πληκτρολογήστε μια σημείωση για αποστολή με την κλήση…" "ΑΠΟΣΤΟΛΗ ΚΑΙ ΚΛΗΣΗ" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "Καρτέλα %1$s." Καρτέλα %1$s. %2$d μη αναγνωσμένα στοιχεία. diff --git a/java/com/android/contacts/common/res/values-en-rAU/strings.xml b/java/com/android/contacts/common/res/values-en-rAU/strings.xml index 996c6ee18761de6809f47c4a9aeac542875c8087..e4e09dcaf9c519bdd9a585577e308d84c52361ee 100644 --- a/java/com/android/contacts/common/res/values-en-rAU/strings.xml +++ b/java/com/android/contacts/common/res/values-en-rAU/strings.xml @@ -70,10 +70,12 @@ "Away" "Busy" "Contacts" + "Top suggested" "Other" "Directory" "Work directory" "All contacts" + "Suggestions" "Me" "Searching…" "More than %d found." @@ -248,7 +250,7 @@ "Type a note to send with call ..." "SEND & CALL" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "%1$s tab." %1$s tab. %2$d unread items. diff --git a/java/com/android/contacts/common/res/values-en-rGB/strings.xml b/java/com/android/contacts/common/res/values-en-rGB/strings.xml index 996c6ee18761de6809f47c4a9aeac542875c8087..e4e09dcaf9c519bdd9a585577e308d84c52361ee 100644 --- a/java/com/android/contacts/common/res/values-en-rGB/strings.xml +++ b/java/com/android/contacts/common/res/values-en-rGB/strings.xml @@ -70,10 +70,12 @@ "Away" "Busy" "Contacts" + "Top suggested" "Other" "Directory" "Work directory" "All contacts" + "Suggestions" "Me" "Searching…" "More than %d found." @@ -248,7 +250,7 @@ "Type a note to send with call ..." "SEND & CALL" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "%1$s tab." %1$s tab. %2$d unread items. diff --git a/java/com/android/contacts/common/res/values-en-rIN/strings.xml b/java/com/android/contacts/common/res/values-en-rIN/strings.xml index 996c6ee18761de6809f47c4a9aeac542875c8087..e4e09dcaf9c519bdd9a585577e308d84c52361ee 100644 --- a/java/com/android/contacts/common/res/values-en-rIN/strings.xml +++ b/java/com/android/contacts/common/res/values-en-rIN/strings.xml @@ -70,10 +70,12 @@ "Away" "Busy" "Contacts" + "Top suggested" "Other" "Directory" "Work directory" "All contacts" + "Suggestions" "Me" "Searching…" "More than %d found." @@ -248,7 +250,7 @@ "Type a note to send with call ..." "SEND & CALL" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "%1$s tab." %1$s tab. %2$d unread items. diff --git a/java/com/android/contacts/common/res/values-es-rUS/strings.xml b/java/com/android/contacts/common/res/values-es-rUS/strings.xml index acb563cab4d6dca00a2628d38d2d44c48b99ef77..894c352d6ac6cf869640a6350deedb4e50329d11 100644 --- a/java/com/android/contacts/common/res/values-es-rUS/strings.xml +++ b/java/com/android/contacts/common/res/values-es-rUS/strings.xml @@ -70,10 +70,12 @@ "Ausente" "Ocupado" "Contactos" + "Principales lugares sugeridos" "Otros" "Directorio" "Directorio del trabajo" "Todos los contactos" + "Sugerencias" "Yo" "Buscando..." "Más de %d encontrados" @@ -248,7 +250,7 @@ "Escribe una nota para enviar con la llamada…" "ENVIAR Y LLAMAR" "%1$s/%2$s" - "%1$s%2$s" + "%1$s %2$s" "Pestaña %1$s." Pestaña %1$s. %2$d elementos no leídos. diff --git a/java/com/android/contacts/common/res/values-es/strings.xml b/java/com/android/contacts/common/res/values-es/strings.xml index def7a447c26a7c43fe46f4d7a1c2ee7de5a8146f..39e11d750ba15d828352436bc12a011bf6e13506 100644 --- a/java/com/android/contacts/common/res/values-es/strings.xml +++ b/java/com/android/contacts/common/res/values-es/strings.xml @@ -70,10 +70,12 @@ "Ausente" "Ocupado" "Contactos" + "Sugerencias principales" "Otro" "Directorio" "Directorio de trabajo" "Todos los contactos" + "Sugerencias" "Yo" "Buscando..." "Se han encontrado más de %d contactos." @@ -248,7 +250,7 @@ "Escribe una nota para enviarla con la llamada..." "ENVIAR Y LLAMAR" "%1$s/%2$s" - "%1$s%2$s" + "%1$s %2$s" "Pestaña %1$s." Pestaña %1$s. %2$d elementos no leídos. diff --git a/java/com/android/contacts/common/res/values-et/strings.xml b/java/com/android/contacts/common/res/values-et/strings.xml index c80d54214865945667d6d23302e9bd6ee9e904d8..e1460382d800e9c24943e4dd15643ebc7be5df55 100644 --- a/java/com/android/contacts/common/res/values-et/strings.xml +++ b/java/com/android/contacts/common/res/values-et/strings.xml @@ -70,10 +70,12 @@ "Eemal" "Hõivatud" "Kontaktid" + "Populaarsed soovitused" "Muu" "Kataloog" "Töökontaktide kataloog" "Kõik kontaktid" + "Soovitused" "Mina" "Otsimine ..." "Leitud rohkem kui %d." @@ -248,7 +250,7 @@ "Sisestage märkus, mis koos kõnega saata ..." "SAADA JA HELISTA" "%1$s/%2$s" - "%1$s%2$s" + "%1$s %2$s" "Vahekaart %1$s." Vahekaart %1$s. %2$d lugemata üksust. diff --git a/java/com/android/contacts/common/res/values-eu/strings.xml b/java/com/android/contacts/common/res/values-eu/strings.xml index 868d668b56054338e443550a29920c60f60a91de..9caf1f1119689889477af738cd65d967409ac6be 100644 --- a/java/com/android/contacts/common/res/values-eu/strings.xml +++ b/java/com/android/contacts/common/res/values-eu/strings.xml @@ -70,10 +70,12 @@ "Kanpoan" "Okupatuta" "Kontaktuak" + "Iradokizun garrantzitsuenak" "Beste bat" "Direktorioa" "Laneko kontaktuak" "Kontaktu guztiak" + "Iradokizunak" "Ni" "Bilatzen…" "%d baino gehiago aurkitu dira." @@ -248,7 +250,7 @@ "Idatzi deiarekin batera bidali beharreko oharra…" "BIDALI ETA DEITU" "%1$s/%2$s" - "%1$s%2$s" + "%1$s: %2$s" "%1$s fitxa." %1$s fitxa. Irakurri gabeko %2$d elementu. diff --git a/java/com/android/contacts/common/res/values-fa/strings.xml b/java/com/android/contacts/common/res/values-fa/strings.xml index dda10647c64248cbee40a86008069e3316e07119..c0bc0109d582b68371d0ccfdd9a86e523b53c75d 100644 --- a/java/com/android/contacts/common/res/values-fa/strings.xml +++ b/java/com/android/contacts/common/res/values-fa/strings.xml @@ -70,10 +70,12 @@ "غایب" "مشغول" "مخاطبین" + "پیشنهادهای برتر" "سایر موارد" "فهرست" "فهرست کار" "همه مخاطبین" + "پیشنهادها" "من" "در حال جستجو…" "بیش از %d مورد یافت شد." @@ -248,7 +250,7 @@ "یادداشتی بنویسید که همراه تماس ارسال شود…" "ارسال و تماس" "%1$s / ‏%2$s" - "%1$s%2$s" + "%1$s %2$s" "برگه «%1$s»." برگه «%1$s». %2$d مورد خوانده‌نشده. diff --git a/java/com/android/contacts/common/res/values-fi/strings.xml b/java/com/android/contacts/common/res/values-fi/strings.xml index b8065b2bfbb65b0d0172537e95b5ebe763f5a53e..c12476560e1bb08657c74eb1ac4942a88c5bcd99 100644 --- a/java/com/android/contacts/common/res/values-fi/strings.xml +++ b/java/com/android/contacts/common/res/values-fi/strings.xml @@ -70,10 +70,12 @@ "Poissa" "Varattu" "Yhteystiedot" + "Kiinnostavimmat ehdotukset" "Muu" "Osoitekirja" "Työhakemisto" "Kaikki yhteystiedot" + "Ehdotukset" "Minä" "Haetaan…" "Löytyi yli %d yhteystietoa." @@ -248,7 +250,7 @@ "Kirjoita muistiinpano lähetettäväksi puhelun kanssa…" "LÄHETÄ JA SOITA" "%1$s/%2$s" - "%1$s%2$s" + "%1$s %2$s" "%1$s-välilehti." %1$s-välilehti. %2$d lukematonta kohdetta. diff --git a/java/com/android/contacts/common/res/values-fr-rCA/strings.xml b/java/com/android/contacts/common/res/values-fr-rCA/strings.xml index 82f549292209782ac12a359cfe14d765906169d5..c055408417ced28900d5fb26d16fdbb141b31989 100644 --- a/java/com/android/contacts/common/res/values-fr-rCA/strings.xml +++ b/java/com/android/contacts/common/res/values-fr-rCA/strings.xml @@ -70,10 +70,12 @@ "Absent" "Occupé(e)" "Contacts" + "Meilleures suggestions" "Autre" "Répertoire" "Annuaire professionnel" "Tous les contacts" + "Suggestions" "Moi" "Recherche en cours…" "Plus de %d contacts ont été trouvés." @@ -248,7 +250,7 @@ "Tapez une note à envoyer avec l\'appel..." "ENVOYER ET APPELER" "%1$s/%2$s" - "%1$s%2$s" + "%1$s : %2$s" "Onglet %1$s." Onglet %1$s. %2$d élément non lu. diff --git a/java/com/android/contacts/common/res/values-fr/strings.xml b/java/com/android/contacts/common/res/values-fr/strings.xml index 474d721dc1fdb4793ca1f8f2e7cd7f00d93b5a84..a47a5a283a984f0af5aedbf7d48f2eb9a2f88ad0 100644 --- a/java/com/android/contacts/common/res/values-fr/strings.xml +++ b/java/com/android/contacts/common/res/values-fr/strings.xml @@ -70,10 +70,12 @@ "Absent" "Occupé" "Contacts" + "Principaux dossiers recommandés" "Autre" "Répertoire" "Contacts professionnels" "Tous les contacts" + "Suggestions" "Moi" "Recherche..." "Plus de %d contacts ont été trouvés." @@ -248,7 +250,7 @@ "Saisissez une note pour accompagner l\'appel..." "ENVOYER ET APPELER" "%1$s/%2$s" - "%1$s%2$s" + "%1$s %2$s" "Onglet %1$s." Onglet %1$s. %2$d élément non lu. diff --git a/java/com/android/contacts/common/res/values-gl/strings.xml b/java/com/android/contacts/common/res/values-gl/strings.xml index 4a3262a2b1743101c6ff45dfcddc74e10378a27b..a90481d6c5671831f516b84947815aa86c1de6a2 100644 --- a/java/com/android/contacts/common/res/values-gl/strings.xml +++ b/java/com/android/contacts/common/res/values-gl/strings.xml @@ -70,10 +70,12 @@ "Ausente" "Ocupado" "Contactos" + "Suxestións destacadas" "Outro" "Directorio" "Directorio de traballo" "Todos os contactos" + "Suxestións" "Eu" "Buscando..." "Encontráronse máis de %d contactos." @@ -248,7 +250,7 @@ "Escribe unha nota para enviala coa chamada…" "ENVIAR E CHAMAR" "%1$s/%2$s" - "%1$s%2$s" + "%1$s %2$s" "Pestana %1$s." Pestana %1$s. %2$d elementos non lidos. diff --git a/java/com/android/contacts/common/res/values-gu/strings.xml b/java/com/android/contacts/common/res/values-gu/strings.xml index 536aceb9c583c127c97a4ad6ced1c76f338c45d9..9b1a6a8940a945dc9fced2b56bad885480bcc457 100644 --- a/java/com/android/contacts/common/res/values-gu/strings.xml +++ b/java/com/android/contacts/common/res/values-gu/strings.xml @@ -70,10 +70,12 @@ "દૂર" "વ્યસ્ત" "સંપર્કો" + "ટોચના સૂચવેલ" "અન્ય" "નિર્દેશિકા" "કાર્ય નિર્દેશિકા" "તમામ સંપર્કો" + "સૂચનો" "હું" "શોધી રહ્યું છે..." "%d કરતાં વધુ મળ્યાં." @@ -248,7 +250,7 @@ "કૉલ સાથે મોકલવા માટે એક નોંધ લખો ..." "મોકલો અને કૉલ કરો" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "%1$s ટૅબ." %1$s ટૅબ. %2$d વાંચ્યા વગરની આઇટમ. diff --git a/java/com/android/contacts/common/res/values-hi/strings.xml b/java/com/android/contacts/common/res/values-hi/strings.xml index c61e195cbe15a3b1144123fbeeb7b3367e2c794b..e33f7d29400334af9848c86c9d9af7373073eadf 100644 --- a/java/com/android/contacts/common/res/values-hi/strings.xml +++ b/java/com/android/contacts/common/res/values-hi/strings.xml @@ -70,10 +70,12 @@ "दूर" "व्यस्त" "संपर्क" + "शीर्ष सुझाव" "अन्य" "निर्देशिका" "कार्य निर्देशिका" "सभी संपर्क" + "सुझाव" "मुझे" "खोज रहा है..." "%d से अधिक मिले." @@ -248,7 +250,7 @@ "कॉल के साथ भेजने के लिए नोट लिखें ..." "भेजें और कॉल करें" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "%1$s टैब." %1$s टैब. %2$d नहीं पढ़े गए आइटम. diff --git a/java/com/android/contacts/common/res/values-hr/strings.xml b/java/com/android/contacts/common/res/values-hr/strings.xml index 66986dd38f8e3118e3a5b28a129a930e1b801f7d..d6e0b10ac6d2bb5cedf985afc5c29734c241c3f9 100644 --- a/java/com/android/contacts/common/res/values-hr/strings.xml +++ b/java/com/android/contacts/common/res/values-hr/strings.xml @@ -70,10 +70,12 @@ "Odsutan" "Zauzet" "Kontakti" + "Najbolji prijedlozi" "Drugo" "Direktorij" "Poslovni direktorij" "Svi kontakti" + "Prijedlozi" "Ja" "Pretraživanje…" "Pronađeno je više od %d." @@ -249,7 +251,7 @@ "Napišite bilješku koju ćete poslati uz poziv..." "POŠALJI I NAZOVI" "%1$s/%2$s" - "%1$s%2$s" + "%1$s %2$s" "Kartica %1$s." Kartica %1$s. %2$d nepročitana stavka. diff --git a/java/com/android/contacts/common/res/values-hu/strings.xml b/java/com/android/contacts/common/res/values-hu/strings.xml index 22bf5094ca469d5ee5cb5a2441b547e070fd3b85..44bf9c8c3bb5175dd39675eb843b19aa7f4ff211 100644 --- a/java/com/android/contacts/common/res/values-hu/strings.xml +++ b/java/com/android/contacts/common/res/values-hu/strings.xml @@ -70,10 +70,12 @@ "Nincs a gépnél" "Elfoglalt" "Címtár" + "Legjobb javaslatok" "Egyéb" "Címtár" "Munkahelyi névjegyek címtára" "Összes névjegy" + "Javaslatok" "Én" "Keresés…" "Több mint %d találat." @@ -248,7 +250,7 @@ "Írjon üzenetet, amelyet elküldhetünk a hívással együtt…" "KÜLDÉS ÉS HÍVÁS" "%2$s/%1$s" - "%1$s%2$s" + "%1$s %2$s" "%1$s lap." %1$s lap. %2$d olvasatlan elem. diff --git a/java/com/android/contacts/common/res/values-hy/strings.xml b/java/com/android/contacts/common/res/values-hy/strings.xml index 85c902347d2e5d84717f11dfada456a945ee4b4c..b1490c764b64bde8c8ee9f16c71df3dba3a89058 100644 --- a/java/com/android/contacts/common/res/values-hy/strings.xml +++ b/java/com/android/contacts/common/res/values-hy/strings.xml @@ -70,10 +70,12 @@ "Տեղում չէ" "Զբաղված" "Կոնտակտներ" + "Լավագույն առաջարկներ" "Այլ" "Գրացուցակ" "Աշխատանքային գրացուցակ" "Բոլոր կոնտակտները" + "Առաջարկներ" "Ես" "Որոնում..." "Գտնվել են %d-ից ավելի:" @@ -248,7 +250,7 @@ "Մուտքագրեք նշում՝ զանգի հետ ուղարկելու համար ..." "ՈՒՂԱՐԿԵԼ ԵՎ ԶԱՆԳԵԼ" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "%1$s ներդիր:" %1$s tab. %2$d unread items. diff --git a/java/com/android/contacts/common/res/values-in/strings.xml b/java/com/android/contacts/common/res/values-in/strings.xml index d7ee8bfb98dcc57c8fc465683ddd152afe434de7..a54821e1d3bb982819838a95c1b1e431940b5005 100644 --- a/java/com/android/contacts/common/res/values-in/strings.xml +++ b/java/com/android/contacts/common/res/values-in/strings.xml @@ -70,10 +70,12 @@ "Keluar" "Sibuk" "Kontak" + "Paling Disarankan" "Lainnya" "Direktori" "Direktori kerja" "Semua kontak" + "Saran" "Saya" "Menelusuri…" "Ditemukan lebih dari %d." @@ -248,7 +250,7 @@ "Ketik catatan untuk dikirim dengan panggilan telepon ..." "KIRIM & TELEPON" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "Tab %1$s." Tab %1$s. %2$d item belum dibaca. diff --git a/java/com/android/contacts/common/res/values-is/strings.xml b/java/com/android/contacts/common/res/values-is/strings.xml index 26c1aefd1d32c7467fef8e64fa9bb75af55e90b1..803a44bd7b2d7635e5ef2e41383318f1164b23dc 100644 --- a/java/com/android/contacts/common/res/values-is/strings.xml +++ b/java/com/android/contacts/common/res/values-is/strings.xml @@ -70,10 +70,12 @@ "Í burtu" "Upptekin(n)" "Tengiliðir" + "Helstu tillögur" "Annað" "Skrá" "Vinnuskrá" "Allir tengiliðir" + "Tillögur" "Ég" "Leitar…" "Yfir %d fundust." @@ -248,7 +250,7 @@ "Sláðu inn texta til að senda með símtalinu..." "SENDA OG HRINGJA" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "Flipinn %1$s." Flipinn %1$s. %2$d ólesið atriði. diff --git a/java/com/android/contacts/common/res/values-it/strings.xml b/java/com/android/contacts/common/res/values-it/strings.xml index 8ea56485495864ad8c63b6ede61041ba3692a997..1c4c769eb832b8f66c6e8e608d7391530028cf84 100644 --- a/java/com/android/contacts/common/res/values-it/strings.xml +++ b/java/com/android/contacts/common/res/values-it/strings.xml @@ -70,10 +70,12 @@ "Assente" "Occupato" "Contatti" + "Suggerimenti più popolari" "Altro" "Directory" "Directory di lavoro" "Tutti i contatti" + "Suggerimenti" "Io" "Ricerca..." "Più di %d trovati." @@ -248,7 +250,7 @@ "Digita una nota da inviare con la chiamata..." "INVIA E CHIAMA" "%1$s/%2$s" - "%1$s%2$s" + "%1$s %2$s" "Scheda %1$s." Scheda %1$s. %2$d elementi da leggere. diff --git a/java/com/android/contacts/common/res/values-iw/strings.xml b/java/com/android/contacts/common/res/values-iw/strings.xml index 2a6b2c1898d3e4b551f5540885a9955a2c480994..9f1fd4927e7dd14079c9be2457998f68f13005ce 100644 --- a/java/com/android/contacts/common/res/values-iw/strings.xml +++ b/java/com/android/contacts/common/res/values-iw/strings.xml @@ -70,10 +70,12 @@ "לא נמצא" "לא פנוי" "אנשי קשר" + "הצעות מובילות" "אחר" "ספריה" "ספריית עבודה" "כל אנשי הקשר" + "הצעות" "אני" "מחפש..." "נמצאו יותר מ-%d." @@ -250,7 +252,7 @@ "הקלד הערה לשליחה עם השיחה..." "שלח והתקשר" "%1$s / %2$s" - "%1$s%2$s" + "‎%1$s %2$s‎" "הכרטיסייה %1$s." הכרטיסייה %1$s. %2$d פריטים שלא נקראו. diff --git a/java/com/android/contacts/common/res/values-ja/strings.xml b/java/com/android/contacts/common/res/values-ja/strings.xml index 3271b46bbe606495c1ec17f7240610d915103acd..8dd776887c31125beaf91aff51c654488d77cfc3 100644 --- a/java/com/android/contacts/common/res/values-ja/strings.xml +++ b/java/com/android/contacts/common/res/values-ja/strings.xml @@ -70,10 +70,12 @@ "不在" "取り込み中" "連絡先" + "おすすめ" "その他" "ディレクトリ" "仕事用の連絡先リスト" "すべての連絡先" + "候補" "自分" "検索中..." "%d件以上見つかりました。" @@ -248,7 +250,7 @@ "発信時に送信するメモを入力..." "送信 / 通話" "%1$s/%2$s" - "%1$s%2$s" + "%1$s %2$s" "%1$s タブ。" %1$s タブ。%2$d 件の未読項目。 diff --git a/java/com/android/contacts/common/res/values-ka/strings.xml b/java/com/android/contacts/common/res/values-ka/strings.xml index ebbee6e33795da3f473279be04131065dc219cc3..a7f536d25d3ab7e155d653c207dd63b0011fd764 100644 --- a/java/com/android/contacts/common/res/values-ka/strings.xml +++ b/java/com/android/contacts/common/res/values-ka/strings.xml @@ -70,10 +70,12 @@ "გასული" "დაკავებული" "კონტაქტები" + "საუკეთესო შეთავაზებები" "სხვა" "კატალოგი" "სამსახურის კატალოგი" "ყველა კონტაქტი" + "შეთავაზებები" "მე" "ძიება..." "ნაპოვნია %d-ზე მეტი." @@ -248,7 +250,7 @@ "აკრიფეთ შენიშვნა ზართან ერთად გასაგზავნად ..." "გაგზავნა და დარეკვა" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "%1$s ცხრ." %1$s ცხრ. %2$d წაუკითხავი ერთეული. diff --git a/java/com/android/contacts/common/res/values-kk/strings.xml b/java/com/android/contacts/common/res/values-kk/strings.xml index 327532abcd1b4aa1e768bb947c135f29664f291c..cf2f5f156df3e4a9d4bd9035a8d290742f239cb5 100644 --- a/java/com/android/contacts/common/res/values-kk/strings.xml +++ b/java/com/android/contacts/common/res/values-kk/strings.xml @@ -70,10 +70,12 @@ "Желіден тыс" "Бос емес" "Контактілер" + "Үздік ұсыныстар" "Басқа" "Анықтама" "Жұмыс каталогы" "Барлық контактілер" + "Ұсыныстар" "Мен" "Іздеуде…" "%d көбірек табылды." @@ -248,7 +250,7 @@ "Қоңыраумен жіберу үшін ескертпе теріңіз ..." "ЖІБЕРУ ЖӘНЕ ҚОҢЫРАУ ШАЛУ" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "%1$s қойындысы." %1$s қойындысы. %2$d оқылмаған элемент. diff --git a/java/com/android/contacts/common/res/values-km/strings.xml b/java/com/android/contacts/common/res/values-km/strings.xml index 5030167922260fe24c8810121d0c1541146d7ce4..d22ebb230f543cd17e58815ced85cf2d3cb845f1 100644 --- a/java/com/android/contacts/common/res/values-km/strings.xml +++ b/java/com/android/contacts/common/res/values-km/strings.xml @@ -70,10 +70,12 @@ "ចាក​ឆ្ងាយ" "រវល់" "ទំនាក់ទំនង" + "បាន​ណែនាំ​​កម្រិត​ខ្ពស់" "ផ្សេងៗ" "ថត" "ថតកន្លែងការងារ" "ទំនាក់ទំនង​ទាំងអស់" + "ការ​ណែនាំ" "ខ្ញុំ" "កំពុង​ស្វែងរក..." "បាន​រក​ឃើញ​ច្រើន​ជាង %d ។" @@ -248,7 +250,7 @@ "វាយបញ្ចូលចំណាំដែលត្រូវផ្ញើជាមួយការហៅទូរស័ព្ទ ..." "ផ្ញើ & ហៅ" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "ផ្ទាំង %1$s។" ផ្ទាំង %1$s។ ធាតុមិនទាន់​អាន %2$d diff --git a/java/com/android/contacts/common/res/values-kn/strings.xml b/java/com/android/contacts/common/res/values-kn/strings.xml index 446e078a65f0c34d9203b8dccd02d5a20a10aaac..6b49a0bb4b13e99f77d3f5726e7d97703cd22da0 100644 --- a/java/com/android/contacts/common/res/values-kn/strings.xml +++ b/java/com/android/contacts/common/res/values-kn/strings.xml @@ -70,10 +70,12 @@ "ದೂರ" "ಕಾರ್ಯನಿರತ" "ಸಂಪರ್ಕಗಳು" + "ಉನ್ನತ ಸಲಹೆ" "ಇತರೆ" "ಡೈರೆಕ್ಟರಿ" "ಕೆಲಸದ ಡೈರೆಕ್ಟರಿ" "ಎಲ್ಲಾ ಸಂಪರ್ಕಗಳು" + "ಸಲಹೆಗಳು" "ನಾನು" "ಹುಡುಕಲಾಗುತ್ತಿದೆ…" "%d ಗಿಂತ ಹೆಚ್ಚಾಗಿ ಕಂಡುಬಂದಿದೆ." @@ -248,7 +250,7 @@ "ಕರೆ ಕಳುಹಿಸಲು ಟಿಪ್ಪಣಿಯನ್ನು ಟೈಪ್ ಮಾಡಿ ..." "ಕಳುಹಿಸು ಮತ್ತು ಕರೆಮಾಡು" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "%1$s ಟ್ಯಾಬ್." %1$s ಟ್ಯಾಬ್. %2$d ಓದದಿರುವ ಐಟಂಗಳು. diff --git a/java/com/android/contacts/common/res/values-ko/strings.xml b/java/com/android/contacts/common/res/values-ko/strings.xml index 4c2bd4f62547c39b19bd5a736fe54947b85ff798..f1865968710c2d2267080dc6da2f74d20d6bec44 100644 --- a/java/com/android/contacts/common/res/values-ko/strings.xml +++ b/java/com/android/contacts/common/res/values-ko/strings.xml @@ -70,10 +70,12 @@ "자리 비움" "다른 용무 중" "주소록" + "인기 추천" "기타" "디렉토리" "직장 디렉토리" "모든 연락처" + "추천" "나" "검색 중..." "%d개 이상 찾았습니다." @@ -248,7 +250,7 @@ "통화에 함께 전송할 메모를 입력하세요..." "보내기 및 전화 걸기" "%1$s/%2$s" - "%1$s%2$s" + "%1$s %2$s" "%1$s 탭" %1$s 탭. 읽지 않은 항목 %2$d diff --git a/java/com/android/contacts/common/res/values-ky/strings.xml b/java/com/android/contacts/common/res/values-ky/strings.xml index e5bab4550f47f9fba23aac74542c6b9266625a37..eaa7dccad9a9257d17822d45b467423a4a46e558 100644 --- a/java/com/android/contacts/common/res/values-ky/strings.xml +++ b/java/com/android/contacts/common/res/values-ky/strings.xml @@ -70,10 +70,12 @@ "Чыгып кетти" "Бош эмес" "Байланыштар" + "Эң көп сунушталгандар" "Башка" "Директорий" "Жумуш профилиндеги байланыштар китепчеси" "Бардык байланыштар" + "Сунуштар" "Мен" "Изделүүдө…" "%d ашык табылды." @@ -248,7 +250,7 @@ "Чалуу менен жөнөтүлө турган кыска жазууну териңиз …" "ЖӨНӨТҮҮ ЖАНА ЧАЛУУ" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "\"%1$s\" өтмөгү." \"%1$s\" өтмөгү. %2$d нерсе окула элек. diff --git a/java/com/android/contacts/common/res/values-lo/strings.xml b/java/com/android/contacts/common/res/values-lo/strings.xml index c649539d476b118c63f864fb2c0dd2bb2a4e4c0b..fa6d3c63aa4f22241e0bfecaa72709d8789afaa7 100644 --- a/java/com/android/contacts/common/res/values-lo/strings.xml +++ b/java/com/android/contacts/common/res/values-lo/strings.xml @@ -70,10 +70,12 @@ "ບໍ່ຢູ່" "ບໍ່ຫວ່າງ" "ລາຍຊື່ຜູ້ຕິດຕໍ່" + "ແນະນຳຫຼາຍທີ່ສຸດ" "ອື່ນໆ" "ໄດເຣັກທໍຣີ" "ໄດເຣັກທໍຣີບ່ອນເຮັດວຽກ" "ລາຍຊື່ຜູ້ຕິດຕໍ່ທັງໝົດ" + "ຄຳແນະນຳ" "ຂ້ອຍ" "ກຳລັງຊອກຫາ..." "ພົບຫຼາຍກວ່າ %d ລາຍການ." @@ -248,7 +250,7 @@ "ພິມ​ບັນ​ທຶກ ເພື່ອ​ສົ່ງ​ກັບ​ການ​ໂທ ..." "ສົ່ງ ແລະ ໂທ" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "ແຖບ %1$s." ແຖບ %1$s. %2$d ລາຍການບໍ່ທັນໄດ້ອ່ານ. diff --git a/java/com/android/contacts/common/res/values-lt/strings.xml b/java/com/android/contacts/common/res/values-lt/strings.xml index b74bd99eeb818ff87a7853008ebe3ac1e76272d7..b577260e17e166568cfff65306ad7acc3414e7cc 100644 --- a/java/com/android/contacts/common/res/values-lt/strings.xml +++ b/java/com/android/contacts/common/res/values-lt/strings.xml @@ -70,10 +70,12 @@ "Pasišalinęs" "Užsiėmęs" "Adresinė" + "Populiariausi siūlomi" "Kita" "Katalogas" "Darbo katalogas" "Visi kontaktai" + "Pasiūlymai" "Aš" "Ieškoma…" "Rasta daugiau nei %d." @@ -250,7 +252,7 @@ "Įveskite užrašą, kurį galima išsiųsti skambinant..." "SIŲSTI IR SKAMBINTI" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "Skirtukas „%1$s“." Skirtukas „%1$s“. %2$d neskaitytas elementas. diff --git a/java/com/android/contacts/common/res/values-lv/strings.xml b/java/com/android/contacts/common/res/values-lv/strings.xml index c09a27f5d822d982efeabeb5342b2d2571ad65a1..81551e220112b5da51fa8d0af34ac2f943accedf 100644 --- a/java/com/android/contacts/common/res/values-lv/strings.xml +++ b/java/com/android/contacts/common/res/values-lv/strings.xml @@ -70,10 +70,12 @@ "Prombūtnē" "Aizņemts" "Kontaktpersonas" + "Populārākie ieteikumi" "Cits" "Katalogs" "Darba katalogs" "Visas kontaktpersonas" + "Ieteikumi" "Es" "Notiek meklēšana…" "Atrastas vairāk nekā %d kontaktpersonas." @@ -249,7 +251,7 @@ "Ierakstiet piezīmi, ko nosūtīt ar zvanu..." "SŪTĪT UN ZVANĪT" "%1$s no %2$s" - "%1$s • %2$s" + "%1$s: %2$s" "Cilne “%1$s”" Cilne “%1$s”. %2$d nelasīti vienumi. diff --git a/java/com/android/contacts/common/res/values-mk/strings.xml b/java/com/android/contacts/common/res/values-mk/strings.xml index da1530f2aca021473cfe2216bf5101ae4f920c73..475ea174e5ee8eb580b49f183e72f27aa142ae46 100644 --- a/java/com/android/contacts/common/res/values-mk/strings.xml +++ b/java/com/android/contacts/common/res/values-mk/strings.xml @@ -70,10 +70,12 @@ "Отсутен" "Зафатен" "Контакти" + "Нејдобри предложени" "Друг" "Адресар" "Работен директориум" "Сите контакти" + "Предлози" "Јас" "Се пребарува..." "Повеќе од %d се пронајдени." @@ -248,7 +250,7 @@ "Напишете белешка да се испрати со повикот..." "ИСПРАТИ И ПОВИКАЈ" "%1$s/%2$s" - "%1$s%2$s" + "%1$s %2$s" "Картичка %1$s." Картичка %1$s. %2$d непрочитана ставка. diff --git a/java/com/android/contacts/common/res/values-ml/strings.xml b/java/com/android/contacts/common/res/values-ml/strings.xml index 7e927499af8f2fc2eff9eb50050c23afe01155b4..969a99b5a870742c8702f336f1e57137395aeedd 100644 --- a/java/com/android/contacts/common/res/values-ml/strings.xml +++ b/java/com/android/contacts/common/res/values-ml/strings.xml @@ -70,10 +70,12 @@ "ലഭ്യമല്ല" "തിരക്കിലാണ്" "കോണ്ടാക്റ്റ്" + "കൂടുതൽ നിർദ്ദേശിച്ചിരിക്കുന്നവ" "മറ്റുള്ളവ" "ഡയറക്‌ടറി" "ഔദ്യോഗിക ഡയറക്‌ടറി" "എല്ലാ കോൺടാക്റ്റുകളും" + "നിര്‍ദ്ദേശങ്ങള്‍" "ഞാന്‍" "തിരയുന്നു…" "%d-ൽ കൂടുതൽ കണ്ടെത്തി." @@ -248,7 +250,7 @@ "കോളിനൊപ്പം അയയ്ക്കുന്നതിന് ഒരു കുറിപ്പ് ടൈപ്പുചെയ്യുക ..." "അയയ്‌ക്കുകയും വിളിക്കുകയും ചെയ്യുക" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "%1$s ടാബ്." %1$s ടാബ്. %2$d വായിക്കാത്ത ഇനങ്ങൾ. diff --git a/java/com/android/contacts/common/res/values-mn/strings.xml b/java/com/android/contacts/common/res/values-mn/strings.xml index f0a8c9245bed9d65dd22d56130517f5cde6b136b..12fba53c759d35e8c72738160712835f2102fe31 100644 --- a/java/com/android/contacts/common/res/values-mn/strings.xml +++ b/java/com/android/contacts/common/res/values-mn/strings.xml @@ -70,10 +70,12 @@ "Холдсон" "Завгүй" "Харилцагчид" + "Санал болгосон шилдэг" "Бусад" "Директор" "Ажлын лавлагаа" "Бүх харилцагчид" + "Санал болголт" "Би" "Хайж байна..." "%d-с олон олдлоо." @@ -248,7 +250,7 @@ "Дуудлаганд илгээх тэмдэглэл бичнэ үү..." "ИЛГЭЭХ, ДУУДЛАГА" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "%1$s таб." %1$s таб. %2$d уншаагүй зүйл. diff --git a/java/com/android/contacts/common/res/values-mr/strings.xml b/java/com/android/contacts/common/res/values-mr/strings.xml index 96504c7bcd90f358da73e86d3263c19bfcfd5c26..8770f8b5321a93c3e5591aeceb22161b3cec1492 100644 --- a/java/com/android/contacts/common/res/values-mr/strings.xml +++ b/java/com/android/contacts/common/res/values-mr/strings.xml @@ -70,10 +70,12 @@ "दूर आहे" "व्यस्त" "संपर्क" + "सुचविलेले उत्कृष्ट" "इतर" "निर्देशिका" "कार्य निर्देशिका" "सर्व संपर्क" + "सूचना" "मी" "शोधत आहे..." "%d पेक्षा जास्त आढळले." @@ -248,7 +250,7 @@ "कॉलसह पाठविण्‍यासाठी एक टीप टाइप करा..." "पाठवा आणि कॉल करा" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "%1$s टॅब." %1$s टॅब. %2$d न वाचलेला आयटम. diff --git a/java/com/android/contacts/common/res/values-ms/strings.xml b/java/com/android/contacts/common/res/values-ms/strings.xml index 60d2b7accf53ec0d92023bb92a0634a7a927e44c..45c297f603d5141db2634d8487f51ff3d142fccd 100644 --- a/java/com/android/contacts/common/res/values-ms/strings.xml +++ b/java/com/android/contacts/common/res/values-ms/strings.xml @@ -70,10 +70,12 @@ "Tiada" "Sibuk" "Kenalan" + "Teratas Dicadangkan" "Lain-lain" "Direktori" "Direktori kerja" "Semua kenalan" + "Cadangan" "Saya" "Mencari..." "lebih daripada %d ditemui" @@ -248,7 +250,7 @@ "Taip nota untuk dihantar dengan panggilan…" "HANTAR & PANGGIL" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "Tab %1$s." Tab %1$s. %2$d item belum dibaca. diff --git a/java/com/android/contacts/common/res/values-my/strings.xml b/java/com/android/contacts/common/res/values-my/strings.xml index d81e8950dc8fbd921f27bb0acdafdfd3df83a1ab..6fbad16be0c5dd02e06356d7a0dcaddc75a3f300 100644 --- a/java/com/android/contacts/common/res/values-my/strings.xml +++ b/java/com/android/contacts/common/res/values-my/strings.xml @@ -70,10 +70,12 @@ "အဝေးရောက်နေပါသည်" "အလုပ်များနေသည်" "အဆက်အသွယ်များ" + "ထိပ်တန်း အကြံပြုထားပါသည်" "တစ်ခြား" "လမ်းညွှန်" "အလုပ်လမ်းညွှန်" "လိပ်စာများအားလုံး" + "အကြံပြုချက်များ" "ကျွန်ုပ်" "ရှာဖွေနေသည်…" "%d ထက်ပိုတွေ့ရှိသည်" @@ -248,7 +250,7 @@ "ခေါ်ဆိုမှုဖြင့် ပေးပို့ရန် မှတ်စုတစ်ခု ရိုက်ပါ ..." "ပေးပို့ပြီး ခေါ်ပါ" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "%1$s တဘ်။" %1$s တဘ်။ မဖတ်ရသေးသည့် အရာ %2$d ခု။ diff --git a/java/com/android/contacts/common/res/values-nb/strings.xml b/java/com/android/contacts/common/res/values-nb/strings.xml index 7085cb381c53d52502c8a47e8b34b3cf7dbe475e..8162ee7329c23df98a5f7ac2ebcc41a2b6a60a33 100644 --- a/java/com/android/contacts/common/res/values-nb/strings.xml +++ b/java/com/android/contacts/common/res/values-nb/strings.xml @@ -70,10 +70,12 @@ "Borte" "Opptatt" "Kontakter" + "Toppforslag" "Annen" "Katalog" "Jobbkatalog" "Alle kontakter" + "Forslag" "Meg" "Søker …" "Fant mer enn %d." @@ -248,7 +250,7 @@ "Skriv et notat du vil sende med anropet …" "SEND OG RING" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "%1$s-fanen." %1$s-fanen. %2$d uleste elementer. diff --git a/java/com/android/contacts/common/res/values-ne/strings.xml b/java/com/android/contacts/common/res/values-ne/strings.xml index 1f54232afbc286595e89224f7585227ab83a7398..0034852e65551643296764640fbeafe1f0ac0226 100644 --- a/java/com/android/contacts/common/res/values-ne/strings.xml +++ b/java/com/android/contacts/common/res/values-ne/strings.xml @@ -70,10 +70,12 @@ "टाढा" "व्यस्त" "सम्पर्क" + "सबैभन्दा धेरै सुझाव दिइएको" "अन्य" "निर्देशिका" "कार्यको निर्देशिका" "सबै सम्पर्कहरू" + "सुझावहरू" "म" "खोजी गर्दै..." "%dभन्दा बढी पाइयो।" @@ -248,7 +250,7 @@ "यस कलसँग पठाउन एक टिप्पणी टाइप गर्नुहोस्" "पठाउनुहोस् र कल गर्नुहोस्" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "%1$s ट्याब।" %1$s ट्याब। %2$d नपढिएका वस्तुहरू। diff --git a/java/com/android/contacts/common/res/values-nl/strings.xml b/java/com/android/contacts/common/res/values-nl/strings.xml index 9d41899f18f6c19dd4a04e08a0e943d236d6ae7a..e8f1b150b7c1b9b660d240d42e16aaa1d488b717 100644 --- a/java/com/android/contacts/common/res/values-nl/strings.xml +++ b/java/com/android/contacts/common/res/values-nl/strings.xml @@ -70,10 +70,12 @@ "Niet beschikbaar" "Bezet" "Contacten" + "Populaire suggesties" "Overig" "Directory" "Zakelijke contactenlijst" "Alle contacten" + "Suggesties" "Ik" "Zoeken..." "Meer dan %d gevonden." @@ -248,7 +250,7 @@ "Typ een notitie om te verzenden met de oproep..." "VERZENDEN EN BELLEN" "%1$s/%2$s" - "%1$s%2$s" + "%1$s %2$s" "Tabblad %1$s." Tabblad %1$s. %2$d ongelezen items. diff --git a/java/com/android/contacts/common/res/values-no/strings.xml b/java/com/android/contacts/common/res/values-no/strings.xml index 7085cb381c53d52502c8a47e8b34b3cf7dbe475e..8162ee7329c23df98a5f7ac2ebcc41a2b6a60a33 100644 --- a/java/com/android/contacts/common/res/values-no/strings.xml +++ b/java/com/android/contacts/common/res/values-no/strings.xml @@ -70,10 +70,12 @@ "Borte" "Opptatt" "Kontakter" + "Toppforslag" "Annen" "Katalog" "Jobbkatalog" "Alle kontakter" + "Forslag" "Meg" "Søker …" "Fant mer enn %d." @@ -248,7 +250,7 @@ "Skriv et notat du vil sende med anropet …" "SEND OG RING" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "%1$s-fanen." %1$s-fanen. %2$d uleste elementer. diff --git a/java/com/android/contacts/common/res/values-pa/strings.xml b/java/com/android/contacts/common/res/values-pa/strings.xml index c96510cc74990f71fbdf5d756f0b9c46c672ef89..8a1a1344101dae502e441fe594cd4018b7b47495 100644 --- a/java/com/android/contacts/common/res/values-pa/strings.xml +++ b/java/com/android/contacts/common/res/values-pa/strings.xml @@ -70,10 +70,12 @@ "ਦੂਰ" "ਰੁੱਝਾ ਹੋਇਆ ਹੈ" "ਸੰਪਰਕ" + "ਪ੍ਰਮੁੱਖ ਸੁਝਾਏ ਗਏ" "ਹੋਰ" "ਡਾਇਰੈਕਟਰੀ" "ਕੰਮ ਡਾਇਰੈਕਟਰੀ" "ਸਾਰੇ ਸੰਪਰਕ" + "ਸੁਝਾਅ" "ਮੈਂ" "ਖੋਜ ਰਿਹਾ ਹੈ..." "%d ਤੋਂ ਵੱਧ ਮਿਲੇ।" @@ -248,7 +250,7 @@ "ਕਾਲ ਦੇ ਨਾਲ ਭੇਜਣ ਲਈ ਕੋਈ ਨੋਟ ਟਾਈਪ ਕਰੋ ..." "ਭੇਜੋ ਅਤੇ ਕਾਲ ਕਰੋ" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "%1$s ਟੈਬ।" %1$s ਟੈਬ। %2$d ਅਣ-ਪੜ੍ਹੀਆਂ ਆਈਟਮਾਂ। diff --git a/java/com/android/contacts/common/res/values-pl/strings.xml b/java/com/android/contacts/common/res/values-pl/strings.xml index c4e65f556e12d13f66980c1c4fbdbe16b2bb5db6..37d5b621ea4d69492a13cb329fc62387bb95376e 100644 --- a/java/com/android/contacts/common/res/values-pl/strings.xml +++ b/java/com/android/contacts/common/res/values-pl/strings.xml @@ -70,10 +70,12 @@ "Nieobecny" "Zajęty" "Kontakty" + "Najlepsze sugestie" "Inny" "Katalog" "Katalog służbowy" "Wszystkie kontakty" + "Sugestie" "Ja" "Wyszukiwanie..." "Znaleziono więcej niż %d." @@ -250,7 +252,7 @@ "Wpisz notatkę, którą chcesz wysłać razem z połączeniem..." "WYŚLIJ I ZADZWOŃ" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "Karta %1$s." Karta %1$s. %2$d nieprzeczytane elementy. diff --git a/java/com/android/contacts/common/res/values-pt-rBR/strings.xml b/java/com/android/contacts/common/res/values-pt-rBR/strings.xml index ee2b87c682f43c47562997a8644095f4f38cfc07..5083c4ad0cdd525b17ade2cb81cc9a49eeb2d1fe 100644 --- a/java/com/android/contacts/common/res/values-pt-rBR/strings.xml +++ b/java/com/android/contacts/common/res/values-pt-rBR/strings.xml @@ -70,10 +70,12 @@ "Ausente" "Ocupado" "Contatos" + "Principais sugestões" "Outros" "Diretório" "Diretório de trabalho" "Todos os contatos" + "Sugestões" "Eu" "Pesquisando..." "Mais de %d encontrados." @@ -248,7 +250,7 @@ "Escreva uma nota para enviar com a chamada..." "ENVIAR E LIGAR" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "Guia \"%1$s\"." Guia \"%1$s\". %2$d item não lido. diff --git a/java/com/android/contacts/common/res/values-pt-rPT/strings.xml b/java/com/android/contacts/common/res/values-pt-rPT/strings.xml index 44bba149d8a552f518ff1b7c11d212245b3f872c..298b7a2634f20f51f255c2e2782c39e604e72bfb 100644 --- a/java/com/android/contacts/common/res/values-pt-rPT/strings.xml +++ b/java/com/android/contacts/common/res/values-pt-rPT/strings.xml @@ -70,10 +70,12 @@ "Ausente" "Ocupado(a)" "Contactos" + "Principais sugestões" "Outro" "Diretório" "Diretório de trabalho" "Todos os contactos" + "Sugestões" "Eu" "A pesquisar..." "Foram encontrados mais de %d." @@ -248,7 +250,7 @@ "Escrever uma nota para enviar com a chamada..." "ENVIAR E LIGAR" "%1$s/%2$s" - "%1$s%2$s" + "%1$s %2$s" "Separador %1$s." %1$s tab. %2$d unread items. diff --git a/java/com/android/contacts/common/res/values-pt/strings.xml b/java/com/android/contacts/common/res/values-pt/strings.xml index ee2b87c682f43c47562997a8644095f4f38cfc07..5083c4ad0cdd525b17ade2cb81cc9a49eeb2d1fe 100644 --- a/java/com/android/contacts/common/res/values-pt/strings.xml +++ b/java/com/android/contacts/common/res/values-pt/strings.xml @@ -70,10 +70,12 @@ "Ausente" "Ocupado" "Contatos" + "Principais sugestões" "Outros" "Diretório" "Diretório de trabalho" "Todos os contatos" + "Sugestões" "Eu" "Pesquisando..." "Mais de %d encontrados." @@ -248,7 +250,7 @@ "Escreva uma nota para enviar com a chamada..." "ENVIAR E LIGAR" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "Guia \"%1$s\"." Guia \"%1$s\". %2$d item não lido. diff --git a/java/com/android/contacts/common/res/values-ro/strings.xml b/java/com/android/contacts/common/res/values-ro/strings.xml index 358e7af933dd3a1fe1e12e31068afc94c85dae8b..2fd5e5b06dd5e82f62fa84c155e0489a063e7647 100644 --- a/java/com/android/contacts/common/res/values-ro/strings.xml +++ b/java/com/android/contacts/common/res/values-ro/strings.xml @@ -70,10 +70,12 @@ "Plecat(ă)" "Ocupat(ă)" "Agendă" + "Cele mai populare sugestii" "Altul" "Director" "Directorul de serviciu" "Toată agenda" + "Sugestii" "Eu" "Se caută…" "S-au găsit peste %d persoane de contact." @@ -249,7 +251,7 @@ "Introduceți o notă ca să o trimiteți împreună cu apelul..." "TRIMITEȚI ȘI APELAȚI" "%1$s/%2$s" - "%1$s%2$s" + "%1$s %2$s" "Fila %1$s" Fila %1$s. %2$d elemente necitite. diff --git a/java/com/android/contacts/common/res/values-ru/strings.xml b/java/com/android/contacts/common/res/values-ru/strings.xml index 3442f2c60cf082c1857a780cbc8ffcc4a4403cb1..530732edf7fce7f0077075632ea52fee81772f71 100644 --- a/java/com/android/contacts/common/res/values-ru/strings.xml +++ b/java/com/android/contacts/common/res/values-ru/strings.xml @@ -70,10 +70,12 @@ "Отсутствует" "Не беспокоить" "Контакты" + "Топ рекомендуемых" "Другое" "Каталог" "Каталог контактов из рабочего профиля" "Все контакты" + "Рекомендуемые" "Вы" "Поиск…" "Найдено контактов: более %d" @@ -250,7 +252,7 @@ "Введите текст…" "ОТПРАВИТЬ И ПОЗВОНИТЬ" "%1$s/%2$s" - "%1$s%2$s" + "%1$s %2$s" "Вкладка \"%1$s\"." Вкладка %1$s. %2$d непрочитанный элемент. diff --git a/java/com/android/contacts/common/res/values-si/strings.xml b/java/com/android/contacts/common/res/values-si/strings.xml index 72ca32d9c1c7695d0fceb18222fdc8d16ab520e2..1bd906332b19aa1e1530954bf73966c6ef1bc3f6 100644 --- a/java/com/android/contacts/common/res/values-si/strings.xml +++ b/java/com/android/contacts/common/res/values-si/strings.xml @@ -70,10 +70,12 @@ "ළඟ නැත" "කාර්යබහුල" "සම්බන්ධතා" + "ඉහළින්ම යෝජිත" "වෙනත්" "නාමාවලිය" "කාර්යාල සම්බන්ධතා නාමාවලිය" "සියලුම සම්බන්ධතා" + "යෝජනා" "මම" "සොයමින්..." "%d ට වඩා සොයාගන්නා ලදී." @@ -248,7 +250,7 @@ "ඇමතුම සමග යැවීමට සටහනක් ටයිප් කරන්න ..." "යවන්න සහ අමතන්න" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "%1$s ටැබය." %1$s ටැබය. නොකියවූ අයිතම %2$d. diff --git a/java/com/android/contacts/common/res/values-sk/strings.xml b/java/com/android/contacts/common/res/values-sk/strings.xml index b85f63f1b34228b5647b0fa47be5223b00b60543..59d666e5ee76511a7304f0ccb39f05feb2616dd9 100644 --- a/java/com/android/contacts/common/res/values-sk/strings.xml +++ b/java/com/android/contacts/common/res/values-sk/strings.xml @@ -70,10 +70,12 @@ "Som preč" "Nemám čas" "Kontakty" + "Najviac odporúčané" "Iné" "Adresár" "Pracovný adresár" "Všetky kontakty" + "Návrhy" "Ja" "Hľadá sa…" "Našlo sa viac ako %d." @@ -250,7 +252,7 @@ "Napíšte poznámku, ktorá sa odošle s hovorom..." "ODOSLAŤ A VOLAŤ" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "Karta %1$s." Karta %1$s. %2$d neprečítané položky. diff --git a/java/com/android/contacts/common/res/values-sl/strings.xml b/java/com/android/contacts/common/res/values-sl/strings.xml index f4c39dea97cf759794ad0375765c69f190f245b1..dc6e690da78fe5a0432ad257db50fcd055b0cdc5 100644 --- a/java/com/android/contacts/common/res/values-sl/strings.xml +++ b/java/com/android/contacts/common/res/values-sl/strings.xml @@ -70,10 +70,12 @@ "Odsoten" "Zaseden" "Stiki" + "Najboljši predlogi" "Drugo" "Imenik" "Delovni imenik" "Vsi stiki" + "Predlogi" "Jaz" "Iskanje ..." "Najdenih je bilo več kot toliko stikov: %d." @@ -250,7 +252,7 @@ "Vnesite zapisek, ki ga želite poslati s klicem ..." "POŠLJI IN KLIČI" "%1$s/%2$s" - "%1$s%2$s" + "%1$s: %2$s" "Zavihek »%1$s«." Zavihek »%1$s«. %2$d neprebran element. diff --git a/java/com/android/contacts/common/res/values-sq/strings.xml b/java/com/android/contacts/common/res/values-sq/strings.xml index 553c46df56c1d174df7e754bf5798b0645b9c771..64b43889c9299c17f47499b92809d470af559285 100644 --- a/java/com/android/contacts/common/res/values-sq/strings.xml +++ b/java/com/android/contacts/common/res/values-sq/strings.xml @@ -70,10 +70,12 @@ "I larguar" "I zënë" "Kontaktet" + "Sugjerimet kryesore" "Tjetër" "Direktoria" "Direktoria e punës" "Të gjitha kontaktet" + "Sugjerimet" "Unë" "Po kërkon..." "U gjetën më shumë se %d." @@ -248,7 +250,7 @@ "Shkruaj një shënim për të dërguar një telefonatë..." "DËRGO DHE TELEFONO" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "Skeda %1$s." Skeda %1$s. %2$d artikuj të palexuar. diff --git a/java/com/android/contacts/common/res/values-sr/strings.xml b/java/com/android/contacts/common/res/values-sr/strings.xml index 99997e656d7e717570f7d2e2d9f2071ada22b7a6..e139662e2d743e465f12ad71e58c321ecac2e642 100644 --- a/java/com/android/contacts/common/res/values-sr/strings.xml +++ b/java/com/android/contacts/common/res/values-sr/strings.xml @@ -70,10 +70,12 @@ "Одсутан/на" "Заузет/а" "Контакти" + "Најпопуларнији предлози" "Другo" "Директоријум" "Директоријум за Work" "Сви контакти" + "Предлози" "Ја" "Претражује се…" "Пронађено је више од %d." @@ -249,7 +251,7 @@ "Унесите белешку коју ћете послати уз позив..." "ПОШАЉИ И ПОЗОВИ" "%1$s/%2$s" - "%1$s%2$s" + "%1$s %2$s" "Картица %1$s." Картица %1$s. %2$d непрочитана ставка. diff --git a/java/com/android/contacts/common/res/values-sv/strings.xml b/java/com/android/contacts/common/res/values-sv/strings.xml index 79e56e5047fcd537050adf7b6021354b44a21f1e..cd095179b8f9115eeffa5cc25bb233b10ccab0b2 100644 --- a/java/com/android/contacts/common/res/values-sv/strings.xml +++ b/java/com/android/contacts/common/res/values-sv/strings.xml @@ -70,10 +70,12 @@ "Borta" "Upptagen" "Kontakter" + "Bästa förslagen" "Övrigt" "Katalog" "Jobbkatalog" "Alla kontakter" + "Förslag" "Jag" "Söker…" "Fler än %d hittades." @@ -248,7 +250,7 @@ "Gör en anteckning som skickas när du ringer …" "SKICKA OCH RING" "%1$s/%2$s" - "%1$s%2$s" + "%1$s %2$s" "Fliken %1$s." Fliken %1$s. %2$d olästa poster. diff --git a/java/com/android/contacts/common/res/values-sw/strings.xml b/java/com/android/contacts/common/res/values-sw/strings.xml index 4d30271f309e8cde8da39d0b72426e2e8009b174..5c41d87804fe49e1960e94ec74e267c659882ed5 100644 --- a/java/com/android/contacts/common/res/values-sw/strings.xml +++ b/java/com/android/contacts/common/res/values-sw/strings.xml @@ -70,10 +70,12 @@ "Mbali" "Ana shughuli" "Anwani" + "Mapendekezo Maarufu" "Nyingineyo" "Saraka" "Anwani za kazi" "Anwani zote" + "Mapendekezo" "Mimi" "Inatafuta…" "Zaidi ya %d zimepatikana." @@ -248,7 +250,7 @@ "Andika dokezo litakaloambatana na simu utakayopiga ..." "TUMA na UPIGE SIMU" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "Kichupo cha %1$s." Kichupo cha %1$s. Vipengee %2$d havijasomwa. diff --git a/java/com/android/contacts/common/res/values-ta/strings.xml b/java/com/android/contacts/common/res/values-ta/strings.xml index e041a999dc0e18f57ae8a451dc3a428541da214f..df7ee067cfaea702a902d8df4b801c56c52cbb4c 100644 --- a/java/com/android/contacts/common/res/values-ta/strings.xml +++ b/java/com/android/contacts/common/res/values-ta/strings.xml @@ -70,10 +70,12 @@ "வெளியே" "பணிமிகுதி" "தொடர்புகள்" + "அதிகம் பரிந்துரைத்தவை" "மற்றவை" "கோப்பகம்" "பணிக் கோப்பகம்" "எல்லா தொடர்புகளும்" + "பரிந்துரைகள்" "எனக்கு" "தேடுகிறது..." "%d க்கும் மேற்பட்டவை கண்டறியப்பட்டன." @@ -248,7 +250,7 @@ "அழைப்புடன் சேர்த்து அனுப்ப, குறிப்பை உள்ளிடவும்..." "அனுப்பி அழை" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "%1$s தாவல்." %1$s தாவல். படிக்காதவை (%2$d). diff --git a/java/com/android/contacts/common/res/values-te/strings.xml b/java/com/android/contacts/common/res/values-te/strings.xml index 6dd0e21433228385a25d398add84ec13e09621fd..c97cded6ae60af9d4dad6ab4a21558fa04c3f246 100644 --- a/java/com/android/contacts/common/res/values-te/strings.xml +++ b/java/com/android/contacts/common/res/values-te/strings.xml @@ -70,10 +70,12 @@ "దూరంగా ఉన్నారు" "బిజీగా ఉన్నారు" "పరిచయాలు" + "ఉత్తమ సూచనలు" "ఇతరం" "డైరెక్టరీ" "కార్యాలయ డైరెక్టరీ" "అన్ని పరిచయాలు" + "సూచనలు" "నేను" "శోధిస్తోంది..." "%d కంటే ఎక్కువ కనుగొనబడ్డాయి." @@ -248,7 +250,7 @@ "కాల్‌తో పాటు పంపడానికి గమనికను టైప్ చేయండి ..." "పంపు & కాల్ చేయి" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "%1$s ట్యాబ్." %1$s ట్యాబ్. %2$d చదవని అంశాలు. diff --git a/java/com/android/contacts/common/res/values-th/strings.xml b/java/com/android/contacts/common/res/values-th/strings.xml index b979e74249d71510cc746dc1e5e00043eaef1341..aff4a9c5d856783e6164f1eedc035ca083923370 100644 --- a/java/com/android/contacts/common/res/values-th/strings.xml +++ b/java/com/android/contacts/common/res/values-th/strings.xml @@ -70,10 +70,12 @@ "ไม่อยู่" "ไม่ว่าง" "รายชื่อติดต่อ" + "รายการแนะนำยอดนิยม" "อื่นๆ" "ไดเรกทอรี" "ไดเรกทอรีที่ทำงาน" "รายชื่อติดต่อทั้งหมด" + "รายการแนะนำ" "ฉัน" "กำลังค้นหา…" "พบมากกว่า %d รายการ" @@ -248,7 +250,7 @@ "พิมพ์โน้ตเพื่อส่งพร้อมการโทร ..." "ส่งและโทร" "%1$s/%2$s" - "%1$s%2$s" + "%1$s %2$s" "แท็บ %1$s" แท็บ %1$s ยังไม่อ่าน %2$d รายการ diff --git a/java/com/android/contacts/common/res/values-tl/strings.xml b/java/com/android/contacts/common/res/values-tl/strings.xml index 62caef820397cae0f0e7dc51e9ddd81c394a627c..edf2cafeba2f8c74350909da9659f6abd325856b 100644 --- a/java/com/android/contacts/common/res/values-tl/strings.xml +++ b/java/com/android/contacts/common/res/values-tl/strings.xml @@ -70,10 +70,12 @@ "Wala" "Abala" "Mga Contact" + "Mga Madalas Imungkahi" "Iba pa" "Direktoryo" "Directory sa trabaho" "Lahat ng mga contact" + "Mga Mungkahi" "Ako" "Naghahanap…" "Higit sa %d ang nakita." @@ -248,7 +250,7 @@ "Mag-type ng isang tala na ipadadala kasama ng tawag ..." "IPADALA AT TAWAGAN" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "Tab ng %1$s." Tab ng %1$s. %2$d hindi pa nababasang item. diff --git a/java/com/android/contacts/common/res/values-tr/strings.xml b/java/com/android/contacts/common/res/values-tr/strings.xml index ce3c109d21cf358042c397e377b7c1f1ef04e80d..9ec983f02baf24a4a23a9751ce6030278bc963bd 100644 --- a/java/com/android/contacts/common/res/values-tr/strings.xml +++ b/java/com/android/contacts/common/res/values-tr/strings.xml @@ -70,10 +70,12 @@ "Dışarıda" "Meşgul" "Kişiler" + "En Çok Önerilenler" "Diğer" "Dizin" "İş dizini" "Tüm kişiler" + "Öneriler" "Ben" "Aranıyor..." "%d kişiden fazla bulundu." @@ -248,7 +250,7 @@ "Çağrıyla göndermek için bir not yazın..." "GÖNDER VE ARA" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "%1$s sekmesi." %1$s sekmesi. %2$d okunmamış öğe. diff --git a/java/com/android/contacts/common/res/values-uk/strings.xml b/java/com/android/contacts/common/res/values-uk/strings.xml index f6d1e47310dec43a1fbe6cb19b29dddcd6a55cf6..6d5d4eb0a64ff9c791ffc9c7d8eaa1ed2993ac9e 100644 --- a/java/com/android/contacts/common/res/values-uk/strings.xml +++ b/java/com/android/contacts/common/res/values-uk/strings.xml @@ -70,10 +70,12 @@ "Не на місці" "Не турбувати" "Контакти" + "Найкращі пропозиції" "Інші" "Каталог" "Робочі контакти" "Усі контакти" + "Пропозиції" "Я" "Пошук…" "Знайдено понад %d." @@ -250,7 +252,7 @@ "Введіть нотатку, яку хочете надіслати під час дзвінка…" "ЗАТЕЛЕФОНУВАТИ Й НАДІСЛАТИ" "%1$s з %2$s" - "%1$s%2$s" + "%1$s %2$s" "Вкладка \"%1$s\"." Вкладка \"%1$s\". %2$d непрочитаний елемент. diff --git a/java/com/android/contacts/common/res/values-ur/strings.xml b/java/com/android/contacts/common/res/values-ur/strings.xml index b34c78d952f67510cdcf9a43df872097ba569607..79cf8335df12bcbc3076bfd5b90a8e6bccf3dbd7 100644 --- a/java/com/android/contacts/common/res/values-ur/strings.xml +++ b/java/com/android/contacts/common/res/values-ur/strings.xml @@ -70,10 +70,12 @@ "دور" "مصروف" "رابطے" + "سرفہرست تجویز کردہ" "دیگر" "ڈائریکٹری" "دفتری ڈائرکٹری" "سبھی رابطے" + "تجاویز" "میں" "تلاش کر رہا ہے…" "%d سے زیادہ ملے۔" @@ -248,7 +250,7 @@ "کال کے ساتھ بھیجنے کیلئے ایک نوٹ ٹائپ کریں…" "بھیجیں اور کال کریں" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "%1$s ٹیب۔" %1$s ٹیب۔ %2$d بغیر پڑھی ہوئی آئٹمز۔ diff --git a/java/com/android/contacts/common/res/values-uz/strings.xml b/java/com/android/contacts/common/res/values-uz/strings.xml index 44bfd99997a7b74a63df559001ad44f8d1570375..489846fcbaf172126387a1b67bec31a897302ee8 100644 --- a/java/com/android/contacts/common/res/values-uz/strings.xml +++ b/java/com/android/contacts/common/res/values-uz/strings.xml @@ -70,10 +70,12 @@ "Tashqarida" "Band" "Kontaktlar" + "Eng faol" "Boshqa" "Direktoriya" "Ishchi katalogi" "Barcha kontaktlar" + "Takliflar" "Men" "Qidirilmoqda…" "%ddan ko‘proq topildi." @@ -248,7 +250,7 @@ "Qo‘ng‘iroqqa qo‘shib yuborish uchun izoh yozing ..." "YUBORISH va QO‘NG‘IROQ QILISH" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "%1$s ichki oynasi." %1$s ichki oynasi. %2$d ta o‘qilmagan narsa. diff --git a/java/com/android/contacts/common/res/values-vi/strings.xml b/java/com/android/contacts/common/res/values-vi/strings.xml index dadb78a7df2f1986a77d239a6b86be51bb228642..65a1c65a473c0a50e451fdf47eda8a7e26876e9f 100644 --- a/java/com/android/contacts/common/res/values-vi/strings.xml +++ b/java/com/android/contacts/common/res/values-vi/strings.xml @@ -70,10 +70,12 @@ "Đã ra ngoài" "Bận" "Danh bạ" + "Đề xuất hàng đầu" "Khác" "Thư mục" "Thư mục công việc" "Tất cả liên hệ" + "Đề xuất" "Tôi" "Đang tìm kiếm…" "Đã tìm thấy hơn %d người liên hệ." @@ -248,7 +250,7 @@ "Nhập ghi chú để gửi kèm cuộc gọi..." "GỬI và GỌI" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "Tab %1$s." Tab %1$s. %2$d mục chưa đọc. diff --git a/java/com/android/contacts/common/res/values-zh-rCN/strings.xml b/java/com/android/contacts/common/res/values-zh-rCN/strings.xml index 161638e66e7d2f18d987ae081d1e620d321c95c5..ee4451378b2cf6707fa10235f63904d4f99ebf63 100644 --- a/java/com/android/contacts/common/res/values-zh-rCN/strings.xml +++ b/java/com/android/contacts/common/res/values-zh-rCN/strings.xml @@ -70,10 +70,12 @@ "离开" "忙碌" "通讯录" + "常用联系人推荐" "其他" "目录" "工作目录" "所有联系人" + "建议" "我" "正在搜索..." "找到超过 %d 位联系人。" @@ -248,7 +250,7 @@ "输入要在拨打电话时发送的备注…" "发送并拨打电话" "%1$s / %2$s" - "%1$s%2$s" + "%1$s%2$s" "%1$s标签。" %1$s标签。%2$d 项未读内容。 diff --git a/java/com/android/contacts/common/res/values-zh-rHK/strings.xml b/java/com/android/contacts/common/res/values-zh-rHK/strings.xml index 9952ab626ef415a5c5a58ee96b5b9ee94c166ea6..122d0febc395e1efacba87670ef62c39e690e604 100644 --- a/java/com/android/contacts/common/res/values-zh-rHK/strings.xml +++ b/java/com/android/contacts/common/res/values-zh-rHK/strings.xml @@ -70,10 +70,12 @@ "離開" "忙碌" "通訊錄" + "熱門建議" "其他" "名錄" "工作目錄" "所有聯絡人" + "建議" "我" "正在搜尋..." "找到超過 %d 位聯絡人。" @@ -248,7 +250,7 @@ "撥號時可以書寫和傳送筆記…" "傳送和撥號" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "「%1$s」標籤。" %1$s」標籤 (%2$d 個未讀取項目)。 diff --git a/java/com/android/contacts/common/res/values-zh-rTW/strings.xml b/java/com/android/contacts/common/res/values-zh-rTW/strings.xml index e5ad61fac5141bc3c9cab910ddc13dcaeddaa00b..64b6105cf5375da292309ff805310b555d89c57c 100644 --- a/java/com/android/contacts/common/res/values-zh-rTW/strings.xml +++ b/java/com/android/contacts/common/res/values-zh-rTW/strings.xml @@ -70,10 +70,12 @@ "離開" "忙碌" "聯絡人" + "常用聯絡人建議" "其他" "目錄" "Work 聯絡人目錄" "所有聯絡人" + "建議" "我" "搜尋中…" "找到 %d 位以上的聯絡人。" @@ -248,7 +250,7 @@ "輸入可在撥號時傳送的備註..." "傳送並撥打" "%1$s/%2$s" - "%1$s%2$s" + "%1$s %2$s" "%1$s分頁。" %1$s分頁。%2$d 個未讀項目。 diff --git a/java/com/android/contacts/common/res/values-zu/strings.xml b/java/com/android/contacts/common/res/values-zu/strings.xml index adca1399c831d78804b84094c6570d879f26c1af..e78a6b392e7f6dee44b5235708f594054830ec81 100644 --- a/java/com/android/contacts/common/res/values-zu/strings.xml +++ b/java/com/android/contacts/common/res/values-zu/strings.xml @@ -70,10 +70,12 @@ "Ngiphumile" "Ngimatasa" "Othi tana nabo" + "Okuphezulu okuphakanyisiwe" "Okunye" "Uhla lwemibhalo" "Uhla lwemibhalo lomsebenzi" "Bonke othintana nabo" + "Iziphakamiso" "Mina" "Iyasesha..." "Abangaphezu kuka-%d abatholakele." @@ -248,7 +250,7 @@ "Thayipha inothi ukuthumela nekholi ..." "THUMELA FUTHI YENZA IKHOLI" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "%1$s ithebhu." %1$s ithebhu. %2$d izinto ezingafundiwe. diff --git a/java/com/android/contacts/common/res/values/dimens.xml b/java/com/android/contacts/common/res/values/dimens.xml index 642eb31a4ddb63843fc85807bb2763f05787ee02..26f095f394be7b2faebfc243e022a6da639a214c 100644 --- a/java/com/android/contacts/common/res/values/dimens.xml +++ b/java/com/android/contacts/common/res/values/dimens.xml @@ -107,7 +107,7 @@ 2dp 14sp - 2dp + 0dp 16dp 2dp 0dp diff --git a/java/com/android/contacts/common/res/values/ids.xml b/java/com/android/contacts/common/res/values/ids.xml index 871f5a63624a2ffcf752310f72269655800d4a0c..65969c43f9cd3215d59aef199ecc7c0623933159 100644 --- a/java/com/android/contacts/common/res/values/ids.xml +++ b/java/com/android/contacts/common/res/values/ids.xml @@ -27,4 +27,5 @@ + diff --git a/java/com/android/contacts/common/res/values/strings.xml b/java/com/android/contacts/common/res/values/strings.xml index 9ac9fef28adb47c4f6925968f27eea55231531d2..85866f7367b74839214278e9eef440f3a5614e79 100644 --- a/java/com/android/contacts/common/res/values/strings.xml +++ b/java/com/android/contacts/common/res/values/strings.xml @@ -143,6 +143,9 @@ Contacts + + Top Suggested + Other @@ -155,6 +158,9 @@ All contacts + + Suggestions + Me @@ -744,9 +750,9 @@ compared to the character limit. Example: 2 / 64 --> %1$s / %2$s - - %1$s%2$s + + %1$s %2$s %1$s tab. diff --git a/java/com/android/contacts/common/res/values/styles.xml b/java/com/android/contacts/common/res/values/styles.xml index 07d4a022577e40f6b66b41d4610b5e741340f665..bb19afe82c8cd7d87116f54dcd0f6a648929862a 100644 --- a/java/com/android/contacts/common/res/values/styles.xml +++ b/java/com/android/contacts/common/res/values/styles.xml @@ -43,7 +43,6 @@ background and text color. See also android:style/Widget.Holo.TextView.ListSepar wrap_content @dimen/list_section_divider_min_height - @drawable/list_section_divider_holo_custom @style/DirectoryHeaderStyle center_vertical 8dip diff --git a/java/com/android/contacts/common/util/AccountFilterUtil.java b/java/com/android/contacts/common/util/AccountFilterUtil.java index 18743c65ea97f5ec3ace9fa7dc65295fbf53b99e..25f937c5e9ec82c2fea3c55c309b6101ebbe7006 100644 --- a/java/com/android/contacts/common/util/AccountFilterUtil.java +++ b/java/com/android/contacts/common/util/AccountFilterUtil.java @@ -16,35 +16,15 @@ package com.android.contacts.common.util; -import android.app.Activity; import android.content.Context; -import android.content.Intent; -import android.util.Log; import android.view.View; import android.widget.TextView; import com.android.contacts.common.R; import com.android.contacts.common.list.ContactListFilter; -import com.android.contacts.common.list.ContactListFilterController; /** Utility class for account filter manipulation. */ public class AccountFilterUtil { - public static final String EXTRA_CONTACT_LIST_FILTER = "contactListFilter"; - private static final String TAG = AccountFilterUtil.class.getSimpleName(); - - /** - * Find TextView with the id "account_filter_header" and set correct text for the account filter - * header. - * - * @param filterContainer View containing TextView with id "account_filter_header" - * @return true when header text is set in the call. You may use this for conditionally showing or - * hiding this entire view. - */ - public static boolean updateAccountFilterTitleForPeople( - View filterContainer, ContactListFilter filter, boolean showTitleForAllAccounts) { - return updateAccountFilterTitle(filterContainer, filter, showTitleForAllAccounts, false); - } - /** * Similar to {@link #updateAccountFilterTitleForPeople(View, ContactListFilter, boolean, * boolean)}, but for Phone UI. @@ -78,8 +58,6 @@ public class AccountFilterUtil { } else if (filter.filterType == ContactListFilter.FILTER_TYPE_CUSTOM) { headerTextView.setText(R.string.listCustomView); textWasSet = true; - } else { - Log.w(TAG, "Filter type \"" + filter.filterType + "\" isn't expected."); } } else { if (filter.filterType == ContactListFilter.FILTER_TYPE_ALL_ACCOUNTS) { @@ -97,29 +75,9 @@ public class AccountFilterUtil { } else if (filter.filterType == ContactListFilter.FILTER_TYPE_SINGLE_CONTACT) { headerTextView.setText(R.string.listSingleContact); textWasSet = true; - } else { - Log.w(TAG, "Filter type \"" + filter.filterType + "\" isn't expected."); } } - } else { - Log.w(TAG, "Filter is null."); } return textWasSet; } - - /** This will update filter via a given ContactListFilterController. */ - public static void handleAccountFilterResult( - ContactListFilterController filterController, int resultCode, Intent data) { - if (resultCode == Activity.RESULT_OK) { - final ContactListFilter filter = data.getParcelableExtra(EXTRA_CONTACT_LIST_FILTER); - if (filter == null) { - return; - } - if (filter.filterType == ContactListFilter.FILTER_TYPE_CUSTOM) { - filterController.selectCustomFilter(); - } else { - filterController.setContactListFilter(filter, true); - } - } - } } diff --git a/java/com/android/contacts/common/util/BitmapUtil.java b/java/com/android/contacts/common/util/BitmapUtil.java index 20f916a3fb1d6c2e3d7083afefe79469328fc441..51f65f2807eda89212d66b57f746f8dc1b85a083 100644 --- a/java/com/android/contacts/common/util/BitmapUtil.java +++ b/java/com/android/contacts/common/util/BitmapUtil.java @@ -24,8 +24,6 @@ import android.graphics.PorterDuff.Mode; import android.graphics.PorterDuffXfermode; import android.graphics.Rect; import android.graphics.RectF; -import android.graphics.drawable.BitmapDrawable; -import android.graphics.drawable.Drawable; /** Provides static functions to decode bitmaps at the optimal size */ public class BitmapUtil { @@ -90,30 +88,6 @@ public class BitmapUtil { return BitmapFactory.decodeByteArray(bytes, 0, bytes.length, options); } - /** - * Retrieves a copy of the specified drawable resource, rotated by a specified angle. - * - * @param resources The current resources. - * @param resourceId The resource ID of the drawable to rotate. - * @param angle The angle of rotation. - * @return Rotated drawable. - */ - public static Drawable getRotatedDrawable( - android.content.res.Resources resources, int resourceId, float angle) { - - // Get the original drawable and make a copy which will be rotated. - Bitmap original = BitmapFactory.decodeResource(resources, resourceId); - Bitmap rotated = - Bitmap.createBitmap(original.getWidth(), original.getHeight(), Bitmap.Config.ARGB_8888); - - // Perform the rotation. - Canvas tempCanvas = new Canvas(rotated); - tempCanvas.rotate(angle, original.getWidth() / 2, original.getHeight() / 2); - tempCanvas.drawBitmap(original, 0, 0, null); - - return new BitmapDrawable(resources, rotated); - } - /** * Given an input bitmap, scales it to the given width/height and makes it round. * diff --git a/java/com/android/contacts/common/util/ContactDisplayUtils.java b/java/com/android/contacts/common/util/ContactDisplayUtils.java index 1586784db9eb6659b66c3a734e7a392f8a41e6ed..ff22f2880a29e9119939d3ff8d9ac6e69b3a1b5f 100644 --- a/java/com/android/contacts/common/util/ContactDisplayUtils.java +++ b/java/com/android/contacts/common/util/ContactDisplayUtils.java @@ -16,21 +16,20 @@ package com.android.contacts.common.util; -import static android.provider.ContactsContract.CommonDataKinds.Phone; - import android.content.Context; import android.content.res.Resources; +import android.provider.ContactsContract.CommonDataKinds.Phone; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.text.Spannable; import android.text.SpannableString; import android.text.TextUtils; import android.text.style.TtsSpan; -import android.util.Log; import android.util.Patterns; import com.android.contacts.common.R; import com.android.contacts.common.compat.PhoneNumberUtilsCompat; import com.android.contacts.common.preference.ContactsPreferences; +import com.android.dialer.common.LogUtil; import java.util.Objects; /** Methods for handling various contact data labels. */ @@ -38,7 +37,6 @@ public class ContactDisplayUtils { public static final int INTERACTION_CALL = 1; public static final int INTERACTION_SMS = 2; - private static final String TAG = ContactDisplayUtils.class.getSimpleName(); /** * Checks if the given data type is a custom type. @@ -74,9 +72,9 @@ public class ContactDisplayUtils { } else { resId = getPhoneLabelResourceId(type); if (interactionType != INTERACTION_CALL) { - Log.e( - TAG, - "Un-recognized interaction type: " + LogUtil.e( + "ContactDisplayUtils.getLabelForCallOrSms", + "un-recognized interaction type: " + interactionType + ". Defaulting to ContactDisplayUtils.INTERACTION_CALL."); } diff --git a/java/com/android/contacts/common/util/DateUtils.java b/java/com/android/contacts/common/util/DateUtils.java index 1935d727a2d451bbe37bb6b123a235cb3f660cc0..09d52bce8cd24c71d65e00d771dfcaf20786f419 100644 --- a/java/com/android/contacts/common/util/DateUtils.java +++ b/java/com/android/contacts/common/util/DateUtils.java @@ -16,252 +16,11 @@ package com.android.contacts.common.util; -import android.content.Context; -import android.text.format.DateFormat; import android.text.format.Time; -import java.text.ParsePosition; -import java.text.SimpleDateFormat; -import java.util.Calendar; -import java.util.Date; -import java.util.GregorianCalendar; -import java.util.Locale; -import java.util.TimeZone; /** Utility methods for processing dates. */ public class DateUtils { - public static final TimeZone UTC_TIMEZONE = TimeZone.getTimeZone("UTC"); - - /** - * When parsing a date without a year, the system assumes 1970, which wasn't a leap-year. Let's - * add a one-off hack for that day of the year - */ - public static final String NO_YEAR_DATE_FEB29TH = "--02-29"; - - // Variations of ISO 8601 date format. Do not change the order - it does affect the - // result in ambiguous cases. - private static final SimpleDateFormat[] DATE_FORMATS = { - CommonDateUtils.FULL_DATE_FORMAT, - CommonDateUtils.DATE_AND_TIME_FORMAT, - new SimpleDateFormat("yyyy-MM-dd'T'HH:mm'Z'", Locale.US), - new SimpleDateFormat("yyyyMMdd", Locale.US), - new SimpleDateFormat("yyyyMMdd'T'HHmmssSSS'Z'", Locale.US), - new SimpleDateFormat("yyyyMMdd'T'HHmmss'Z'", Locale.US), - new SimpleDateFormat("yyyyMMdd'T'HHmm'Z'", Locale.US), - }; - - static { - for (SimpleDateFormat format : DATE_FORMATS) { - format.setLenient(true); - format.setTimeZone(UTC_TIMEZONE); - } - CommonDateUtils.NO_YEAR_DATE_FORMAT.setTimeZone(UTC_TIMEZONE); - } - - /** - * Parses the supplied string to see if it looks like a date. - * - * @param string The string representation of the provided date - * @param mustContainYear If true, the string is parsed as a date containing a year. If false, the - * string is parsed into a valid date even if the year field is missing. - * @return A Calendar object corresponding to the date if the string is successfully parsed. If - * not, null is returned. - */ - public static Calendar parseDate(String string, boolean mustContainYear) { - ParsePosition parsePosition = new ParsePosition(0); - Date date; - if (!mustContainYear) { - final boolean noYearParsed; - // Unfortunately, we can't parse Feb 29th correctly, so let's handle this day seperately - if (NO_YEAR_DATE_FEB29TH.equals(string)) { - return getUtcDate(0, Calendar.FEBRUARY, 29); - } else { - synchronized (CommonDateUtils.NO_YEAR_DATE_FORMAT) { - date = CommonDateUtils.NO_YEAR_DATE_FORMAT.parse(string, parsePosition); - } - noYearParsed = parsePosition.getIndex() == string.length(); - } - - if (noYearParsed) { - return getUtcDate(date, true); - } - } - for (int i = 0; i < DATE_FORMATS.length; i++) { - SimpleDateFormat f = DATE_FORMATS[i]; - synchronized (f) { - parsePosition.setIndex(0); - date = f.parse(string, parsePosition); - if (parsePosition.getIndex() == string.length()) { - return getUtcDate(date, false); - } - } - } - return null; - } - - private static final Calendar getUtcDate(Date date, boolean noYear) { - final Calendar calendar = Calendar.getInstance(UTC_TIMEZONE, Locale.US); - calendar.setTime(date); - if (noYear) { - calendar.set(Calendar.YEAR, 0); - } - return calendar; - } - - private static final Calendar getUtcDate(int year, int month, int dayOfMonth) { - final Calendar calendar = Calendar.getInstance(UTC_TIMEZONE, Locale.US); - calendar.clear(); - calendar.set(Calendar.YEAR, year); - calendar.set(Calendar.MONTH, month); - calendar.set(Calendar.DAY_OF_MONTH, dayOfMonth); - return calendar; - } - - public static boolean isYearSet(Calendar cal) { - // use the Calendar.YEAR field to track whether or not the year is set instead of - // Calendar.isSet() because doing Calendar.get() causes Calendar.isSet() to become - // true irregardless of what the previous value was - return cal.get(Calendar.YEAR) > 1; - } - - /** - * Same as {@link #formatDate(Context context, String string, boolean longForm)}, with longForm - * set to {@code true} by default. - * - * @param context Valid context - * @param string String representation of a date to parse - * @return Returns the same date in a cleaned up format. If the supplied string does not look like - * a date, return it unchanged. - */ - public static String formatDate(Context context, String string) { - return formatDate(context, string, true); - } - - /** - * Parses the supplied string to see if it looks like a date. - * - * @param context Valid context - * @param string String representation of a date to parse - * @param longForm If true, return the date formatted into its long string representation. If - * false, return the date formatted using its short form representation (i.e. 12/11/2012) - * @return Returns the same date in a cleaned up format. If the supplied string does not look like - * a date, return it unchanged. - */ - public static String formatDate(Context context, String string, boolean longForm) { - if (string == null) { - return null; - } - - string = string.trim(); - if (string.length() == 0) { - return string; - } - final Calendar cal = parseDate(string, false); - - // we weren't able to parse the string successfully so just return it unchanged - if (cal == null) { - return string; - } - - final boolean isYearSet = isYearSet(cal); - final java.text.DateFormat outFormat; - if (!isYearSet) { - outFormat = getLocalizedDateFormatWithoutYear(context); - } else { - outFormat = - longForm ? DateFormat.getLongDateFormat(context) : DateFormat.getDateFormat(context); - } - synchronized (outFormat) { - outFormat.setTimeZone(UTC_TIMEZONE); - return outFormat.format(cal.getTime()); - } - } - - public static boolean isMonthBeforeDay(Context context) { - char[] dateFormatOrder = DateFormat.getDateFormatOrder(context); - for (int i = 0; i < dateFormatOrder.length; i++) { - if (dateFormatOrder[i] == 'd') { - return false; - } - if (dateFormatOrder[i] == 'M') { - return true; - } - } - return false; - } - - /** - * Returns a SimpleDateFormat object without the year fields by using a regular expression to - * eliminate the year in the string pattern. In the rare occurence that the resulting pattern - * cannot be reconverted into a SimpleDateFormat, it uses the provided context to determine - * whether the month field should be displayed before the day field, and returns either "MMMM dd" - * or "dd MMMM" converted into a SimpleDateFormat. - */ - public static java.text.DateFormat getLocalizedDateFormatWithoutYear(Context context) { - final String pattern = - ((SimpleDateFormat) SimpleDateFormat.getDateInstance(java.text.DateFormat.LONG)) - .toPattern(); - // Determine the correct regex pattern for year. - // Special case handling for Spanish locale by checking for "de" - final String yearPattern = - pattern.contains("de") ? "[^Mm]*[Yy]+[^Mm]*" : "[^DdMm]*[Yy]+[^DdMm]*"; - try { - // Eliminate the substring in pattern that matches the format for that of year - return new SimpleDateFormat(pattern.replaceAll(yearPattern, "")); - } catch (IllegalArgumentException e) { - return new SimpleDateFormat(DateUtils.isMonthBeforeDay(context) ? "MMMM dd" : "dd MMMM"); - } - } - - /** - * Given a calendar (possibly containing only a day of the year), returns the earliest possible - * anniversary of the date that is equal to or after the current point in time if the date does - * not contain a year, or the date converted to the local time zone (if the date contains a year. - * - * @param target The date we wish to convert(in the UTC time zone). - * @return If date does not contain a year (year < 1900), returns the next earliest anniversary - * that is after the current point in time (in the local time zone). Otherwise, returns the - * adjusted Date in the local time zone. - */ - public static Date getNextAnnualDate(Calendar target) { - final Calendar today = Calendar.getInstance(); - today.setTime(new Date()); - - // Round the current time to the exact start of today so that when we compare - // today against the target date, both dates are set to exactly 0000H. - today.set(Calendar.HOUR_OF_DAY, 0); - today.set(Calendar.MINUTE, 0); - today.set(Calendar.SECOND, 0); - today.set(Calendar.MILLISECOND, 0); - - final boolean isYearSet = isYearSet(target); - final int targetYear = target.get(Calendar.YEAR); - final int targetMonth = target.get(Calendar.MONTH); - final int targetDay = target.get(Calendar.DAY_OF_MONTH); - final boolean isFeb29 = (targetMonth == Calendar.FEBRUARY && targetDay == 29); - final GregorianCalendar anniversary = new GregorianCalendar(); - // Convert from the UTC date to the local date. Set the year to today's year if the - // there is no provided year (targetYear < 1900) - anniversary.set(!isYearSet ? today.get(Calendar.YEAR) : targetYear, targetMonth, targetDay); - // If the anniversary's date is before the start of today and there is no year set, - // increment the year by 1 so that the returned date is always equal to or greater than - // today. If the day is a leap year, keep going until we get the next leap year anniversary - // Otherwise if there is already a year set, simply return the exact date. - if (!isYearSet) { - int anniversaryYear = today.get(Calendar.YEAR); - if (anniversary.before(today) || (isFeb29 && !anniversary.isLeapYear(anniversaryYear))) { - // If the target date is not Feb 29, then set the anniversary to the next year. - // Otherwise, keep going until we find the next leap year (this is not guaranteed - // to be in 4 years time). - do { - anniversaryYear += 1; - } while (isFeb29 && !anniversary.isLeapYear(anniversaryYear)); - anniversary.set(anniversaryYear, targetMonth, targetDay); - } - } - return anniversary.getTime(); - } - /** * Determine the difference, in days between two dates. Uses similar logic as the {@link * android.text.format.DateUtils.getRelativeTimeSpanString} method. diff --git a/java/com/android/contacts/common/util/MaterialColorMapUtils.java b/java/com/android/contacts/common/util/MaterialColorMapUtils.java index a2d9847eccaf74a158fd656d83acac13c07b0031..bd32faa513a6796f8db5fb897d5ddb40cd175c70 100644 --- a/java/com/android/contacts/common/util/MaterialColorMapUtils.java +++ b/java/com/android/contacts/common/util/MaterialColorMapUtils.java @@ -21,7 +21,6 @@ import android.content.res.TypedArray; import android.os.Parcel; import android.os.Parcelable; import android.os.Trace; -import com.android.contacts.common.R; public class MaterialColorMapUtils { @@ -35,13 +34,6 @@ public class MaterialColorMapUtils { resources.obtainTypedArray(com.android.contacts.common.R.array.letter_tile_colors_dark); } - public static MaterialPalette getDefaultPrimaryAndSecondaryColors(Resources resources) { - final int primaryColor = resources.getColor(R.color.quickcontact_default_photo_tint_color); - final int secondaryColor = - resources.getColor(R.color.quickcontact_default_photo_tint_color_dark); - return new MaterialPalette(primaryColor, secondaryColor); - } - /** * Returns the hue component of a color int. * diff --git a/java/com/android/contacts/common/util/NameConverter.java b/java/com/android/contacts/common/util/NameConverter.java deleted file mode 100644 index ae3275d14f2c4fe2dc3f9cb40b8097bc21e88dd9..0000000000000000000000000000000000000000 --- a/java/com/android/contacts/common/util/NameConverter.java +++ /dev/null @@ -1,242 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.android.contacts.common.util; - -import android.content.ContentValues; -import android.content.Context; -import android.database.Cursor; -import android.net.Uri; -import android.net.Uri.Builder; -import android.provider.ContactsContract; -import android.provider.ContactsContract.CommonDataKinds.StructuredName; -import android.text.TextUtils; -import com.android.contacts.common.model.dataitem.StructuredNameDataItem; -import java.util.Map; -import java.util.TreeMap; - -/** - * Utility class for converting between a display name and structured name (and vice-versa), via - * calls to the contact provider. - */ -public class NameConverter { - - /** The array of fields that comprise a structured name. */ - public static final String[] STRUCTURED_NAME_FIELDS = - new String[] { - StructuredName.PREFIX, - StructuredName.GIVEN_NAME, - StructuredName.MIDDLE_NAME, - StructuredName.FAMILY_NAME, - StructuredName.SUFFIX - }; - - /** - * Converts the given structured name (provided as a map from {@link StructuredName} fields to - * corresponding values) into a display name string. - * - *

Note that this operates via a call back to the ContactProvider, but it does not access the - * database, so it should be safe to call from the UI thread. See ContactsProvider2.completeName() - * for the underlying method call. - * - * @param context Activity context. - * @param structuredName The structured name map to convert. - * @return The display name computed from the structured name map. - */ - public static String structuredNameToDisplayName( - Context context, Map structuredName) { - Builder builder = ContactsContract.AUTHORITY_URI.buildUpon().appendPath("complete_name"); - for (String key : STRUCTURED_NAME_FIELDS) { - if (structuredName.containsKey(key)) { - appendQueryParameter(builder, key, structuredName.get(key)); - } - } - return fetchDisplayName(context, builder.build()); - } - - /** - * Converts the given structured name (provided as ContentValues) into a display name string. - * - * @param context Activity context. - * @param values The content values containing values comprising the structured name. - */ - public static String structuredNameToDisplayName(Context context, ContentValues values) { - Builder builder = ContactsContract.AUTHORITY_URI.buildUpon().appendPath("complete_name"); - for (String key : STRUCTURED_NAME_FIELDS) { - if (values.containsKey(key)) { - appendQueryParameter(builder, key, values.getAsString(key)); - } - } - return fetchDisplayName(context, builder.build()); - } - - /** Helper method for fetching the display name via the given URI. */ - private static String fetchDisplayName(Context context, Uri uri) { - String displayName = null; - Cursor cursor = - context - .getContentResolver() - .query( - uri, - new String[] { - StructuredName.DISPLAY_NAME, - }, - null, - null, - null); - - if (cursor != null) { - try { - if (cursor.moveToFirst()) { - displayName = cursor.getString(0); - } - } finally { - cursor.close(); - } - } - return displayName; - } - - /** - * Converts the given display name string into a structured name (as a map from {@link - * StructuredName} fields to corresponding values). - * - *

Note that this operates via a call back to the ContactProvider, but it does not access the - * database, so it should be safe to call from the UI thread. - * - * @param context Activity context. - * @param displayName The display name to convert. - * @return The structured name map computed from the display name. - */ - public static Map displayNameToStructuredName( - Context context, String displayName) { - Map structuredName = new TreeMap(); - Builder builder = ContactsContract.AUTHORITY_URI.buildUpon().appendPath("complete_name"); - - appendQueryParameter(builder, StructuredName.DISPLAY_NAME, displayName); - Cursor cursor = - context - .getContentResolver() - .query(builder.build(), STRUCTURED_NAME_FIELDS, null, null, null); - - if (cursor != null) { - try { - if (cursor.moveToFirst()) { - for (int i = 0; i < STRUCTURED_NAME_FIELDS.length; i++) { - structuredName.put(STRUCTURED_NAME_FIELDS[i], cursor.getString(i)); - } - } - } finally { - cursor.close(); - } - } - return structuredName; - } - - /** - * Converts the given display name string into a structured name (inserting the structured values - * into a new or existing ContentValues object). - * - *

Note that this operates via a call back to the ContactProvider, but it does not access the - * database, so it should be safe to call from the UI thread. - * - * @param context Activity context. - * @param displayName The display name to convert. - * @param contentValues The content values object to place the structured name values into. If - * null, a new one will be created and returned. - * @return The ContentValues object containing the structured name fields derived from the display - * name. - */ - public static ContentValues displayNameToStructuredName( - Context context, String displayName, ContentValues contentValues) { - if (contentValues == null) { - contentValues = new ContentValues(); - } - Map mapValues = displayNameToStructuredName(context, displayName); - for (String key : mapValues.keySet()) { - contentValues.put(key, mapValues.get(key)); - } - return contentValues; - } - - private static void appendQueryParameter(Builder builder, String field, String value) { - if (!TextUtils.isEmpty(value)) { - builder.appendQueryParameter(field, value); - } - } - - /** - * Parses phonetic name and returns parsed data (family, middle, given) as ContentValues. Parsed - * data should be {@link StructuredName#PHONETIC_FAMILY_NAME}, {@link - * StructuredName#PHONETIC_MIDDLE_NAME}, and {@link StructuredName#PHONETIC_GIVEN_NAME}. If this - * method cannot parse given phoneticName, null values will be stored. - * - * @param phoneticName Phonetic name to be parsed - * @param values ContentValues to be used for storing data. If null, new instance will be created. - * @return ContentValues with parsed data. Those data can be null. - */ - public static StructuredNameDataItem parsePhoneticName( - String phoneticName, StructuredNameDataItem item) { - String family = null; - String middle = null; - String given = null; - - if (!TextUtils.isEmpty(phoneticName)) { - String[] strings = phoneticName.split(" ", 3); - switch (strings.length) { - case 1: - family = strings[0]; - break; - case 2: - family = strings[0]; - given = strings[1]; - break; - case 3: - family = strings[0]; - middle = strings[1]; - given = strings[2]; - break; - } - } - - if (item == null) { - item = new StructuredNameDataItem(); - } - item.setPhoneticFamilyName(family); - item.setPhoneticMiddleName(middle); - item.setPhoneticGivenName(given); - return item; - } - - /** Constructs and returns a phonetic full name from given parts. */ - public static String buildPhoneticName(String family, String middle, String given) { - if (!TextUtils.isEmpty(family) || !TextUtils.isEmpty(middle) || !TextUtils.isEmpty(given)) { - StringBuilder sb = new StringBuilder(); - if (!TextUtils.isEmpty(family)) { - sb.append(family.trim()).append(' '); - } - if (!TextUtils.isEmpty(middle)) { - sb.append(middle.trim()).append(' '); - } - if (!TextUtils.isEmpty(given)) { - sb.append(given.trim()).append(' '); - } - sb.setLength(sb.length() - 1); // Yank the last space - return sb.toString(); - } else { - return null; - } - } -} diff --git a/java/com/android/contacts/common/util/StopWatch.java b/java/com/android/contacts/common/util/StopWatch.java index b944b98671668ba85979d2f85700ba3311f8dedf..7986d1081a29b595fcd1cd0d5b2a7664b562b108 100644 --- a/java/com/android/contacts/common/util/StopWatch.java +++ b/java/com/android/contacts/common/util/StopWatch.java @@ -16,7 +16,7 @@ package com.android.contacts.common.util; -import android.util.Log; +import com.android.dialer.common.LogUtil; import java.util.ArrayList; /** A {@link StopWatch} records start, laps and stop, and print them to logcat. */ @@ -37,11 +37,6 @@ public class StopWatch { return new StopWatch(label); } - /** Return a dummy instance that does no operations. */ - public static StopWatch getNullStopWatch() { - return NullStopWatch.INSTANCE; - } - /** Record a lap. */ public void lap(String lapLabel) { mTimes.add(System.currentTimeMillis()); @@ -76,25 +71,6 @@ public class StopWatch { sb.append(" "); last = current; } - Log.v(TAG, sb.toString()); - } - - private static class NullStopWatch extends StopWatch { - - public static final NullStopWatch INSTANCE = new NullStopWatch(); - - public NullStopWatch() { - super(null); - } - - @Override - public void lap(String lapLabel) { - // noop - } - - @Override - public void stopAndLog(String TAG, int timeThresholdToLog) { - // noop - } + LogUtil.v(TAG, sb.toString()); } } diff --git a/java/com/android/contacts/common/util/TelephonyManagerUtils.java b/java/com/android/contacts/common/util/TelephonyManagerUtils.java index b664268ca67977b9c6f7eca40ca14091b957e5e9..e4c2c63732e6df44957ec2dac09b0608d254883d 100644 --- a/java/com/android/contacts/common/util/TelephonyManagerUtils.java +++ b/java/com/android/contacts/common/util/TelephonyManagerUtils.java @@ -33,13 +33,4 @@ public class TelephonyManagerUtils { final String voiceMailLabel = telephonyManager.getVoiceMailAlphaTag(); return voiceMailLabel; } - - /** - * @param context Current application context. - * @return True if there is a subscription which supports video calls. False otherwise. - */ - public static boolean hasVideoCallSubscription(Context context) { - // TODO: Check the telephony manager's subscriptions to see if any support video calls. - return true; - } } diff --git a/java/com/android/dialer/about/AndroidManifest.xml b/java/com/android/dialer/about/AndroidManifest.xml index e9489ce1ea6fff7526ec0a61dfb2f138c986ab1d..85c750826526b4f1224300c57ed2f40c2994466e 100644 --- a/java/com/android/dialer/about/AndroidManifest.xml +++ b/java/com/android/dialer/about/AndroidManifest.xml @@ -1,6 +1,6 @@ - + - diff --git a/java/com/android/dialer/app/AndroidManifest.xml b/java/com/android/dialer/app/AndroidManifest.xml index de4b48c515e8dcdc268bf97bcc1980ccd6f8c997..4200082a6432814955f29ccf9e0bea987487e545 100644 --- a/java/com/android/dialer/app/AndroidManifest.xml +++ b/java/com/android/dialer/app/AndroidManifest.xml @@ -39,6 +39,7 @@ + diff --git a/java/com/android/dialer/app/Bindings.java b/java/com/android/dialer/app/Bindings.java index 2beb4018418df777666fa8e9cdc0a4f2adccb61c..c8cf27eb21078662933161f10a2a94390c0670c8 100644 --- a/java/com/android/dialer/app/Bindings.java +++ b/java/com/android/dialer/app/Bindings.java @@ -17,9 +17,6 @@ package com.android.dialer.app; import android.content.Context; -import com.android.dialer.app.bindings.DialerBindings; -import com.android.dialer.app.bindings.DialerBindingsFactory; -import com.android.dialer.app.bindings.DialerBindingsStub; import com.android.dialer.app.legacybindings.DialerLegacyBindings; import com.android.dialer.app.legacybindings.DialerLegacyBindingsFactory; import com.android.dialer.app.legacybindings.DialerLegacyBindingsStub; @@ -28,28 +25,10 @@ import java.util.Objects; /** Accessor for the in call UI bindings. */ public class Bindings { - private static DialerBindings instance; private static DialerLegacyBindings legacyInstance; private Bindings() {} - public static DialerBindings get(Context context) { - Objects.requireNonNull(context); - if (instance != null) { - return instance; - } - - Context application = context.getApplicationContext(); - if (application instanceof DialerBindingsFactory) { - instance = ((DialerBindingsFactory) application).newDialerBindings(); - } - - if (instance == null) { - instance = new DialerBindingsStub(); - } - return instance; - } - public static DialerLegacyBindings getLegacy(Context context) { Objects.requireNonNull(context); if (legacyInstance != null) { @@ -67,11 +46,4 @@ public class Bindings { return legacyInstance; } - public static void setForTesting(DialerBindings testInstance) { - instance = testInstance; - } - - public static void setLegacyBindingForTesting(DialerLegacyBindings testLegacyInstance) { - legacyInstance = testLegacyInstance; - } } diff --git a/java/com/android/dialer/app/DialtactsActivity.java b/java/com/android/dialer/app/DialtactsActivity.java index 6e2c6be7dfc9879924a660017a005fe6b366c91a..527dbff18c71d12912fdf577ef4358d5bafa8fac 100644 --- a/java/com/android/dialer/app/DialtactsActivity.java +++ b/java/com/android/dialer/app/DialtactsActivity.java @@ -71,10 +71,12 @@ import com.android.contacts.common.widget.FloatingActionButtonController; import com.android.dialer.animation.AnimUtils; import com.android.dialer.animation.AnimationListenerAdapter; import com.android.dialer.app.calllog.CallLogActivity; +import com.android.dialer.app.calllog.CallLogAdapter; import com.android.dialer.app.calllog.CallLogFragment; import com.android.dialer.app.calllog.CallLogNotificationsService; import com.android.dialer.app.dialpad.DialpadFragment; import com.android.dialer.app.list.DialtactsPagerAdapter; +import com.android.dialer.app.list.DialtactsPagerAdapter.TabIndex; import com.android.dialer.app.list.DragDropController; import com.android.dialer.app.list.ListsFragment; import com.android.dialer.app.list.OldSpeedDialFragment; @@ -92,6 +94,7 @@ import com.android.dialer.callintent.CallIntentBuilder; import com.android.dialer.callintent.CallSpecificAppData; import com.android.dialer.common.Assert; import com.android.dialer.common.LogUtil; +import com.android.dialer.configprovider.ConfigProviderBindings; import com.android.dialer.database.Database; import com.android.dialer.database.DialerDatabaseHelper; import com.android.dialer.interactions.PhoneNumberInteraction; @@ -99,20 +102,24 @@ import com.android.dialer.interactions.PhoneNumberInteraction.InteractionErrorCo import com.android.dialer.logging.DialerImpression; import com.android.dialer.logging.Logger; import com.android.dialer.logging.ScreenEvent; +import com.android.dialer.logging.UiAction; +import com.android.dialer.main.Main; +import com.android.dialer.main.MainComponent; import com.android.dialer.p13n.inference.P13nRanking; import com.android.dialer.p13n.inference.protocol.P13nRanker; import com.android.dialer.p13n.inference.protocol.P13nRanker.P13nRefreshCompleteListener; import com.android.dialer.p13n.logging.P13nLogger; import com.android.dialer.p13n.logging.P13nLogging; +import com.android.dialer.performancereport.PerformanceReport; import com.android.dialer.postcall.PostCall; import com.android.dialer.proguard.UsedByReflection; +import com.android.dialer.searchfragment.list.NewSearchFragment; import com.android.dialer.simulator.Simulator; import com.android.dialer.simulator.SimulatorComponent; import com.android.dialer.smartdial.SmartDialNameMatcher; import com.android.dialer.smartdial.SmartDialPrefix; import com.android.dialer.telecom.TelecomUtil; import com.android.dialer.util.DialerUtils; -import com.android.dialer.util.IntentUtil; import com.android.dialer.util.PermissionsUtil; import com.android.dialer.util.TouchPointManager; import com.android.dialer.util.TransactionSafeActivity; @@ -130,6 +137,7 @@ public class DialtactsActivity extends TransactionSafeActivity DialpadFragment.OnDialpadQueryChangedListener, OnListFragmentScrolledListener, CallLogFragment.HostInterface, + CallLogAdapter.OnActionModeStateChangedListener, DialpadFragment.HostInterface, OldSpeedDialFragment.HostInterface, SearchFragment.HostInterface, @@ -147,6 +155,7 @@ public class DialtactsActivity extends TransactionSafeActivity private static final String ACTION_SHOW_TAB = "ACTION_SHOW_TAB"; @VisibleForTesting public static final String EXTRA_SHOW_TAB = "EXTRA_SHOW_TAB"; public static final String EXTRA_CLEAR_NEW_VOICEMAILS = "EXTRA_CLEAR_NEW_VOICEMAILS"; + private static final String KEY_LAST_TAB = "last_tab"; private static final String TAG = "DialtactsActivity"; private static final String KEY_IN_REGULAR_SEARCH_UI = "in_regular_search_ui"; private static final String KEY_IN_DIALPAD_SEARCH_UI = "in_dialpad_search_ui"; @@ -154,6 +163,7 @@ public class DialtactsActivity extends TransactionSafeActivity private static final String KEY_FIRST_LAUNCH = "first_launch"; private static final String KEY_WAS_CONFIGURATION_CHANGE = "was_configuration_change"; private static final String KEY_IS_DIALPAD_SHOWN = "is_dialpad_shown"; + private static final String TAG_NEW_SEARCH_FRAGMENT = "new_search"; private static final String TAG_REGULAR_SEARCH_FRAGMENT = "search"; private static final String TAG_SMARTDIAL_SEARCH_FRAGMENT = "smartdial"; private static final String TAG_FAVORITES_FRAGMENT = "favorites"; @@ -162,6 +172,7 @@ public class DialtactsActivity extends TransactionSafeActivity private static final int ACTIVITY_REQUEST_CODE_VOICE_SEARCH = 1; public static final int ACTIVITY_REQUEST_CODE_CALL_COMPOSE = 2; + public static final int ACTIVITY_REQUEST_CODE_LIGHTBRINGER = 3; private static final int FAB_SCALE_IN_DELAY_MS = 300; @@ -180,6 +191,9 @@ public class DialtactsActivity extends TransactionSafeActivity /** Fragment for searching phone numbers using the dialpad. */ private SmartDialSearchFragment mSmartDialSearchFragment; + /** new Fragment for search phone numbers using the keyboard and the dialpad. */ + private NewSearchFragment mNewSearchFragment; + /** Animation that slides in. */ private Animation mSlideIn; @@ -225,6 +239,9 @@ public class DialtactsActivity extends TransactionSafeActivity private P13nLogger mP13nLogger; private P13nRanker mP13nRanker; + public boolean isMultiSelectModeEnabled; + + private boolean isLastTabEnabled; AnimationListenerAdapter mSlideInListener = new AnimationListenerAdapter() { @@ -256,12 +273,18 @@ public class DialtactsActivity extends TransactionSafeActivity // no need to do anything here. return; } + + if (count != 0) { + PerformanceReport.recordClick(UiAction.Type.TEXT_CHANGE_WITH_INPUT); + } + if (DEBUG) { LogUtil.v("DialtactsActivity.onTextChanged", "called with new query: " + newText); LogUtil.v("DialtactsActivity.onTextChanged", "previous query: " + mSearchQuery); } mSearchQuery = newText; + // TODO: show p13n when newText is empty. // Show search fragment only when the query string is changed to non-empty text. if (!TextUtils.isEmpty(newText)) { // Call enterSearchUi only if we are switching search modes, or showing a search @@ -277,6 +300,8 @@ public class DialtactsActivity extends TransactionSafeActivity mSmartDialSearchFragment.setQueryString(mSearchQuery); } else if (mRegularSearchFragment != null && mRegularSearchFragment.isVisible()) { mRegularSearchFragment.setQueryString(mSearchQuery); + } else if (mNewSearchFragment != null) { + mNewSearchFragment.setQuery(mSearchQuery); } } @@ -289,6 +314,7 @@ public class DialtactsActivity extends TransactionSafeActivity @Override public void onClick(View v) { if (!isInSearchUi()) { + PerformanceReport.recordClick(UiAction.Type.OPEN_SEARCH); mActionBarController.onSearchBoxTapped(); enterSearchUi( false /* smartDialSearch */, mSearchView.getText().toString(), true /* animate */); @@ -306,9 +332,13 @@ public class DialtactsActivity extends TransactionSafeActivity if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) { if (TextUtils.isEmpty(mSearchView.getText().toString())) { // If the search term is empty, close the search UI. + PerformanceReport.recordClick(UiAction.Type.CLOSE_SEARCH_WITH_HIDE_BUTTON); maybeExitSearchUi(); } else { // If the search term is not empty, show the dialpad fab. + if (!mFloatingActionButtonController.isVisible()) { + PerformanceReport.recordClick(UiAction.Type.HIDE_KEYBOARD_IN_SEARCH); + } showFabInSearchUi(); } } @@ -355,6 +385,7 @@ public class DialtactsActivity extends TransactionSafeActivity super.onCreate(savedInstanceState); mFirstLaunch = true; + isLastTabEnabled = ConfigProviderBindings.get(this).getBoolean("last_tab_enabled", false); final Resources resources = getResources(); mActionBarHeight = resources.getDimensionPixelSize(R.dimen.action_bar_height_large); @@ -480,6 +511,13 @@ public class DialtactsActivity extends TransactionSafeActivity Trace.beginSection(TAG + " onResume"); super.onResume(); + // Some calls may not be recorded (eg. from quick contact), + // so we should restart recording after these calls. (Recorded call is stopped) + PostCall.restartPerformanceRecordingIfARecentCallExist(this); + if (!PerformanceReport.isRecording()) { + PerformanceReport.startRecording(); + } + mStateSaved = false; if (mFirstLaunch) { displayFragment(getIntent()); @@ -542,7 +580,8 @@ public class DialtactsActivity extends TransactionSafeActivity } if (getIntent().getBooleanExtra(EXTRA_CLEAR_NEW_VOICEMAILS, false)) { - CallLogNotificationsService.markNewVoicemailsAsOld(this, null); + LogUtil.i("DialtactsActivity.onResume", "clearing all new voicemails"); + CallLogNotificationsService.markAllNewVoicemailsAsOld(this); } } @@ -593,6 +632,10 @@ public class DialtactsActivity extends TransactionSafeActivity && !getSystemService(KeyguardManager.class).isKeyguardLocked()) { mListsFragment.markMissedCallsAsReadAndRemoveNotifications(); } + DialerUtils.getDefaultSharedPreferenceForDeviceProtectedStorageContext(this) + .edit() + .putInt(KEY_LAST_TAB, mListsFragment.getCurrentTabIndex()) + .apply(); } @Override @@ -630,6 +673,8 @@ public class DialtactsActivity extends TransactionSafeActivity } else if (fragment instanceof ListsFragment) { mListsFragment = (ListsFragment) fragment; mListsFragment.addOnPageChangeListener(this); + } else if (fragment instanceof NewSearchFragment) { + mNewSearchFragment = (NewSearchFragment) fragment; } if (fragment instanceof SearchFragment) { final SearchFragment searchFragment = (SearchFragment) fragment; @@ -664,13 +709,8 @@ public class DialtactsActivity extends TransactionSafeActivity public void onClick(View view) { int resId = view.getId(); if (resId == R.id.floating_action_button) { - if (mListsFragment.getCurrentTabIndex() == DialtactsPagerAdapter.TAB_INDEX_ALL_CONTACTS - && !mInRegularSearch - && !mInDialpadSearch) { - DialerUtils.startActivityWithErrorToast( - this, IntentUtil.getNewContactIntent(), R.string.add_contact_not_available); - Logger.get(this).logImpression(DialerImpression.Type.NEW_CONTACT_FAB); - } else if (!mIsDialpadShown) { + if (!mIsDialpadShown) { + PerformanceReport.recordClick(UiAction.Type.OPEN_DIALPAD); mInCallDialpadUp = false; showDialpadFragment(true); PostCall.closePrompt(); @@ -700,6 +740,7 @@ public class DialtactsActivity extends TransactionSafeActivity int resId = item.getItemId(); if (resId == R.id.menu_history) { + PerformanceReport.recordClick(UiAction.Type.OPEN_CALL_HISTORY); final Intent intent = new Intent(this, CallLogActivity.class); startActivity(intent); } else if (resId == R.id.menu_clear_frequents) { @@ -710,6 +751,9 @@ public class DialtactsActivity extends TransactionSafeActivity handleMenuSettings(); Logger.get(this).logScreenView(ScreenEvent.Type.SETTINGS, this); return true; + } else if (resId == R.id.menu_new_ui_launcher_shortcut) { + MainComponent.get(this).getMain().createNewUiLauncherShortcut(this); + return true; } return false; } @@ -785,6 +829,7 @@ public class DialtactsActivity extends TransactionSafeActivity if (animate) { mFloatingActionButtonController.scaleOut(); + maybeEnterSearchUi(); } else { mFloatingActionButtonController.setVisible(false); maybeEnterSearchUi(); @@ -1007,6 +1052,16 @@ public class DialtactsActivity extends TransactionSafeActivity if (showDialpadChooser && !mDialpadFragment.isVisible()) { mInCallDialpadUp = true; } + } else if (isLastTabEnabled) { + @TabIndex + int tabIndex = + DialerUtils.getDefaultSharedPreferenceForDeviceProtectedStorageContext(this) + .getInt(KEY_LAST_TAB, DialtactsPagerAdapter.TAB_INDEX_SPEED_DIAL); + // If voicemail tab is saved and its availability changes, we still move to the voicemail tab + // but it is quickly removed and shown the contacts tab. + if (mListsFragment != null) { + mListsFragment.showTab(tabIndex); + } } } @@ -1057,7 +1112,11 @@ public class DialtactsActivity extends TransactionSafeActivity } final String tag; - if (smartDialSearch) { + boolean useNewSearch = + ConfigProviderBindings.get(this).getBoolean("enable_new_search_fragment", false); + if (useNewSearch) { + tag = TAG_NEW_SEARCH_FRAGMENT; + } else if (smartDialSearch) { tag = TAG_SMARTDIAL_SEARCH_FRAGMENT; } else { tag = TAG_REGULAR_SEARCH_FRAGMENT; @@ -1067,40 +1126,52 @@ public class DialtactsActivity extends TransactionSafeActivity mFloatingActionButtonController.scaleOut(); - SearchFragment fragment = (SearchFragment) getFragmentManager().findFragmentByTag(tag); if (animate) { transaction.setCustomAnimations(android.R.animator.fade_in, 0); } else { transaction.setTransition(FragmentTransaction.TRANSIT_NONE); } + + Fragment fragment = getFragmentManager().findFragmentByTag(tag); if (fragment == null) { - if (smartDialSearch) { + if (useNewSearch) { + fragment = new NewSearchFragment(); + } else if (smartDialSearch) { fragment = new SmartDialSearchFragment(); } else { fragment = Bindings.getLegacy(this).newRegularSearchFragment(); - fragment.setOnTouchListener( - new View.OnTouchListener() { - @Override - public boolean onTouch(View v, MotionEvent event) { - // Show the FAB when the user touches the lists fragment and the soft - // keyboard is hidden. - hideDialpadFragment(true, false); - showFabInSearchUi(); - v.performClick(); - return false; - } - }); + ((SearchFragment) fragment) + .setOnTouchListener( + (v, event) -> { + // Show the FAB when the user touches the lists fragment and the soft + // keyboard is hidden. + hideDialpadFragment(true, false); + v.performClick(); + return false; + }); } transaction.add(R.id.dialtacts_frame, fragment, tag); } else { + // TODO: if this is a transition from dialpad to searchbar, animate fragment + // down, and vice versa. Perhaps just add a coordinator behavior with the search bar. transaction.show(fragment); } + // DialtactsActivity will provide the options menu fragment.setHasOptionsMenu(false); + // Will show empty list if P13nRanker is not enabled. Else, re-ranked list by the ranker. - fragment.setShowEmptyListForNullQuery(mP13nRanker.shouldShowEmptyListForNullQuery()); - if (!smartDialSearch) { - fragment.setQueryString(query); + if (!useNewSearch) { + ((SearchFragment) fragment) + .setShowEmptyListForNullQuery(mP13nRanker.shouldShowEmptyListForNullQuery()); + } else { + // TODO: add p13n ranker to new search. + } + + if (!smartDialSearch && !useNewSearch) { + ((SearchFragment) fragment).setQueryString(query); + } else if (useNewSearch) { + ((NewSearchFragment) fragment).setQuery(query); } transaction.commit(); @@ -1146,6 +1217,9 @@ public class DialtactsActivity extends TransactionSafeActivity if (mRegularSearchFragment != null) { transaction.remove(mRegularSearchFragment); } + if (mNewSearchFragment != null) { + transaction.remove(mNewSearchFragment); + } transaction.commit(); Assert.isNotNull(mListsFragment.getView()).animate().alpha(1).withLayer(); @@ -1163,6 +1237,8 @@ public class DialtactsActivity extends TransactionSafeActivity @Override public void onBackPressed() { + PerformanceReport.recordClick(UiAction.Type.PRESS_ANDROID_BACK_BUTTON); + if (mStateSaved) { return; } @@ -1247,6 +1323,7 @@ public class DialtactsActivity extends TransactionSafeActivity if (mInDialpadSearch && mSmartDialSearchFragment != null && !mSmartDialSearchFragment.isShowingPermissionRequest()) { + PerformanceReport.recordClick(UiAction.Type.CLOSE_DIALPAD); hideDialpadFragment(true /* animate */, true /* clearDialpad */); return true; } @@ -1255,6 +1332,7 @@ public class DialtactsActivity extends TransactionSafeActivity @Override public void onListFragmentScrollStateChange(int scrollState) { + PerformanceReport.recordScrollStateChange(scrollState); if (scrollState == OnScrollListener.SCROLL_STATE_TOUCH_SCROLL) { hideDialpadFragment(true, false); DialerUtils.hideInputMethod(mParentLayout); @@ -1381,18 +1459,6 @@ public class DialtactsActivity extends TransactionSafeActivity int tabIndex = mListsFragment.getCurrentTabIndex(); mPreviouslySelectedTabIndex = tabIndex; mFloatingActionButtonController.setVisible(true); - if (tabIndex == DialtactsPagerAdapter.TAB_INDEX_ALL_CONTACTS - && !mInRegularSearch - && !mInDialpadSearch) { - mFloatingActionButtonController.changeIcon( - getResources().getDrawable(R.drawable.quantum_ic_person_add_white_24, null), - getResources().getString(R.string.search_shortcut_create_new_contact)); - } else { - mFloatingActionButtonController.changeIcon( - getResources().getDrawable(R.drawable.quantum_ic_dialpad_white_24, null), - getResources().getString(R.string.action_menu_dialpad_button)); - } - timeTabSelected = SystemClock.elapsedRealtime(); } @@ -1477,6 +1543,17 @@ public class DialtactsActivity extends TransactionSafeActivity Arrays.toString(grantResults))); } + @Override + public void onActionModeStateChanged(boolean isEnabled) { + isMultiSelectModeEnabled = isEnabled; + } + + @Override + public boolean isActionModeStateEnabled() { + return isMultiSelectModeEnabled; + } + + /** Popup menu accessible from the search bar */ protected class OptionsPopupMenu extends PopupMenu { public OptionsPopupMenu(Context context, View anchor) { @@ -1505,6 +1582,10 @@ public class DialtactsActivity extends TransactionSafeActivity simulatorMenuItem.setVisible(false); } + Main dialtacts = MainComponent.get(context).getMain(); + menu.findItem(R.id.menu_new_ui_launcher_shortcut) + .setVisible(dialtacts.isNewUiEnabled(context)); + super.show(); } } diff --git a/java/com/android/dialer/app/SpecialCharSequenceMgr.java b/java/com/android/dialer/app/SpecialCharSequenceMgr.java index 85c2ea65068613362daec6872073c295dd080b4f..20222d68c4fb9a300f9e30f0343babf4045fc92d 100644 --- a/java/com/android/dialer/app/SpecialCharSequenceMgr.java +++ b/java/com/android/dialer/app/SpecialCharSequenceMgr.java @@ -47,7 +47,6 @@ import com.android.contacts.common.widget.SelectPhoneAccountDialogFragment.Selec import com.android.dialer.calllogutils.PhoneAccountUtils; import com.android.dialer.common.Assert; import com.android.dialer.common.LogUtil; -import com.android.dialer.compat.CompatUtils; import com.android.dialer.oem.MotorolaUtils; import com.android.dialer.telecom.TelecomUtil; import java.util.ArrayList; @@ -299,9 +298,7 @@ public class SpecialCharSequenceMgr { : R.string.meid; List deviceIds = new ArrayList(); - if (TelephonyManagerCompat.getPhoneCount(telephonyManager) > 1 - && CompatUtils.isMethodAvailable( - TelephonyManagerCompat.TELEPHONY_MANAGER_CLASS, "getDeviceId", Integer.TYPE)) { + if (TelephonyManagerCompat.getPhoneCount(telephonyManager) > 1) { for (int slot = 0; slot < telephonyManager.getPhoneCount(); slot++) { String deviceId = telephonyManager.getDeviceId(slot); if (!TextUtils.isEmpty(deviceId)) { diff --git a/java/com/android/dialer/app/bindings/DialerBindingsStub.java b/java/com/android/dialer/app/bindings/DialerBindingsStub.java deleted file mode 100644 index f56743fa533f5d604c828b26aa772b493075c795..0000000000000000000000000000000000000000 --- a/java/com/android/dialer/app/bindings/DialerBindingsStub.java +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright (C) 2016 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License - */ - -package com.android.dialer.app.bindings; - -import com.android.dialer.common.ConfigProvider; - -/** Default implementation for dialer bindings. */ -public class DialerBindingsStub implements DialerBindings { - private ConfigProvider configProvider; - - @Override - public ConfigProvider getConfigProvider() { - if (configProvider == null) { - configProvider = - new ConfigProvider() { - @Override - public String getString(String key, String defaultValue) { - return defaultValue; - } - - @Override - public long getLong(String key, long defaultValue) { - return defaultValue; - } - - @Override - public boolean getBoolean(String key, boolean defaultValue) { - return defaultValue; - } - }; - } - return configProvider; - } -} diff --git a/java/com/android/dialer/app/calllog/CallLogActivity.java b/java/com/android/dialer/app/calllog/CallLogActivity.java index 443171d3f677f1745b0815585bcf2d7176d68864..6433af9a6fd98e4303d8e5636474d588b3785611 100644 --- a/java/com/android/dialer/app/calllog/CallLogActivity.java +++ b/java/com/android/dialer/app/calllog/CallLogActivity.java @@ -34,6 +34,9 @@ import com.android.dialer.app.R; import com.android.dialer.database.CallLogQueryHandler; import com.android.dialer.logging.Logger; import com.android.dialer.logging.ScreenEvent; +import com.android.dialer.logging.UiAction; +import com.android.dialer.performancereport.PerformanceReport; +import com.android.dialer.postcall.PostCall; import com.android.dialer.util.TransactionSafeActivity; import com.android.dialer.util.ViewUtil; @@ -48,7 +51,6 @@ public class CallLogActivity extends TransactionSafeActivity private ViewPagerTabs mViewPagerTabs; private ViewPagerAdapter mViewPagerAdapter; private CallLogFragment mAllCallsFragment; - private CallLogFragment mMissedCallsFragment; private String[] mTabTitles; private boolean mIsResumed; @@ -93,9 +95,16 @@ public class CallLogActivity extends TransactionSafeActivity @Override protected void onResume() { + // Some calls may not be recorded (eg. from quick contact), + // so we should restart recording after these calls. (Recorded call is stopped) + PostCall.restartPerformanceRecordingIfARecentCallExist(this); + if (!PerformanceReport.isRecording()) { + PerformanceReport.startRecording(); + } + mIsResumed = true; super.onResume(); - sendScreenViewForChildFragment(mViewPager.getCurrentItem()); + sendScreenViewForChildFragment(); } @Override @@ -129,6 +138,7 @@ public class CallLogActivity extends TransactionSafeActivity } if (item.getItemId() == android.R.id.home) { + PerformanceReport.recordClick(UiAction.Type.CLOSE_CALL_HISTORY_WITH_CANCEL_BUTTON); final Intent intent = new Intent(this, DialtactsActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent); @@ -148,7 +158,7 @@ public class CallLogActivity extends TransactionSafeActivity @Override public void onPageSelected(int position) { if (mIsResumed) { - sendScreenViewForChildFragment(position); + sendScreenViewForChildFragment(); } mViewPagerTabs.onPageSelected(position); } @@ -158,7 +168,7 @@ public class CallLogActivity extends TransactionSafeActivity mViewPagerTabs.onPageScrollStateChanged(state); } - private void sendScreenViewForChildFragment(int position) { + private void sendScreenViewForChildFragment() { Logger.get(this).logScreenView(ScreenEvent.Type.CALL_LOG_FILTER, this); } @@ -169,6 +179,12 @@ public class CallLogActivity extends TransactionSafeActivity return position; } + @Override + public void onBackPressed() { + PerformanceReport.recordClick(UiAction.Type.PRESS_ANDROID_BACK_BUTTON); + super.onBackPressed(); + } + /** Adapter for the view pager. */ public class ViewPagerAdapter extends FragmentPagerAdapter { @@ -189,20 +205,16 @@ public class CallLogActivity extends TransactionSafeActivity CallLogQueryHandler.CALL_TYPE_ALL, true /* isCallLogActivity */); case TAB_INDEX_MISSED: return new CallLogFragment(Calls.MISSED_TYPE, true /* isCallLogActivity */); + default: + throw new IllegalStateException("No fragment at position " + position); } - throw new IllegalStateException("No fragment at position " + position); } @Override public Object instantiateItem(ViewGroup container, int position) { final CallLogFragment fragment = (CallLogFragment) super.instantiateItem(container, position); - switch (position) { - case TAB_INDEX_ALL: + if (position == TAB_INDEX_ALL) { mAllCallsFragment = fragment; - break; - case TAB_INDEX_MISSED: - mMissedCallsFragment = fragment; - break; } return fragment; } diff --git a/java/com/android/dialer/app/calllog/CallLogAdapter.java b/java/com/android/dialer/app/calllog/CallLogAdapter.java index 2f8a58c8aa9ee2114861082f4c700f69aaea2520..f1d051a8c2ca3c45e1741ccba8f1c8fb438b458f 100644 --- a/java/com/android/dialer/app/calllog/CallLogAdapter.java +++ b/java/com/android/dialer/app/calllog/CallLogAdapter.java @@ -19,6 +19,7 @@ package com.android.dialer.app.calllog; import android.app.Activity; import android.content.ContentUris; import android.content.DialogInterface; +import android.content.DialogInterface.OnCancelListener; import android.content.res.Resources; import android.database.Cursor; import android.net.Uri; @@ -52,7 +53,6 @@ import android.view.ViewGroup; import com.android.contacts.common.ContactsUtils; import com.android.contacts.common.compat.PhoneNumberUtilsCompat; import com.android.contacts.common.preference.ContactsPreferences; -import com.android.dialer.app.Bindings; import com.android.dialer.app.DialtactsActivity; import com.android.dialer.app.R; import com.android.dialer.app.calllog.CallLogGroupBuilder.GroupCreator; @@ -66,10 +66,10 @@ import com.android.dialer.calldetails.CallDetailsEntries.CallDetailsEntry; import com.android.dialer.calllogutils.PhoneAccountUtils; import com.android.dialer.calllogutils.PhoneCallDetails; import com.android.dialer.common.Assert; -import com.android.dialer.common.ConfigProviderBindings; import com.android.dialer.common.LogUtil; import com.android.dialer.common.concurrent.AsyncTaskExecutor; import com.android.dialer.common.concurrent.AsyncTaskExecutors; +import com.android.dialer.configprovider.ConfigProviderBindings; import com.android.dialer.enrichedcall.EnrichedCallCapabilities; import com.android.dialer.enrichedcall.EnrichedCallComponent; import com.android.dialer.enrichedcall.EnrichedCallManager; @@ -80,12 +80,15 @@ import com.android.dialer.lightbringer.LightbringerListener; import com.android.dialer.logging.ContactSource; import com.android.dialer.logging.DialerImpression; import com.android.dialer.logging.Logger; +import com.android.dialer.logging.UiAction; +import com.android.dialer.performancereport.PerformanceReport; import com.android.dialer.phonenumbercache.CallLogQuery; import com.android.dialer.phonenumbercache.ContactInfo; import com.android.dialer.phonenumbercache.ContactInfoHelper; import com.android.dialer.phonenumberutil.PhoneNumberHelper; import com.android.dialer.spam.Spam; import com.android.dialer.util.PermissionsUtil; +import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Map; @@ -105,11 +108,12 @@ public class CallLogAdapter extends GroupingListAdapter private static final String KEY_EXPANDED_POSITION = "expanded_position"; private static final String KEY_EXPANDED_ROW_ID = "expanded_row_id"; + private static final String KEY_ACTION_MODE = "action_mode_selected_items"; public static final String LOAD_DATA_TASK_IDENTIFIER = "load_data"; public static final String ENABLE_CALL_LOG_MULTI_SELECT = "enable_call_log_multiselect"; - public static final boolean ENABLE_CALL_LOG_MULTI_SELECT_FLAG = false; + public static final boolean ENABLE_CALL_LOG_MULTI_SELECT_FLAG = true; protected final Activity mActivity; protected final VoicemailPlaybackPresenter mVoicemailPlaybackPresenter; @@ -117,6 +121,8 @@ public class CallLogAdapter extends GroupingListAdapter protected final CallLogCache mCallLogCache; private final CallFetcher mCallFetcher; + private final OnActionModeStateChangedListener mActionModeStateChangedListener; + private final MultiSelectRemoveView mMultiSelectRemoveView; @NonNull private final FilteredNumberAsyncQueryHandler mFilteredNumberAsyncQueryHandler; private final int mActivityType; @@ -136,6 +142,8 @@ public class CallLogAdapter extends GroupingListAdapter private final CallLogAlertManager mCallLogAlertManager; public ActionMode mActionMode = null; + public boolean selectAllMode = false; + public boolean deselectAllMode = false; private final SparseArray selectedItems = new SparseArray<>(); private final ActionMode.Callback mActionModeCallback = @@ -144,10 +152,17 @@ public class CallLogAdapter extends GroupingListAdapter // Called when the action mode is created; startActionMode() was called @Override public boolean onCreateActionMode(ActionMode mode, Menu menu) { + if (mActivity != null) { + announceforAccessibility( + mActivity.getCurrentFocus(), + mActivity.getString(R.string.description_entering_bulk_action_mode)); + } mActionMode = mode; // Inflate a menu resource providing context menu items MenuInflater inflater = mode.getMenuInflater(); inflater.inflate(R.menu.actionbar_delete, menu); + mMultiSelectRemoveView.showMultiSelectRemoveView(true); + mActionModeStateChangedListener.onActionModeStateChanged(true); return true; } @@ -162,10 +177,10 @@ public class CallLogAdapter extends GroupingListAdapter @Override public boolean onActionItemClicked(ActionMode mode, MenuItem item) { if (item.getItemId() == R.id.action_bar_delete_menu_item) { + Logger.get(mActivity).logImpression(DialerImpression.Type.MULTISELECT_TAP_DELETE_ICON); if (selectedItems.size() > 0) { showDeleteSelectedItemsDialog(); } - mode.finish(); return true; } else { return false; @@ -175,53 +190,78 @@ public class CallLogAdapter extends GroupingListAdapter // Called when the user exits the action mode @Override public void onDestroyActionMode(ActionMode mode) { + if (mActivity != null) { + announceforAccessibility( + mActivity.getCurrentFocus(), + mActivity.getString(R.string.description_leaving_bulk_action_mode)); + } selectedItems.clear(); mActionMode = null; + selectAllMode = false; + deselectAllMode = false; + mMultiSelectRemoveView.showMultiSelectRemoveView(false); + mActionModeStateChangedListener.onActionModeStateChanged(false); notifyDataSetChanged(); } }; - // Todo (uabdullah): Use plurals http://b/37751831 private void showDeleteSelectedItemsDialog() { - AlertDialog.Builder builder = new AlertDialog.Builder(mActivity); - Assert.checkArgument(selectedItems.size() > 0); - String voicemailString = - selectedItems.size() == 1 - ? mActivity.getResources().getString(R.string.voicemailMultiSelectVoicemail) - : mActivity.getResources().getString(R.string.voicemailMultiSelectVoicemails); - String deleteVoicemailTitle = - mActivity - .getResources() - .getString(R.string.voicemailMultiSelectDialogTitle, voicemailString); SparseArray voicemailsToDeleteOnConfirmation = selectedItems.clone(); - builder.setTitle(deleteVoicemailTitle); - - builder.setPositiveButton( - mActivity.getResources().getString(R.string.voicemailMultiSelectDeleteConfirm), - new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int id) { - deleteSelectedItems(voicemailsToDeleteOnConfirmation); - dialog.cancel(); - } - }); - - builder.setNegativeButton( - mActivity.getResources().getString(R.string.voicemailMultiSelectDeleteCancel), - new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int id) { - dialog.cancel(); - } - }); - - AlertDialog dialog = builder.create(); - dialog.show(); + new AlertDialog.Builder(mActivity, R.style.AlertDialogCustom) + .setCancelable(true) + .setTitle( + mActivity + .getResources() + .getQuantityString( + R.plurals.delete_voicemails_confirmation_dialog_title, selectedItems.size())) + .setPositiveButton( + R.string.voicemailMultiSelectDeleteConfirm, + new DialogInterface.OnClickListener() { + @Override + public void onClick(final DialogInterface dialog, final int button) { + LogUtil.i( + "CallLogAdapter.showDeleteSelectedItemsDialog", + "onClick, these items to delete " + voicemailsToDeleteOnConfirmation); + deleteSelectedItems(voicemailsToDeleteOnConfirmation); + mActionMode.finish(); + dialog.cancel(); + Logger.get(mActivity) + .logImpression( + DialerImpression.Type.MULTISELECT_DELETE_ENTRY_VIA_CONFIRMATION_DIALOG); + } + }) + .setOnCancelListener( + new OnCancelListener() { + @Override + public void onCancel(DialogInterface dialogInterface) { + Logger.get(mActivity) + .logImpression( + DialerImpression.Type + .MULTISELECT_CANCEL_CONFIRMATION_DIALOG_VIA_CANCEL_TOUCH); + dialogInterface.cancel(); + } + }) + .setNegativeButton( + R.string.voicemailMultiSelectDeleteCancel, + new DialogInterface.OnClickListener() { + @Override + public void onClick(final DialogInterface dialog, final int button) { + Logger.get(mActivity) + .logImpression( + DialerImpression.Type + .MULTISELECT_CANCEL_CONFIRMATION_DIALOG_VIA_CANCEL_BUTTON); + dialog.cancel(); + } + }) + .show(); + Logger.get(mActivity) + .logImpression(DialerImpression.Type.MULTISELECT_DISPLAY_DELETE_CONFIRMATION_DIALOG); } private void deleteSelectedItems(SparseArray voicemailsToDelete) { for (int i = 0; i < voicemailsToDelete.size(); i++) { String voicemailUri = voicemailsToDelete.get(voicemailsToDelete.keyAt(i)); + LogUtil.i("CallLogAdapter.deleteSelectedItems", "deleting uri:" + voicemailUri); CallLogAsyncTaskUtil.deleteVoicemail(mActivity, Uri.parse(voicemailUri), null); } } @@ -235,8 +275,13 @@ public class CallLogAdapter extends GroupingListAdapter && mVoicemailPlaybackPresenter != null) { if (v.getId() == R.id.primary_action_view || v.getId() == R.id.quick_contact_photo) { if (mActionMode == null) { + Logger.get(mActivity) + .logImpression( + DialerImpression.Type.MULTISELECT_LONG_PRESS_ENTER_MULTI_SELECT_MODE); mActionMode = v.startActionMode(mActionModeCallback); } + Logger.get(mActivity) + .logImpression(DialerImpression.Type.MULTISELECT_LONG_PRESS_TAP_ENTRY); CallLogListItemViewHolder viewHolder = (CallLogListItemViewHolder) v.getTag(); viewHolder.quickContactView.setVisibility(View.GONE); viewHolder.checkBoxView.setVisibility(View.VISIBLE); @@ -253,27 +298,26 @@ public class CallLogAdapter extends GroupingListAdapter new View.OnClickListener() { @Override public void onClick(View v) { + PerformanceReport.recordClick(UiAction.Type.CLICK_CALL_LOG_ITEM); + CallLogListItemViewHolder viewHolder = (CallLogListItemViewHolder) v.getTag(); if (viewHolder == null) { return; } if (mActionMode != null && viewHolder.voicemailUri != null) { + selectAllMode = false; + deselectAllMode = false; + mMultiSelectRemoveView.setSelectAllModeToFalse(); int id = getVoicemailId(viewHolder.voicemailUri); if (selectedItems.get(id) != null) { - selectedItems.delete(id); - viewHolder.checkBoxView.setVisibility(View.GONE); - viewHolder.quickContactView.setVisibility(View.VISIBLE); + Logger.get(mActivity) + .logImpression(DialerImpression.Type.MULTISELECT_SINGLE_PRESS_UNSELECT_ENTRY); + uncheckMarkCallLogEntry(viewHolder, id); } else { - viewHolder.quickContactView.setVisibility(View.GONE); - viewHolder.checkBoxView.setVisibility(View.VISIBLE); - selectedItems.put(getVoicemailId(viewHolder.voicemailUri), viewHolder.voicemailUri); + Logger.get(mActivity) + .logImpression(DialerImpression.Type.MULTISELECT_SINGLE_PRESS_SELECT_ENTRY); + checkMarkCallLogEntry(viewHolder); } - - if (selectedItems.size() == 0) { - mActionMode.finish(); - return; - } - mActionMode.setTitle(Integer.toString(selectedItems.size())); return; } @@ -312,6 +356,50 @@ public class CallLogAdapter extends GroupingListAdapter } }; + private void checkMarkCallLogEntry(CallLogListItemViewHolder viewHolder) { + announceforAccessibility( + mActivity.getCurrentFocus(), + mActivity.getString( + R.string.description_selecting_bulk_action_mode, viewHolder.nameOrNumber)); + viewHolder.quickContactView.setVisibility(View.GONE); + viewHolder.checkBoxView.setVisibility(View.VISIBLE); + selectedItems.put(getVoicemailId(viewHolder.voicemailUri), viewHolder.voicemailUri); + updateActionBar(); + } + + private void announceforAccessibility(View view, String announcement) { + if (view != null) { + view.announceForAccessibility(announcement); + } + } + + private void updateActionBar() { + if (mActionMode == null && selectedItems.size() > 0) { + Logger.get(mActivity) + .logImpression(DialerImpression.Type.MULTISELECT_ROTATE_AND_SHOW_ACTION_MODE); + mActivity.startActionMode(mActionModeCallback); + } + if (mActionMode != null) { + mActionMode.setTitle( + mActivity + .getResources() + .getString( + R.string.voicemailMultiSelectActionBarTitle, + Integer.toString(selectedItems.size()))); + } + } + + private void uncheckMarkCallLogEntry(CallLogListItemViewHolder viewHolder, int id) { + announceforAccessibility( + mActivity.getCurrentFocus(), + mActivity.getString( + R.string.description_unselecting_bulk_action_mode, viewHolder.nameOrNumber)); + selectedItems.delete(id); + viewHolder.checkBoxView.setVisibility(View.GONE); + viewHolder.quickContactView.setVisibility(View.VISIBLE); + updateActionBar(); + } + private static int getVoicemailId(String voicemailUri) { Assert.checkArgument(voicemailUri != null); Assert.checkArgument(voicemailUri.length() > 0); @@ -358,6 +446,8 @@ public class CallLogAdapter extends GroupingListAdapter Activity activity, ViewGroup alertContainer, CallFetcher callFetcher, + MultiSelectRemoveView multiSelectRemoveView, + OnActionModeStateChangedListener actionModeStateChangedListener, CallLogCache callLogCache, ContactInfoCache contactInfoCache, VoicemailPlaybackPresenter voicemailPlaybackPresenter, @@ -367,6 +457,8 @@ public class CallLogAdapter extends GroupingListAdapter mActivity = activity; mCallFetcher = callFetcher; + mActionModeStateChangedListener = actionModeStateChangedListener; + mMultiSelectRemoveView = multiSelectRemoveView; mVoicemailPlaybackPresenter = voicemailPlaybackPresenter; if (mVoicemailPlaybackPresenter != null) { mVoicemailPlaybackPresenter.setOnVoicemailDeletedListener(this); @@ -426,6 +518,25 @@ public class CallLogAdapter extends GroupingListAdapter public void onSaveInstanceState(Bundle outState) { outState.putInt(KEY_EXPANDED_POSITION, mCurrentlyExpandedPosition); outState.putLong(KEY_EXPANDED_ROW_ID, mCurrentlyExpandedRowId); + + ArrayList listOfSelectedItems = new ArrayList<>(); + + if (selectedItems.size() > 0) { + for (int i = 0; i < selectedItems.size(); i++) { + int id = selectedItems.keyAt(i); + String voicemailUri = selectedItems.valueAt(i); + LogUtil.i( + "CallLogAdapter.onSaveInstanceState", "index %d, id=%d, uri=%s ", i, id, voicemailUri); + listOfSelectedItems.add(voicemailUri); + } + } + outState.putStringArrayList(KEY_ACTION_MODE, listOfSelectedItems); + + LogUtil.i( + "CallLogAdapter.onSaveInstanceState", + "saved: %d, selectedItemsSize:%d", + listOfSelectedItems.size(), + selectedItems.size()); } public void onRestoreInstanceState(Bundle savedInstanceState) { @@ -434,6 +545,33 @@ public class CallLogAdapter extends GroupingListAdapter savedInstanceState.getInt(KEY_EXPANDED_POSITION, RecyclerView.NO_POSITION); mCurrentlyExpandedRowId = savedInstanceState.getLong(KEY_EXPANDED_ROW_ID, NO_EXPANDED_LIST_ITEM); + // Restoring multi selected entries + ArrayList listOfSelectedItems = + savedInstanceState.getStringArrayList(KEY_ACTION_MODE); + LogUtil.i( + "CallLogAdapter.onRestoreInstanceState", + "restored selectedItemsList:%d", + listOfSelectedItems.size()); + + if (!listOfSelectedItems.isEmpty()) { + for (int i = 0; i < listOfSelectedItems.size(); i++) { + String voicemailUri = listOfSelectedItems.get(i); + int id = getVoicemailId(voicemailUri); + LogUtil.i( + "CallLogAdapter.onRestoreInstanceState", + "restoring selected index %d, id=%d, uri=%s ", + i, + id, + voicemailUri); + selectedItems.put(id, voicemailUri); + } + + LogUtil.i( + "CallLogAdapter.onRestoreInstance", + "restored selectedItems %s", + selectedItems.toString()); + updateActionBar(); + } } } @@ -521,6 +659,7 @@ public class CallLogAdapter extends GroupingListAdapter mBlockReportSpamListener, mExpandCollapseListener, mLongPressListener, + mActionModeStateChangedListener, mCallLogCache, mCallLogListItemHelper, mVoicemailPlaybackPresenter); @@ -546,7 +685,7 @@ public class CallLogAdapter extends GroupingListAdapter Trace.beginSection("onBindViewHolder: " + position); switch (getItemViewType(position)) { case VIEW_TYPE_ALERT: - //Do nothing + // Do nothing break; default: bindCallLogListViewHolder(viewHolder, position); @@ -559,6 +698,8 @@ public class CallLogAdapter extends GroupingListAdapter public void onViewRecycled(ViewHolder viewHolder) { if (viewHolder.getItemViewType() == VIEW_TYPE_CALLLOG) { CallLogListItemViewHolder views = (CallLogListItemViewHolder) viewHolder; + updateCheckMarkedStatusOfEntry(views); + if (views.asyncTask != null) { views.asyncTask.cancel(true); } @@ -591,6 +732,8 @@ public class CallLogAdapter extends GroupingListAdapter return; } CallLogListItemViewHolder views = (CallLogListItemViewHolder) viewHolder; + updateCheckMarkedStatusOfEntry(views); + views.isLoaded = false; int groupSize = getGroupSize(position); CallDetailsEntries callDetailsEntries = createCallDetailsEntries(c, groupSize); @@ -609,6 +752,17 @@ public class CallLogAdapter extends GroupingListAdapter loadAndRender(views, views.rowId, details, callDetailsEntries); } + private void updateCheckMarkedStatusOfEntry(CallLogListItemViewHolder views) { + if (selectedItems.size() > 0 && views.voicemailUri != null) { + int id = getVoicemailId(views.voicemailUri); + if (selectedItems.get(id) != null) { + checkMarkCallLogEntry(views); + } else { + uncheckMarkCallLogEntry(views, id); + } + } + } + private void loadAndRender( final CallLogListItemViewHolder views, final long rowId, @@ -840,8 +994,7 @@ public class CallLogAdapter extends GroupingListAdapter details.countryIso, details.cachedContactInfo, position - < Bindings.get(mActivity) - .getConfigProvider() + < ConfigProviderBindings.get(mActivity) .getLong("number_of_call_to_do_remote_lookup", 5L)); } CharSequence formattedNumber = @@ -917,6 +1070,12 @@ public class CallLogAdapter extends GroupingListAdapter views.workIconView.setVisibility( details.contactUserType == ContactsUtils.USER_TYPE_WORK ? View.VISIBLE : View.GONE); + if (selectAllMode && views.voicemailUri != null) { + selectedItems.put(getVoicemailId(views.voicemailUri), views.voicemailUri); + } + if (deselectAllMode && views.voicemailUri != null) { + selectedItems.delete(getVoicemailId(views.voicemailUri)); + } if (views.voicemailUri != null && selectedItems.get(getVoicemailId(views.voicemailUri)) != null) { views.checkBoxView.setVisibility(View.VISIBLE); @@ -925,7 +1084,6 @@ public class CallLogAdapter extends GroupingListAdapter views.checkBoxView.setVisibility(View.GONE); views.quickContactView.setVisibility(View.VISIBLE); } - mCallLogListItemHelper.setPhoneCallDetails(views, details); if (mCurrentlyExpandedRowId == views.rowId) { // In case ViewHolders were added/removed, update the expanded position if the rowIds @@ -1192,9 +1350,49 @@ public class CallLogAdapter extends GroupingListAdapter notifyDataSetChanged(); } + public void onAllSelected() { + selectAllMode = true; + deselectAllMode = false; + selectedItems.clear(); + for (int i = 0; i < getItemCount(); i++) { + Cursor c = (Cursor) getItem(i); + if (c != null) { + Assert.checkArgument(CallLogQuery.VOICEMAIL_URI == c.getColumnIndex("voicemail_uri")); + String voicemailUri = c.getString(CallLogQuery.VOICEMAIL_URI); + selectedItems.put(getVoicemailId(voicemailUri), voicemailUri); + } + } + updateActionBar(); + notifyDataSetChanged(); + } + + public void onAllDeselected() { + selectAllMode = false; + deselectAllMode = true; + selectedItems.clear(); + updateActionBar(); + notifyDataSetChanged(); + } + /** Interface used to initiate a refresh of the content. */ public interface CallFetcher { void fetchCalls(); } + + /** Interface used to allow single tap multi select for contact photos. */ + public interface OnActionModeStateChangedListener { + + void onActionModeStateChanged(boolean isEnabled); + + boolean isActionModeStateEnabled(); + } + + /** Interface used to hide the fragments. */ + public interface MultiSelectRemoveView { + + void showMultiSelectRemoveView(boolean show); + + void setSelectAllModeToFalse(); + } } diff --git a/java/com/android/dialer/app/calllog/CallLogAsyncTaskUtil.java b/java/com/android/dialer/app/calllog/CallLogAsyncTaskUtil.java index a5553d13437361cef02af501fb4d3eb0e309eca1..10866aae25befc95fb176a013bcec86b63087250 100644 --- a/java/com/android/dialer/app/calllog/CallLogAsyncTaskUtil.java +++ b/java/com/android/dialer/app/calllog/CallLogAsyncTaskUtil.java @@ -28,6 +28,7 @@ import android.provider.VoicemailContract.Voicemails; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.text.TextUtils; +import com.android.dialer.common.LogUtil; import com.android.dialer.common.concurrent.AsyncTaskExecutor; import com.android.dialer.common.concurrent.AsyncTaskExecutors; import com.android.dialer.util.PermissionsUtil; @@ -45,6 +46,7 @@ public class CallLogAsyncTaskUtil { public static void markVoicemailAsRead( @NonNull final Context context, @NonNull final Uri voicemailUri) { + LogUtil.enterBlock("CallLogAsyncTaskUtil.markVoicemailAsRead, voicemailUri: " + voicemailUri); if (sAsyncTaskExecutor == null) { initTaskExecutor(); } @@ -66,9 +68,7 @@ public class CallLogAsyncTaskUtil { uploadVoicemailLocalChangesToServer(context); } - Intent intent = new Intent(context, CallLogNotificationsService.class); - intent.setAction(CallLogNotificationsService.ACTION_MARK_NEW_VOICEMAILS_AS_OLD); - context.startService(intent); + CallLogNotificationsService.markAllNewVoicemailsAsOld(context); return null; } }); diff --git a/java/com/android/dialer/app/calllog/CallLogFragment.java b/java/com/android/dialer/app/calllog/CallLogFragment.java index 6e4b23fc1ec6e1214149cbf665d1c76d1c564076..b03a4ad64a065be3383b8ff2c621220bc22a103f 100644 --- a/java/com/android/dialer/app/calllog/CallLogFragment.java +++ b/java/com/android/dialer/app/calllog/CallLogFragment.java @@ -35,53 +35,68 @@ import android.provider.ContactsContract; import android.support.annotation.CallSuper; import android.support.annotation.Nullable; import android.support.v13.app.FragmentCompat; +import android.support.v13.app.FragmentCompat.OnRequestPermissionsResultCallback; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; +import android.view.View.OnClickListener; import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; import com.android.dialer.app.Bindings; import com.android.dialer.app.R; +import com.android.dialer.app.calllog.CallLogAdapter.CallFetcher; +import com.android.dialer.app.calllog.CallLogAdapter.MultiSelectRemoveView; import com.android.dialer.app.calllog.calllogcache.CallLogCache; import com.android.dialer.app.contactinfo.ContactInfoCache; import com.android.dialer.app.contactinfo.ContactInfoCache.OnContactInfoChangedListener; import com.android.dialer.app.contactinfo.ExpirableCacheHeadlessFragment; import com.android.dialer.app.list.ListsFragment; import com.android.dialer.app.voicemail.VoicemailPlaybackPresenter; -import com.android.dialer.app.widget.EmptyContentView; -import com.android.dialer.app.widget.EmptyContentView.OnEmptyViewActionButtonClickedListener; import com.android.dialer.blocking.FilteredNumberAsyncQueryHandler; import com.android.dialer.common.Assert; import com.android.dialer.common.LogUtil; import com.android.dialer.database.CallLogQueryHandler; +import com.android.dialer.database.CallLogQueryHandler.Listener; import com.android.dialer.location.GeoUtil; +import com.android.dialer.logging.DialerImpression; +import com.android.dialer.logging.Logger; +import com.android.dialer.oem.CequintCallerIdManager; +import com.android.dialer.performancereport.PerformanceReport; import com.android.dialer.phonenumbercache.ContactInfoHelper; import com.android.dialer.util.PermissionsUtil; +import com.android.dialer.widget.EmptyContentView; +import com.android.dialer.widget.EmptyContentView.OnEmptyViewActionButtonClickedListener; +import java.util.Arrays; /** * Displays a list of call log entries. To filter for a particular kind of call (all, missed or * voicemails), specify it in the constructor. */ public class CallLogFragment extends Fragment - implements CallLogQueryHandler.Listener, - CallLogAdapter.CallFetcher, + implements Listener, + CallFetcher, + MultiSelectRemoveView, OnEmptyViewActionButtonClickedListener, - FragmentCompat.OnRequestPermissionsResultCallback, - CallLogModalAlertManager.Listener { + OnRequestPermissionsResultCallback, + CallLogModalAlertManager.Listener, + OnClickListener { private static final String KEY_FILTER_TYPE = "filter_type"; private static final String KEY_LOG_LIMIT = "log_limit"; private static final String KEY_DATE_LIMIT = "date_limit"; private static final String KEY_IS_CALL_LOG_ACTIVITY = "is_call_log_activity"; private static final String KEY_HAS_READ_CALL_LOG_PERMISSION = "has_read_call_log_permission"; private static final String KEY_REFRESH_DATA_REQUIRED = "refresh_data_required"; + private static final String KEY_SELECT_ALL_MODE = "select_all_mode_checked"; // No limit specified for the number of logs to show; use the CallLogQueryHandler's default. private static final int NO_LOG_LIMIT = -1; // No date-based filtering. private static final int NO_DATE_LIMIT = 0; - private static final int READ_CALL_LOG_PERMISSION_REQUEST_CODE = 1; + private static final int PHONE_PERMISSIONS_REQUEST_CODE = 1; private static final int EVENT_UPDATE_DISPLAY = 1; @@ -90,6 +105,9 @@ public class CallLogFragment extends Fragment // See issue 6363009 private final ContentObserver mCallLogObserver = new CustomContentObserver(); private final ContentObserver mContactsObserver = new CustomContentObserver(); + private View mMultiSelectUnSelectAllViewContent; + private TextView mSelectUnselectAllViewText; + private ImageView mSelectUnselectAllIcon; private RecyclerView mRecyclerView; private LinearLayoutManager mLayoutManager; private CallLogAdapter mAdapter; @@ -123,6 +141,7 @@ public class CallLogFragment extends Fragment * True if this instance of the CallLogFragment shown in the CallLogActivity. */ private boolean mIsCallLogActivity = false; + private boolean selectAllMode; private final Handler mDisplayUpdateHandler = new Handler() { @Override @@ -194,6 +213,7 @@ public class CallLogFragment extends Fragment mIsCallLogActivity = state.getBoolean(KEY_IS_CALL_LOG_ACTIVITY, mIsCallLogActivity); mHasReadCallLogPermission = state.getBoolean(KEY_HAS_READ_CALL_LOG_PERMISSION, false); mRefreshDataRequired = state.getBoolean(KEY_REFRESH_DATA_REQUIRED, mRefreshDataRequired); + selectAllMode = state.getBoolean(KEY_SELECT_ALL_MODE, false); } final Activity activity = getActivity(); @@ -290,12 +310,20 @@ public class CallLogFragment extends Fragment mRecyclerView.setHasFixedSize(true); mLayoutManager = new LinearLayoutManager(getActivity()); mRecyclerView.setLayoutManager(mLayoutManager); + PerformanceReport.logOnScrollStateChange(mRecyclerView); mEmptyListView = (EmptyContentView) view.findViewById(R.id.empty_list_view); mEmptyListView.setImage(R.drawable.empty_call_log); mEmptyListView.setActionClickedListener(this); mModalAlertView = (ViewGroup) view.findViewById(R.id.modal_message_container); mModalAlertManager = new CallLogModalAlertManager(LayoutInflater.from(getContext()), mModalAlertView, this); + mMultiSelectUnSelectAllViewContent = + view.findViewById(R.id.multi_select_select_all_view_content); + mSelectUnselectAllViewText = (TextView) view.findViewById(R.id.select_all_view_text); + mSelectUnselectAllIcon = (ImageView) view.findViewById(R.id.select_all_view_icon); + mMultiSelectUnSelectAllViewContent.setOnClickListener(null); + mSelectUnselectAllIcon.setOnClickListener(this); + mSelectUnselectAllViewText.setOnClickListener(this); } protected void setupData() { @@ -317,6 +345,10 @@ public class CallLogFragment extends Fragment getActivity(), mRecyclerView, this, + this, + activityType == CallLogAdapter.ACTIVITY_TYPE_DIALTACTS + ? (CallLogAdapter.OnActionModeStateChangedListener) getActivity() + : null, CallLogCache.getCallLogCache(getActivity()), mContactInfoCache, getVoicemailPlaybackPresenter(), @@ -335,9 +367,18 @@ public class CallLogFragment extends Fragment public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); setupData(); + updateSelectAllState(savedInstanceState); mAdapter.onRestoreInstanceState(savedInstanceState); } + private void updateSelectAllState(Bundle savedInstanceState) { + if (savedInstanceState != null) { + if (savedInstanceState.getBoolean(KEY_SELECT_ALL_MODE, false)) { + updateSelectAllIcon(); + } + } + } + @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); @@ -379,6 +420,16 @@ public class CallLogFragment extends Fragment super.onPause(); } + @Override + public void onStart() { + super.onStart(); + CequintCallerIdManager cequintCallerIdManager = null; + if (CequintCallerIdManager.isCequintCallerIdEnabled(getContext())) { + cequintCallerIdManager = CequintCallerIdManager.createInstanceForCallLog(); + } + mContactInfoCache.setCequintCallerIdManager(cequintCallerIdManager); + } + @Override public void onStop() { updateOnTransition(); @@ -407,7 +458,7 @@ public class CallLogFragment extends Fragment outState.putBoolean(KEY_IS_CALL_LOG_ACTIVITY, mIsCallLogActivity); outState.putBoolean(KEY_HAS_READ_CALL_LOG_PERMISSION, mHasReadCallLogPermission); outState.putBoolean(KEY_REFRESH_DATA_REQUIRED, mRefreshDataRequired); - + outState.putBoolean(KEY_SELECT_ALL_MODE, selectAllMode); mAdapter.onSaveInstanceState(outState); } @@ -451,6 +502,8 @@ public class CallLogFragment extends Fragment mEmptyListView.setActionLabel(EmptyContentView.NO_LABEL); } else if (filterType == CallLogQueryHandler.CALL_TYPE_ALL) { mEmptyListView.setActionLabel(R.string.call_log_all_empty_action); + } else { + mEmptyListView.setActionLabel(EmptyContentView.NO_LABEL); } } @@ -503,7 +556,8 @@ public class CallLogFragment extends Fragment if (mKeyguardManager != null && !mKeyguardManager.inKeyguardRestrictedInputMode() && mCallTypeFilter == Calls.VOICEMAIL_TYPE) { - CallLogNotificationsService.markNewVoicemailsAsOld(getActivity(), null); + LogUtil.i("CallLogFragment.updateOnTransition", "clearing all new voicemails"); + CallLogNotificationsService.markAllNewVoicemailsAsOld(getActivity()); } } @@ -514,9 +568,14 @@ public class CallLogFragment extends Fragment return; } - if (!PermissionsUtil.hasPermission(activity, READ_CALL_LOG)) { - FragmentCompat.requestPermissions( - this, new String[] {READ_CALL_LOG}, READ_CALL_LOG_PERMISSION_REQUEST_CODE); + String[] deniedPermissions = + PermissionsUtil.getPermissionsCurrentlyDenied( + getContext(), PermissionsUtil.allPhoneGroupPermissionsUsedInDialer); + if (deniedPermissions.length > 0) { + LogUtil.i( + "CallLogFragment.onEmptyViewActionButtonClicked", + "Requesting permissions: " + Arrays.toString(deniedPermissions)); + FragmentCompat.requestPermissions(this, deniedPermissions, PHONE_PERMISSIONS_REQUEST_CODE); } else if (!mIsCallLogActivity) { // Show dialpad if we are not in the call log activity. ((HostInterface) activity).showDialpad(); @@ -526,7 +585,7 @@ public class CallLogFragment extends Fragment @Override public void onRequestPermissionsResult( int requestCode, String[] permissions, int[] grantResults) { - if (requestCode == READ_CALL_LOG_PERMISSION_REQUEST_CODE) { + if (requestCode == PHONE_PERMISSIONS_REQUEST_CODE) { if (grantResults.length >= 1 && PackageManager.PERMISSION_GRANTED == grantResults[0]) { // Force a refresh of the data since we were missing the permission before this. mRefreshDataRequired = true; @@ -589,6 +648,44 @@ public class CallLogFragment extends Fragment } } + @Override + public void showMultiSelectRemoveView(boolean show) { + mMultiSelectUnSelectAllViewContent.setVisibility(show ? View.VISIBLE : View.GONE); + mMultiSelectUnSelectAllViewContent.setAlpha(show ? 0 : 1); + mMultiSelectUnSelectAllViewContent.animate().alpha(show ? 1 : 0).start(); + ((ListsFragment) getParentFragment()).showMultiSelectRemoveView(show); + } + + @Override + public void setSelectAllModeToFalse() { + selectAllMode = false; + mSelectUnselectAllIcon.setImageDrawable( + getContext().getDrawable(R.drawable.ic_empty_check_mark_white_24dp)); + } + + @Override + public void onClick(View v) { + selectAllMode = !selectAllMode; + if (selectAllMode) { + Logger.get(v.getContext()).logImpression(DialerImpression.Type.MULTISELECT_SELECT_ALL); + } else { + Logger.get(v.getContext()).logImpression(DialerImpression.Type.MULTISELECT_UNSELECT_ALL); + } + updateSelectAllIcon(); + } + + private void updateSelectAllIcon() { + if (selectAllMode) { + mSelectUnselectAllIcon.setImageDrawable( + getContext().getDrawable(R.drawable.ic_check_mark_blue_24dp)); + getAdapter().onAllSelected(); + } else { + mSelectUnselectAllIcon.setImageDrawable( + getContext().getDrawable(R.drawable.ic_empty_check_mark_white_24dp)); + getAdapter().onAllDeselected(); + } + } + public interface HostInterface { void showDialpad(); diff --git a/java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java b/java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java index 1daccd1a41ed5bb59730dd918853f9f636fb39d8..c59f0dd61436ab8ff287fbce3827621cfdc9e57a 100644 --- a/java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java +++ b/java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java @@ -17,6 +17,7 @@ package com.android.dialer.app.calllog; import android.app.Activity; +import android.content.ActivityNotFoundException; import android.content.Context; import android.content.Intent; import android.content.res.Resources; @@ -25,32 +26,37 @@ import android.os.AsyncTask; import android.provider.CallLog; import android.provider.CallLog.Calls; import android.provider.ContactsContract.CommonDataKinds.Phone; +import android.support.annotation.IntDef; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.annotation.VisibleForTesting; import android.support.v7.widget.CardView; import android.support.v7.widget.RecyclerView; +import android.telecom.PhoneAccount; import android.telecom.PhoneAccountHandle; -import android.telecom.TelecomManager; import android.telephony.PhoneNumberUtils; import android.text.BidiFormatter; import android.text.TextDirectionHeuristics; import android.text.TextUtils; import android.view.ContextMenu; +import android.view.LayoutInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewStub; import android.widget.ImageButton; import android.widget.ImageView; -import android.widget.QuickContactBadge; import android.widget.TextView; +import android.widget.Toast; import com.android.contacts.common.ClipboardUtils; import com.android.contacts.common.ContactPhotoManager; import com.android.contacts.common.compat.PhoneNumberUtilsCompat; import com.android.contacts.common.dialog.CallSubjectDialog; +import com.android.contacts.common.lettertiles.LetterTileDrawable; +import com.android.contacts.common.lettertiles.LetterTileDrawable.ContactType; import com.android.contacts.common.util.UriUtils; import com.android.dialer.app.DialtactsActivity; import com.android.dialer.app.R; +import com.android.dialer.app.calllog.CallLogAdapter.OnActionModeStateChangedListener; import com.android.dialer.app.calllog.calllogcache.CallLogCache; import com.android.dialer.app.voicemail.VoicemailPlaybackLayout; import com.android.dialer.app.voicemail.VoicemailPlaybackPresenter; @@ -58,23 +64,31 @@ import com.android.dialer.blocking.BlockedNumbersMigrator; import com.android.dialer.blocking.FilteredNumberCompat; import com.android.dialer.blocking.FilteredNumbersUtil; import com.android.dialer.callcomposer.CallComposerActivity; -import com.android.dialer.callcomposer.CallComposerContact; +import com.android.dialer.calldetails.CallDetailsActivity; import com.android.dialer.calldetails.CallDetailsEntries; -import com.android.dialer.common.ConfigProviderBindings; +import com.android.dialer.common.Assert; import com.android.dialer.common.LogUtil; import com.android.dialer.compat.CompatUtils; +import com.android.dialer.configprovider.ConfigProviderBindings; +import com.android.dialer.dialercontact.DialerContact; +import com.android.dialer.dialercontact.SimDetails; import com.android.dialer.lightbringer.Lightbringer; import com.android.dialer.lightbringer.LightbringerComponent; import com.android.dialer.logging.ContactSource; import com.android.dialer.logging.DialerImpression; +import com.android.dialer.logging.InteractionEvent; import com.android.dialer.logging.Logger; import com.android.dialer.logging.ScreenEvent; +import com.android.dialer.logging.UiAction; +import com.android.dialer.performancereport.PerformanceReport; import com.android.dialer.phonenumbercache.CachedNumberLookupService; import com.android.dialer.phonenumbercache.ContactInfo; import com.android.dialer.phonenumbercache.PhoneNumberCache; import com.android.dialer.phonenumberutil.PhoneNumberHelper; import com.android.dialer.util.CallUtil; import com.android.dialer.util.DialerUtils; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; /** * This is an object containing references to views contained by the call log list item. This @@ -90,7 +104,7 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder /** The root view of the call log list item */ public final View rootView; /** The quick contact badge for the contact. */ - public final QuickContactBadge quickContactView; + public final DialerQuickContactBadge quickContactView; /** The primary action view of the entry. */ public final View primaryActionView; /** The details of the phone call. */ @@ -108,6 +122,7 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder private final CachedNumberLookupService mCachedNumberLookupService; private final VoicemailPlaybackPresenter mVoicemailPlaybackPresenter; private final OnClickListener mBlockReportListener; + @HostUi private final int hostUi; /** Whether the data fields are populated by the worker thread, ready to be shown. */ public boolean isLoaded; /** The view containing call log item actions. Null until the ViewStub is inflated. */ @@ -201,6 +216,7 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder public boolean lightbringerReady; private View.OnClickListener mExpandCollapseListener; + private final OnActionModeStateChangedListener onActionModeStateChangedListener; private final View.OnLongClickListener longPressListener; private boolean mVoicemailPrimaryActionButtonClicked; @@ -216,11 +232,12 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder OnClickListener blockReportListener, View.OnClickListener expandCollapseListener, View.OnLongClickListener longClickListener, + CallLogAdapter.OnActionModeStateChangedListener actionModeStateChangedListener, CallLogCache callLogCache, CallLogListItemHelper callLogListItemHelper, VoicemailPlaybackPresenter voicemailPlaybackPresenter, View rootView, - QuickContactBadge quickContactView, + DialerQuickContactBadge dialerQuickContactView, View primaryActionView, PhoneCallDetailsViews phoneCallDetailsViews, CardView callLogEntryView, @@ -230,6 +247,7 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder mContext = context; mExpandCollapseListener = expandCollapseListener; + onActionModeStateChangedListener = actionModeStateChangedListener; longPressListener = longClickListener; mCallLogCache = callLogCache; mCallLogListItemHelper = callLogListItemHelper; @@ -238,7 +256,7 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder mCachedNumberLookupService = PhoneNumberCache.get(mContext).getCachedNumberLookupService(); this.rootView = rootView; - this.quickContactView = quickContactView; + this.quickContactView = dialerQuickContactView; this.primaryActionView = primaryActionView; this.phoneCallDetailsViews = phoneCallDetailsViews; this.callLogEntryView = callLogEntryView; @@ -251,6 +269,23 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder phoneCallDetailsViews.nameView.setElegantTextHeight(false); phoneCallDetailsViews.callLocationAndDate.setElegantTextHeight(false); + if (mContext instanceof CallLogActivity) { + hostUi = HostUi.CALL_HISTORY; + Logger.get(mContext) + .logQuickContactOnTouch( + quickContactView, InteractionEvent.Type.OPEN_QUICK_CONTACT_FROM_CALL_HISTORY, true); + } else if (mVoicemailPlaybackPresenter == null) { + hostUi = HostUi.CALL_LOG; + Logger.get(mContext) + .logQuickContactOnTouch( + quickContactView, InteractionEvent.Type.OPEN_QUICK_CONTACT_FROM_CALL_LOG, true); + } else { + hostUi = HostUi.VOICEMAIL; + Logger.get(mContext) + .logQuickContactOnTouch( + quickContactView, InteractionEvent.Type.OPEN_QUICK_CONTACT_FROM_VOICEMAIL, false); + } + quickContactView.setOverlay(null); if (CompatUtils.hasPrioritizedMimeType()) { quickContactView.setPrioritizedMimeType(Phone.CONTENT_ITEM_TYPE); @@ -264,6 +299,8 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder CallLogAdapter.ENABLE_CALL_LOG_MULTI_SELECT_FLAG)) { primaryActionView.setOnLongClickListener(longPressListener); quickContactView.setOnLongClickListener(longPressListener); + quickContactView.setMulitSelectListeners( + mExpandCollapseListener, onActionModeStateChangedListener); } else { primaryActionView.setOnCreateContextMenuListener(this); } @@ -275,6 +312,7 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder OnClickListener blockReportListener, View.OnClickListener expandCollapseListener, View.OnLongClickListener longClickListener, + CallLogAdapter.OnActionModeStateChangedListener actionModeStateChangeListener, CallLogCache callLogCache, CallLogListItemHelper callLogListItemHelper, VoicemailPlaybackPresenter voicemailPlaybackPresenter) { @@ -284,11 +322,12 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder blockReportListener, expandCollapseListener, longClickListener, + actionModeStateChangeListener, callLogCache, callLogListItemHelper, voicemailPlaybackPresenter, view, - (QuickContactBadge) view.findViewById(R.id.quick_contact_photo), + (DialerQuickContactBadge) view.findViewById(R.id.quick_contact_photo), view.findViewById(R.id.primary_action_view), PhoneCallDetailsViews.fromView(view), (CardView) view.findViewById(R.id.call_log_row), @@ -297,6 +336,11 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder } public static CallLogListItemViewHolder createForTest(Context context) { + return createForTest(context, null); + } + + static CallLogListItemViewHolder createForTest( + Context context, VoicemailPlaybackPresenter voicemailPlaybackPresenter) { Resources resources = context.getResources(); CallLogCache callLogCache = CallLogCache.getCallLogCache(context); PhoneCallDetailsHelper phoneCallDetailsHelper = @@ -308,11 +352,12 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder null, null /* expandCollapseListener */, null, + null, callLogCache, new CallLogListItemHelper(phoneCallDetailsHelper, resources, callLogCache), - null /* voicemailPlaybackPresenter */, - new View(context), - new QuickContactBadge(context), + voicemailPlaybackPresenter, + LayoutInflater.from(context).inflate(R.layout.call_log_list_item, null), + new DialerQuickContactBadge(context), new View(context), PhoneCallDetailsViews.createForTest(context), new CardView(context), @@ -456,6 +501,17 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder // Treat as normal list item; show call button, if possible. if (PhoneNumberHelper.canPlaceCallsTo(number, numberPresentation)) { boolean isVoicemailNumber = mCallLogCache.isVoicemailNumber(accountHandle, number); + + if (!isVoicemailNumber && showLightbringerPrimaryButton()) { + primaryActionButtonView.setTag(IntentProvider.getLightbringerIntentProvider(number)); + primaryActionButtonView.setContentDescription( + TextUtils.expandTemplate( + mContext.getString(R.string.description_video_call_action), validNameOrNumber)); + primaryActionButtonView.setImageResource(R.drawable.quantum_ic_videocam_vd_theme_24); + primaryActionButtonView.setVisibility(View.VISIBLE); + return; + } + if (isVoicemailNumber) { // Call to generic voicemail number, in case there are multiple accounts. primaryActionButtonView.setTag(IntentProvider.getReturnVoicemailCallIntentProvider()); @@ -467,7 +523,7 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder primaryActionButtonView.setContentDescription( TextUtils.expandTemplate( mContext.getString(R.string.description_call_action), validNameOrNumber)); - primaryActionButtonView.setImageResource(R.drawable.quantum_ic_call_white_24); + primaryActionButtonView.setImageResource(R.drawable.quantum_ic_call_vd_theme_24); primaryActionButtonView.setVisibility(View.VISIBLE); } else { primaryActionButtonView.setTag(null); @@ -513,8 +569,15 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder return; } - if (!TextUtils.isEmpty(voicemailUri) && canPlaceCallToNumber) { + if (canPlaceCallToNumber) { + // Set up the call button but hide it by default (the primary action is to call so it is + // redundant). We then set it to be visible when appropriate below. This saves us having to + // remember to set it to GONE in multiple places. callButtonView.setTag(IntentProvider.getReturnCallIntentProvider(number)); + callButtonView.setVisibility(View.GONE); + } + + if (!TextUtils.isEmpty(voicemailUri) && canPlaceCallToNumber) { ((TextView) callButtonView.findViewById(R.id.call_action_text)) .setText( TextUtils.expandTemplate( @@ -529,13 +592,14 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder callTypeOrLocationView.setVisibility(View.GONE); } callButtonView.setVisibility(View.VISIBLE); - } else { - callButtonView.setVisibility(View.GONE); } if (hasPlacedCarrierVideoCall() || canSupportCarrierVideoCall()) { videoCallButtonView.setTag(IntentProvider.getReturnVideoCallIntentProvider(number)); videoCallButtonView.setVisibility(View.VISIBLE); + } else if (showLightbringerPrimaryButton()) { + callButtonView.setVisibility(View.VISIBLE); + videoCallButtonView.setVisibility(View.GONE); } else if (lightbringerReady) { videoCallButtonView.setTag(IntentProvider.getLightbringerIntentProvider(number)); videoCallButtonView.setVisibility(View.VISIBLE); @@ -567,8 +631,12 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder detailsButtonView.setVisibility(View.GONE); } else { detailsButtonView.setVisibility(View.VISIBLE); + boolean canReportCallerId = + mCachedNumberLookupService != null + && mCachedNumberLookupService.canReportAsInvalid(info.sourceType, info.objectId); detailsButtonView.setTag( - IntentProvider.getCallDetailIntentProvider(callDetailsEntries, buildContact())); + IntentProvider.getCallDetailIntentProvider( + callDetailsEntries, buildContact(), canReportCallerId)); } boolean isBlockedOrSpam = blockId != null || (isSpamFeatureEnabled && isSpam); @@ -616,6 +684,12 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder return false; } + private boolean showLightbringerPrimaryButton() { + return accountHandle != null + && accountHandle.getComponentName().equals(getLightbringer().getPhoneAccountComponentName()) + && lightbringerReady; + } + private static boolean hasDialableChar(CharSequence number) { if (TextUtils.isEmpty(number)) { return false; @@ -635,9 +709,7 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder if (accountHandle == null) { return false; } - if (accountHandle - .getComponentName() - .equals(getLightbringer().getPhoneAccountComponentName(mContext))) { + if (accountHandle.getComponentName().equals(getLightbringer().getPhoneAccountComponentName())) { return false; } return true; @@ -717,19 +789,14 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder getContactType()); } - private int getContactType() { - int contactType = ContactPhotoManager.TYPE_DEFAULT; - if (mCallLogCache.isVoicemailNumber(accountHandle, number)) { - contactType = ContactPhotoManager.TYPE_VOICEMAIL; - } else if (isSpam) { - contactType = ContactPhotoManager.TYPE_SPAM; - } else if (mCachedNumberLookupService != null - && mCachedNumberLookupService.isBusiness(info.sourceType)) { - contactType = ContactPhotoManager.TYPE_BUSINESS; - } else if (numberPresentation == TelecomManager.PRESENTATION_RESTRICTED) { - contactType = ContactPhotoManager.TYPE_GENERIC_AVATAR; - } - return contactType; + private @ContactType int getContactType() { + return LetterTileDrawable.getContactTypeFromPrimitives( + mCallLogCache.isVoicemailNumber(accountHandle, number), + isSpam, + mCachedNumberLookupService != null + && mCachedNumberLookupService.isBusiness(info.sourceType), + numberPresentation, + false); } @Override @@ -795,19 +862,45 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder mVoicemailPlaybackPresenter.shareVoicemail(); } else { logCallLogAction(view.getId()); + final IntentProvider intentProvider = (IntentProvider) view.getTag(); - if (intentProvider != null) { - final Intent intent = intentProvider.getIntent(mContext); - // See IntentProvider.getCallDetailIntentProvider() for why this may be null. - if (intent != null) { - DialerUtils.startActivityWithErrorToast(mContext, intent); + if (intentProvider == null) { + return; + } + + final Intent intent = intentProvider.getIntent(mContext); + // See IntentProvider.getCallDetailIntentProvider() for why this may be null. + if (intent == null) { + return; + } + + // We check to see if we are starting a Lightbringer intent. The reason is Lightbringer + // intents need to be started using startActivityForResult instead of the usual startActivity + String packageName = intent.getPackage(); + if (getLightbringer().getPackageName().equals(packageName)) { + startLightbringerActivity(intent); + } else { + if (intent.getComponent() != null + && CallDetailsActivity.class.getName().equals(intent.getComponent().getClassName())) { + // We are going to open call detail + PerformanceReport.recordClick(UiAction.Type.OPEN_CALL_DETAIL); } + DialerUtils.startActivityWithErrorToast(mContext, intent); } } } - private CallComposerContact buildContact() { - CallComposerContact.Builder contact = CallComposerContact.newBuilder(); + private void startLightbringerActivity(Intent intent) { + try { + Activity activity = (Activity) mContext; + activity.startActivityForResult(intent, DialtactsActivity.ACTIVITY_REQUEST_CODE_LIGHTBRINGER); + } catch (ActivityNotFoundException e) { + Toast.makeText(mContext, R.string.activity_not_available, Toast.LENGTH_SHORT).show(); + } + } + + private DialerContact buildContact() { + DialerContact.Builder contact = DialerContact.newBuilder(); contact.setPhotoId(info.photoId); if (info.photoUri != null) { contact.setPhotoUri(info.photoUri.toString()); @@ -826,6 +919,19 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder } /* phone number type (e.g. mobile) in second line of contact view */ contact.setNumberLabel(numberType); + + /* third line of contact view. */ + String accountLabel = mCallLogCache.getAccountLabel(accountHandle); + if (!TextUtils.isEmpty(accountLabel)) { + SimDetails.Builder simDetails = SimDetails.newBuilder().setNetwork(accountLabel); + int color = mCallLogCache.getAccountColor(accountHandle); + if (color == PhoneAccount.NO_HIGHLIGHT_COLOR) { + simDetails.setColor(R.color.secondary_text_color); + } else { + simDetails.setColor(color); + } + contact.setSimDetails(simDetails.build()); + } return contact.build(); } @@ -834,8 +940,38 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder Logger.get(mContext).logImpression(DialerImpression.Type.CALL_LOG_SEND_MESSAGE); } else if (id == R.id.add_to_existing_contact_action) { Logger.get(mContext).logImpression(DialerImpression.Type.CALL_LOG_ADD_TO_CONTACT); + switch (hostUi) { + case HostUi.CALL_HISTORY: + Logger.get(mContext) + .logImpression(DialerImpression.Type.ADD_TO_A_CONTACT_FROM_CALL_HISTORY); + break; + case HostUi.CALL_LOG: + Logger.get(mContext).logImpression(DialerImpression.Type.ADD_TO_A_CONTACT_FROM_CALL_LOG); + break; + case HostUi.VOICEMAIL: + Logger.get(mContext).logImpression(DialerImpression.Type.ADD_TO_A_CONTACT_FROM_VOICEMAIL); + break; + default: + throw Assert.createIllegalStateFailException(); + } } else if (id == R.id.create_new_contact_action) { Logger.get(mContext).logImpression(DialerImpression.Type.CALL_LOG_CREATE_NEW_CONTACT); + switch (hostUi) { + case HostUi.CALL_HISTORY: + Logger.get(mContext) + .logImpression(DialerImpression.Type.CREATE_NEW_CONTACT_FROM_CALL_HISTORY); + break; + case HostUi.CALL_LOG: + Logger.get(mContext) + .logImpression(DialerImpression.Type.CREATE_NEW_CONTACT_FROM_CALL_LOG); + break; + case HostUi.VOICEMAIL: + Logger.get(mContext) + .logImpression(DialerImpression.Type.CREATE_NEW_CONTACT_FROM_VOICEMAIL); + break; + default: + throw Assert.createIllegalStateFailException(); + } } } @@ -987,6 +1123,15 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder Logger.get(mContext).logScreenView(ScreenEvent.Type.CALL_LOG_CONTEXT_MENU, (Activity) mContext); } + /** Specifies where the view holder belongs. */ + @IntDef({HostUi.CALL_LOG, HostUi.CALL_HISTORY, HostUi.VOICEMAIL}) + @Retention(RetentionPolicy.SOURCE) + private @interface HostUi { + int CALL_LOG = 0; + int CALL_HISTORY = 1; + int VOICEMAIL = 2; + } + public interface OnClickListener { void onBlockReportSpam( diff --git a/java/com/android/dialer/app/calllog/CallLogNotificationsQueryHelper.java b/java/com/android/dialer/app/calllog/CallLogNotificationsQueryHelper.java index e169b8de909121e4a948f035c5af28fba5b962cb..43e03e9fdad3972f7db45202c2cd3d6f26b389be 100644 --- a/java/com/android/dialer/app/calllog/CallLogNotificationsQueryHelper.java +++ b/java/com/android/dialer/app/calllog/CallLogNotificationsQueryHelper.java @@ -18,7 +18,6 @@ package com.android.dialer.app.calllog; import android.Manifest; import android.annotation.TargetApi; -import android.app.NotificationManager; import android.content.ContentResolver; import android.content.ContentUris; import android.content.ContentValues; @@ -27,6 +26,7 @@ import android.database.Cursor; import android.net.Uri; import android.os.Build.VERSION_CODES; import android.provider.CallLog.Calls; +import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.annotation.WorkerThread; import android.support.v4.os.UserManagerCompat; @@ -36,7 +36,6 @@ import com.android.dialer.app.R; import com.android.dialer.calllogutils.PhoneNumberDisplayUtil; import com.android.dialer.common.LogUtil; import com.android.dialer.location.GeoUtil; -import com.android.dialer.notification.GroupedNotificationUtil; import com.android.dialer.phonenumbercache.ContactInfo; import com.android.dialer.phonenumbercache.ContactInfoHelper; import com.android.dialer.util.PermissionsUtil; @@ -46,7 +45,6 @@ import java.util.List; /** Helper class operating on call log notifications. */ public class CallLogNotificationsQueryHelper { - private static final String TAG = "CallLogNotifHelper"; private final Context mContext; private final NewCallsQuery mNewCallsQuery; private final ContactInfoHelper mContactInfoHelper; @@ -74,44 +72,58 @@ public class CallLogNotificationsQueryHelper { countryIso); } + public static void markAllMissedCallsInCallLogAsRead(@NonNull Context context) { + markMissedCallsInCallLogAsRead(context, null); + } + + public static void markSingleMissedCallInCallLogAsRead( + @NonNull Context context, @Nullable Uri callUri) { + if (callUri == null) { + LogUtil.e( + "CallLogNotificationsQueryHelper.markSingleMissedCallInCallLogAsRead", + "call URI is null, unable to mark call as read"); + } else { + markMissedCallsInCallLogAsRead(context, callUri); + } + } + /** - * Removes the missed call notifications and marks calls as read. If a callUri is provided, only - * that call is marked as read. + * If callUri is null then calls with a matching callUri are marked as read, otherwise all calls + * are marked as read. */ @WorkerThread - public static void removeMissedCallNotifications(Context context, @Nullable Uri callUri) { - // Call log is only accessible when unlocked. If that's the case, clear the list of - // new missed calls from the call log. - if (UserManagerCompat.isUserUnlocked(context) && PermissionsUtil.hasPhonePermissions(context)) { - ContentValues values = new ContentValues(); - values.put(Calls.NEW, 0); - values.put(Calls.IS_READ, 1); - StringBuilder where = new StringBuilder(); - where.append(Calls.NEW); - where.append(" = 1 AND "); - where.append(Calls.TYPE); - where.append(" = ?"); - try { - context - .getContentResolver() - .update( - callUri == null ? Calls.CONTENT_URI : callUri, - values, - where.toString(), - new String[] {Integer.toString(Calls.MISSED_TYPE)}); - } catch (IllegalArgumentException e) { - LogUtil.e( - "CallLogNotificationsQueryHelper.removeMissedCallNotifications", - "contacts provider update command failed", - e); - } + private static void markMissedCallsInCallLogAsRead(Context context, @Nullable Uri callUri) { + if (!UserManagerCompat.isUserUnlocked(context)) { + LogUtil.e("CallLogNotificationsQueryHelper.markMissedCallsInCallLogAsRead", "locked"); + return; + } + if (!PermissionsUtil.hasPhonePermissions(context)) { + LogUtil.e("CallLogNotificationsQueryHelper.markMissedCallsInCallLogAsRead", "no permission"); + return; } - GroupedNotificationUtil.removeNotification( - context.getSystemService(NotificationManager.class), - callUri != null ? callUri.toString() : null, - R.id.notification_missed_call, - MissedCallNotifier.NOTIFICATION_TAG); + ContentValues values = new ContentValues(); + values.put(Calls.NEW, 0); + values.put(Calls.IS_READ, 1); + StringBuilder where = new StringBuilder(); + where.append(Calls.NEW); + where.append(" = 1 AND "); + where.append(Calls.TYPE); + where.append(" = ?"); + try { + context + .getContentResolver() + .update( + callUri == null ? Calls.CONTENT_URI : callUri, + values, + where.toString(), + new String[] {Integer.toString(Calls.MISSED_TYPE)}); + } catch (IllegalArgumentException e) { + LogUtil.e( + "CallLogNotificationsQueryHelper.markMissedCallsInCallLogAsRead", + "contacts provider update command failed", + e); + } } /** Create a new instance of {@link NewCallsQuery}. */ @@ -281,7 +293,9 @@ public class CallLogNotificationsQueryHelper { @TargetApi(VERSION_CODES.M) public List query(int type) { if (!PermissionsUtil.hasPermission(mContext, Manifest.permission.READ_CALL_LOG)) { - LogUtil.w(TAG, "No READ_CALL_LOG permission, returning null for calls lookup."); + LogUtil.w( + "CallLogNotificationsQueryHelper.DefaultNewCallsQuery.query", + "no READ_CALL_LOG permission, returning null for calls lookup."); return null; } final String selection = String.format("%s = 1 AND %s = ?", Calls.NEW, Calls.TYPE); @@ -302,7 +316,9 @@ public class CallLogNotificationsQueryHelper { } return newCalls; } catch (RuntimeException e) { - LogUtil.w(TAG, "Exception when querying Contacts Provider for calls lookup"); + LogUtil.w( + "CallLogNotificationsQueryHelper.DefaultNewCallsQuery.query", + "exception when querying Contacts Provider for calls lookup"); return null; } } diff --git a/java/com/android/dialer/app/calllog/CallLogNotificationsService.java b/java/com/android/dialer/app/calllog/CallLogNotificationsService.java index 7dfd2cb69967548463423dd2999220f28baf9741..be1ebfb6ddc4e64f3cfdd09758808177df12fb33 100644 --- a/java/com/android/dialer/app/calllog/CallLogNotificationsService.java +++ b/java/com/android/dialer/app/calllog/CallLogNotificationsService.java @@ -17,12 +17,13 @@ package com.android.dialer.app.calllog; import android.app.IntentService; +import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.net.Uri; -import android.os.Handler; -import android.os.Looper; +import android.support.annotation.NonNull; import android.support.annotation.Nullable; +import android.support.annotation.VisibleForTesting; import com.android.dialer.common.LogUtil; import com.android.dialer.telecom.TelecomUtil; import com.android.dialer.util.PermissionsUtil; @@ -43,16 +44,20 @@ import com.android.dialer.util.PermissionsUtil; */ public class CallLogNotificationsService extends IntentService { - /** Action to mark all the new voicemails as old. */ - public static final String ACTION_MARK_NEW_VOICEMAILS_AS_OLD = - "com.android.dialer.calllog.ACTION_MARK_NEW_VOICEMAILS_AS_OLD"; + private static final String ACTION_MARK_ALL_NEW_VOICEMAILS_AS_OLD = + "com.android.dialer.calllog.ACTION_MARK_ALL_NEW_VOICEMAILS_AS_OLD"; - /** Action to mark all the new missed calls as old. */ - public static final String ACTION_MARK_NEW_MISSED_CALLS_AS_OLD = - "com.android.dialer.calllog.ACTION_MARK_NEW_MISSED_CALLS_AS_OLD"; + private static final String ACTION_MARK_SINGLE_NEW_VOICEMAIL_AS_OLD = + "com.android.dialer.calllog.ACTION_MARK_SINGLE_NEW_VOICEMAIL_AS_OLD "; - /** Action to update missed call notifications with a post call note. */ - public static final String ACTION_INCOMING_POST_CALL = + @VisibleForTesting + static final String ACTION_CANCEL_ALL_MISSED_CALLS = + "com.android.dialer.calllog.ACTION_CANCEL_ALL_MISSED_CALLS"; + + private static final String ACTION_CANCEL_SINGLE_MISSED_CALL = + "com.android.dialer.calllog.ACTION_CANCEL_SINGLE_MISSED_CALL"; + + private static final String ACTION_INCOMING_POST_CALL = "com.android.dialer.calllog.INCOMING_POST_CALL"; /** Action to call back a missed call. */ @@ -64,7 +69,7 @@ public class CallLogNotificationsService extends IntentService { * *

It must be a {@link String} */ - public static final String EXTRA_POST_CALL_NOTE = "POST_CALL_NOTE"; + private static final String EXTRA_POST_CALL_NOTE = "POST_CALL_NOTE"; /** * Extra to be included with {@link #ACTION_INCOMING_POST_CALL} to represent the phone number the @@ -72,10 +77,9 @@ public class CallLogNotificationsService extends IntentService { * *

It must be a {@link String} */ - public static final String EXTRA_POST_CALL_NUMBER = "POST_CALL_NUMBER"; + private static final String EXTRA_POST_CALL_NUMBER = "POST_CALL_NUMBER"; public static final int UNKNOWN_MISSED_CALL_COUNT = -1; - private VoicemailQueryHandler mVoicemailQueryHandler; public CallLogNotificationsService() { super("CallLogNotificationsService"); @@ -89,52 +93,95 @@ public class CallLogNotificationsService extends IntentService { context.startService(serviceIntent); } - public static void markNewVoicemailsAsOld(Context context, @Nullable Uri voicemailUri) { + public static void markAllNewVoicemailsAsOld(Context context) { + LogUtil.enterBlock("CallLogNotificationsService.markAllNewVoicemailsAsOld"); Intent serviceIntent = new Intent(context, CallLogNotificationsService.class); - serviceIntent.setAction(CallLogNotificationsService.ACTION_MARK_NEW_VOICEMAILS_AS_OLD); + serviceIntent.setAction(CallLogNotificationsService.ACTION_MARK_ALL_NEW_VOICEMAILS_AS_OLD); + context.startService(serviceIntent); + } + + public static void markSingleNewVoicemailAsOld(Context context, @Nullable Uri voicemailUri) { + LogUtil.enterBlock("CallLogNotificationsService.markSingleNewVoicemailAsOld"); + Intent serviceIntent = new Intent(context, CallLogNotificationsService.class); + serviceIntent.setAction(CallLogNotificationsService.ACTION_MARK_SINGLE_NEW_VOICEMAIL_AS_OLD); serviceIntent.setData(voicemailUri); context.startService(serviceIntent); } - public static void markNewMissedCallsAsOld(Context context, @Nullable Uri callUri) { + public static PendingIntent createMarkAllNewVoicemailsAsOldIntent(@NonNull Context context) { + Intent intent = new Intent(context, CallLogNotificationsService.class); + intent.setAction(CallLogNotificationsService.ACTION_MARK_ALL_NEW_VOICEMAILS_AS_OLD); + return PendingIntent.getService(context, 0, intent, 0); + } + + public static PendingIntent createMarkSingleNewVoicemailAsOldIntent( + @NonNull Context context, @Nullable Uri voicemailUri) { + Intent intent = new Intent(context, CallLogNotificationsService.class); + intent.setAction(CallLogNotificationsService.ACTION_MARK_SINGLE_NEW_VOICEMAIL_AS_OLD); + intent.setData(voicemailUri); + return PendingIntent.getService(context, 0, intent, 0); + } + + public static void cancelAllMissedCalls(@NonNull Context context) { + LogUtil.enterBlock("CallLogNotificationsService.cancelAllMissedCalls"); Intent serviceIntent = new Intent(context, CallLogNotificationsService.class); - serviceIntent.setAction(ACTION_MARK_NEW_MISSED_CALLS_AS_OLD); - serviceIntent.setData(callUri); + serviceIntent.setAction(ACTION_CANCEL_ALL_MISSED_CALLS); context.startService(serviceIntent); } + public static PendingIntent createCancelAllMissedCallsPendingIntent(@NonNull Context context) { + Intent intent = new Intent(context, CallLogNotificationsService.class); + intent.setAction(ACTION_CANCEL_ALL_MISSED_CALLS); + return PendingIntent.getService(context, 0, intent, 0); + } + + public static PendingIntent createCancelSingleMissedCallPendingIntent( + @NonNull Context context, @Nullable Uri callUri) { + Intent intent = new Intent(context, CallLogNotificationsService.class); + intent.setAction(ACTION_CANCEL_SINGLE_MISSED_CALL); + intent.setData(callUri); + return PendingIntent.getService(context, 0, intent, 0); + } + @Override protected void onHandleIntent(Intent intent) { if (intent == null) { - LogUtil.d("CallLogNotificationsService.onHandleIntent", "could not handle null intent"); + LogUtil.e("CallLogNotificationsService.onHandleIntent", "could not handle null intent"); return; } - if (!PermissionsUtil.hasPermission(this, android.Manifest.permission.READ_CALL_LOG)) { + if (!PermissionsUtil.hasPermission(this, android.Manifest.permission.READ_CALL_LOG) + || !PermissionsUtil.hasPermission(this, android.Manifest.permission.WRITE_CALL_LOG)) { + LogUtil.e("CallLogNotificationsService.onHandleIntent", "no READ_CALL_LOG permission"); return; } String action = intent.getAction(); + LogUtil.i("CallLogNotificationsService.onHandleIntent", "action: " + action); switch (action) { - case ACTION_MARK_NEW_VOICEMAILS_AS_OLD: - // VoicemailQueryHandler cannot be created on the IntentService worker thread. The completed - // callback might happen when the thread is dead. - Handler handler = new Handler(Looper.getMainLooper()); - handler.post( - () -> { - if (mVoicemailQueryHandler == null) { - mVoicemailQueryHandler = new VoicemailQueryHandler(this, getContentResolver()); - } - mVoicemailQueryHandler.markNewVoicemailsAsOld(intent.getData()); - }); + case ACTION_MARK_ALL_NEW_VOICEMAILS_AS_OLD: + VoicemailQueryHandler.markAllNewVoicemailsAsRead(this); + VisualVoicemailNotifier.cancelAllVoicemailNotifications(this); + break; + case ACTION_MARK_SINGLE_NEW_VOICEMAIL_AS_OLD: + Uri voicemailUri = intent.getData(); + VoicemailQueryHandler.markSingleNewVoicemailAsRead(this, voicemailUri); + VisualVoicemailNotifier.cancelSingleVoicemailNotification(this, voicemailUri); break; case ACTION_INCOMING_POST_CALL: String note = intent.getStringExtra(EXTRA_POST_CALL_NOTE); String phoneNumber = intent.getStringExtra(EXTRA_POST_CALL_NUMBER); MissedCallNotifier.getIstance(this).insertPostCallNotification(phoneNumber, note); break; - case ACTION_MARK_NEW_MISSED_CALLS_AS_OLD: - CallLogNotificationsQueryHelper.removeMissedCallNotifications(this, intent.getData()); + case ACTION_CANCEL_ALL_MISSED_CALLS: + CallLogNotificationsQueryHelper.markAllMissedCallsInCallLogAsRead(this); + MissedCallNotifier.cancelAllMissedCallNotifications(this); + TelecomUtil.cancelMissedCallsNotification(this); + break; + case ACTION_CANCEL_SINGLE_MISSED_CALL: + Uri callUri = intent.getData(); + CallLogNotificationsQueryHelper.markSingleMissedCallInCallLogAsRead(this, callUri); + MissedCallNotifier.cancelSingleMissedCallNotification(this, callUri); TelecomUtil.cancelMissedCallsNotification(this); break; case ACTION_CALL_BACK_FROM_MISSED_CALL_NOTIFICATION: @@ -145,7 +192,7 @@ public class CallLogNotificationsService extends IntentService { intent.getData()); break; default: - LogUtil.d("CallLogNotificationsService.onHandleIntent", "could not handle: " + intent); + LogUtil.e("CallLogNotificationsService.onHandleIntent", "no handler for action: " + action); break; } } diff --git a/java/com/android/dialer/app/calllog/CallLogReceiver.java b/java/com/android/dialer/app/calllog/CallLogReceiver.java index 172d001006b7a68135c72eeb1030f91b1be41f24..ce3132d126f384d6113b1c1e6f6b35537e603c4b 100644 --- a/java/com/android/dialer/app/calllog/CallLogReceiver.java +++ b/java/com/android/dialer/app/calllog/CallLogReceiver.java @@ -39,10 +39,10 @@ public class CallLogReceiver extends BroadcastReceiver { if (VoicemailContract.ACTION_NEW_VOICEMAIL.equals(intent.getAction())) { checkVoicemailStatus(context); PendingResult pendingResult = goAsync(); - DefaultVoicemailNotifier.updateVoicemailNotifications(context, pendingResult::finish); + VisualVoicemailUpdateTask.scheduleTask(context, pendingResult::finish); } else if (Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())) { PendingResult pendingResult = goAsync(); - DefaultVoicemailNotifier.updateVoicemailNotifications(context, pendingResult::finish); + VisualVoicemailUpdateTask.scheduleTask(context, pendingResult::finish); } else { LogUtil.w("CallLogReceiver.onReceive", "could not handle: " + intent); } diff --git a/java/com/android/dialer/app/calllog/ClearCallLogDialog.java b/java/com/android/dialer/app/calllog/ClearCallLogDialog.java index a01b895274d7187c0a43b1605d3eadd593101b94..155a9161870ff9e028c7b1c890b81efddb0bb079 100644 --- a/java/com/android/dialer/app/calllog/ClearCallLogDialog.java +++ b/java/com/android/dialer/app/calllog/ClearCallLogDialog.java @@ -54,7 +54,7 @@ public class ClearCallLogDialog extends DialogFragment { ProgressDialog.show( getActivity(), getString(R.string.clearCallLogProgress_title), "", true, false); progressDialog.setOwnerActivity(getActivity()); - CallLogNotificationsService.markNewMissedCallsAsOld(getContext(), null); + CallLogNotificationsService.cancelAllMissedCalls(getContext()); final AsyncTask task = new AsyncTask() { @Override diff --git a/java/com/android/dialer/app/calllog/DefaultVoicemailNotifier.java b/java/com/android/dialer/app/calllog/DefaultVoicemailNotifier.java deleted file mode 100644 index 58fe6fa2c06c36ca41f1cd565dda59f5de75896c..0000000000000000000000000000000000000000 --- a/java/com/android/dialer/app/calllog/DefaultVoicemailNotifier.java +++ /dev/null @@ -1,446 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License - */ - -package com.android.dialer.app.calllog; - -import android.annotation.TargetApi; -import android.app.Notification; -import android.app.NotificationManager; -import android.app.PendingIntent; -import android.content.Context; -import android.content.Intent; -import android.content.res.Resources; -import android.graphics.Bitmap; -import android.net.Uri; -import android.os.Build.VERSION; -import android.os.Build.VERSION_CODES; -import android.os.PersistableBundle; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.annotation.VisibleForTesting; -import android.support.annotation.WorkerThread; -import android.support.v4.os.BuildCompat; -import android.support.v4.util.Pair; -import android.telecom.PhoneAccount; -import android.telecom.PhoneAccountHandle; -import android.telecom.TelecomManager; -import android.telephony.CarrierConfigManager; -import android.telephony.PhoneNumberUtils; -import android.telephony.TelephonyManager; -import android.text.TextUtils; -import android.util.ArrayMap; -import com.android.contacts.common.compat.TelephonyManagerCompat; -import com.android.contacts.common.util.ContactDisplayUtils; -import com.android.dialer.app.DialtactsActivity; -import com.android.dialer.app.R; -import com.android.dialer.app.calllog.CallLogNotificationsQueryHelper.NewCall; -import com.android.dialer.app.contactinfo.ContactPhotoLoader; -import com.android.dialer.app.list.DialtactsPagerAdapter; -import com.android.dialer.blocking.FilteredNumberAsyncQueryHandler; -import com.android.dialer.blocking.FilteredNumbersUtil; -import com.android.dialer.calllogutils.PhoneAccountUtils; -import com.android.dialer.common.Assert; -import com.android.dialer.common.LogUtil; -import com.android.dialer.common.concurrent.DialerExecutor.Worker; -import com.android.dialer.common.concurrent.DialerExecutors; -import com.android.dialer.logging.DialerImpression; -import com.android.dialer.logging.Logger; -import com.android.dialer.notification.NotificationChannelManager; -import com.android.dialer.notification.NotificationChannelManager.Channel; -import com.android.dialer.phonenumbercache.ContactInfo; -import com.android.dialer.telecom.TelecomUtil; -import java.util.Iterator; -import java.util.List; -import java.util.Map; - -/** Shows a voicemail notification in the status bar. */ -public class DefaultVoicemailNotifier implements Worker { - - public static final String TAG = "VoicemailNotifier"; - - /** The tag used to identify notifications from this class. */ - static final String VISUAL_VOICEMAIL_NOTIFICATION_TAG = "DefaultVoicemailNotifier"; - /** The identifier of the notification of new voicemails. */ - private static final int VISUAL_VOICEMAIL_NOTIFICATION_ID = R.id.notification_visual_voicemail; - - private static final int LEGACY_VOICEMAIL_NOTIFICATION_ID = R.id.notification_legacy_voicemail; - private static final String LEGACY_VOICEMAIL_NOTIFICATION_TAG = "legacy_voicemail"; - - private final Context context; - private final CallLogNotificationsQueryHelper queryHelper; - private final FilteredNumberAsyncQueryHandler filteredNumberAsyncQueryHandler; - - @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE) - DefaultVoicemailNotifier( - Context context, - CallLogNotificationsQueryHelper queryHelper, - FilteredNumberAsyncQueryHandler filteredNumberAsyncQueryHandler) { - this.context = context; - this.queryHelper = queryHelper; - this.filteredNumberAsyncQueryHandler = filteredNumberAsyncQueryHandler; - } - - public DefaultVoicemailNotifier(Context context) { - this( - context, - CallLogNotificationsQueryHelper.getInstance(context), - new FilteredNumberAsyncQueryHandler(context)); - } - - @Nullable - @Override - public Void doInBackground(@Nullable Void input) throws Throwable { - updateNotification(); - return null; - } - - /** - * Updates the notification and notifies of the call with the given URI. - * - *

Clears the notification if there are no new voicemails, and notifies if the given URI - * corresponds to a new voicemail. - * - *

It is not safe to call this method from the main thread. - */ - @VisibleForTesting - @WorkerThread - void updateNotification() { - Assert.isWorkerThread(); - // Lookup the list of new voicemails to include in the notification. - final List newCalls = queryHelper.getNewVoicemails(); - - if (newCalls == null) { - // Query failed, just return. - return; - } - - Resources resources = context.getResources(); - - // This represents a list of names to include in the notification. - String callers = null; - - // Maps each number into a name: if a number is in the map, it has already left a more - // recent voicemail. - final Map contactInfos = new ArrayMap<>(); - - // Iterate over the new voicemails to determine all the information above. - Iterator itr = newCalls.iterator(); - while (itr.hasNext()) { - NewCall newCall = itr.next(); - - // Skip notifying for numbers which are blocked. - if (!FilteredNumbersUtil.hasRecentEmergencyCall(context) - && filteredNumberAsyncQueryHandler.getBlockedIdSynchronous( - newCall.number, newCall.countryIso) - != null) { - itr.remove(); - - if (newCall.voicemailUri != null) { - // Delete the voicemail. - CallLogAsyncTaskUtil.deleteVoicemailSynchronous(context, newCall.voicemailUri); - } - continue; - } - - // Check if we already know the name associated with this number. - ContactInfo contactInfo = contactInfos.get(newCall.number); - if (contactInfo == null) { - contactInfo = - queryHelper.getContactInfo( - newCall.number, newCall.numberPresentation, newCall.countryIso); - contactInfos.put(newCall.number, contactInfo); - // This is a new caller. Add it to the back of the list of callers. - if (TextUtils.isEmpty(callers)) { - callers = contactInfo.name; - } else { - callers = - resources.getString( - R.string.notification_voicemail_callers_list, callers, contactInfo.name); - } - } - } - - if (newCalls.isEmpty()) { - // No voicemails to notify about - return; - } - - Notification.Builder groupSummary = - createNotificationBuilder() - .setContentTitle( - resources.getQuantityString( - R.plurals.notification_voicemail_title, newCalls.size(), newCalls.size())) - .setContentText(callers) - .setDeleteIntent(createMarkNewVoicemailsAsOldIntent(null)) - .setGroupSummary(true) - .setContentIntent(newVoicemailIntent(null)); - - if (BuildCompat.isAtLeastO()) { - groupSummary.setGroupAlertBehavior(Notification.GROUP_ALERT_CHILDREN); - } - - NotificationChannelManager.applyChannel( - groupSummary, - context, - Channel.VOICEMAIL, - PhoneAccountHandles.getAccount(context, newCalls.get(0))); - - LogUtil.i(TAG, "Creating visual voicemail notification"); - getNotificationManager() - .notify( - VISUAL_VOICEMAIL_NOTIFICATION_TAG, - VISUAL_VOICEMAIL_NOTIFICATION_ID, - groupSummary.build()); - - for (NewCall voicemail : newCalls) { - getNotificationManager() - .notify( - voicemail.callsUri.toString(), - VISUAL_VOICEMAIL_NOTIFICATION_ID, - createNotificationForVoicemail(voicemail, contactInfos)); - } - } - - /** - * Replicates how packages/services/Telephony/NotificationMgr.java handles legacy voicemail - * notification. The notification will not be stackable because no information is available for - * individual voicemails. - */ - @TargetApi(VERSION_CODES.O) - public void notifyLegacyVoicemail( - @NonNull PhoneAccountHandle phoneAccountHandle, - int count, - String voicemailNumber, - PendingIntent callVoicemailIntent, - PendingIntent voicemailSettingIntent) { - Assert.isNotNull(phoneAccountHandle); - Assert.checkArgument(BuildCompat.isAtLeastO()); - TelephonyManager telephonyManager = - context - .getSystemService(TelephonyManager.class) - .createForPhoneAccountHandle(phoneAccountHandle); - Assert.isNotNull(telephonyManager); - LogUtil.i(TAG, "Creating legacy voicemail notification"); - - PersistableBundle carrierConfig = telephonyManager.getCarrierConfig(); - - String notificationTitle = - context - .getResources() - .getQuantityString(R.plurals.notification_voicemail_title, count, count); - - TelecomManager telecomManager = context.getSystemService(TelecomManager.class); - PhoneAccount phoneAccount = telecomManager.getPhoneAccount(phoneAccountHandle); - - String notificationText; - PendingIntent pendingIntent; - - if (voicemailSettingIntent != null) { - // If the voicemail number if unknown, instead of calling voicemail, take the user - // to the voicemail settings. - notificationText = context.getString(R.string.notification_voicemail_no_vm_number); - pendingIntent = voicemailSettingIntent; - } else { - if (PhoneAccountUtils.getSubscriptionPhoneAccounts(context).size() > 1) { - notificationText = phoneAccount.getShortDescription().toString(); - } else { - notificationText = - String.format( - context.getString(R.string.notification_voicemail_text_format), - PhoneNumberUtils.formatNumber(voicemailNumber)); - } - pendingIntent = callVoicemailIntent; - } - Notification.Builder builder = new Notification.Builder(context); - builder - .setSmallIcon(android.R.drawable.stat_notify_voicemail) - .setColor(context.getColor(R.color.dialer_theme_color)) - .setWhen(System.currentTimeMillis()) - .setContentTitle(notificationTitle) - .setContentText(notificationText) - .setContentIntent(pendingIntent) - .setSound(telephonyManager.getVoicemailRingtoneUri(phoneAccountHandle)) - .setOngoing( - carrierConfig.getBoolean( - CarrierConfigManager.KEY_VOICEMAIL_NOTIFICATION_PERSISTENT_BOOL)); - - if (telephonyManager.isVoicemailVibrationEnabled(phoneAccountHandle)) { - builder.setDefaults(Notification.DEFAULT_VIBRATE); - } - - NotificationChannelManager.applyChannel( - builder, context, Channel.VOICEMAIL, phoneAccountHandle); - Notification notification = builder.build(); - getNotificationManager() - .notify(LEGACY_VOICEMAIL_NOTIFICATION_TAG, LEGACY_VOICEMAIL_NOTIFICATION_ID, notification); - } - - public void cancelLegacyNotification() { - LogUtil.i(TAG, "Clearing legacy voicemail notification"); - getNotificationManager() - .cancel(LEGACY_VOICEMAIL_NOTIFICATION_TAG, LEGACY_VOICEMAIL_NOTIFICATION_ID); - } - - /** - * Determines which ringtone Uri and Notification defaults to use when updating the notification - * for the given call. - */ - private Pair getNotificationInfo(@Nullable NewCall callToNotify) { - LogUtil.v(TAG, "getNotificationInfo"); - if (callToNotify == null) { - LogUtil.i(TAG, "callToNotify == null"); - return new Pair<>(null, 0); - } - PhoneAccountHandle accountHandle = PhoneAccountHandles.getAccount(context, callToNotify); - if (accountHandle == null) { - LogUtil.i(TAG, "No default phone account found, using default notification ringtone"); - return new Pair<>(null, Notification.DEFAULT_ALL); - } - return new Pair<>( - TelephonyManagerCompat.getVoicemailRingtoneUri(getTelephonyManager(), accountHandle), - getNotificationDefaults(accountHandle)); - } - - private int getNotificationDefaults(PhoneAccountHandle accountHandle) { - if (VERSION.SDK_INT >= VERSION_CODES.N) { - return TelephonyManagerCompat.isVoicemailVibrationEnabled( - getTelephonyManager(), accountHandle) - ? Notification.DEFAULT_VIBRATE - : 0; - } - return Notification.DEFAULT_ALL; - } - - /** Creates a pending intent that marks all new voicemails as old. */ - private PendingIntent createMarkNewVoicemailsAsOldIntent(@Nullable Uri voicemailUri) { - Intent intent = new Intent(context, CallLogNotificationsService.class); - intent.setAction(CallLogNotificationsService.ACTION_MARK_NEW_VOICEMAILS_AS_OLD); - intent.setData(voicemailUri); - return PendingIntent.getService(context, 0, intent, 0); - } - - private NotificationManager getNotificationManager() { - return (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); - } - - private TelephonyManager getTelephonyManager() { - return (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); - } - - private Notification createNotificationForVoicemail( - @NonNull NewCall voicemail, @NonNull Map contactInfos) { - Pair notificationInfo = getNotificationInfo(voicemail); - ContactInfo contactInfo = contactInfos.get(voicemail.number); - - Notification.Builder notificationBuilder = - createNotificationBuilder() - .setContentTitle( - context - .getResources() - .getQuantityString(R.plurals.notification_voicemail_title, 1, 1)) - .setContentText( - ContactDisplayUtils.getTtsSpannedPhoneNumber( - context.getResources(), - R.string.notification_new_voicemail_ticker, - contactInfo.name)) - .setWhen(voicemail.dateMs) - .setSound(notificationInfo.first) - .setDefaults(notificationInfo.second); - - if (voicemail.voicemailUri != null) { - notificationBuilder.setDeleteIntent( - createMarkNewVoicemailsAsOldIntent(voicemail.voicemailUri)); - } - - NotificationChannelManager.applyChannel( - notificationBuilder, - context, - Channel.VOICEMAIL, - PhoneAccountHandles.getAccount(context, voicemail)); - - ContactPhotoLoader loader = new ContactPhotoLoader(context, contactInfo); - Bitmap photoIcon = loader.loadPhotoIcon(); - if (photoIcon != null) { - notificationBuilder.setLargeIcon(photoIcon); - } - if (!TextUtils.isEmpty(voicemail.transcription)) { - Logger.get(context) - .logImpression(DialerImpression.Type.VVM_NOTIFICATION_CREATED_WITH_TRANSCRIPTION); - notificationBuilder.setStyle( - new Notification.BigTextStyle().bigText(voicemail.transcription)); - } - notificationBuilder.setContentIntent(newVoicemailIntent(voicemail)); - Logger.get(context).logImpression(DialerImpression.Type.VVM_NOTIFICATION_CREATED); - return notificationBuilder.build(); - } - - private Notification.Builder createNotificationBuilder() { - return new Notification.Builder(context) - .setSmallIcon(android.R.drawable.stat_notify_voicemail) - .setColor(context.getColor(R.color.dialer_theme_color)) - .setGroup(VISUAL_VOICEMAIL_NOTIFICATION_TAG) - .setOnlyAlertOnce(true) - .setAutoCancel(true); - } - - private PendingIntent newVoicemailIntent(@Nullable NewCall voicemail) { - Intent intent = - DialtactsActivity.getShowTabIntent(context, DialtactsPagerAdapter.TAB_INDEX_VOICEMAIL); - // TODO (b/35486204): scroll to this voicemail - if (voicemail != null) { - intent.setData(voicemail.voicemailUri); - } - intent.putExtra(DialtactsActivity.EXTRA_CLEAR_NEW_VOICEMAILS, true); - return PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); - } - - /** - * Updates the voicemail notifications displayed. - * - * @param runnable Called when the async update task completes no matter if it succeeds or fails. - * May be null. - */ - static void updateVoicemailNotifications(Context context, Runnable runnable) { - if (!TelecomUtil.isDefaultDialer(context)) { - LogUtil.i( - "DefaultVoicemailNotifier.updateVoicemailNotifications", - "not default dialer, not scheduling update to voicemail notifications"); - return; - } - - DialerExecutors.createNonUiTaskBuilder(new DefaultVoicemailNotifier(context)) - .onSuccess( - output -> { - LogUtil.i( - "DefaultVoicemailNotifier.updateVoicemailNotifications", - "update voicemail notifications successful"); - if (runnable != null) { - runnable.run(); - } - }) - .onFailure( - throwable -> { - LogUtil.i( - "DefaultVoicemailNotifier.updateVoicemailNotifications", - "update voicemail notifications failed"); - if (runnable != null) { - runnable.run(); - } - }) - .build() - .executeParallel(null); - } -} diff --git a/java/com/android/dialer/app/calllog/DialerQuickContactBadge.java b/java/com/android/dialer/app/calllog/DialerQuickContactBadge.java new file mode 100644 index 0000000000000000000000000000000000000000..a3aac41fafa2b7210e4e363396a5ca99aab76007 --- /dev/null +++ b/java/com/android/dialer/app/calllog/DialerQuickContactBadge.java @@ -0,0 +1,63 @@ +/* + * Copyright (C) 2017 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License + */ + +package com.android.dialer.app.calllog; + +import android.content.Context; +import android.util.AttributeSet; +import android.view.View; +import android.widget.QuickContactBadge; +import com.android.dialer.app.calllog.CallLogAdapter.OnActionModeStateChangedListener; +import com.android.dialer.logging.DialerImpression; +import com.android.dialer.logging.Logger; + +/** Allows us to click the contact badge for non multi select mode. */ +class DialerQuickContactBadge extends QuickContactBadge { + + private View.OnClickListener mExtraOnClickListener; + private OnActionModeStateChangedListener onActionModeStateChangeListener; + + public DialerQuickContactBadge(Context context) { + super(context); + } + + public DialerQuickContactBadge(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public DialerQuickContactBadge(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + } + + @Override + public void onClick(View v) { + if (mExtraOnClickListener != null + && onActionModeStateChangeListener.isActionModeStateEnabled()) { + Logger.get(v.getContext()) + .logImpression(DialerImpression.Type.MULTISELECT_SINGLE_PRESS_TAP_VIA_CONTACT_BADGE); + mExtraOnClickListener.onClick(v); + } else { + super.onClick(v); + } + } + + public void setMulitSelectListeners( + View.OnClickListener extraOnClickListener, + OnActionModeStateChangedListener actionModeStateChangeListener) { + mExtraOnClickListener = extraOnClickListener; + onActionModeStateChangeListener = actionModeStateChangeListener; + } +} diff --git a/java/com/android/dialer/app/calllog/IntentProvider.java b/java/com/android/dialer/app/calllog/IntentProvider.java index a94c6781ed837aafd54d23e81eda19c5a2c57669..e1ec9f5095076a35b4b40ef5eae6d2d56af4d209 100644 --- a/java/com/android/dialer/app/calllog/IntentProvider.java +++ b/java/com/android/dialer/app/calllog/IntentProvider.java @@ -24,12 +24,14 @@ import android.provider.ContactsContract; import android.telecom.PhoneAccountHandle; import com.android.contacts.common.model.Contact; import com.android.contacts.common.model.ContactLoader; -import com.android.dialer.callcomposer.CallComposerContact; import com.android.dialer.calldetails.CallDetailsActivity; import com.android.dialer.calldetails.CallDetailsEntries; import com.android.dialer.callintent.CallInitiationType; import com.android.dialer.callintent.CallIntentBuilder; +import com.android.dialer.dialercontact.DialerContact; import com.android.dialer.lightbringer.LightbringerComponent; +import com.android.dialer.logging.DialerImpression; +import com.android.dialer.logging.Logger; import com.android.dialer.util.CallUtil; import com.android.dialer.util.IntentUtil; import java.util.ArrayList; @@ -68,6 +70,7 @@ public abstract class IntentProvider { return new IntentProvider() { @Override public Intent getIntent(Context context) { + Logger.get(context).logImpression(DialerImpression.Type.IMS_VIDEO_REQUESTED_FROM_CALL_LOG); return new CallIntentBuilder(number, CallInitiationType.Type.CALL_LOG) .setPhoneAccountHandle(accountHandle) .setIsVideoCall(true) @@ -80,6 +83,8 @@ public abstract class IntentProvider { return new IntentProvider() { @Override public Intent getIntent(Context context) { + Logger.get(context) + .logImpression(DialerImpression.Type.LIGHTBRINGER_VIDEO_REQUESTED_FROM_CALL_LOG); return LightbringerComponent.get(context).getLightbringer().getIntent(context, number); } }; @@ -112,11 +117,12 @@ public abstract class IntentProvider { * @return The call details intent provider. */ public static IntentProvider getCallDetailIntentProvider( - CallDetailsEntries callDetailsEntries, CallComposerContact contact) { + CallDetailsEntries callDetailsEntries, DialerContact contact, boolean canReportCallerId) { return new IntentProvider() { @Override public Intent getIntent(Context context) { - return CallDetailsActivity.newInstance(context, callDetailsEntries, contact); + return CallDetailsActivity.newInstance( + context, callDetailsEntries, contact, canReportCallerId); } }; } diff --git a/java/com/android/dialer/app/calllog/LegacyVoicemailNotifier.java b/java/com/android/dialer/app/calllog/LegacyVoicemailNotifier.java new file mode 100644 index 0000000000000000000000000000000000000000..428c71677cf91ad942cbbcca23959e303128d0d6 --- /dev/null +++ b/java/com/android/dialer/app/calllog/LegacyVoicemailNotifier.java @@ -0,0 +1,156 @@ +/* + * Copyright (C) 2017 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License + */ + +package com.android.dialer.app.calllog; + +import android.annotation.TargetApi; +import android.app.Notification; +import android.app.NotificationManager; +import android.app.PendingIntent; +import android.content.Context; +import android.os.Build.VERSION_CODES; +import android.support.annotation.NonNull; +import android.support.v4.os.BuildCompat; +import android.telecom.PhoneAccount; +import android.telecom.PhoneAccountHandle; +import android.telecom.TelecomManager; +import android.telephony.CarrierConfigManager; +import android.telephony.PhoneNumberUtils; +import android.telephony.TelephonyManager; +import android.text.TextUtils; +import com.android.dialer.app.R; +import com.android.dialer.calllogutils.PhoneAccountUtils; +import com.android.dialer.common.Assert; +import com.android.dialer.common.LogUtil; +import com.android.dialer.notification.NotificationChannelManager; + +/** Shows a notification in the status bar for legacy vociemail. */ +@TargetApi(VERSION_CODES.O) +public final class LegacyVoicemailNotifier { + private static final String NOTIFICATION_TAG = "LegacyVoicemail"; + private static final int NOTIFICATION_ID = 1; + + /** + * Replicates how packages/services/Telephony/NotificationMgr.java handles legacy voicemail + * notification. The notification will not be stackable because no information is available for + * individual voicemails. + */ + public static void showNotification( + @NonNull Context context, + @NonNull PhoneAccountHandle handle, + int count, + String voicemailNumber, + PendingIntent callVoicemailIntent, + PendingIntent voicemailSettingsIntent, + boolean isRefresh) { + LogUtil.enterBlock("LegacyVoicemailNotifier.showNotification"); + Assert.isNotNull(handle); + Assert.checkArgument(BuildCompat.isAtLeastO()); + + TelephonyManager pinnedTelephonyManager = + context.getSystemService(TelephonyManager.class).createForPhoneAccountHandle(handle); + if (pinnedTelephonyManager == null) { + LogUtil.e("LegacyVoicemailNotifier.showNotification", "invalid PhoneAccountHandle"); + return; + } + + Notification notification = + createNotification( + context, + pinnedTelephonyManager, + handle, + count, + voicemailNumber, + callVoicemailIntent, + voicemailSettingsIntent, + isRefresh); + context + .getSystemService(NotificationManager.class) + .notify(NOTIFICATION_TAG, NOTIFICATION_ID, notification); + } + + @NonNull + private static Notification createNotification( + @NonNull Context context, + @NonNull TelephonyManager pinnedTelephonyManager, + @NonNull PhoneAccountHandle handle, + int count, + String voicemailNumber, + PendingIntent callVoicemailIntent, + PendingIntent voicemailSettingsIntent, + boolean isRefresh) { + String notificationTitle = + context + .getResources() + .getQuantityString(R.plurals.notification_voicemail_title, count, count); + boolean isOngoing = + pinnedTelephonyManager + .getCarrierConfig() + .getBoolean(CarrierConfigManager.KEY_VOICEMAIL_NOTIFICATION_PERSISTENT_BOOL); + + String contentText; + PendingIntent contentIntent; + if (!TextUtils.isEmpty(voicemailNumber) && callVoicemailIntent != null) { + contentText = getNotificationText(context, handle, voicemailNumber); + contentIntent = callVoicemailIntent; + } else { + contentText = context.getString(R.string.notification_voicemail_no_vm_number); + contentIntent = voicemailSettingsIntent; + } + + Notification.Builder builder = + new Notification.Builder(context) + .setSmallIcon(android.R.drawable.stat_notify_voicemail) + .setColor(context.getColor(R.color.dialer_theme_color)) + .setWhen(System.currentTimeMillis()) + .setContentTitle(notificationTitle) + .setContentText(contentText) + .setContentIntent(contentIntent) + .setSound(pinnedTelephonyManager.getVoicemailRingtoneUri(handle)) + .setOngoing(isOngoing) + .setOnlyAlertOnce(isRefresh) + .setChannelId(NotificationChannelManager.getVoicemailChannelId(context, handle)); + + if (pinnedTelephonyManager.isVoicemailVibrationEnabled(handle)) { + builder.setDefaults(Notification.DEFAULT_VIBRATE); + } + + return builder.build(); + } + + @NonNull + private static String getNotificationText( + @NonNull Context context, PhoneAccountHandle handle, String voicemailNumber) { + if (PhoneAccountUtils.getSubscriptionPhoneAccounts(context).size() > 1) { + TelecomManager telecomManager = context.getSystemService(TelecomManager.class); + PhoneAccount phoneAccount = telecomManager.getPhoneAccount(handle); + return phoneAccount.getShortDescription().toString(); + } else { + return String.format( + context.getString(R.string.notification_voicemail_text_format), + PhoneNumberUtils.formatNumber(voicemailNumber)); + } + } + + public static void cancelNotification(@NonNull Context context) { + LogUtil.enterBlock("LegacyVoicemailNotifier.cancelNotification"); + Assert.checkArgument(BuildCompat.isAtLeastO()); + NotificationManager notificationManager = context.getSystemService(NotificationManager.class); + notificationManager.cancel(NOTIFICATION_TAG, NOTIFICATION_ID); + } + + private LegacyVoicemailNotifier() {} +} diff --git a/java/com/android/dialer/app/calllog/MissedCallNotifier.java b/java/com/android/dialer/app/calllog/MissedCallNotifier.java index dd13298bc3ff5cfcd3f7566aa6da60b3e5c4ddff..e0e3fdf3f61e6b97d1a5d49879c37da5a5d8acd7 100644 --- a/java/com/android/dialer/app/calllog/MissedCallNotifier.java +++ b/java/com/android/dialer/app/calllog/MissedCallNotifier.java @@ -30,11 +30,13 @@ import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.annotation.VisibleForTesting; import android.support.annotation.WorkerThread; +import android.support.v4.os.BuildCompat; import android.support.v4.os.UserManagerCompat; import android.support.v4.util.Pair; import android.text.BidiFormatter; import android.text.TextDirectionHeuristics; import android.text.TextUtils; +import android.util.ArraySet; import com.android.contacts.common.ContactsUtils; import com.android.contacts.common.compat.PhoneNumberUtilsCompat; import com.android.dialer.app.DialtactsActivity; @@ -46,23 +48,20 @@ import com.android.dialer.callintent.CallInitiationType; import com.android.dialer.callintent.CallIntentBuilder; import com.android.dialer.common.LogUtil; import com.android.dialer.common.concurrent.DialerExecutor.Worker; -import com.android.dialer.notification.NotificationChannelManager; -import com.android.dialer.notification.NotificationChannelManager.Channel; +import com.android.dialer.notification.NotificationChannelId; import com.android.dialer.phonenumbercache.ContactInfo; import com.android.dialer.phonenumberutil.PhoneNumberHelper; import com.android.dialer.util.DialerUtils; import com.android.dialer.util.IntentUtil; -import java.util.HashSet; import java.util.List; import java.util.Set; /** Creates a notification for calls that the user missed (neither answered nor rejected). */ public class MissedCallNotifier implements Worker, Void> { - /** The tag used to identify notifications from this class. */ - static final String NOTIFICATION_TAG = "MissedCallNotifier"; - /** The identifier of the notification of new missed calls. */ - private static final int NOTIFICATION_ID = R.id.notification_missed_call; + static final String NOTIFICATION_TAG_PREFIX = "MissedCall_"; + static final String NOTIFICATION_GROUP = "MissedCall"; + private static final int NOTIFICATION_ID = 1; private final Context context; private final CallLogNotificationsQueryHelper callLogNotificationsQueryHelper; @@ -104,7 +103,8 @@ public class MissedCallNotifier implements Worker, Void> { if ((newCalls != null && newCalls.isEmpty()) || count == 0) { // No calls to notify about: clear the notification. - CallLogNotificationsQueryHelper.removeMissedCallNotifications(context, null); + CallLogNotificationsQueryHelper.markAllMissedCallsInCallLogAsRead(context); + cancelAllMissedCallNotifications(context); return; } @@ -146,7 +146,7 @@ public class MissedCallNotifier implements Worker, Void> { null, System.currentTimeMillis()); - //TODO: look up caller ID that is not in contacts. + // TODO: look up caller ID that is not in contacts. ContactInfo contactInfo = callLogNotificationsQueryHelper.getContactInfo( call.number, call.numberPresentation, call.countryIso); @@ -181,36 +181,39 @@ public class MissedCallNotifier implements Worker, Void> { publicSummaryBuilder .setContentTitle(context.getText(titleResId)) .setContentIntent(createCallLogPendingIntent()) - .setDeleteIntent(createClearMissedCallsPendingIntent(null)); + .setDeleteIntent( + CallLogNotificationsService.createCancelAllMissedCallsPendingIntent(context)); // Create the notification summary suitable for display when sensitive information is showing. groupSummary .setContentTitle(context.getText(titleResId)) .setContentText(expandedText) .setContentIntent(createCallLogPendingIntent()) - .setDeleteIntent(createClearMissedCallsPendingIntent(null)) + .setDeleteIntent( + CallLogNotificationsService.createCancelAllMissedCallsPendingIntent(context)) .setGroupSummary(useCallList) .setOnlyAlertOnce(useCallList) .setPublicVersion(publicSummaryBuilder.build()); - - NotificationChannelManager.applyChannel(groupSummary, context, Channel.MISSED_CALL, null); + if (BuildCompat.isAtLeastO()) { + groupSummary.setChannelId(NotificationChannelId.MISSED_CALL); + } Notification notification = groupSummary.build(); configureLedOnNotification(notification); LogUtil.i("MissedCallNotifier.updateMissedCallNotification", "adding missed call notification"); - getNotificationMgr().notify(NOTIFICATION_TAG, NOTIFICATION_ID, notification); + getNotificationMgr().notify(getNotificationTagForGroupSummary(), NOTIFICATION_ID, notification); if (useCallList) { // Do not repost active notifications to prevent erasing post call notes. NotificationManager manager = getNotificationMgr(); - Set activeTags = new HashSet<>(); + Set activeTags = new ArraySet<>(); for (StatusBarNotification activeNotification : manager.getActiveNotifications()) { activeTags.add(activeNotification.getTag()); } for (NewCall call : newCalls) { - String callTag = call.callsUri.toString(); + String callTag = getNotificationTagForCall(call); if (!activeTags.contains(callTag)) { manager.notify(callTag, NOTIFICATION_ID, getNotificationForCall(call, null)); } @@ -218,6 +221,59 @@ public class MissedCallNotifier implements Worker, Void> { } } + public static void cancelAllMissedCallNotifications(@NonNull Context context) { + NotificationManager notificationManager = context.getSystemService(NotificationManager.class); + for (StatusBarNotification notification : notificationManager.getActiveNotifications()) { + String tag = notification.getTag(); + if (tag != null && tag.startsWith(NOTIFICATION_TAG_PREFIX)) { + notificationManager.cancel(tag, notification.getId()); + } + } + } + + public static void cancelSingleMissedCallNotification( + @NonNull Context context, @Nullable Uri callUri) { + if (callUri == null) { + LogUtil.e( + "MissedCallNotifier.cancelSingleMissedCallNotification", + "unable to cancel notification, uri is null"); + return; + } + NotificationManager notificationManager = context.getSystemService(NotificationManager.class); + String callTag = getNotificationTagForCallUri(callUri); + String summaryTag = getNotificationTagForGroupSummary(); + int notificationCount = 0; + + for (StatusBarNotification notification : notificationManager.getActiveNotifications()) { + String currentTag = notification.getTag(); + if (currentTag == null) { + continue; + } + if (currentTag.equals(callTag)) { + notificationManager.cancel(notification.getTag(), notification.getId()); + } else if (currentTag.startsWith(NOTIFICATION_TAG_PREFIX) && !currentTag.equals(summaryTag)) { + notificationCount++; + } + } + + if (notificationCount == 0) { + // There are no more missed call notifications. Remove the summary notification too. + notificationManager.cancel(summaryTag, NOTIFICATION_ID); + } + } + + private static String getNotificationTagForGroupSummary() { + return NOTIFICATION_TAG_PREFIX + "GroupSummary"; + } + + private static String getNotificationTagForCall(@NonNull NewCall call) { + return getNotificationTagForCallUri(call.callsUri); + } + + private static String getNotificationTagForCallUri(@NonNull Uri callUri) { + return NOTIFICATION_TAG_PREFIX + callUri; + } + public void insertPostCallNotification(@NonNull String number, @NonNull String note) { List newCalls = callLogNotificationsQueryHelper.getNewMissedCalls(); if (newCalls != null && !newCalls.isEmpty()) { @@ -226,7 +282,9 @@ public class MissedCallNotifier implements Worker, Void> { // Update the first notification that matches our post call note sender. getNotificationMgr() .notify( - call.callsUri.toString(), NOTIFICATION_ID, getNotificationForCall(call, note)); + getNotificationTagForCall(call), + NOTIFICATION_ID, + getNotificationForCall(call, note)); break; } } @@ -308,7 +366,7 @@ public class MissedCallNotifier implements Worker, Void> { private Notification.Builder createNotificationBuilder() { return new Notification.Builder(context) - .setGroup(NOTIFICATION_TAG) + .setGroup(NOTIFICATION_GROUP) .setSmallIcon(android.R.drawable.stat_notify_missed_call) .setColor(context.getResources().getColor(R.color.dialer_theme_color, null)) .setAutoCancel(true) @@ -321,10 +379,14 @@ public class MissedCallNotifier implements Worker, Void> { Builder builder = createNotificationBuilder() .setWhen(call.dateMs) - .setDeleteIntent(createClearMissedCallsPendingIntent(call.callsUri)) + .setDeleteIntent( + CallLogNotificationsService.createCancelSingleMissedCallPendingIntent( + context, call.callsUri)) .setContentIntent(createCallLogPendingIntent(call.callsUri)); + if (BuildCompat.isAtLeastO()) { + builder.setChannelId(NotificationChannelId.MISSED_CALL); + } - NotificationChannelManager.applyChannel(builder, context, Channel.MISSED_CALL, null); return builder; } @@ -332,7 +394,8 @@ public class MissedCallNotifier implements Worker, Void> { @WorkerThread public void callBackFromMissedCall(String number, Uri callUri) { closeSystemDialogs(context); - CallLogNotificationsQueryHelper.removeMissedCallNotifications(context, callUri); + CallLogNotificationsQueryHelper.markSingleMissedCallInCallLogAsRead(context, callUri); + cancelSingleMissedCallNotification(context, callUri); DialerUtils.startActivityWithErrorToast( context, new CallIntentBuilder(number, CallInitiationType.Type.MISSED_CALL_NOTIFICATION) @@ -343,7 +406,8 @@ public class MissedCallNotifier implements Worker, Void> { /** Trigger an intent to send an sms from a missed call number. */ public void sendSmsFromMissedCall(String number, Uri callUri) { closeSystemDialogs(context); - CallLogNotificationsQueryHelper.removeMissedCallNotifications(context, callUri); + CallLogNotificationsQueryHelper.markSingleMissedCallInCallLogAsRead(context, callUri); + cancelSingleMissedCallNotification(context, callUri); DialerUtils.startActivityWithErrorToast( context, IntentUtil.getSendSmsIntent(number).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)); } @@ -371,14 +435,6 @@ public class MissedCallNotifier implements Worker, Void> { return PendingIntent.getActivity(context, 0, contentIntent, PendingIntent.FLAG_UPDATE_CURRENT); } - /** Creates a pending intent that marks all new missed calls as old. */ - private PendingIntent createClearMissedCallsPendingIntent(@Nullable Uri callUri) { - Intent intent = new Intent(context, CallLogNotificationsService.class); - intent.setAction(CallLogNotificationsService.ACTION_MARK_NEW_MISSED_CALLS_AS_OLD); - intent.setData(callUri); - return PendingIntent.getService(context, 0, intent, 0); - } - private PendingIntent createCallBackPendingIntent(String number, @NonNull Uri callUri) { Intent intent = new Intent(context, CallLogNotificationsService.class); intent.setAction(CallLogNotificationsService.ACTION_CALL_BACK_FROM_MISSED_CALL_NOTIFICATION); diff --git a/java/com/android/dialer/app/calllog/PhoneAccountHandles.java b/java/com/android/dialer/app/calllog/PhoneAccountHandles.java deleted file mode 100644 index acffffb1dc620877d470c4b141a5425d2d29b4a2..0000000000000000000000000000000000000000 --- a/java/com/android/dialer/app/calllog/PhoneAccountHandles.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (C) 2017 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.android.dialer.app.calllog; - -import android.content.ComponentName; -import android.content.Context; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.telecom.PhoneAccount; -import android.telecom.PhoneAccountHandle; -import com.android.dialer.app.calllog.CallLogNotificationsQueryHelper.NewCall; -import com.android.dialer.common.LogUtil; -import com.android.dialer.telecom.TelecomUtil; -import java.util.List; - -/** Methods to help extract {@link PhoneAccount} information from database and Telecomm sources. */ -class PhoneAccountHandles { - - @Nullable - public static PhoneAccountHandle getAccount(@NonNull Context context, @Nullable NewCall call) { - PhoneAccountHandle handle; - if (call == null || call.accountComponentName == null || call.accountId == null) { - LogUtil.v( - "PhoneAccountUtils.getAccount", - "accountComponentName == null || callToNotify.accountId == null"); - handle = TelecomUtil.getDefaultOutgoingPhoneAccount(context, PhoneAccount.SCHEME_TEL); - if (handle == null) { - List callCapablePhoneAccounts = - TelecomUtil.getCallCapablePhoneAccounts(context); - if (!callCapablePhoneAccounts.isEmpty()) { - return callCapablePhoneAccounts.get(0); - } - return null; - } - } else { - handle = - new PhoneAccountHandle( - ComponentName.unflattenFromString(call.accountComponentName), call.accountId); - } - if (handle.getComponentName() != null) { - LogUtil.v( - "PhoneAccountUtils.getAccount", - "PhoneAccountHandle.ComponentInfo:" + handle.getComponentName()); - } else { - LogUtil.i("PhoneAccountUtils.getAccount", "PhoneAccountHandle.ComponentInfo: null"); - } - return handle; - } -} diff --git a/java/com/android/dialer/app/calllog/VisualVoicemailNotifier.java b/java/com/android/dialer/app/calllog/VisualVoicemailNotifier.java new file mode 100644 index 0000000000000000000000000000000000000000..99fe466d8c5cf6cbf98a1410fb40b4a6cb8d6fe2 --- /dev/null +++ b/java/com/android/dialer/app/calllog/VisualVoicemailNotifier.java @@ -0,0 +1,291 @@ +/* + * Copyright (C) 2017 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License + */ + +package com.android.dialer.app.calllog; + +import android.app.Notification; +import android.app.NotificationManager; +import android.app.PendingIntent; +import android.content.ComponentName; +import android.content.Context; +import android.content.Intent; +import android.graphics.Bitmap; +import android.net.Uri; +import android.os.Build.VERSION; +import android.os.Build.VERSION_CODES; +import android.service.notification.StatusBarNotification; +import android.support.annotation.NonNull; +import android.support.annotation.Nullable; +import android.support.v4.os.BuildCompat; +import android.telecom.PhoneAccount; +import android.telecom.PhoneAccountHandle; +import android.telephony.TelephonyManager; +import android.text.TextUtils; +import com.android.contacts.common.util.ContactDisplayUtils; +import com.android.dialer.app.DialtactsActivity; +import com.android.dialer.app.R; +import com.android.dialer.app.calllog.CallLogNotificationsQueryHelper.NewCall; +import com.android.dialer.app.contactinfo.ContactPhotoLoader; +import com.android.dialer.app.list.DialtactsPagerAdapter; +import com.android.dialer.common.LogUtil; +import com.android.dialer.logging.DialerImpression; +import com.android.dialer.logging.Logger; +import com.android.dialer.notification.NotificationChannelManager; +import com.android.dialer.phonenumbercache.ContactInfo; +import com.android.dialer.telecom.TelecomUtil; +import java.util.List; +import java.util.Map; + +/** Shows a notification in the status bar for visual voicemail. */ +final class VisualVoicemailNotifier { + private static final String NOTIFICATION_TAG_PREFIX = "VisualVoicemail_"; + private static final String NOTIFICATION_GROUP = "VisualVoicemail"; + private static final int NOTIFICATION_ID = 1; + + public static void showNotifications( + @NonNull Context context, + @NonNull List newCalls, + @NonNull Map contactInfos, + @Nullable String callers) { + LogUtil.enterBlock("VisualVoicemailNotifier.showNotifications"); + PendingIntent deleteIntent = + CallLogNotificationsService.createMarkAllNewVoicemailsAsOldIntent(context); + String contentTitle = + context + .getResources() + .getQuantityString( + R.plurals.notification_voicemail_title, newCalls.size(), newCalls.size()); + Notification.Builder groupSummary = + createNotificationBuilder(context) + .setContentTitle(contentTitle) + .setContentText(callers) + .setDeleteIntent(deleteIntent) + .setGroupSummary(true) + .setContentIntent(newVoicemailIntent(context, null)); + + if (BuildCompat.isAtLeastO()) { + groupSummary.setGroupAlertBehavior(Notification.GROUP_ALERT_CHILDREN); + PhoneAccountHandle handle = getAccountForCall(context, newCalls.get(0)); + groupSummary.setChannelId(NotificationChannelManager.getVoicemailChannelId(context, handle)); + } + + NotificationManager notificationManager = context.getSystemService(NotificationManager.class); + notificationManager.notify( + getNotificationTagForGroupSummary(), NOTIFICATION_ID, groupSummary.build()); + + for (NewCall voicemail : newCalls) { + notificationManager.notify( + getNotificationTagForVoicemail(voicemail), + NOTIFICATION_ID, + createNotificationForVoicemail(context, voicemail, contactInfos)); + } + } + + public static void cancelAllVoicemailNotifications(@NonNull Context context) { + LogUtil.enterBlock("VisualVoicemailNotifier.cancelAllVoicemailNotifications"); + NotificationManager notificationManager = context.getSystemService(NotificationManager.class); + for (StatusBarNotification notification : notificationManager.getActiveNotifications()) { + String tag = notification.getTag(); + if (tag != null && tag.startsWith(NOTIFICATION_TAG_PREFIX)) { + notificationManager.cancel(tag, notification.getId()); + } + } + } + + public static void cancelSingleVoicemailNotification( + @NonNull Context context, @Nullable Uri voicemailUri) { + LogUtil.enterBlock("VisualVoicemailNotifier.cancelSingleVoicemailNotification"); + if (voicemailUri == null) { + LogUtil.e("VisualVoicemailNotifier.cancelSingleVoicemailNotification", "uri is null"); + return; + } + NotificationManager notificationManager = context.getSystemService(NotificationManager.class); + String voicemailTag = getNotificationTagForUri(voicemailUri); + String summaryTag = getNotificationTagForGroupSummary(); + int notificationCount = 0; + + for (StatusBarNotification notification : notificationManager.getActiveNotifications()) { + String currentTag = notification.getTag(); + if (currentTag == null) { + continue; + } + if (currentTag.equals(voicemailTag)) { + notificationManager.cancel(notification.getTag(), notification.getId()); + } else if (currentTag.startsWith(NOTIFICATION_TAG_PREFIX) && !currentTag.equals(summaryTag)) { + notificationCount++; + } + } + + if (notificationCount == 0) { + // There are no more visual voicemail notifications. Remove the summary notification too. + notificationManager.cancel(summaryTag, NOTIFICATION_ID); + } + } + + private static String getNotificationTagForVoicemail(@NonNull NewCall voicemail) { + return getNotificationTagForUri(voicemail.voicemailUri); + } + + private static String getNotificationTagForUri(@NonNull Uri voicemailUri) { + return NOTIFICATION_TAG_PREFIX + voicemailUri; + } + + private static String getNotificationTagForGroupSummary() { + return NOTIFICATION_TAG_PREFIX + "GroupSummary"; + } + + private static Notification.Builder createNotificationBuilder(@NonNull Context context) { + return new Notification.Builder(context) + .setSmallIcon(android.R.drawable.stat_notify_voicemail) + .setColor(context.getColor(R.color.dialer_theme_color)) + .setGroup(NOTIFICATION_GROUP) + .setOnlyAlertOnce(true) + .setAutoCancel(true); + } + + private static Notification createNotificationForVoicemail( + @NonNull Context context, + @NonNull NewCall voicemail, + @NonNull Map contactInfos) { + PhoneAccountHandle handle = getAccountForCall(context, voicemail); + ContactInfo contactInfo = contactInfos.get(voicemail.number); + + Notification.Builder builder = + createNotificationBuilder(context) + .setContentTitle( + context + .getResources() + .getQuantityString(R.plurals.notification_voicemail_title, 1, 1)) + .setContentText( + ContactDisplayUtils.getTtsSpannedPhoneNumber( + context.getResources(), + R.string.notification_new_voicemail_ticker, + contactInfo.name)) + .setWhen(voicemail.dateMs) + .setSound(getVoicemailRingtoneUri(context, handle)) + .setDefaults(getNotificationDefaultFlags(context, handle)); + + if (voicemail.voicemailUri != null) { + builder.setDeleteIntent( + CallLogNotificationsService.createMarkSingleNewVoicemailAsOldIntent( + context, voicemail.voicemailUri)); + } + + if (BuildCompat.isAtLeastO()) { + builder.setChannelId(NotificationChannelManager.getVoicemailChannelId(context, handle)); + } + + ContactPhotoLoader loader = new ContactPhotoLoader(context, contactInfo); + Bitmap photoIcon = loader.loadPhotoIcon(); + if (photoIcon != null) { + builder.setLargeIcon(photoIcon); + } + if (!TextUtils.isEmpty(voicemail.transcription)) { + Logger.get(context) + .logImpression(DialerImpression.Type.VVM_NOTIFICATION_CREATED_WITH_TRANSCRIPTION); + builder.setStyle(new Notification.BigTextStyle().bigText(voicemail.transcription)); + } + builder.setContentIntent(newVoicemailIntent(context, voicemail)); + Logger.get(context).logImpression(DialerImpression.Type.VVM_NOTIFICATION_CREATED); + return builder.build(); + } + + @Nullable + private static Uri getVoicemailRingtoneUri( + @NonNull Context context, @Nullable PhoneAccountHandle handle) { + if (VERSION.SDK_INT < VERSION_CODES.N) { + return null; + } + if (handle == null) { + LogUtil.i("VisualVoicemailNotifier.getVoicemailRingtoneUri", "null handle, getting fallback"); + handle = getFallbackAccount(context); + if (handle == null) { + LogUtil.i( + "VisualVoicemailNotifier.getVoicemailRingtoneUri", + "no fallback handle, using null (default) ringtone"); + return null; + } + } + return context.getSystemService(TelephonyManager.class).getVoicemailRingtoneUri(handle); + } + + private static int getNotificationDefaultFlags( + @NonNull Context context, @Nullable PhoneAccountHandle handle) { + if (VERSION.SDK_INT < VERSION_CODES.N) { + return Notification.DEFAULT_ALL; + } + if (handle == null) { + LogUtil.i( + "VisualVoicemailNotifier.getNotificationDefaultFlags", "null handle, getting fallback"); + handle = getFallbackAccount(context); + if (handle == null) { + LogUtil.i( + "VisualVoicemailNotifier.getNotificationDefaultFlags", + "no fallback handle, using default vibration"); + return Notification.DEFAULT_ALL; + } + } + if (context.getSystemService(TelephonyManager.class).isVoicemailVibrationEnabled(handle)) { + return Notification.DEFAULT_VIBRATE; + } + return 0; + } + + private static PendingIntent newVoicemailIntent( + @NonNull Context context, @Nullable NewCall voicemail) { + Intent intent = + DialtactsActivity.getShowTabIntent(context, DialtactsPagerAdapter.TAB_INDEX_VOICEMAIL); + // TODO (b/35486204): scroll to this voicemail + if (voicemail != null) { + intent.setData(voicemail.voicemailUri); + } + intent.putExtra(DialtactsActivity.EXTRA_CLEAR_NEW_VOICEMAILS, true); + return PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); + } + + /** + * Gets a phone account for the given call entry. This could be null if SIM associated with the + * entry is no longer in the device or for other reasons (for example, modem reboot). + */ + @Nullable + public static PhoneAccountHandle getAccountForCall( + @NonNull Context context, @Nullable NewCall call) { + if (call == null || call.accountComponentName == null || call.accountId == null) { + return null; + } + return new PhoneAccountHandle( + ComponentName.unflattenFromString(call.accountComponentName), call.accountId); + } + + /** + * Gets any available phone account that can be used to get sound settings for voicemail. This is + * only called if the phone account for the voicemail entry can't be found. + */ + @Nullable + public static PhoneAccountHandle getFallbackAccount(@NonNull Context context) { + PhoneAccountHandle handle = + TelecomUtil.getDefaultOutgoingPhoneAccount(context, PhoneAccount.SCHEME_TEL); + if (handle == null) { + List handles = TelecomUtil.getCallCapablePhoneAccounts(context); + if (!handles.isEmpty()) { + handle = handles.get(0); + } + } + return handle; + } + + private VisualVoicemailNotifier() {} +} diff --git a/java/com/android/dialer/app/calllog/VisualVoicemailUpdateTask.java b/java/com/android/dialer/app/calllog/VisualVoicemailUpdateTask.java new file mode 100644 index 0000000000000000000000000000000000000000..d6601be36d7539cb0eae94455256c3f600096b5d --- /dev/null +++ b/java/com/android/dialer/app/calllog/VisualVoicemailUpdateTask.java @@ -0,0 +1,168 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License + */ + +package com.android.dialer.app.calllog; + +import android.content.Context; +import android.support.annotation.NonNull; +import android.support.annotation.Nullable; +import android.support.annotation.WorkerThread; +import android.text.TextUtils; +import android.util.ArrayMap; +import com.android.dialer.app.R; +import com.android.dialer.app.calllog.CallLogNotificationsQueryHelper.NewCall; +import com.android.dialer.blocking.FilteredNumberAsyncQueryHandler; +import com.android.dialer.blocking.FilteredNumbersUtil; +import com.android.dialer.common.Assert; +import com.android.dialer.common.LogUtil; +import com.android.dialer.common.concurrent.DialerExecutor.Worker; +import com.android.dialer.common.concurrent.DialerExecutors; +import com.android.dialer.phonenumbercache.ContactInfo; +import com.android.dialer.telecom.TelecomUtil; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** Updates voicemail notifications in the background. */ +class VisualVoicemailUpdateTask implements Worker { + @Nullable + @Override + public Void doInBackground(@NonNull Input input) throws Throwable { + updateNotification(input.context, input.queryHelper, input.queryHandler); + return null; + } + + /** + * Updates the notification and notifies of the call with the given URI. + * + *

Clears the notification if there are no new voicemails, and notifies if the given URI + * corresponds to a new voicemail. + */ + @WorkerThread + private static void updateNotification( + Context context, + CallLogNotificationsQueryHelper queryHelper, + FilteredNumberAsyncQueryHandler queryHandler) { + Assert.isWorkerThread(); + + List newCalls = queryHelper.getNewVoicemails(); + if (newCalls == null) { + return; + } + newCalls = filterBlockedNumbers(context, queryHandler, newCalls); + if (newCalls.isEmpty()) { + return; + } + + // This represents a list of names to include in the notification. + String callers = null; + + // Maps each number into a name: if a number is in the map, it has already left a more + // recent voicemail. + Map contactInfos = new ArrayMap<>(); + for (NewCall newCall : newCalls) { + if (!contactInfos.containsKey(newCall.number)) { + ContactInfo contactInfo = + queryHelper.getContactInfo( + newCall.number, newCall.numberPresentation, newCall.countryIso); + contactInfos.put(newCall.number, contactInfo); + + // This is a new caller. Add it to the back of the list of callers. + if (TextUtils.isEmpty(callers)) { + callers = contactInfo.name; + } else { + callers = + context.getString( + R.string.notification_voicemail_callers_list, callers, contactInfo.name); + } + } + } + VisualVoicemailNotifier.showNotifications(context, newCalls, contactInfos, callers); + } + + @WorkerThread + private static List filterBlockedNumbers( + Context context, FilteredNumberAsyncQueryHandler queryHandler, List newCalls) { + Assert.isWorkerThread(); + if (FilteredNumbersUtil.hasRecentEmergencyCall(context)) { + LogUtil.i( + "VisualVoicemailUpdateTask.filterBlockedNumbers", + "not filtering due to recent emergency call"); + return newCalls; + } + + List result = new ArrayList<>(); + for (NewCall newCall : newCalls) { + if (queryHandler.getBlockedIdSynchronous(newCall.number, newCall.countryIso) != null) { + LogUtil.i( + "VisualVoicemailUpdateTask.filterBlockedNumbers", + "found voicemail from blocked number, deleting"); + if (newCall.voicemailUri != null) { + // Delete the voicemail. + CallLogAsyncTaskUtil.deleteVoicemailSynchronous(context, newCall.voicemailUri); + } + } else { + result.add(newCall); + } + } + return result; + } + + /** Updates the voicemail notifications displayed. */ + static void scheduleTask(@NonNull Context context, @NonNull Runnable callback) { + Assert.isNotNull(context); + Assert.isNotNull(callback); + if (!TelecomUtil.isDefaultDialer(context)) { + LogUtil.i("VisualVoicemailUpdateTask.scheduleTask", "not default dialer, not running"); + callback.run(); + return; + } + + Input input = + new Input( + context, + CallLogNotificationsQueryHelper.getInstance(context), + new FilteredNumberAsyncQueryHandler(context)); + DialerExecutors.createNonUiTaskBuilder(new VisualVoicemailUpdateTask()) + .onSuccess( + output -> { + LogUtil.i("VisualVoicemailUpdateTask.scheduleTask", "update successful"); + callback.run(); + }) + .onFailure( + throwable -> { + LogUtil.i("VisualVoicemailUpdateTask.scheduleTask", "update failed: " + throwable); + callback.run(); + }) + .build() + .executeParallel(input); + } + + static class Input { + @NonNull final Context context; + @NonNull final CallLogNotificationsQueryHelper queryHelper; + @NonNull final FilteredNumberAsyncQueryHandler queryHandler; + + Input( + Context context, + CallLogNotificationsQueryHelper queryHelper, + FilteredNumberAsyncQueryHandler queryHandler) { + this.context = context; + this.queryHelper = queryHelper; + this.queryHandler = queryHandler; + } + } +} diff --git a/java/com/android/dialer/app/calllog/VoicemailQueryHandler.java b/java/com/android/dialer/app/calllog/VoicemailQueryHandler.java index 777f4c79f6721037a85019c3cfd0476957be526b..2fbebdd302ddff31dec38fcb77994d109ead1cd3 100644 --- a/java/com/android/dialer/app/calllog/VoicemailQueryHandler.java +++ b/java/com/android/dialer/app/calllog/VoicemailQueryHandler.java @@ -15,7 +15,6 @@ */ package com.android.dialer.app.calllog; -import android.app.NotificationManager; import android.content.AsyncQueryHandler; import android.content.ContentResolver; import android.content.ContentValues; @@ -23,30 +22,49 @@ import android.content.Context; import android.net.Uri; import android.provider.CallLog.Calls; import android.support.annotation.MainThread; +import android.support.annotation.NonNull; import android.support.annotation.Nullable; -import com.android.dialer.app.R; +import android.support.annotation.WorkerThread; import com.android.dialer.common.Assert; -import com.android.dialer.notification.GroupedNotificationUtil; +import com.android.dialer.common.LogUtil; +import com.android.dialer.common.concurrent.ThreadUtil; /** Handles asynchronous queries to the call log for voicemail. */ public class VoicemailQueryHandler extends AsyncQueryHandler { - private static final String TAG = "VoicemailQueryHandler"; - /** The token for the query to mark all new voicemails as old. */ private static final int UPDATE_MARK_VOICEMAILS_AS_OLD_TOKEN = 50; - private Context mContext; - @MainThread - public VoicemailQueryHandler(Context context, ContentResolver contentResolver) { + private VoicemailQueryHandler(ContentResolver contentResolver) { super(contentResolver); Assert.isMainThread(); - mContext = context; + } + + @WorkerThread + public static void markAllNewVoicemailsAsRead(final @NonNull Context context) { + ThreadUtil.postOnUiThread( + () -> { + new VoicemailQueryHandler(context.getContentResolver()).markNewVoicemailsAsOld(null); + }); + } + + @WorkerThread + public static void markSingleNewVoicemailAsRead( + final @NonNull Context context, final Uri voicemailUri) { + if (voicemailUri == null) { + LogUtil.e("VoicemailQueryHandler.markSingleNewVoicemailAsRead", "voicemail URI is null"); + return; + } + ThreadUtil.postOnUiThread( + () -> { + new VoicemailQueryHandler(context.getContentResolver()) + .markNewVoicemailsAsOld(voicemailUri); + }); } /** Updates all new voicemails to mark them as old. */ - public void markNewVoicemailsAsOld(@Nullable Uri voicemailUri) { + private void markNewVoicemailsAsOld(@Nullable Uri voicemailUri) { // Mark all "new" voicemails as not new anymore. StringBuilder where = new StringBuilder(); where.append(Calls.NEW); @@ -70,11 +88,5 @@ public class VoicemailQueryHandler extends AsyncQueryHandler { voicemailUri == null ? new String[] {Integer.toString(Calls.VOICEMAIL_TYPE)} : new String[] {Integer.toString(Calls.VOICEMAIL_TYPE), voicemailUri.toString()}); - - GroupedNotificationUtil.removeNotification( - mContext.getSystemService(NotificationManager.class), - voicemailUri != null ? voicemailUri.toString() : null, - R.id.notification_visual_voicemail, - DefaultVoicemailNotifier.VISUAL_VOICEMAIL_NOTIFICATION_TAG); } } diff --git a/java/com/android/dialer/app/calllog/calllogcache/CallLogCache.java b/java/com/android/dialer/app/calllog/calllogcache/CallLogCache.java index 7645a333e23290ff58175393d7f37ff051a4ffa5..6728dfb389898bda11130a2a7d38462b47f44f8c 100644 --- a/java/com/android/dialer/app/calllog/calllogcache/CallLogCache.java +++ b/java/com/android/dialer/app/calllog/calllogcache/CallLogCache.java @@ -19,7 +19,6 @@ package com.android.dialer.app.calllog.calllogcache; import android.content.Context; import android.telecom.PhoneAccountHandle; import com.android.dialer.app.calllog.CallLogAdapter; -import com.android.dialer.compat.CompatUtils; import com.android.dialer.util.CallUtil; /** @@ -46,10 +45,7 @@ public abstract class CallLogCache { /** Return the most compatible version of the TelecomCallLogCache. */ public static CallLogCache getCallLogCache(Context context) { - if (CompatUtils.isClassAvailable("android.telecom.PhoneAccountHandle")) { - return new CallLogCacheLollipopMr1(context); - } - return new CallLogCacheLollipop(context); + return new CallLogCacheLollipopMr1(context); } public void reset() { diff --git a/java/com/android/dialer/app/calllog/calllogcache/CallLogCacheLollipop.java b/java/com/android/dialer/app/calllog/calllogcache/CallLogCacheLollipop.java deleted file mode 100644 index 78aaa4193fd4f3bd268b3c850857da284af394a4..0000000000000000000000000000000000000000 --- a/java/com/android/dialer/app/calllog/calllogcache/CallLogCacheLollipop.java +++ /dev/null @@ -1,74 +0,0 @@ -/* - * 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 - */ - -package com.android.dialer.app.calllog.calllogcache; - -import android.content.Context; -import android.telecom.PhoneAccount; -import android.telecom.PhoneAccountHandle; -import android.telephony.PhoneNumberUtils; -import android.text.TextUtils; - -/** - * This is a compatibility class for the CallLogCache for versions of dialer before Lollipop Mr1 - * (the introduction of phone accounts). - * - *

This class should not be initialized directly and instead be acquired from {@link - * CallLogCache#getCallLogCache}. - */ -class CallLogCacheLollipop extends CallLogCache { - - private String mVoicemailNumber; - - /* package */ CallLogCacheLollipop(Context context) { - super(context); - } - - @Override - public boolean isVoicemailNumber(PhoneAccountHandle accountHandle, CharSequence number) { - if (TextUtils.isEmpty(number)) { - return false; - } - - String numberString = number.toString(); - - if (!TextUtils.isEmpty(mVoicemailNumber)) { - return PhoneNumberUtils.compare(numberString, mVoicemailNumber); - } - - if (PhoneNumberUtils.isVoiceMailNumber(numberString)) { - mVoicemailNumber = numberString; - return true; - } - - return false; - } - - @Override - public String getAccountLabel(PhoneAccountHandle accountHandle) { - return null; - } - - @Override - public int getAccountColor(PhoneAccountHandle accountHandle) { - return PhoneAccount.NO_HIGHLIGHT_COLOR; - } - - @Override - public boolean doesAccountSupportCallSubject(PhoneAccountHandle accountHandle) { - return false; - } -} diff --git a/java/com/android/dialer/app/calllog/calllogcache/CallLogCacheLollipopMr1.java b/java/com/android/dialer/app/calllog/calllogcache/CallLogCacheLollipopMr1.java index 0399987806b1bf7f384f987c1e99390dbc0200cb..f85680649c8d95294a27068d52b7396cfc61c130 100644 --- a/java/com/android/dialer/app/calllog/calllogcache/CallLogCacheLollipopMr1.java +++ b/java/com/android/dialer/app/calllog/calllogcache/CallLogCacheLollipopMr1.java @@ -17,15 +17,11 @@ package com.android.dialer.app.calllog.calllogcache; import android.content.Context; -import android.support.annotation.VisibleForTesting; import android.telecom.PhoneAccountHandle; -import android.text.TextUtils; import android.util.ArrayMap; -import android.util.Pair; import com.android.dialer.calllogutils.PhoneAccountUtils; -import com.android.dialer.phonenumberutil.PhoneNumberHelper; +import com.android.dialer.telecom.TelecomUtil; import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; /** * This is the CallLogCache for versions of dialer Lollipop Mr1 and above with support for multi-SIM @@ -36,15 +32,6 @@ import java.util.concurrent.ConcurrentHashMap; */ class CallLogCacheLollipopMr1 extends CallLogCache { - /* - * Maps from a phone-account/number pair to a boolean because multiple numbers could return true - * for the voicemail number if those numbers are not pre-normalized. Access must be synchronzied - * as it's used in the background thread in CallLogAdapter. {@see CallLogAdapter#loadData} - */ - @VisibleForTesting - final Map, Boolean> mVoicemailQueryCache = - new ConcurrentHashMap<>(); - private final Map mPhoneAccountLabelCache = new ArrayMap<>(); private final Map mPhoneAccountColorCache = new ArrayMap<>(); private final Map mPhoneAccountCallWithNoteCache = new ArrayMap<>(); @@ -55,7 +42,6 @@ class CallLogCacheLollipopMr1 extends CallLogCache { @Override public void reset() { - mVoicemailQueryCache.clear(); mPhoneAccountLabelCache.clear(); mPhoneAccountColorCache.clear(); mPhoneAccountCallWithNoteCache.clear(); @@ -65,19 +51,7 @@ class CallLogCacheLollipopMr1 extends CallLogCache { @Override public boolean isVoicemailNumber(PhoneAccountHandle accountHandle, CharSequence number) { - if (TextUtils.isEmpty(number)) { - return false; - } - - Pair key = new Pair<>(accountHandle, number); - Boolean value = mVoicemailQueryCache.get(key); - if (value != null) { - return value; - } - boolean isVoicemail = - PhoneNumberHelper.isVoicemailNumber(mContext, accountHandle, number.toString()); - mVoicemailQueryCache.put(key, isVoicemail); - return isVoicemail; + return TelecomUtil.isVoicemailNumber(mContext, accountHandle, number.toString()); } @Override diff --git a/java/com/android/dialer/app/contactinfo/ContactInfoCache.java b/java/com/android/dialer/app/contactinfo/ContactInfoCache.java index e561b560787b3a4d414f78ac178b29f18f31f86b..82fc229af93d090c633e4fa4b4c6d5fc89fc82fb 100644 --- a/java/com/android/dialer/app/contactinfo/ContactInfoCache.java +++ b/java/com/android/dialer/app/contactinfo/ContactInfoCache.java @@ -24,6 +24,7 @@ import android.support.annotation.VisibleForTesting; import android.text.TextUtils; import com.android.dialer.common.LogUtil; import com.android.dialer.logging.ContactSource.Type; +import com.android.dialer.oem.CequintCallerIdManager; import com.android.dialer.phonenumbercache.ContactInfo; import com.android.dialer.phonenumbercache.ContactInfoHelper; import com.android.dialer.util.ExpirableCache; @@ -55,6 +56,7 @@ public class ContactInfoCache { private final OnContactInfoChangedListener mOnContactInfoChangedListener; private final BlockingQueue mUpdateRequests; private final Handler mHandler; + private CequintCallerIdManager mCequintCallerIdManager; private QueryThread mContactInfoQueryThread; private volatile boolean mRequestProcessingDisabled = false; @@ -95,6 +97,10 @@ public class ContactInfoCache { mHandler = new InnerHandler(new WeakReference<>(this)); } + public void setCequintCallerIdManager(CequintCallerIdManager cequintCallerIdManager) { + mCequintCallerIdManager = cequintCallerIdManager; + } + public ContactInfo getValue( String number, String countryIso, @@ -156,11 +162,11 @@ public class ContactInfoCache { ContactInfo info; if (request.isLocalRequest()) { info = mContactInfoHelper.lookupNumber(request.number, request.countryIso); - if (!info.contactExists) { + if (info != null && !info.contactExists) { // TODO: Maybe skip look up if it's already available in cached number lookup // service. long start = SystemClock.elapsedRealtime(); - mContactInfoHelper.updateFromCequintCallerId(info, request.number); + mContactInfoHelper.updateFromCequintCallerId(mCequintCallerIdManager, info, request.number); long time = SystemClock.elapsedRealtime() - start; LogUtil.d( "ContactInfoCache.queryContactInfo", "Cequint Caller Id look up takes %d ms", time); diff --git a/java/com/android/dialer/app/dialpad/DialpadFragment.java b/java/com/android/dialer/app/dialpad/DialpadFragment.java index e9d57b3995f341a5b79821958c2301e3f3f8b94a..d33943773e1aacc3d1ef2275c2c50122ec771f83 100644 --- a/java/com/android/dialer/app/dialpad/DialpadFragment.java +++ b/java/com/android/dialer/app/dialpad/DialpadFragment.java @@ -29,6 +29,7 @@ import android.content.DialogInterface; import android.content.Intent; import android.content.IntentFilter; import android.content.pm.PackageManager; +import android.content.res.Resources; import android.database.Cursor; import android.graphics.Bitmap; import android.graphics.BitmapFactory; @@ -84,6 +85,9 @@ import com.android.dialer.common.LogUtil; import com.android.dialer.dialpadview.DialpadKeyButton; import com.android.dialer.dialpadview.DialpadView; import com.android.dialer.location.GeoUtil; +import com.android.dialer.logging.UiAction; +import com.android.dialer.oem.MotorolaUtils; +import com.android.dialer.performancereport.PerformanceReport; import com.android.dialer.proguard.UsedByReflection; import com.android.dialer.telecom.TelecomUtil; import com.android.dialer.util.CallUtil; @@ -626,6 +630,14 @@ public class DialpadFragment extends Fragment Trace.beginSection(TAG + " onResume"); super.onResume(); + Resources res = getResources(); + int iconId = R.drawable.quantum_ic_call_vd_theme_24; + if (MotorolaUtils.isWifiCallingAvailable(getContext())) { + iconId = R.drawable.ic_wifi_calling; + } + mFloatingActionButtonController.changeIcon( + res.getDrawable(iconId, null), res.getString(R.string.description_dial_button)); + final DialtactsActivity activity = (DialtactsActivity) getActivity(); mDialpadQueryListener = activity; @@ -1005,6 +1017,8 @@ public class DialpadFragment extends Fragment */ private void handleDialButtonPressed() { if (isDigitsEmpty()) { // No number entered. + // No real call made, so treat it as a click + PerformanceReport.recordClick(UiAction.Type.PRESS_CALL_BUTTON_WITHOUT_CALLING); handleDialButtonClickWithEmptyDigits(); } else { final String number = mDigits.getText().toString(); @@ -1015,6 +1029,7 @@ public class DialpadFragment extends Fragment if (number != null && !TextUtils.isEmpty(mProhibitedPhoneNumberRegexp) && number.matches(mProhibitedPhoneNumberRegexp)) { + PerformanceReport.recordClick(UiAction.Type.PRESS_CALL_BUTTON_WITHOUT_CALLING); LogUtil.i( "DialpadFragment.handleDialButtonPressed", "The phone number is prohibited explicitly by a rule."); @@ -1051,6 +1066,10 @@ public class DialpadFragment extends Fragment startActivity(newFlashIntent()); } else { if (!TextUtils.isEmpty(mLastNumberDialed)) { + // Dialpad will be filled with last called number, + // but we don't want to record it as user action + PerformanceReport.setIgnoreActionOnce(UiAction.Type.TEXT_CHANGE_WITH_INPUT); + // Recall the last number dialed. mDigits.setText(mLastNumberDialed); diff --git a/java/com/android/dialer/app/filterednumber/NumbersAdapter.java b/java/com/android/dialer/app/filterednumber/NumbersAdapter.java index f71517a44dc3a8191bbba1f8f7e4b7c3d56ab4a3..d98395ec7ea6652618b82d2b4bf1818e49b8bd99 100644 --- a/java/com/android/dialer/app/filterednumber/NumbersAdapter.java +++ b/java/com/android/dialer/app/filterednumber/NumbersAdapter.java @@ -28,6 +28,7 @@ import android.widget.SimpleCursorAdapter; import android.widget.TextView; import com.android.contacts.common.ContactPhotoManager; import com.android.contacts.common.ContactPhotoManager.DefaultImageRequest; +import com.android.contacts.common.lettertiles.LetterTileDrawable; import com.android.contacts.common.util.UriUtils; import com.android.dialer.app.R; import com.android.dialer.compat.CompatUtils; @@ -98,8 +99,8 @@ public class NumbersAdapter extends SimpleCursorAdapter { info.lookupUri == null ? null : UriUtils.getLookupKeyFromUri(info.lookupUri); final int contactType = mContactInfoHelper.isBusiness(info.sourceType) - ? ContactPhotoManager.TYPE_BUSINESS - : ContactPhotoManager.TYPE_DEFAULT; + ? LetterTileDrawable.TYPE_BUSINESS + : LetterTileDrawable.TYPE_DEFAULT; final DefaultImageRequest request = new DefaultImageRequest(displayName, lookupKey, contactType, true /* isCircular */); badge.assignContactUri(info.lookupUri); diff --git a/java/com/android/dialer/app/legacybindings/DialerLegacyBindings.java b/java/com/android/dialer/app/legacybindings/DialerLegacyBindings.java index 1cdeb2175d18e55867be6a4db2c14ad526914103..a483af9e913331ce50ad7951a276cbf776578ef4 100644 --- a/java/com/android/dialer/app/legacybindings/DialerLegacyBindings.java +++ b/java/com/android/dialer/app/legacybindings/DialerLegacyBindings.java @@ -40,6 +40,8 @@ public interface DialerLegacyBindings { Activity activity, ViewGroup alertContainer, CallLogAdapter.CallFetcher callFetcher, + CallLogAdapter.MultiSelectRemoveView multiSelectRemoveView, + CallLogAdapter.OnActionModeStateChangedListener actionModeStateChangedListener, CallLogCache callLogCache, ContactInfoCache contactInfoCache, VoicemailPlaybackPresenter voicemailPlaybackPresenter, diff --git a/java/com/android/dialer/app/legacybindings/DialerLegacyBindingsStub.java b/java/com/android/dialer/app/legacybindings/DialerLegacyBindingsStub.java index 6e32843baffbe5e930e949bbea3d1af9108caa3c..488fbad68bb3959d88d84b163127fcc7219ccedf 100644 --- a/java/com/android/dialer/app/legacybindings/DialerLegacyBindingsStub.java +++ b/java/com/android/dialer/app/legacybindings/DialerLegacyBindingsStub.java @@ -34,6 +34,8 @@ public class DialerLegacyBindingsStub implements DialerLegacyBindings { Activity activity, ViewGroup alertContainer, CallLogAdapter.CallFetcher callFetcher, + CallLogAdapter.MultiSelectRemoveView multiSelectRemoveView, + CallLogAdapter.OnActionModeStateChangedListener actionModeStateChangedListener, CallLogCache callLogCache, ContactInfoCache contactInfoCache, VoicemailPlaybackPresenter voicemailPlaybackPresenter, @@ -43,6 +45,8 @@ public class DialerLegacyBindingsStub implements DialerLegacyBindings { activity, alertContainer, callFetcher, + multiSelectRemoveView, + actionModeStateChangedListener, callLogCache, contactInfoCache, voicemailPlaybackPresenter, diff --git a/java/com/android/dialer/app/list/AllContactsFragment.java b/java/com/android/dialer/app/list/AllContactsFragment.java index 04609970a8c992aefd4bfbd586ae7a194852317b..32a99e79594a30a2e98c96411fca6d891e7777ea 100644 --- a/java/com/android/dialer/app/list/AllContactsFragment.java +++ b/java/com/android/dialer/app/list/AllContactsFragment.java @@ -38,12 +38,16 @@ import com.android.contacts.common.list.ContactEntryListFragment; import com.android.contacts.common.list.ContactListFilter; import com.android.contacts.common.list.DefaultContactListAdapter; import com.android.dialer.app.R; -import com.android.dialer.app.widget.EmptyContentView; -import com.android.dialer.app.widget.EmptyContentView.OnEmptyViewActionButtonClickedListener; +import com.android.dialer.common.LogUtil; import com.android.dialer.compat.CompatUtils; +import com.android.dialer.logging.InteractionEvent; +import com.android.dialer.logging.Logger; import com.android.dialer.util.DialerUtils; import com.android.dialer.util.IntentUtil; import com.android.dialer.util.PermissionsUtil; +import com.android.dialer.widget.EmptyContentView; +import com.android.dialer.widget.EmptyContentView.OnEmptyViewActionButtonClickedListener; +import java.util.Arrays; /** Fragments to show all contacts with phone numbers. */ public class AllContactsFragment extends ContactEntryListFragment @@ -149,6 +153,8 @@ public class AllContactsFragment extends ContactEntryListFragment parent, View view, int position, long id) { final Uri uri = (Uri) view.getTag(); if (uri != null) { + Logger.get(getContext()) + .logInteraction(InteractionEvent.Type.OPEN_QUICK_CONTACT_FROM_ALL_CONTACTS_GENERAL); if (CompatUtils.hasPrioritizedMimeType()) { QuickContact.showQuickContact(getContext(), view, uri, null, Phone.CONTENT_ITEM_TYPE); } else { @@ -169,9 +175,15 @@ public class AllContactsFragment extends ContactEntryListFragment 0) { + LogUtil.i( + "AllContactsFragment.onEmptyViewActionButtonClicked", + "Requesting permissions: " + Arrays.toString(deniedPermissions)); FragmentCompat.requestPermissions( - this, new String[] {READ_CONTACTS}, READ_CONTACTS_PERMISSION_REQUEST_CODE); + this, deniedPermissions, READ_CONTACTS_PERMISSION_REQUEST_CODE); } else { // Add new contact DialerUtils.startActivityWithErrorToast( diff --git a/java/com/android/dialer/app/list/DialerPhoneNumberListAdapter.java b/java/com/android/dialer/app/list/DialerPhoneNumberListAdapter.java index 537f488d539f218fc5a59296b8ae9a51fe4c809b..fc0bd3ccff278c305ae71aa37204955d9aece8c0 100644 --- a/java/com/android/dialer/app/list/DialerPhoneNumberListAdapter.java +++ b/java/com/android/dialer/app/list/DialerPhoneNumberListAdapter.java @@ -19,6 +19,8 @@ package com.android.dialer.app.list; import android.content.Context; import android.content.res.Resources; import android.database.Cursor; +import android.graphics.drawable.Drawable; +import android.support.v4.content.ContextCompat; import android.telephony.PhoneNumberUtils; import android.text.BidiFormatter; import android.text.TextDirectionHeuristics; @@ -29,7 +31,6 @@ import com.android.contacts.common.list.PhoneNumberListAdapter; import com.android.contacts.common.util.ContactDisplayUtils; import com.android.dialer.app.R; import com.android.dialer.location.GeoUtil; -import com.android.dialer.util.CallUtil; /** * {@link PhoneNumberListAdapter} with the following added shortcuts, that are displayed as list @@ -50,7 +51,6 @@ public class DialerPhoneNumberListAdapter extends PhoneNumberListAdapter { private final boolean[] mShortcutEnabled = new boolean[SHORTCUT_COUNT]; private final BidiFormatter mBidiFormatter = BidiFormatter.getInstance(); - private final boolean mVideoCallingEnabled; private final String mCountryIso; private String mFormattedQueryString; @@ -59,7 +59,6 @@ public class DialerPhoneNumberListAdapter extends PhoneNumberListAdapter { super(context); mCountryIso = GeoUtil.getCurrentCountryIso(context); - mVideoCallingEnabled = CallUtil.isVideoEnabled(context); } @Override @@ -110,8 +109,7 @@ public class DialerPhoneNumberListAdapter extends PhoneNumberListAdapter { return convertView; } else { final ContactListItemView v = - new ContactListItemView( - getContext(), null, mVideoCallingEnabled, isCallAndShareEnabled()); + new ContactListItemView(getContext(), null, mIsImsVideoEnabled); assignShortcutToView(v, shortcutType); return v; } @@ -125,8 +123,7 @@ public class DialerPhoneNumberListAdapter extends PhoneNumberListAdapter { Context context, int partition, Cursor cursor, int position, ViewGroup parent) { final ContactListItemView view = super.newView(context, partition, cursor, position, parent); - view.setSupportVideoCallIcon(mVideoCallingEnabled); - view.setSupportCallAndShareIcon(isCallAndShareEnabled()); + view.setSupportVideoCallIcon(mIsImsVideoEnabled); return view; } @@ -171,7 +168,7 @@ public class DialerPhoneNumberListAdapter extends PhoneNumberListAdapter { private void assignShortcutToView(ContactListItemView v, int shortcutType) { final CharSequence text; - final int drawableId; + final Drawable drawable; final Resources resources = getContext().getResources(); final String number = getFormattedQueryString(); switch (shortcutType) { @@ -181,34 +178,39 @@ public class DialerPhoneNumberListAdapter extends PhoneNumberListAdapter { resources, R.string.search_shortcut_call_number, mBidiFormatter.unicodeWrap(number, TextDirectionHeuristics.LTR)); - drawableId = R.drawable.ic_search_phone; + drawable = ContextCompat.getDrawable(getContext(), R.drawable.quantum_ic_call_vd_theme_24); break; case SHORTCUT_CREATE_NEW_CONTACT: text = resources.getString(R.string.search_shortcut_create_new_contact); - drawableId = R.drawable.ic_search_add_contact; + drawable = + ContextCompat.getDrawable(getContext(), R.drawable.quantum_ic_person_add_vd_theme_24); + drawable.setAutoMirrored(true); break; case SHORTCUT_ADD_TO_EXISTING_CONTACT: text = resources.getString(R.string.search_shortcut_add_to_contact); - drawableId = R.drawable.quantum_ic_person_white_24; + drawable = + ContextCompat.getDrawable(getContext(), R.drawable.quantum_ic_person_add_vd_theme_24); break; case SHORTCUT_SEND_SMS_MESSAGE: text = resources.getString(R.string.search_shortcut_send_sms_message); - drawableId = R.drawable.quantum_ic_message_white_24; + drawable = + ContextCompat.getDrawable(getContext(), R.drawable.quantum_ic_message_vd_theme_24); break; case SHORTCUT_MAKE_VIDEO_CALL: text = resources.getString(R.string.search_shortcut_make_video_call); - drawableId = R.drawable.quantum_ic_videocam_white_24; + drawable = + ContextCompat.getDrawable(getContext(), R.drawable.quantum_ic_videocam_vd_theme_24); break; case SHORTCUT_BLOCK_NUMBER: text = resources.getString(R.string.search_shortcut_block_number); - drawableId = R.drawable.ic_not_interested_googblue_24dp; + drawable = + ContextCompat.getDrawable(getContext(), R.drawable.ic_not_interested_googblue_24dp); break; default: throw new IllegalArgumentException("Invalid shortcut type"); } - v.setDrawableResource(drawableId); + v.setDrawable(drawable); v.setDisplayName(text); - v.setPhotoPosition(super.getPhotoPosition()); v.setAdjustSelectionBoundsEnabled(false); } diff --git a/java/com/android/dialer/app/list/DialerViewPager.java b/java/com/android/dialer/app/list/DialerViewPager.java new file mode 100644 index 0000000000000000000000000000000000000000..ae99f0521bff0a5975f657c3e8cd4f1bc000f526 --- /dev/null +++ b/java/com/android/dialer/app/list/DialerViewPager.java @@ -0,0 +1,55 @@ +/* + * Copyright (C) 2017 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.dialer.app.list; + +import android.content.Context; +import android.support.v4.view.ViewPager; +import android.util.AttributeSet; +import android.view.MotionEvent; + +/** Class that handles enabling/disabling swiping between @{ViewPagerTabs}. */ +public class DialerViewPager extends ViewPager { + + private boolean enableSwipingPages; + + public DialerViewPager(Context context, AttributeSet attributeSet) { + super(context, attributeSet); + enableSwipingPages = true; + } + + @Override + public boolean onInterceptTouchEvent(MotionEvent event) { + if (enableSwipingPages) { + return super.onInterceptTouchEvent(event); + } + + return false; + } + + @Override + public boolean onTouchEvent(MotionEvent event) { + if (enableSwipingPages) { + return super.onTouchEvent(event); + } + + return false; + } + + public void setEnableSwipingPages(boolean enabled) { + enableSwipingPages = enabled; + } +} diff --git a/java/com/android/dialer/app/list/DialtactsPagerAdapter.java b/java/com/android/dialer/app/list/DialtactsPagerAdapter.java index dba3d3a93a4a454da82ae72f89f906ae4afa7e0f..822aa789fa91140fa381b40c0b25811aed40b655 100644 --- a/java/com/android/dialer/app/list/DialtactsPagerAdapter.java +++ b/java/com/android/dialer/app/list/DialtactsPagerAdapter.java @@ -28,8 +28,8 @@ import com.android.dialer.calllog.CallLogComponent; import com.android.dialer.calllog.CallLogFramework; import com.android.dialer.calllog.ui.NewCallLogFragment; import com.android.dialer.common.Assert; -import com.android.dialer.common.ConfigProviderBindings; import com.android.dialer.common.LogUtil; +import com.android.dialer.configprovider.ConfigProviderBindings; import com.android.dialer.contactsfragment.ContactsFragment; import com.android.dialer.database.CallLogQueryHandler; import com.android.dialer.speeddial.SpeedDialFragment; @@ -78,7 +78,7 @@ public class DialtactsPagerAdapter extends FragmentPagerAdapter { CallLogFramework callLogFramework = CallLogComponent.get(context).callLogFramework(); useNewCallLogTab = callLogFramework.isNewCallLogEnabled(context); useNewContactsTab = - ConfigProviderBindings.get(context).getBoolean("enable_new_contacts_tab", false); + ConfigProviderBindings.get(context).getBoolean("enable_new_contacts_tab", true); this.tabTitles = tabTitles; hasActiveVoicemailProvider = hasVoicemailProvider; fragments.addAll(Collections.nCopies(TAB_COUNT_WITH_VOICEMAIL, null)); diff --git a/java/com/android/dialer/app/list/ListsFragment.java b/java/com/android/dialer/app/list/ListsFragment.java index 8dd52a9d49676d3c3a4900d40dc9c0680e9b5471..3f03db1e850e478f0ba5ee8d1a484b2c9e7f39e9 100644 --- a/java/com/android/dialer/app/list/ListsFragment.java +++ b/java/com/android/dialer/app/list/ListsFragment.java @@ -31,7 +31,6 @@ import android.os.Handler; import android.os.Trace; import android.preference.PreferenceManager; import android.provider.VoicemailContract; -import android.support.v4.view.ViewPager; import android.support.v4.view.ViewPager.OnPageChangeListener; import android.view.LayoutInflater; import android.view.View; @@ -44,9 +43,12 @@ import com.android.dialer.app.voicemail.error.VoicemailStatusCorruptionHandler; import com.android.dialer.app.voicemail.error.VoicemailStatusCorruptionHandler.Source; import com.android.dialer.common.LogUtil; import com.android.dialer.database.CallLogQueryHandler; +import com.android.dialer.database.CallLogQueryHandler.Listener; import com.android.dialer.logging.DialerImpression; import com.android.dialer.logging.Logger; import com.android.dialer.logging.ScreenEvent; +import com.android.dialer.logging.UiAction; +import com.android.dialer.performancereport.PerformanceReport; import com.android.dialer.speeddial.SpeedDialFragment; import com.android.dialer.util.PermissionsUtil; import com.android.dialer.voicemailstatus.VisualVoicemailEnabledChecker; @@ -60,11 +62,11 @@ import java.util.ArrayList; * Contacts list. This will also eventually contain the logic that allows sliding the 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, CallLogQueryHandler.Listener { +public class ListsFragment extends Fragment implements OnPageChangeListener, Listener { private static final String TAG = "ListsFragment"; - private ViewPager mViewPager; + + private DialerViewPager mViewPager; private ViewPagerTabs mViewPagerTabs; private DialtactsPagerAdapter mAdapter; private RemoveView mRemoveView; @@ -77,10 +79,12 @@ public class ListsFragment extends Fragment private final ArrayList mOnPageChangeListeners = new ArrayList<>(); /** The position of the currently selected tab. */ private int mTabIndex = TAB_INDEX_SPEED_DIAL; - private boolean mPaused; + private boolean mPaused; private CallLogQueryHandler mCallLogQueryHandler; + private UiAction.Type[] actionTypeList; + private final ContentObserver mVoicemailStatusObserver = new ContentObserver(new Handler()) { @Override @@ -151,6 +155,12 @@ public class ListsFragment extends Fragment Trace.endSection(); Trace.beginSection(TAG + " setup views"); + actionTypeList = new UiAction.Type[TAB_COUNT_WITH_VOICEMAIL]; + actionTypeList[TAB_INDEX_SPEED_DIAL] = UiAction.Type.CHANGE_TAB_TO_FAVORITE; + actionTypeList[TAB_INDEX_HISTORY] = UiAction.Type.CHANGE_TAB_TO_CALL_LOG; + actionTypeList[TAB_INDEX_ALL_CONTACTS] = UiAction.Type.CHANGE_TAB_TO_CONTACTS; + actionTypeList[TAB_INDEX_VOICEMAIL] = UiAction.Type.CHANGE_TAB_TO_VOICEMAIL; + String[] tabTitles = new String[TAB_COUNT_WITH_VOICEMAIL]; tabTitles[TAB_INDEX_SPEED_DIAL] = getResources().getString(R.string.tab_speed_dial); tabTitles[TAB_INDEX_HISTORY] = getResources().getString(R.string.tab_history); @@ -163,7 +173,7 @@ public class ListsFragment extends Fragment tabIcons[TAB_INDEX_ALL_CONTACTS] = R.drawable.quantum_ic_people_white_24; tabIcons[TAB_INDEX_VOICEMAIL] = R.drawable.quantum_ic_voicemail_white_24; - mViewPager = (ViewPager) parentView.findViewById(R.id.lists_pager); + mViewPager = (DialerViewPager) parentView.findViewById(R.id.lists_pager); mAdapter = new DialtactsPagerAdapter( getContext(), @@ -180,7 +190,6 @@ public class ListsFragment extends Fragment mViewPagerTabs.configureTabIcons(tabIcons); mViewPagerTabs.setViewPager(mViewPager); addOnPageChangeListener(mViewPagerTabs); - mRemoveView = (RemoveView) parentView.findViewById(R.id.remove_view); mRemoveViewContent = parentView.findViewById(R.id.remove_view_content); @@ -191,7 +200,7 @@ public class ListsFragment extends Fragment .registerContentObserver( VoicemailContract.Status.CONTENT_URI, true, mVoicemailStatusObserver); } else { - LogUtil.w("ListsFragment.onCreateView", "no voicemail read/add permissions"); + LogUtil.w("ListsFragment.onCreateView", "no voicemail read permissions"); } Trace.endSection(); @@ -213,8 +222,8 @@ public class ListsFragment extends Fragment /** * Shows the tab with the specified index. If the voicemail tab index is specified, but the - * voicemail status hasn't been fetched, it will try to show the tab after the voicemail status - * has been fetched. + * voicemail status hasn't been fetched, it will show the speed dial tab and try to show the + * voicemail tab after the voicemail status has been fetched. */ public void showTab(int index) { if (index == TAB_INDEX_VOICEMAIL) { @@ -241,6 +250,8 @@ public class ListsFragment extends Fragment @Override public void onPageSelected(int position) { + PerformanceReport.recordClick(actionTypeList[position]); + LogUtil.i("ListsFragment.onPageSelected", "position: %d", position); mTabIndex = mAdapter.getRtlPosition(position); @@ -375,7 +386,7 @@ public class ListsFragment extends Fragment public void markMissedCallsAsReadAndRemoveNotifications() { if (mCallLogQueryHandler != null) { mCallLogQueryHandler.markMissedCallsAsRead(); - CallLogNotificationsService.markNewMissedCallsAsOld(getContext(), null); + CallLogNotificationsService.cancelAllMissedCalls(getContext()); } } @@ -385,6 +396,11 @@ public class ListsFragment extends Fragment mRemoveView.animate().alpha(show ? 1 : 0).start(); } + public void showMultiSelectRemoveView(boolean show) { + mViewPagerTabs.setVisibility(show ? View.GONE : View.VISIBLE); + mViewPager.setEnableSwipingPages(!show); + } + public boolean hasFrequents() { Fragment page = mAdapter.getItem(mAdapter.getRtlPosition(TAB_INDEX_SPEED_DIAL)); return page instanceof OldSpeedDialFragment diff --git a/java/com/android/dialer/app/list/OldSpeedDialFragment.java b/java/com/android/dialer/app/list/OldSpeedDialFragment.java index 40fe745654ba9226fb04a1d17799a5f9f7940e01..05d017b2869c20629e4bd703c30f61ae24fd7285 100644 --- a/java/com/android/dialer/app/list/OldSpeedDialFragment.java +++ b/java/com/android/dialer/app/list/OldSpeedDialFragment.java @@ -50,13 +50,13 @@ import com.android.contacts.common.ContactTileLoaderFactory; import com.android.contacts.common.list.ContactTileView; import com.android.contacts.common.list.OnPhoneNumberPickerActionListener; import com.android.dialer.app.R; -import com.android.dialer.app.widget.EmptyContentView; -import com.android.dialer.callintent.CallInitiationType; import com.android.dialer.callintent.CallSpecificAppData; import com.android.dialer.common.LogUtil; import com.android.dialer.util.PermissionsUtil; import com.android.dialer.util.ViewUtil; +import com.android.dialer.widget.EmptyContentView; import java.util.ArrayList; +import java.util.Arrays; /** This fragment displays the user's favorite/frequent contacts in a grid. */ public class OldSpeedDialFragment extends Fragment @@ -404,9 +404,15 @@ public class OldSpeedDialFragment extends Fragment return; } - if (!PermissionsUtil.hasPermission(activity, READ_CONTACTS)) { + String[] deniedPermissions = + PermissionsUtil.getPermissionsCurrentlyDenied( + getContext(), PermissionsUtil.allContactsGroupPermissionsUsedInDialer); + if (deniedPermissions.length > 0) { + LogUtil.i( + "OldSpeedDialFragment.onEmptyViewActionButtonClicked", + "Requesting permissions: " + Arrays.toString(deniedPermissions)); FragmentCompat.requestPermissions( - this, new String[] {READ_CONTACTS}, READ_CONTACTS_PERMISSION_REQUEST_CODE); + this, deniedPermissions, READ_CONTACTS_PERMISSION_REQUEST_CODE); } else { // Switch tabs ((HostInterface) activity).showAllContactsTab(); @@ -430,7 +436,7 @@ public class OldSpeedDialFragment extends Fragment void showAllContactsTab(); } - private class ContactTileLoaderListener implements LoaderManager.LoaderCallbacks { + class ContactTileLoaderListener implements LoaderManager.LoaderCallbacks { @Override public CursorLoader onCreateLoader(int id, Bundle args) { @@ -460,24 +466,17 @@ public class OldSpeedDialFragment extends Fragment private class ContactTileAdapterListener implements ContactTileView.Listener { @Override - public void onContactSelected(Uri contactUri, Rect targetRect) { + public void onContactSelected( + Uri contactUri, Rect targetRect, CallSpecificAppData callSpecificAppData) { if (mPhoneNumberPickerActionListener != null) { - CallSpecificAppData callSpecificAppData = - CallSpecificAppData.newBuilder() - .setCallInitiationType(CallInitiationType.Type.SPEED_DIAL) - .build(); mPhoneNumberPickerActionListener.onPickDataUri( contactUri, false /* isVideoCall */, callSpecificAppData); } } @Override - public void onCallNumberDirectly(String phoneNumber) { + public void onCallNumberDirectly(String phoneNumber, CallSpecificAppData callSpecificAppData) { if (mPhoneNumberPickerActionListener != null) { - CallSpecificAppData callSpecificAppData = - CallSpecificAppData.newBuilder() - .setCallInitiationType(CallInitiationType.Type.SPEED_DIAL) - .build(); mPhoneNumberPickerActionListener.onPickPhoneNumber( phoneNumber, false /* isVideoCall */, callSpecificAppData); } diff --git a/java/com/android/dialer/app/list/PhoneFavoriteListView.java b/java/com/android/dialer/app/list/PhoneFavoriteListView.java index 9516f061158f3427d4e073bef457261636308cfc..f4f395ff089de627e0d32fb256ac5a12fdef4cd6 100644 --- a/java/com/android/dialer/app/list/PhoneFavoriteListView.java +++ b/java/com/android/dialer/app/list/PhoneFavoriteListView.java @@ -1,6 +1,5 @@ /* - * Copyright (C) 2012 Google Inc. - * Licensed to The Android Open Source Project. + * Copyright (C) 2017 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -24,7 +23,6 @@ import android.content.res.Configuration; import android.graphics.Bitmap; import android.os.Handler; import android.util.AttributeSet; -import android.util.Log; import android.view.DragEvent; import android.view.MotionEvent; import android.view.View; @@ -33,6 +31,7 @@ import android.widget.GridView; import android.widget.ImageView; import com.android.dialer.app.R; import com.android.dialer.app.list.DragDropController.DragItemContainer; +import com.android.dialer.common.LogUtil; /** Viewgroup that presents the user's speed dial contacts in a grid. */ public class PhoneFavoriteListView extends GridView @@ -40,14 +39,14 @@ public class PhoneFavoriteListView extends GridView public static final String LOG_TAG = PhoneFavoriteListView.class.getSimpleName(); final int[] mLocationOnScreen = new int[2]; - private final long SCROLL_HANDLER_DELAY_MILLIS = 5; - private final int DRAG_SCROLL_PX_UNIT = 25; - private final float DRAG_SHADOW_ALPHA = 0.7f; + private static final long SCROLL_HANDLER_DELAY_MILLIS = 5; + private static final int DRAG_SCROLL_PX_UNIT = 25; + private static final float DRAG_SHADOW_ALPHA = 0.7f; /** * {@link #mTopScrollBound} and {@link mBottomScrollBound} will be offseted to the top / bottom by * {@link #getHeight} * {@link #BOUND_GAP_RATIO} pixels. */ - private final float BOUND_GAP_RATIO = 0.2f; + private static final float BOUND_GAP_RATIO = 0.2f; private float mTouchSlop; private int mTopScrollBound; @@ -67,7 +66,6 @@ public class PhoneFavoriteListView extends GridView } }; private boolean mIsDragScrollerRunning = false; - private int mTouchDownForDragStartX; private int mTouchDownForDragStartY; private Bitmap mDragShadowBitmap; private ImageView mDragShadowOverlay; @@ -98,7 +96,7 @@ public class PhoneFavoriteListView extends GridView } public PhoneFavoriteListView(Context context, AttributeSet attrs) { - this(context, attrs, -1); + this(context, attrs, 0); } public PhoneFavoriteListView(Context context, AttributeSet attrs, int defStyle) { @@ -121,7 +119,6 @@ public class PhoneFavoriteListView extends GridView @Override public boolean onInterceptTouchEvent(MotionEvent ev) { if (ev.getAction() == MotionEvent.ACTION_DOWN) { - mTouchDownForDragStartX = (int) ev.getX(); mTouchDownForDragStartY = (int) ev.getY(); } @@ -287,7 +284,7 @@ public class PhoneFavoriteListView extends GridView try { bitmap = cache.copy(Bitmap.Config.ARGB_8888, false); } catch (final OutOfMemoryError e) { - Log.w(LOG_TAG, "Failed to copy bitmap from Drawing cache", e); + LogUtil.w(LOG_TAG, "Failed to copy bitmap from Drawing cache", e); bitmap = null; } } diff --git a/java/com/android/dialer/app/list/PhoneFavoriteSquareTileView.java b/java/com/android/dialer/app/list/PhoneFavoriteSquareTileView.java index 5a18d039bb3d298f12c2f8da411e16146d7a557b..40f23ea6fb16bcf6d4367c0dbee6f1931a8876e5 100644 --- a/java/com/android/dialer/app/list/PhoneFavoriteSquareTileView.java +++ b/java/com/android/dialer/app/list/PhoneFavoriteSquareTileView.java @@ -26,6 +26,8 @@ import android.widget.TextView; import com.android.contacts.common.list.ContactEntry; import com.android.dialer.app.R; import com.android.dialer.compat.CompatUtils; +import com.android.dialer.logging.InteractionEvent; +import com.android.dialer.logging.Logger; /** Displays the contact's picture overlaid with their name and number type in a tile. */ public class PhoneFavoriteSquareTileView extends PhoneFavoriteTileView { @@ -87,6 +89,8 @@ public class PhoneFavoriteSquareTileView extends PhoneFavoriteTileView { new OnClickListener() { @Override public void onClick(View v) { + Logger.get(getContext()) + .logInteraction(InteractionEvent.Type.SPEED_DIAL_OPEN_CONTACT_CARD); launchQuickContact(); } }); diff --git a/java/com/android/dialer/app/list/PhoneFavoriteTileView.java b/java/com/android/dialer/app/list/PhoneFavoriteTileView.java index db89cf3dcdd98412cc6c9a30ade9f2b99b4ab08b..eb4f8e967221efaaa795282631b9eb8666c6a01e 100644 --- a/java/com/android/dialer/app/list/PhoneFavoriteTileView.java +++ b/java/com/android/dialer/app/list/PhoneFavoriteTileView.java @@ -18,16 +18,22 @@ package com.android.dialer.app.list; import android.content.ClipData; import android.content.Context; +import android.provider.ContactsContract.PinnedPositions; import android.text.TextUtils; import android.util.AttributeSet; import android.view.View; import android.widget.ImageView; -import com.android.contacts.common.ContactPhotoManager; import com.android.contacts.common.ContactPhotoManager.DefaultImageRequest; import com.android.contacts.common.MoreContactUtils; +import com.android.contacts.common.lettertiles.LetterTileDrawable; import com.android.contacts.common.list.ContactEntry; import com.android.contacts.common.list.ContactTileView; import com.android.dialer.app.R; +import com.android.dialer.callintent.CallInitiationType; +import com.android.dialer.callintent.CallSpecificAppData; +import com.android.dialer.callintent.SpeedDialContactType; +import com.android.dialer.logging.InteractionEvent; +import com.android.dialer.logging.Logger; /** * A light version of the {@link com.android.contacts.common.list.ContactTileView} that is used in @@ -42,7 +48,6 @@ public abstract class PhoneFavoriteTileView extends ContactTileView { // tile is long pressed. static final String DRAG_PHONE_FAVORITE_TILE = "PHONE_FAVORITE_TILE"; private static final String TAG = PhoneFavoriteTileView.class.getSimpleName(); - private static final boolean DEBUG = false; // These parameters instruct the photo manager to display the default image/letter at 70% of // its normal size, and vertically offset upwards 12% towards the top of the letter tile, to // make room for the contact name and number label at the bottom of the image. @@ -55,6 +60,8 @@ public abstract class PhoneFavoriteTileView extends ContactTileView { private View mShadowOverlay; /** Users' most frequent phone number. */ private String mPhoneNumberString; + private boolean isPinned; + private boolean isStarred; public PhoneFavoriteTileView(Context context, AttributeSet attrs) { super(context, attrs); @@ -83,6 +90,8 @@ public abstract class PhoneFavoriteTileView extends ContactTileView { super.loadFromContact(entry); // Set phone number to null in case we're reusing the view. mPhoneNumberString = null; + isPinned = (entry.pinned != PinnedPositions.UNPINNED); + isStarred = entry.isFavorite; if (entry != null) { // Grab the phone-number to call directly. See {@link onClick()}. mPhoneNumberString = entry.phoneNumber; @@ -113,16 +122,37 @@ public abstract class PhoneFavoriteTileView extends ContactTileView { if (mListener == null) { return; } + + CallSpecificAppData.Builder callSpecificAppData = + CallSpecificAppData.newBuilder() + .setCallInitiationType(CallInitiationType.Type.SPEED_DIAL) + .setSpeedDialContactPosition( + ((PhoneFavoriteListView) v.getParent()).getPositionForView(v)); + if (isStarred) { + callSpecificAppData.addSpeedDialContactType(SpeedDialContactType.Type.STARRED_CONTACT); + } else { + callSpecificAppData.addSpeedDialContactType(SpeedDialContactType.Type.FREQUENT_CONTACT); + } + if (isPinned) { + callSpecificAppData.addSpeedDialContactType(SpeedDialContactType.Type.PINNED_CONTACT); + } + if (TextUtils.isEmpty(mPhoneNumberString)) { + // Don't set performance report now, since user may spend some time on picking a number + // Copy "superclass" implementation + Logger.get(getContext()) + .logInteraction(InteractionEvent.Type.SPEED_DIAL_CLICK_CONTACT_WITH_AMBIGUOUS_NUMBER); mListener.onContactSelected( - getLookupUri(), MoreContactUtils.getTargetRectFromView(PhoneFavoriteTileView.this)); + getLookupUri(), + MoreContactUtils.getTargetRectFromView(PhoneFavoriteTileView.this), + callSpecificAppData.build()); } else { // When you tap a frequently-called contact, you want to // call them at the number that you usually talk to them // at (i.e. the one displayed in the UI), regardless of // whether that's their default number. - mListener.onCallNumberDirectly(mPhoneNumberString); + mListener.onCallNumberDirectly(mPhoneNumberString, callSpecificAppData.build()); } } }; @@ -133,7 +163,7 @@ public abstract class PhoneFavoriteTileView extends ContactTileView { return new DefaultImageRequest( displayName, lookupKey, - ContactPhotoManager.TYPE_DEFAULT, + LetterTileDrawable.TYPE_DEFAULT, DEFAULT_IMAGE_LETTER_SCALE, DEFAULT_IMAGE_LETTER_OFFSET, false); diff --git a/java/com/android/dialer/app/list/PhoneFavoritesTileAdapter.java b/java/com/android/dialer/app/list/PhoneFavoritesTileAdapter.java index c692ecac775ffc44f0068622adae3f43fd6f119f..876fbf146aa674843b3124dfb17fe87656434623 100644 --- a/java/com/android/dialer/app/list/PhoneFavoritesTileAdapter.java +++ b/java/com/android/dialer/app/list/PhoneFavoritesTileAdapter.java @@ -30,7 +30,6 @@ import android.provider.ContactsContract.Contacts; import android.provider.ContactsContract.PinnedPositions; import android.support.annotation.VisibleForTesting; import android.text.TextUtils; -import android.util.Log; import android.util.LongSparseArray; import android.view.View; import android.view.ViewGroup; @@ -41,6 +40,11 @@ import com.android.contacts.common.list.ContactEntry; import com.android.contacts.common.list.ContactTileView; import com.android.contacts.common.preference.ContactsPreferences; import com.android.dialer.app.R; +import com.android.dialer.common.LogUtil; +import com.android.dialer.lightbringer.Lightbringer; +import com.android.dialer.lightbringer.LightbringerComponent; +import com.android.dialer.logging.InteractionEvent; +import com.android.dialer.logging.Logger; import com.android.dialer.shortcuts.ShortcutRefresher; import com.google.common.collect.ComparisonChain; import java.util.ArrayList; @@ -190,6 +194,14 @@ public class PhoneFavoritesTileAdapter extends BaseAdapter implements OnDragDrop // Track the length of {@link #mContactEntries} and compare to {@link #TILES_SOFT_LIMIT}. int counter = 0; + // Data for logging + int starredContactsCount = 0; + int pinnedContactsCount = 0; + int multipleNumbersContactsCount = 0; + int contactsWithPhotoCount = 0; + int contactsWithNameCount = 0; + int lightbringerReachableContactsCount = 0; + // The cursor should not be closed since this is invoked from a CursorLoader. if (cursor.moveToFirst()) { int starredColumn = cursor.getColumnIndexOrThrow(Contacts.STARRED); @@ -262,6 +274,22 @@ public class PhoneFavoritesTileAdapter extends BaseAdapter implements OnDragDrop contact.pinned = pinned; mContactEntries.add(contact); + // Set counts for logging + if (isStarred) { + // mNumStarred might be larger than the number of visible starred contact, + // since it includes invisible ones (starred contact with no phone number). + starredContactsCount++; + } + if (pinned != PinnedPositions.UNPINNED) { + pinnedContactsCount++; + } + if (!TextUtils.isEmpty(name)) { + contactsWithNameCount++; + } + if (photoUri != null) { + contactsWithPhotoCount++; + } + duplicates.put(id, contact); counter++; @@ -274,6 +302,47 @@ public class PhoneFavoritesTileAdapter extends BaseAdapter implements OnDragDrop ShortcutRefresher.refresh(mContext, mContactEntries); notifyDataSetChanged(); + + Lightbringer lightbringer = LightbringerComponent.get(mContext).getLightbringer(); + for (ContactEntry contact : mContactEntries) { + if (contact.phoneNumber == null) { + multipleNumbersContactsCount++; + } else if (lightbringer.isReachable(mContext, contact.phoneNumber)) { + lightbringerReachableContactsCount++; + } + } + + Logger.get(mContext) + .logSpeedDialContactComposition( + counter, + starredContactsCount, + pinnedContactsCount, + multipleNumbersContactsCount, + contactsWithPhotoCount, + contactsWithNameCount, + lightbringerReachableContactsCount); + // Logs for manual testing + LogUtil.v("PhoneFavoritesTileAdapter.saveCursorToCache", "counter: %d", counter); + LogUtil.v( + "PhoneFavoritesTileAdapter.saveCursorToCache", + "starredContactsCount: %d", + starredContactsCount); + LogUtil.v( + "PhoneFavoritesTileAdapter.saveCursorToCache", + "pinnedContactsCount: %d", + pinnedContactsCount); + LogUtil.v( + "PhoneFavoritesTileAdapter.saveCursorToCache", + "multipleNumbersContactsCount: %d", + multipleNumbersContactsCount); + LogUtil.v( + "PhoneFavoritesTileAdapter.saveCursorToCache", + "contactsWithPhotoCount: %d", + contactsWithPhotoCount); + LogUtil.v( + "PhoneFavoritesTileAdapter.saveCursorToCache", + "contactsWithNameCount: %d", + contactsWithNameCount); } /** Iterates over the {@link Cursor} Returns position of the first NON Starred Contact */ @@ -347,7 +416,7 @@ public class PhoneFavoritesTileAdapter extends BaseAdapter implements OnDragDrop @Override public void notifyDataSetChanged() { if (DEBUG) { - Log.v(TAG, "notifyDataSetChanged"); + LogUtil.v(TAG, "notifyDataSetChanged"); } super.notifyDataSetChanged(); } @@ -355,7 +424,7 @@ public class PhoneFavoritesTileAdapter extends BaseAdapter implements OnDragDrop @Override public View getView(int position, View convertView, ViewGroup parent) { if (DEBUG) { - Log.v(TAG, "get view for " + String.valueOf(position)); + LogUtil.v(TAG, "get view for " + position); } PhoneFavoriteTileView tileView = null; @@ -455,8 +524,9 @@ public class PhoneFavoritesTileAdapter extends BaseAdapter implements OnDragDrop // update the database here with the new pinned positions try { mContext.getContentResolver().applyBatch(ContactsContract.AUTHORITY, operations); + Logger.get(mContext).logInteraction(InteractionEvent.Type.SPEED_DIAL_PIN_CONTACT); } catch (RemoteException | OperationApplicationException e) { - Log.e(TAG, "Exception thrown when pinning contacts", e); + LogUtil.e(TAG, "Exception thrown when pinning contacts", e); } } } @@ -609,6 +679,7 @@ public class PhoneFavoritesTileAdapter extends BaseAdapter implements OnDragDrop if (mDraggedEntry != null) { unstarAndUnpinContact(mDraggedEntry.lookupUri); mAwaitingRemove = true; + Logger.get(mContext).logInteraction(InteractionEvent.Type.SPEED_DIAL_REMOVE_CONTACT); } } diff --git a/java/com/android/dialer/app/list/RegularSearchFragment.java b/java/com/android/dialer/app/list/RegularSearchFragment.java index 02896793b2c2952a2e4073b4e34ea0cce39d1b41..728948bfc03800aaa3ef1ee290236628a2ac3af8 100644 --- a/java/com/android/dialer/app/list/RegularSearchFragment.java +++ b/java/com/android/dialer/app/list/RegularSearchFragment.java @@ -25,12 +25,14 @@ import android.view.ViewGroup; import com.android.contacts.common.list.ContactEntryListAdapter; import com.android.contacts.common.list.PinnedHeaderListView; import com.android.dialer.app.R; -import com.android.dialer.app.widget.EmptyContentView; -import com.android.dialer.app.widget.EmptyContentView.OnEmptyViewActionButtonClickedListener; import com.android.dialer.callintent.CallInitiationType; +import com.android.dialer.common.LogUtil; import com.android.dialer.phonenumbercache.CachedNumberLookupService; import com.android.dialer.phonenumbercache.PhoneNumberCache; import com.android.dialer.util.PermissionsUtil; +import com.android.dialer.widget.EmptyContentView; +import com.android.dialer.widget.EmptyContentView.OnEmptyViewActionButtonClickedListener; +import java.util.Arrays; public class RegularSearchFragment extends SearchFragment implements OnEmptyViewActionButtonClickedListener, @@ -114,8 +116,15 @@ public class RegularSearchFragment extends SearchFragment } if (READ_CONTACTS.equals(mPermissionToRequest)) { - FragmentCompat.requestPermissions( - this, new String[] {mPermissionToRequest}, PERMISSION_REQUEST_CODE); + String[] deniedPermissions = + PermissionsUtil.getPermissionsCurrentlyDenied( + getContext(), PermissionsUtil.allContactsGroupPermissionsUsedInDialer); + if (deniedPermissions.length > 0) { + LogUtil.i( + "RegularSearchFragment.onEmptyViewActionButtonClicked", + "Requesting permissions: " + Arrays.toString(deniedPermissions)); + FragmentCompat.requestPermissions(this, deniedPermissions, PERMISSION_REQUEST_CODE); + } } } diff --git a/java/com/android/dialer/app/list/RemoveView.java b/java/com/android/dialer/app/list/RemoveView.java index 3b917db43e6982549820ea447b145e498f83380f..1d566c5a060c44acc5a709823d24b233dc20354c 100644 --- a/java/com/android/dialer/app/list/RemoveView.java +++ b/java/com/android/dialer/app/list/RemoveView.java @@ -41,7 +41,7 @@ public class RemoveView extends FrameLayout { } public RemoveView(Context context, AttributeSet attrs) { - this(context, attrs, -1); + this(context, attrs, 0); } public RemoveView(Context context, AttributeSet attrs, int defStyle) { diff --git a/java/com/android/dialer/app/list/SearchFragment.java b/java/com/android/dialer/app/list/SearchFragment.java index fcf8236e30536dfa94b008c200bde0862bc97999..00a2708a1ef85585399471959fd70c989822547b 100644 --- a/java/com/android/dialer/app/list/SearchFragment.java +++ b/java/com/android/dialer/app/list/SearchFragment.java @@ -34,19 +34,20 @@ import android.widget.LinearLayout; import android.widget.ListView; import android.widget.Space; import com.android.contacts.common.list.ContactEntryListAdapter; -import com.android.contacts.common.list.ContactListItemView; import com.android.contacts.common.list.OnPhoneNumberPickerActionListener; import com.android.contacts.common.list.PhoneNumberPickerFragment; import com.android.dialer.animation.AnimUtils; import com.android.dialer.app.R; import com.android.dialer.app.dialpad.DialpadFragment.ErrorDialogFragment; import com.android.dialer.app.widget.DialpadSearchEmptyContentView; -import com.android.dialer.app.widget.EmptyContentView; import com.android.dialer.callintent.CallSpecificAppData; import com.android.dialer.common.LogUtil; +import com.android.dialer.logging.DialerImpression; +import com.android.dialer.logging.Logger; import com.android.dialer.util.DialerUtils; import com.android.dialer.util.IntentUtil; import com.android.dialer.util.PermissionsUtil; +import com.android.dialer.widget.EmptyContentView; public class SearchFragment extends PhoneNumberPickerFragment { @@ -80,7 +81,6 @@ public class SearchFragment extends PhoneNumberPickerFragment { setQuickContactEnabled(true); setAdjustSelectionBoundsEnabled(false); setDarkTheme(false); - setPhotoPosition(ContactListItemView.getDefaultPhotoPosition(false /* opposite */)); setUseCallableUri(true); try { @@ -98,9 +98,6 @@ public class SearchFragment extends PhoneNumberPickerFragment { public void onStart() { LogUtil.d("SearchFragment.onStart", ""); super.onStart(); - if (isSearchMode()) { - getAdapter().setHasHeader(0, false); - } mActivity = (HostInterface) getActivity(); @@ -172,16 +169,6 @@ public class SearchFragment extends PhoneNumberPickerFragment { return animator; } - @Override - protected void setSearchMode(boolean flag) { - super.setSearchMode(flag); - // This hides the "All contacts with phone numbers" header in the search fragment - final ContactEntryListAdapter adapter = getAdapter(); - if (adapter != null) { - adapter.setHasHeader(0, false); - } - } - public void setAddToContactNumber(String addToContactNumber) { mAddToContactNumber = addToContactNumber; } @@ -249,6 +236,10 @@ public class SearchFragment extends PhoneNumberPickerFragment { } break; case DialerPhoneNumberListAdapter.SHORTCUT_CREATE_NEW_CONTACT: + if (this instanceof SmartDialSearchFragment) { + Logger.get(getContext()) + .logImpression(DialerImpression.Type.CREATE_NEW_CONTACT_FROM_DIALPAD); + } number = TextUtils.isEmpty(mAddToContactNumber) ? adapter.getFormattedQueryString() @@ -257,6 +248,10 @@ public class SearchFragment extends PhoneNumberPickerFragment { DialerUtils.startActivityWithErrorToast(getActivity(), intent); break; case DialerPhoneNumberListAdapter.SHORTCUT_ADD_TO_EXISTING_CONTACT: + if (this instanceof SmartDialSearchFragment) { + Logger.get(getContext()) + .logImpression(DialerImpression.Type.ADD_TO_A_CONTACT_FROM_DIALPAD); + } number = TextUtils.isEmpty(mAddToContactNumber) ? adapter.getFormattedQueryString() diff --git a/java/com/android/dialer/app/list/SmartDialSearchFragment.java b/java/com/android/dialer/app/list/SmartDialSearchFragment.java index eb1508c7287169346c448534e2ffb0fc7fc6b8bf..2ebc06bc3f505a5309faaa5558134bb567a557f3 100644 --- a/java/com/android/dialer/app/list/SmartDialSearchFragment.java +++ b/java/com/android/dialer/app/list/SmartDialSearchFragment.java @@ -29,11 +29,12 @@ import android.support.v13.app.FragmentCompat; import com.android.contacts.common.list.ContactEntryListAdapter; import com.android.dialer.app.R; import com.android.dialer.app.dialpad.SmartDialCursorLoader; -import com.android.dialer.app.widget.EmptyContentView; import com.android.dialer.callintent.CallInitiationType; import com.android.dialer.common.LogUtil; import com.android.dialer.database.DialerDatabaseHelper; import com.android.dialer.util.PermissionsUtil; +import com.android.dialer.widget.EmptyContentView; +import java.util.Arrays; /** Implements a fragment to load and display SmartDial search results. */ public class SmartDialSearchFragment extends SearchFragment @@ -79,6 +80,11 @@ public class SmartDialSearchFragment extends SearchFragment } } + @Override + public boolean getShowEmptyListForNullQuery() { + return true; + } + @Override protected void setupEmptyView() { if (mEmptyView != null && getActivity() != null) { @@ -123,8 +129,16 @@ public class SmartDialSearchFragment extends SearchFragment return; } - FragmentCompat.requestPermissions( - this, new String[] {CALL_PHONE}, CALL_PHONE_PERMISSION_REQUEST_CODE); + String[] deniedPermissions = + PermissionsUtil.getPermissionsCurrentlyDenied( + getContext(), PermissionsUtil.allPhoneGroupPermissionsUsedInDialer); + if (deniedPermissions.length > 0) { + LogUtil.i( + "SmartDialSearchFragment.onEmptyViewActionButtonClicked", + "Requesting permissions: " + Arrays.toString(deniedPermissions)); + FragmentCompat.requestPermissions( + this, deniedPermissions, CALL_PHONE_PERMISSION_REQUEST_CODE); + } } @Override diff --git a/java/com/android/dialer/app/manifests/activities/AndroidManifest.xml b/java/com/android/dialer/app/manifests/activities/AndroidManifest.xml index ca93da0deb249250f185e79d7e41c16bff9383c3..0729d7293140eaeb6ec3228ecab115cf82d9d6cf 100644 --- a/java/com/android/dialer/app/manifests/activities/AndroidManifest.xml +++ b/java/com/android/dialer/app/manifests/activities/AndroidManifest.xml @@ -19,7 +19,7 @@ - + + @@ -106,6 +107,7 @@ + - - - diff --git a/java/com/android/dialer/app/res/drawable/ic_wifi_calling.xml b/java/com/android/dialer/app/res/drawable/ic_wifi_calling.xml new file mode 100644 index 0000000000000000000000000000000000000000..968713376004bfb37cb1c4bb9164270bc1054001 --- /dev/null +++ b/java/com/android/dialer/app/res/drawable/ic_wifi_calling.xml @@ -0,0 +1,29 @@ + + + + + + + \ No newline at end of file diff --git a/java/com/android/dialer/app/res/layout-land/empty_content_view_dialpad_search.xml b/java/com/android/dialer/app/res/layout-land/empty_content_view_dialpad_search.xml index 5f8068067a08a53e39bd8743e7d5593a13bdd82b..59d13636ad2ea1e547b54982e5cf36f4e251c619 100644 --- a/java/com/android/dialer/app/res/layout-land/empty_content_view_dialpad_search.xml +++ b/java/com/android/dialer/app/res/layout-land/empty_content_view_dialpad_search.xml @@ -26,14 +26,14 @@ android:layout_height="0dp" android:layout_weight="1"/> + + + + + diff --git a/java/com/android/dialer/app/res/layout/all_contacts_fragment.xml b/java/com/android/dialer/app/res/layout/all_contacts_fragment.xml index 17a45208d9ad9bd751d697bd7853f90f3e22ad32..422c52991603828cf941ceb453bee26e04f9a534 100644 --- a/java/com/android/dialer/app/res/layout/all_contacts_fragment.xml +++ b/java/com/android/dialer/app/res/layout/all_contacts_fragment.xml @@ -45,7 +45,7 @@ android:cropToPadding="false" android:clipToPadding="false"/> - + + + + + + - - + android:src="@drawable/ic_check_mark_48dp" /> diff --git a/java/com/android/dialer/app/res/layout/call_log_list_item_actions.xml b/java/com/android/dialer/app/res/layout/call_log_list_item_actions.xml index d3a5531307af230ee2ffd1e8f8294adf4b36e18e..504638348950572c34dc104495d53153278e8f10 100644 --- a/java/com/android/dialer/app/res/layout/call_log_list_item_actions.xml +++ b/java/com/android/dialer/app/res/layout/call_log_list_item_actions.xml @@ -50,7 +50,7 @@ + android:text="@string/call"/> + android:src="@drawable/ic_phone_attach"/> + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical"> + android:id="@+id/spacer" + android:layout_width="match_parent" + android:layout_height="0dp" + android:layout_weight="1" + android:background="#00000000"/> + android:layout_width="match_parent" + android:layout_height="@dimen/shadow_length" + android:background="@drawable/shadow_fade_up"/> + android:id="@+id/dialpadChooser" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="@color/background_dialer_light" + android:visibility="gone"/> + android:id="@+id/dialpad_floating_action_button_margin_bottom" + android:layout_width="match_parent" + android:layout_height="@dimen/floating_action_button_margin_bottom" + android:layout_alignParentBottom="true"/> + android:src="@drawable/quantum_ic_call_vd_theme_24" + app:backgroundTint="@color/dialpad_fab_green" + app:colorControlNormal="#ffffff" + app:elevation="@dimen/floating_action_button_translation_z"/> diff --git a/java/com/android/dialer/app/res/layout/empty_content_view_dialpad_search.xml b/java/com/android/dialer/app/res/layout/empty_content_view_dialpad_search.xml index e245aaca0dbd913dd827ff71ad788fd967f38588..1d2047982bacb7ebbeb3b70371e5980125d0b2d7 100644 --- a/java/com/android/dialer/app/res/layout/empty_content_view_dialpad_search.xml +++ b/java/com/android/dialer/app/res/layout/empty_content_view_dialpad_search.xml @@ -16,7 +16,7 @@ - - + android:animateLayoutChanges="true"> + + + android:layout_width="match_parent" + android:layout_height="@dimen/action_bar_height_large" + android:background="@color/actionbar_background_color" + android:elevation="@dimen/tab_elevation"/> - - + android:id="@+id/lists_pager_header" + style="@style/DialtactsActionBarTabTextStyle" + android:layout_width="match_parent" + android:layout_height="@dimen/tab_height" + android:layout_gravity="top" + android:elevation="@dimen/tab_elevation" + android:orientation="horizontal" + android:textAllCaps="true"/> + + @@ -58,38 +58,38 @@ This is required since drag and drop event is only sent to views are visible when drag starts. --> + android:id="@+id/remove_view" + android:layout_width="match_parent" + android:layout_height="@dimen/tab_height" + android:layout_marginTop="@dimen/action_bar_height_large" + android:contentDescription="@string/remove_contact" + android:importantForAccessibility="no"> + android:id="@+id/remove_view_content" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:background="@color/actionbar_background_color" + android:gravity="center" + android:orientation="horizontal" + android:visibility="gone"> + android:id="@+id/remove_view_icon" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginTop="8dp" + android:layout_marginBottom="8dp" + android:src="@drawable/ic_remove" + android:tint="@color/remove_text_color"/> + android:id="@+id/remove_view_text" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@string/remove_contact" + android:textColor="@color/remove_text_color" + android:textSize="@dimen/remove_text_size"/> diff --git a/java/com/android/dialer/app/res/layout/search_edittext.xml b/java/com/android/dialer/app/res/layout/search_edittext.xml index c02512d8086e21faf17ae4a8777ad4f67abe7188..bb6a5f7de34be6f524d0065e5bd60fd013a59919 100644 --- a/java/com/android/dialer/app/res/layout/search_edittext.xml +++ b/java/com/android/dialer/app/res/layout/search_edittext.xml @@ -29,7 +29,7 @@ android:padding="@dimen/search_box_search_icon_padding" android:importantForAccessibility="no" android:scaleType="center" - android:src="@drawable/quantum_ic_search_white_24" + android:src="@drawable/quantum_ic_search_vd_theme_24" android:tint="@color/searchbox_icon_tint"/> - + diff --git a/java/com/android/dialer/app/res/values-af/strings.xml b/java/com/android/dialer/app/res/values-af/strings.xml index 2eb462b1c65f37c87e122ac93a0ab850d6c5dbfb..40e297386afc75918be37fce9d552b19d4dd08db 100644 --- a/java/com/android/dialer/app/res/values-af/strings.xml +++ b/java/com/android/dialer/app/res/values-af/strings.xml @@ -80,11 +80,16 @@ "Voeg wagtyd by" "Instellings" "Nabootser" + "Skep nuwe UI-kortpad" "Alle kontakte" "Gebruik raak-nommerbord" "Keer terug na oproep wat besig is" "Voeg oproep by" "Inkomende oproepe" + "Gaan tans grootmaathandelingmodus in" + "Het grootmaathandelingmodus verlaat" + "Het %1$s gekies" + "Het %1$s ontkies" "Speel stemboodskap" "Bekyk kontak %1$s" "Bel %1$s" @@ -99,11 +104,15 @@ "Stemboodskap" "%s sek." "%s min. %s sek." - "stemboodskap" - "stemboodskappe" - "Ja" - "Nee" + "Kanselleer grootmaathandelingmodus" + "Vee uit" + "Kanselleer" "Vee geselekteerde %1$s uit?" + "%1$s gekies" + + ""Vee hierdie stemboodskappe uit? "" + ""Vee hierdie stemboodskap uit? "" + @string/call_log_header_today "%1$s om %2$s" "%1$02d:%2$02d" @@ -116,7 +125,6 @@ "MEID" "Laai tans van SIM-kaart af…" "SIM-kaartkontakte" - "Geen kontakte-program beskikbaar nie" "Stemsoektog is nie beskikbaar nie" "Kan nie \'n foonoproep maak nie want die Foon-program is gedeaktiveer." "Deursoek kontakte" @@ -145,10 +153,9 @@ "%s nuwe gemiste oproepe" "Daar is nog niemand op jou spoedbel nie" "Voeg \'n gunsteling by" - "Jy het nog nie enige kontakte nie" - "Voeg \'n kontak by" "Raak aan prent om al die nommers te sien of raak en hou om te herorganiseer" "Verwyder" + "Kies alles" "Video-oproep" "Stuur \'n boodskap" "Oproepbesonderhede" @@ -213,11 +220,9 @@ "Geblokkeerde nommers" "%1$s is reeds geblokkeer." "Oproeprekeninge" - "Skakel aan" "Stel toestemmings" "Skakel die kontaktetoestemming aan om spoedbel te aktiveer." "Skakel die foontoestemming aan om jou oproeprekord te sien." - "Skakel die kontaktetoestemming aan om jou kontakte te sien." "Skakel die foontoestemming aan om na jou stemboodskapdiens te gaan." "Skakel die Kontakte-toestemmings aan om jou kontakte te deursoek." "Skakel die foontoestemming aan om \'n oproep te maak." diff --git a/java/com/android/dialer/app/res/values-am/strings.xml b/java/com/android/dialer/app/res/values-am/strings.xml index 82303019c408ab1561f5938c83d09e26e6e80d0f..08b52a6ee9f93ad68ad88a630b54ad2e0a5115a9 100644 --- a/java/com/android/dialer/app/res/values-am/strings.xml +++ b/java/com/android/dialer/app/res/values-am/strings.xml @@ -80,11 +80,16 @@ "መጠበቅ አክል" "ቅንብሮች" "ማስመሰያ" + "አዲስ የዩአይ አቋራጭ ፍጠር" "ሁሉም እውቅያዎች" "የድምፅ ቁልፍ ሰሌዳን ንካ" "በመካሄድ ላይ ወዳለው ጥሪ ተመለስ" "ጥሪ ያክሉ" "ገቢ ጥሪዎች" + "ወደ የጅምላ እርምጃ ሁነታ በመግባት ላይ" + "ከጅምላ እርምጃ ሁነታ ለቀው ወጥተዋል" + "%1$s ተመርጧል" + "%1$s አልተመረጠም" "የድምፅ መልዕክት አጫውት" "ዕውቂያ %1$s ዕይ" "ጥሪ %1$s" @@ -99,11 +104,15 @@ "የድምፅ መልዕክት" "%s ሰከንድ" "%s ደቂቃ %s ሴከ" - "የድምፅ መልዕክት" - "የድምፅ መልዕክቶች" - "አዎ" - "አይ" + "የጅምላ እርምጃ ሁነታ ይቅር" + "ሰርዝ" + "ይቅር" "የተመረጠው %1$s ይሰረዝ?" + "%1$s ተመርጠዋል" + + ""እነዚህ የድምፅ መልዕክቶች ይሰረዙ? "" + ""እነዚህ የድምፅ መልዕክቶች ይሰረዙ? "" + @string/call_log_header_today "%1$s %2$s ላይ" "%1$02d:%2$02d" @@ -116,7 +125,6 @@ "MEID" "ከSIM ካርድ ላይ በመጫን ላይ..." "የSIM ካርድ ዕውቂያዎች" - "ምንም የእውቂያዎች መተግበሪያ አይገኝም" "የድምጽ ፍለጋ አይገኝም" "የስልክ መተግበሪያው ስለተሰናከለ የስልክ ጥሪ ማድረግ አይቻልም።" "ዕውቅያዎችን ፈልግ" @@ -145,10 +153,9 @@ "%s አዲስ ያልተመለሱ ጥሪዎች" "በፈጥኖ መደወያ ላይ ገና ማንም የለዎትም" "ተወዳጅ አክል" - "ገና ምንም እውቂያዎች የሉዎትም" - "ዕውቂያ አክል" "ሁሉንም ቁጥሮች ለማየት ምስል ይንኩ ወይም ዳግም ለመደርደር ነክተው ይያዙት" "አስወግድ" + "ሁሉንም ምረጥ" "የቪዲዮ ጥሪ" "መልእክት ላክ" "የጥሪ ዝርዝሮች" @@ -213,11 +220,9 @@ "የታገዱ ቁጥሮች" "%1$s ቀድሞውኑ ታግዷል።" "የመደወያ መለያዎች" - "አብራ" "ፍቃዶችን አዋቅር" "ፈጥኖ መደወያን ለማንቃት የእውቂያዎች ፍቃዱን ያብሩ።" "የጥሪ ምዝግብ ማስታወአሽዎን ለማየት የስልክ ፍቃዱን ያብሩ።" - "የእርስዎን እውቂያዎች ለማየት የእውቂያዎች ፍቃዱን ያብሩ።" "የድምፅ መልዕክትዎን ለመድረስ የስልክ ፍቃዱን ያብሩ።" "የእርስዎን እውቂያዎች ለመከታተል የእውቂያዎች ፍቃዶችን ያብሩ።" "ስልክ ለመደወል የስልክ ፍቃዱን ያብሩ።" diff --git a/java/com/android/dialer/app/res/values-ar/strings.xml b/java/com/android/dialer/app/res/values-ar/strings.xml index e4dfb4d9efba58ccceb95848dc7a98902f4646e6..fe84a66abe131e83cc0c563f135c885401750116 100644 --- a/java/com/android/dialer/app/res/values-ar/strings.xml +++ b/java/com/android/dialer/app/res/values-ar/strings.xml @@ -84,11 +84,16 @@ "إضافة انتظار" "الإعدادات" "المحاكي" + "إنشاء اختصار للواجهة الجديدة" "جميع جهات الاتصال" "استخدام لوحة مفاتيح نغمات باللمس" "عودة إلى المكالمة الجارية" "إضافة مكالمة" "المكالمات الواردة" + "يتم الدخول إلى وضع الإجراء المجمَّع" + "تمت مغادرة وضع الإجراء المجمَّع" + "تم تحديد %1$s" + "تم إلغاء تحديد %1$s" "تشغيل البريد الصوتي" "عرض جهة الاتصال %1$s" "الاتصال بـ %1$s" @@ -103,11 +108,19 @@ "البريد الصوتي" "%s ثانية" "%s دقيقة %s ثانية" - "البريد الصوتي" - "رسائل البريد الصوتي" - "نعم" - "لا" + "إلغاء وضع الإجراءات المجمَّع" + "حذف" + "إلغاء" "حذف رسائل %1$s المحددة؟" + "تم تحديد %1$s" + + ""حذف رسائل البريد الصوتي هذه؟ "" + ""حذف رسالتي البريد الصوتي هاتين؟ "" + ""حذف رسائل البريد الصوتي هذه؟ "" + ""حذف رسائل البريد الصوتي هذه؟ "" + ""حذف رسائل البريد الصوتي هذه؟ "" + ""حذف رسالة البريد الصوتي هذه؟ "" + @string/call_log_header_today "%1$s في %2$s" "%1$02d:%2$02d" @@ -120,7 +133,6 @@ "MEID" "‏جارٍ التحميل من شريحة SIM…" "‏شريحة SIM وجهات الاتصال" - "لا يتوفر تطبيق لجهات الاتصال" "البحث الصوتي غير متاح" "يتعذر إجراء مكالمة هاتفية نظرًا لأنه تم تعطيل تطبيق الهاتف." "البحث في جهات الاتصال" @@ -149,10 +161,9 @@ "%s من المكالمات الجديدة الفائتة" "لم تتم إضافة أية جهة اتصال إلى قائمة الاتصال السريع حتى الآن" "إضافة مفضلة" - "ليست لديك أية جهات اتصال حتى الآن" - "إضافة جهة اتصال" "المس الصورة للاطلاع على جميع الأرقام أو المس مع الاستمرار لإعادة الترتيب" "إزالة" + "تحديد الكل" "مكالمة فيديو" "إرسال رسالة" "تفاصيل المكالمة" @@ -221,11 +232,9 @@ "الأرقام المحظورة" "تم حظر %1$s." "حسابات الاتصال" - "تشغيل" "تعيين الأذونات" "لتمكين الاتصال السريع، شغِّل إذن جهات الاتصال." "للاطلاع على سجل المكالمات، شغِّل إذن الهاتف." - "للاطلاع على جهات الاتصال، شغِّل إذن جهات الاتصال." "للوصول إلى البريد الصوتي، شغِّل إذن الهاتف." "للبحث عن جهات الاتصال، عليك تشغيل أذونات جهات الاتصال." "لإجراء مكالمة، شغِّل إذن الهاتف." diff --git a/java/com/android/dialer/app/res/values-az/strings.xml b/java/com/android/dialer/app/res/values-az/strings.xml index 62bc117ba3a6330cef0c47c0dbc4ff87b4a4649c..f2b0cf35d669bdd8461dd0ede14ea5d7a6b4fd90 100644 --- a/java/com/android/dialer/app/res/values-az/strings.xml +++ b/java/com/android/dialer/app/res/values-az/strings.xml @@ -80,11 +80,16 @@ "Gözləmə əlavə edin" "Ayarlar" "Stimulyator" + "Yeni İİ Qısayolu yaradın" "Bütün kontaktlar" "Toxunma ton klaviaturasını istifadə edin" "Davam edən zəngə qayıdın" "Zəng əlavə edin" "Gələn zənglər" + "Toplu əməliyyat rejiminə daxil olunur" + "Toplu əməliyyat rejimi tərk edilir" + "%1$s seçildi" + "%1$s seçilmədi" "Səsli məktubu oxudun" "%1$s adlı kontakta baxın" "Zəng %1$s" @@ -99,11 +104,15 @@ "Səsli poçt" "%s san" "%s dəq %s san" - "səsli e-məktub" - "səsli e-məktublar" - "Bəli" - "Xeyr" + "Qrup əməliyyatları rejimini ləğv edin" + "Silin" + "Ləğv edin" "Seçilmiş %1$s silinsin?" + "%1$s seçilib" + + ""Bu səsli e-məktub silinsin? "" + ""Bu səsli e-məktub silinsin? "" + @string/call_log_header_today "%1$s tarixində %2$s" "%1$02d:%2$02d" @@ -116,7 +125,6 @@ "MEID" "SIM kartdan yüklənir..." "SIM kart kontaktları" - "Əlaqələr proqramı mövcud deyil" "Səsli axtarış mövcud deyil" "Telefon tətbiqi deaktiv edildiyinə görə telefon zəngi etmək mümkün deyil." "Kontakt axtarın" @@ -145,10 +153,9 @@ "%s yeni buraxılmış zəng" "Hələ sürətli zəng siyahınızda hec kim yoxdur" "Sevimlilərə əlavə edin" - "Hələ heç bir kontaktınız yoxdur" - "Kontakt əlavə edin" "Bütün nömrələri görmək üçün təsvirə toxunun və ya yenidən qaydaya salmaq üçün basıb saxlayın" "Yığışdır" + "Hamısını seçin" "Video zəng" "Mesaj göndərin" "Zəng detalları" @@ -213,11 +220,9 @@ "Bloklanmış nömrələr" "%1$s artıq bloklanıb." "Hesabların çağrılması" - "Aktiv edin" "İcazələri quraşdırın" "Sürətli yığımı aktivləşdirmək üçün, Kontakt icazələrini aktivləşdirin." "Çağrı jurnalınızı görmək üçün Telefon icazəsini aktivləşdirin." - "Kontaktlarınızı görmək üçün Kontakt icazəsini aktivləşdirin." "Səsli poçta daxil olmaq üçün, Telefon icazəsini aktivləşdirin." "Kontaktlarınızı axtarmaq üçün, Kontakt icazələrini aktiv edin." "Zəng etmək üçün, Telefon icazəsini aktivləşdirin." diff --git a/java/com/android/dialer/app/res/values-b+sr+Latn/strings.xml b/java/com/android/dialer/app/res/values-b+sr+Latn/strings.xml index 9df729108aece17b10fd1fb4e1894787539ae30b..b011f7866c80b7951f0f0fc42fe425f014b94f1f 100644 --- a/java/com/android/dialer/app/res/values-b+sr+Latn/strings.xml +++ b/java/com/android/dialer/app/res/values-b+sr+Latn/strings.xml @@ -81,11 +81,16 @@ "Dodaj čekanje" "Podešavanja" "Simulator" + "Napravite prečicu za novi UI" "Svi kontakti" "Upotrebite brojčanik za tonsko biranje" "Vrati se na poziv koji je u toku" "Dodaj poziv" "Dolazni pozivi" + "Ulazite u režim grupnih radnji" + "Izašli ste iz režima grupnih radnji" + "Izabrano je %1$s" + "Opozvan je izbor %1$s" "Puštanje govorne pošte" "Prikaži kontakt %1$s" "Pozovi %1$s" @@ -100,11 +105,16 @@ "Govorna pošta" "%s sek" "%s min %s sek" - "govornu poruku" - "govorne poruke" - "Da" - "Ne" + "Otkažite režim grupnih radnji" + "Izbriši" + "Otkaži" "Želite li da izbrišete izabranu(e) %1$s?" + "Izabranih: %1$s" + + ""Želite li da izbrišete ove govorne poruke? "" + ""Želite li da izbrišete ove govorne poruke? "" + ""Želite li da izbrišete ove govorne poruke? "" + @string/call_log_header_today "%1$s u %2$s" "%1$02d:%2$02d" @@ -117,7 +127,6 @@ "MEID" "Učitava se sa SIM kartice…" "Kontakti na SIM kartici" - "Nema dostupne aplikacije za kontakte" "Glasovna pretraga nije dostupna" "Nije moguće uputiti telefonski poziv jer je aplikacija Telefon onemogućena." "Pretraži kontakte" @@ -146,10 +155,9 @@ "Novih propuštenih poziva: %s" "Nemate nijedan kontakt na brzom biranju" "Dodaj omiljen kontakt" - "Još uvek nemate nijedan kontakt" - "Dodaj kontakt" "Dodirnite sliku da biste videli sve brojeve ili dodirnite i zadržite da biste im promenili raspored" "Ukloni" + "Izaberi sve" "Video poziv" "Pošalji poruku" "Detalji poziva" @@ -215,11 +223,9 @@ "Blokirani brojevi" "%1$s je već blokiran." "Nalozi za pozivanje" - "Uključi" "Podesi dozvole" "Da biste omogućili brzo biranje, uključite dozvolu za Kontakte." "Da biste videli evidenciju poziva, uključite dozvolu za Telefon." - "Da biste videli kontakte, uključite dozvolu za Kontakte." "Da biste pristupili govornoj pošti, uključite dozvolu za Telefon." "Da biste pretražili kontakte, uključite dozvole za Kontakte." "Da biste uputili poziv, uključite dozvolu za Telefon." diff --git a/java/com/android/dialer/app/res/values-be/strings.xml b/java/com/android/dialer/app/res/values-be/strings.xml index aac3df2bd142df367ec0c1aaddfe9428af3812b1..f9b083747e0f84a8f394c2ea0c98ad9ce40851b0 100644 --- a/java/com/android/dialer/app/res/values-be/strings.xml +++ b/java/com/android/dialer/app/res/values-be/strings.xml @@ -82,11 +82,16 @@ "Дадаць чаканне" "Налады" "Сродак мадэліравання" + "Ярлык новага карыст. інтэрфейсу" "Усе кантакты" "Выкарыстанне тонавай клавіятуры" "Звярнуцца да бягучага выкліку" "Дадаць выклік" "Уваходныя выклікі" + "Уваход у рэжым групавога дзеяння" + "Выхад з рэжыму групавога дзеяння" + "Выбрана: %1$s" + "Выбар скасаваны: %1$s" "Прайграць паведамленне галасавой пошты" "Прагледзець кантакт %1$s" "Выклікаць карыстальнiка %1$s" @@ -101,11 +106,17 @@ "Галасавая пошта" "%s с" "%s хв %s с" - "галасавая пошта" - "галасавая пошта" - "Так" - "Не" + "Скасаваць рэжым пакетных дзеянняў" + "Выдаліць" + "Скасаваць" "Выдаліць вылучанае: %1$s?" + "Выбрана: %1$s" + + ""Выдаліць гэтыя паведамленні галасавой пошты? "" + ""Выдаліць гэтыя паведамленні галасавой пошты? "" + ""Выдаліць гэтыя паведамленні галасавой пошты? "" + ""Выдаліць гэтыя паведамленні галасавой пошты? "" + @string/call_log_header_today "%1$s у %2$s" "%1$02d:%2$02d" @@ -118,7 +129,6 @@ "MEID" "Загрузка з SIM-карты..." "Кантакты SIM-карты" - "Праграмы для аперацый з кантактамі няма" "Галасавы пошук недаступны" "Немагчыма зрабіць выклік па тэлефоне, таму што праграма Тэлефон была адключана." "Пошук кантактаў" @@ -147,10 +157,9 @@ "Новых прапушчаных выклікаў: %s" "У вас пакуль нікога няма на хуткім наборы" "Дадаць улюбёны" - "У вас пакуль няма ніякіх кантактаў" - "Дадаць кантакт" "Дакраніцеся да відарыса, каб прагледзець усе нумары, або дакраніцеся і ўтрымлівайце, каб змяніць парадак" "Выдаліць" + "Выбраць усё" "Відэавыклік" "Адправiць паведамленне" "Падрабязнасці выкліку" @@ -217,11 +226,9 @@ "Заблакіраваныя нумары" "%1$s ужо заблакіраваны." "Уліковыя запісы для выклікаў" - "Уключыць" "Задаць дазволы" "Каб уключыць хуткі набор, уключыце дазвол для Кантактаў." "Каб прагледзець свой журнал выклікаў, уключыце дазволы Тэлефона." - "Каб бачыць свае кантакты, уключыце дазвол для Кантактаў." "Каб атрымаць доступ да галасавой пошты, уключыце дазвол для Тэлефона." "Каб шукаць свае кантакты, уключыце дазвол для Кантактаў." "Каб зрабіць выклік, уключыце дазвол для Тэлефона." diff --git a/java/com/android/dialer/app/res/values-bg/strings.xml b/java/com/android/dialer/app/res/values-bg/strings.xml index 7bab71f3b0ddf67be4e527fe5b547f37aa076bfc..8b1105cb3015c5a38f5de030250f60fda9f7691c 100644 --- a/java/com/android/dialer/app/res/values-bg/strings.xml +++ b/java/com/android/dialer/app/res/values-bg/strings.xml @@ -80,11 +80,16 @@ "Добавяне на изчакване" "Настройки" "Симулатор" + "Пряк път към новия ПИ" "Всички контакти" "Използване на тонова клавиатура" "Назад към текущото обаждане" "Добавяне на обаждане" "Вх. обаждания" + "Влизате в режима на групови действия" + "Излязохте от режима на групови действия" + "Избрахте %1$s" + "Премахнахте избора от %1$s" "Пускане на гласовата поща" "Преглед на контактa %1$s" "Обаждане на %1$s" @@ -99,11 +104,15 @@ "Гласова поща" "%s сек" "%s мин %s сек" - "гласово съобщение" - "гласови съобщения" - "Да" - "Не" + "Анулиране на режима на групови действия" + "Изтриване" + "Отказ" "Избрахте %1$s – да се изтрие ли избраното?" + "Избрахте %1$s" + + ""Да се изтрият ли тези гласови съобщения? "" + ""Да се изтрие ли това гласово съобщение? "" + @string/call_log_header_today "%1$s в %2$s" "%1$02d:%2$02d" @@ -116,7 +125,6 @@ "MEID" "Зарежда се от SIM карта..." "Контакти от SIM карта" - "Няма налично приложение за контакти" "Гласовото търсене не е налице" "Не може да се осъществи телефонно обаждане, защото приложението Телефон е деактивирано." "Търсене в контактите" @@ -145,10 +153,9 @@ "%s нови пропуснати обаждания" "Още нямате контакти за бързо набиране" "Добавяне на любим контакт" - "Още нямате контакти" - "Добавяне на контакт" "Докоснете изображението, за да видите всички номера, или го натиснете и задръжте за пренареждане" "Премахване" + "Избиране на всички" "Видеообаждане" "Изпращане на съобщение" "Подробности за обаждането" @@ -213,11 +220,9 @@ "Блокирани номера" "Номер %1$s вече е блокиран." "Профили за обаждане" - "Включване" "Задаване на разрешенията" "За да активирате бързото набиране, включете разрешението за Контакти." "За да видите списъка с обажданията си, включете разрешението за Телефон." - "За да видите контактите си, включете разрешението за Контакти." "За да осъществите достъп до гласовата си поща, включете разрешението за Телефон." "За да търсите в контактите си, включете разрешенията за тях." "За да извършите обаждане, включете разрешението за Телефон." diff --git a/java/com/android/dialer/app/res/values-bn/strings.xml b/java/com/android/dialer/app/res/values-bn/strings.xml index 271247be3eaf1840c63a79890dd6f42c892ea154..2ec362685b382559c778ade62968f940f15c2e42 100644 --- a/java/com/android/dialer/app/res/values-bn/strings.xml +++ b/java/com/android/dialer/app/res/values-bn/strings.xml @@ -80,11 +80,16 @@ "অপেক্ষা যোগ করুন" "সেটিংস" "সিমুলেটার" + "নতুন UI শর্টকাট তৈরি করুন" "সকল পরিচিতি" "স্পর্শ স্বর কীপ্যাড ব্যবহার করুন" "প্রগতিতে থাকা কলে প্রত্যাবর্তন" "কল যোগ করুন" "ইনকামিং কলগুলি" + "বাল্ক অ্যাকশন মোডে প্রবেশ করা হচ্ছে" + "বাল্ক অ্যাকশন মোড ত্যাগ করুন" + "%1$s নির্বাচন করা হয়েছে" + "%1$s অনির্বাচন করা হয়েছে" "ভয়েসমেল প্লে করুন" "%1$s পরিচিতি দেখুন" "%1$s কে কল করুন" @@ -99,11 +104,15 @@ "ভয়েসমেল" "%s সেকেন্ড" "%s মিনিট %s সেকেন্ড" - "ভয়েসমেল" - "ভয়েসমেলগুলি" - "হ্যাঁ" - "না" + "ব্যাচ অ্যাকশন মোড বাতিল করুন" + "মুছুন" + "বাতিল করুন" "নির্বাচিত %1$s মুছে ফেলতে চান?" + "%1$sটি নির্বাচিত" + + ""এই ভয়েসমেলগুলি মুছবেন? "" + ""এই ভয়েসমেলগুলি মুছবেন? "" + @string/call_log_header_today "%1$s তারিখে %2$s\'টায়" "%1$02d:%2$02d" @@ -116,7 +125,6 @@ "MEID" "সিম কার্ড থেকে লোড করা হচ্ছে…" "সিম কার্ডের পরিচিতিগুলি" - "কোনো পরিচিতি অ্যাপ্লিকেশান উপলব্ধ নয়" "ভয়েস অনুসন্ধান অনুপলব্ধ" "কোনো ফোন কল করা যাবে না কারণ ফোন অ্যাপ্লিকেশানটি অক্ষম করা হয়েছে৷" "পরিচিতিগুলি খুঁজুন" @@ -145,10 +153,9 @@ "%sটি নতুন মিসড কল" "আপনার স্পীড ডায়ালে এখনও পর্যন্ত কেউ নেই" "একটি পছন্দসই যোগ করুন" - "আপনার এখনও পর্যন্ত কোনো পরিচিতি নেই" - "একটি পরিচিতি যোগ করুন" "সমস্ত নম্বর দেখতে ছবিতে স্পর্শ করুন বা রেকর্ড করতে স্পর্শ করে ধরে রাখুন" "সরান" + "সবগুলি নির্বাচন করুন" "ভিডিও কল" "একটি বার্তা পাঠান" "কলের বিশদ বিবরণ" @@ -213,11 +220,9 @@ "ব্লক করা নাম্বারগুলি" "%1$s ইতিমধ্যেই অববোধ করা রয়েছে৷" "কলিং অ্যাকাউন্টগুলি" - "চালু করুন" "অনুমতিগুলি সেট করুন" "স্পীড ডায়াল সক্ষম করতে, পরিচিতিগুলির অনুমতি চালু করুন।" "আপনার কল লগ দেখতে, ফোনের অনুমতি চালু করুন।" - "আপনার পরিচিতিগুলি দেখতে, পরিচিতিগুলির অনুমতি চালু করুন।" "আপনার ভয়েসমেল অ্যাক্সেস করতে, ফোনের অনুমতি চালু করুন।" "আপনার পরিচিতিগুলি অনুসন্ধান করতে, পরিচিতির অনুমতিগুলি চালু করুন।" "একটি কল করতে, ফোনের অনুমতি চালু করুন।" diff --git a/java/com/android/dialer/app/res/values-bs/strings.xml b/java/com/android/dialer/app/res/values-bs/strings.xml index 92c9c14e0a17ca8d4a6a7bf8fd2715f2f18416ff..087db1274603b36d1bb8b785857ca82b4ecf3e66 100644 --- a/java/com/android/dialer/app/res/values-bs/strings.xml +++ b/java/com/android/dialer/app/res/values-bs/strings.xml @@ -81,11 +81,16 @@ "Dodaj čekanje" "Postavke" "Simulator" + "Kreiraj prečicu za novi UI" "Svi kontakti" "Koristi tastaturu za tonsko biranje" "Povratak na poziv u toku" "Dodaj poziv" "Dolazni pozivi" + "Ulazak u način rada za skupnu radnju" + "Napuštanje načina rada za skupnu radnju" + "Odabrano %1$s" + "Poništen odabir %1$s" "Pokretanje govorne pošte" "Prikaži kontakt %1$s" "Pozovi kontakt %1$s" @@ -100,11 +105,16 @@ "Govorna pošta" "%s sek." "%s min. %s sek." - "poruka govorne pošte" - "poruke govorne pošte" - "Da" - "Ne" + "Otkaži način rada za grupnu radnju" + "Izbriši" + "Otkaži" "Izbrisati izabranu/e %1$s?" + "Odabrano %1$s" + + ""Izbrisati ove govorne poruke? "" + ""Izbrisati ove govorne poruke? "" + ""Izbrisati ove govorne poruke? "" + @string/call_log_header_today "%1$s u %2$s" "%1$02d:%2$02d" @@ -117,7 +127,6 @@ "MEID" "Učitavanje sa SIM kartice…" "Kontakti sa SIM kartice" - "Nije dostupna nijedna aplikacija za kontakte" "Glasovna pretraga nije dostupna" "Nije moguće uputiti poziv jer je aplikacija Telefon onemogućena." "Traži kontakte" @@ -146,10 +155,9 @@ "Broj novih propuštenih poziva: %s" "Nemate nikog na brzom biranju" "Dodaj u favorite" - "Još nemate nijedan kontakt" - "Dodaj kontakt" "Dodirnite sliku da vidite sve brojeve ili dodirnite i držite da promijenite raspored." "Ukloni" + "Izaberi sve" "Videopoziv" "Pošalji poruku" "Detalji o pozivu" @@ -215,11 +223,9 @@ "Blokirani brojevi" "%1$s je već blokiran." "Računi za pozivanje" - "Uključi" "Postavi dozvole" "Da omogućite brzo biranje, uključite dozvolu za Kontakte." "Da vidite popis poziva, uključite dozvolu za Telefon." - "Da vidite kontakte, uključite dozvolu za Kontakte." "Da pristupite govornoj pošti,uključite dozvolu za telefon." "Da pretražujete kontakte, uključite dozvole za Kontakte." "Da uputite poziv, uključite dozvolu za Telefon." diff --git a/java/com/android/dialer/app/res/values-ca/strings.xml b/java/com/android/dialer/app/res/values-ca/strings.xml index fa04dd980a6cf6db753017fbe44ac1402ed06da5..71385805a397e7a25e8eab0c53c8043925bed28e 100644 --- a/java/com/android/dialer/app/res/values-ca/strings.xml +++ b/java/com/android/dialer/app/res/values-ca/strings.xml @@ -80,11 +80,16 @@ "Afegeix espera" "Configuració" "Simulador" + "Crea drecera per a la nova IU" "Tots els contactes" "Utilitza el teclat de tons" "Torna a la trucada en curs" "Afegeix una trucada" "Trucades entrants" + "S\'està accedint al mode d\'acció massiva" + "S\'ha sortit del mode d\'acció massiva" + "S\'ha seleccionat %1$s" + "S\'ha desseleccionat %1$s" "Reprodueix el missatge de veu" "Visualitza el contacte %1$s" "Truca a %1$s" @@ -99,24 +104,27 @@ "Bústia de veu" "%s s" "%s min %s s" - "missatge de veu" - "missatges de veu" - "Sí" - "No" + "Cancel·la el mode d\'accions en lot" + "Suprimeix" + "Cancel·la" "Vols suprimir l\'element o elements seleccionats (%1$s)?" + "%1$s seleccionades" + + ""Vols suprimir aquests missatges de veu? "" + ""Vols suprimir aquest missatge de veu? "" + @string/call_log_header_today "%1$s a les %2$s" "%1$02d:%2$02d" "%1$s%2$s" "No es pot trucar a aquest número." - "Per configurar els missatges de veu, vés a Menú > Configuració." + "Per configurar els missatges de veu, ves a Menú > Configuració." "Per trucar a la bústia de veu, primer has de desactivar el mode d\'avió." "S\'està carregant…" "IMEI" "MEID" "S\'està carregant des de la targeta SIM..." "Contactes de la targeta SIM" - "No hi ha cap contacte disponible." "La cerca per veu no està disponible." "No es pot fer una trucada telefònica perquè s\'ha desactivat l\'aplicació de telèfon." "Cerca als contactes" @@ -145,10 +153,9 @@ "%s trucades perdudes noves" "Encara no tens cap contacte al marcatge ràpid" "Afegeix un preferit" - "Encara no tens cap contacte" - "Afegeix un contacte" "Toca la imatge per veure\'n tots els números o bé mantén-la premuda per canviar-ne l\'ordre" "Suprimeix" + "Selecciona-ho tot" "Videotrucada" "Envia un missatge" "Detalls de la trucada" @@ -213,11 +220,9 @@ "Números bloquejats" "%1$s ja està bloquejat." "Comptes de trucades" - "Activa" "Defineix els permisos" "Activa el permís Contactes per activar el marcatge ràpid." "Activa el permís Telèfon per veure el teu registre de trucades." - "Activa el permís Contactes per veure els teus contactes." "Activa el permís Telèfon per accedir a la bústia de veu." "Per cercar els teus contactes, activa els permisos de Contactes." "Activa el permís Telèfon per fer una trucada." @@ -227,7 +232,7 @@ "Bloqueja el número" "No és una trucada brossa" "Desbloqueja el número" - "Contingut brossa" + "Trucada brossa" "%1$s no té connexió i no s\'hi pot contactar" "Informació" diff --git a/java/com/android/dialer/app/res/values-cs/strings.xml b/java/com/android/dialer/app/res/values-cs/strings.xml index 5a3e42913f0bf3fd49c61f852937e96a1b738582..dbff467c08c85262df61f37c0b33ba1dc326ce20 100644 --- a/java/com/android/dialer/app/res/values-cs/strings.xml +++ b/java/com/android/dialer/app/res/values-cs/strings.xml @@ -82,11 +82,16 @@ "Přidat čekání" "Nastavení" "Simulátor" + "Vytv. zkratku na nové rozhraní" "Všechny kontakty" "Použít dotykovou tónovou klávesnici" "Návrat k probíhajícímu hovoru" "Přidat hovor" "Příchozí volání" + "Vstupování do režimu hromadných akcí" + "Opustili jste režim hromadných akcí" + "Položka %1$s je vybrána" + "Položka %1$s není vybrána" "Přehrát hlasovou schránku" "Zobrazit kontakt %1$s" "Volat kontakt %1$s" @@ -101,11 +106,17 @@ "Hlasová schránka" "%s s" "%s min %s s" - "vybranou hlasovou zprávu" - "vybrané hlasové zprávy" - "Ano" - "Ne" + "Zrušit režim hromadných akcí" + "Smazat" + "Zrušit" "Smazat %1$s?" + "Vybráno: %1$s" + + ""Smazat tyto hlasové zprávy? "" + ""Smazat tyto hlasové zprávy? "" + ""Smazat tyto hlasové zprávy? "" + ""Smazat tuto hlasovou zprávu? "" + @string/call_log_header_today "%1$s%2$s" "%1$02d:%2$02d" @@ -118,7 +129,6 @@ "MEID" "Načítání ze SIM karty..." "Kontakty na SIM kartě" - "Není k dispozici žádná aplikace pro práci s kontakty." "Hlasové vyhledávání není k dispozici." "Telefonický hovor nelze uskutečnit, protože aplikace Telefon byla zakázána." "Vyhledat kontakty" @@ -147,10 +157,9 @@ "Nové zmeškané hovory: %s" "V rychlém vytáčení zatím nemáte žádný kontakt." "Přidat oblíbený kontakt" - "Zatím nemáte žádné kontakty" - "Přidat kontakt" "Klepnutím na obrázek zobrazíte všechna čísla. Podržením můžete změnit pořadí." "Odstranit" + "Vybrat všechny" "Videohovor" "Odeslat zprávu" "Podrobnosti hovoru" @@ -217,11 +226,9 @@ "Blokovaná čísla" "Číslo %1$s je již blokováno." "Účty pro volání" - "Zapnout" "Nastavit oprávnění" "Chcete-li povolit rychlé vytáčení, aktivujte oprávnění Kontakty." "Chcete-li zobrazit seznam hovorů, aktivujte oprávnění Telefon." - "Chcete-li zobrazit kontakty, aktivujte oprávnění Kontakty." "Chcete-li přejít do hlasové schránky, aktivujte oprávnění Telefon." "Chcete-li vyhledat kontakty, zapněte oprávnění Kontakty." "Chcete-li uskutečnit hovor, aktivujte oprávnění Telefon." diff --git a/java/com/android/dialer/app/res/values-da/strings.xml b/java/com/android/dialer/app/res/values-da/strings.xml index 42aa663782a9360936e477c67acfece292ae6230..72f5a283559a94eea2440361ef3d92f5e8ca7f5c 100644 --- a/java/com/android/dialer/app/res/values-da/strings.xml +++ b/java/com/android/dialer/app/res/values-da/strings.xml @@ -80,11 +80,16 @@ "Tilføj ventetid" "Indstillinger" "Simulator" + "Opret ny brugerfladegenvej" "Alle kontakter" "Brug numerisk tastatur" "Vend tilbage til igangværende opkald" "Tilføj opkald" "Indgående opkald" + "Massehandlingstilstanden startes" + "Massehandlingstilstanden blev afsluttet" + "Vælg %1$s" + "Fravalgt %1$s" "Afspil telefonsvarerbesked" "Vis kontaktpersonen %1$s" "Ring til %1$s" @@ -99,11 +104,15 @@ "Telefonsvarer" "%s sek." "%s min. %s sek." - "talebesked" - "talebeskeder" - "Ja" - "Nej" + "Annuller massehandlingstilstand" + "Slet" + "Annuller" "Vil du slette de valgte %1$s?" + "%1$s er valgt" + + ""Vil du slette denne talebesked? "" + ""Vil du slette disse talebeskeder? "" + @string/call_log_header_today "%1$s kl. %2$s" "%1$02d:%2$02d" @@ -116,7 +125,6 @@ "MEID" "Indlæser fra SIM-kort ..." "Kontakter på SIM-kort" - "Der er ingen app til kontaktpersoner" "Talesøgning er ikke tilgængelig" "Det er ikke muligt at foretage et telefonopkald, fordi applikationen Telefon er deaktiveret." "Søg i kontakter" @@ -145,10 +153,9 @@ "%s nye ubesvarede opkald" "Der er endnu ingen kontaktpersoner i Hurtigopkald" "Angiv en kontaktperson som foretrukken" - "Du har endnu ikke nogen kontaktpersoner" - "Tilføj en kontaktperson" "Tryk på billedet for at se alle numre, eller tryk og hold nede på billedet for at omarrangere" "Fjern" + "Vælg alt" "Videoopkald" "Send en sms-besked" "Opkaldsinfo" @@ -213,11 +220,9 @@ "Blokerede telefonnumre" "%1$s er allerede blokeret." "Opkaldskonti" - "Aktivér" "Angiv tilladelser" "Slå tilladelsen Kontaktpersoner til for at aktivere hurtigopkald." "Slå tilladelsen Telefon til for at se din opkaldsliste." - "Slå tilladelsen Kontaktpersoner til for at se dine kontaktpersoner." "Slå tilladelsen Telefon til for at få adgang til din telefonsvarer," "Hvis du vil søge i dine kontaktpersoner, skal du slå tilladelserne Kontaktpersoner til." "Slå tilladelsen Telefon til for at foretage et opkald." diff --git a/java/com/android/dialer/app/res/values-de/strings.xml b/java/com/android/dialer/app/res/values-de/strings.xml index 5653e0f12f535c3daebde470042cf15805c89560..a7efd53a352fc2b99b0754dc8b8a294cde960605 100644 --- a/java/com/android/dialer/app/res/values-de/strings.xml +++ b/java/com/android/dialer/app/res/values-de/strings.xml @@ -80,11 +80,16 @@ "Warten hinzufügen" "Einstellungen" "Simulator" + "Verknüpfung für neue Benutzeroberfläche erstellen" "Alle Kontakte" "Telefontastatur verwenden" "Zurück zum aktuellen Anruf" "Anruf hinzufügen" "Eingehende Anrufe" + "Es wird in den Modus für Bulk-Aktionen gewechselt" + "Der Modus für Bulk-Aktionen wurde verlassen" + "%1$s ausgewählt" + "Auswahl für %1$s aufgehoben" "Mailbox abhören" "Kontakt %1$s anzeigen" "%1$s anrufen" @@ -99,11 +104,15 @@ "Mailbox" "%s s" "%s min %s s" - "Mailboxnachricht" - "Mailboxnachrichten" - "Ja" - "Nein" + "Modus für Batch-Aktionen abbrechen" + "Löschen" + "Abbrechen" "Ausgewählte %1$s löschen?" + "%1$s ausgewählt" + + ""Diese Mailboxnachrichten löschen? "" + ""Diese Mailboxnachricht löschen? "" + @string/call_log_header_today "%1$s um %2$s" "%1$02d:%2$02d" @@ -116,7 +125,6 @@ "MEID" "Ladevorgang von SIM-Karte läuft..." "Kontakte auf SIM-Karte" - "Keine Kontakte-App verfügbar" "Sprachsuche nicht verfügbar" "Es kann kein Anruf getätigt werden, da die App \"Telefon\" deaktiviert wurde." "In Kontakten suchen" @@ -145,10 +153,9 @@ "%s neue entgangene Anrufe" "Du hast für noch niemanden eine Kurzwahl festgelegt" "Favoriten hinzufügen" - "Du hast noch keine Kontakte." - "Kontakt hinzufügen" "Tippe auf das Bild, um alle Nummern zu sehen, oder halte das Bild länger gedrückt, um sie neu anzuordnen" "Entfernen" + "Alle auswählen" "Videoanruf" "SMS senden" "Anrufdetails" @@ -213,11 +220,9 @@ "Blockierte Nummern" "%1$s ist bereits blockiert." "Anrufkonten" - "Aktivieren" "Berechtigungen festlegen" "Aktiviere die Berechtigung \"Kontakte\", um die Kurzwahlfunktion zu verwenden." "Aktiviere die Berechtigung \"Telefon\", um dein Anrufprotokoll abzurufen." - "Aktiviere die Berechtigung \"Kontakte\", um deine Kontakte abzurufen." "Aktiviere die Berechtigung \"Telefon\", um auf deine Mailbox zuzugreifen." "Aktiviere die Berechtigungen \"Kontakte\", um deine Kontakte zu suchen." "Aktiviere die Berechtigung \"Telefon\", um einen Anruf zu tätigen." diff --git a/java/com/android/dialer/app/res/values-el/strings.xml b/java/com/android/dialer/app/res/values-el/strings.xml index 847f60a26aa0d965ff07c26dcf76fea12d76619a..7080e5e50d5f68a324a46d5d6471ffdc649dca22 100644 --- a/java/com/android/dialer/app/res/values-el/strings.xml +++ b/java/com/android/dialer/app/res/values-el/strings.xml @@ -80,11 +80,16 @@ "Προσθήκη αναμονής" "Ρυθμίσεις" "Προσομοιωτής" + "Δημ. νέας συντόμ. διεπαφής" "Όλες οι επαφές" "Χρησιμοποιήστε το πληκτρολόγιο αφής ηχητικών τόνων" "Επιστροφή στην κλήση που βρίσκεται σε εξέλιξη" "Προσθήκη κλήσης" "Εισερχόμενες κλήσεις" + "Εισαγωγή στη λειτουργία μαζικών ενεργειών" + "Αποχώρηση από τη λειτουργία μαζικών ενεργειών" + "Έγινε επιλογή %1$s" + "Καταργήθηκε η επιλογή %1$s" "Αναπαραγωγή μηνύματος αυτόματου τηλεφωνητή" "Προβολή επαφής %1$s" "Κλήση %1$s" @@ -99,11 +104,15 @@ "Αυτόματος τηλεφωνητής" "%s δευτερόλεπτα" "%s λεπτά %s δευτερόλεπτα" - "φωνητικού μηνύματος αυτόματου τηλεφωνητή" - "φωνητικών μηνυμάτων αυτόματου τηλεφωνητή" - "Ναι" - "Όχι" + "Ακύρωση λειτουργίας μαζικών ενεργειών" + "Διαγραφή" + "Ακύρωση" "Διαγραφή επιλεγμ. %1$s;" + "Έχουν επιλεγεί %1$s" + + ""Διαγραφή αυτών των μηνυμάτων αυτόματου τηλεφωνητή; "" + ""Διαγραφή αυτού του μηνύματος αυτόματου τηλεφωνητή; "" + @string/call_log_header_today "%1$s στις %2$s" "%1$02d:%2$02d" @@ -116,7 +125,6 @@ "MEID" "Φόρτωση από κάρτα SIM…" "Επαφές στην κάρτα SIM" - "Δεν υπάρχουν διαθέσιμες εφαρμογές επαφών" "Η φωνητική αναζήτηση δεν είναι διαθέσιμη" "Δεν είναι δυνατή η πραγματοποίηση τηλεφωνικής κλήσης επειδή η εφαρμογή \"Τηλέφωνο\" έχει απενεργοποιηθεί." "Αναζήτηση επαφών" @@ -145,10 +153,9 @@ "%s νέες αναπάντητες κλήσεις" "Δεν έχετε ορίσει ακόμη κάποια επαφή στις ταχείες κλήσεις" "Προσθέστε ένα αγαπημένο" - "Δεν έχετε επαφές ακόμη" - "Προσθήκη επαφής" "Αγγίξτε την εικόνα για να δείτε όλους τους αριθμούς ή αγγίξτε παρατεταμένα για αναδιάταξη" "Κατάργηση" + "Επιλογή όλων" "Βιντεοκλήση" "Αποστολή μηνύματος" "Λεπτομέρειες κλήσης" @@ -213,11 +220,9 @@ "Αποκλεισμένοι αριθμοί" "Ο αριθμός %1$s αποκλείστηκε ήδη." "Λογαριασμοί κλήσης" - "Ενεργοποίηση" "Ορισμός αδειών" "Για να ενεργοποιήσετε την ταχεία κλήση, ενεργοποιήστε την άδεια επαφών." "Για να δείτε το αρχείο καταγραφής κλήσεών σας, ενεργοποιήστε την άδεια τηλεφώνου." - "Για να δείτε τις επαφές σας, ενεργοποιήστε την άδεια επαφών." "Για να αποκτήσετε πρόσβαση στον τηλεφωνητή σας, ενεργοποιήστε την άδεια τηλεφώνου." "Για να κάνετε αναζήτηση στις επαφές σας, ενεργοποιήστε τις άδειες \"Επαφές\"." "Για να πραγματοποιήσετε μια κλήση, ενεργοποιήστε την άδεια τηλεφώνου." diff --git a/java/com/android/dialer/app/res/values-en-rAU/strings.xml b/java/com/android/dialer/app/res/values-en-rAU/strings.xml index 28eea8b4dc096ea823f3b23ce8fe6aa7fcaae0fb..999f7dab01b5a41f74ac67a194a2b617ed733bd7 100644 --- a/java/com/android/dialer/app/res/values-en-rAU/strings.xml +++ b/java/com/android/dialer/app/res/values-en-rAU/strings.xml @@ -80,11 +80,16 @@ "Add wait" "Settings" "Simulator" + "Create new UI shortcut" "All contacts" "Use touch tone keypad" "Return to call in progress" "Add call" "Incoming calls" + "Entering bulk action mode" + "Left bulk action mode" + "Selected %1$s" + "Unselected %1$s" "Play voicemail" "View contact %1$s" "Call %1$s" @@ -99,11 +104,15 @@ "Voicemail" "%s sec" "%s min %s sec" - "voicemail" - "voicemails" - "Yes" - "No" + "Cancel batch actions mode" + "Delete" + "Cancel" "Delete selected %1$s?" + "%1$s selected" + + ""Delete these voicemails? "" + ""Delete this voicemail? "" + @string/call_log_header_today "%1$s at %2$s" "%1$02d:%2$02d" @@ -116,7 +125,6 @@ "MEID" "Loading from SIM card…" "SIM card contacts" - "No contacts app available" "Voice search not available" "Cannot make a phone call because the Phone application has been disabled." "Search contacts" @@ -145,10 +153,9 @@ "%s new missed calls" "No one is on your speed dial yet" "Add a favourite" - "You don\'t have any contacts yet" - "Add a contact" "Touch image to see all numbers, or touch & hold to re-arrange" "Remove" + "Select all" "Video call" "Send a message" "Call details" @@ -213,11 +220,9 @@ "Blocked numbers" "%1$s is already blocked." "Calling accounts" - "Turn on" "Set permissions" "To enable speed dial, turn on the Contacts permission." "To see your call log, turn on the Phone permission." - "To see your contacts, turn on the Contacts permission." "To access your voicemail, turn on the Phone permission." "To search your contacts, turn on the Contacts permissions." "To place a call, turn on the Phone permission." diff --git a/java/com/android/dialer/app/res/values-en-rGB/strings.xml b/java/com/android/dialer/app/res/values-en-rGB/strings.xml index 28eea8b4dc096ea823f3b23ce8fe6aa7fcaae0fb..999f7dab01b5a41f74ac67a194a2b617ed733bd7 100644 --- a/java/com/android/dialer/app/res/values-en-rGB/strings.xml +++ b/java/com/android/dialer/app/res/values-en-rGB/strings.xml @@ -80,11 +80,16 @@ "Add wait" "Settings" "Simulator" + "Create new UI shortcut" "All contacts" "Use touch tone keypad" "Return to call in progress" "Add call" "Incoming calls" + "Entering bulk action mode" + "Left bulk action mode" + "Selected %1$s" + "Unselected %1$s" "Play voicemail" "View contact %1$s" "Call %1$s" @@ -99,11 +104,15 @@ "Voicemail" "%s sec" "%s min %s sec" - "voicemail" - "voicemails" - "Yes" - "No" + "Cancel batch actions mode" + "Delete" + "Cancel" "Delete selected %1$s?" + "%1$s selected" + + ""Delete these voicemails? "" + ""Delete this voicemail? "" + @string/call_log_header_today "%1$s at %2$s" "%1$02d:%2$02d" @@ -116,7 +125,6 @@ "MEID" "Loading from SIM card…" "SIM card contacts" - "No contacts app available" "Voice search not available" "Cannot make a phone call because the Phone application has been disabled." "Search contacts" @@ -145,10 +153,9 @@ "%s new missed calls" "No one is on your speed dial yet" "Add a favourite" - "You don\'t have any contacts yet" - "Add a contact" "Touch image to see all numbers, or touch & hold to re-arrange" "Remove" + "Select all" "Video call" "Send a message" "Call details" @@ -213,11 +220,9 @@ "Blocked numbers" "%1$s is already blocked." "Calling accounts" - "Turn on" "Set permissions" "To enable speed dial, turn on the Contacts permission." "To see your call log, turn on the Phone permission." - "To see your contacts, turn on the Contacts permission." "To access your voicemail, turn on the Phone permission." "To search your contacts, turn on the Contacts permissions." "To place a call, turn on the Phone permission." diff --git a/java/com/android/dialer/app/res/values-en-rIN/strings.xml b/java/com/android/dialer/app/res/values-en-rIN/strings.xml index 28eea8b4dc096ea823f3b23ce8fe6aa7fcaae0fb..999f7dab01b5a41f74ac67a194a2b617ed733bd7 100644 --- a/java/com/android/dialer/app/res/values-en-rIN/strings.xml +++ b/java/com/android/dialer/app/res/values-en-rIN/strings.xml @@ -80,11 +80,16 @@ "Add wait" "Settings" "Simulator" + "Create new UI shortcut" "All contacts" "Use touch tone keypad" "Return to call in progress" "Add call" "Incoming calls" + "Entering bulk action mode" + "Left bulk action mode" + "Selected %1$s" + "Unselected %1$s" "Play voicemail" "View contact %1$s" "Call %1$s" @@ -99,11 +104,15 @@ "Voicemail" "%s sec" "%s min %s sec" - "voicemail" - "voicemails" - "Yes" - "No" + "Cancel batch actions mode" + "Delete" + "Cancel" "Delete selected %1$s?" + "%1$s selected" + + ""Delete these voicemails? "" + ""Delete this voicemail? "" + @string/call_log_header_today "%1$s at %2$s" "%1$02d:%2$02d" @@ -116,7 +125,6 @@ "MEID" "Loading from SIM card…" "SIM card contacts" - "No contacts app available" "Voice search not available" "Cannot make a phone call because the Phone application has been disabled." "Search contacts" @@ -145,10 +153,9 @@ "%s new missed calls" "No one is on your speed dial yet" "Add a favourite" - "You don\'t have any contacts yet" - "Add a contact" "Touch image to see all numbers, or touch & hold to re-arrange" "Remove" + "Select all" "Video call" "Send a message" "Call details" @@ -213,11 +220,9 @@ "Blocked numbers" "%1$s is already blocked." "Calling accounts" - "Turn on" "Set permissions" "To enable speed dial, turn on the Contacts permission." "To see your call log, turn on the Phone permission." - "To see your contacts, turn on the Contacts permission." "To access your voicemail, turn on the Phone permission." "To search your contacts, turn on the Contacts permissions." "To place a call, turn on the Phone permission." diff --git a/java/com/android/dialer/app/res/values-es-rUS/strings.xml b/java/com/android/dialer/app/res/values-es-rUS/strings.xml index 9d80bc9e2528adb279c01019ea934018ce258fc5..701d74ebca44873cf46bc24e3791425f70cd8d4a 100644 --- a/java/com/android/dialer/app/res/values-es-rUS/strings.xml +++ b/java/com/android/dialer/app/res/values-es-rUS/strings.xml @@ -80,11 +80,16 @@ "Agregar espera" "Configuración" "Simulador" + "Crear acceso a la nueva IU" "Todos los contactos" "Usar teclado numérico" "Regresar a la llamada en curso" "Agregar llamada" "Llamadas entrantes" + "Entrando al modo de acción masiva" + "Saliendo del modo de acción masiva" + "Se seleccionó %1$s" + "Se anuló la selección de %1$s" "Reproducir mensaje de voz" "Ver contacto %1$s" "Llamar a %1$s" @@ -99,11 +104,15 @@ "Correo de voz" "%s s" "%s min %s s" - "el mensaje de voz" - "los mensajes de voz" - "Sí" - "No" + "Cancelar el modo de acción masiva" + "Borrar" + "Cancelar" "¿Deseas borrar %1$s que seleccionaste?" + "%1$s seleccionada(s)" + + ""¿Deseas borrar estos mensajes de voz? "" + ""¿Deseas borrar este mensaje de voz? "" + @string/call_log_header_today "El %1$s a la hora %2$s" "%1$02d:%2$02d" @@ -116,7 +125,6 @@ "MEID" "Cargando desde tarjeta SIM..." "Contactos de tarjeta SIM" - "No hay aplicaciones de contactos disponibles." "Búsqueda por voz no disponible" "No se pueden realizar llamadas porque se inhabilitó la aplicación Teléfono." "Buscar contactos" @@ -145,10 +153,9 @@ "%s llamadas perdidas nuevas" "Aún no tienes contactos en la opción de marcado rápido" "Agregar un favorito" - "Aún no tienes contactos" - "Agregar un contacto" "Toca la imagen para ver todos los números o mantenla presionada para reorganizar" "Eliminar" + "Seleccionar todo" "Videollamada" "Enviar un mensaje" "Detalles de la llamada" @@ -213,11 +220,9 @@ "Números bloqueados" "%1$s ya está bloqueado." "Cuentas telefónicas" - "Activar" "Configurar permisos" "Para habilitar el marcado rápido, activa el permiso Contactos." "Para ver el registro de llamadas, activa el permiso Teléfono." - "Para ver los contactos, activa el permiso Contactos." "Para acceder al buzón de voz, activa el permiso Teléfono." "Para buscar contactos, activa el permiso Contactos." "Para realizar una llamada, activa el permiso Teléfono." diff --git a/java/com/android/dialer/app/res/values-es/strings.xml b/java/com/android/dialer/app/res/values-es/strings.xml index b7383d970110ebdf4eeb4cd91c2e3f1bece49cfa..8cf47f554474071b148baf57e47e0a71809b430e 100644 --- a/java/com/android/dialer/app/res/values-es/strings.xml +++ b/java/com/android/dialer/app/res/values-es/strings.xml @@ -80,11 +80,16 @@ "Añadir espera" "Ajustes" "Simulador" + "Crear acceso a la interfaz" "Todos los contactos" "Usar teclado táctil" "Volver a la llamada" "Añadir llamada" "Llamadas entrantes" + "Entrando en el modo de acción en bloque" + "Se ha salido del modo de acción en bloque" + "%1$s seleccionado" + "Selección de %1$s anulada" "Reproducir mensaje de voz" "Ver contacto %1$s" "Llamar a %1$s" @@ -99,11 +104,15 @@ "Buzón de voz" "%s s" "%s min y %s s" - "mensaje de voz" - "mensajes de voz" - "Sí" - "No" + "Cancelar el modo de acciones en lote" + "Eliminar" + "Cancelar" "¿Eliminar la selección de %1$s?" + "Se han seleccionado %1$s" + + ""¿Eliminar estos mensajes de voz? "" + ""¿Eliminar este mensaje de voz? "" + @string/call_log_header_today "%1$s a las %2$s" "%1$02d:%2$02d" @@ -116,7 +125,6 @@ "MEID" "Cargando desde tarjeta SIM…" "Contactos de tarjeta SIM" - "No hay aplicaciones de contactos disponibles" "La búsqueda por voz no está disponible" "No se puede hacer llamadas porque se ha inhabilitado la aplicación Teléfono." "Buscar contactos" @@ -145,10 +153,9 @@ "%s llamadas perdidas nuevas" "Aún no tienes contactos en la función de marcación rápida" "Añadir un favorito" - "Aún no tienes contactos" - "Añadir un contacto" "Tocar la imagen para ver todos los números o mantenerla pulsada para cambiar el orden" "Eliminar" + "Seleccionar todo" "Videollamada" "Enviar un mensaje" "Detalles de la llamada" @@ -213,11 +220,9 @@ "Números bloqueados" "%1$s ya está bloqueado." "Cuentas de llamadas" - "Activar" "Establecer permisos" "Para habilitar la marcación rápida, activa el permiso la aplicación Contactos." "Para ver el registro de llamadas, activa el permiso de la aplicación Teléfono." - "Para ver tus contactos, activa el permiso de la aplicación Contactos." "Para acceder al buzón de voz, activa el permiso de la aplicación Teléfono." "Para poder buscar tus contactos, activa los permisos de contactos." "Para hacer una llamada, activa el permiso de la aplicación Teléfono." diff --git a/java/com/android/dialer/app/res/values-et/strings.xml b/java/com/android/dialer/app/res/values-et/strings.xml index d4e4faa59ccad29709401398d819ffad1a249759..da043bf3cdc6f4303fda98f70c0d42a5cf5c4728 100644 --- a/java/com/android/dialer/app/res/values-et/strings.xml +++ b/java/com/android/dialer/app/res/values-et/strings.xml @@ -80,11 +80,16 @@ "Lisa ootamine" "Seaded" "Simulaator" + "Loo uue kasutajaliid. otsetee" "Kõik kontaktid" "Kasuta puutetooniga klahvistikku" "Tagasi käimasolevale kõnele" "Lisa kõne" "Sissetulevad kõned" + "Sisenemine hulgitoimingute režiimi" + "Lahkumine hulgitoimingute režiimist" + "%1$s on valitud" + "%1$s on valimata" "Esita kõnepostisõnum" "Kuva kontakt %1$s" "Helista kasutajale %1$s" @@ -99,11 +104,15 @@ "Kõnepost" "%s s" "%s min %s s" - "kõnepostisõnum" - "kõnepostisõnumid" - "Jah" - "Ei" + "Mitme toimigu režiimi tühistamine" + "Kustuta" + "Tühista" "Kas kustutada valitud kõnepostisõnumid %1$s?" + "%1$s on valitud" + + ""Kas kustutada need kõnepostisõnumid? "" + ""Kas kustutada see kõnepostisõnum? "" + @string/call_log_header_today "%1$s kell %2$s" "%1$02d:%2$02d" @@ -116,7 +125,6 @@ "MEID" "Laadimine SIM-kaardilt ..." "SIM-kaardi kontaktid" - "Kontaktide rakendus pole saadaval" "Häälotsing ei ole saadaval" "Helistada ei saa, sest telefonirakendus on keelatud." "Otsige kontakte" @@ -145,10 +153,9 @@ "%s uus/uut vastamata kõne(t)" "Te pole veel kedagi kiirvalimisse lisanud" "Lisa lemmik" - "Teil pole veel kontakte" - "Lisa kontakt" "Puudutage kujutist kõigi numbrite nägemiseks või puudutage pikalt järjestuse muutmiseks" "Eemalda" + "Vali kõik" "Videokõne" "Saada sõnum" "Kõne üksikasjad" @@ -213,11 +220,9 @@ "Blokeeritud numbrid" "%1$s on juba blokeeritud." "Helistamiskontod" - "Lülita sisse" "Määra load" "Kiirvalimise lubamiseks lülitage sisse kontaktiluba." "Kõnelogi vaatamiseks lülitage sisse telefoniluba." - "Kontaktide vaatamiseks lülitage sisse kontaktiluba." "Kõnepostile juurdepääsemiseks lülitage sisse telefoniluba." "Kontaktide otsimiseks lülitage sisse kontaktiload." "Helistamiseks lülitage sisse telefoniluba." diff --git a/java/com/android/dialer/app/res/values-eu/strings.xml b/java/com/android/dialer/app/res/values-eu/strings.xml index 95f4621a490930d63123263fdc30b959c9b5deec..071c6f3f06f59860bdc7192161d0fbc80bec5537 100644 --- a/java/com/android/dialer/app/res/values-eu/strings.xml +++ b/java/com/android/dialer/app/res/values-eu/strings.xml @@ -80,11 +80,16 @@ "Gehitu itxaronaldia" "Ezarpenak" "Simulagailua" + "Sortu interfazerako esteka" "Kontaktu guztiak" "Erabili ukipen-tonuak dituen teklatua" "Itzuli abian den deira" "Gehitu deia" "Sarrerako deiak" + "Ekintzak multzoka gauzatzeko modua aktibatzen" + "Ekintzak multzoka gauzatzeko modua desaktibatu da" + "%1$s hautatu da" + "%1$s desautatu da" "Erreproduzitu erantzungailuko ahots-mezuak" "Ikusi %1$s kontaktua" "Deitu %1$s erabiltzaileari" @@ -99,11 +104,15 @@ "Erantzungailua" "%s s" "%s min %s s" - "ahots-mezua" - "ahots-mezuak" - "Bai" - "Ez" + "Utzi bertan behera ekintzak multzoka gauzatzeko modua" + "Ezabatu" + "Utzi" "Hautatutako %1$s ezabatu?" + "%1$s hautatu dira" + + ""Ahots-mezu hauek ezabatu nahi dituzu? "" + ""Ahots-mezu hau ezabatu nahi duzu? "" + @string/call_log_header_today "%1$s (%2$s)" "%1$02d:%2$02d" @@ -116,7 +125,6 @@ "MEID" "SIM txarteletik kargatzen…" "SIM txarteleko kontaktuak" - "Ez dago kontaktuen aplikaziorik erabilgarri" "Ahozko bilaketa ez dago erabilgarri" "Ezin da telefono-deirik egin Telefonoa aplikazioa desgaitu egin delako." "Bilatu kontaktuetan" @@ -145,10 +153,9 @@ "%s dei galdu berri" "Ez duzu inor markatze bizkorrean oraindik" "Gehitu gogokoak" - "Ez duzu kontakturik oraindik" - "Gehitu kontaktua" "Ukitu irudia zenbaki guztiak ikusteko, edo eduki ezazu sakatuta berrantolatzeko" "Kendu" + "Hautatu guztiak" "Bideo-deia" "Bidali mezua" "Deiaren xehetasunak" @@ -213,11 +220,9 @@ "Blokeatutako zenbakiak" "%1$s blokeatuta dago dagoeneko." "Deiak egiteko kontuak" - "Aktibatu" "Ezarri baimenak" "Markatze bizkorra gaitzeko, aktibatu Kontaktuak erabiltzeko baimena." "Deien erregistroa ikusteko, aktibatu Telefonoa erabiltzeko baimena." - "Kontaktuak ikusteko, aktibatu Kontaktuak erabiltzeko baimena." "Erantzungailuan sartzeko, aktibatu Telefonoa erabiltzeko baimena." "Kontaktuak bilatzeko, aktibatu kontaktuak atzitzeko baimenak." "Deiak egiteko, aktibatu Telefonoa erabiltzeko baimena." diff --git a/java/com/android/dialer/app/res/values-fa/strings.xml b/java/com/android/dialer/app/res/values-fa/strings.xml index 9c8c01b64ace7970e54d4cb0711471d9c0914457..6c588747e6e82362572aab7e2ed00a000d7710ba 100644 --- a/java/com/android/dialer/app/res/values-fa/strings.xml +++ b/java/com/android/dialer/app/res/values-fa/strings.xml @@ -80,11 +80,16 @@ "افزودن انتظار" "تنظیمات" "شبیه‌ساز" + "ایجاد میان‌بر رابط کاربری جدید" "همه مخاطبین" "استفاده از صفحه‌کلید لمسی" "برگشت به تماس درحال انجام" "افزودن تماس" "تماس‌های ورودی" + "درحال ورود به حالت اقدام انبوه" + "خروج از حالت اقدام انبوه" + "%1$s انتخاب شد" + "%1$s از حالت انتخاب خارج شد" "پخش پست صوتی" "مشاهده مخاطب %1$s" "تماس با %1$s" @@ -99,11 +104,15 @@ "پست صوتی" "%s ثانیه" "%s دقیقه %s ثانیه" - "پست صوتی" - "پست‌های صوتی" - "بله" - "نه" + "لغو حالت اقدام‌ دسته‌ای" + "حذف" + "لغو" "%1$s انتخاب‌شده حذف شود؟" + "%1$s مورد انتخاب شد" + + ""این پست‌های صوتی حذف شوند؟ "" + ""این پست‌های صوتی حذف شوند؟ "" + @string/call_log_header_today "%1$s ساعت %2$s" "%1$02d:%2$02d" @@ -116,7 +125,6 @@ "MEID" "در حال بارگیری سیم کارت..." "مخاطبین سیم کارت" - "هیچ برنامه مخاطبی در دسترس نیست" "جستجوی گفتاری در دسترس نیست" "برقراری تماس تلفنی ممکن نیست، زیرا برنامه تلفن غیرفعال شده است." "جستجوی مخاطبین" @@ -145,10 +153,9 @@ "%s تماس‌ بی‌پاسخ جدید" "هنوز کسی در فهرست شماره‌گیری سریع شما نیست" "افزودن مورد دلخواه" - "هنوز هیچ مخاطبی ندارید" - "افزودن مخاطب" "برای مشاهده همه شماره‌ها، تصویر را لمس کنید، یا برای ترتیب مجدد، لمس کنید و نگه‌دارید" "حذف" + "انتخاب همه" "تماس ویدئویی" "ارسال پیام" "جزئیات تماس" @@ -213,11 +220,9 @@ "شماره‌های مسدود‌شده" "%1$s درحال‌حاضر مسدود شده است." "حساب‌های تماس" - "روشن کردن" "تنظیم مجوزها" "برای فعال کردن شماره‌گیری سریع، مجوز «مخاطبین» را روشن کنید." "برای دیدن گزارش تماستان، مجوز «تلفن» را روشن کنید." - "برای دیدن مخاطبینتان، مجوز «مخاطبین» را روشن کنید." "برای دسترسی به پست صوتی‌تان، مجوز «تلفن» را روشن کنید." "برای جستجوی مخاطبینتان، مجوزهای مخاطبین را روشن کنید." "برای برقراری تماس، مجوز «تلفن» را روشن کنید." diff --git a/java/com/android/dialer/app/res/values-fi/strings.xml b/java/com/android/dialer/app/res/values-fi/strings.xml index c5a103d48f0013c76a7cf5d6a29c30fe90830d84..55865d44a48d58e29c1c87f06f0112c0a15c4c58 100644 --- a/java/com/android/dialer/app/res/values-fi/strings.xml +++ b/java/com/android/dialer/app/res/values-fi/strings.xml @@ -80,11 +80,16 @@ "Lisää tauko" "Asetukset" "Simulaattori" + "Luo uusi UI-pikakuvake" "Kaikki yhteystiedot" "Käytä näppäimistöä" "Palaa käynnissä olevaan puheluun" "Lisää puhelu" "Saapuvat puhelut" + "Siirrytään joukkotoimintotilaan." + "Poistuttiin joukkotoimintotilasta." + "%1$s valittiin." + "%1$s ei ole enää valittuna." "Toista vastaajaviesti" "Näytä yhteystieto %1$s" "Soita: %1$s" @@ -99,11 +104,15 @@ "Vastaaja" "%s s" "%s min %s s" - "vastaajaviesti" - "vastaajaviestit" - "Kyllä" - "Ei" + "Peruuta joukkotoimintotila." + "Poista" + "Peruuta" "Poistetaanko %1$s?" + "%1$s valittu" + + ""Poistetaanko nämä vastaajaviestit? "" + ""Poistetaanko tämä vastaajaviesti? "" + @string/call_log_header_today "%1$s klo %2$s" "%1$02d.%2$02d" @@ -116,7 +125,6 @@ "MEID" "Ladataan SIM-kortilta…" "SIM-kortin yhteystiedot" - "Ei käytettävissä olevaa yhteystietosovellusta" "Puhehaku ei ole käytettävissä" "Puhelua ei voi soittaa, koska Puhelin-sovellus on poistettu käytöstä." "Hae yhteystiedoista" @@ -145,10 +153,9 @@ "%s uutta vastaamatonta puhelua" "Pikavalinnassa ei ole vielä yhtään yhteystietoa." "Lisää suosikki" - "Sinulla ei ole yhteystietoja." - "Lisää yhteystieto" "Katso kaikki numerot koskettamalla kuvaa tai järjestele tietoja koskettamalla kuvaa pitkään." "Poista" + "Valitse kaikki" "Videopuhelu" "Lähetä viesti" "Puhelun tiedot" @@ -213,11 +220,9 @@ "Estetyt numerot" "%1$s on jo estetty." "Puhelutilit" - "Ota käyttöön" "Määritä käyttöoikeudet" "Jos haluat käyttää pikavalintaa, ota Yhteystiedot-käyttöoikeus käyttöön." "Jos haluat katsella puhelulokiasi, ota Puhelin-käyttöoikeus käyttöön." - "Jos haluat katsella yhteystietojasi, ota Yhteystiedot-käyttöoikeus käyttöön." "Jos haluat käyttää puhelinvastaajaa, ota Puhelin-käyttöoikeus käyttöön." "Jos haluat hakea kontaktejasi, ota käyttöön kontaktien käyttöoikeudet." "Jos haluat soittaa puheluja, ota Puhelin-käyttöoikeus käyttöön." diff --git a/java/com/android/dialer/app/res/values-fr-rCA/strings.xml b/java/com/android/dialer/app/res/values-fr-rCA/strings.xml index d557d7442db80a2538a8bb22dbc0b9986e4cce24..f10b121d5561ea4a6cee0901e4fc394e31cff7da 100644 --- a/java/com/android/dialer/app/res/values-fr-rCA/strings.xml +++ b/java/com/android/dialer/app/res/values-fr-rCA/strings.xml @@ -80,11 +80,16 @@ "Ajouter Attendre" "Paramètres" "Simulateur" + "Créer un raccourci vers l\'IU" "Tous les contacts" "Utiliser le clavier DTMF" "Reprendre l\'appel en cours" "Autre appel" "Appels entrants" + "Entrée du mode d\'action groupée en cours…" + "Mode d\'action groupée quitté" + "Sélection : %1$s" + "Désélection : %1$s" "Écouter le message vocal" "Afficher le contact %1$s" "Appeler %1$s" @@ -99,11 +104,15 @@ "Messagerie vocale" "%s s" "%s min et %s sec" - "message vocal" - "messages vocaux" - "Oui" - "Non" + "Annuler le mode d\'action par lots" + "Supprimer" + "Annuler" "Supprimer la sélection (%1$s)?" + "%1$s sélection(s)" + + ""Supprimer ce message vocal? "" + ""Supprimer ces messages vocaux? "" + @string/call_log_header_today "%1$s à %2$s" "%1$02d:%2$02d" @@ -116,7 +125,6 @@ "MEID" "Chargement depuis la carte SIM..." "Contacts de carte SIM" - "Aucune application de gestion des contacts n\'est disponible" "Recherche vocale non disponible" "Impossible d\'effectuer un appel téléphonique, car l\'application Téléphone a été désactivée." "Rechercher des contacts" @@ -145,10 +153,9 @@ "%s nouveaux appels manqués" "Aucun contact ne figure dans vos numéros de composition abrégée" "Ajouter un favori" - "Vous n\'avez pas encore de contacts" - "Ajouter un contact" "Touchez l\'image pour afficher tous les numéros, ou maintenez le doigt dessus pour les réorganiser" "Supprimer" + "Tout sélectionner" "Appel vidéo" "Envoyer un message" "Détails de l\'appel" @@ -213,11 +220,9 @@ "Numéros bloqués" "Le numéro %1$s est déjà bloqué." "Comptes d\'appel" - "Activer" "Définir les autorisations" "Pour activer la composition abrégée, activez l\'autorisation Contacts." "Pour consulter votre journal d\'appels, activez l\'autorisation Téléphone." - "Pour consulter vos contacts, activez l\'autorisation Contacts." "Pour accéder à votre messagerie vocale, activez l\'autorisation Téléphone." "Pour rechercher vos contacts et les lieux à proximité, activez les autorisations Contacts." "Pour faire un appel, activez l\'autorisation Téléphone." diff --git a/java/com/android/dialer/app/res/values-fr/strings.xml b/java/com/android/dialer/app/res/values-fr/strings.xml index d8a59395be2a2b4b68ed299111115fdd19a7a600..2ce930af5b1f1834634459728d191709d82afb0d 100644 --- a/java/com/android/dialer/app/res/values-fr/strings.xml +++ b/java/com/android/dialer/app/res/values-fr/strings.xml @@ -80,11 +80,16 @@ "Ajouter une attente" "Paramètres" "Simulateur" + "Créer un raccourci vers la nouvelle interface" "Tous les contacts" "Utiliser le clavier DTMF" "Reprendre l\'appel en cours" "Autre appel" "Appels entrants" + "Activation du mode d\'action groupée" + "Désactivation du mode d\'action groupée" + "%1$s sélectionné" + "%1$s désélectionné" "Écouter le message vocal" "Afficher le contact %1$s" "Appeler %1$s" @@ -99,11 +104,15 @@ "Messagerie vocale" "%s secondes" "%s min et %s s" - "message vocal" - "messages vocaux" - "Oui" - "Non" + "Annuler le mode d\'actions groupées" + "Supprimer" + "Annuler" "Supprimer les messages vocaux sélectionnés (%1$s) ?" + "%1$s sélectionnés" + + ""Supprimer ce message vocal ? "" + ""Supprimer ces message vocaux ? "" + @string/call_log_header_today "%1$s à %2$s" "%1$02d:%2$02d" @@ -116,7 +125,6 @@ "MEID" "Chargement depuis la carte SIM..." "Contacts de carte SIM" - "Aucune application de gestion des contacts n\'est disponible." "Recherche vocale non disponible" "Impossible d\'effectuer un appel téléphonique, car l\'application Téléphone a été désactivée." "Rech. des contacts" @@ -145,10 +153,9 @@ "Nouveaux appels manqués : %s" "Aucun contact pour la numérotation abrégée" "Ajouter un favori" - "Vous n\'avez pas encore de contacts." - "Ajouter un contact" "Appuyer sur l\'image pour afficher tous les numéros, ou appuyer dessus de manière prolongée pour réorganiser ces derniers" "Supprimer" + "Tout sélectionner" "Appel vidéo" "Envoyer un message" "Informations sur l\'appel" @@ -213,11 +220,9 @@ "Numéros bloqués" "Le numéro \"%1$s\" est déjà bloqué." "Comptes téléphoniques" - "Activer" "Définir les autorisations" "Pour activer la numérotation abrégée, activez l\'autorisation Contacts." "Pour consulter votre journal d\'appels, activez l\'autorisation Téléphone." - "Pour consulter vos contacts, activez l\'autorisation Contacts." "Pour accéder à votre messagerie vocale, activez l\'autorisation Téléphone." "Pour rechercher vos contacts, activez l\'autorisation Contacts." "Pour passer un appel, activez l\'autorisation Téléphone." diff --git a/java/com/android/dialer/app/res/values-gl/strings.xml b/java/com/android/dialer/app/res/values-gl/strings.xml index 33b55a740281aacd4339b8789c13da54dbd52165..b9e540750b864d6895df7775a32dd9bde6e967bc 100644 --- a/java/com/android/dialer/app/res/values-gl/strings.xml +++ b/java/com/android/dialer/app/res/values-gl/strings.xml @@ -80,11 +80,16 @@ "Engadir espera" "Configuración" "Simulador" + "Crear atallo para a nova IU" "Todos os contactos" "Usar teclado de tons táctiles" "Volver á chamada en curso" "Engadir chamada" "Chamadas entrantes" + "Entrando no modo de acción masiva" + "Saíu do modo de acción masiva" + "Seleccionouse: %1$s" + "Anulouse a selección de: %1$s" "Reproducir correo de voz" "Ver contacto %1$s" "Chamar a %1$s" @@ -99,11 +104,15 @@ "Correo de voz" "%s s" "%s min %s s" - "correo de voz" - "correos de voz" - "Si" - "Non" + "Cancela o modo de accións en lote" + "Eliminar" + "Cancelar" "Queres eliminar a selección (%1$s)?" + "Cantidade seleccionada: %1$s" + + ""Queres eliminar estes correos de voz? "" + ""Queres eliminar este correo de voz? "" + @string/call_log_header_today "%1$s ás %2$s" "%1$02d:%2$02d" @@ -116,7 +125,6 @@ "MEID" "Cargando da tarxeta SIM..." "Contactos da tarxeta SIM" - "Non hai aplicacións de contactos dispoñibles" "Busca por voz non dispoñible" "Non se pode facer unha chamada telefónica porque se desactivou a aplicación de teléfono." "Buscar contactos" @@ -145,10 +153,9 @@ "%s chamadas perdidas novas" "Aínda non tes ningún contacto na marcación directa" "Engade un favorito para a marcación directa" - "Aínda non tes contactos" - "Engade un contacto" "Toca a imaxe para ver todos os números ou mantena premida para reordenalos" "Eliminar" + "Seleccionar todos" "Videochamada" "Enviar unha mensaxe" "Detalles da chamada" @@ -213,11 +220,9 @@ "Números bloqueados" "O %1$s xa está bloqueado." "Contas de chamadas" - "Activar" "Establecer permisos" "Para activar a marcación rápida, activa o permiso de Contactos." "Para ver o teu rexistro de chamadas, activa o permiso de Teléfono." - "Para ver os teus contactos, activa o permiso de Contactos." "Para acceder ao correo de voz, activa o permiso de Teléfono." "Para buscar os teus contactos, activa os permisos de Contactos." "Para facer unha chamada, activa o permiso de Teléfono." diff --git a/java/com/android/dialer/app/res/values-gu/strings.xml b/java/com/android/dialer/app/res/values-gu/strings.xml index 1df18269ee65751726e985fb81649c696f92b004..ca8749ad37c41b0b102d97e7c30329f87c0ff870 100644 --- a/java/com/android/dialer/app/res/values-gu/strings.xml +++ b/java/com/android/dialer/app/res/values-gu/strings.xml @@ -80,11 +80,16 @@ "પ્રતીક્ષા ઉમેરો" "સેટિંગ્સ" "સિમ્યુલેટર" + "નવું UI શૉર્ટકટ્સ બનાવો" "તમામ સંપર્કો" "ટચ ટોન કીપેડનો ઉપયોગ કરો" "કૉલ પર પાછા આવવું પ્રગતિ પર છે" "કૉલ ઉમેરો" "ઇનકમિંગ કૉલ્સ" + "બલ્ક ક્રિયા મોડમાં દાખલ થઈ રહ્યાં છે" + "બલ્ક ક્રિયા મોડ છોડી દીધો" + "%1$s પસંદ કર્યો" + "%1$s પસંદગીમાંથી દૂર કર્યો" "વૉઇસમેઇલ ચલાવો" "%1$s સંપર્ક જુઓ" "%1$s ને કૉલ કરો" @@ -99,11 +104,15 @@ "વૉઇસમેઇલ" "%s સેકંડ" "%s મિ %s સે" - "વૉઇસમેઇલ" - "વૉઇસમેઇલ" - "હા" - "નહીં" + "બૅચ ક્રિયા મોડ રદ કરો" + "કાઢી નાખો" + "રદ કરો" "પસંદ કરેલ %1$sને કાઢી નાખીએ?" + "%1$s પસંદ કરી" + + ""આ વૉઇસમેઇલ કાઢી નાખીએ? "" + ""આ વૉઇસમેઇલ કાઢી નાખીએ? "" + @string/call_log_header_today "%1$s નાં રોજ %2$s વાગ્યે" "%1$02d:%2$02d" @@ -116,7 +125,6 @@ "MEID" "SIM કાર્ડમાંથી લોડ કરી રહ્યું છે…" "SIM કાર્ડ સંપર્કો" - "કોઈ સંપર્કો ઍપ્લિકેશન ઉપલબ્ધ નથી" "વૉઇસ શોધ ઉપલબ્ધ નથી" "ફોન કૉલ કરી શકાતો નથી કારણ કે ફોન ઍપ્લિકેશન અક્ષમ કરવામાં આવી છે." "સંપર્કો શોધો" @@ -145,10 +153,9 @@ "%s નવા છૂટેલા કૉલ્સ" "તમારા ઝડપી ડાયલ પર હજી સુધી કોઇ નથી" "એક મનપસંદ ઉમેરો" - "તમે હજી સુધી કોઇપણ સંપર્કો ધરાવતાં નથી" - "સંપર્ક ઉમેરો" "બધા નંબર્સ જોવા માટે છબી ટચ કરો અથવા પુનઃક્રમાંકિત કરવા માટે ટચ કરો અને પકડી રાખો" "દૂર કરો" + "તમામ પસંદ કરો" "વિડિઓ કૉલ" "એક સંદેશ મોકલો" "કૉલની વિગતો" @@ -213,11 +220,9 @@ "અવરોધિત નંબરો" "%1$s ને પહેલેથી અવરોધિત કરવામાં આવ્યો છે." "કૉલિંગ એકાઉન્ટ્સ" - "ચાલુ કરો" "પરવાનગીઓ સેટ કરો" "ઝડપી ડાયલ સક્ષમ કરવા માટે, સંપર્કોની પરવાનગી ચાલુ કરો." "તમારો કૉલ લૉગ જોવા માટે, ફોન પરવાનગી ચાલુ કરો." - "તમારા સંપર્કો જોવા માટે, સંપર્કોની પરવાનગી ચાલુ કરો." "તમારી વૉઇસમેઇલને ઍક્સેસ કરવા માટે, ફોન પરવાનગી ચાલુ કરો." "તમારા સંપર્કો શોધવા માટે, સંપર્કોની પરવાનગીઓ ચાલુ કરો." "કૉલ કરવા માટે, ફોન પરવાનગી ચાલુ કરો." diff --git a/java/com/android/dialer/app/res/values-hi/strings.xml b/java/com/android/dialer/app/res/values-hi/strings.xml index 84d2d974a6740f7bac46f9bac1b94abb841295ba..3bc93192197bcd01b3cedac3c6dceba2d3458393 100644 --- a/java/com/android/dialer/app/res/values-hi/strings.xml +++ b/java/com/android/dialer/app/res/values-hi/strings.xml @@ -80,11 +80,16 @@ "प्रतीक्षा का समय बढ़ाएं" "सेटिंग" "सिम्युलेटर" + "नया UI शॉर्टकट बनाएं" "सभी संपर्क" "टच टोन कीपैड का उपयोग करें" "कॉल पर लौटना प्रगति पर है" "कॉल जोड़ें" "इनकमिंग कॉल" + "बल्क कार्रवाई मोड में प्रवेश कर रहे हैं" + "बल्क कार्रवाई मोड छोड़ा" + "%1$s को चुना गया" + "%1$s को नहीं चुना गया" "ध्‍वनिमेल चलाएं" "%1$s संपर्क देखें" "%1$s को कॉल करें" @@ -99,11 +104,15 @@ "वॉयस मेल" "%s सेकंड" "%s मि. %s से." - "वॉयसमेल" - "वॉयसमेल" - "हां" - "नहीं" + "बैच कार्रवाई मोड रद्द करें" + "हटाएं" + "रद्द करें" "क्या चुने गए %1$s हटाना चाहते हैं?" + "%1$s चयनित" + + ""ये वॉइसमेल हटाएं? "" + ""ये वॉइसमेल हटाएं? "" + @string/call_log_header_today "%1$s को %2$s बजे" "%1$02d:%2$02d" @@ -116,7 +125,6 @@ "MEID" "सिम कार्ड से लोड हो रहा है…" "सिम कार्ड के संपर्क" - "कोई भी संपर्क ऐप उपलब्‍ध नहीं है" "बोलकर खोजना उपलब्‍ध नहीं है" "फ़ोन कॉल नहीं किया जा सकता क्योंकि फ़ोन ऐप्लिकेशन अक्षम कर दिया गया है." "संपर्क खोजें" @@ -145,10 +153,9 @@ "%s छूटे हुए नए कॉल" "आपके स्‍पीड डायल पर अभी तक कोई भी नहीं है" "कोई पसंदीदा जोड़ें" - "आपके पास अभी कोई भी संपर्क नहीं है" - "कोई संपर्क जोड़ें" "सभी नंबर देखने के लिए चित्र को स्‍पर्श करें या पुन: क्रमित करने के लिए स्‍पर्श करके रखें" "निकालें" + "सभी चुनें" "वीडियो कॉल" "संदेश भेजें" "कॉल विवरण" @@ -213,11 +220,9 @@ "अवरोधित नंबर" "%1$s पहले से अवरोधित है." "कॉलिंग खाते" - "चालू करें" "अनुमतियां सेट करें" "स्पीड डायल सक्षम करने के लिए, संपर्क अनुमति चालू करें." "अपना कॉल लॉग देखने के लिए, फ़ोन अनुमति चालू करें." - "अपने संपर्क देखने के लिए, संपर्क अनुमति चालू करें." "अपना वॉइसमेल ऐक्सेस करने के लिए, फ़ोन अनुमति चालू करें." "अपने संपर्कों की खोज करने के लिए, संपर्क अनुमतियों को चालू करें." "कॉल करने के लिए, फ़ोन अनुमति चालू करें." diff --git a/java/com/android/dialer/app/res/values-hr/strings.xml b/java/com/android/dialer/app/res/values-hr/strings.xml index cd353537247e671b6d8376a83129cfc5acae939f..0d2147008acf7a6f030777ddaf55f56867cab447 100644 --- a/java/com/android/dialer/app/res/values-hr/strings.xml +++ b/java/com/android/dialer/app/res/values-hr/strings.xml @@ -81,11 +81,16 @@ "Dodaj čekanje" "Postavke" "Simulator" + "Izrada prečaca novog sučelja" "Svi kontakti" "Koristi dodirnu zvučnu tipkovnicu" "Natrag na poziv u tijeku" "Dodaj poziv" "Dolazni pozivi" + "Ulazak u način skupne radnje" + "Napuštanje načina skupne radnje" + "Odabrano: %1$s" + "Poništen odabir: %1$s" "Reprodukcija govorne pošte" "Prikaz kontakta %1$s" "Nazovi %1$s" @@ -100,11 +105,16 @@ "Govorna pošta" "%s s" "%s min %s s" - "poruka govorne pošte" - "poruke govorne pošte" - "Da" - "Ne" + "Otkaži način skupnih radnji" + "Izbriši" + "Odustani" "Želite li izbrisati odabranu poruku/e govorne pošte %1$s?" + "Odabrano: %1$s" + + ""Želite li izbrisati ove poruke govorne pošte? "" + ""Želite li izbrisati ove poruke govorne pošte? "" + ""Želite li izbrisati ove poruke govorne pošte? "" + @string/call_log_header_today "%1$s u %2$s" "%1$02d.%2$02d" @@ -117,7 +127,6 @@ "MEID" "Učitavanje sa SIM kartice..." "Kontakti SIM kartice" - "Nije dostupna nijedna aplikacija za kontakte" "Glasovno pretraživanje nije dostupno" "Telefoniranje nije moguće jer je aplikacija Telefon onemogućena." "Pretraži kontakte" @@ -146,10 +155,9 @@ "Broj novih propuštenih poziva: %s" "Još nemate nikog na brzom biranju" "Dodaj omiljeni kontakt" - "Još nemate nijedan kontakt" - "Dodajte kontakt" "Dodirnite sliku da biste vidjeli sve brojeve ili dodirnite i zadržite da biste promijenili redoslijed" "Ukloni" + "Odaberi sve" "Videopoziv" "Pošalji poruku" "Pojedinosti poziva" @@ -215,11 +223,9 @@ "Blokirani brojevi" "Broj %1$s već je blokiran." "Pozivanje računa" - "Uključi" "Postavi dopuštenja" "Da biste omogućili brzo biranje, uključite dopuštenje za kontakte." "Da biste vidjeli zapisnik poziva, uključite dopuštenje za telefon." - "Da biste vidjeli svoje kontakte, uključite dopuštenje za kontakte." "Da biste pristupili govornoj pošti, uključite dopuštenje za telefon." "Da biste pretraživali kontakte, uključite dopuštenja za kontakte." "Da biste nazvali nekog, uključite dopuštenje za telefon." diff --git a/java/com/android/dialer/app/res/values-hu/strings.xml b/java/com/android/dialer/app/res/values-hu/strings.xml index 2e64d745d4f58a7e9f050101169217370cf91815..9a373e6e8ddea0d3756a67afbf33d776ade4a675 100644 --- a/java/com/android/dialer/app/res/values-hu/strings.xml +++ b/java/com/android/dialer/app/res/values-hu/strings.xml @@ -80,11 +80,16 @@ "Várakozás hozzáadása" "Beállítások" "Szimulátor" + "Új felh. felület-parancsikon" "Összes névjegy" "Hangkódos telefonbillentyűzet használata" "Vissza a folyamatban lévő híváshoz" "Hívás hozzáadása" "Bejövő hívások" + "Belépés tömeges műveleti módba" + "Kilépett a tömeges műveleti módból" + "Kijelölés: %1$s" + "Kijelölés megszüntetve: %1$s" "Hangposta lejátszása" "%1$s névjegyének megtekintése" "%1$s hívása" @@ -99,11 +104,15 @@ "Hangposta" "%s másodperc" "%s perc %s másodperc" - "hangpostaüzenetet" - "hangpostaüzeneteket" - "Igen" - "Nem" + "Köteges művelet mód leállítva" + "Törlés" + "Mégse" "Törli a kiválasztott %1$s?" + "%1$s kiválasztva" + + ""Törli ezeket a hangpostaüzeneteket? "" + ""Törli ezt a hangpostaüzenetet? "" + @string/call_log_header_today "%1$s, %2$s" "%1$02d:%2$02d" @@ -116,7 +125,6 @@ "MEID" "Betöltés a SIM kártyáról..." "Névjegyek a SIM kártyán" - "Nincs elérhető névjegyek alkalmazás" "A hangalapú keresés nem érhető el" "Nem lehet telefonhívást kezdeményezni, mert a Telefon alkalmazást letiltották." "Keresés a névjegyek között" @@ -145,10 +153,9 @@ "%s új nem fogadott hívás" "Még semelyik telefonszám sincs gyorshívón" "Kedvenc hozzáadása" - "Még nem rendelkezik egyetlen névjeggyel sem" - "Névjegy hozzáadása" "Koppintson a képre az összes szám megjelenítéséhez, vagy tartsa nyomva az átrendezéshez" "Eltávolítás" + "Az összes kijelölése" "Videohívás" "Üzenet küldése" "Hívás adatai" @@ -213,11 +220,9 @@ "Letiltott számok" "A következő szám már le van tiltva: %1$s." "Telefonos fiókok" - "Engedélyezés" "Engedélyek beállítása" "Gyorshívás engedélyezéséhez kapcsolja be a Névjegyek engedélyt." "A hívásnapló megtekintéséhez kapcsolja be a Telefon engedélyt." - "A névjegyek megtekintéséhez kapcsolja be a Névjegyek engedélyt." "A hangposta eléréséhez kapcsolja be a Telefon engedélyt." "A névjegyek kereséséhez adja meg a Névjegyek engedélyeket." "Hívásindításhoz kapcsolja be a Telefon engedélyt." diff --git a/java/com/android/dialer/app/res/values-hy/strings.xml b/java/com/android/dialer/app/res/values-hy/strings.xml index 6f3931c9f67a23403d88beb08110b917a216ac26..2b2fbf61bc97fbf4645b05aeadc234a159b3fda3 100644 --- a/java/com/android/dialer/app/res/values-hy/strings.xml +++ b/java/com/android/dialer/app/res/values-hy/strings.xml @@ -80,11 +80,16 @@ "Ավելացնել սպասում" "Կարգավորումներ" "Նմանակիչ" + "Ստեղծել միջերեսի նոր դյուրանցում" "Բոլոր կոնտակտները" "Օգտագործել հնչերանգներով ստեղնաշարը" "Վերադառնալ ընթացիկ զանգին" "Ավելացնել զանգ" "Մուտքային զանգեր" + "Դուք մտել եք զանգվածային գործողության ռեժիմ" + "Դուք դուրս եկաք զանգվածային գործողությունների ռեժիմից" + "Ընտրվեց՝ %1$s" + "Ապընտրվեց՝ %1$s" "Նվագարկել ձայնային փոստը" "Դիտել %1$s կոնտակտը" "Զանգել %1$s-ին" @@ -99,11 +104,15 @@ "Ձայնային փոստ" "%s վրկ" "%s րոպե %s վայրկյան" - "ձայնային հաղորդագրություն" - "ձայնային հաղորդագրություններ" - "Այո" - "Ոչ" + "Չեղարկել փաթեթային գործողությունների ռեժիմը" + "Ջնջել" + "Չեղարկել" "Ջնջե՞լ նշված %1$sը" + "Ընտրվել է՝ %1$s" + + ""Delete these voicemails? "" + ""Ջնջե՞լ այս ձայնային հաղորդագրությունները "" + @string/call_log_header_today "%1$s-ին, ժամը %2$s-ին" "%1$02d:%2$02d" @@ -116,7 +125,6 @@ "MEID" "SIM քարտը բեռնվում է..." "SIM քարտի կոնտակտները" - "Կոնտակտների հավելված չկա" "Ձայնային որոնումը հասանելի չէ" "Հնարավոր չէ զանգահարել, քանի որ Հեռախոս հավելվածն անջատված է:" "Կոնտակտների որոնում" @@ -145,10 +153,9 @@ "%s նոր բաց թողնված զանգ" "Արագ համարահավաքման ցանկը դատարկ է" "Ավելացնել կոնտակտ" - "Դեռ կոնտակտներ չունեք" - "Ավելացնել կոնտակտ" "Բոլոր համարները տեսնելու համար հպեք պատկերին: Վերադասավորելու համար հպեք և պահեք:" "Հեռացնել" + "Ընտրել բոլորը" "Տեսազանգ" "Ուղարկել հաղորդագրություն" "Զանգի մանրամասները" @@ -213,11 +220,9 @@ "Արգելափակված համարներ" "%1$s համարն արդեն արգելափակված է:" "Հաշիվներ զանգերի համար" - "Միացնել" "Թույլտվությունների սահմանում" "Արագ համարահավաքը թույլատրելու համար միացրեք Կոնտակտների թույլտվությունը:" "Ձեր զանգերի մատյանը տեսնելու համար միացրեք Հեռախոսի թույլտվությունը:" - "Ձեր կոնտակտները տեսնելու համար միացրեք Կոնտակտների թույլտվությունը:" "Ձայնային փոստն օգտագործելու համար միացրեք Հեռախոսի թույլտվությունը:" "Կոնտակտները որոնելու համար միացրեք Կոնտակտների թույլտվությունները:" "Զանգ կատարելու համար միացրեք Հեռախոսի թույլտվությունը:" diff --git a/java/com/android/dialer/app/res/values-in/strings.xml b/java/com/android/dialer/app/res/values-in/strings.xml index c0de9b3b496ca4dead49490869fc21f1dae93fc2..e72fd6337a7ee2cdf6f70c48c40cf5d6760e87f6 100644 --- a/java/com/android/dialer/app/res/values-in/strings.xml +++ b/java/com/android/dialer/app/res/values-in/strings.xml @@ -80,11 +80,16 @@ "Tambahkan tunggu" "Setelan" "Simulator" + "Buat Pintasan UI Baru" "Semua kontak" "Gunakan keypad nada sentuh" "Kembali ke panggilan sedang berlangsung" "Tambahkan panggilan" "Panggilan masuk" + "Masuk ke mode tindakan massal" + "Keluar dari mode tindakan massal" + "%1$s dipilih" + "%1$s tidak dipilih" "Putar pesan suara" "Lihat kontak %1$s" "Telepon %1$s" @@ -99,11 +104,15 @@ "Kotak Pesan" "%s dtk" "%s mnt %s dtk" - "pesan suara" - "pesan suara" - "Ya" - "Tidak" + "Membatalkan mode tindakan kelompok" + "Hapus" + "Batal" "Hapus %1$s yang dipilih?" + "%1$s dipilih" + + ""Hapus pesan suara ini? "" + ""Hapus pesan suara ini? "" + @string/call_log_header_today "%1$s pukul %2$s" "%1$02d.%2$02d" @@ -116,7 +125,6 @@ "MEID" "Memuat dari kartu SIM..." "Kontak pada kartu SIM" - "Aplikasi kontak tidak tersedia" "Penelusuran suara tidak tersedia" "Tidak dapat melakukan panggilan telepon karena aplikasi Telepon telah dinonaktifkan." "Telusuri kontak" @@ -145,10 +153,9 @@ "%s panggilan tidak terjawab baru" "Daftar panggilan cepat masih kosong" "Tambahkan favorit" - "Anda belum memiliki kontak" - "Tambahkan kontak" "Sentuh foto untuk melihat semua nomor atau sentuh & tahan untuk menyusun ulang" "Hapus" + "Pilih semua" "Panggilan video" "Kirim pesan" "Detail panggilan" @@ -213,11 +220,9 @@ "Nomor yang diblokir" "%1$s sudah diblokir." "Akun panggilan" - "Aktifkan" "Setel izin" "Untuk mengaktifkan panggilan cepat, aktifkan izin Kontak." "Untuk melihat log panggilan, aktifkan izin Telepon." - "Untuk melihat kontak, aktifkan izin Kontak." "Untuk mengakses pesan suara, aktifkan izin Telepon." "Untuk menelusuri kontak, aktifkan izin Kontak." "Untuk melakukan panggilan, aktifkan izin Telepon." diff --git a/java/com/android/dialer/app/res/values-is/strings.xml b/java/com/android/dialer/app/res/values-is/strings.xml index fdd63566827f308cc87bf219af23d796b5a19e41..bd329be9d602a2a99cea4e42569daf94ff6b7181 100644 --- a/java/com/android/dialer/app/res/values-is/strings.xml +++ b/java/com/android/dialer/app/res/values-is/strings.xml @@ -80,11 +80,16 @@ "Bæta töf við" "Stillingar" "Hermir" + "Stofna flýtileið í nýtt viðmót" "Allir tengiliðir" "Nota snertitónatakkaborð" "Fara aftur í símtal í gangi" "Bæta við símtali" "Móttekin símtöl" + "Opnar fjöldaaðgerðastillingu" + "Fjöldaaðgerðastillingu lokað" + "Valdi %1$s" + "Fjarlægði val á %1$s" "Spila talhólfsskilaboð" "Skoða tengiliðinn %1$s" "Hringja í %1$s" @@ -99,11 +104,15 @@ "Talhólf" "%s sek." "%s mín. og %s sek." - "talhólfsskilaboð" - "talhólfsskilaboð" - "Já" - "Nei" + "Hætta við runuaðgerðastillingu" + "Eyða" + "Hætta við" "Eyða völdum %1$s?" + "%1$s valin" + + ""Eyða þessum talhólfsskilaboðum? "" + ""Eyða þessum talhólfsskilaboðum? "" + @string/call_log_header_today "%1$s kl. %2$s" "%1$02d:%2$02d" @@ -116,7 +125,6 @@ "MEID" "Hleður af SIM-kortinu…" "Tengiliðir á SIM-korti" - "Ekkert tengiliðaforrit í boði" "Raddleit er ekki í boði" "Ekki er hægt að hringja vegna þess að forritið Sími hefur verið gert óvirkt." "Leita í tengiliðum" @@ -145,10 +153,9 @@ "%s ný ósvöruð símtöl" "Þú ert ekki með neinn í hraðvali enn sem komið er" "Bæta uppáhaldi við" - "Þú ert ekki með neina tengiliði enn sem komið er" - "Bæta tengilið við" "Snertu myndina til að sjá öll númer eða haltu henni inni til að endurraða" "Fjarlægja" + "Velja allt" "Myndsímtal" "Senda skilaboð" "Símtalsupplýsingar" @@ -213,11 +220,9 @@ "Númer á bannlista" "%1$s er nú þegar á bannlista." "Símtalareikningar" - "Kveikja" "Stilla heimildir" "Kveiktu á tengiliðaheimildinni til að gera hraðval virkt." "Kveiktu á heimild símaforritsins til að sjá símtalaskrána þína." - "Kveiktu á tengiliðaheimildinni til að sjá tengiliðina þína." "Kveiktu á heimild símaforritsins til að fá aðgang að talhólfinu þínu." "Kveiktu á heimildunum fyrir tengiliði til að leita að tengiliðum." "Kveiktu á heimild símaforritsins til að hringja símtal." diff --git a/java/com/android/dialer/app/res/values-it/strings.xml b/java/com/android/dialer/app/res/values-it/strings.xml index 9bd8cd359996182f0c766397411abcd42492647c..356f5a603c4efef20118b35ee8c300d2a9a15cbf 100644 --- a/java/com/android/dialer/app/res/values-it/strings.xml +++ b/java/com/android/dialer/app/res/values-it/strings.xml @@ -80,11 +80,16 @@ "Aggiungi attesa" "Impostazioni" "Simulatore" + "Crea nuova scorciatoia UI" "Tutti i contatti" "Usa tastierino per selezione a toni" "Torna alla chiamata in corso" "Aggiungi chiamata" "Chiamate in arrivo" + "Attivazione della modalità di azione collettiva" + "Disttivazione della modalità di azione collettiva" + "%1$s selezionato" + "%1$s deselezionato" "Riproduci messaggio vocale" "Visualizza %1$s contatto" "Chiama %1$s" @@ -99,11 +104,15 @@ "Segreteria" "%s secondi" "%s min %s s" - "messaggio vocale" - "messaggi vocali" - "Sì" - "No" + "Annulla modalità di azione collettiva" + "Elimina" + "Annulla" "Eliminare i %1$s selezionati?" + "%1$s selezionate" + + ""Eliminare questi messaggi vocali? "" + ""Eliminare questo messaggio vocale? "" + @string/call_log_header_today "%1$s alle ore %2$s" "%1$02d:%2$02d" @@ -116,7 +125,6 @@ "MEID" "Caricamento da SIM..." "Contatti SIM" - "Nessuna app di contatti disponibile" "Ricerca vocale non disponibile" "Impossibile effettuare una telefonata perché l\'applicazione Telefono è stata disattivata." "Cerca contatti" @@ -145,10 +153,9 @@ "%s nuove chiamate perse" "Nessun preferito disponibile nella Composizione rapida" "Aggiungi un preferito" - "Nessun contatto disponibile" - "Aggiungi un contatto" "Tocca l\'immagine per visualizzare tutti i numeri oppure tieni premuto per cambiare l\'ordine" "Rimuovi" + "Seleziona tutto" "Videochiamata" "Invia un messaggio" "Dettagli chiamata" @@ -213,11 +220,9 @@ "Numeri bloccati" "%1$s è già bloccato." "Account di chiamata" - "Attiva" "Imposta autorizzazioni" "Per attivare la composizione rapida, attiva l\'autorizzazione Contatti." "Per accedere al registro chiamate, attiva l\'autorizzazione sul telefono." - "Per accedere ai tuoi contatti, attiva l\'autorizzazione Contatti." "Per accedere alla segreteria, attiva l\'autorizzazione sul telefono." "Per cercare nei tuoi contatti, attiva le autorizzazioni Contatti." "Per fare una chiamata, attiva l\'autorizzazione sul telefono." diff --git a/java/com/android/dialer/app/res/values-iw/strings.xml b/java/com/android/dialer/app/res/values-iw/strings.xml index bb115e2f88581fc2ee88dfed0902a3ccfe8abb69..230555a14e0d4ae1e174ff87a99ef4634952bca1 100644 --- a/java/com/android/dialer/app/res/values-iw/strings.xml +++ b/java/com/android/dialer/app/res/values-iw/strings.xml @@ -82,11 +82,16 @@ "הוסף המתנה" "הגדרות" "סימולטור" + "יצירת קיצור דרך לממשק החדש" "כל אנשי הקשר" "השתמש במקלדת עם חיוג צלילים" "חזור לשיחה פעילה" "הוסף שיחה" "שיחות נכנסות" + "עברת למצב של ביצוע פעולות בכמות גדולה" + "עזבת את המצב של ביצוע פעולות בכמות גדולה" + "בחרת את %1$s" + "ביטלת את הבחירה של %1$s" "הפעל דואר קולי" "הצג את איש הקשר %1$s" "התקשר אל %1$s" @@ -101,11 +106,17 @@ "דואר קולי" "%s שניות" "%s דק\' %s שנ\'" - "ההודעה הקולית" - "ההודעות הקוליות" - "כן" - "לא" + "ביטול המצב של ביצוע פעולות בכמות גדולה" + "מחיקה" + "ביטול" "האם למחוק את %1$s שבחרת?" + "%1$s נבחרו" + + ""האם למחוק את ההודעות הקוליות האלה? "" + ""האם למחוק את ההודעות הקוליות האלה? "" + ""האם למחוק את ההודעות הקוליות האלה? "" + ""האם למחוק את ההודעה הקולית הזו? "" + @string/call_log_header_today "%1$s ב-%2$s" "%1$02d:%2$02d" @@ -118,7 +129,6 @@ "MEID" "‏טוען מכרטיס SIM…" "‏אנשי קשר בכרטיס SIM" - "אין אפליקציה זמינה עבור אנשי קשר" "חיפוש קולי אינו זמין" "לא ניתן לבצע שיחת טלפון מפני שאפליקציית הטלפון הושבתה." "חפש אנשי קשר" @@ -147,10 +157,9 @@ "%s שיחות חדשות שלא נענו" "עדיין לא הוגדר חיוג מהיר לאף איש קשר" "הוסף פריט מועדף" - "עדיין אין לך אנשי קשר" - "הוסף איש קשר" "גע בתמונה כדי להציג את כל המספרים או גע והחזק כדי לשנות את הסדר" "הסר" + "בחירת הכל" "שיחת וידאו" "שלח הודעה" "פרטי שיחה" @@ -217,11 +226,9 @@ "מספרים חסומים" "%1$s כבר חסום." "חשבונות לביצוע שיחות" - "הפעל" "הגדר הרשאות" "כדי להפעיל חיוג מהיר, הפעל את ההרשאה \'אנשי קשר\'." "כדי לראות את יומן השיחות, הפעל את ההרשאה \'טלפון\'." - "כדי להציג את אנשי הקשר, הפעל את ההרשאה \'אנשי קשר\'." "כדי לגשת לדואר הקולי, הפעל את ההרשאה \'טלפון\'." "כדי לחפש באנשי הקשר, הפעל את ההרשאה \'אנשי קשר\'." "כדי להתקשר, הפעל את ההרשאה \'טלפון\'." diff --git a/java/com/android/dialer/app/res/values-ja/strings.xml b/java/com/android/dialer/app/res/values-ja/strings.xml index 63b15cbede38a0a2f2e4fd6f3205f0faec4e3c52..71fca83d5032b39086e90a07e16de65257175430 100644 --- a/java/com/android/dialer/app/res/values-ja/strings.xml +++ b/java/com/android/dialer/app/res/values-ja/strings.xml @@ -80,11 +80,16 @@ "待機を追加" "設定" "シミュレーション" + "新しいUIのショートカットを作成" "すべての連絡先" "プッシュホン式キーパッドを使う" "通話に戻る" "別の通話を追加" "着信" + "一括操作モードを開始します" + "一括操作モードを終了しました" + "%1$s を選択しました" + "%1$s を選択解除しました" "ボイスメールを再生" "%1$sの連絡先を表示" "%1$sに発信" @@ -99,11 +104,15 @@ "ボイスメール" "%s秒" "%s%s秒" - "ボイスメール" - "ボイスメール" - "はい" - "いいえ" + "一括操作モードをキャンセルします" + "削除" + "キャンセル" "選択した%1$sを削除しますか?" + "%1$s 件選択済み" + + ""これらのボイスメールを削除しますか?"" + ""このボイスメールを削除しますか?"" + @string/call_log_header_today "%1$s%2$s" "%1$02d%2$02d 秒" @@ -116,7 +125,6 @@ "MEID" "SIMカードから読み取り中..." "SIMカードの連絡先" - "連絡先アプリがありません" "音声検索を利用できません" "電話アプリが無効になっているため発信できません。" "連絡先を検索" @@ -145,10 +153,9 @@ "%s件の不在着信" "クイックアクセスに登録済みの連絡先はまだありません" "お気に入りを追加" - "連絡先はまだありません" - "連絡先を追加" "画像をタップするとすべての番号が表示され、押し続けると番号を並べ替えることができます" "削除" + "すべて選択" "ビデオハングアウト" "メッセージを送信" "通話の詳細" @@ -213,11 +220,9 @@ "ブロックした番号" "%1$sは既にブロックしています。" "通話アカウント" - "ONにする" "権限を設定" "クイックアクセスを有効にするには、連絡先権限をONにしてください。" "通話履歴を表示するには、電話権限をONにしてください。" - "連絡先を表示するには、連絡先権限をONにしてください。" "ボイスメールにアクセスするには、電話権限をONにしてください。" "連絡先を検索するには、連絡先権限をONにしてください。" "電話をかけるには、電話権限をONにしてください。" diff --git a/java/com/android/dialer/app/res/values-ka/strings.xml b/java/com/android/dialer/app/res/values-ka/strings.xml index ae89505b5c3f6e02a8ece1728a0794c74433bc6e..fd9351f54c2fe0e6b04e414ad33027c83c91b62d 100644 --- a/java/com/android/dialer/app/res/values-ka/strings.xml +++ b/java/com/android/dialer/app/res/values-ka/strings.xml @@ -80,11 +80,16 @@ "ლოდინის დამატება" "პარამეტრები" "სიმულატორი" + "ახალი UI მალსახმობის შექმნა" "ყველა კონტაქტი" "ტონალური კლავიატურის გამოყენება" "მიმდინარე ზარზე დაბრუნება" "ზარის დამატება" "შემომავალი ზარები" + "მიმდინარეობს ერთიანი ქმედების რეჟიმში შესვლა" + "ერთიანი ქმედების რეჟიმიდან გამოხვედით" + "არჩეულია %1$s" + "%1$s-ის არჩევა გაუქმდა" "ხმოვანი ფოსტის ჩართვა" "კონტაქტის %1$s ნახვა" "%1$s-თან დარეკვა" @@ -99,11 +104,15 @@ "ხმოვანი ფოსტა" "%s წმ" "%s მინ %s წამ" - "ხმოვანი ფოსტა" - "ხმოვანი ფოსტა" - "დიახ" - "არა" + "ერთიანი ქმედების რეჟიმის გაუქმება" + "წაშლა" + "გაუქმება" "გსურთ, წაშალოთ არჩეული %1$s?" + "არჩეულია %1$s" + + ""გსურთ ამ ხმოვანი შეტყობინებების წაშლა? "" + ""გსურთ ამ ხმოვანი შეტყობინების წაშლა? "" + @string/call_log_header_today "%1$s, %2$s" "%1$02d:%2$02d" @@ -116,7 +125,6 @@ "MEID" "იტვირთება SIM ბარათიდან…" "SIM ბარათის კონტაქტები" - "კონტაქტების აპლიკაცია არ არის ხელმისაწვდომი" "ხმოვანი ძიება არ არის ხელმისაწვდომი" "სატელეფონო ზარის განხორციელება ვერ ხერხდება, ვინაიდან ტელეფონის აპლიკაცია გაუქმებულია." "კონტაქტებში ძიება" @@ -145,10 +153,9 @@ "%s ახალი გაცდენილი ზარი" "სწრაფი აკრეფისთვის რჩეულები ჯერ არ გყავთ" "რჩეული კონტაქტის დამატება" - "კონტაქტები ჯერ არ გაქვთ" - "კონტაქტის დამატება" "ყველა ნომრის სანახავად შეეხეთ სურათს ან შეეხეთ და დააყოვნეთ მიმდევრობის შესაცვლელად" "ამოშლა" + "ყველას არჩევა" "ვიდეო ზარი" "შეტყობინების გაგზავნა" "ზარის მონაცემები" @@ -213,11 +220,9 @@ "დაბლოკილი ნომრები" "%1$s უკვე დაბლოკილია." "ანგარიშების გამოძახება" - "ჩართვა" "ნებართვების დაყენება" "სწრაფი აკრეფის გასააქტიურებლად, ჩართეთ კონტაქტების ნებართვა." "ზარების ჟურნალის სანახავად, ჩართეთ ტელეფონის ნებართვა." - "კონტაქტების სანახავად, ჩართეთ კონტაქტების ნებართვა." "ხმოვან ფოსტაზე წვდომისთვის, ჩართეთ ტელეფონის ნებართვა." "თქვენი კონტაქტების მოსაძებნად ჩართეთ კონტაქტების ნებართვები." "ზარის განსახორციელებლად, ჩართეთ ტელეფონის ნებართვა." diff --git a/java/com/android/dialer/app/res/values-kk/strings.xml b/java/com/android/dialer/app/res/values-kk/strings.xml index ba4238692dd7c9f9ee751dce821c6a8b017b488c..f1763a21aba756324faa8502c455801cbe922d55 100644 --- a/java/com/android/dialer/app/res/values-kk/strings.xml +++ b/java/com/android/dialer/app/res/values-kk/strings.xml @@ -80,11 +80,16 @@ "Күтуді қосу" "Параметрлер" "Симулятор" + "Жаңа пайдаланушы интерфейсінің пернелер тіркесімін жасау" "Барлық контактілер" "Сенсорлы әуенді пернетақта" "Қосылып тұрған қоңырауға оралу" "Қоңырау қосу" "Келген қоңыраулар" + "Жаппай әрекет режиміне өту" + "Жаппай әрекет режиімінен шығу" + "%1$s таңдалды" + "%1$s таңдауы алынды" "Дауыс-хабарды ойнату" "%1$s контактісін көру" "%1$s нөміріне қоңырау шалу" @@ -99,11 +104,15 @@ "Дауыстық пошта" "%s сек." "%s мин %s сек" - "дауыстық хабар" - "дауыстық хабарлар" - "Иә" - "Жоқ" + "Топтама әрекеттер режимін жабу" + "Жою" + "Жабу" "Таңдалған %1$s хабарларын жою қажет пе?" + "%1$s таңдалды" + + ""Осы дауыстық хабарларды жою қажет пе? "" + ""Осы дауыстық хабарды жою қажет пе? "" + @string/call_log_header_today "%1$s, %2$s" "%1$02d:%2$02d" @@ -116,7 +125,6 @@ "MEID (ұялы жабдық анықтағыш)" "SIM картасынан жүктеу…" "SIM картасының контактілері" - "Контактілер қолданбасы қол жетімді емес" "Дауыс арқылы іздеу қол жетімді емес" "Телефон қоңырауын шалу мүмкін емес, өйткені «Телефон» қолданбасы өшірілген." "Контактілерді іздеу" @@ -145,10 +153,9 @@ "%s жаңа қабылданбаған қоңыраулар" "Жылдам теруде әлі ешкім жоқ" "Таңдаулыны қосу" - "Әлі ешқандай контактілер жоқ" - "Контакт қосу" "Барлық нөмірлерді көру үшін кескінді түртіңіз, ал ретін өзгерту үшін түртіп, ұстап тұрыңыз" "Алып тастау" + "Барлығын таңдау" "Бейне қоңырау" "Хабар жіберу" "Қоңырау мәліметтері" @@ -213,11 +220,9 @@ "Бөгелген нөмірлер" "%1$s бөгеліп қойылған." "Қоңырау шалу есептік жазбалары" - "Қосу" "Рұқсаттар орнату" "Жылдам теруді қосу үшін \"Контактілер\" рұқсатын қосыңыз." "Қоңыраулар журналы көру үшін \"Телефон\" рұқсатын қосыңыз." - "Контактілерді көру үшін \"Контактілер\" рұқсатын қосыңыз." "Дауыс поштасына қатынасу үшін \"Телефон\" рұқсатын қосыңыз." "Контактілерді іздеу үшін \"Контактілер\" рұқсаттарын қосыңыз." "Қоңырауды шалу үшін \"Телефон\" рұқсатын қосыңыз." diff --git a/java/com/android/dialer/app/res/values-km/strings.xml b/java/com/android/dialer/app/res/values-km/strings.xml index bdc91cf0b86b9406d615c2214530378e01985d20..54f1a126ab600346e15f42c9856692b5342727aa 100644 --- a/java/com/android/dialer/app/res/values-km/strings.xml +++ b/java/com/android/dialer/app/res/values-km/strings.xml @@ -80,11 +80,16 @@ "បញ្ចូល​ការ​រង់ចាំ" "ការកំណត់" "កម្មវិធីធ្វើ​ដូច​មែនទែន" + "បង្កើត​ផ្លូវកាត់ UI ថ្មី" "ទំនាក់ទំនង​ទាំងអស់" "ប្រើ​សំឡេង​ប៉ះ​បន្ទះ​លេខ" "កំពុង​ត្រឡប់​ទៅកាន់​ការ​ហៅ" "បន្ថែម​ការ​ហៅ" "ការ​ហៅ​ចូល" + "ចូល​មុខងារ​សកម្មភាព​ច្រើន" + "បាន​ចាកចេញ​ពី​មុខងារ​សកម្មភាព​ច្រើន" + "បាន​ជ្រើសរើស %1$s" + "បាន​ដក​ការជ្រើសរើស %1$s" "ចាក់​សារ​ជា​សំឡេង" "មើល​ទំ​នាក់ទំនង %1$s" "ហៅ %1$s" @@ -99,11 +104,15 @@ "សារ​ជា​សំឡេង" "%s វិនាទី" "%s នាទី %s វិនាទី" - "សារ​ជា​សំឡេង" - "សារ​ជា​សំឡេង" - "បាទ/ចាស" - "ទេ" + "បោះបង់​មុខងារ​សកម្មភាព​ជា​ក្រុម" + "លុប" + "បោះបង់" "លុប %1$s ដែល​បាន​ជ្រើសរើស?" + "បាន​ជ្រើសរើស %1$s" + + ""លុប​សារ​ជា​សំឡេង​ទាំងនេះ? "" + ""លុប​សារ​ជា​សំឡេង​នេះ? "" + @string/call_log_header_today "%1$s នៅម៉ោង %2$s" "%1$02d:%2$02d" @@ -116,7 +125,6 @@ "MEID" "កំពុង​ផ្ទុក​ពី​ស៊ីម​កាត..." "ទំនាក់ទំនង​នៅ​ក្នុង​ស៊ីម​កាត" - "មិនមានកម្មវិធីទំនាក់ទំនងទេ" "ការស្វែងរកជាសម្លេងមិនមានទេ" "មិន​អាច​ហៅ​បាន​ទេ​ ព្រោះ​កម្មវិធី​ទូរស័ព្ទ​ត្រូវ​បាន​បិទ។" "រក​ទំនាក់ទំនង" @@ -145,10 +153,9 @@ "ខកខាន​ទទួល​ថ្មី %s" "គ្មាននរណាម្នាក់នៅក្នុងការហៅរហ័សរបស់អ្នកនៅឡើយទេ" "បញ្ចូលសំណព្វ" - "អ្នកមិនទាន់មានទំនាក់ទំនងនៅឡើយទេ" - "បន្ថែមទំនាក់ទំនង" "ប៉ះរូបភាពដើម្បីមើលលេខទាំងអស់ ឬប៉ះ & សង្កត់ឲ្យជាប់ដើម្បីតម្រៀបឡើងវិញ" "លុបចេញ" + "ជ្រើសរើស​​ទាំងអស់" "ហៅជាវីដេអូ" "ផ្ញើសារ" "ព័ត៌មានលម្អិតអំពីការហៅ" @@ -213,11 +220,9 @@ "លេខបានរារាំង" "%1$s ត្រូវបានទប់ស្កាត់រួចហើយ" "គណនីហៅទូរសព្ទ" - "បើក" "កំណត់សិទ្ធិអនុញ្ញាត" "ដើម្បីបើកដំណើរការហៅរហ័ស សូមបើកសិទ្ធិអនុញ្ញាតកម្មវិធីទំនាក់ទំនង។" "ដើម្បីមើលកំណត់ហេតុហៅទូរស័ព្ទរបស់អ្នក សូមបើកសិទ្ធិអនុញ្ញាតកម្មវិធីហៅទូរស័ព្ទ។" - "ដើម្បីមើលទំនាក់ទំនងរបស់អ្នក សូមបើកសិទ្ធិអនុញ្ញាតកម្មវិធីទំនាក់ទំនង។" "ដើម្បីចូលដំណើរការសារជាសំឡេងរបស់អ្នក សូមបើកសិទ្ធិអនុញ្ញាតកម្មវិធីហៅទូរស័ព្ទ។" "ដើម្បីស្វែងរកទំនាក់ទំនងរបស់អ្នក សូមបើកសិទ្ធិអនុញ្ញាតទំនាក់ទំនង។" "ដើម្បីធ្វើការហៅទូរស័ព្ទ សូមបើកសិទ្ធិអនុញ្ញាតកម្មវិធីហៅទូរស័ព្ទ។" diff --git a/java/com/android/dialer/app/res/values-kn/strings.xml b/java/com/android/dialer/app/res/values-kn/strings.xml index dae544d3f9fb74552040ea0815146d84877981c8..d7f3aabbcf125deb93c289e822012456149e3044 100644 --- a/java/com/android/dialer/app/res/values-kn/strings.xml +++ b/java/com/android/dialer/app/res/values-kn/strings.xml @@ -80,11 +80,16 @@ "ನಿರೀಕ್ಷೆಯನ್ನು ಸೇರಿಸಿ" "ಸೆಟ್ಟಿಂಗ್‌ಗಳು" "ಸಿಮ್ಯುಲೇಟರ್" + "ಹೊಸ UI ಶಾರ್ಟ್‌ಕಟ್ ರಚಿಸಿ" "ಎಲ್ಲಾ ಸಂಪರ್ಕಗಳು" "ಸ್ಪರ್ಶ ಟೋನ್ ಕೀಪ್ಯಾಡ್ ಬಳಸಿ" "ಪ್ರತ್ಯತ್ತರ ಕರೆಯು ಪ್ರಗತಿಯಲ್ಲಿದೆ" "ಕರೆಯನ್ನು ಸೇರಿಸಿ" "ಒಳಬರುವ ಕರೆಗಳು" + "ದೊಡ್ಡ ಪ್ರಮಾಣದ ಕ್ರಿಯೆಯ ಮೋಡ್‌ಗೆ ಪ್ರವೇಶಿಸಲಾಗುತ್ತಿದೆ" + "ದೊಡ್ಡ ಪ್ರಮಾಣದ ಕ್ರಿಯೆಯ ಮೋಡ್ ತೊರೆಯಲಾಗಿದೆ" + "%1$s ಆಯ್ಕೆಮಾಡಲಾಗಿದೆ" + "%1$s ಆಯ್ಕೆಯನ್ನು ರದ್ದುಮಾಡಲಾಗಿದೆ" "ಧ್ವನಿಮೇಲ್‌ ಪ್ಲೇ ಮಾಡಿ" "%1$s ಸಂಪರ್ಕ ವೀಕ್ಷಿಸಿ" "%1$s ಕರೆ ಮಾಡಿ" @@ -99,11 +104,15 @@ "ಧ್ವನಿಮೇಲ್" "%s ಸೆಕೆಂ" "%s ನಿಮಿ %s ಸೆಕೆಂ" - "ಧ್ವನಿಮೇಲ್" - "ಧ್ವನಿಮೇಲ್‌ಗಳು" - "ಹೌದು" - "ಇಲ್ಲ" + "ಬ್ಯಾಚ್ ಕ್ರಿಯೆಗಳ ಮೋಡ್ ಅನ್ನು ರದ್ದುಮಾಡಿ" + "ಅಳಿಸಿ" + "ರದ್ದುಮಾಡಿ" "ಆಯ್ಕೆ ಮಾಡಲಾದ %1$s ಅನ್ನು ಅಳಿಸುವುದೇ?" + "%1$s ಆಯ್ಕೆಮಾಡಲಾಗಿದೆ" + + ""ಈ ಧ್ವನಿಮೇಲ್‌ಗಳನ್ನು ಅಳಿಸುವುದೇ? "" + ""ಈ ಧ್ವನಿಮೇಲ್‌ಗಳನ್ನು ಅಳಿಸುವುದೇ? "" + @string/call_log_header_today "%1$s ರಂದು %2$s ಗಂಟೆಗೆ" "%1$02d:%2$02d" @@ -116,7 +125,6 @@ "MEID" "ಸಿಮ್‌ ಕಾರ್ಡ್‌ನಿಂದ ಲೋಡ್‌ ಮಾಡಲಾಗುತ್ತಿದೆ…" "ಸಿಮ್‌ ಕಾರ್ಡ್‌ ಸಂಪರ್ಕಗಳು" - "ಯಾವುದೇ ಸಂಪರ್ಕಗಳ ಅಪ್ಲಿಕೇಶನ್‌ ಲಭ್ಯವಿಲ್ಲ" "ಧ್ವನಿ ಹುಡುಕಾಟ ಲಭ್ಯವಿಲ್ಲ" "ಫೋನ್ ಅಪ್ಲಿಕೇಶನ್ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿರುವುದರಿಂದ ಫೋನ್ ಕರೆ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ." "ಸಂಪರ್ಕಗಳನ್ನು ಹುಡುಕಿ" @@ -145,10 +153,9 @@ "%s ಹೊಸ ಮಿಸ್ಡ್‌ ಕರೆಗಳು" "ನಿಮ್ಮ ತ್ವರಿತ ಡಯಲ್‌ನಲ್ಲಿ ಇದುವರೆಗೆ ಯಾರೂ ಇಲ್ಲ" "ಮೆಚ್ಚಿನದನ್ನು ಸೇರಿಸಿ" - "ನೀವು ಇನ್ನೂ ಯಾವುದೇ ಸಂಪರ್ಕಗಳನ್ನು ಹೊಂದಿಲ್ಲ" - "ಸಂಪರ್ಕ ಸೇರಿಸಿ" "ಎಲ್ಲಾ ಸಂಖ್ಯೆಗಳನ್ನು ನೋಡಲು ಚಿತ್ರವನ್ನು ಸ್ಪರ್ಶಿಸಿ ಅಥವಾ ಮರುಕ್ರಮಗೊಳಿಸಲು ಸ್ಪರ್ಶಿಸಿ ಮತ್ತು ಹೋಲ್ಡ್‌‌ ಮಾಡಿ" "ತೆಗೆದುಹಾಕು" + "ಎಲ್ಲವನ್ನೂ ಆಯ್ಕೆ ಮಾಡಿ" "ವೀಡಿಯೊ ಕರೆ" "ಸಂದೇಶ ಕಳುಹಿಸಿ" "ಕರೆಯ ವಿವರಗಳು" @@ -213,11 +220,9 @@ "ನಿರ್ಬಂಧಿಸಲಾದ ಸಂಖ್ಯೆಗಳು" "%1$s ಈಗಾಗಲೇ ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ." "ಕರೆ ಮಾಡುವ ಖಾತೆಗಳು" - "ಆನ್‌ ಮಾಡಿ" "ಅನುಮತಿಗಳನ್ನು ಹೊಂದಿಸು" "ವೇಗ ಡಯಲ್ ಸಕ್ರಿಯಗೊಳಿಸಲು, ಸಂಪರ್ಕಗಳ ಅನುಮತಿಯನ್ನು ಆನ್ ಮಾಡಿ." "ನಿಮ್ಮ ಕರೆಯ ಲಾಗ್ ಅನ್ನು ವೀಕ್ಷಿಸಲು, ಫೋನ್ ಅನುಮತಿಯನ್ನು ಆನ್ ಮಾಡಿ." - "ನಿಮ್ಮ ಸಂಪರ್ಕಗಳನ್ನು ವೀಕ್ಷಿಸಲು, ಸಂಪರ್ಕಗಳ ಅನುಮತಿಯನ್ನು ಆನ್ ಮಾಡಿ." "ನಿಮ್ಮ ಧ್ವನಿಮೇಲ್ ಪ್ರವೇಶಿಸಲು, ಫೋನ್ ಅನುಮತಿಯನ್ನು ಆನ್ ಮಾಡಿ." "ನಿಮ್ಮ ಸಂಪರ್ಕಗಳನ್ನು ಹುಡುಕಲು, ಸಂಪರ್ಕಗಳ ಅನುಮತಿಗಳನ್ನು ಆನ್ ಮಾಡಿ." "ಕರೆ ಮಾಡಲು, ಫೋನ್ ಅನುಮತಿಯನ್ನು ಆನ್ ಮಾಡಿ." diff --git a/java/com/android/dialer/app/res/values-ko/strings.xml b/java/com/android/dialer/app/res/values-ko/strings.xml index 1850b6ce1f24b14ed6f5ee0aad195b66371fc83f..cb2e83c79e5800381cb16774c43599fe79261f24 100644 --- a/java/com/android/dialer/app/res/values-ko/strings.xml +++ b/java/com/android/dialer/app/res/values-ko/strings.xml @@ -80,11 +80,16 @@ "대기 시간 추가" "설정" "시뮬레이터" + "새 UI 바로가기 만들기" "모든 연락처" "터치톤 키패드 사용" "진행 중인 통화로 돌아가기" "통화 추가" "수신전화" + "일괄 작업 모드 시작 중" + "일괄 작업 모드 종료됨" + "%1$s 선택됨" + "%1$s 선택 취소됨" "음성사서함 재생" "%1$s님의 연락처 보기" "전화걸기: %1$s" @@ -99,11 +104,15 @@ "음성사서함" "%s초" "%s%s초" - "음성사서함" - "음성사서함" - "예" - "아니요" + "일괄 작업 모드 취소" + "삭제" + "취소" "선택한 %1$s을(를) 삭제하시겠습니까?" + "%1$s개 선택됨" + + ""이 음성사서함을 삭제하시겠습니까? "" + ""이 음성사서함을 삭제하시겠습니까? "" + @string/call_log_header_today "%1$s %2$s" "%1$02d%2$02d초" @@ -116,7 +125,6 @@ "MEID" "SIM 카드에서 로딩 중..." "SIM 카드 주소록" - "사용할 수 있는 주소록 앱이 없습니다." "음성검색이 지원되지 않습니다." "전화 애플리케이션을 사용 중지했으므로 전화를 걸 수 없습니다." "주소록 검색" @@ -145,10 +153,9 @@ "새로운 부재중 전화 %s건" "아직 단축 다이얼이 설정된 연락처가 없습니다." "단축 다이얼 추가" - "아직 연락처가 없습니다." - "연락처 추가" "이미지를 터치하여 모든 번호를 확인하거나 길게 터치하여 재정렬합니다." "삭제" + "모두 선택" "화상 통화" "메시지 보내기" "통화 세부정보" @@ -213,11 +220,9 @@ "차단된 번호" "%1$s번은 이미 차단되었습니다." "통화 계정" - "사용" "권한 설정" "단축번호를 사용하려면 주소록 권한을 사용하도록 설정하세요." "통화 기록을 보려면 전화 권한을 사용하도록 설정하세요." - "주소록을 보려면 주소록 권한을 사용하도록 설정하세요." "음성사서함에 액세스하려면 전화 권한을 사용하도록 설정하세요." "주소록을 검색하려면 주소록 권한을 사용하도록 설정하세요." "전화를 걸려면 전화 권한을 사용하도록 설정하세요." diff --git a/java/com/android/dialer/app/res/values-ky/strings.xml b/java/com/android/dialer/app/res/values-ky/strings.xml index 9e80e29ee74c4d01374bd912184359a23db20d7a..0a0b3e6618d2db966968319d70fd393f0cb00afa 100644 --- a/java/com/android/dialer/app/res/values-ky/strings.xml +++ b/java/com/android/dialer/app/res/values-ky/strings.xml @@ -80,11 +80,16 @@ "Тыныгуу кошуу" "Жөндөөлөр" "Симулятор" + "Жаңы интерфейс үчүн кыска жол түзүү" "Бардык байланыштар" "Тоналдык терүү тактасын колдонуу" "Токтотулган чалууга кайтуу" "Чалууну кошуу" "Кирүүчү чалуулар" + "Жапырт аракет режимине кирдиңиз" + "Жапырт аракет режиминен чыктыңыз" + "%1$s объект тандалды" + "%1$s объект тандоодон чыгарылды" "Үнкатты угуу" "Байланышты кароо %1$s" "Чалуу %1$s" @@ -99,11 +104,15 @@ "Үн почтасы" "%s сек." "%s мүн. %s сек." - "үн почтасы" - "үн почталары" - "Ооба" - "Жок" + "Жапырт аракет режимин жокко чыгаруу" + "Жок кылуу" + "Жокко чыгаруу" "Тандалган %1$s жок кылынсынбы?" + "%1$s тандалды" + + ""Бул үн почталар жок кылынсынбы? "" + ""Бул үн почта жок кылынсынбы? "" + @string/call_log_header_today "%1$s саат %2$s" "%1$02d:%2$02d" @@ -116,7 +125,6 @@ "MEID" "SIM картадан жүктөлүүдө..." "SIM картадагы байланыштар" - "Жеткиликтүү байланыштар колдонмосу жок" "Үн менен издөө жеткиликтүү эмес" "Телефон колдонмосу өчүрүлгөндүктөн, чалуу мүмкүн болбой жатат." "Байланыштарды издөө" @@ -145,10 +153,9 @@ "%s жаңы өткөзүлгөн чалуу" "Азырынча тез териле турган номерлер жок" "Сүйүктүү номер кошуу" - "Азырынча бир дагы байланышыңыз жок" - "Байланыш кошуу" "Бардык номерлерди көрүү үчүн, сүрөткө тийип коюңуз же коё бербей басып туруп иретин өзгөртсөңүз болот." "Алып салуу" + "Баарын тандоо" "Видео чалуу" "Билдирүү жөнөтүү" "Чалуунун чоо-жайы" @@ -213,11 +220,9 @@ "Бөгөттөлгөн номерлер" "%1$s мурунтан эле бөгөттөлгөн." "Чалуу каттоо эсептери" - "Күйгүзүү" "Уруксаттарды берүү" "Тез терүүнү иштетүү үчүн, \"Байланыштар\" колдонмосуна уруксат бериңиз." "Чалуулар таржымалыңызды көрүү үчүн, \"Телефон\" колдонмосуна уруксат бериңиз." - "Байланыштар тизмесин көрүү үчүн, \"Байланыштар\" колдонмосуна уруксат бериңиз." "Үн почтаңызга кирүү үчүн, \"Телефон\" колдонмосуна уруксат бериңиз." "Байланыштарыңызды издөө үчүн, Байланыштарга уруксатты күйгүзүңүз." "Чалуу үчүн, \"Телефон\" колдонмосуна уруксат бериңиз." diff --git a/java/com/android/dialer/app/res/values-lo/strings.xml b/java/com/android/dialer/app/res/values-lo/strings.xml index 8284e8de0ad9e860105e4c5131615e5520984604..267d1c6be91b1f6c9347637c2ab52ca52b4033c4 100644 --- a/java/com/android/dialer/app/res/values-lo/strings.xml +++ b/java/com/android/dialer/app/res/values-lo/strings.xml @@ -80,11 +80,16 @@ "ເພີ່ມການລໍຖ້າ" "ການ​ຕັ້ງ​ຄ່າ" "ຕົວຈຳລອງ" + "ສ້າງປຸ່ມລັດສ່ວນຕິດຕໍ່ຜູ້ໃຊ້ໃໝ່" "ລາຍຊື່ຜູ່ຕິດຕໍ່ທັງໝົດ" "ໃຊ້ປຸ່ມກົດສັນຍານສຽງ" "ກັບໄປການໂທທີ່ກຳລັງດຳເນີນຢູ່" "ເພີ່ມການໂທ" "ສາຍໂທເຂົ້າ" + "ກຳລັງເຂົ້າໂໝດຄຳສັ່ງຈຳນວນຫຼາຍ" + "ອອກຈາກໂໝດຄຳສັ່ງຈຳນວນຫຼາຍແລ້ວ" + "ເລືອກ %1$s ແລ້ວ" + "ເຊົາເລືອກ %1$s ແລ້ວ" "ເປີດຂໍ້ຄວາມສຽງ" "ເບິ່ງລາຍຊື່ຜູ່ຕິດຕໍ່ %1$s" "ໂທຫາ %1$s" @@ -99,11 +104,15 @@ "ຂໍ້ຄວາມສຽງ" "%s ວິນາທີ" "%s ນ​ທ %s ວິ" - "ຂໍ້ຄວາມສຽງ" - "ຂໍ້ຄວາມສຽງ" - "ແມ່ນແລ້ວ" - "ບໍ່" + "ຍົກເລີກໂໝດຄຳສັ່ງເປັນຊຸດ" + "ລຶບ" + "ຍົກເລີກ" "ລຶບ %1$s ທີ່ເລືອກອອກໄປບໍ?" + "ເລືອກ %1$s ລາຍການແລ້ວ" + + ""ລຶບຂໍ້ຄວາມສຽງເຫຼົ່ານີ້ບໍ? "" + ""ລຶບຂໍ້ຄວາມສຽງນີ້ບໍ? "" + @string/call_log_header_today "%1$s ເວລາ %2$s" "%1$02d:%2$02d" @@ -116,7 +125,6 @@ "MEID" "ກຳລັງໂຫລດຈາກ SIM card..." "ລາຍຊື່ຜູ່ຕິດຕໍ່ SIM card" - "ບໍ່​ມີ​ແອັບຯ​ລາຍ​ຊື່​ຕິດ​ຕໍ່​ຢູ່" "ບໍ່​ມີ​ການ​ຊອກ​ຫາ​ດ້ວຍ​ສຽງ​ຢູ່" "ບໍ່​ສາ​ມາດ​ໂທ​ໄດ​້​ເນື່ອງ​ຈາກ​ແອັບ​ພ​ລິ​ເຄ​ຊັນ​ໂທ​ລະ​ສັບ​ຖືກ​ປິດ​ການ​ນຳ​ໃຊ້​ໄວ້." "ຊອກຫາລາຍຊື່ຜູ່ຕິດຕໍ່" @@ -145,10 +153,9 @@ "%s ສາຍທີ່ບໍ່ໄດ້ຮັບໃໝ່" "ບໍ່​ມີ​ຜູ້​ໃດ​ຢູ່​ໃນ​ການ​ໂທ​ດ່ວນ​ຂອງ​ທ່ານ​ເທື່ອ" "ເພີ່ມ​ລາຍ​ການ​ທີ່​ມັກ" - "ທ່ານ​ບໍ່​ມີ​ລາຍ​ຊື່​ໃດ​ເທື່ອ" - "ເພີ່ມ​ລາຍ​ຊື່" "ແຕະຮູບເພື່ອເບິ່ງເບີໂທທັງໝົດ ຫຼື ແຕະຄ້າງໄວ້ເພື່ອຈັດລຳດັບໃໝ່" "​ລຶບ​ອອກ" + "ເລືອກທັງໝົດ" "​ໂທ​ດ້ວຍ​ວິ​ດີ​ໂອ" "ສົ່ງຂໍ້ຄວາມ" "ລາຍລະອຽດ​ການໂທ" @@ -213,11 +220,9 @@ "ເບີໂທລະສັບທີ່ບລັອກໄວ້" "%1$s ຖືກ​ບ​ລັອກ​ແລ້ວ." "ບັນ​ຊີ​ໂທ" - "ເປີດ​" "ຕັ້ງ​ການ​ອະ​ນຸ​ຍາດ" "ເພື່ອ​ເປີດ​ໃຊ້​ງານ​ການໂທດ່ວນ, ເປີດ​ການ​ອະ​ນຸ​ຍາດ​ລາຍ​ຊື່." "ເພື່ອ​ເບິ່ງ​ບັນ​ທຶກ​ການ​ໂທ​ຂອງ​ທ່ານ, ເປີດ​ການ​ອະ​ນຸ​ຍາດ​ໂທ​ລະ​ສັບ." - "ເພື່ອ​ເບິ່ງ​ລາຍ​ຊື່​ຂອງ​ທ່ານ, ເປີດ​ການ​ອະ​ນຸ​ຍາດ​ລາຍ​ຊື່" "ເພື່ອ​ເຂົ້າ​ຫາ​ຂໍ້​ຄວາມ​ສຽງ​ຂອງ​ທ່ານ, ເປີດ​ການ​ອະ​ນຸ​ຍາດ​ໂທ​ລະ​ສັບ." "ເພື່ອຄົ້ນຫາລາຍາຊື່ຂອງທ່ານ, ໃຫ້ເປີດການອະນຸຍາດລາຍຊື່." "ເພື່ອ​ເຮັດການໂທ, ເປີດ​ການ​ອະ​ນຸ​ຍາດ​ໂທ​ລະ​ສັບ." diff --git a/java/com/android/dialer/app/res/values-lt/strings.xml b/java/com/android/dialer/app/res/values-lt/strings.xml index a346d5d0a2f8fcc97ee0227c9fb0626ebc44ab2f..e26a909277b2e73ac699146a4f11724807558a8d 100644 --- a/java/com/android/dialer/app/res/values-lt/strings.xml +++ b/java/com/android/dialer/app/res/values-lt/strings.xml @@ -82,11 +82,16 @@ "Pridėti laukimą" "Nustatymai" "Simuliatorius" + "Sukurti naują NS spart. klav." "Visi kontaktai" "Naudoti jutiklinę klaviatūrą" "Grįžti prie vykdomo skambučio" "Pridėti skambutį" "Gaunami skambučiai" + "Įjungiamas masinių veiksmų režimas" + "Masinių veiksmų režimas išjungtas" + "Pasirinkta: %1$s" + "Pasirinkimas atšauktas: %1$s" "Paleisti balso pašto pranešimus" "Žiūrėti kontaktą %1$s" "Skambinti %1$s" @@ -101,11 +106,17 @@ "Balso paštas" "%s sek." "%s min. %s sek." - "balso pašto praneš." - "balso pašto praneš." - "Taip" - "Ne" + "Atšaukti masinių veiksmų režimą" + "Ištrinti" + "Atšaukti" "Ištrinti pasir. %1$s?" + "Pasirinkta: %1$s" + + ""Ištrinti šiuos balso pašto pranešimus? "" + ""Ištrinti šiuos balso pašto pranešimus? "" + ""Ištrinti šiuos balso pašto pranešimus? "" + ""Ištrinti šiuos balso pašto pranešimus? "" + @string/call_log_header_today "%1$s, %2$s" "%1$02d:%2$02d" @@ -118,7 +129,6 @@ "MEID" "Įkeliama iš SIM kortelės..." "SIM kortelės adresatai" - "Nepasiekiama jokia kontaktų programa" "Paieška balsu nepasiekiama" "Negalima skambinti telefonu, nes Telefono programa išjungta." "Ieškoti adresatų" @@ -147,10 +157,9 @@ "Naujų praleistų skambučių: %s" "Dar nieko neįtraukėte į sparčiojo rinkimo sąrašą" "Pridėti mėgstamiausią" - "Dar neturite kontaktų" - "Pridėti kontaktą" "Palieskite vaizdą, kad peržiūrėtumėte visus numerius, arba palieskite ir palaikykite, kad pertvarkytumėte" "Pašalinti" + "Pasirinkti viską" "Vaizdo skambutis" "Siųsti pranešimą" "Išsami skambučio informacija" @@ -217,11 +226,9 @@ "Užblokuoti numeriai" "%1$s jau užblokuotas." "Skambinimo paskyros" - "Įjungti" "Nustatyti leidimus" "Jei norite įgalinti spartųjį rinkimą, įjunkite Kontaktų programos leidimą." "Jei norite peržiūrėti skambučių žurnalą, įjunkite Telefono programos leidimą." - "Jei norite peržiūrėti kontaktus, įjunkite Kontaktų programos leidimą." "Jei norite pasiekti balso paštą, įjunkite Telefono programos leidimą." "Kad galėtumėte ieškoti kontaktų, įjunkite Kontaktų leidimus." "Jei norite paskambinti, įjunkite Telefono programos leidimą." diff --git a/java/com/android/dialer/app/res/values-lv/strings.xml b/java/com/android/dialer/app/res/values-lv/strings.xml index 808d7bfb7073248f74c29f887dd64066b01a93fc..8df2813c42c3c79be6f995c0f28c94cdc53118e7 100644 --- a/java/com/android/dialer/app/res/values-lv/strings.xml +++ b/java/com/android/dialer/app/res/values-lv/strings.xml @@ -81,11 +81,16 @@ "Pievienot gaidīšanu" "Iestatījumi" "Simulators" + "Jaunās liet. saskarnes saīsne" "Visas kontaktpersonas" "Izmantot skārientoņu tastatūru" "Atgriezties pie pašreizējā zvana" "Pievienot zvanu" "Ienākošie zvani" + "Tiek atvērts lielapjoma darbību režīms" + "Tika aizvērts lielapjoma darbību režīms" + "Atlasīt: %1$s" + "Noņemt atlasi: %1$s" "Atskaņot balss pasta ziņojumu" "Skatīt kontaktpersonu %1$s" "Zvanīt: %1$s" @@ -100,11 +105,16 @@ "Balss pasts" "%s s" "%s min %s s" - "balss pasta ziņojums" - "balss pasta ziņojumi" - "Jā" - "Nē" + "Iziet no grupas darbību režīma" + "Dzēst" + "Atcelt" "Vai dzēst atlasi: %1$s?" + "Atlasīti: %1$s" + + ""Vai dzēst šos balss pasta ziņojumus? "" + ""Vai dzēst šos balss pasta ziņojumus? "" + ""Vai dzēst šos balss pasta ziņojumus? "" + @string/call_log_header_today "%1$s plkst. %2$s" "%1$02d:%2$02d" @@ -117,7 +127,6 @@ "MEID" "Notiek ielāde no SIM kartes..." "Kontaktpersonas SIM kartē" - "Nav pieejama neviena kontaktpersonu lietotne." "Meklēšana ar balsi nav pieejama." "Nevar veikt tālruņa zvanu, jo lietojumprogramma Tālrunis tika atspējota." "Meklēt kontaktpersonas" @@ -146,10 +155,9 @@ "Jauni neatbildēti zvani: %s" "Ātro zvanu sarakstā vēl nav nevienas kontaktpersonas." "Pievienot izlasei" - "Jums vēl nav nevienas kontaktpersonas." - "Pievienot kontaktpersonu" "Pieskarieties attēlam, lai skatītu visus numurus, vai pieskarieties attēlam un turiet to, lai veiktu pārkārtošanu." "Noņemt" + "Atlasīt visu" "Videozvans" "Sūtīt ziņojumu" "Informācija par zvanu" @@ -215,11 +223,9 @@ "Bloķētie numuri" "%1$s jau ir bloķēts." "Zvanu konti" - "Ieslēgt" "Iestatīt atļaujas" "Lai iespējotu ātros zvanus, ieslēdziet atļauju Kontaktpersonas." "Lai skatītu zvanu žurnālu, ieslēdziet atļauju Tālrunis." - "Lai skatītu kontaktpersonas, ieslēdziet atļauju Kontaktpersonas." "Lai piekļūtu balss pastam, ieslēdziet atļauju Tālrunis." "Lai meklētu savas kontaktpersonas, ieslēdziet atļauju Kontaktpersonas." "Lai veiktu zvanu, ieslēdziet atļauju Tālrunis." diff --git a/java/com/android/dialer/app/res/values-mk/strings.xml b/java/com/android/dialer/app/res/values-mk/strings.xml index 6d2e533a5a775552d592204dd206fa08e2248f28..953a05569e82e5dcb8e9e7bc8f183f853ab9e118 100644 --- a/java/com/android/dialer/app/res/values-mk/strings.xml +++ b/java/com/android/dialer/app/res/values-mk/strings.xml @@ -80,11 +80,16 @@ "Додај почекај" "Поставки" "Симулатор" + "Создај крат. за нов интерфејс" "Сите контакти" "Користи тастатура со звуци на допир" "Врати се на повик во тек" "Додај повик" "Дојдовни повици" + "Влегувате во режим на групно дејство" + "Излеговте од режим на групно дејство" + "Избрано е %1$s" + "Поништен е изборот на %1$s" "Преслушај говорна пошта" "Прикажи контакт %1$s" "Повикај %1$s" @@ -99,11 +104,15 @@ "Говорна пошта" "%s сек." "%s мин. %s сек." - "говорна пошта" - "говорни пораки" - "Да" - "Не" + "Откажи го режимот на групни дејства" + "Избриши" + "Откажи" "Да се избришат избраните %1$s?" + "Избрани се %1$s" + + ""Да се избришат говорните пораки? "" + ""Да се избришат говорните пораки? "" + @string/call_log_header_today "%1$s во %2$s" "%1$02d:%2$02d" @@ -116,7 +125,6 @@ "MEID" "Вчитување од SIM картичка..." "Контакти од SIM картичка" - "Не е достапна апликација за контакти" "Гласовното пребарување не е достапно" "Не може да се воспостави телефонски повик, бидејќи апликацијата Телефон е оневозможена." "Пребарај контакти" @@ -145,10 +153,9 @@ "%s нови пропуштени повици" "Сè уште немате никого на брзо бирање" "Додај омилено" - "Сè уште немате контакти" - "Додај контакт" "Допрете ја сликата за да ги видите сите броеви или допрете и држете за промена на редоследот" "Отстрани" + "Изберете ги сите" "Видеоповик" "Испрати порака" "Детали на повик" @@ -213,11 +220,9 @@ "Блокирани броеви" "%1$s веќе е блокиран." "Сметки за повикување" - "Вклучи" "Постави дозволи" "За да овозможите брзо бирање, вклучете ја дозволата за контакти." "За да ја видите евиденцијата на повици, вклучете ја дозволата за телефон." - "За да ги видите контактите, вклучете ја дозволата за контакти." "За да пристапите кон говорната пошта, вклучете ја дозволата за телефон." "За да ги пребарувате контактите, вклучете ги дозволите за контакти." "За да воспоставите повик, вклучете ја дозволата за телефон." diff --git a/java/com/android/dialer/app/res/values-ml/strings.xml b/java/com/android/dialer/app/res/values-ml/strings.xml index 91accf44221cf05ff23b99ef3ef95e51b0bbd675..0eef40748e2fa2d1bf668fa19638c2c9cd42ccc6 100644 --- a/java/com/android/dialer/app/res/values-ml/strings.xml +++ b/java/com/android/dialer/app/res/values-ml/strings.xml @@ -80,11 +80,16 @@ "കാത്തിരിക്കൽ ചേർക്കുക" "ക്രമീകരണം" "സിമുലേറ്റർ" + "പുതിയ UI കുറുക്കുവഴി സൃഷ്‌ടിക്കുക" "എല്ലാ കോൺടാക്റ്റുകളും" "ടച്ച് ടോൺ കീപാഡ് ഉപയോഗിക്കുക" "വിളിച്ചുകൊണ്ടിരിക്കുന്ന കോളിലേക്ക് മടങ്ങുക" "കോൾ ചേർക്കുക" "ഇൻകമിംഗ് കോളുകൾ" + "ബൾക്ക് പ്രവർത്തന മോഡിലേക്ക് പ്രവേശിക്കുന്നു" + "ബൾക്ക് പ്രവർത്തന മോഡ് വിട്ടു" + "%1$s തിരഞ്ഞെടുത്തു" + "%1$s തിരഞ്ഞെടുത്തത് മാറ്റി" "വോയ്‌സ്‌മെയിൽ പ്ലേ ചെയ്യുക" "%1$s എന്ന കോൺടാക്റ്റ് കാണുക" "വിളിക്കുക %1$s" @@ -99,11 +104,15 @@ "വോയ്‌സ്‌മെയിൽ" "%s സെക്കൻഡ്" "%s മി. %s സെ." - "വോയ്‌സ്‌മെയിൽ" - "വോയ്‌സ്മെയിലുകൾ" - "അതെ" - "ഇല്ല" + "\'ബാച്ച് പ്രവർത്തനങ്ങൾ\' മോഡ് റദ്ദാക്കുക" + "ഇല്ലാതാക്കുക" + "റദ്ദാക്കൂ" "തിരഞ്ഞെടുത്ത %1$s ഇല്ലാതാക്കണോ?" + "%1$s എണ്ണം തിരഞ്ഞെടുത്തു" + + ""ഈ വോയ്‌സ്‌മെയിലുകൾ ഇല്ലാതാക്കണോ? "" + ""ഈ വോയ്‌സ്‌മെയിൽ ഇല്ലാതാക്കണോ? "" + @string/call_log_header_today "%1$s, %2$s-ന്" "%1$02d:%2$02d" @@ -116,7 +125,6 @@ "MEID" "സിം കാർഡിൽ നിന്നും ലോഡുചെയ്യുന്നു…" "സിം കാർഡ് കോൺടാക്റ്റുകൾ" - "കോൺടാക്റ്റ് അപ്ലിക്കേഷനൊന്നും ലഭ്യമല്ല" "വോയ്‌സ് തിരയൽ ലഭ്യമല്ല" "ഫോൺ അപ്ലിക്കേഷൻ പ്രവർത്തനരഹിതമാക്കിയിരിക്കുന്നതിനാൽ ഫോൺ കോൾ ചെയ്യാനാകില്ല." "കോണ്‍‌ടാക്റ്റുകള്‍ തിരയുക" @@ -145,10 +153,9 @@ "%s പുതിയ മിസ്‌ഡ് കോളുകൾ" "ഇതുവരെ ആരും നിങ്ങളുടെ സ്പീഡ് ഡയലിൽ ഇല്ല" "പ്രിയപ്പെട്ടത് ചേർക്കുക" - "നിങ്ങൾക്ക് ഇതുവരെയും കോൺടാക്റ്റുകൾ ഒന്നുമില്ല." - "ഒരു കോണ്‍ടാക്റ്റ് ചേര്‍ക്കുക" "എല്ലാ നമ്പറുകളും കാണാൻ ചിത്രം സ്‌പർശിക്കുക അല്ലെങ്കിൽ വീണ്ടും ക്രമീകരിക്കാൻ സ്‌പർശിച്ച് പിടിക്കുക" "നീക്കംചെയ്യുക" + "എല്ലാം തിരഞ്ഞെടുക്കുക" "വീഡിയോ കോള്‍" "ഒരു സന്ദേശം അയയ്‌ക്കുക" "കോൾ വിശദാംശങ്ങൾ" @@ -213,11 +220,9 @@ "ബ്ലോക്കുചെയ്ത നമ്പറുകൾ" "ഇതിനകം തന്നെ %1$s ബ്ലോക്കുചെയ്തിരിക്കുന്നു" "കോളിംഗ് അക്കൗണ്ട്" - "ഓണാക്കുക" "അനുമതികൾ സജ്ജമാക്കുക" "സ്പീഡ് ഡയൽ പ്രവർത്തനക്ഷമാക്കുന്നതിന്, \'കോൺടാക്റ്റുകൾ\' അനുമതി ഓണാക്കുക." "നിങ്ങളുടെ കോൾ ലോഗ് കാണുന്നതിന്, \'ഫോൺ\' അനുമതി ഓണാക്കുക." - "നിങ്ങളുടെ കോൺടാക്റ്റുകൾ കാണുന്നതിന്, \'കോൺടാക്റ്റുകൾ\' അനുമതി ഓണാക്കുക." "നിങ്ങളുടെ വോയ്‌സ്‌മെയിൽ ആക്സസ് ചെയ്യുന്നതിന്, \'ഫോൺ\' അനുമതി ഓണാക്കുക." "നിങ്ങളുടെ കോൺടാക്റ്റുകൾ തിരയുന്നതിന് കോൺടാക്റ്റുകൾക്കുള്ള അനുമതികൾ ഓണാക്കുക." "കോൾ വിളിക്കുന്നതിന്, \'ഫോൺ\' അനുമതി ഓണാക്കുക." diff --git a/java/com/android/dialer/app/res/values-mn/strings.xml b/java/com/android/dialer/app/res/values-mn/strings.xml index a07a826d567b835b306d1d8d37851dda2da7cbad..e0cd987108f9eda40d55ff1b91b634a39b83714f 100644 --- a/java/com/android/dialer/app/res/values-mn/strings.xml +++ b/java/com/android/dialer/app/res/values-mn/strings.xml @@ -80,11 +80,16 @@ "Хүлээлт нэмэх" "Тохиргоо" "Симулятор" + "Шинэ UI үүсгэх товчлол" "Бүх харилцагчид" "Хүрэлтээр дуугардаг гар ашиглах" "Үргэлжилж буй дуудлага руу буцах" "Дуудлага нэмэх" "Ирж буй дуудлага" + "Багц үйлдлийн горимд орж байна" + "Багц үйлдлийн горимоос гарсан" + "%1$s сонгосон" + "%1$s сонголтыг болиулсан" "Дуут шууданг тоглуулах" "%1$s харилцагчийг харах" "%1$s руу залгах" @@ -99,11 +104,15 @@ "Дуут шуудан" "%s сек" "%s минут %s секунд" - "дуут шуудан" - "дуут шуудан" - "Тийм" - "Үгүй" + "Багц үйлдлийн горимыг цуцлах" + "Устгах" + "Цуцлах" "Сонгосон %1$s-г устгах уу?" + "%1$s сонгосон" + + ""Эдгээр дуут шууданг устгах уу? "" + ""Энэ дуут шууданг устгах уу? "" + @string/call_log_header_today "%1$s %2$s-д" "%1$02d:%2$02d" @@ -116,7 +125,6 @@ "MEID" "SIM картаас уншиж байна…" "SIM картны харилцагчид" - "Ямар ч харилцагчдын апликейшн байхгүй байна." "Дуут хайлт хийх боломжгүй байна" "Утас аппликешныг идэвхгүйжүүлсэн тул утасны дуудлага хийх боломжгүй." "Харилцагчдаас хайх" @@ -145,10 +153,9 @@ "%s шинэ аваагүй дуудлага" "Таны яаралтай залгах тохиргоон дээр одоогоор харилцагч байхгүй байна" "Таалагдсан хэсэгт нэмэх" - "Танд одоогоор харилцагч байхгүй байна" - "Харилцагч нэмэх" "Бүх дугаарыг харахын тулд зурганд хүрнэ үү эсвэл жагсаалтыг өөрчлөхийн тулд удаан дарна уу." "Хасах" + "Бүгдийг сонгох" "Видео дуудлага" "Зурвас илгээх" "Дуудлагын мэдээлэл" @@ -213,11 +220,9 @@ "Блоклосон дугаар" "%1$s-г аль хэдийн блоклосон байна." "Дуудах бүртгэл" - "Идэвхжүүлэх" "Зөвшөөрөл тохируулах" "Яаралтай дуудлагыг идэвхжүүлэхийн тулд Харилцагчдын зөвшөөрлийг идэвхжүүлнэ үү." "Дуудлагын жагсаалтыг харахын тулд утасны зөвшөөрлийг идэвхжүүлнэ үү." - "Харилцагчдаа харахын тулд Харилцагчдын зөвшөөрлийг идэвхжүүлнэ үү." "Дуут шууданд хандахын тулд Утасны зөвшөөрлийг идэвхжүүлнэ үү." "Харилцагчаа хайхын тулд, Харилцагчийн жагсаалтын зөвшөөрлийг идэвхжүүлнэ үү." "Залгахын тулд Утасны зөвшөөрлийг идэвхжүүлнэ үү." diff --git a/java/com/android/dialer/app/res/values-mr/strings.xml b/java/com/android/dialer/app/res/values-mr/strings.xml index 5aca7a5e250a315fc1ea8e703d30c5096f65d885..70e6d410cb26ac04af1c992f086837fcaaace826 100644 --- a/java/com/android/dialer/app/res/values-mr/strings.xml +++ b/java/com/android/dialer/app/res/values-mr/strings.xml @@ -80,11 +80,16 @@ "प्रतीक्षा करा जोडा" "सेटिंग्ज" "सिम्युलेटर" + "नवीन UI शॉर्टकट तयार करा" "सर्व संपर्क" "स्‍पर्श टोन कीपॅडचा वापर करा" "चालू असलेल्या कॉलवर परत जा" "कॉल जोडा" "येणारे कॉल" + "मोठ्या प्रमाणात क्रिया मोडमध्ये प्रवेश करीत आहे" + "मोठ्या प्रमाणात क्रिया मोड सोडत आहे" + "%1$s निवडले" + "%1$s ची निवड रद्द केली" "व्हॉइसमेल प्ले करा" "%1$s संपर्क पहा" "%1$s ला कॉल करा" @@ -99,11 +104,15 @@ "व्हॉइसमेल" "%s सेकंद" "%s मिनिट %s सेकंद" - "व्हॉइसमेल" - "व्हॉइसमेल" - "होय" - "नाही" + "बॅच क्रिया मोड रद्द करा" + "हटवा" + "रद्द करा" "निवडलेले %1$s हटवायचेे?" + "%1$s निवडले" + + ""हा व्हॉइसमेल हटवायचा? "" + ""हे व्हॉइसमेल हटवायचे? "" + @string/call_log_header_today "%1$s रोजी %2$s वाजता" "%1$02d:%2$02d" @@ -116,7 +125,6 @@ "MEID" "सिम कार्ड मधून लोड करीत आहे..." "सिम कार्ड संपर्क" - "कोणताही संपर्क अॅप उपलब्ध नाही" "व्हॉइस शोध उपलब्ध नाही" "फोन अनुप्रयोग अक्षम केला गेला असल्याने फोन कॉल करणे शक्य नाही." "संपर्क शोधा" @@ -145,10 +153,9 @@ "%s नवीन सुटलेले कॉल" "अद्याप आपल्‍या स्पीड डायलवर कोणीही नाही" "एक आवडते जोडा" - "आपल्‍याकडे अद्याप कोणतेही संपर्क नाहीत" - "एक संपर्क जोडा" "सर्व नंबर पाहण्यासाठी प्रतिमेस स्पर्श करा किंवा पुन्हा क्रम लावण्यासाठी स्पर्श करा आणि धरून ठेवा" "काढा" + "सर्व निवडा" "व्हिडिओ कॉल" "एक संदेश पाठवा" "कॉल तपशील" @@ -213,11 +220,9 @@ "अवरोधित केलेले नंबर" "%1$s आधीच अवरोधित केलेला आहे." "कॉल करण्याची खाती" - "चालू करा" "परवानग्या सेट करा" "स्पीड डायल सक्षम करण्‍यासाठी, संपर्क परवानगी चालू करा." "आपला कॉल लॉग पाहण्‍यासाठी, फोन परवानगी चालू करा." - "आपले संपर्क पाहण्‍यासाठी, संपर्क परवानगी चालू करा." "आपल्‍या व्हॉइसमेलमध्‍ये प्रवेश करण्‍यासाठी, फोन परवानगी चालू करा." "आपले संपर्क शोधण्‍यासाठी, संपर्क परवानग्या चालू करा." "कॉल करण्यासाठी, फोन परवानगी चालू करा." diff --git a/java/com/android/dialer/app/res/values-ms/strings.xml b/java/com/android/dialer/app/res/values-ms/strings.xml index 9dbe541d97508fc50f29555f038d701e5fe9d401..f58f08f0222e6518e0ff0d667f0303679744abff 100644 --- a/java/com/android/dialer/app/res/values-ms/strings.xml +++ b/java/com/android/dialer/app/res/values-ms/strings.xml @@ -80,11 +80,16 @@ "Tambah penungguan" "Tetapan" "Simulator" + "Buat Pintasan UI Baharu" "Semua kenalan" "Gunakan pad kekunci nada sentuh" "Kembali ke panggilan yang sedang berlangsung" "Tambah panggilan" "Panggilan masuk" + "Memasuki mod tindakan pukal" + "Meninggalkan mod tindakan pukal" + "%1$s dipilih" + "%1$s dinyahpilih" "Mainkan mel suara" "Lihat kenalan %1$s" "Panggil %1$s" @@ -99,11 +104,15 @@ "Mel suara" "%s saat" "%s min %s saat" - "mel suara" - "mel suara" - "Ya" - "Tidak" + "Batalkan mod tindakan kelompok" + "Padam" + "Batal" "Padam %1$s yang dipilih?" + "%1$s dipilih" + + ""Padamkan mel suara ini? "" + ""Padamkan mel suara ini? "" + @string/call_log_header_today "%1$s pada %2$s" "%1$02d:%2$02d" @@ -116,7 +125,6 @@ "MEID" "Memuatkan dari kad SIM..." "Kenalan kad SIM" - "Tiada apl kenalan tersedia" "Carian suara tidak tersedia" "Tidak boleh membuat panggilan telefon kerana aplikasi Telefon telah dilumpuhkan." "Cari dalam kenalan" @@ -145,10 +153,9 @@ "%s panggilan terlepas baharu" "Belum ada sesiapa pada dail pantas anda" "Tambahkan kegemaran" - "Anda belum mempunyai sebarang kenalan" - "Tambahkan kenalan" "Sentuh imej untuk melihat semua nombor atau sentuh & tahan untuk menyusun semula" "Alih keluar" + "Pilih semua" "Panggilan video" "Hantar mesej" "Butiran panggilan" @@ -213,11 +220,9 @@ "Nombor yang disekat" "%1$s sudah disekat." "Akaun panggilan" - "Hidupkan" "Tetapkan kebenaran" "Untuk mendayakan dail laju, hidupkan kebenaran Kenalan." "Untuk melihat log panggilan anda, hidupkan kebenaran Telefon." - "Untuk melihat kenalan anda, hidupkan kebenaran Kenalan." "Untuk mengakses mel suara anda, hidupkan kebenaran Telefon." "Untuk mencari kenalan anda, hidupkan kebenaran Kenalan." "Untuk membuat panggilan, hidupkan kebenaran Telefon." diff --git a/java/com/android/dialer/app/res/values-my/strings.xml b/java/com/android/dialer/app/res/values-my/strings.xml index 2b51b2054d4043d60a147def24eb758660f03378..60c3271a0487f6bb51e0ad7a58b9d817397452c9 100644 --- a/java/com/android/dialer/app/res/values-my/strings.xml +++ b/java/com/android/dialer/app/res/values-my/strings.xml @@ -80,11 +80,16 @@ "စောင့်ဆိုင်းခြင်း ထည့်ပါ" "ဆက်တင်များ" "အသစ်ကဲ့သို့ တုပသည့်စနစ်" + "UI ဖြတ်လမ်းလင့်ခ်အသစ် လုပ်ရန်" "လိပ်စာများအားလုံး" "touch tone ကီးခလုတ် ကိုအသုံးပြုပါ" "ဖုန်းပြန်ခေါ်မှု ပြုလုပ်နေစဉ်" "ဖုန်းခေါ်မှု ထပ်ထည့်ပါ" "အဝင်ခေါ်ဆိုမှုများ" + "တပြိုင်နက်တည်း စုပြုံလုပ်ဆောင်ချက်မုဒ်ကို ထည့်သွင်းခြင်း" + "တပြိုင်နက်တည်း စုပြုံလုပ်ဆောင်ချက်မုဒ်မှ ထွက်လိုက်သည်" + "ရွေးချယ်ထားသော %1$s" + "မရွေးချယ်ထားသော %1$s" "အသံပို့စာ နားထောင်ရန်" "%1$s လိပ်စာကြည့်ရန်" "%1$s ကိုခေါ်ပါ" @@ -99,11 +104,15 @@ "အသံစာပို့စနစ်" "%s စက္ကန့်" "%s မိနစ် %s စက္ကန့်" - "အသံမေးလ်" - "အသံမေးလ်များ" - "Yes" - "No" + "တပြိုင်နက်တည်း စုပြုံလုပ်ဆောင်ချက်များမုဒ်ကိ ပယ်ဖျက်ရန်" + "ဖျက်ပါ" + "မလုပ်တော့" "ရွေးထားသော %1$s ကို ဖျက်လိုပါသလား။" + "%1$s ကို ရွေးချယ်ထားသည်" + + ""ဤအသံမေးလ်များကို ဖျက်မလား။ "" + ""ဤအသံမေးလ်ကို ဖျက်မလား။ "" + @string/call_log_header_today "%1$s %2$s ၌" "%1$02d:%2$02d" @@ -116,7 +125,6 @@ "MEIDနံပါတ်" "ဆင်းမ်ကဒ်မှ ဖွင့်နေပါသည်..." "ဆင်းမ်ကဒ်မှ အဆက်အသွယ်များ" - "အဆက်အသွယ်များ app မရှိ" "အသံဖြင့် ရှာဖွေမှု မရှိ" "ဖုန်း အပလီကေးရှင်းကို ပိတ်ထား၍ ဖုန်း ခေါ်ဆိုမှု မပြုလုပ်နိုင်ခဲ့ပါ။" "အဆက်အသွယ်များရှာပါ" @@ -145,10 +153,9 @@ "လွတ်သွားသောဖုန်း %s ခါ" "သင်၏အမြန်ခေါ်စာရင်းတွင် မည်သူမျှ မရှိသေးပါ" "အနှစ်သက်ဆုံးတစ်ခု ထည့်ရန်" - "သင့်တွင် မည်သည့်အဆက်အသွယ်မျှ မရှိသေးပါ" - "အဆက်အသွယ်တစ်ယောက် ထည့်မည်" "နံပါတ်အားလုံးကိုကြည့်ရန် ပုံကိုထိပါ (သို့) ပြန်စီရန် ထိပြီးဖိထားပါ" "ဖယ်ရှာခြင်း" + "အားလုံးကို ရွေးချယ်ပါ" "ဗီဒီယို ခေါ်ဆိုမှု" "စာ တစ်စောင် ပို့ပါ" "ဖုန်းခေါ်မှု အသေးစိတ်အချက်အလက်" @@ -213,11 +220,9 @@ "ပိတ်ထားသည့် နံပါတ်များ" "%1$s အားပိတ်ဆို့ထားပြီးပါပြီ။" "ခေါ်ဆိုသော အကောင့်များ" - "ဖွင့်ထားရန်" "ခွင့်ပြုချက်များ သတ်မှတ်မည်" "မြန်နှုန်းမြင့်ဖုန်းခေါ်ဆိုမှုကို ဖွင့်ရန်၊ အဆက်အသွယ်ခွင့်ပြုချက်ကို ဖွင့်ပါ။" "ခေါ်ဆိုမှုမှတ်တမ်းကို ကြည့်ရန်၊ ဖုန်းခွင့်ပြုချက်ကို ဖွင့်ပါ။" - "အဆက်အသွယ်များကိုကြည့်ရန်၊ အဆက်အသွယ်ခွင့်ပြုချက်ကို ဖွင့်ပါ။" "အသံမေးလ်ကိုအသုံးပြုရန်၊ ဖုန်းခွင့်ပြုချက်ကိုဖွင့်ပါ။" "သင့်အဆက်အသွယ်များကို ရှာဖွေရန်၊ အဆက်အသွယ်ခွင့်ပြုချက်များကို ဖွင့်ပါ။" "ဖုန်းခေါ်ဆိုရန်၊ ဖုန်းခွင့်ပြုချက်ကိုဖွင့်ပါ။" diff --git a/java/com/android/dialer/app/res/values-nb/strings.xml b/java/com/android/dialer/app/res/values-nb/strings.xml index d92edc6491a94c341f02f52496e88669a0e7c5b6..344a26a513dfb4b36aeaa0d240ae8dbdd57986ad 100644 --- a/java/com/android/dialer/app/res/values-nb/strings.xml +++ b/java/com/android/dialer/app/res/values-nb/strings.xml @@ -80,11 +80,16 @@ "Legg til Vent" "Innstillinger" "Simulator" + "Nytt grensesnitt – lag snarvei" "Alle kontakter" "Bruk tonetastatur" "Gå tilbake til aktiv samtale" "Legg til en samtale" "Innkommende samtaler" + "Starter massehandlingsmodus" + "Massehandlingsmodus er avsluttet" + "Du har valgt %1$s" + "Du har valgt bort %1$s" "Spill av talemelding" "Se kontakten %1$s" "Ring %1$s" @@ -99,11 +104,15 @@ "Telefonsvarer" "%s sek" "%s min %s sek" - "talepost" - "talepost" - "Ja" - "Nei" + "Avbryt massehandlinsmodus" + "Slett" + "Avbryt" "Slett markert %1$s?" + "%1$s er valgt" + + ""Vil du slette disse talemeldingene? "" + ""Vil du slette denne talemeldingen? "" + @string/call_log_header_today "%1$s kl. %2$s" "%1$02d:%2$02d" @@ -116,7 +125,6 @@ "MEID" "Henter fra SIM-kort…" "Kontakter på SIM-kort" - "Ingen kontaktapper er tilgjengelige" "Talesøk er ikke tilgjengelig" "Kan ikke ringe fordi Telefon-appen er deaktivert." "Søk i kontakter" @@ -145,10 +153,9 @@ "%s nye tapte anrop" "Du har ingen på hurtigoppringning ennå" "Legg til en favoritt" - "Du har ingen kontakter ennå" - "Legg til en kontakt" "Trykk på bildet for å se alle numrene, eller trykk og hold for å omorganisere" "Fjern" + "Velg alle" "Videoanrop" "Send en melding" "Samtaleinformasjon" @@ -213,11 +220,9 @@ "Blokkerte numre" "%1$s er allerede blokkert." "Ringekontoer" - "Slå på" "Angi tillatelser" "For å slå på hurtigoppringning, slå på Kontakter-tillatelsen." "For å se samtaleloggen din, slå på Telefon-tillatelsen." - "For å se kontaktene dine, slå på Kontakter-tillatelsen." "For å få tilgang til talepostkassen, slå på Telefon-tillatelsen." "For å søke i kontaktene dine, slå på tillatelser for Kontakter." "For å ringe, slå på Telefon-tillatelsen." diff --git a/java/com/android/dialer/app/res/values-ne/strings.xml b/java/com/android/dialer/app/res/values-ne/strings.xml index 90a3016e2ec7f175dfc74e5a2ce1fb5e8f2b5f05..5e70c40b657545fa4972b2b65f6eb862ac40844f 100644 --- a/java/com/android/dialer/app/res/values-ne/strings.xml +++ b/java/com/android/dialer/app/res/values-ne/strings.xml @@ -80,11 +80,16 @@ "पर्खाइ थप्नुहोस्" "सेटिङ्हरू" "सिम्युलेटर" + "नयाँ UI सर्टकट सिर्जना गर्ने" "सबै सम्पर्कहरू" "स्पर्श टोन किप्याडको प्रयोग गर्नुहोस्" "हुदै गरेको कलमा फर्कनुहोस्" "कल थप्नुहोस्" "आगमन कलहरू" + "बल्क कारबाही सम्बन्धी मोडमा प्रवेश गर्दै" + "बल्क कारबाही सम्बन्धी मोड छोडियो" + "%1$s चयन गरियो" + "%1$s चयन हटाइयो" "भ्वाइसमेल बजाउनुहोस्" "%1$s सम्पर्क हेर्नुहोस्" "कल %1$s" @@ -99,11 +104,15 @@ "भ्वाइसमेल" "%s सेकेन्ड" "%s मिनेट %s सकेन्ड" - "भ्वाइस मेल" - "भ्वाइस मेलहरू" - "हो" - "होइन" + "ब्याच सम्बन्धी कारबाहीको मोडलाई रद्द गर्नुहोस्" + "मेट्नुहोस्" + "रद्द गर्नुहोस्" "चयन गरिएका %1$s लाई मेटाउने हो?" + "%1$s चयन गरियो" + + ""यी भ्वाइस मेलहरू मेट्ने हो? "" + ""यो भ्वाइस मेल मेट्ने हो? "" + @string/call_log_header_today "%1$s मा %2$s" "%1$02d:%2$02d" @@ -116,7 +125,6 @@ "MEID" "SIM कार्डबाट लोड हुँदै" "SIM कार्ड सम्पर्कहरू" - "कुनै पनि सम्पर्क अनुप्रयोग उपलब्ध छैन" "आवाज खोजी उपलब्ध छैन" "फोन अनुप्रयोग असक्षम गरिएकोले फोन गर्न सकिँदैन।" "सम्पर्कहरू खोज्नुहोस्" @@ -145,10 +153,9 @@ "%s नयाँ छुटेका कलहरु" "तपाईँको स्पिड डायलमा अझसम्म कोही छैन" "एक मनपर्ने थप्नुहोस्" - "तपाईँसँग अझसम्म कुनै सम्पर्कहरू छैनन्" - "एउटा सम्पर्क थप्नुहोस्" "सबै नम्बरहरू हेर्न छविलाई छुनुहोस् वा पुन:क्रमबद्ध गर्न छोइराख्नुहोस्" "हटाउँनुहोस्" + "सबैलाई चयन गर्नुहोस्" "भिडियो कल" "सन्देश पठाउनुहोस्" "कल विवरणहरु" @@ -213,11 +220,9 @@ "रोकिएका नम्बरहरू" "%1$s पहिले नै रोकिएको छ।" "खाता कलिङ" - "सक्रिय पार्नुहोस्" "अनुमतिहरू सेट गर्नुहोस्" "तीव्र डायल सक्षम गर्न, सम्पर्क अनुमति सक्षम गर्नुहोस्।" "आफ्नो कल लग हेर्न, फोन अनुमति सक्रिय गर्नुहोस्।" - "आफ्नो सम्पर्क हेर्न सम्पर्क अनुमति सक्रिय गर्नुहोस्।" "आफ्नो भ्वाइस मेल पहुँच गर्न, फोन अनुमति सक्रिय गर्नुहोस्" "तपाईँको सम्पर्कहरू खोज गर्न सम्पर्क अनुमतिहरू सक्रिय गर्नुहोस्।" "कल गर्न फोन अनुमति सक्रिय गर्नुहोस्।" diff --git a/java/com/android/dialer/app/res/values-nl/strings.xml b/java/com/android/dialer/app/res/values-nl/strings.xml index 5f41b8063cd943d1f5745af17962620f30a0b35c..dbd29bc785c4a56b68dfb17e4bad9afb850d7d77 100644 --- a/java/com/android/dialer/app/res/values-nl/strings.xml +++ b/java/com/android/dialer/app/res/values-nl/strings.xml @@ -80,11 +80,16 @@ "Wachten toevoegen" "Instellingen" "Simulator" + "Snelkoppeling voor nieuwe UI" "Alle contacten" "Toetsen voor toonkiezen gebruiken" "Terug naar actief gesprek" "Oproep toevoegen" "Inkomende oproepen" + "Modus voor bulkacties openen" + "Modus voor bulkacties verlaten" + "%1$s geselecteerd" + "Selectie van %1$s opgeheven" "Voicemail afspelen" "Contact %1$s bekijken" "%1$s bellen" @@ -99,11 +104,15 @@ "Voicemail" "%s sec." "%s min. %s sec." - "voicemail" - "voicemails" - "Ja" - "Nee" + "Modus voor batchacties annuleren" + "Verwijderen" + "Annuleren" "Geselecteerde %1$s verwijderen?" + "%1$s geselecteerd" + + ""Deze voicemails verwijderen? "" + ""Deze voicemail verwijderen? "" + @string/call_log_header_today "%1$s om %2$s" "%1$02d:%2$02d" @@ -116,7 +125,6 @@ "MEID" "Laden vanaf SIM-kaart..." "Contacten op SIM-kaart" - "Geen app voor contacten beschikbaar" "Gesproken zoekopdracht niet beschikbaar" "Kan niet bellen omdat de Telefoon-app is uitgeschakeld." "Contacten zoeken" @@ -145,10 +153,9 @@ "%s nieuwe gemiste oproepen" "Er staat nog niemand in je snelkeuzelijst" "Een favoriet toevoegen" - "Je hebt nog geen contacten" - "Contact toevoegen" "Tik op de afbeelding om alle nummers te bekijken of tik op de afbeelding en houd vast om opnieuw te rangschikken" "Verwijderen" + "Alles selecteren" "Videogesprek" "Een bericht verzenden" "Oproepdetails" @@ -213,11 +220,9 @@ "Geblokkeerde nummers" "%1$s is al geblokkeerd." "Oproepaccounts" - "Inschakelen" "Toestemmingen instellen" "Als je de snelkeuzefunctie wilt inschakelen, schakel je de machtiging voor Contacten in." "Als je je gesprekkenlijst wilt bekijken, schakel je de machtiging voor Telefoon in." - "Als je je contacten wilt bekijken, schakel je de machtiging voor Contacten in." "Als je je voicemail wilt beluisteren, schakel je de machtiging voor Telefoon in." "Als je naar contacten wilt zoeken, schakel je de contacttoestemming in." "Als je iemand wilt bellen, schakel je de machtiging voor Telefoon in." diff --git a/java/com/android/dialer/app/res/values-no/strings.xml b/java/com/android/dialer/app/res/values-no/strings.xml index d92edc6491a94c341f02f52496e88669a0e7c5b6..344a26a513dfb4b36aeaa0d240ae8dbdd57986ad 100644 --- a/java/com/android/dialer/app/res/values-no/strings.xml +++ b/java/com/android/dialer/app/res/values-no/strings.xml @@ -80,11 +80,16 @@ "Legg til Vent" "Innstillinger" "Simulator" + "Nytt grensesnitt – lag snarvei" "Alle kontakter" "Bruk tonetastatur" "Gå tilbake til aktiv samtale" "Legg til en samtale" "Innkommende samtaler" + "Starter massehandlingsmodus" + "Massehandlingsmodus er avsluttet" + "Du har valgt %1$s" + "Du har valgt bort %1$s" "Spill av talemelding" "Se kontakten %1$s" "Ring %1$s" @@ -99,11 +104,15 @@ "Telefonsvarer" "%s sek" "%s min %s sek" - "talepost" - "talepost" - "Ja" - "Nei" + "Avbryt massehandlinsmodus" + "Slett" + "Avbryt" "Slett markert %1$s?" + "%1$s er valgt" + + ""Vil du slette disse talemeldingene? "" + ""Vil du slette denne talemeldingen? "" + @string/call_log_header_today "%1$s kl. %2$s" "%1$02d:%2$02d" @@ -116,7 +125,6 @@ "MEID" "Henter fra SIM-kort…" "Kontakter på SIM-kort" - "Ingen kontaktapper er tilgjengelige" "Talesøk er ikke tilgjengelig" "Kan ikke ringe fordi Telefon-appen er deaktivert." "Søk i kontakter" @@ -145,10 +153,9 @@ "%s nye tapte anrop" "Du har ingen på hurtigoppringning ennå" "Legg til en favoritt" - "Du har ingen kontakter ennå" - "Legg til en kontakt" "Trykk på bildet for å se alle numrene, eller trykk og hold for å omorganisere" "Fjern" + "Velg alle" "Videoanrop" "Send en melding" "Samtaleinformasjon" @@ -213,11 +220,9 @@ "Blokkerte numre" "%1$s er allerede blokkert." "Ringekontoer" - "Slå på" "Angi tillatelser" "For å slå på hurtigoppringning, slå på Kontakter-tillatelsen." "For å se samtaleloggen din, slå på Telefon-tillatelsen." - "For å se kontaktene dine, slå på Kontakter-tillatelsen." "For å få tilgang til talepostkassen, slå på Telefon-tillatelsen." "For å søke i kontaktene dine, slå på tillatelser for Kontakter." "For å ringe, slå på Telefon-tillatelsen." diff --git a/java/com/android/dialer/app/res/values-pa/strings.xml b/java/com/android/dialer/app/res/values-pa/strings.xml index 76d4b9b700e51bd391e956fb6b723d7ae144621e..33afd5824740608c3bf1a0edaf26469858867568 100644 --- a/java/com/android/dialer/app/res/values-pa/strings.xml +++ b/java/com/android/dialer/app/res/values-pa/strings.xml @@ -80,11 +80,16 @@ "ਉਡੀਕ ਜੋੜੋ" "ਸੈਟਿੰਗਾਂ" "ਸਿਮੁਲੇਟਰ" + "ਨਵਾਂ UI ਸ਼ਾਰਟਕੱਟ ਬਣਾਓ" "ਸਾਰੇ ਸੰਪਰਕ" "ਟਚ ਟੋਨ ਕੀਪੈਡ ਵਰਤੋ" "ਪ੍ਰਗਤੀ ਵਿੱਚ ਕਾਲ ਤੇ ਵਾਪਸ ਜਾਓ" "ਕਾਲ ਜੋੜੋ" "ਇਨਕਮਿੰਗ ਕਾਲਾਂ" + "ਬਲਕ ਕਾਰਵਾਈ ਮੋਡ ਵਿੱਚ ਦਾਖਲ ਹੋਇਆ ਜਾ ਰਿਹਾ ਹੈ" + "ਬਲਕ ਕਾਰਵਾਈ ਮੋਡ ਨੂੰ ਛੱਡਿਆ" + "%1$s ਨੂੰ ਚੁਣਿਆ ਗਿਆ" + "%1$s ਨੂੰ ਅਣ-ਚੁਣਿਆ ਕੀਤਾ ਗਿਆ" "ਵੌਇਸਮੇਲ ਪਲੇ ਕਰੋ" "ਸੰਪਰਕ %1$s ਦੇਖੋ" "%1$s ਨੂੰ ਕਾਲ ਕਰੋ" @@ -99,11 +104,15 @@ "ਵੌਇਸਮੇਲ" "%s ਸਕਿੰਟ" "%s ਮਿੰਟ %s ਸਕਿੰਟ" - "ਵੌਇਸਮੇਲ" - "ਵੌਇਸਮੇਲਾਂ" - "ਹਾਂ" - "ਨਹੀਂ" + "ਬੈਚ ਕਾਰਵਾਈਆਂ ਮੋਡ ਨੂੰ ਰੱਦ ਕਰੋ" + "ਮਿਟਾਓ" + "ਰੱਦ ਕਰੋ" "ਕੀ ਚੁਣੀ(ਆਂ) ਹੋਈ(ਆਂ) %1$s ਨੂੰ ਮਿਟਾਉਣਾ ਹੈ?" + "%1$s ਨੂੰ ਚੁਣਿਆ ਗਿਆ" + + ""ਕੀ ਇਸ ਵੌਇਸਮੇਲ ਨੂੰ ਮਿਟਾਉਣਾ ਹੈ? "" + ""ਕੀ ਇਹਨਾਂ ਵੌਇਸਮੇਲਾਂ ਨੂੰ ਮਿਟਾਉਣਾ ਹੈ? "" + @string/call_log_header_today "%1$s ਨੂੰ %2$s ਵਜੇ" "%1$02d:%2$02d" @@ -116,7 +125,6 @@ "MEID" "SIM ਕਾਰਡ ਵਿੱਚੋਂ ਲੋਡ ਕਰ ਰਿਹਾ ਹੈ…" "SIM ਕਾਰਡ ਸੰਪਰਕ" - "ਕੋਈ ਸੰਪਰਕ ਐਪ ਉਪਲਬਧ ਨਹੀਂ" "ਵੌਇਸ ਖੋਜ ਉਪਲਬਧ ਨਹੀਂ ਹੈ" "ਇੱਕ ਫੋਨ ਕਾਲ ਨਹੀਂ ਕਰ ਸਕਦਾ ਕਿਉਂਕਿ ਫੋਨ ਐਪਲੀਕੇਸ਼ਨ ਨੂੰ ਅਯੋਗ ਬਣਾਇਆ ਗਿਆ ਹੈ।" "ਸੰਪਰਕ ਖੋਜੋ" @@ -145,10 +153,9 @@ "%s ਨਵੀਆਂ ਮਿਸਡ ਕਾਲਾਂ" "ਅਜੇ ਤੁਹਾਡੇ ਸਪੀਡ ਡਾਇਲ \'ਤੇ ਕੋਈ ਵੀ ਵਿਅਕਤੀ ਨਹੀਂ ਹੈ" "ਕੋਈ ਮਨਪਸੰਦ ਸ਼ਾਮਲ ਕਰੋ" - "ਤੁਹਾਡੇ ਕੋਲ ਅਜੇ ਕੋਈ ਸੰਪਰਕ ਨਹੀਂ ਹਨ।" - "ਕੋਈ ਸੰਪਰਕ ਸ਼ਾਮਲ ਕਰੋ" "ਸਾਰੇ ਨੰਬਰਾਂ ਨੂੰ ਵੇਖਣ ਲਈ ਚਿਤਰ ਨੂੰ ਸਪਰਸ਼ ਕਰੋ ਜਾਂ ਦੁਬਾਰਾ ਕ੍ਰਮਬੱਧ ਕਰਨ ਲਈ ਸਪਰਸ਼ ਕਰੋ ਅਤੇ ਦਬਾਈ ਰੱਖੋ" "ਹਟਾਓ" + "ਸਭ ਚੁਣੋ" "ਵੀਡੀਓ ਕਾਲ" "ਇੱਕ ਸੁਨੇਹਾ ਭੇਜੋ" "ਕਾਲ ਵੇਰਵੇ" @@ -213,11 +220,9 @@ "ਬਲੌਕ ਕੀਤੇ ਗਏ ਨੰਬਰ" "%1$s ਪਹਿਲਾਂ ਹੀ ਬਲੌਕ ਕੀਤਾ ਹੋਇਆ ਹੈ।" "ਕਾਲਿੰਗ ਖਾਤੇ" - "ਚਾਲੂ ਕਰੋ" "ਅਨੁਮਤੀਆਂ ਸੈੱਟ ਕਰੋ" "ਸਪੀਡ ਡਾਇਲ ਨੂੰ ਸਮਰੱਥ ਕਰਨ ਲਈ, ਸੰਪਰਕ ਅਨੁਮਤੀ ਚਾਲੂ ਕਰੋ।" "ਆਪਣਾ ਕਾਲ ਲੌਗ ਵੇਖਣ ਲਈ, ਫ਼ੋਨ ਅਨੁਮਤੀ ਚਾਲੂ ਕਰੋ।" - "ਆਪਣੇ ਸੰਪਰਕਾਂ ਨੂੰ ਵੇਖਣ ਲਈ, ਸੰਪਰਕ ਅਨੁਮਤੀ ਚਾਲੂ ਕਰੋ।" "ਆਪਣੀ ਵੌਇਸਮੇਲ ਐਕਸੈਸ ਕਰਨ ਲਈ, ਫ਼ੋਨ ਅਨੁਮਤੀ ਚਾਲੂ ਕਰੋ।" "ਆਪਣੇ ਸੰਪਰਕਾਂ ਦੀ ਖੋਜ ਕਰਨ ਲਈ,, ਸੰਪਰਕ ਅਨੁਮਤੀਆਂ ਨੂੰ ਚਾਲੂ ਕਰੋ।" "ਕਾਲ ਕਰਨ ਲਈ, ਫ਼ੋਨ ਅਨੁਮਤੀ ਚਾਲੂ ਕਰੋ।" diff --git a/java/com/android/dialer/app/res/values-pl/strings.xml b/java/com/android/dialer/app/res/values-pl/strings.xml index 76adfe579ebc9d12647c4643370d915b67403858..7f6027c51d30855128ac20d5624d60215b3d8f81 100644 --- a/java/com/android/dialer/app/res/values-pl/strings.xml +++ b/java/com/android/dialer/app/res/values-pl/strings.xml @@ -82,11 +82,16 @@ "Dodaj oczekiwanie" "Ustawienia" "Symulator" + "Utwórz skrót do nowego interfejsu" "Wszystkie kontakty" "Użyj klawiatury tonowej" "Wróć do aktywnego połączenia" "Dodaj połączenie" "Połączenia przychodzące" + "Włączono tryb działań zbiorczych" + "Wyłączono tryb działań zbiorczych" + "Wybrano: %1$s" + "Anulowano wybór: %1$s" "Odtwórz pocztę głosową" "Wyświetl kontakt %1$s" "Zadzwoń do: %1$s" @@ -101,11 +106,17 @@ "Poczta głosowa" "%s s" "%s min %s s" - "wiadomości głosowe" - "wiadomości głosowe" - "Tak" - "Nie" + "Anuluj tryb działań zbiorczych" + "Usuń" + "Anuluj" "Usunąć wybrane %1$s?" + "Wybrane: %1$s" + + ""Usunąć te wiadomości głosowe? "" + ""Usunąć te wiadomości głosowe? "" + ""Usunąć te wiadomości głosowe? "" + ""Usunąć tę wiadomość głosową? "" + @string/call_log_header_today "%1$s o %2$s" "%1$02d:%2$02d" @@ -118,7 +129,6 @@ "Numer MEID" "Wczytuję z karty SIM…" "Kontakty z karty SIM" - "Nie jest dostępna aplikacja do obsługi kontaktów" "Wyszukiwanie głosowe jest niedostępne" "Nie można zadzwonić, ponieważ aplikacja Telefon została wyłączona." "Przeszukuj kontakty" @@ -147,10 +157,9 @@ "Nowe nieodebrane połączenia: %s" "Lista szybkiego wybierania jest pusta" "Dodaj do ulubionych" - "Nie masz jeszcze żadnych kontaktów" - "Dodaj kontakt" "Kliknij obraz, by zobaczyć wszystkie numery, lub kliknij go i przytrzymaj, by zmienić kolejność" "Usuń" + "Zaznacz wszystkie" "Rozmowa wideo" "Wyślij wiadomość" "Szczegóły połączenia" @@ -217,11 +226,9 @@ "Zablokowane numery" "Numer %1$s jest już zablokowany." "Konta telefoniczne" - "Włącz" "Ustaw uprawnienia" "Aby włączyć szybkie wybieranie, włącz uprawnienie Kontakty." "Aby zobaczyć swój rejestr połączeń, włącz uprawnienie Telefon." - "Aby zobaczyć swoje kontakty, włącz uprawnienie Kontakty." "Aby uzyskać dostęp do poczty głosowej, włącz uprawnienie Telefon." "Aby wyszukać kontakty, włącz uprawnienia Kontakty." "Aby nawiązać połączenie, włącz uprawnienie Telefon." diff --git a/java/com/android/dialer/app/res/values-pt-rBR/strings.xml b/java/com/android/dialer/app/res/values-pt-rBR/strings.xml index 780ca07dbdf712c6f6cc09866a5157f416d860d8..768ce57d4bbea5ee9c89d98a4dda4d9e5e6276ed 100644 --- a/java/com/android/dialer/app/res/values-pt-rBR/strings.xml +++ b/java/com/android/dialer/app/res/values-pt-rBR/strings.xml @@ -80,11 +80,16 @@ "Adicionar espera" "Configurações" "Simulador" + "Criar atalho para a nova IU" "Todos os contatos" "Usar teclado multifrequencial" "Retornar para a chamada em espera" "Ad. cham." "Chamadas recebidas" + "Entrando no modo de ação em massa" + "Saindo do modo de ação em massa" + "%1$s selecionado" + "%1$s não selecionado" "Reproduzir mensagem de voz" "Visualizar contato %1$s" "Ligar para %1$s" @@ -99,11 +104,15 @@ "Correio de voz" "%s seg" "%s m %s s" - "correio de voz" - "correios de voz" - "Sim" - "Não" + "Cancelar modo de ações em lote" + "Excluir" + "Cancelar" "Excluir a seleção de %1$s?" + "Itens selecionados: %1$s" + + ""Excluir este correio de voz? "" + ""Excluir estes correios de voz? "" + @string/call_log_header_today "%1$s às %2$s" "%1$02d:%2$02d" @@ -116,7 +125,6 @@ "MEID" "Carregando do cartão SIM..." "Contatos do cartão SIM" - "Nenhum app de contatos disponível" "A pesquisa por voz não está disponível" "Não é possível fazer uma chamada porque o app Telefone foi desativado." "Pesquisar contatos" @@ -145,10 +153,9 @@ "%s novas chamadas perdidas" "Ainda não há ninguém na sua discagem rápida" "Adicionar favorito" - "Você ainda não tem contatos" - "Adicionar um contato" "Toque na imagem para ver todos os números ou toque e segure para reordenar" "Remover" + "Selecionar tudo" "Videochamada" "Enviar uma mensagem" "Detalhes da chamada" @@ -213,11 +220,9 @@ "Números bloqueados" "O número %1$s já está bloqueado." "Contas de chamadas" - "Ativar" "Definir permissões" "Para ativar a discagem rápida, ative a permissão para o app Contatos." "Para ver seu registro de chamadas, ative a permissão para o app Telefone." - "Para ver seus contatos, ative a permissão para o app Contatos." "Para acessar seu correio de voz, ative a permissão para o app Telefone." "Para pesquisar seus contatos, ative as permissões para \"Contatos\"." "Para fazer uma chamada, ative a permissão para o app Telefone." diff --git a/java/com/android/dialer/app/res/values-pt-rPT/strings.xml b/java/com/android/dialer/app/res/values-pt-rPT/strings.xml index 95fa75c7e71f39e01e27d942576b59312cfc9ec2..3c636e1d60f0658677418de885a82307dc73fe29 100644 --- a/java/com/android/dialer/app/res/values-pt-rPT/strings.xml +++ b/java/com/android/dialer/app/res/values-pt-rPT/strings.xml @@ -80,11 +80,16 @@ "Adicionar espera" "Definições" "Simulador" + "Criar novo atalho de IU" "Todos os contactos" "Utilizar teclado numérico com tons de toque" "Voltar à chamada em curso" "Adicionar chamada" "Chamadas recebidas" + "A entrar no modo de ação em massa…" + "Saiu do modo de ação em massa" + "%1$s selecionado" + "%1$s não selecionado" "Reproduzir mensagem de correio de voz" "Ver o contacto %1$s" "Ligar a %1$s" @@ -99,11 +104,15 @@ "Correio de voz" "%s seg" "%s min. %s seg." - "mensagem de correio de voz" - "mensagens de correio de voz" - "Sim" - "Não" + "Cancelar modo de ações em lote" + "Eliminar" + "Cancelar" "Pretende eliminar a(s) %1$s selecionada(s)?" + "%1$s selecionada(s)" + + ""Pretende eliminar esta(s) mensagem(ns) de correio de voz? "" + ""Pretende eliminar estas mensagens de correio de voz? "" + @string/call_log_header_today "%1$s às %2$s" "%1$02d:%2$02d" @@ -116,7 +125,6 @@ "MEID" "A carregar a partir do cartão SIM..." "Contactos no cartão SIM" - "Não existe nenhuma aplicação de contactos disponível" "Pesquisa por voz não disponível" "Não é possível efetuar uma chamada porque a aplicação Telefone foi desativada." "Pesquisar contactos" @@ -145,10 +153,9 @@ "%s chamadas não atendidas novas" "Ainda não tem ninguém na marcação rápida" "Adicionar um favorito" - "Ainda não tem nenhum contacto" - "Adicionar um contacto" "Toque na imagem para ver todos os números ou toque sem soltar para reordenar" "Remover" + "Selecionar tudo" "Videochamada" "Enviar uma mensagem" "Detalhes da chamada" @@ -213,11 +220,9 @@ "Números bloqueados" "%1$s já está bloqueado." "Contas de chamadas" - "Ativar" "Definir autorizações" "Para ativar a marcação rápida, ative a autorização Contactos." "Para ver o registo de chamadas, ative a autorização Telemóvel." - "Para ver os seus contactos, ative a autorização Contactos." "Para aceder ao correio de voz, ative a autorização Telemóvel." "Para pesquisar os seus contactos, ative as autorizações Contactos." "Para efetuar uma chamada, ative a autorização Telemóvel." diff --git a/java/com/android/dialer/app/res/values-pt/strings.xml b/java/com/android/dialer/app/res/values-pt/strings.xml index 780ca07dbdf712c6f6cc09866a5157f416d860d8..768ce57d4bbea5ee9c89d98a4dda4d9e5e6276ed 100644 --- a/java/com/android/dialer/app/res/values-pt/strings.xml +++ b/java/com/android/dialer/app/res/values-pt/strings.xml @@ -80,11 +80,16 @@ "Adicionar espera" "Configurações" "Simulador" + "Criar atalho para a nova IU" "Todos os contatos" "Usar teclado multifrequencial" "Retornar para a chamada em espera" "Ad. cham." "Chamadas recebidas" + "Entrando no modo de ação em massa" + "Saindo do modo de ação em massa" + "%1$s selecionado" + "%1$s não selecionado" "Reproduzir mensagem de voz" "Visualizar contato %1$s" "Ligar para %1$s" @@ -99,11 +104,15 @@ "Correio de voz" "%s seg" "%s m %s s" - "correio de voz" - "correios de voz" - "Sim" - "Não" + "Cancelar modo de ações em lote" + "Excluir" + "Cancelar" "Excluir a seleção de %1$s?" + "Itens selecionados: %1$s" + + ""Excluir este correio de voz? "" + ""Excluir estes correios de voz? "" + @string/call_log_header_today "%1$s às %2$s" "%1$02d:%2$02d" @@ -116,7 +125,6 @@ "MEID" "Carregando do cartão SIM..." "Contatos do cartão SIM" - "Nenhum app de contatos disponível" "A pesquisa por voz não está disponível" "Não é possível fazer uma chamada porque o app Telefone foi desativado." "Pesquisar contatos" @@ -145,10 +153,9 @@ "%s novas chamadas perdidas" "Ainda não há ninguém na sua discagem rápida" "Adicionar favorito" - "Você ainda não tem contatos" - "Adicionar um contato" "Toque na imagem para ver todos os números ou toque e segure para reordenar" "Remover" + "Selecionar tudo" "Videochamada" "Enviar uma mensagem" "Detalhes da chamada" @@ -213,11 +220,9 @@ "Números bloqueados" "O número %1$s já está bloqueado." "Contas de chamadas" - "Ativar" "Definir permissões" "Para ativar a discagem rápida, ative a permissão para o app Contatos." "Para ver seu registro de chamadas, ative a permissão para o app Telefone." - "Para ver seus contatos, ative a permissão para o app Contatos." "Para acessar seu correio de voz, ative a permissão para o app Telefone." "Para pesquisar seus contatos, ative as permissões para \"Contatos\"." "Para fazer uma chamada, ative a permissão para o app Telefone." diff --git a/java/com/android/dialer/app/res/values-ro/strings.xml b/java/com/android/dialer/app/res/values-ro/strings.xml index 725ff4a3cd444a3d1d0e26eda4a8180e51fa9bc5..b85f84987f245f0d36c6f37b6f3233784a8cb338 100644 --- a/java/com/android/dialer/app/res/values-ro/strings.xml +++ b/java/com/android/dialer/app/res/values-ro/strings.xml @@ -81,11 +81,16 @@ "Adăugați interval de așteptare" "Setări" "Simulator" + "Creați comandă rapidă IU nouă" "Toată agenda" "Tastatura tactilă cu sunet" "Reveniți la apelul în curs" "Adăugați un apel" "Apeluri de intrare" + "Se intră în modul acțiune în bloc" + "Ați ieșit din modul acțiune în bloc" + "S-a selectat %1$s" + "S-a deselectat %1$s" "Redați mesajul vocal" "Afișați persoana din agendă %1$s" "Apelați %1$s" @@ -100,11 +105,16 @@ "Mesagerie vocală" "%s secunde" "%s min. %s sec." - "mesagerie vocală" - "mesaje vocale" - "Da" - "Nu" + "Anulați modul de acțiuni în lot" + "Ștergeți" + "Anulați" "Ștergeți cele %1$s selectate?" + "%1$s selectate" + + ""Ștergeți aceste mesaje vocale? "" + ""Ștergeți aceste mesaje vocale? "" + ""Ștergeți acest mesaj vocal? "" + @string/call_log_header_today "%1$s la %2$s" "%1$02d:%2$02d" @@ -117,7 +127,6 @@ "MEID" "Se încarcă de pe cardul SIM..." "Persoanele din agendă de pe cardul SIM" - "Nu este disponibilă nicio aplicație pentru agendă" "Căutarea vocală nu este disponibilă" "Nu se poate efectua un apel telefonic, deoarece aplicația Telefon a fost dezactivată." "Căutați în Agendă" @@ -146,10 +155,9 @@ "%s apeluri nepreluate noi" "Nicio persoană de contact setată pentru apelarea rapidă" "Adăugați o persoană de contact preferată" - "Nu aveți încă persoane de contact" - "Adăugați o persoană de contact" "Atingeți imaginea pentru a vedea toate numerele sau atingeți lung pentru reordonare" "Eliminați" + "Selectați tot" "Apel video" "Trimiteți un mesaj" "Detaliile apelului" @@ -215,11 +223,9 @@ "Numere blocate" "%1$s este deja blocat." "Conturi pentru apelare" - "Activați" "Setați permisiunile" "Pentru a activa apelarea rapidă, activați permisiunea Agendă." "Pentru a vedea jurnalul de apeluri, activați permisiunea Telefon." - "Pentru a vedea persoanele de contact, activați permisiunea Agendă." "Pentru a accesa mesageria vocală, activați permisiunea Telefon." "Pentru a căuta în persoanele de contact, activați permisiunea Agendă." "Pentru a apela, activați permisiunea Telefon." diff --git a/java/com/android/dialer/app/res/values-ru/strings.xml b/java/com/android/dialer/app/res/values-ru/strings.xml index 557832bcda8f8f227d0108103e57af5a9d26d6ff..91441cc56046e8463a8dfbeaea3ca54eda5fd9a1 100644 --- a/java/com/android/dialer/app/res/values-ru/strings.xml +++ b/java/com/android/dialer/app/res/values-ru/strings.xml @@ -82,11 +82,16 @@ "Добавить паузу" "Настройки" "Симулятор" + "Создать ярлык для нового интерфейса" "Все контакты" "Панель тонального набора" "Вернуться к текущему вызову" "Добавить вызов" "Входящие вызовы" + "Вы вошли в режим массового действия" + "Вы вышли из режима массового действия" + "Выбран объект %1$s" + "Выбор объекта %1$s отменен" "Прослушать голосовую почту" "Просмотреть данные: %1$s" "Вызов: %1$s" @@ -101,11 +106,17 @@ "Голосовая почта" "%s сек." "%s мин. %s сек." - "голосовое сообщение" - "голосовые сообщения" - "Да" - "Нет" + "Отмена режима массового действия" + "Удалить" + "Отмена" "Удалить %1$s?" + "Выбрано: %1$s" + + ""Удалить эти голосовые сообщения? "" + ""Удалить эти голосовые сообщения? "" + ""Удалить эти голосовые сообщения? "" + ""Удалить эти голосовые сообщения? "" + @string/call_log_header_today "%1$s в %2$s" "%1$02d:%2$02d" @@ -118,7 +129,6 @@ "MEID" "Загрузка с SIM-карты…" "Контакты на SIM-карте" - "Нет приложения для работы с контактами" "Голосовой поиск недоступен" "Нельзя совершать телефонные звонки, поскольку приложение \"Телефон\" отключено." "Поиск в контактах" @@ -147,10 +157,9 @@ "Пропущенных вызовов: %s" "Нет номеров для быстрого набора" "Настроить быстрый набор" - "Нет контактов" - "Добавить контакт" "Коснитесь изображения, чтобы увидеть все номера, или нажмите и удерживайте, чтобы изменить порядок" "Удалить" + "Выбрать все" "Видеовстреча" "Отправить сообщение" "Сведения о вызове" @@ -217,11 +226,9 @@ "Заблокированные номера" "%1$s уже заблокирован." "Аккаунты для звонков" - "Включить" "Задать разрешения" "Чтобы настроить быстрый набор, предоставьте приложению разрешение \"Контакты\"." "Чтобы открыть список вызовов, предоставьте приложению разрешение \"Телефон\"." - "Чтобы открыть список контактов, предоставьте приложению разрешение \"Контакты\"." "Чтобы получить доступ к голосовой почте, предоставьте приложению разрешение \"Телефон\"." "Для поиска контактов включите разрешение \"Контакты\"." "Чтобы позвонить, предоставьте приложению разрешение \"Телефон\"." diff --git a/java/com/android/dialer/app/res/values-si/strings.xml b/java/com/android/dialer/app/res/values-si/strings.xml index 329d89e8d81b8b0cb60eec53c1503fc0b64113db..8a748d53c91c8fbafd8fd834d69874b07467f9aa 100644 --- a/java/com/android/dialer/app/res/values-si/strings.xml +++ b/java/com/android/dialer/app/res/values-si/strings.xml @@ -80,11 +80,16 @@ "රැඳී සිටීම එක් කරන්න" "සැකසීම්" "සමාකෘතිය" + "නව UI කෙටිමග තනන්න" "සියලුම සම්බන්ධතා" "ස්පර්ශ නාද යතුරුපෑඩය භාවිතා කරන්න" "පවතින ඇමතුමට නැවත යන්න" "ඇමතුමක් එක් කරන්න" "එන ඇමතුම්" + "තොග ක්‍රියා ප්‍රකාරය ඇතුළු කරමින්" + "තොග ක්‍රියා ප්‍රකාරය හැර යන ලදී" + "%1$s තෝරා ගන්නා ලදී" + "%1$s තෝරා ගැනීම ඉවත් කරන ලදී" "හඬ තැපෑල ධාවනය කිරීම" "%1$s සම්බන්ධතාවය බලන්න" "%1$s අමතන්න" @@ -99,11 +104,15 @@ "හඬ තැපෑල" "තත් %s" "මිනි %s තත් %s" - "හඬ තැපෑල" - "හඬ තැපැල්" - "ඔව්" - "නැත" + "කාණ්ඩ ක්‍රියා ප්‍රකාරය අවලංගු කරන්න" + "මකන්න" + "අවලංගු කරන්න" "තෝරා ගත් %1$s මකන්නද?" + "%1$s තෝරා ගන්නා ලදි" + + ""මෙම හඬ තැපැල් මකන්නද? "" + ""මෙම හඬ තැපැල් මකන්නද? "" + @string/call_log_header_today "%1$s දින %2$sට" "%1$02d:%2$02d" @@ -116,7 +125,6 @@ "MEID" "SIM පතෙන් පූරණය කරමින්…" "SIM පත් සම්බන්ධතා" - "සබඳතා යෙදුමක් ලබාගත නොහැකිය" "හඬ සෙවුම ලබාගත නොහැකිය" "දුරකථන යෙදුම අබල කර ඇති නිසා දුරකථන ඇමතුම ලබාගැනීම කළ නොහැක." "සම්බන්ධතා සෙවීම" @@ -145,10 +153,9 @@ "නව මඟ හැරුණු ඇමතුම් %s" "ඔබගේ වේග ඩයල් එකේ තවමත් කවුරුවත් නැහැ" "ප්‍රියතම ලෙස එක් කරන්න" - "ඔබ තවමත් සම්බන්ධතා නැහැ" - "සම්බන්ධතාවයක් එක් කරන්න" "සියලු අංක බැලීමට රූපය ස්පර්ශ කරන්න නැතහොත් නැවත අනුපිළිවෙළට සැකසීමට ස්පර්ශ කර අල්ලාගෙන සිටින්න" "ඉවත් කරන්න" + "සියල්ල තෝරන්න" "වීඩියෝ ඇමතුම" "පණිවිඩයක් යවන්න" "ඇමතුම් විස්තර" @@ -213,11 +220,9 @@ "අවහිර කළ අංක" "%1$s දැනටමත් අවහිර කර ඇත." "ගිණුම් ඇමතීම" - "ක්‍රියාත්මක කරන්න" "අවසර සකසන්න" "වේග ඩයල් කිරීම සබල කිරීමට, සම්බන්ධතා අවසරය ක්‍රියාත්මක කරන්න." "ඔබේ ඇමතුම් ලොගය බැලීමට, දුරකථන අවසරය ක්‍රියාත්මක කරන්න." - "ඔබේ සම්බන්ධතා බැලීමට, සම්බන්ධතා අවසරය ක්‍රියාත්මක කරන්න." "ඔබේ හඬ තැපෑල වෙත ප්‍රවේශ වීමට, දුරකථන අවසරය ක්‍රියාත්මක කරන්න." "ඔබේ සම්බන්ධතා සෙවීමට, සම්බන්ධතා අවසර ක්‍රියාත්මක කරන්න." "ඇමතුමක් ලබා ගැනීමට, දුරකථන අවසරය ක්‍රියාත්මක කරන්න." diff --git a/java/com/android/dialer/app/res/values-sk/strings.xml b/java/com/android/dialer/app/res/values-sk/strings.xml index 60b63d520623a8ecb2be91dc429600765819c7c9..e84febb17130706570db8a0d3e5467783be1f4cd 100644 --- a/java/com/android/dialer/app/res/values-sk/strings.xml +++ b/java/com/android/dialer/app/res/values-sk/strings.xml @@ -82,11 +82,16 @@ "Pridať čakanie" "Nastavenia" "Simulátor" + "Vyt. skratku na nové rozhranie" "Všetky kontakty" "Použiť dotykovú tónovú klávesnicu" "Návrat k prebiehajúcemu hovoru" "Pridať hovor" "Prichádzajúce hovory" + "Vstupuje sa do režimu hromadných akcií" + "Odišli ste z režimu hromadných akcií" + "Položka %1$s bola vybraná" + "Výber položky %1$s bol zrušený" "Prehrať hlasovú správu" "Zobraziť kontakt %1$s" "Zavolať kontakt %1$s" @@ -101,11 +106,17 @@ "Hlasová schránka" "%s s" "%s min. %s s" - "hlasová správa" - "hlasové správy" - "Áno" - "Nie" + "Zrušiť režim hromadných akcií" + "Odstrániť" + "Zrušiť" "Chcete odstrániť vybraté položky (%1$s)?" + "Vybraté: %1$s" + + ""Chcete odstrániť tieto hlasové správy? "" + ""Chcete odstrániť tieto hlasové správy? "" + ""Chcete odstrániť tieto hlasové správy? "" + ""Chcete odstrániť túto hlasovú správu? "" + @string/call_log_header_today "%1$s%2$s" "%1$02d:%2$02d" @@ -118,7 +129,6 @@ "MEID" "Prebieha načítavanie z SIM karty..." "Kontakty na SIM karte" - "Nie je k dispozícii žiadna aplikácia na kontakty" "Hlasové vyhľadávanie nie je k dispozícii" "Nie je možné volať, pretože aplikácia Telefón bola deaktivovaná." "Hľadať v kontaktoch" @@ -147,10 +157,9 @@ "Nové zmeškané hovory: %s" "V rýchlej voľbe zatiaľ nemáte žiadny kontakt" "Pridať obľúbený kontakt" - "Zatiaľ nemáte žiadne kontakty" - "Pridať kontakt" "Klepnutím na obrázok môžete zobraziť všetky čísla. Pridržaním obrázka môžete zmeniť poradie." "Odstrániť" + "Vybrať všetko" "Videohovor" "Odoslať správu" "Podrobnosti hovoru" @@ -217,11 +226,9 @@ "Blokované čísla" "Číslo %1$s je už blokované." "Telefónne účty" - "Zapnúť" "Nastaviť povolenia" "Ak chcete aktivovať rýchlu voľbu, zapnite povolenie Kontakty." "Ak si chcete zobraziť denník hovorov, zapnite povolenie Telefón." - "Ak si chcete zobraziť kontakty, zapnite povolenie Kontakty." "Ak chcete používať hlasovú schránku, zapnite povolenie Telefón." "Ak chcete hľadať kontakty, zapnite povolenie Kontakty." "Ak chcete volať, zapnite povolenie Telefón." diff --git a/java/com/android/dialer/app/res/values-sl/strings.xml b/java/com/android/dialer/app/res/values-sl/strings.xml index b46b99ab58bd36ef167903c8922a43ee52fedadb..495b6e8020b26093e49fc778c78d5d2c42a70e77 100644 --- a/java/com/android/dialer/app/res/values-sl/strings.xml +++ b/java/com/android/dialer/app/res/values-sl/strings.xml @@ -82,11 +82,16 @@ "Dodaj premor" "Nastavitve" "Simulator" + "Ustvari bliž. za novi up. vm." "Vsi stiki" "Uporabi številčnico za tonsko klicanje" "Nazaj na klic, ki poteka" "Dodaj klic" "Dohodni klici" + "Prehod v način množičnega dejanja" + "Prehod iz načina množičnega dejanja" + "Izbrano: %1$s" + "Preklican izbor: %1$s" "Predvajanje sporočil glasovne pošte" "Ogled stika %1$s" "Pokliči %1$s" @@ -101,11 +106,17 @@ "Glasovna pošta" "%s s" "%s min %s s" - "sporočilo v odzivniku" - "sporočila v odzivniku" - "Da" - "Ne" + "Prekliči način množičnega dejanja" + "Izbriši" + "Prekliči" "Želite izbrisati %1$s?" + "Št. izbranih: %1$s" + + ""Želite izbrisati ta sporočila v odzivniku? "" + ""Želite izbrisati ta sporočila v odzivniku? "" + ""Želite izbrisati ta sporočila v odzivniku? "" + ""Želite izbrisati ta sporočila v odzivniku? "" + @string/call_log_header_today "%1$s ob %2$s" "%1$02d:%2$02d" @@ -118,7 +129,6 @@ "MEID" "Nalaganje s kartice SIM ..." "Stiki na kartici SIM" - "Ni aplikacije za stike" "Glasovno iskanje ni na voljo" "Ni mogoče opraviti telefonskega klica, ker je aplikacija Telefon onemogočena." "Iskanje stikov" @@ -147,10 +157,9 @@ "Št. novih zgrešenih klicev: %s" "Na seznamu za hitro klicanje nimate še nikogar" "Dodajte priljubljenega" - "Nimate še stikov" - "Dodajte stik" "Dotaknite se slike, da prikažete vse številke, ali pa se je dotaknite in pridržite, da spremenite vrstni red." "Odstrani" + "Izberi vse" "Videoklic" "Pošljite sporočilo" "Podrobnosti klica" @@ -217,11 +226,9 @@ "Blokirane številke" "Telefonska številka %1$s je že blokirana." "Računi za klicanje" - "Vklop" "Nastavi dovoljenja" "Če želite omogočiti hitro klicanje, vklopite dovoljenje za stike." "Če si želite ogledati dnevnik klicev, vklopite dovoljenje za telefon." - "Če si želite ogledati stike, vklopite dovoljenje za stike." "Če želite dostopati do sporočil v odzivniku, vklopite dovoljenje za telefon." "Če želite iskati po stikih, vklopite dovoljenje za stike." "Če želite klicati, vklopite dovoljenje za telefon." diff --git a/java/com/android/dialer/app/res/values-sq/strings.xml b/java/com/android/dialer/app/res/values-sq/strings.xml index 6a274fcd258a7379a246ead7656651438c3d7eef..809fd8a22eb0eef78cc27afa9b61f4e8fa51e617 100644 --- a/java/com/android/dialer/app/res/values-sq/strings.xml +++ b/java/com/android/dialer/app/res/values-sq/strings.xml @@ -80,11 +80,16 @@ "Shto një pritje" "Cilësimet" "Simuluesi" + "Krijo një shkurtore për ndërfaqen e re të përdoruesit" "Të gjitha kontaktet" "Përdor bllokun e tasteve" "Kthehu te telefonata" "Shto një telefonatë" "Telefonatat hyrëse" + "Po hyn në modalitetin e veprimit në masë" + "U largove nga modaliteti i veprimit në masë" + "U zgjodh %1$s" + "Zgjedhja e %1$s u anulua" "Luaj postën zanore" "Shiko kontaktin %1$s" "Telefono %1$s" @@ -99,11 +104,15 @@ "Posta zanore" "%s sekonda" "%s min. e %s sek." - "posta zanore" - "postat zanore" - "Po" - "Jo" + "Anulo modalitetin e veprimeve në grup" + "Fshi" + "Anulo" "Të fshihen %1$s të zgjedhura?" + "%1$s të zgjedhura" + + ""Të fshihen këto posta zanore? "" + ""Të fshihet kjo postë zanore? "" + @string/call_log_header_today "%1$s%2$s" "%1$02d:%2$02d" @@ -116,7 +125,6 @@ "MEID" "Po ngarkon nga karta SIM…" "Kontaktet e kartës SIM" - "Nuk mund të përdoret asnjë aplikacion për kontaktet" "Kërkimi me zë nuk mundësohet" "Telefonata nuk mund të bëhet sepse aplikacioni \"Telefoni\" është i çaktivizuar." "Kërko për kontakte" @@ -145,10 +153,9 @@ "%s telefonata të reja të humbura" "Askush nuk është ende në thirrjen tënde të shpejtuar" "Shto një të preferuar" - "Nuk ke ende kontakte" - "Shto një kontakt" "Prek imazhin për të parë të gjithë numrat ose mbaje të shtypur për ta pozicionuar përsëri" "Hiq" + "Zgjidh të gjitha" "Telefonatë me video" "Dërgo një mesazh" "Detajet e telefonatës" @@ -213,11 +220,9 @@ "Numrat e bllokuar" "%1$s është i bllokuar tashmë." "Llogaritë e telefonatave" - "Aktivizo" "Cakto lejet" "Për të aktivizuar thirrjen e shpejtuar, aktivizo lejen e Kontakteve." "Për të parë evidencën e telefonatave, aktivizo lejen e Telefonit." - "Për të parë kontaktet, aktivizo lejen e Kontakteve." "Për të pasur qasje në postën zanore, aktivizo lejen e Telefonit." "Për të kërkuar kontaktet, aktivizo lejet e Kontakteve" "Për të kryer një telefonatë, aktivizo lejen e Telefonit." diff --git a/java/com/android/dialer/app/res/values-sr/strings.xml b/java/com/android/dialer/app/res/values-sr/strings.xml index 0def958d49828d411775329ef8726f6172c8deb9..6f85c0ba8a5a3c19a10c36a9af4a4ac3a6b20b4c 100644 --- a/java/com/android/dialer/app/res/values-sr/strings.xml +++ b/java/com/android/dialer/app/res/values-sr/strings.xml @@ -81,11 +81,16 @@ "Додај чекање" "Подешавања" "Симулатор" + "Направите пречицу за нови UI" "Сви контакти" "Употребите бројчаник за тонско бирање" "Врати се на позив који је у току" "Додај позив" "Долазни позиви" + "Улазите у режим групних радњи" + "Изашли сте из режима групних радњи" + "Изабрано је %1$s" + "Опозван је избор %1$s" "Пуштање говорне поште" "Прикажи контакт %1$s" "Позови %1$s" @@ -100,11 +105,16 @@ "Говорна пошта" "%s сек" "%s мин %s сек" - "говорну поруку" - "говорне поруке" - "Да" - "Не" + "Откажите режим групних радњи" + "Избриши" + "Откажи" "Желите ли да избришете изабрану(е) %1$s?" + "Изабраних: %1$s" + + ""Желите ли да избришете ове говорне поруке? "" + ""Желите ли да избришете ове говорне поруке? "" + ""Желите ли да избришете ове говорне поруке? "" + @string/call_log_header_today "%1$s у %2$s" "%1$02d:%2$02d" @@ -117,7 +127,6 @@ "MEID" "Учитава се са SIM картице…" "Контакти на SIM картици" - "Нема доступне апликације за контакте" "Гласовна претрага није доступна" "Није могуће упутити телефонски позив јер је апликација Телефон онемогућена." "Претражи контакте" @@ -146,10 +155,9 @@ "Нових пропуштених позива: %s" "Немате ниједан контакт на брзом бирању" "Додај омиљен контакт" - "Још увек немате ниједан контакт" - "Додај контакт" "Додирните слику да бисте видели све бројеве или додирните и задржите да бисте им променили распоред" "Уклони" + "Изабери све" "Видео позив" "Пошаљи поруку" "Детаљи позива" @@ -215,11 +223,9 @@ "Блокирани бројеви" "%1$s је већ блокиран." "Налози за позивање" - "Укључи" "Подеси дозволе" "Да бисте омогућили брзо бирање, укључите дозволу за Контакте." "Да бисте видели евиденцију позива, укључите дозволу за Телефон." - "Да бисте видели контакте, укључите дозволу за Контакте." "Да бисте приступили говорној пошти, укључите дозволу за Телефон." "Да бисте претражили контакте, укључите дозволе за Контакте." "Да бисте упутили позив, укључите дозволу за Телефон." diff --git a/java/com/android/dialer/app/res/values-sv/strings.xml b/java/com/android/dialer/app/res/values-sv/strings.xml index 75aa731f9b1d38ce3408bf65fcf1fa99fbb240de..e8446cab1cf2034fd37c41dcd076b42d70ec5184 100644 --- a/java/com/android/dialer/app/res/values-sv/strings.xml +++ b/java/com/android/dialer/app/res/values-sv/strings.xml @@ -80,11 +80,16 @@ "Lägg till väntetid" "Inställningar" "Simulator" + "Skapa genväg till anv.gränssn." "Alla kontakter" "Använd tonvalstelefon" "Återvänd till pågående samtal" "Lägg t. samt." "Inkommande samtal" + "Öppnar läget för massåtgärd" + "Stängde läget för massåtgärd" + "Markerade %1$s" + "Avmarkerade %1$s" "Spela upp röstmeddelande" "Visa kontakten %1$s" "Ring %1$s" @@ -99,11 +104,15 @@ "Röstbrevlåda" "%s sekund" "%s min %s sek" - "röstbrevlåda" - "röstmeddelanden" - "Ja" - "Nej" + "Avbryt läget för massåtgärd" + "Radera" + "Avbryt" "Vill du radera markerade %1$s?" + "%1$s har markerats" + + ""Vill du ta bort dessa röstmeddelanden? "" + ""Vill du ta bort det här röstmeddelandet? "" + @string/call_log_header_today "%1$s kl. %2$s" "%1$02d:%2$02d" @@ -116,7 +125,6 @@ "MEID" "Läser in från SIM-kort…" "Kontakter från SIM-kort" - "Det finns inga appar för kontakter" "Röstsökning är inte tillgänglig" "Det går inte att ringa eftersom appen Telefon har inaktiverats." "Sök efter kontakter" @@ -145,10 +153,9 @@ "%s nya missade samtal" "Du har ingen kontakt som snabbval ännu" "Lägg till en favorit" - "Du har inga kontakter ännu" - "Lägg till en kontakt" "Tryck på bilden för att visa alla nummer eller tryck länge för att ändra ordningen" "Ta bort" + "Markera alla" "Videosamtal" "Skicka ett meddelande" "Samtalsinfo" @@ -213,11 +220,9 @@ "Blockerade nummer" "%1$s är redan blockerat." "Konton för samtal" - "Aktivera" "Ange behörigheter" "Du måste aktivera behörigheten Kontakter för att kunna använda snabbuppringning." "Du måste aktivera behörigheten Telefon för att kunna visa samtalsloggen." - "Du måste aktivera behörigheten Kontakter för att kunna visa kontakterna." "Du måste aktivera behörigheten Telefon för att kunna komma åt röstmeddelanden." "Aktivera behörigheter för Kontakter om du vill söka bland kontakterna." "Du måste aktivera behörigheten Telefon för att kunna ringa." diff --git a/java/com/android/dialer/app/res/values-sw/strings.xml b/java/com/android/dialer/app/res/values-sw/strings.xml index d3b8392d47bc4bc98b1fcda89b1a0bfe3a358903..142aaf0de23131a68c36d9faef55ec6723d5e630 100644 --- a/java/com/android/dialer/app/res/values-sw/strings.xml +++ b/java/com/android/dialer/app/res/values-sw/strings.xml @@ -80,11 +80,16 @@ "Ongeza kusubiri" "Mipangilio" "Kielelezo" + "Unda Mkato Mpya wa Kiolesura" "Anwani zote" "Tumia kibao cha kuchapa cha sauti na kugusa" "Rudi kwa simu inayoendelea" "Ongeza simu" "Simu zinazoingia" + "Unaingia katika hali ya kutekeleza vitendo vingi" + "Umeondoka katika hali ya kutekeleza vitendo vingi" + "Umeteua %1$s" + "Umebatilisha uteuzi wa %1$s" "Sikiliza ujumbe wa sauti" "Angalia anwani %1$s" "Pigia %1$s" @@ -99,11 +104,15 @@ "Ujumbe wa sauti" "Sekunde %s" "Dak %s sek %s" - "ujumbe wa sauti" - "ujumbe wa sauti" - "Ndiyo" - "Hapana" + "Ghairi hali ya kutekeleza vitendo vingi" + "Futa" + "Ghairi" "Je, ungependa kufuta %1$s uliochagua?" + "%1$s zimechaguliwa" + + ""Je, unataka kufuta kila ujumbe wa sauti ulioonyeshwa? "" + ""Je, unataka kufuta ujumbe huu wa sauti? "" + @string/call_log_header_today "%1$s saa %2$s" "%1$02d:%2$02d" @@ -116,7 +125,6 @@ "MEID" "Inapakia kutoka SIM kadi..." "Anwani za SIM kadi" - "Hakuna programu za mawasiliano zinazopatikana" "Kutafuta kwa kutamka hakupatikani" "Haiwezi kupiga simu kwa sababu programu ya Simu imezimwa." "Tafuta anwani" @@ -145,10 +153,9 @@ "Simu %s za karibuni ambazo hazikujibiwa" "Hakuna mtu aliye katika orodha yako ya watu unaowasiliana nao zaidi" "Ongeza anwani unazopenda zaidi" - "Bado huna anwani zozote" - "Ongeza anwani" "Gusa picha ili uone nambari zote ama uguse na kushikilia ili upange upya" "Ondoa" + "Chagua zote" "Hangout ya Video" "Tuma SMS" "Maelezo ya simu" @@ -213,11 +220,9 @@ "Nambari zilizozuiwa" "%1$s tayari imezuiwa." "Akaunti za simu" - "Washa" "Weka ruhusa" "Ili kuwasha kipengele cha unaowasiliana nao zaidi, washa ruhusa ya Anwani." "Ili uone rekodi yako ya nambari za simu, washa ruhusa ya Simu." - "Ili uone anwani zako, washa ruhusa ya Anwani." "Ili ufikie ujumbe wako wa sauti, washa ruhusa ya Simu." "Ili utafute anwani zako, washa ruhusa za Anwani." "Ili upige simu, washa ruhusa ya Simu." diff --git a/java/com/android/dialer/app/res/values-ta/strings.xml b/java/com/android/dialer/app/res/values-ta/strings.xml index afb852b6d11d426b336b78b2bbadd219438d7ccc..e270a3ceee72617ac04d61dc12f55724c94b27e2 100644 --- a/java/com/android/dialer/app/res/values-ta/strings.xml +++ b/java/com/android/dialer/app/res/values-ta/strings.xml @@ -80,11 +80,16 @@ "காத்திருப்பைச் சேர்" "அமைப்பு" "சிமுலேட்டர்" + "புதிய UI குறுக்குவழியை உருவாக்கு" "எல்லா தொடர்புகளும்" "டச் டோன் விசைப்பலகையைப் பயன்படுத்தவும்" "செயலிலுள்ள அழைப்பிற்குத் திரும்பு" "அழைப்பைச் சேர்" "உள்வரும் அழைப்புகள்" + "மொத்தச் செயல் பயன்முறையில் நுழைகிறீர்கள்" + "மொத்தச் செயல் பயன்முறையிலிருந்து வெளியேறிவிட்டீர்கள்" + "தேர்ந்தெடுத்த %1$s" + "தேர்வுநீக்கிய %1$s" "குரலஞ்சலை இயக்கு" "%1$s தொடர்பைக் காட்டு" "%1$s ஐ அழை" @@ -99,11 +104,15 @@ "குரலஞ்சல்" "%s வி" "%s நிமிடம் %s வினாடி" - "குரலஞ்சல்" - "குரலஞ்சல்கள்" - "ஆம்" - "வேண்டாம்" + "தொகுப்புச் செயல்கள் பயன்முறையை ரத்துசெய்யும்" + "நீக்கு" + "ரத்துசெய்" "தேர்ந்தெடுத்த %1$sஐ நீக்கவா?" + "%1$s தேர்ந்தெடுக்கப்பட்டன" + + ""இந்தக் குரலஞ்சல்களை நீக்கவா? "" + ""இந்தக் குரலஞ்சலை நீக்கவா? "" + @string/call_log_header_today "%1$s அன்று %2$s மணிக்கு" "%1$02d:%2$02d" @@ -116,7 +125,6 @@ "MEID" "சிம் கார்டிலிருந்து ஏற்றுகிறது…" "சிம் கார்டின் தொடர்புகள்" - "தொடர்புகள் பயன்பாடு எதுவுமில்லை" "குரல் தேடல் இல்லை" "Phone பயன்பாடு முடக்கப்பட்டுள்ளதால், ஃபோன் அழைப்பைச் செய்ய முடியாது." "தொடர்புகளைத் தேடு" @@ -145,10 +153,9 @@ "%s புதிய தவறிய அழைப்புகள்" "இன்னும் விரைவு டயலில் யாரையும் சேர்க்கவில்லை" "முக்கியமானவர்களைச் சேர்" - "இதுவரை எந்தத் தொடர்புகளும் இல்லை" - "ஒரு தொடர்பைச் சேர்க்கவும்" "எல்லா எண்களையும் பார்க்க, படத்தைத் தொடவும் அல்லது மறுவரிசைப்படுத்த, தொட்டுப் பிடித்திருக்கவும்" "அகற்று" + "அனைத்தையும் தேர்ந்தெடு" "வீடியோ அழைப்பு" "செய்தி அனுப்பவும்" "அழைப்பு விவரங்கள்" @@ -213,11 +220,9 @@ "தடுக்கப்பட்ட எண்கள்" "%1$s ஏற்கனவே தடுக்கப்பட்டுள்ளது." "அழைப்பு கணக்குகள்" - "இயக்கு" "அனுமதிகளை அமை" "விரைவு டயலை இயக்க, தொடர்புகள் அனுமதியை இயக்கவும்." "அழைப்புப் பதிவைப் பார்க்க, ஃபோன் அனுமதியை இயக்கவும்." - "தொடர்புகளைப் பார்க்க, தொடர்புகள் அனுமதியை இயக்கவும்." "குரலஞ்சலை அணுக, ஃபோன் அனுமதியை இயக்கவும்." "தொடர்புகளைத் தேட, தொடர்புகள் அனுமதிகளை இயக்கவும்." "அழைக்க, ஃபோன் அனுமதியை இயக்கவும்." diff --git a/java/com/android/dialer/app/res/values-te/strings.xml b/java/com/android/dialer/app/res/values-te/strings.xml index ffc046f691b6b336549b2911a114b922a6b7cb48..8d2c66784559d44fd805be03a77e48b4cba68ed4 100644 --- a/java/com/android/dialer/app/res/values-te/strings.xml +++ b/java/com/android/dialer/app/res/values-te/strings.xml @@ -80,11 +80,16 @@ "నిరీక్షణ సమయాన్ని జోడించు" "సెట్టింగ్‌లు" "సిములేటర్" + "కొత్త UI సత్వరమార్గం సృష్టించు" "అన్ని పరిచయాలు" "టచ్ టోన్ కీప్యాడ్‌ను ఉపయోగించండి" "ప్రోగ్రెస్‌లో ఉన్న కాల్‌కు వెళ్లు" "కాల్‌ను జోడించు" "ఇన్‌కమింగ్ కాల్‌లు" + "బల్క్ చర్య మోడ్‌లోకి ప్రవేశిస్తున్నారు" + "బల్క్ చర్య మోడ్ నుండి నిష్క్రమించారు" + "%1$s ఎంచుకోబడింది" + "%1$s ఎంపిక తీసివేయబడింది" "వాయిస్ మెయిల్ ప్లే చేయండి" "%1$s పరిచయాన్ని వీక్షించండి" "%1$sకు కాల్ చేయి" @@ -99,11 +104,15 @@ "వాయిస్ మెయిల్" "%s సెక" "%s నిమి %s సెక" - "వాయిస్ మెయిల్" - "వాయిస్ మెయిల్‌లు" - "అవును" - "వద్దు" + "సమూహ చర్యల మోడ్‌ను రద్దు చేస్తుంది" + "తొలగించు" + "రద్దు చేయి" "ఎంచుకున్న %1$sను తొలగించాలా?" + "%1$s ఎంచుకోబడ్డాయి" + + ""ఈ వాయిస్ మెయిల్‌లను తొలగించాలా? "" + ""ఈ వాయిస్ మెయిల్‌ను తొలగించాలా? "" + @string/call_log_header_today "%1$s %2$sకి" "%1$02d:%2$02d" @@ -116,7 +125,6 @@ "MEID" "సిమ్ కార్డు నుండి లోడ్ చేస్తోంది…" "సిమ్ కార్డు పరిచయాలు" - "పరిచయాల అనువర్తనం ఏదీ అందుబాటులో లేదు" "వాయిస్ శోధన అందుబాటులో లేదు" "ఫోన్ అనువర్తనం నిలిపివేయబడినందున ఫోన్ కాల్ చేయలేరు." "పరిచయాలను శోధించు" @@ -145,10 +153,9 @@ "%s కొత్త సమాధానం ఇవ్వని కాల్‌లు" "మీ స్పీడ్ డయల్‌లో ఇంకా ఎవరూ లేరు" "ఇష్టమైన వారిని జోడించండి" - "మీకు ఇప్పటికీ పరిచయాలేవీ లేవు" - "పరిచయాన్ని జోడించండి" "అన్ని నంబర్‌లను చూడటానికి చిత్రాన్ని తాకండి లేదా క్రమం మార్చడానికి తాకి, కాసేపు అలాగే ఉంచండి" "తీసివేయి" + "అన్నీ ఎంచుకోండి" "వీడియో కాల్" "సందేశాన్ని పంపు" "కాల్ వివరాలు" @@ -213,11 +220,9 @@ "బ్లాక్ చేయబడిన నంబర్‌లు" "%1$s ఇప్పటికే బ్లాక్ చేయబడింది." "కాల్ చేసే ఖాతాలు" - "ఆన్ చేయి" "అనుమతులను సెట్ చేయి" "స్పీడ్ డయల్‌ను ప్రారంభించడానికి, పరిచయాల అనుమతిని ఆన్ చేయండి." "మీ కాల్ లాగ్‌ను చూడటానికి, ఫోన్ అనుమతిని ఆన్ చేయండి." - "మీ పరిచయాలను చూడటానికి, పరిచయాల అనుమతిని ఆన్ చేయండి." "మీ వాయిస్ మెయిల్‌ను ప్రాప్యత చేయడానికి, ఫోన్ అనుమతిని ఆన్ చేయండి." "మీ పరిచయాలను శోధించడానికి, పరిచయాల అనుమతులను ఆన్ చేయండి." "కాల్ చేయడానికి, ఫోన్ అనుమతిని ఆన్ చేయండి." diff --git a/java/com/android/dialer/app/res/values-th/strings.xml b/java/com/android/dialer/app/res/values-th/strings.xml index 13916a51d6692d3dd680eed7cf30341ac0c14e66..76a66e20e95c78e19b113dbbda7a40f1f1dd8ec9 100644 --- a/java/com/android/dialer/app/res/values-th/strings.xml +++ b/java/com/android/dialer/app/res/values-th/strings.xml @@ -80,11 +80,16 @@ "เพิ่มการรอ" "การตั้งค่า" "เครื่องมือจำลอง" + "สร้างทางลัด UI ใหม่" "รายชื่อติดต่อทั้งหมด" "ใช้ปุ่มกดสัญญาณเสียง" "กลับไปคุยสายต่อ" "เพิ่มการโทร" "สายโทรเข้า" + "กำลังเข้าสู่โหมดการดำเนินการแบบกลุ่ม" + "ออกจากโหมดการทำงานแบบกลุ่มแล้ว" + "เลือก %1$s แล้ว" + "ยกเลิกการเลือก %1$s แล้ว" "เล่นข้อความเสียง" "ดูรายชื่อติดต่อ %1$s" "โทรหา %1$s" @@ -99,11 +104,15 @@ "ข้อความเสียง" "%s วินาที" "%s นาที %s วินาที" - "ข้อความเสียง" - "ข้อความเสียง" - "ใช่" - "ไม่" + "ยกเลิกโหมดการทำงานแบบกลุ่ม" + "ลบ" + "ยกเลิก" "ลบ%1$sที่เลือกหรือไม่" + "เลือกไว้ %1$s รายการ" + + ""ลบข้อความเสียงเหล่านี้ไหม "" + ""ลบข้อความเสียงนี้ไหม "" + @string/call_log_header_today "วันที่ %1$s เวลา %2$s" "%1$02d:%2$02d" @@ -116,7 +125,6 @@ "MEID" "กำลังโหลดจากซิมการ์ด…" "รายชื่อบนซิมการ์ด" - "ไม่มีแอปรายชื่อติดต่อที่พร้อมใช้งาน" "การค้นหาด้วยเสียงไม่พร้อมใช้งาน" "ไม่สามารถโทรศัพท์ได้เนื่องจากแอปพลิเคชันโทรศัพท์ถูกปิดใช้งาน" "ค้นหารายชื่อติดต่อ" @@ -145,10 +153,9 @@ "สายที่ไม่ได้รับใหม่ %s สาย" "ยังไม่ได้กำหนดผู้ใดในการโทรด่วน" "เพิ่มรายการโปรด" - "คุณยังไม่มีรายชื่อติดต่อ" - "เพิ่มรายชื่อติดต่อ" "แตะรูปภาพเพื่อดูหมายเลขทั้งหมด หรือแตะค้างไว้เพื่อจัดเรียงใหม่" "ลบ" + "เลือกทั้งหมด" "แฮงเอาท์วิดีโอ" "ส่งข้อความ" "รายละเอียดการโทร" @@ -201,7 +208,7 @@ "ข้อความเสียง" "เลือกซิมสำหรับการตั้งค่าข้อความเสียง" "การบล็อกสายเรียกเข้าปิดชั่วคราว" - "ระบบปิดใช้การบล็อกสายเรียกเข้าเนื่องจากคุณติดต่อบริการฉุกเฉินจากโทรศัพท์เครื่องนี้ภายใน 48 ชั่วโมงที่ผ่านมา ระบบจะเปิดใช้คุณลักษณะนี้อีกครั้งโดยอัตโนมัติเมื่อครบ 48 ชั่วโมง" + "ระบบปิดใช้การบล็อกสายเรียกเข้าเนื่องจากคุณติดต่อบริการฉุกเฉินจากโทรศัพท์เครื่องนี้ภายใน 48 ชั่วโมงที่ผ่านมา ระบบจะเปิดใช้ฟีเจอร์นี้อีกครั้งโดยอัตโนมัติเมื่อครบ 48 ชั่วโมง" "นำเข้าหมายเลข" "ก่อนหน้านี้คุณได้ทำเครื่องหมายว่าให้ส่งผู้โทรบางคนไปยังข้อความเสียงโดยอัตโนมัติผ่านแอปอื่นๆ" "ดูหมายเลข" @@ -213,11 +220,9 @@ "หมายเลขที่ถูกบล็อก" "%1$s ถูกบล็อกอยู่แล้ว" "บัญชีการโทร" - "เปิด" "ตั้งค่าสิทธิ์" "หากต้องการเปิดใช้การโทรด่วน ให้เปิดสิทธิ์เข้าถึงรายชื่อติดต่อ" "หากต้องการดูประวัติการโทร ให้เปิดสิทธิ์เข้าถึงโทรศัพท์" - "หากต้องการดูรายชื่อติดต่อ ให้เปิดสิทธิ์เข้าถึงรายชื่อติดต่อ" "หากต้องการเข้าถึงข้อความเสียง ให้เปิดสิทธิ์เข้าถึงโทรศัพท์" "หากต้องการค้นหารายชื่อติดต่อ ให้เปิดสิทธิ์เข้าถึงรายชื่อติดต่อ" "หากต้องการโทรออก ให้เปิดสิทธิ์เข้าถึงโทรศัพท์" diff --git a/java/com/android/dialer/app/res/values-tl/strings.xml b/java/com/android/dialer/app/res/values-tl/strings.xml index cc44cb5f250d2063d1cce6d43d74d065fa2cc6c0..51e7a665940e7d6cc3352671f4d8bda494b3248d 100644 --- a/java/com/android/dialer/app/res/values-tl/strings.xml +++ b/java/com/android/dialer/app/res/values-tl/strings.xml @@ -80,11 +80,16 @@ "Magdagdag ng paghihintay" "Mga Setting" "Simulator" + "Gawa ng Shortcut ng Bagong UI" "Lahat ng mga contact" "Gumamit ng touch tone na keypad" "Bumalik sa kasalukuyang tawag" "Mag-add: tawag" "Mga paparating na tawag" + "Pumapasok sa bulk action mode" + "Umalis sa bulk action mode" + "Napili %1$s" + "Inalis sa pagkakapili %1$s" "I-play ang voicemail" "Tingnan ang contact na si %1$s" "Tawagan si %1$s" @@ -99,11 +104,15 @@ "Voicemail" "%s sec" "%s min %s sec" - "voicemail" - "mga voicemail" - "Oo" - "Hindi" + "Kanselahin ang batch actions mode" + "I-delete" + "Kanselahin" "I-delete ang napiling %1$s?" + "%1$s ang napili" + + ""I-delete ang mga voicemail na ito? "" + ""I-delete ang mga voicemail na ito? "" + @string/call_log_header_today "%1$s ng %2$s" "%1$02d:%2$02d" @@ -116,7 +125,6 @@ "MEID" "Naglo-load mula sa SIM card…" "Mga contact sa SIM card" - "Walang available na app ng mga contact" "Hindi available ang paghahanap gamit ang boses" "Hindi makagawa ng tawag sa telepono dahil naka-disable ang application na Telepono." "Maghanap ng mga contact" @@ -145,10 +153,9 @@ "%s (na) bagong hindi nasagot na tawag" "Wala pang tao sa iyong speed dial" "Magdagdag ng paborito" - "Wala ka pang sinumang mga contact" - "Magdagdag ng contact" "Pindutin ang larawan upang makita ang lahat ng numero o pindutin nang matagal upang ayusing muli" "Alisin" + "Piliin lahat" "Mag-video call" "Magpadala ng mensahe" "Mga detalye ng tawag" @@ -213,11 +220,9 @@ "Mga naka-block na numero" "Naka-block na ang %1$s" "Account sa pagtawag" - "I-on" "Magtakda ng mga pahintulot" "Upang i-enable ang speed dial, i-on ang pahintulot ng Mga Contact." "Upang makita ang iyong log ng tawag, i-on ang pahintulot ng Telepono." - "Upang makita ang iyong mga contact, i-on ang pahintulot ng Mga Contact." "Upang ma-access ang iyong voicemail, i-on ang pahintulot ng Telepono." "Upang hanapin ang iyong mga contact, i-on ang mga pahintulot sa Mga Contact." "Upang tumawag, i-on ang pahintulot ng Telepono." diff --git a/java/com/android/dialer/app/res/values-tr/strings.xml b/java/com/android/dialer/app/res/values-tr/strings.xml index 2f6f704f8923985686f3f8c3df38da2ce3f9d16c..1ff0128d4b50c8516a03b4c86dd38a8166e82e4e 100644 --- a/java/com/android/dialer/app/res/values-tr/strings.xml +++ b/java/com/android/dialer/app/res/values-tr/strings.xml @@ -80,11 +80,16 @@ "Bekleme ekle" "Ayarlar" "Simülatör" + "Kull. Arayüzü Kısayolu Oluştur" "Tüm kişiler" "Telefon tuş takımını kullan" "Çağrıya dön" "Çağrı ekle" "Gelen çağrılar" + "Toplu işlem moduna giriliyor" + "Toplu işlem modundan çıkıldı" + "Seçildi: %1$s" + "Seçimi kaldırıldı: %1$s" "Sesli mesajı oynat" "Kişiyi görüntüle: %1$s" "Ara: %1$s" @@ -99,11 +104,15 @@ "Sesli Mesaj" "%s sn." "%s dk. %s sn." - "sesli mesaj" - "sesli mesajlar" - "Evet" - "Hayır" + "Toplu işlemler modu iptal edilir" + "Sil" + "İptal" "Seçili %1$s silinsin mi?" + "%1$s öğe seçildi" + + ""Bu sesli mesajlar silinsin mi? "" + ""Bu sesli mesaj silinsin mi? "" + @string/call_log_header_today "%1$s, %2$s" "%1$02d:%2$02d" @@ -116,7 +125,6 @@ "MEID" "SIM karttan yükleniyor..." "SIM kart kişileri" - "Kullanılabilir rehber uygulaması yok" "Sesli arama kullanılamaz" "Telefon uygulaması devre dışı bırakıldığından telefon edilemiyor." "Kişilerde ara" @@ -145,10 +153,9 @@ "%s yeni cevapsız çağrı" "Hızlı arama listenizde henüz kimse yok" "Favori ekle" - "Henüz kayıtlı kişi yok" - "Kişi ekle" "Tüm numaraları görmek için resme dokunun veya yeniden sıralamak için dokunup basılı tutun" "Kaldır" + "Tümünü seç" "Video görüşmesi" "İleti gönder" "Çağrı ayrıntıları" @@ -213,11 +220,9 @@ "Engellenen numaralar" "%1$s numaralı telefon zaten engellendi." "Çağrı hesapları" - "Aç" "İzinleri ayarla" "Hızlı aramayı etkinleştirmek için Kişiler iznini açın." "Çağrı günlüğünüzü görmek için Telefon iznini açın." - "Kişilerinizi görmek için Kişiler iznini açın." "Sesli mesajınıza erişmek için Telefon iznini açın." "Kişilerinizde arama yapmak için Kişiler izinlerini açın." "Telefon etmek için Telefon iznini açın." diff --git a/java/com/android/dialer/app/res/values-uk/strings.xml b/java/com/android/dialer/app/res/values-uk/strings.xml index 9a790125b91ddbd34d058448434ce8c885410f05..b92970daa3677491cc41e84d02726fa96153166f 100644 --- a/java/com/android/dialer/app/res/values-uk/strings.xml +++ b/java/com/android/dialer/app/res/values-uk/strings.xml @@ -82,11 +82,16 @@ "Додати паузу" "Налаштування" "Симулятор" + "Створити ярлик для нової дії" "Усі контакти" "Використовувати тональний набір" "Повернутися до поточного виклику" "Додати виклик" "Вхідні виклики" + "Перехід у режим масових дій" + "Ви вийшли з режиму масових дій" + "Вибрано користувача %1$s" + "Скасовано вибір користувача %1$s" "Відтворити голосову пошту" "Переглянути контакт %1$s" "Набрати %1$s" @@ -101,11 +106,17 @@ "Голосова пошта" "%s с" "%s хв %s с" - "голосова пошта" - "голосова пошта" - "Так" - "Ні" + "Скасувати режим масових дій" + "Видалити" + "Скасувати" "Видалити вибране (%1$s)?" + "Вибрано %1$s" + + ""Видалити ці повідомлення голосової пошти? "" + ""Видалити ці повідомлення голосової пошти? "" + ""Видалити ці повідомлення голосової пошти? "" + ""Видалити ці повідомлення голосової пошти? "" + @string/call_log_header_today "%1$s о %2$s" "%1$02d:%2$02d" @@ -118,7 +129,6 @@ "MEID" "Завантаж. із SIM-карти…" "Контакти SIM-карти" - "Немає додатка з контактами" "Голосовий пошук недоступний" "Не вдається здійснити дзвінок, оскільки додаток Телефон вимкнено." "Пошук контактів" @@ -147,10 +157,9 @@ "Нових пропущених дзвінків: %s" "Немає номерів для швидкого набору" "Додати номер" - "Ще немає контактів" - "Додати контакт" "Торкніться зображення, щоб побачити всі номери, або натисніть і утримуйте, щоб змінити порядок." "Видалити" + "Вибрати все" "Відеодзвінок" "Надіслати повідомлення" "Деталі виклику" @@ -217,11 +226,9 @@ "Заблоковані номери" "Номер %1$s уже заблоковано." "Обл. записи для дзвінків" - "Увімкнути" "Налаштувати дозволи" "Щоб активувати швидкий набір, увімкніть дозвіл \"Контакти\"." "Щоб переглянути журнал викликів, увімкніть дозвіл \"Телефон\"." - "Щоб переглянути контакти, увімкніть дозвіл \"Контакти\"." "Щоб користуватися голосовою поштою, увімкніть дозвіл \"Телефон\"." "Щоб шукати контакти, увімкніть дозвіл \"Контакти\"." "Щоб зателефонувати, увімкніть дозвіл \"Телефон\"." diff --git a/java/com/android/dialer/app/res/values-ur/strings.xml b/java/com/android/dialer/app/res/values-ur/strings.xml index 25198711bf3f21f9193fef0b34a9842d1b36c8dc..cb2eb9e333692e025b229a3d185f3244e8bce23c 100644 --- a/java/com/android/dialer/app/res/values-ur/strings.xml +++ b/java/com/android/dialer/app/res/values-ur/strings.xml @@ -80,11 +80,16 @@ "انتظار شامل کریں" "ترتیبات" "Simulator" + "‏نیا UI شارٹ کٹ تخلیق کریں" "سبھی رابطے" "ٹچ ٹون کی پیڈ کا استعمال کریں" "جاری کال پر واپس لوٹیں" "کال شامل کریں" "آنے والی کالیں" + "بلک کاروائی موڈ میں داخل ہو رہا ہے" + "بلک کاروائی موڈ چھوڑ دیا" + "منتخب کردہ %1$s" + "غیر منتخب کردہ %1$s" "صوتی میل چلائیں" "رابطہ %1$s دیکھیں" "%1$s کو کال کریں" @@ -99,11 +104,15 @@ "صوتی میل" "%s سیکنڈ" "%s منٹ %s سیکنڈ" - "صوتی میل" - "صوتی میلز" - "ہاں" - "نہیں" + "بیچ کاروائی موڈ منسوخ کریں" + "حذف کریں" + "منسوخ کریں" "منتخب کردہ %1$s حذف کریں؟" + "%1$s منتخب کردہ" + + ""ان صوتی میلز کو حذف کریں؟ "" + ""اس صوتی میل کو حذف کریں؟ "" + @string/call_log_header_today "%1$s بوقت %2$s" "%1$02d:%2$02d" @@ -116,7 +125,6 @@ "MEID" "‏SIM کارڈ سے لوڈ ہو رہا ہے…" "‏SIM کارڈ کے رابطے" - "رابطوں کی کوئی ایپ دستیاب نہیں ہے" "صوتی تلاش دستیاب نہیں ہے" "فون کال نہیں کی جا سکتی ہے کیونکہ فون ایپلیکیشن کو غیر فعال کر دیا گیا ہے۔" "رابطے تلاش کریں" @@ -145,10 +153,9 @@ "%s نئی چھوٹی ہوئی کالیں" "آپ کے اسپیڈ ڈائل پر ابھی تک کوئی نہیں ہے" "ایک پسندیدہ شامل کریں" - "آپ کے پاس ابھی تک کوئی رابطے نہیں ہیں" - "ایک رابطہ شامل کریں" "سبھی نمبرز دیکھنے کیلئے تصویر ٹچ کریں یا دوبارہ ترتیب دینے کیلئے ٹچ کریں اور پکڑے رہیں" "ہٹائیں" + "سبھی کو منتخب کریں" "ویڈیو کال" "پیغام بھیجیں" "کال کی تفصیلات" @@ -213,11 +220,9 @@ "مسدود کردہ نمبرز" "%1$s پہلے ہی مسدود ہے۔" "کالنگ اکاؤنٹس" - "آن کریں" "اجازتیں طے کریں" "اسپیڈ ڈائل کو فعال کرنے کیلئے رابطوں کی اجازت آن کریں۔" "اپنا کال لاگ دیکھنے کیلئے فون کی اجازت آن کریں۔" - "اپنے رابطے دیکھنے کیلئے رابطوں کی اجازت آن کریں۔" "اپنی صوتی میل تک رسائی کیلئے فون کی اجازت آن کریں۔" "اپنے رابطوں کو تلاش کرنے کیلئے رابطوں کی اجازتیں آن کریں۔" "کال کرنے کیلئے فون کی اجازت آن کریں۔" diff --git a/java/com/android/dialer/app/res/values-uz/strings.xml b/java/com/android/dialer/app/res/values-uz/strings.xml index 705cae7654a512b5fade0d85f16f0e1aa16cc612..c7d08f3bf07fca0fe8d64a496b9c2f20d634f2d1 100644 --- a/java/com/android/dialer/app/res/values-uz/strings.xml +++ b/java/com/android/dialer/app/res/values-uz/strings.xml @@ -80,11 +80,16 @@ "Kutishni qo‘shish" "Sozlamalar" "Simulyator" + "Yangi interfeys uchun yorliq" "Barcha kontaktlar" "Tovushli raqam tergich" "Amaldagi chaqiruvga qaytish" "Chaqiruv qo‘shish" "Kiruvchi qo‘ng‘iroqlar" + "Yoppasiga bajariladigan amallar rejimiga o‘tilmoqda" + "Yoppasiga bajariladigan amallar rejimidan chiqib ketildi" + "%1$s tanlandi" + "%1$s tanlovi bekor qilindi" "Ovozli xabarni eshitish" "%1$s kontaktini ko‘rish" "Qo‘ng‘iroq: %1$s" @@ -99,11 +104,15 @@ "Ovozli pochta" "%s soniya" "%s daq %s son" - "ovozli xabar" - "ovozli xabarlar" - "Ha" - "Yo‘q" + "Yoppasiga bajariladigan amallar rejimini bekor qilish" + "O‘chirish" + "Bekor qilish" "Tanlangan %1$s o‘chirib tashlansinmi?" + "Tanlandi: %1$s" + + ""Bu ovozli xabarlar o‘chirib tashlansinmi? "" + ""Bu ovozli xabar o‘chirib tashlansinmi? "" + @string/call_log_header_today "%1$s, %2$s" "%1$02d:%2$02d" @@ -116,7 +125,6 @@ "MEID" "SIM kartadan yuklanmoqda…" "SIM karta kontaktlari" - "Hech qanday kontakt ilovasi yo‘q" "Ovozli qidiruv mavjud emas" "Telefon ilovasi o‘chirib qo‘yilgani sababli telefon qo‘ng‘iroqlarini amalga oshirib bo‘lmaydi." "Kontaktlar ichidan qidirish" @@ -145,10 +153,9 @@ "%s ta javobsiz chaqiruv" "Tezkor terish uchun hech kim yo‘q" "Tezkor raqam terishni sozlang" - "Sizda hali hech qanday kontakt yo‘q" - "Yangi kontakt qo‘shing" "Barcha raqamlarni ko‘rish uchun rasm ustiga bosing yoki joyini o‘zgartirish uchun rasmni bosib turing." "O‘chirish" + "Hammasini tanlash" "Video qo‘ng‘iroq" "Xabar yuborish" "Chaqiruv tafsilotlari" @@ -213,11 +220,9 @@ "Bloklangan raqamlar" "%1$s raqami allaqachon bloklangan." "Chaqiruv uchun hisoblar" - "Yoqish" "Ruxsatnomalarni sozlash" "Tezkor raqam terish uchun “Kontaktlar” ruxsatnomasini yoqing." "Qo‘ng‘iroqlaringiz ro‘yxatini ko‘rish uchun “Telefon” ruxsatnomasini yoqing." - "Kontaktlaringizni ko‘rish uchun “Kontaktlar” ruxsatnomasini yoqing." "Ovozli pochtaga kirish uchun “Telefon” ruxsatnomasini yoqing." "Kontaktlarni qidirish uchun “Kontaktlar” ruxsatnomasini yoqing." "Qo‘ng‘iroq qilish uchun “Telefon” ruxsatnomasini yoqing." diff --git a/java/com/android/dialer/app/res/values-vi/strings.xml b/java/com/android/dialer/app/res/values-vi/strings.xml index 5a60e0ac3ca36c2bec243f13be68f434f0933eef..c79e1ed20a98adaa064cd1ad8cb96f9c09234e1f 100644 --- a/java/com/android/dialer/app/res/values-vi/strings.xml +++ b/java/com/android/dialer/app/res/values-vi/strings.xml @@ -80,11 +80,16 @@ "Thêm chờ" "Cài đặt" "Trình mô phỏng" + "Tạo phím tắt giao diện người dùng mới" "Tất cả liên hệ" "Sử dụng bàn phím số cảm ứng có âm" "Quay lại cuộc gọi đang thực hiện" "Thêm cuộc gọi" "Cuộc gọi đến" + "Truy cập chế độ tác vụ hàng loạt" + "Đã rời khỏi chế độ tác vụ hàng loạt" + "Đã chọn %1$s" + "Đã bỏ chọn %1$s" "Phát thư thoại" "Xem thông tin liên hệ của %1$s" "Gọi %1$s" @@ -99,11 +104,15 @@ "Thư thoại" "%s giây" "%s phút %s giây" - "thư thoại" - "thư thoại" - "Có" - "Không" + "Hủy chế độ tác vụ hàng loạt" + "Xóa" + "Hủy" "Xóa %1$s đã chọn?" + "Đã chọn %1$s" + + ""Xóa các thư thoại này? "" + ""Xóa thư thoại này? "" + @string/call_log_header_today "%1$s lúc %2$s" "%1$02d:%2$02d" @@ -116,7 +125,6 @@ "MEID" "Đang tải từ thẻ SIM…" "Danh bạ trên thẻ SIM" - "Không có ứng dụng danh bạ" "Không có tính năng tìm kiếm bằng giọng nói" "Không thể thực hiện cuộc gọi điện thoại vì ứng dụng Điện thoại đã bị tắt." "Tìm kiếm trong danh bạ" @@ -145,10 +153,9 @@ "%s cuộc gọi nhỡ mới" "Chưa có ai trong danh bạ quay số nhanh của bạn" "Thêm liên hệ quay số nhanh yêu thích" - "Bạn chưa có bất kỳ liên hệ nào" - "Thêm liên hệ" "Chạm vào hình ảnh để xem tất cả các số hoặc chạm và giữ để sắp xếp lại" "Xóa" + "Chọn tất cả" "Cuộc gọi điện video" "Gửi tin nhắn" "Chi tiết cuộc gọi" @@ -213,11 +220,9 @@ "Số bị chặn" "%1$s đã bị chặn." "Tài khoản gọi" - "Bật" "Đặt quyền" "Để bật quay số nhanh, bật quyền đối với Danh bạ." "Để xem nhật ký cuộc gọi của bạn, bật quyền đối với Điện thoại." - "Để xem danh bạ của bạn, bật quyền đối với Danh bạ." "Để truy cập thư thoại của bạn, bật quyền đối với Điện thoại." "Để tìm kiếm liên hệ của bạn, hãy bật quyền đối với Danh bạ." "Để thực hiện cuộc gọi, bật quyền đối với Điện thoại." diff --git a/java/com/android/dialer/app/res/values-zh-rCN/strings.xml b/java/com/android/dialer/app/res/values-zh-rCN/strings.xml index 98abc396a68868b5dd449317917a474597852bf5..3262c1a029f3457b7cec14c4124a732a0397883a 100644 --- a/java/com/android/dialer/app/res/values-zh-rCN/strings.xml +++ b/java/com/android/dialer/app/res/values-zh-rCN/strings.xml @@ -80,11 +80,16 @@ "延长等待时间" "设置" "模拟器" + "创建可在新界面中使用的快捷键" "所有联系人" "使用按键式键盘" "返回正在进行的通话" "添加通话" "来电" + "正在进入批量操作模式" + "已退出批量操作模式" + "已选择 %1$s" + "已取消选择 %1$s" "播放语音邮件" "查看联系人%1$s" "呼叫%1$s" @@ -99,11 +104,15 @@ "语音信箱" "%s 秒" "%s 分钟 %s 秒" - "语音邮件" - "语音邮件" - "是" - "否" + "取消批量操作模式" + "删除" + "取消" "要删除所选的%1$s吗?" + "已选择 %1$s 封" + + ""要删除这些语音邮件吗?"" + ""要删除这封语音邮件吗?"" + @string/call_log_header_today "%1$s%2$s" "%1$02d:%2$02d" @@ -116,7 +125,6 @@ "MEID" "正从 SIM 卡中加载..." "SIM卡联系人" - "没有可用的通讯录应用" "无法使用语音搜索" "“电话”应用已被停用,因此无法拨打电话。" "搜索联系人" @@ -145,10 +153,9 @@ "%s个新的未接电话" "尚未给任何联系人设定快速拨号" "添加常用联系人" - "您还没有任何联系人" - "添加联系人" "触摸图片可查看所有号码,触摸并按住可重新排序" "移除" + "全选" "视频通话" "发送短信" "通话详情" @@ -213,11 +220,9 @@ "已屏蔽的号码" "%1$s 已被屏蔽。" "通话帐号" - "开启" "设置权限" "要启用快速拨号功能,请开启“通讯录”权限。" "要查看您的通话记录,请开启“电话”权限。" - "要查看您的联系人,请开启“通讯录”权限。" "要使用您的语音信箱,请开启“电话”权限。" "要搜索您的联系人,请开启“通讯录”权限。" "要拨打电话,请开启“电话”权限。" diff --git a/java/com/android/dialer/app/res/values-zh-rHK/strings.xml b/java/com/android/dialer/app/res/values-zh-rHK/strings.xml index 2a96ce045dcec9ef6a5e57816be4bcfa233aed75..71e62eddccf3e47cefe5d95e49b6a667e78b2669 100644 --- a/java/com/android/dialer/app/res/values-zh-rHK/strings.xml +++ b/java/com/android/dialer/app/res/values-zh-rHK/strings.xml @@ -80,11 +80,16 @@ "新增插播功能" "設定" "模擬器" + "建立新使用者介面捷徑" "所有聯絡人" "使用觸控音頻按鍵" "返回進行中的通話" "新增通話" "來電" + "正在進入大量操作模式" + "已離開大量操作模式" + "已選取%1$s" + "已取消選取%1$s" "播放語音留言" "查看聯絡人%1$s" "打電話給%1$s" @@ -99,11 +104,15 @@ "留言" "%s 秒" "%s%s 秒" - "留言" - "留言" - "是" - "否" + "取消批量操作模式" + "刪除" + "取消" "要刪除所選的%1$s嗎?" + "已選取 %1$s 個" + + ""要刪除這些留言嗎?"" + ""要刪除此留言嗎?"" + @string/call_log_header_today "%1$s%2$s" "%1$02d:%2$02d" @@ -116,7 +125,6 @@ "MEID" "正在從 SIM 卡載入..." "SIM 卡聯絡人" - "沒有可用的聯絡人應用程式" "無法使用語音搜尋" "由於「電話」應用程式已停用,因此無法打電話。" "搜尋聯絡人" @@ -145,10 +153,9 @@ "%s 個新的未接來電" "快速撥號名單中沒有聯絡人" "新增常用聯絡人" - "暫時沒有聯絡人" - "新增聯絡人" "輕觸圖片以查看所有電話號碼,或輕觸並按住圖片以重新排序" "移除" + "全選" "視像通話" "傳送訊息" "通話詳情" @@ -213,11 +220,9 @@ "已封鎖的號碼" "已封鎖 %1$s。" "通話帳戶" - "開放權限" "設定權限" "如要啟用快速撥號功能,請開放「通訊錄」權限。" "如要查看通話記錄,請開放「手機」權限。" - "如要查看聯絡人,請開放「通訊錄」權限。" "如要存取留言信箱,請開放「手機」權限。" "如要搜尋聯絡人,請開啟「通訊錄」權限。" "如要撥打電話,請開放「手機」權限。" diff --git a/java/com/android/dialer/app/res/values-zh-rTW/strings.xml b/java/com/android/dialer/app/res/values-zh-rTW/strings.xml index 91745213390eb8a22e79956833b5499b99e6034c..9178dcf676e25e1381f9e4069531b6647360a652 100644 --- a/java/com/android/dialer/app/res/values-zh-rTW/strings.xml +++ b/java/com/android/dialer/app/res/values-zh-rTW/strings.xml @@ -80,11 +80,16 @@ "延長等待時間" "設定" "模擬工具" + "建立新版 UI 捷徑" "所有聯絡人" "使用觸控音按鍵" "返回進行中的通話" "新增通話" "來電" + "已進入大量操作模式" + "已離開大量操作模式" + "已選取:%1$s" + "已取消選取:%1$s" "播放語音留言" "查看聯絡人%1$s" "撥電話給%1$s" @@ -99,11 +104,15 @@ "語音留言" "%s 秒" "%s%s 秒" - "語音留言" - "語音留言" - "是" - "否" + "取消批次操作模式" + "刪除" + "取消" "要刪除選取的%1$s嗎?" + "已選取 %1$s 個" + + ""要刪除這些語音留言嗎?"" + ""要刪除這則語音留言嗎?"" + @string/call_log_header_today "%1$s%2$s" "%1$02d:%2$02d" @@ -116,7 +125,6 @@ "MEID" "從 SIM 卡讀取中…" "SIM 卡聯絡人" - "沒有可用的聯絡人應用程式" "無法使用語音搜尋" "「電話」應用程式已遭停用,因此無法撥打電話。" "搜尋聯絡人" @@ -145,10 +153,9 @@ "%s 通新的未接來電" "您的快速撥號功能尚未設定任何聯絡人" "新增常用聯絡人" - "您尚未加入任何聯絡人" - "新增聯絡人" "輕觸圖片即可查看所有號碼,按住則可重新排序" "移除" + "全選" "視訊通話" "傳送簡訊" "通話詳細資料" @@ -213,11 +220,9 @@ "已封鎖的號碼" "%1$s 已在封鎖清單中。" "通話帳戶" - "開啟" "設定權限" "如要啟用快速撥號,請開啟「聯絡人」存取權限。" "如要查看您的通話紀錄,請開啟「電話」存取權限。" - "如要查看您的聯絡人,請開啟「聯絡人」存取權限。" "如要存取您的語音信箱,請開啟「電話」存取權限。" "如要搜尋您的聯絡人,請開啟「聯絡人」存取權限。" "如要撥打電話,請開啟「電話」存取權限。" diff --git a/java/com/android/dialer/app/res/values-zu/strings.xml b/java/com/android/dialer/app/res/values-zu/strings.xml index 9c8a6b8e10271ed1051a00878b3546d508a3e4a3..f52f597c817af2b8cd53c82953d946fc0ac23d4b 100644 --- a/java/com/android/dialer/app/res/values-zu/strings.xml +++ b/java/com/android/dialer/app/res/values-zu/strings.xml @@ -80,11 +80,16 @@ "Yengeza ukulinda" "Izilungiselelo" "Isilingisi" + "Dala isinqamuleli esisha se-UI" "Bonke othintana nabo" "Sebenzisa ikhiphedi yethoni yokuthinta" "Buyela kukholi eqhubekayo" "Yengeza ikholi" "Amakholi angenayo" + "Kungenwa kumodi yesenzo senqwaba" + "Ishiye imodi yesenzo senqwaba" + "Kukhethwe i-%1$s" + "Akukhethiwe i-%1$s" "Dlala i-imeyli yezwi" "Bheka oxhumana naye %1$s" "Shayela %1$s" @@ -99,11 +104,15 @@ "Ivoyisimeyili" "%s isekhondi" "%s amaminithi %s amasekhondi" - "ivoyisimeyili" - "ama-meyli ezwi" - "Yebo" - "Cha" + "Khansela imodi lezenzo zeqoqo" + "Susa" + "Khansela" "Susa okukhethiwe %1$s?" + "Engu-%1$s ekhethiwe" + + ""Sula lawa mavoyisimeyili? "" + ""Sula lawa mavoyisimeyili? "" + @string/call_log_header_today "%1$s ngo-%2$s" "%1$02d:%2$02d" @@ -116,7 +125,6 @@ "I-MEID" "Ilayisha kusuka ekhadini le-SIM..." "Othintana nabo bekhadi le-SIM" - "Alukho uhlelo lokusebenza loxhumana nabo olutholakalayo" "Usesho lwezwi alutholakali" "Ayikwazi ukwenza ikholi yefoni ngoba uhlelo lokusebenza lwefoni likhutshaziwe." "Sesha othintana nabo" @@ -145,10 +153,9 @@ "%s amakholi amasha owaphuthelwe" "Akekho umuntu osekudayeleni kwakho okusheshayo okwamanje" "Engeza intandokazi" - "Awunabo oxhumana nabo okwamanje" - "Engeza oxhumana naye" "Thinta isithombe ukuze ubone zonke izinombolo noma thinta bese ubambe ukuze uhlele kabusha" "Susa" + "Khetha konke" "Ikholi yevidiyo" "Thumela umlayezo" "Imininingwane yekholi" @@ -213,11 +220,9 @@ "Izinombolo ezivinjiwe" "%1$s isivinjiwe kakade." "Ama-akhawunti wokushaya" - "Vula" "Setha izimvume" "Nika amandla ukudayela okusheshayo, vula imvume yoxhumana nabo." "Ukuze ubone irekhodi lakho lamakholi, vuma imvume yefoni." - "Ukuze ubone oxhumana nabo, vula imvume yoxhumana nabo." "Ukuze ufinyelele ivoyisimeyili, vula imvume yefoni." "Ukuze useshe oxhumana nabo, vula izimvume zoxhumana nabo." "Ukuze ubeke ikholi, vula imvume yefoni." diff --git a/java/com/android/dialer/app/res/values/colors.xml b/java/com/android/dialer/app/res/values/colors.xml index cf6b926be606629fcac82e3cdf8876e1bb7a330d..2f6d87b498bab2f07f3796c1961b3095522e5d3a 100644 --- a/java/com/android/dialer/app/res/values/colors.xml +++ b/java/com/android/dialer/app/res/values/colors.xml @@ -52,8 +52,6 @@ @color/dialer_theme_color - - #fafafa #f9f9f9 @color/background_dialer_light @@ -69,8 +67,6 @@ #4d4d4d - #b2b2b2 - #ffffff diff --git a/java/com/android/dialer/app/res/values/dimens.xml b/java/com/android/dialer/app/res/values/dimens.xml index 7da29c7a323607957359cf1293d90024f0fd7374..90a8bb879c55200bee8ab67963ede534bcf0e300 100644 --- a/java/com/android/dialer/app/res/values/dimens.xml +++ b/java/com/android/dialer/app/res/values/dimens.xml @@ -24,6 +24,11 @@ --> 16dp + + 14sp + 16dp + 18dp + 8dp 32dp @@ -105,9 +110,6 @@ 10dp - 20dp - 16sp - 16dp 16dp diff --git a/java/com/android/dialer/app/res/values/strings.xml b/java/com/android/dialer/app/res/values/strings.xml index 9e1fdeb5a57a03bf7536db4cf69ca7155f4325d5..e02c6fb30c3013093240009e0ffd9279aeb014db 100644 --- a/java/com/android/dialer/app/res/values/strings.xml +++ b/java/com/android/dialer/app/res/values/strings.xml @@ -114,7 +114,7 @@ Voicemail - + %1$d Voicemails @@ -131,12 +131,12 @@ [CHAR LIMIT=10] --> - %1$s, + %1$s, %2$s - New voicemail from + New voicemail from %1$s @@ -165,7 +165,7 @@ Missed calls only - (%1$d) + (%1$d) %2$s @@ -258,6 +258,9 @@ and testing. [CHAR LIMIT=30]--> Simulator + + Create New UI Shortcut + All contacts @@ -279,6 +282,34 @@ Incoming calls + + Entering bulk action mode + + + Left bulk action mode + + + Selected %1$s + + + Unselected %1$s + %s min %s sec - voicemail - voicemails - Yes - No + + Cancel batch actions mode + + Delete + Cancel Delete selected %1$s? + %1$s selected + + + + Delete this voicemail? + Delete these voicemails? + + @@ -411,9 +453,6 @@ SIM card contacts - - No contacts app available - Voice search not available @@ -484,7 +523,7 @@ Undo - Call + Call %s @@ -514,12 +553,6 @@ Add a favorite - - You don\'t have any contacts yet - - - Add a contact - Remove + + Select all + @@ -550,13 +586,13 @@ - + Call ^1 + Note: AccessibilityServices uses this attribute to announce what the view represents. + [CHAR LIMIT=NONE] --> Missed call from ^1, ^2, ^3, ^4. - + Call ^1 @@ -600,7 +636,7 @@ action triggers a return video call to the named person/number. Note: AccessibilityServices uses this attribute to announce the purpose of the button. [CHAR LIMIT=NONE] --> - + Video call ^1. @@ -609,21 +645,21 @@ triggers playing back the voicemail. Note: AccessibilityServices uses this attribute to announce the purpose of the button. [CHAR LIMIT=NONE] --> - + Listen to voicemail from ^1 - + Play voicemail from ^1 - + Pause voicemail from ^1 @@ -631,7 +667,7 @@ - + Delete voicemail from ^1 @@ -645,14 +681,14 @@ - + Create contact for ^1 - + Add ^1 to existing contact @@ -660,7 +696,7 @@ displays the call details screen for an entry in the call log. This shows the calls to and from the specified number associated with the call log entry. [CHAR LIMIT=NONE] --> - + Call details for ^1 @@ -769,14 +805,14 @@ - + Call blocking temporarily off - + Call blocking has been disabled because you contacted emergency services from this phone within the last 48 hours. It will be automatically reenabled once the 48 hour period expires. @@ -789,7 +825,7 @@ - + You previously marked some callers to be automatically sent to voicemail via other apps. @@ -811,13 +847,13 @@ - + Calls from these numbers will be blocked and voicemails will be automatically deleted. - + Calls from these numbers will be blocked, but they may still be able to leave you voicemails. @@ -826,7 +862,7 @@ - %1$s + %1$s is already blocked. @@ -841,9 +877,6 @@ button_dtmf_settings - - Turn on - Set permissions @@ -853,9 +886,6 @@ To see your call log, turn on the Phone permission. - - To see your contacts, turn on the Contacts permission. - To access your voicemail, turn on the Phone permission. diff --git a/java/com/android/dialer/app/res/values/styles.xml b/java/com/android/dialer/app/res/values/styles.xml index 7adf7ca2c5f32b52dae2d61618f9690f6f1dbae5..e0122e81c65d844ae16e549a6242b021d6187a4d 100644 --- a/java/com/android/dialer/app/res/values/styles.xml +++ b/java/com/android/dialer/app/res/values/styles.xml @@ -16,6 +16,11 @@ --> + + + + - - - - - + + + diff --git a/java/com/android/dialer/multimedia/MultimediaData.java b/java/com/android/dialer/multimedia/MultimediaData.java index 22bb7641c8c8a29111399f03dc2f82befa103447..dee0cff0bf77af9a913c3d52287de7b7fe23c288 100644 --- a/java/com/android/dialer/multimedia/MultimediaData.java +++ b/java/com/android/dialer/multimedia/MultimediaData.java @@ -20,6 +20,7 @@ import android.location.Location; import android.net.Uri; import android.support.annotation.NonNull; import android.support.annotation.Nullable; +import android.text.TextUtils; import com.android.dialer.common.LogUtil; import com.google.auto.value.AutoValue; @@ -63,6 +64,11 @@ public abstract class MultimediaData { /** Returns {@code true} if this data is marked as important. */ public abstract boolean isImportant(); + /** Returns true if this has image, text or location data. */ + public boolean hasData() { + return hasImageData() || !TextUtils.isEmpty(getText()) || getLocation() != null; + } + /** Returns the string form of this MultimediaData with no PII. */ @Override public String toString() { diff --git a/java/com/android/dialer/notification/AndroidManifest.xml b/java/com/android/dialer/notification/AndroidManifest.xml index 741f481caae1ce876e6127e7fda3c8c0f5a6eafe..b89d8f816611478d1cf4aa5f40ff15dfe4c1b544 100644 --- a/java/com/android/dialer/notification/AndroidManifest.xml +++ b/java/com/android/dialer/notification/AndroidManifest.xml @@ -1,3 +1,4 @@ + - - - - - - - - - - - - diff --git a/java/com/android/dialer/notification/GroupedNotificationUtil.java b/java/com/android/dialer/notification/GroupedNotificationUtil.java deleted file mode 100644 index 3925248d5cfee2313370bfcd92cb3682a4c0f559..0000000000000000000000000000000000000000 --- a/java/com/android/dialer/notification/GroupedNotificationUtil.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright (C) 2017 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License - */ - -package com.android.dialer.notification; - -import android.app.NotificationManager; -import android.service.notification.StatusBarNotification; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import java.util.Objects; - -/** Utilities for dealing with grouped notifications */ -public final class GroupedNotificationUtil { - - /** - * Remove notification(s) that were added as part of a group. Will ensure that if this is the last - * notification in the group the summary will be removed. - * - * @param tag String tag as included in {@link NotificationManager#notify(String, int, - * android.app.Notification)}. If null will remove all notifications under id - * @param id notification id as included with {@link NotificationManager#notify(String, int, - * android.app.Notification)}. - * @param summaryTag String tag of the summary notification - */ - public static void removeNotification( - @NonNull NotificationManager notificationManager, - @Nullable String tag, - int id, - @NonNull String summaryTag) { - if (tag == null) { - // Clear all grouped notifications - for (StatusBarNotification notification : notificationManager.getActiveNotifications()) { - if (notification.getId() == id) { - notificationManager.cancel(notification.getTag(), id); - } - } - } else { - notificationManager.cancel(tag, id); - - // See if other non-summary grouped notifications exist, and if not then clear the summary - boolean clearSummary = true; - for (StatusBarNotification notification : notificationManager.getActiveNotifications()) { - if (notification.getId() == id && !Objects.equals(summaryTag, notification.getTag())) { - clearSummary = false; - break; - } - } - if (clearSummary) { - notificationManager.cancel(summaryTag, id); - } - } - } -} diff --git a/java/com/android/dialer/notification/NotificationChannelId.java b/java/com/android/dialer/notification/NotificationChannelId.java new file mode 100644 index 0000000000000000000000000000000000000000..4ab3d44f2bc54ee336acaa73f8a228f44e980741 --- /dev/null +++ b/java/com/android/dialer/notification/NotificationChannelId.java @@ -0,0 +1,41 @@ +/* + * Copyright (C) 2017 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License + */ + +package com.android.dialer.notification; + +import android.support.annotation.StringDef; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +/** Centralized source of all notification channels used by Dialer. */ +@Retention(RetentionPolicy.SOURCE) +@StringDef({ + NotificationChannelId.INCOMING_CALL, + NotificationChannelId.ONGOING_CALL, + NotificationChannelId.MISSED_CALL, + NotificationChannelId.DEFAULT, +}) +public @interface NotificationChannelId { + // This value is white listed in the system. + // See /vendor/google/nexus_overlay/common/frameworks/base/core/res/res/values/config.xml + String INCOMING_CALL = "phone_incoming_call"; + + String ONGOING_CALL = "phone_ongoing_call"; + + String MISSED_CALL = "phone_missed_call"; + + String DEFAULT = "phone_default"; +} diff --git a/java/com/android/dialer/notification/NotificationChannelManager.java b/java/com/android/dialer/notification/NotificationChannelManager.java index 88679066dbc1ed5755692bf55104366e5361296c..790aac36fc7971346001c8f0be5d01506a099868 100644 --- a/java/com/android/dialer/notification/NotificationChannelManager.java +++ b/java/com/android/dialer/notification/NotificationChannelManager.java @@ -17,366 +17,156 @@ package com.android.dialer.notification; import android.annotation.TargetApi; -import android.app.Notification; import android.app.NotificationChannel; -import android.app.NotificationChannelGroup; import android.app.NotificationManager; import android.content.Context; -import android.content.Intent; -import android.content.SharedPreferences; import android.media.AudioAttributes; -import android.net.Uri; import android.os.Build.VERSION_CODES; -import android.provider.Settings; import android.support.annotation.NonNull; import android.support.annotation.Nullable; -import android.support.annotation.RequiresApi; -import android.support.annotation.StringDef; import android.support.v4.os.BuildCompat; -import android.telecom.PhoneAccount; import android.telecom.PhoneAccountHandle; -import android.telecom.TelecomManager; -import android.telephony.TelephonyManager; -import com.android.contacts.common.compat.TelephonyManagerCompat; -import com.android.dialer.buildtype.BuildType; +import android.util.ArraySet; +import com.android.dialer.common.Assert; import com.android.dialer.common.LogUtil; -import com.android.dialer.common.concurrent.DialerExecutors; -import com.android.dialer.telecom.TelecomUtil; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.util.List; -import java.util.Objects; +import java.util.Set; -/** Contains info on how to create {@link NotificationChannel NotificationChannels} */ -public class NotificationChannelManager { - - private static final String PREFS_FILENAME = "NotificationChannelManager"; - private static final String PREF_NEED_FIRST_INIT = "needFirstInit"; - private static NotificationChannelManager instance; - - public static NotificationChannelManager getInstance() { - if (instance == null) { - instance = new NotificationChannelManager(); - } - return instance; - } +/** Creates all notification channels for Dialer. */ +@TargetApi(VERSION_CODES.O) +public final class NotificationChannelManager { /** - * Set the channel of notification appropriately. Will create the channel if it does not already - * exist. Safe to call pre-O (will no-op). + * Creates all the notification channels Dialer will need. This method is called at app startup + * and must be fast. Currently it takes between 3 to 7 milliseconds on a Pixel XL. + * + *

An alternative approach would be to lazily create channels when we actualy post a + * notification. The advatange to precreating channels is that: * - *

phoneAccount should only be null if channelName is {@link Channel#DEFAULT} or {@link - * Channel#MISSED_CALL} since these do not have account-specific settings. + *

    + *
  • channels will be available to user right away. For example, users can customize voicemail + * sounds when they first get their device without waiting for a voicemail to arrive first. + *
  • code that posts a notification can be simpler + *
  • channel management code is simpler and it's easier to ensure that the correct set of + * channels are visible. + *
      */ - @TargetApi(26) - public static void applyChannel( - @NonNull Notification.Builder notification, - @NonNull Context context, - @Channel String channelName, - @Nullable PhoneAccountHandle phoneAccount) { - checkNullity(channelName, phoneAccount); - - if (BuildCompat.isAtLeastO()) { - NotificationChannel channel = - NotificationChannelManager.getInstance().getChannel(context, channelName, phoneAccount); - notification.setChannelId(channel.getId()); - } - } - - private static void checkNullity( - @Channel String channelName, @Nullable PhoneAccountHandle phoneAccount) { - if (phoneAccount != null || channelAllowsNullPhoneAccountHandle(channelName)) { - return; - } - - // TODO (b/36568553): don't throw an exception once most cases have been identified - IllegalArgumentException exception = - new IllegalArgumentException( - "Phone account handle must not be null on channel " + channelName); - if (BuildType.get() == BuildType.RELEASE) { - LogUtil.e("NotificationChannelManager.applyChannel", null, exception); - } else { - throw exception; - } - } - - private static boolean channelAllowsNullPhoneAccountHandle(@Channel String channelName) { - switch (channelName) { - case Channel.DEFAULT: - case Channel.MISSED_CALL: - return true; - default: - return false; - } - } + public static void initChannels(@NonNull Context context) { + Assert.checkArgument(BuildCompat.isAtLeastO()); + Assert.isNotNull(context); - /** The base Channel IDs for {@link NotificationChannel} */ - @Retention(RetentionPolicy.SOURCE) - @StringDef({ - Channel.INCOMING_CALL, - Channel.ONGOING_CALL, - Channel.ONGOING_CALL_OLD, - Channel.MISSED_CALL, - Channel.VOICEMAIL, - Channel.EXTERNAL_CALL, - Channel.DEFAULT - }) - public @interface Channel { - @Deprecated String ONGOING_CALL_OLD = "ongoingCall"; - String INCOMING_CALL = "incomingCall"; - String ONGOING_CALL = "ongoingCall2"; - String MISSED_CALL = "missedCall"; - String VOICEMAIL = "voicemail"; - String EXTERNAL_CALL = "externalCall"; - String DEFAULT = "default"; - } - - @Channel - private static final String[] prepopulatedAccountChannels = - new String[] {Channel.INCOMING_CALL, Channel.ONGOING_CALL, Channel.VOICEMAIL}; - - @Channel - private static final String[] prepopulatedGlobalChannels = - new String[] {Channel.MISSED_CALL, Channel.DEFAULT}; - - private NotificationChannelManager() {} - - public void firstInitIfNeeded(@NonNull Context context) { - if (BuildCompat.isAtLeastO()) { - DialerExecutors.createNonUiTaskBuilder(this::firstInitIfNeededSync) - .build() - .executeSerial(context); - } - } - - private boolean firstInitIfNeededSync(@NonNull Context context) { - if (needsFirstInit(context)) { - initChannels(context); - return true; - } - return false; - } - - public boolean needsFirstInit(@NonNull Context context) { - return (BuildCompat.isAtLeastO() - && getSharedPreferences(context).getBoolean(PREF_NEED_FIRST_INIT, true)); - } - - @RequiresApi(VERSION_CODES.N) - private SharedPreferences getSharedPreferences(@NonNull Context context) { - // Use device protected storage since in some cases this will need to be accessed while device - // is locked - context = context.createDeviceProtectedStorageContext(); - return context.getSharedPreferences(PREFS_FILENAME, Context.MODE_PRIVATE); - } - - @RequiresApi(26) - public Intent getSettingsIntentForChannel( - @NonNull Context context, @Channel String channelName, PhoneAccountHandle accountHandle) { - checkNullity(channelName, accountHandle); - Intent intent = new Intent(Settings.ACTION_CHANNEL_NOTIFICATION_SETTINGS); - intent.putExtra( - Settings.EXTRA_CHANNEL_ID, getChannel(context, channelName, accountHandle).getId()); - intent.putExtra(Settings.EXTRA_APP_PACKAGE, context.getPackageName()); - return intent; - } + NotificationManager notificationManager = context.getSystemService(NotificationManager.class); + Set desiredChannelIds = getAllDesiredChannelIds(context); + Set existingChannelIds = getAllExistingChannelIds(context); - @TargetApi(26) - @SuppressWarnings("AndroidApiChecker") - public void initChannels(@NonNull Context context) { - if (!BuildCompat.isAtLeastO()) { + if (desiredChannelIds.equals(existingChannelIds)) { return; } - LogUtil.enterBlock("NotificationChannelManager.initChannels"); - List phoneAccounts = TelecomUtil.getCallCapablePhoneAccounts(context); - - // Remove notification channels for PhoneAccounts that don't exist anymore - NotificationManager notificationManager = context.getSystemService(NotificationManager.class); - List notificationChannelGroups = - notificationManager.getNotificationChannelGroups(); - notificationChannelGroups - .stream() - .filter(group -> !idExists(group.getId(), phoneAccounts)) - .forEach(group -> deleteGroup(notificationManager, group)); - - for (PhoneAccountHandle phoneAccountHandle : phoneAccounts) { - for (@Channel String channel : prepopulatedAccountChannels) { - getChannel(context, channel, phoneAccountHandle); + LogUtil.i( + "NotificationChannelManager.initChannels", + "doing an expensive initialization of all notification channels"); + LogUtil.i( + "NotificationChannelManager.initChannels", "desired channel IDs: " + desiredChannelIds); + LogUtil.i( + "NotificationChannelManager.initChannels", "existing channel IDs: " + existingChannelIds); + + // Delete any old channels that we don't use any more. This is safe because if we're recreate + // this later then any user settings will be restored. An example is SIM specific voicemail + // channel that gets deleted when the user removes the SIM and is then restored when the user + // re-inserts the SIM. + for (String existingChannelId : existingChannelIds) { + if (!desiredChannelIds.contains(existingChannelId)) { + notificationManager.deleteNotificationChannel(existingChannelId); } } - for (@Channel String channel : prepopulatedGlobalChannels) { - getChannel(context, channel, null); - } - getSharedPreferences(context).edit().putBoolean(PREF_NEED_FIRST_INIT, false).apply(); - } - - @TargetApi(26) - private void deleteGroup( - @NonNull NotificationManager notificationManager, @NonNull NotificationChannelGroup group) { - for (NotificationChannel channel : group.getChannels()) { - notificationManager.deleteNotificationChannel(channel.getId()); - } - notificationManager.deleteNotificationChannelGroup(group.getId()); - } - - private boolean idExists(String id, List phoneAccountHandles) { - for (PhoneAccountHandle handle : phoneAccountHandles) { - if (Objects.equals(handle.getId(), id)) { - return true; - } - } - return false; + // Just recreate all desired channels. We won't do this often so it's ok to do this now. + createIncomingCallChannel(context); + createOngoingCallChannel(context); + createMissedCallChannel(context); + createDefaultChannel(context); + VoicemailChannelUtils.createAllChannels(context); } @NonNull - @RequiresApi(26) - private NotificationChannel getChannel( - @NonNull Context context, - @Channel String channelName, - @Nullable PhoneAccountHandle phoneAccount) { - String channelId = channelNameToId(channelName, phoneAccount); - NotificationChannel channel = getNotificationManager(context).getNotificationChannel(channelId); - if (channel == null) { - channel = createChannel(context, channelName, phoneAccount); - } - return channel; + public static String getVoicemailChannelId( + @NonNull Context context, @Nullable PhoneAccountHandle handle) { + Assert.checkArgument(BuildCompat.isAtLeastO()); + Assert.isNotNull(context); + return VoicemailChannelUtils.getChannelId(context, handle); } - private static String channelNameToId( - @Channel String name, @Nullable PhoneAccountHandle phoneAccountHandle) { - if (phoneAccountHandle == null) { - return name; - } else { - return name + ":" + phoneAccountHandle.getId(); - } - } - - @RequiresApi(26) - private NotificationChannel createChannel( - Context context, - @Channel String channelName, - @Nullable PhoneAccountHandle phoneAccountHandle) { - String channelId = channelNameToId(channelName, phoneAccountHandle); - - if (phoneAccountHandle != null) { - PhoneAccount account = getTelecomManager(context).getPhoneAccount(phoneAccountHandle); - NotificationChannelGroup group = - new NotificationChannelGroup( - phoneAccountHandle.getId(), - (account == null) ? phoneAccountHandle.getId() : account.getLabel().toString()); - getNotificationManager(context) - .createNotificationChannelGroup(group); // No-op if already exists - } else if (!channelAllowsNullPhoneAccountHandle(channelName)) { - LogUtil.w( - "NotificationChannelManager.createChannel", - "Null PhoneAccountHandle with channel " + channelName); - } - - Uri silentRingtone = Uri.EMPTY; - - CharSequence name; - int importance; - boolean canShowBadge; - boolean lights; - boolean vibration; - Uri sound; - switch (channelName) { - case Channel.INCOMING_CALL: - name = context.getText(R.string.notification_channel_incoming_call); - importance = NotificationManager.IMPORTANCE_MAX; - canShowBadge = false; - lights = true; - vibration = false; - sound = silentRingtone; - break; - case Channel.MISSED_CALL: - name = context.getText(R.string.notification_channel_missed_call); - importance = NotificationManager.IMPORTANCE_DEFAULT; - canShowBadge = true; - lights = true; - vibration = true; - sound = silentRingtone; - break; - case Channel.ONGOING_CALL: - name = context.getText(R.string.notification_channel_ongoing_call); - importance = NotificationManager.IMPORTANCE_DEFAULT; - canShowBadge = false; - lights = false; - vibration = false; - sound = silentRingtone; - deleteOldOngoingCallChannelIfNeeded(context, phoneAccountHandle); - break; - case Channel.VOICEMAIL: - name = context.getText(R.string.notification_channel_voicemail); - importance = NotificationManager.IMPORTANCE_DEFAULT; - canShowBadge = true; - lights = true; - vibration = - TelephonyManagerCompat.isVoicemailVibrationEnabled( - getTelephonyManager(context), phoneAccountHandle); - sound = - TelephonyManagerCompat.getVoicemailRingtoneUri( - getTelephonyManager(context), phoneAccountHandle); - break; - case Channel.EXTERNAL_CALL: - name = context.getText(R.string.notification_channel_external_call); - importance = NotificationManager.IMPORTANCE_HIGH; - canShowBadge = false; - lights = true; - vibration = true; - sound = null; - break; - case Channel.DEFAULT: - name = context.getText(R.string.notification_channel_misc); - importance = NotificationManager.IMPORTANCE_DEFAULT; - canShowBadge = false; - lights = true; - vibration = true; - sound = null; - break; - default: - throw new IllegalArgumentException("Unknown channel: " + channelName); - } - - NotificationChannel channel = new NotificationChannel(channelId, name, importance); - channel.setShowBadge(canShowBadge); - if (sound != null) { - // silentRingtone acts as a sentinel value to indicate that setSound should still be called, - // but with a null value to indicate no sound. - channel.setSound( - sound.equals(silentRingtone) ? null : sound, - new AudioAttributes.Builder().setUsage(AudioAttributes.USAGE_NOTIFICATION).build()); - } - channel.enableLights(lights); - channel.enableVibration(vibration); - getNotificationManager(context).createNotificationChannel(channel); - return channel; - } - - @RequiresApi(26) - private void deleteOldOngoingCallChannelIfNeeded( - @NonNull Context context, PhoneAccountHandle phoneAccountHandle) { - String channelId = channelNameToId(Channel.ONGOING_CALL_OLD, phoneAccountHandle); - NotificationManager notificationManager = getNotificationManager(context); - NotificationChannel channel = notificationManager.getNotificationChannel(channelId); - if (channel != null) { - LogUtil.i( - "NotificationManager.deleteOldOngoingCallChannelIfNeeded", - "Old ongoing channel found. Deleting to create new channel"); - notificationManager.deleteNotificationChannel(channel.getId()); - } - } - - private static NotificationManager getNotificationManager(@NonNull Context context) { - return context.getSystemService(NotificationManager.class); - } - - private static TelephonyManager getTelephonyManager(@NonNull Context context) { - return context.getSystemService(TelephonyManager.class); + private static Set getAllExistingChannelIds(@NonNull Context context) { + Set result = new ArraySet<>(); + NotificationManager notificationManager = context.getSystemService(NotificationManager.class); + for (NotificationChannel channel : notificationManager.getNotificationChannels()) { + result.add(channel.getId()); + } + return result; + } + + private static Set getAllDesiredChannelIds(@NonNull Context context) { + Set result = new ArraySet<>(); + result.add(NotificationChannelId.INCOMING_CALL); + result.add(NotificationChannelId.ONGOING_CALL); + result.add(NotificationChannelId.MISSED_CALL); + result.add(NotificationChannelId.DEFAULT); + result.addAll(VoicemailChannelUtils.getAllChannelIds(context)); + return result; + } + + private static void createIncomingCallChannel(@NonNull Context context) { + NotificationChannel channel = + new NotificationChannel( + NotificationChannelId.INCOMING_CALL, + context.getText(R.string.notification_channel_incoming_call), + NotificationManager.IMPORTANCE_MAX); + channel.setShowBadge(false); + channel.enableLights(true); + channel.enableVibration(false); + channel.setSound( + null, new AudioAttributes.Builder().setUsage(AudioAttributes.USAGE_NOTIFICATION).build()); + context.getSystemService(NotificationManager.class).createNotificationChannel(channel); + } + + private static void createOngoingCallChannel(@NonNull Context context) { + NotificationChannel channel = + new NotificationChannel( + NotificationChannelId.ONGOING_CALL, + context.getText(R.string.notification_channel_ongoing_call), + NotificationManager.IMPORTANCE_DEFAULT); + channel.setShowBadge(false); + channel.enableLights(false); + channel.enableVibration(false); + channel.setSound( + null, new AudioAttributes.Builder().setUsage(AudioAttributes.USAGE_NOTIFICATION).build()); + context.getSystemService(NotificationManager.class).createNotificationChannel(channel); + } + + private static void createMissedCallChannel(@NonNull Context context) { + NotificationChannel channel = + new NotificationChannel( + NotificationChannelId.MISSED_CALL, + context.getText(R.string.notification_channel_missed_call), + NotificationManager.IMPORTANCE_DEFAULT); + channel.setShowBadge(true); + channel.enableLights(true); + channel.enableVibration(true); + channel.setSound( + null, new AudioAttributes.Builder().setUsage(AudioAttributes.USAGE_NOTIFICATION).build()); + context.getSystemService(NotificationManager.class).createNotificationChannel(channel); + } + + private static void createDefaultChannel(@NonNull Context context) { + NotificationChannel channel = + new NotificationChannel( + NotificationChannelId.DEFAULT, + context.getText(R.string.notification_channel_misc), + NotificationManager.IMPORTANCE_DEFAULT); + channel.setShowBadge(false); + channel.enableLights(true); + channel.enableVibration(true); + context.getSystemService(NotificationManager.class).createNotificationChannel(channel); } - private static TelecomManager getTelecomManager(@NonNull Context context) { - return context.getSystemService(TelecomManager.class); - } + private NotificationChannelManager() {} } diff --git a/java/com/android/dialer/notification/VoicemailChannelUtils.java b/java/com/android/dialer/notification/VoicemailChannelUtils.java new file mode 100644 index 0000000000000000000000000000000000000000..dc74799ca8cca2cd2104c6df559e44a5c8374929 --- /dev/null +++ b/java/com/android/dialer/notification/VoicemailChannelUtils.java @@ -0,0 +1,217 @@ +/* + * Copyright (C) 2017 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License + */ + +package com.android.dialer.notification; + +import android.annotation.TargetApi; +import android.app.NotificationChannel; +import android.app.NotificationManager; +import android.content.Context; +import android.media.AudioAttributes; +import android.os.Build.VERSION_CODES; +import android.provider.Settings; +import android.support.annotation.NonNull; +import android.support.annotation.Nullable; +import android.support.v4.os.BuildCompat; +import android.telecom.PhoneAccount; +import android.telecom.PhoneAccountHandle; +import android.telecom.TelecomManager; +import android.telephony.TelephonyManager; +import android.text.TextUtils; +import android.util.ArraySet; +import com.android.dialer.common.Assert; +import com.android.dialer.common.LogUtil; +import java.util.ArrayList; +import java.util.List; +import java.util.Set; + +/** Utilities for working with voicemail channels. */ +@TargetApi(VERSION_CODES.O) +/* package */ final class VoicemailChannelUtils { + private static final String GLOBAL_VOICEMAIL_CHANNEL_ID = "phone_voicemail"; + private static final String PER_ACCOUNT_VOICEMAIL_CHANNEL_ID_PREFIX = "phone_voicemail_account_"; + + static Set getAllChannelIds(@NonNull Context context) { + Assert.checkArgument(BuildCompat.isAtLeastO()); + Assert.isNotNull(context); + + Set result = new ArraySet<>(); + if (isSingleSimDevice(context)) { + result.add(GLOBAL_VOICEMAIL_CHANNEL_ID); + } else { + for (PhoneAccountHandle handle : getAllEligableAccounts(context)) { + result.add(getChannelIdForAccount(handle)); + } + } + return result; + } + + static void createAllChannels(@NonNull Context context) { + Assert.checkArgument(BuildCompat.isAtLeastO()); + Assert.isNotNull(context); + + if (isSingleSimDevice(context)) { + createGlobalVoicemailChannel(context); + } else { + for (PhoneAccountHandle handle : getAllEligableAccounts(context)) { + createVoicemailChannelForAccount(context, handle); + } + } + } + + @NonNull + static String getChannelId(@NonNull Context context, @Nullable PhoneAccountHandle handle) { + Assert.checkArgument(BuildCompat.isAtLeastO()); + Assert.isNotNull(context); + + // Most devices we deal with have a single SIM slot. No need to distinguish between phone + // accounts. + if (isSingleSimDevice(context)) { + return GLOBAL_VOICEMAIL_CHANNEL_ID; + } + + // We can get a null phone account at random points (modem reboot, etc...). Gracefully degrade + // by using the default channel. + if (handle == null) { + LogUtil.i( + "VoicemailChannelUtils.getChannelId", + "no phone account on a multi-SIM device, using default channel"); + return NotificationChannelId.DEFAULT; + } + + // Voicemail notifications should always be associated with a SIM based phone account. + if (!isChannelAllowedForAccount(context, handle)) { + LogUtil.i( + "VoicemailChannelUtils.getChannelId", + "phone account is not for a SIM, using default channel"); + return NotificationChannelId.DEFAULT; + } + + // Now we're in the multi-SIM case. + String channelId = getChannelIdForAccount(handle); + if (!doesChannelExist(context, channelId)) { + LogUtil.i( + "VoicemailChannelUtils.getChannelId", + "voicemail channel not found for phone account (possible SIM swap?), creating a new one"); + createVoicemailChannelForAccount(context, handle); + } + return channelId; + } + + private static boolean doesChannelExist(@NonNull Context context, @NonNull String channelId) { + return context.getSystemService(NotificationManager.class).getNotificationChannel(channelId) + != null; + } + + private static String getChannelIdForAccount(@NonNull PhoneAccountHandle handle) { + Assert.isNotNull(handle); + return PER_ACCOUNT_VOICEMAIL_CHANNEL_ID_PREFIX + ":" + handle.getId(); + } + + /** + * Creates a voicemail channel but doesn't associate it with a SIM. For devices with only one SIM + * slot this is ideal because there won't be duplication in the settings UI. + */ + private static void createGlobalVoicemailChannel(@NonNull Context context) { + NotificationChannel channel = newChannel(context, GLOBAL_VOICEMAIL_CHANNEL_ID, null); + + TelecomManager telecomManager = context.getSystemService(TelecomManager.class); + PhoneAccountHandle handle = + telecomManager.getDefaultOutgoingPhoneAccount(PhoneAccount.SCHEME_TEL); + if (handle == null) { + LogUtil.i( + "VoicemailChannelUtils.createGlobalVoicemailChannel", + "phone account is null, not migrating sound settings"); + } else if (!isChannelAllowedForAccount(context, handle)) { + LogUtil.i( + "VoicemailChannelUtils.createGlobalVoicemailChannel", + "phone account is not eligable, not migrating sound settings"); + } else { + migrateVoicemailSoundSettings(context, channel, handle); + } + context.getSystemService(NotificationManager.class).createNotificationChannel(channel); + } + + private static List getAllEligableAccounts(@NonNull Context context) { + List handles = new ArrayList<>(); + TelecomManager telecomManager = context.getSystemService(TelecomManager.class); + for (PhoneAccountHandle handle : telecomManager.getCallCapablePhoneAccounts()) { + if (isChannelAllowedForAccount(context, handle)) { + handles.add(handle); + } + } + return handles; + } + + private static void createVoicemailChannelForAccount( + @NonNull Context context, @NonNull PhoneAccountHandle handle) { + PhoneAccount phoneAccount = + context.getSystemService(TelecomManager.class).getPhoneAccount(handle); + NotificationChannel channel = + newChannel(context, getChannelIdForAccount(handle), phoneAccount.getLabel()); + migrateVoicemailSoundSettings(context, channel, handle); + context.getSystemService(NotificationManager.class).createNotificationChannel(channel); + } + + private static void migrateVoicemailSoundSettings( + @NonNull Context context, + @NonNull NotificationChannel channel, + @NonNull PhoneAccountHandle handle) { + TelephonyManager telephonyManager = context.getSystemService(TelephonyManager.class); + channel.enableVibration(telephonyManager.isVoicemailVibrationEnabled(handle)); + channel.setSound( + telephonyManager.getVoicemailRingtoneUri(handle), + new AudioAttributes.Builder().setUsage(AudioAttributes.USAGE_NOTIFICATION).build()); + } + + private static boolean isChannelAllowedForAccount( + @NonNull Context context, @NonNull PhoneAccountHandle handle) { + PhoneAccount phoneAccount = + context.getSystemService(TelecomManager.class).getPhoneAccount(handle); + if (phoneAccount == null) { + return false; + } + if (!phoneAccount.hasCapabilities(PhoneAccount.CAPABILITY_SIM_SUBSCRIPTION)) { + return false; + } + return true; + } + + private static NotificationChannel newChannel( + @NonNull Context context, @NonNull String channelId, @Nullable CharSequence nameSuffix) { + CharSequence name = context.getText(R.string.notification_channel_voicemail); + // TODO: Use a string resource template after v10. + if (!TextUtils.isEmpty(nameSuffix)) { + name = TextUtils.concat(name, ": ", nameSuffix); + } + + NotificationChannel channel = + new NotificationChannel(channelId, name, NotificationManager.IMPORTANCE_DEFAULT); + channel.setShowBadge(true); + channel.enableLights(true); + channel.enableVibration(true); + channel.setSound( + Settings.System.DEFAULT_NOTIFICATION_URI, + new AudioAttributes.Builder().setUsage(AudioAttributes.USAGE_NOTIFICATION).build()); + return channel; + } + + private static boolean isSingleSimDevice(@NonNull Context context) { + return context.getSystemService(TelephonyManager.class).getPhoneCount() <= 1; + } + + private VoicemailChannelUtils() {} +} diff --git a/java/com/android/dialer/notification/res/values-af/strings.xml b/java/com/android/dialer/notification/res/values-af/strings.xml index 08dd754ddc726b520213cea7ded71328d52ecb3b..e48249b3c8dda6a2fe25b91605b3c29d35246d41 100644 --- a/java/com/android/dialer/notification/res/values-af/strings.xml +++ b/java/com/android/dialer/notification/res/values-af/strings.xml @@ -21,6 +21,5 @@ "Deurlopende oproepe" "Gemiste oproepe" "Stemboodskappe" - "Ekterne oproepe" "Verstek" diff --git a/java/com/android/dialer/notification/res/values-am/strings.xml b/java/com/android/dialer/notification/res/values-am/strings.xml index 56d6c2ca1205dcf9a813b1209efad8320dd5bc50..0983e0591f1fcec562746c1fcc2a6cfda6ba7a57 100644 --- a/java/com/android/dialer/notification/res/values-am/strings.xml +++ b/java/com/android/dialer/notification/res/values-am/strings.xml @@ -21,6 +21,5 @@ "በመካሄድ ላይ ያሉ ጥሪዎች" "ያመለጡ ጥሪዎች" "የድምፅ መልዕክቶች" - "ውጫዊ ጥሪዎች" "ነባሪ" diff --git a/java/com/android/dialer/notification/res/values-ar/strings.xml b/java/com/android/dialer/notification/res/values-ar/strings.xml index 71857c274a7e449270d094409350c19cd5829643..ab6059ff1f12ad03c9b29e1daca14d562a451fcb 100644 --- a/java/com/android/dialer/notification/res/values-ar/strings.xml +++ b/java/com/android/dialer/notification/res/values-ar/strings.xml @@ -21,6 +21,5 @@ "المكالمات الجارية" "المكالمات الفائتة" "رسائل البريد الصوتي" - "المكالمات الخارجية" "افتراضي" diff --git a/java/com/android/dialer/notification/res/values-az/strings.xml b/java/com/android/dialer/notification/res/values-az/strings.xml index f907e554ebc07e09309a7896ab931d1622c9f5aa..425f30ad79e56ad33c271170eb972195c077d7db 100644 --- a/java/com/android/dialer/notification/res/values-az/strings.xml +++ b/java/com/android/dialer/notification/res/values-az/strings.xml @@ -21,6 +21,5 @@ "Gedən zənglər" "Buraxılmış zənglər" "Səsli məktublar" - "External calls" "Defolt" diff --git a/java/com/android/dialer/notification/res/values-b+sr+Latn/strings.xml b/java/com/android/dialer/notification/res/values-b+sr+Latn/strings.xml index 4d5b5e78a4d3c655a6ddc80fa480c2c97ada45e7..4598e764419a200bf1ebd5f228ee75eec823cbf4 100644 --- a/java/com/android/dialer/notification/res/values-b+sr+Latn/strings.xml +++ b/java/com/android/dialer/notification/res/values-b+sr+Latn/strings.xml @@ -21,6 +21,5 @@ "Pozivi u toku" "Propušteni pozivi" "Govorne poruke" - "Spoljni pozivi" "Podrazumevano" diff --git a/java/com/android/dialer/notification/res/values-be/strings.xml b/java/com/android/dialer/notification/res/values-be/strings.xml index 70defe342d2e2e0ce04b7b1174a706a4f0f4e9c7..586a36c3109897d0e70eb31de052d9b32cda1180 100644 --- a/java/com/android/dialer/notification/res/values-be/strings.xml +++ b/java/com/android/dialer/notification/res/values-be/strings.xml @@ -21,6 +21,5 @@ "Адбываючыяся выклікі" "Прапушчаныя выклікі" "Галасавая пошта" - "Знешнія выклікі" "Стандартны" diff --git a/java/com/android/dialer/notification/res/values-bg/strings.xml b/java/com/android/dialer/notification/res/values-bg/strings.xml index 1ec202e6c016d2231bd85a7dc6ad5cb523ea36fc..9bc8f8f028a73c597ca6b17815bfa9941f7d5b84 100644 --- a/java/com/android/dialer/notification/res/values-bg/strings.xml +++ b/java/com/android/dialer/notification/res/values-bg/strings.xml @@ -21,6 +21,5 @@ "Текущи обаждания" "Пропуснати обаждания" "Гласови съобщения" - "Външни обаждания" "По подразбиране" diff --git a/java/com/android/dialer/notification/res/values-bn/strings.xml b/java/com/android/dialer/notification/res/values-bn/strings.xml index 886f8317dafe09f2ee114e6f82298643d30934b6..1d778179760640c29447b085bd85dd2fcdc65c5a 100644 --- a/java/com/android/dialer/notification/res/values-bn/strings.xml +++ b/java/com/android/dialer/notification/res/values-bn/strings.xml @@ -21,6 +21,5 @@ "সংযুক্ত কল" "মিস করা কল" "ভয়েসমেল" - "বাহ্যিক কল" "ডিফল্ট" diff --git a/java/com/android/dialer/notification/res/values-bs/strings.xml b/java/com/android/dialer/notification/res/values-bs/strings.xml index e408a6468feb02b8f3790a36fe7a7fdae1b76e22..dedbb1c2dafa83fe9c611adec5f827e157d21d0d 100644 --- a/java/com/android/dialer/notification/res/values-bs/strings.xml +++ b/java/com/android/dialer/notification/res/values-bs/strings.xml @@ -21,6 +21,5 @@ "Tekući pozivi" "Propušteni pozivi" "Poruke govorne pošte" - "Vanjski pozivi" "Zadano" diff --git a/java/com/android/dialer/notification/res/values-ca/strings.xml b/java/com/android/dialer/notification/res/values-ca/strings.xml index ea81b627a32e138e46f27d2c7f02266e41d800cd..1c19d0f74beca78992daaf4f0bd40d4f4137bd36 100644 --- a/java/com/android/dialer/notification/res/values-ca/strings.xml +++ b/java/com/android/dialer/notification/res/values-ca/strings.xml @@ -21,6 +21,5 @@ "Trucades en curs" "Trucades perdudes" "Missatges de veu" - "Trucades externes" "Predeterminat" diff --git a/java/com/android/dialer/notification/res/values-cs/strings.xml b/java/com/android/dialer/notification/res/values-cs/strings.xml index 9ea7b61cad884f7f8f911bb4c01a57189a605257..c428ca2f3225264f944875a4ca98b97fcefab8b0 100644 --- a/java/com/android/dialer/notification/res/values-cs/strings.xml +++ b/java/com/android/dialer/notification/res/values-cs/strings.xml @@ -21,6 +21,5 @@ "Probíhající hovory" "Zmeškané hovory" "Hlasové zprávy" - "Externí hovory" "Výchozí" diff --git a/java/com/android/dialer/notification/res/values-da/strings.xml b/java/com/android/dialer/notification/res/values-da/strings.xml index e4fc4ddedb27c7c651746df6133b40432ba278ca..7f0ce9f1059babb925bd9dcd983349aff11a016d 100644 --- a/java/com/android/dialer/notification/res/values-da/strings.xml +++ b/java/com/android/dialer/notification/res/values-da/strings.xml @@ -21,6 +21,5 @@ "Igangværende opkald" "Ubesvarede opkald" "Talebeskeder" - "Eksterne opkald" "Standard" diff --git a/java/com/android/dialer/notification/res/values-de/strings.xml b/java/com/android/dialer/notification/res/values-de/strings.xml index 7fce6bf47bd0067fc8cad5b06414b3827029e4c7..86b7520169acb799702c21b53eb3c3a0af04a7f6 100644 --- a/java/com/android/dialer/notification/res/values-de/strings.xml +++ b/java/com/android/dialer/notification/res/values-de/strings.xml @@ -21,6 +21,5 @@ "Laufende Anrufe" "Entgangene Anrufe" "Mailboxnachrichten" - "Externe Anrufe" "Standard" diff --git a/java/com/android/dialer/notification/res/values-el/strings.xml b/java/com/android/dialer/notification/res/values-el/strings.xml index a25bb43e9e7fb5f26b1308aae475d3feb0936876..812dc25642f73ffef958d9d1d8970e41474741c9 100644 --- a/java/com/android/dialer/notification/res/values-el/strings.xml +++ b/java/com/android/dialer/notification/res/values-el/strings.xml @@ -21,6 +21,5 @@ "Κλήσεις σε εξέλιξη" "Αναπάντητες κλήσεις" "Μηνύματα αυτόματου τηλεφωνητή" - "Εξωτερικές κλήσεις" "Προεπιλογή" diff --git a/java/com/android/dialer/notification/res/values-en-rAU/strings.xml b/java/com/android/dialer/notification/res/values-en-rAU/strings.xml index 7d4bd825bb0eda9492e6c37f911fc36584bf104d..43b722bebb93b41f9604649f5592ec580f1c8871 100644 --- a/java/com/android/dialer/notification/res/values-en-rAU/strings.xml +++ b/java/com/android/dialer/notification/res/values-en-rAU/strings.xml @@ -21,6 +21,5 @@ "Ongoing calls" "Missed calls" "Voicemail" - "External calls" "Default" diff --git a/java/com/android/dialer/notification/res/values-en-rGB/strings.xml b/java/com/android/dialer/notification/res/values-en-rGB/strings.xml index 7d4bd825bb0eda9492e6c37f911fc36584bf104d..43b722bebb93b41f9604649f5592ec580f1c8871 100644 --- a/java/com/android/dialer/notification/res/values-en-rGB/strings.xml +++ b/java/com/android/dialer/notification/res/values-en-rGB/strings.xml @@ -21,6 +21,5 @@ "Ongoing calls" "Missed calls" "Voicemail" - "External calls" "Default" diff --git a/java/com/android/dialer/notification/res/values-en-rIN/strings.xml b/java/com/android/dialer/notification/res/values-en-rIN/strings.xml index 7d4bd825bb0eda9492e6c37f911fc36584bf104d..43b722bebb93b41f9604649f5592ec580f1c8871 100644 --- a/java/com/android/dialer/notification/res/values-en-rIN/strings.xml +++ b/java/com/android/dialer/notification/res/values-en-rIN/strings.xml @@ -21,6 +21,5 @@ "Ongoing calls" "Missed calls" "Voicemail" - "External calls" "Default" diff --git a/java/com/android/dialer/notification/res/values-es-rUS/strings.xml b/java/com/android/dialer/notification/res/values-es-rUS/strings.xml index fe8fe1354c8794718d495b1c55abec77e92355ca..c56edcfe6ec4a5a9d1dd0e386b38fc15802967c7 100644 --- a/java/com/android/dialer/notification/res/values-es-rUS/strings.xml +++ b/java/com/android/dialer/notification/res/values-es-rUS/strings.xml @@ -21,6 +21,5 @@ "Llamadas en curso" "Llamadas perdidas" "Mensajes de voz" - "Llamadas externas" "Predeterminado" diff --git a/java/com/android/dialer/notification/res/values-es/strings.xml b/java/com/android/dialer/notification/res/values-es/strings.xml index fe8fe1354c8794718d495b1c55abec77e92355ca..c56edcfe6ec4a5a9d1dd0e386b38fc15802967c7 100644 --- a/java/com/android/dialer/notification/res/values-es/strings.xml +++ b/java/com/android/dialer/notification/res/values-es/strings.xml @@ -21,6 +21,5 @@ "Llamadas en curso" "Llamadas perdidas" "Mensajes de voz" - "Llamadas externas" "Predeterminado" diff --git a/java/com/android/dialer/notification/res/values-et/strings.xml b/java/com/android/dialer/notification/res/values-et/strings.xml index 41623951f25c932c28d73fe9e15e5b30abe12b2c..9c60a319503cac1c7d0c60be4f238d3dd3f17c63 100644 --- a/java/com/android/dialer/notification/res/values-et/strings.xml +++ b/java/com/android/dialer/notification/res/values-et/strings.xml @@ -21,6 +21,5 @@ "Käimasolevad kõned" "Vastamata kõned" "Kõnepostisõnumid" - "Välised kõned" "Vaikeseade" diff --git a/java/com/android/dialer/notification/res/values-eu/strings.xml b/java/com/android/dialer/notification/res/values-eu/strings.xml index 326ac0ab650b6756a12366d82220f0d956cc4f82..d94ac0ab67be743f908c40f7f6bf6ec18f7785f6 100644 --- a/java/com/android/dialer/notification/res/values-eu/strings.xml +++ b/java/com/android/dialer/notification/res/values-eu/strings.xml @@ -21,6 +21,5 @@ "Abian diren deiak" "Dei galduak" "Ahots-mezuak" - "Kanpoko deiak" "Lehenetsia" diff --git a/java/com/android/dialer/notification/res/values-fa/strings.xml b/java/com/android/dialer/notification/res/values-fa/strings.xml index f1a7efc3d9bb1e38906a0b097a73355e841de292..edbc98336650686838b31a7fdc8916bcc4ccf685 100644 --- a/java/com/android/dialer/notification/res/values-fa/strings.xml +++ b/java/com/android/dialer/notification/res/values-fa/strings.xml @@ -21,6 +21,5 @@ "تماس‌های درحال انجام" "تماس‌های بی‌پاسخ" "پست‌های صوتی" - "تماس‌های خارجی" "پیش‌فرض" diff --git a/java/com/android/dialer/notification/res/values-fi/strings.xml b/java/com/android/dialer/notification/res/values-fi/strings.xml index c88c2325ad98b315ed3451ef2f13f6377156f868..87652f8a86234686682828641c8bbf45a377a44a 100644 --- a/java/com/android/dialer/notification/res/values-fi/strings.xml +++ b/java/com/android/dialer/notification/res/values-fi/strings.xml @@ -21,6 +21,5 @@ "Käynnissä olevat puhelut" "Vastaamattomat puhelut" "Vastaajaviestit" - "Ulkopuoliset puhelut" "Oletus" diff --git a/java/com/android/dialer/notification/res/values-fr-rCA/strings.xml b/java/com/android/dialer/notification/res/values-fr-rCA/strings.xml index a21d6b28b8ed3c70c811e6f30136851764687caf..5a2d7dcfe2f4023eb7f22d41e310c46e6a391987 100644 --- a/java/com/android/dialer/notification/res/values-fr-rCA/strings.xml +++ b/java/com/android/dialer/notification/res/values-fr-rCA/strings.xml @@ -21,6 +21,5 @@ "Appels en cours" "Appels manqués" "Messages vocaux" - "Appels externes" "Par défaut" diff --git a/java/com/android/dialer/notification/res/values-fr/strings.xml b/java/com/android/dialer/notification/res/values-fr/strings.xml index a21d6b28b8ed3c70c811e6f30136851764687caf..5a2d7dcfe2f4023eb7f22d41e310c46e6a391987 100644 --- a/java/com/android/dialer/notification/res/values-fr/strings.xml +++ b/java/com/android/dialer/notification/res/values-fr/strings.xml @@ -21,6 +21,5 @@ "Appels en cours" "Appels manqués" "Messages vocaux" - "Appels externes" "Par défaut" diff --git a/java/com/android/dialer/notification/res/values-gl/strings.xml b/java/com/android/dialer/notification/res/values-gl/strings.xml index 3b57a59b32fe30b74834953755edb316546da4e8..0e7fb612b3addd794d2567499d3adf0fc714aab1 100644 --- a/java/com/android/dialer/notification/res/values-gl/strings.xml +++ b/java/com/android/dialer/notification/res/values-gl/strings.xml @@ -21,6 +21,5 @@ "Chamadas saíntes" "Chamadas perdidas" "Correos de voz" - "Chamadas externas" "Predeterminado" diff --git a/java/com/android/dialer/notification/res/values-gu/strings.xml b/java/com/android/dialer/notification/res/values-gu/strings.xml index f185e5971fa401162abf84cdbbb070c80da04b82..a4a0a7ae10ea7fdf531118c2d5c9fe9e6c9ca334 100644 --- a/java/com/android/dialer/notification/res/values-gu/strings.xml +++ b/java/com/android/dialer/notification/res/values-gu/strings.xml @@ -21,6 +21,5 @@ "ચાલુ કૉલ" "છૂટેલા કૉલ" "વૉઇસમેઇલ" - "બાહ્ય કૉલ" "ડિફૉલ્ટ" diff --git a/java/com/android/dialer/notification/res/values-hi/strings.xml b/java/com/android/dialer/notification/res/values-hi/strings.xml index 89c8e55475d8ae3434536b6976c287f8028a8b86..69ed9b0b21ae4c04545892ecba215408a92deb99 100644 --- a/java/com/android/dialer/notification/res/values-hi/strings.xml +++ b/java/com/android/dialer/notification/res/values-hi/strings.xml @@ -21,6 +21,5 @@ "चल रहे कॉल" "छूटे कॉल" "वॉइसमेल" - "बाहरी कॉल" "डिफ़ॉल्ट" diff --git a/java/com/android/dialer/notification/res/values-hr/strings.xml b/java/com/android/dialer/notification/res/values-hr/strings.xml index 9f786d7d8de57a85d35e7071c0eec63a42b95ec5..a5924c3ce5b070200fd68b5da2a40c2096ab0bd1 100644 --- a/java/com/android/dialer/notification/res/values-hr/strings.xml +++ b/java/com/android/dialer/notification/res/values-hr/strings.xml @@ -21,6 +21,5 @@ "Pozivi u tijeku" "Propušteni pozivi" "Poruke govorne pošte" - "Vanjski pozivi" "Zadano" diff --git a/java/com/android/dialer/notification/res/values-hu/strings.xml b/java/com/android/dialer/notification/res/values-hu/strings.xml index 09fa795d62b11f8c2892e687d9383adaaac8ee83..719252f0fa3521a581c915c3ce8a8e68250e1ee8 100644 --- a/java/com/android/dialer/notification/res/values-hu/strings.xml +++ b/java/com/android/dialer/notification/res/values-hu/strings.xml @@ -21,6 +21,5 @@ "Kimenő hívások" "Nem fogadott hívások" "Hangüzenetek" - "Külső hívások" "Alapértelmezett" diff --git a/java/com/android/dialer/notification/res/values-hy/strings.xml b/java/com/android/dialer/notification/res/values-hy/strings.xml index 693898a55c29959b570521cd2291ad4a911f9616..6bb2c34e30a029f73b511eae88d289e2e122e0d0 100644 --- a/java/com/android/dialer/notification/res/values-hy/strings.xml +++ b/java/com/android/dialer/notification/res/values-hy/strings.xml @@ -21,6 +21,5 @@ "Ընթացիկ զանգեր" "Բաց թողնված զանգեր" "Ձայնային փոստ" - "Արտաքին զանգեր" "Կանխադրված" diff --git a/java/com/android/dialer/notification/res/values-in/strings.xml b/java/com/android/dialer/notification/res/values-in/strings.xml index 405b2927dea2a58029bfbbbed2391dfa47527fb5..88ef3d5241f546f7e194ba38be0c1dbf58b5d8b1 100644 --- a/java/com/android/dialer/notification/res/values-in/strings.xml +++ b/java/com/android/dialer/notification/res/values-in/strings.xml @@ -21,6 +21,5 @@ "Panggilan keluar" "Panggilan tak terjawab" "Pesan suara" - "Panggilan eksternal" "Default" diff --git a/java/com/android/dialer/notification/res/values-is/strings.xml b/java/com/android/dialer/notification/res/values-is/strings.xml index be84917fcd4c1ce7a59d47e7aba818977c4d7dd8..166d9744348055dc1bcbc5ca29664c0baff41b89 100644 --- a/java/com/android/dialer/notification/res/values-is/strings.xml +++ b/java/com/android/dialer/notification/res/values-is/strings.xml @@ -21,6 +21,5 @@ "Símtöl í gangi" "Ósvöruð símtöl" "Talhólfsskilaboð" - "Utanaðkomandi símtöl" "Sjálfgefið" diff --git a/java/com/android/dialer/notification/res/values-it/strings.xml b/java/com/android/dialer/notification/res/values-it/strings.xml index 1ac6e2d41e48b0557a77f10196af65fe28f9a254..7b55da99187cbe7b93c093b4f71d237315e22b8b 100644 --- a/java/com/android/dialer/notification/res/values-it/strings.xml +++ b/java/com/android/dialer/notification/res/values-it/strings.xml @@ -21,6 +21,5 @@ "Chiamate in uscita" "Chiamate perse" "Messaggi vocali" - "Chiamate esterne" "Predefinito" diff --git a/java/com/android/dialer/notification/res/values-iw/strings.xml b/java/com/android/dialer/notification/res/values-iw/strings.xml index ed07b8643ea7e48cd92f2e948942db146f4c109b..2b8b9df33adb8871c25c3b8a4c8808ec3dc997de 100644 --- a/java/com/android/dialer/notification/res/values-iw/strings.xml +++ b/java/com/android/dialer/notification/res/values-iw/strings.xml @@ -21,6 +21,5 @@ "שיחות יוצאות" "שיחות שלא נענו" "הודעות קוליות" - "שיחות חיצוניות" "ברירת מחדל" diff --git a/java/com/android/dialer/notification/res/values-ja/strings.xml b/java/com/android/dialer/notification/res/values-ja/strings.xml index 3265d7266f03309bf8be90c8d9ea53d79fdbef8b..2ff8da7d0727899a1b0fe863474e0fe1ff22cb6a 100644 --- a/java/com/android/dialer/notification/res/values-ja/strings.xml +++ b/java/com/android/dialer/notification/res/values-ja/strings.xml @@ -21,6 +21,5 @@ "通話中" "不在着信" "ボイスメール" - "外部通話" "デフォルト" diff --git a/java/com/android/dialer/notification/res/values-ka/strings.xml b/java/com/android/dialer/notification/res/values-ka/strings.xml index 6d81465e272e3c0ed2f7b2aafd52ce5da3487d94..73394efebc56991cf61f7e06858ee647cbbf7f8f 100644 --- a/java/com/android/dialer/notification/res/values-ka/strings.xml +++ b/java/com/android/dialer/notification/res/values-ka/strings.xml @@ -21,6 +21,5 @@ "გამავალი ზარები" "გამოტოვებული ზარები" "ხმოვანი ფოსტა" - "გარე ზარები" "ნაგულისხმევი" diff --git a/java/com/android/dialer/notification/res/values-kk/strings.xml b/java/com/android/dialer/notification/res/values-kk/strings.xml index 35733fb0495454fc0e1ee4ecc4da3c8892d03a7c..8151c9ca9e3c02ec6e8a88415f8e3f2941a28dbf 100644 --- a/java/com/android/dialer/notification/res/values-kk/strings.xml +++ b/java/com/android/dialer/notification/res/values-kk/strings.xml @@ -21,6 +21,5 @@ "Қазіргі қоңыраулар" "Қабылданбаған қоңыраулар" "Дауыстық хабарлар" - "Сыртқы қоңыраулар" "Әдепкі" diff --git a/java/com/android/dialer/notification/res/values-km/strings.xml b/java/com/android/dialer/notification/res/values-km/strings.xml index 42bc1135044dc392bd97d3e0567f0e68745a28a7..22131ff398a63bbe9e64fe3833e47b0c58a14cfc 100644 --- a/java/com/android/dialer/notification/res/values-km/strings.xml +++ b/java/com/android/dialer/notification/res/values-km/strings.xml @@ -21,6 +21,5 @@ "ការ​ហៅ​បន្ត" "ការ​ហៅ​ដែល​មិន​បាន​ទទួល" "សារ​ជា​សំឡេង" - "ការ​ហៅខាង​ក្រៅ" "លំ​នាំ​ដើម" diff --git a/java/com/android/dialer/notification/res/values-kn/strings.xml b/java/com/android/dialer/notification/res/values-kn/strings.xml index 45f26e378b9ca2cf678af92b7b1f37fe338dc1f8..d6e55bdb182d84035de0228693912ee401e7f7a5 100644 --- a/java/com/android/dialer/notification/res/values-kn/strings.xml +++ b/java/com/android/dialer/notification/res/values-kn/strings.xml @@ -21,6 +21,5 @@ "ಚಾಲ್ತಿಯಲ್ಲಿರುವ ಕರೆಗಳು" "ಮಿಸ್ಡ್‌ ಕರೆಗಳು" "ಧ್ವನಿಮೇಲ್‌ಗಳು" - "ಹೊರಗಿನ ಕರೆಗಳು" "ಡಿಫಾಲ್ಟ್" diff --git a/java/com/android/dialer/notification/res/values-ko/strings.xml b/java/com/android/dialer/notification/res/values-ko/strings.xml index d806cad0651a23d6486e1a8c1e7dfc83016e367d..5a667176d1ab30fd6874731114ba0d7283601e60 100644 --- a/java/com/android/dialer/notification/res/values-ko/strings.xml +++ b/java/com/android/dialer/notification/res/values-ko/strings.xml @@ -21,6 +21,5 @@ "진행 중인 전화" "부재중 전화" "음성사서함" - "외부 전화" "기본" diff --git a/java/com/android/dialer/notification/res/values-ky/strings.xml b/java/com/android/dialer/notification/res/values-ky/strings.xml index eb6adf6e794bdbdff71cdc42eb5462c285a7da62..c5259315af3887af72bb0126d2d371e067cff7e8 100644 --- a/java/com/android/dialer/notification/res/values-ky/strings.xml +++ b/java/com/android/dialer/notification/res/values-ky/strings.xml @@ -21,6 +21,5 @@ "Учурдагы чалуулар" "Кабыл алынбаган чалуулар" "Үнкаттар" - "Тышкы чалуулар" "Демейки" diff --git a/java/com/android/dialer/notification/res/values-lo/strings.xml b/java/com/android/dialer/notification/res/values-lo/strings.xml index f439807deff12937af3a7eaa4578ab59bed3d3e0..a52d9df143d76038ff04c525acb128fa5a4c9ac5 100644 --- a/java/com/android/dialer/notification/res/values-lo/strings.xml +++ b/java/com/android/dialer/notification/res/values-lo/strings.xml @@ -21,6 +21,5 @@ "ສາຍໂທອອກ" "ສາຍບໍ່ໄດ້ຮັບ" "ຂໍ້ຄວາມສຽງ" - "ສາຍພາຍນອກ" "ຄ່າເລີ່ມຕົ້ນ" diff --git a/java/com/android/dialer/notification/res/values-lt/strings.xml b/java/com/android/dialer/notification/res/values-lt/strings.xml index f08697ad6617bb2854a6d0595defcec3cc2a4293..6f26d3e66a76f0b651ab85d70f244505cdc654fb 100644 --- a/java/com/android/dialer/notification/res/values-lt/strings.xml +++ b/java/com/android/dialer/notification/res/values-lt/strings.xml @@ -21,6 +21,5 @@ "Vykstantys skambučiai" "Praleisti skambučiai" "Balso pašto pranešimai" - "Išoriniai skambučiai" "Numatytasis" diff --git a/java/com/android/dialer/notification/res/values-lv/strings.xml b/java/com/android/dialer/notification/res/values-lv/strings.xml index d465b682d1d9a3168c2aab277a156c08310288cc..1819d810ab7aa3e6c4a20c343ffdc9a788ca0268 100644 --- a/java/com/android/dialer/notification/res/values-lv/strings.xml +++ b/java/com/android/dialer/notification/res/values-lv/strings.xml @@ -21,6 +21,5 @@ "Aktīvie zvani" "Neatbildētie zvani" "Balss pasta ziņojumi" - "Ārējie zvani" "Noklusējums" diff --git a/java/com/android/dialer/notification/res/values-mk/strings.xml b/java/com/android/dialer/notification/res/values-mk/strings.xml index 838065ba9fb93cea5ab257262f94bca6d97a2ebb..56459c479de9ad00b3ddbb1bcfb755cf06cc30f9 100644 --- a/java/com/android/dialer/notification/res/values-mk/strings.xml +++ b/java/com/android/dialer/notification/res/values-mk/strings.xml @@ -21,6 +21,5 @@ "Појдовни повици" "Пропуштени повици" "Говорни пораки" - "Надворешни повици" "Стандардно" diff --git a/java/com/android/dialer/notification/res/values-ml/strings.xml b/java/com/android/dialer/notification/res/values-ml/strings.xml index 448186a36e9c8f7cfabc55db494c856dc81bf44e..49a64e8f565541b1dcd0e182875204edb35273d0 100644 --- a/java/com/android/dialer/notification/res/values-ml/strings.xml +++ b/java/com/android/dialer/notification/res/values-ml/strings.xml @@ -21,6 +21,5 @@ "നിലവിലുള്ള കോളുകൾ" "മിസ്‌ഡ് കോളുകൾ" "വോയ്‌സ്മെയിലുകൾ" - "എക്‌സ്റ്റേണൽ കോളുകൾ" "ഡിഫോൾട്ട്" diff --git a/java/com/android/dialer/notification/res/values-mn/strings.xml b/java/com/android/dialer/notification/res/values-mn/strings.xml index 3dca52e6b5c6035fecf201f8d8f2fcd5f5ec4f80..28297b3c1ce6e2f498f987d9570af6b7726cda43 100644 --- a/java/com/android/dialer/notification/res/values-mn/strings.xml +++ b/java/com/android/dialer/notification/res/values-mn/strings.xml @@ -21,6 +21,5 @@ "Үргэлжилж буй дуудлага" "Аваагүй дуудлага" "Дуут шуудан" - "Гадаад дуудлага" "Өгөгдмөл" diff --git a/java/com/android/dialer/notification/res/values-mr/strings.xml b/java/com/android/dialer/notification/res/values-mr/strings.xml index 5685376401f3b34927d873c339561c3ceb860d08..38fbd606a84acbd4dc4ed9bbb4db4404702e8b36 100644 --- a/java/com/android/dialer/notification/res/values-mr/strings.xml +++ b/java/com/android/dialer/notification/res/values-mr/strings.xml @@ -21,6 +21,5 @@ "सुरू असलेले कॉल" "सुटलेले कॉल" "व्हॉइसमेल" - "बाह्य कॉल" "डीफॉल्ट" diff --git a/java/com/android/dialer/notification/res/values-ms/strings.xml b/java/com/android/dialer/notification/res/values-ms/strings.xml index a1961c4a46889fc04171b12558c74345a4d7213d..ec7be04efbbf13cd8c5bf9fe2f5911a1c5ff7946 100644 --- a/java/com/android/dialer/notification/res/values-ms/strings.xml +++ b/java/com/android/dialer/notification/res/values-ms/strings.xml @@ -21,6 +21,5 @@ "Panggilan sedang berlangsung" "Panggilan terlepas" "Mel suara" - "Panggilan luar" "Lalai" diff --git a/java/com/android/dialer/notification/res/values-my/strings.xml b/java/com/android/dialer/notification/res/values-my/strings.xml index 26398b4593d36e089dd71282a17b9f347f4ab4c1..44df8479873a565171b29a6ee9fb8af9364c14ad 100644 --- a/java/com/android/dialer/notification/res/values-my/strings.xml +++ b/java/com/android/dialer/notification/res/values-my/strings.xml @@ -21,6 +21,5 @@ "လက်ရှိခေါ်ဆိုမှုများ" "လွဲသွားသော ခေါ်ဆိုမှုများ" "အသံစာပို့စနစ်များ" - "ပြင်ပခေါ်ဆိုမှုများ" "မူရင်း" diff --git a/java/com/android/dialer/notification/res/values-nb/strings.xml b/java/com/android/dialer/notification/res/values-nb/strings.xml index e4ccd48a09a5a46a4dfc917001419128644aeb6f..8e63fd24bb85e75e9f7251267ffc9c28f22a50f6 100644 --- a/java/com/android/dialer/notification/res/values-nb/strings.xml +++ b/java/com/android/dialer/notification/res/values-nb/strings.xml @@ -21,6 +21,5 @@ "Pågående samtaler" "Tapte anrop" "Talepost" - "Eksterne anrop" "Standard" diff --git a/java/com/android/dialer/notification/res/values-ne/strings.xml b/java/com/android/dialer/notification/res/values-ne/strings.xml index 8ccd2997aef2655ec48c5435bf41b31a7336be37..e653bb3f8cc525c7f4e8f497b7dc550cd676b56d 100644 --- a/java/com/android/dialer/notification/res/values-ne/strings.xml +++ b/java/com/android/dialer/notification/res/values-ne/strings.xml @@ -21,6 +21,5 @@ "जारी रहेका कलहरू" "छुटेका कलहरू" "भ्वाइस मेलहरू" - "बाह्य कलहरू" "पूर्वनिर्धारित मान" diff --git a/java/com/android/dialer/notification/res/values-nl/strings.xml b/java/com/android/dialer/notification/res/values-nl/strings.xml index e46dd19e38228ced78dd701b629b3076b6a7db21..094cc357f6b718705a13d2b3beec43a17d839360 100644 --- a/java/com/android/dialer/notification/res/values-nl/strings.xml +++ b/java/com/android/dialer/notification/res/values-nl/strings.xml @@ -21,6 +21,5 @@ "Actieve oproepen" "Gemiste oproepen" "Voicemails" - "Externe oproepen" "Standaard" diff --git a/java/com/android/dialer/notification/res/values-no/strings.xml b/java/com/android/dialer/notification/res/values-no/strings.xml index e4ccd48a09a5a46a4dfc917001419128644aeb6f..8e63fd24bb85e75e9f7251267ffc9c28f22a50f6 100644 --- a/java/com/android/dialer/notification/res/values-no/strings.xml +++ b/java/com/android/dialer/notification/res/values-no/strings.xml @@ -21,6 +21,5 @@ "Pågående samtaler" "Tapte anrop" "Talepost" - "Eksterne anrop" "Standard" diff --git a/java/com/android/dialer/notification/res/values-pa/strings.xml b/java/com/android/dialer/notification/res/values-pa/strings.xml index 40709c1acdcbccf0c343563d6703e36049da189b..c4ee97b223f57d65ad4b58be1565ae78d4677fd7 100644 --- a/java/com/android/dialer/notification/res/values-pa/strings.xml +++ b/java/com/android/dialer/notification/res/values-pa/strings.xml @@ -21,6 +21,5 @@ "ਆਊਟਗੋਇੰਗ ਕਾਲਾਂ" "ਖੁੰਝੀਆਂ ਕਾਲਾਂ" "ਵੌਇਸਮੇਲਾਂ" - "ਬਾਹਰੀ ਕਾਲਾਂ" "ਪੂਰਵ-ਨਿਰਧਾਰਤ" diff --git a/java/com/android/dialer/notification/res/values-pl/strings.xml b/java/com/android/dialer/notification/res/values-pl/strings.xml index 73b795cff7627e9cc5aadc7eb62175203f1e9516..4b3346001a3e9d1cee7236437b0614efab1c0280 100644 --- a/java/com/android/dialer/notification/res/values-pl/strings.xml +++ b/java/com/android/dialer/notification/res/values-pl/strings.xml @@ -21,6 +21,5 @@ "Połączenia trwające" "Połączenia nieodebrane" "Wiadomości głosowe" - "Połączenia zewnętrzne" "Domyślny" diff --git a/java/com/android/dialer/notification/res/values-pt-rBR/strings.xml b/java/com/android/dialer/notification/res/values-pt-rBR/strings.xml index f6e41cb11231d2ced7ebf22de6d150572f07796e..4b988c3ccafd58ee788e399e809becf0a8506d81 100644 --- a/java/com/android/dialer/notification/res/values-pt-rBR/strings.xml +++ b/java/com/android/dialer/notification/res/values-pt-rBR/strings.xml @@ -21,6 +21,5 @@ "Chamadas em andamento" "Chamadas perdidas" "Correios de voz" - "Chamadas externas" "Padrão" diff --git a/java/com/android/dialer/notification/res/values-pt-rPT/strings.xml b/java/com/android/dialer/notification/res/values-pt-rPT/strings.xml index ec42a5bf5723370193e3d02fc49c7b4b008fcdc5..45b31ebd005d3d05a89f4a7ef9e6bd90d8c784f6 100644 --- a/java/com/android/dialer/notification/res/values-pt-rPT/strings.xml +++ b/java/com/android/dialer/notification/res/values-pt-rPT/strings.xml @@ -21,6 +21,5 @@ "Chamadas efetuadas" "Chamadas não atendidas" "Mensagens de correio de voz" - "Chamadas externas" "Predefinição" diff --git a/java/com/android/dialer/notification/res/values-pt/strings.xml b/java/com/android/dialer/notification/res/values-pt/strings.xml index f6e41cb11231d2ced7ebf22de6d150572f07796e..4b988c3ccafd58ee788e399e809becf0a8506d81 100644 --- a/java/com/android/dialer/notification/res/values-pt/strings.xml +++ b/java/com/android/dialer/notification/res/values-pt/strings.xml @@ -21,6 +21,5 @@ "Chamadas em andamento" "Chamadas perdidas" "Correios de voz" - "Chamadas externas" "Padrão" diff --git a/java/com/android/dialer/notification/res/values-ro/strings.xml b/java/com/android/dialer/notification/res/values-ro/strings.xml index 7deeabba379cd109f55d48d44fa13ce597cbf60c..040c58ad2c10d05b25eb6083c3e274641d17c4f8 100644 --- a/java/com/android/dialer/notification/res/values-ro/strings.xml +++ b/java/com/android/dialer/notification/res/values-ro/strings.xml @@ -21,6 +21,5 @@ "Apeluri în desfășurare" "Apeluri nepreluate" "Mesaje vocale" - "Apeluri externe" "Prestabilit" diff --git a/java/com/android/dialer/notification/res/values-ru/strings.xml b/java/com/android/dialer/notification/res/values-ru/strings.xml index 3a114045598b54c5f2213c3853220da1318285f0..a8117990a8fbfaaeee85b829dcbc04544fde2483 100644 --- a/java/com/android/dialer/notification/res/values-ru/strings.xml +++ b/java/com/android/dialer/notification/res/values-ru/strings.xml @@ -21,6 +21,5 @@ "Текущие вызовы" "Пропущенные вызовы" "Голосовые сообщения" - "Внешние вызовы" "По умолчанию" diff --git a/java/com/android/dialer/notification/res/values-si/strings.xml b/java/com/android/dialer/notification/res/values-si/strings.xml index bf0a5a798672c330449bacd0c85cf9d26c703955..3ad0af7296bebab24566313c1fe5ea70c2bada50 100644 --- a/java/com/android/dialer/notification/res/values-si/strings.xml +++ b/java/com/android/dialer/notification/res/values-si/strings.xml @@ -21,6 +21,5 @@ "යන ඇමතුම්" "මඟ හැරුණු ඇමතුම්" "හඬ තැපැල්" - "බාහිර ඇමතුම්" "පෙරනිමි" diff --git a/java/com/android/dialer/notification/res/values-sk/strings.xml b/java/com/android/dialer/notification/res/values-sk/strings.xml index 4a67e60d2c8727d1ffa0100cd2878028f099cded..30941bcd56539d90b11f95b51aadc1f170db6bd5 100644 --- a/java/com/android/dialer/notification/res/values-sk/strings.xml +++ b/java/com/android/dialer/notification/res/values-sk/strings.xml @@ -21,6 +21,5 @@ "Prebiehajúce hovory" "Zmeškané hovory" "Hlasové správy" - "Externé hovory" "Predvolené" diff --git a/java/com/android/dialer/notification/res/values-sl/strings.xml b/java/com/android/dialer/notification/res/values-sl/strings.xml index e54111d12ae861c309c5b87fc629f12ec6a2a537..70474b87b86211c3eeb2f7e49437eb348022d84c 100644 --- a/java/com/android/dialer/notification/res/values-sl/strings.xml +++ b/java/com/android/dialer/notification/res/values-sl/strings.xml @@ -21,6 +21,5 @@ "Aktivni klici" "Neodgovorjeni klici" "Sporočila v odzivniku" - "Zunanji klici" "Privzeto" diff --git a/java/com/android/dialer/notification/res/values-sq/strings.xml b/java/com/android/dialer/notification/res/values-sq/strings.xml index 42d4daac3dbd11b4f25f170412ad6dca9c7cf55f..03bc24775838b8ca00bd8403847c88077dc212ac 100644 --- a/java/com/android/dialer/notification/res/values-sq/strings.xml +++ b/java/com/android/dialer/notification/res/values-sq/strings.xml @@ -21,6 +21,5 @@ "Telefonatat në vazhdim" "Telefonatat e humbura" "Postat zanore" - "Telefonatat e jashtme" "I parazgjedhur" diff --git a/java/com/android/dialer/notification/res/values-sr/strings.xml b/java/com/android/dialer/notification/res/values-sr/strings.xml index 10477170f308a43f92515e08b5eb3937cadff7df..8326c0403894c2c5a9e35d3fc6a55307df49e5b6 100644 --- a/java/com/android/dialer/notification/res/values-sr/strings.xml +++ b/java/com/android/dialer/notification/res/values-sr/strings.xml @@ -21,6 +21,5 @@ "Позиви у току" "Пропуштени позиви" "Говорне поруке" - "Спољни позиви" "Подразумевано" diff --git a/java/com/android/dialer/notification/res/values-sv/strings.xml b/java/com/android/dialer/notification/res/values-sv/strings.xml index 6c9ff83b716132a3a7215d5f533348b778827102..e3170d48f13cc746c3a32dcef916a51d95afae16 100644 --- a/java/com/android/dialer/notification/res/values-sv/strings.xml +++ b/java/com/android/dialer/notification/res/values-sv/strings.xml @@ -21,6 +21,5 @@ "Pågående samtal" "Missade samtal" "Röstmeddelanden" - "Externa samtal" "Standard" diff --git a/java/com/android/dialer/notification/res/values-sw/strings.xml b/java/com/android/dialer/notification/res/values-sw/strings.xml index a493f88977a81d61423f0a60a232be1eddd2e254..d0a65b08c363cd13b29b2809d8e9e2db800c96e4 100644 --- a/java/com/android/dialer/notification/res/values-sw/strings.xml +++ b/java/com/android/dialer/notification/res/values-sw/strings.xml @@ -21,6 +21,5 @@ "Simu zinazoendelea" "Simu ambazo hukujibu" "Ujumbe wa sauti" - "Simu za nje" "Chaguo-msingi" diff --git a/java/com/android/dialer/notification/res/values-ta/strings.xml b/java/com/android/dialer/notification/res/values-ta/strings.xml index d3000cf90544efd5fbad81f94ff7841eb21ba203..8a6ae89a8c877e88d842e9082db3c2ed7507dbf2 100644 --- a/java/com/android/dialer/notification/res/values-ta/strings.xml +++ b/java/com/android/dialer/notification/res/values-ta/strings.xml @@ -21,6 +21,5 @@ "செயலில் உள்ள அழைப்புகள்" "தவறிய அழைப்புகள்" "குரலஞ்சல்கள்" - "வெளி அழைப்புகள்" "இயல்பு" diff --git a/java/com/android/dialer/notification/res/values-te/strings.xml b/java/com/android/dialer/notification/res/values-te/strings.xml index b14b210712efdcd83cdd6c70957534ac15530aba..b1911d34d6ae6f8fd6d35ce17962de81b5fe2bce 100644 --- a/java/com/android/dialer/notification/res/values-te/strings.xml +++ b/java/com/android/dialer/notification/res/values-te/strings.xml @@ -21,6 +21,5 @@ "కొనసాగుతున్న కాల్‌లు" "సమాధానమివ్వని కాల్‌లు" "వాయిస్ మెయిల్‌లు" - "బాహ్య కాల్‌లు" "డిఫాల్ట్" diff --git a/java/com/android/dialer/notification/res/values-th/strings.xml b/java/com/android/dialer/notification/res/values-th/strings.xml index 45248bbbe7c3a437e19ba04676b15dc5f6552a8a..b2949e42f6a8e28e203fc7c5b907db1310aee7e2 100644 --- a/java/com/android/dialer/notification/res/values-th/strings.xml +++ b/java/com/android/dialer/notification/res/values-th/strings.xml @@ -21,6 +21,5 @@ "สายที่สนทนาอยู่" "สายที่ไม่ได้รับ" "ข้อความเสียง" - "สายนอก" "ค่าเริ่มต้น" diff --git a/java/com/android/dialer/notification/res/values-tl/strings.xml b/java/com/android/dialer/notification/res/values-tl/strings.xml index 3e88a055fe0d9abdff997c570ba022b7d256e3ec..1219ad86f4d3c4f85f6590e94cca667f15fcee5f 100644 --- a/java/com/android/dialer/notification/res/values-tl/strings.xml +++ b/java/com/android/dialer/notification/res/values-tl/strings.xml @@ -21,6 +21,5 @@ "Mga kasalukuyang tawag" "Mga hindi nasagot na tawag" "Mga voicemail" - "Mga external na tawag" "Default" diff --git a/java/com/android/dialer/notification/res/values-tr/strings.xml b/java/com/android/dialer/notification/res/values-tr/strings.xml index d4e063bc2ac43ee3830da37a7b7c1fdd6aaf5765..71c91c806275dad843e93c40413b7aabc733f70d 100644 --- a/java/com/android/dialer/notification/res/values-tr/strings.xml +++ b/java/com/android/dialer/notification/res/values-tr/strings.xml @@ -21,6 +21,5 @@ "Devam eden çağrılar" "Cevapsız çağrılar" "Sesli mesajlar" - "Harici çağrılar" "Varsayılan" diff --git a/java/com/android/dialer/notification/res/values-uk/strings.xml b/java/com/android/dialer/notification/res/values-uk/strings.xml index a83a58460b635bb9a3793f71a2f16c891b736835..a002f42e1e711b59ca4bcd9a024de7731cc1479f 100644 --- a/java/com/android/dialer/notification/res/values-uk/strings.xml +++ b/java/com/android/dialer/notification/res/values-uk/strings.xml @@ -21,6 +21,5 @@ "Поточні виклики" "Пропущені виклики" "Голосова пошта" - "Зовнішні виклики" "За умовчанням" diff --git a/java/com/android/dialer/notification/res/values-ur/strings.xml b/java/com/android/dialer/notification/res/values-ur/strings.xml index ba6e0d1dab3cb32a4e653983d25703d6b2064ebf..805fe08f81a18b2f8e85c34b53ab441a08bbbc9b 100644 --- a/java/com/android/dialer/notification/res/values-ur/strings.xml +++ b/java/com/android/dialer/notification/res/values-ur/strings.xml @@ -21,6 +21,5 @@ "جاری کالیں" "چھوٹی ہوئی کالیں" "صوتی میلز" - "بیرونی کالیں" "ڈیفالٹ" diff --git a/java/com/android/dialer/notification/res/values-uz/strings.xml b/java/com/android/dialer/notification/res/values-uz/strings.xml index d45ff47d2fa27e9e98b5b79fa229ebd016f5494e..16075b0317a8f869fc7e5e009ff423f8ba1cbfc9 100644 --- a/java/com/android/dialer/notification/res/values-uz/strings.xml +++ b/java/com/android/dialer/notification/res/values-uz/strings.xml @@ -21,6 +21,5 @@ "Davom etayotgan suhbatlar" "Javobsiz chaqiruvlar" "Ovozli xabarlar" - "Tashqi chaqiruvlar" "Standart" diff --git a/java/com/android/dialer/notification/res/values-vi/strings.xml b/java/com/android/dialer/notification/res/values-vi/strings.xml index 6df88721ef9fee19b510bcec574c54f8f7359bd8..b6ab3d2d8fbc978fc4c2fc95e2003803fa319d0d 100644 --- a/java/com/android/dialer/notification/res/values-vi/strings.xml +++ b/java/com/android/dialer/notification/res/values-vi/strings.xml @@ -21,6 +21,5 @@ "Cuộc gọi đến" "Cuộc gọi nhỡ" "Thư thoại" - "Cuộc gọi bên ngoài" "Mặc định" diff --git a/java/com/android/dialer/notification/res/values-zh-rCN/strings.xml b/java/com/android/dialer/notification/res/values-zh-rCN/strings.xml index fa5f0a65743fda5870d28662842ce64b63926adf..1ef46c2b99261210d659ece0c0b846811148e988 100644 --- a/java/com/android/dialer/notification/res/values-zh-rCN/strings.xml +++ b/java/com/android/dialer/notification/res/values-zh-rCN/strings.xml @@ -21,6 +21,5 @@ "正在进行的通话" "未接电话" "语音邮件" - "外部来电" "默认" diff --git a/java/com/android/dialer/notification/res/values-zh-rHK/strings.xml b/java/com/android/dialer/notification/res/values-zh-rHK/strings.xml index 307a7f9bff97e5c6780220f41614747f62951cba..43a6fabf699ae8ac86f0305c981623d201c3c8f5 100644 --- a/java/com/android/dialer/notification/res/values-zh-rHK/strings.xml +++ b/java/com/android/dialer/notification/res/values-zh-rHK/strings.xml @@ -21,6 +21,5 @@ "進行中的通話" "未接來電" "留言信箱" - "外部通話" "預設" diff --git a/java/com/android/dialer/notification/res/values-zh-rTW/strings.xml b/java/com/android/dialer/notification/res/values-zh-rTW/strings.xml index 054a2d737b014ff269ac2590309ce9551dfaf626..35236be1dfeb0d79d7faf2c2f428195fe89d213e 100644 --- a/java/com/android/dialer/notification/res/values-zh-rTW/strings.xml +++ b/java/com/android/dialer/notification/res/values-zh-rTW/strings.xml @@ -21,6 +21,5 @@ "進行中的通話" "未接來電" "語音留言" - "外部通話" "預設" diff --git a/java/com/android/dialer/notification/res/values-zu/strings.xml b/java/com/android/dialer/notification/res/values-zu/strings.xml index 744ffc8164d2d2ad5036d4d89b2090282a52da47..f3d95531f07bdf971646ca48cff3c27341d7b42f 100644 --- a/java/com/android/dialer/notification/res/values-zu/strings.xml +++ b/java/com/android/dialer/notification/res/values-zu/strings.xml @@ -21,6 +21,5 @@ "Amakholi aqhubekayo" "Amakholi akuphuthile" "Amavoyisimeyili" - "Amakholi angaphandle" "Okuzenzakalelayo" diff --git a/java/com/android/dialer/notification/res/values/strings.xml b/java/com/android/dialer/notification/res/values/strings.xml index cb3119f67acfdcb406174e2dbff57f9bdb2e911a..a3c6935aa21c72fc71c40f448b6ffcefc4966c09 100644 --- a/java/com/android/dialer/notification/res/values/strings.xml +++ b/java/com/android/dialer/notification/res/values/strings.xml @@ -20,7 +20,6 @@ Ongoing calls Missed calls Voicemails - External calls Default diff --git a/java/com/android/dialer/oem/CequintCallerIdManager.java b/java/com/android/dialer/oem/CequintCallerIdManager.java index 095ee4e66747549e8898d4487cd8b92a0fa69ede..86097c41ad529c6fc1802c08d315e3238905dd41 100644 --- a/java/com/android/dialer/oem/CequintCallerIdManager.java +++ b/java/com/android/dialer/oem/CequintCallerIdManager.java @@ -18,7 +18,6 @@ package com.android.dialer.oem; import android.annotation.TargetApi; import android.content.Context; import android.content.pm.PackageManager; -import android.database.ContentObserver; import android.database.Cursor; import android.net.Uri; import android.os.Build.VERSION_CODES; @@ -29,9 +28,8 @@ import android.support.annotation.WorkerThread; import android.telephony.PhoneNumberUtils; import android.text.TextUtils; import com.android.dialer.common.Assert; -import com.android.dialer.common.ConfigProviderBindings; import com.android.dialer.common.LogUtil; -import com.android.dialer.util.PermissionsUtil; +import com.android.dialer.configprovider.ConfigProviderBindings; import java.util.concurrent.ConcurrentHashMap; /** @@ -73,17 +71,12 @@ public class CequintCallerIdManager { private static final String IMAGE = "cid_pLogo"; private static final String DISPLAY_NAME = "cid_pDisplayName"; - // TODO: Revisit it and maybe remove it if it's not necessary. - private static final ConcurrentHashMap callLogCache = - new ConcurrentHashMap<>(); - private static final ConcurrentHashMap incallIncomingCallCache = - new ConcurrentHashMap<>(); - private static final ConcurrentHashMap incallOutgoingCallCache = - new ConcurrentHashMap<>(); - private static boolean hasRegisteredContentObserver; private static boolean hasAlreadyCheckedCequintCallerIdPackage; private static boolean isCequintCallerIdEnabled; + // TODO: Revisit it and maybe remove it if it's not necessary. + private final ConcurrentHashMap callLogCache; + /** Cequint caller id contact information. */ public static class CequintCallerIdContact { public final String name; @@ -117,27 +110,8 @@ public class CequintCallerIdManager { return isCequintCallerIdEnabled; } - @WorkerThread - @Nullable - public static CequintCallerIdContact getCequintCallerIdContact(Context context, String number) { - Assert.isWorkerThread(); - LogUtil.d( - "CequintCallerIdManager.getCequintCallerIdContact", - "number: %s", - LogUtil.sanitizePhoneNumber(number)); - if (callLogCache.containsKey(number)) { - return callLogCache.get(number); - } - CequintCallerIdContact cequintCallerIdContact = - lookup( - context, - CONTENT_URI, - PhoneNumberUtils.stripSeparators(number), - new String[] {"system"}); - if (cequintCallerIdContact != null) { - callLogCache.put(number, cequintCallerIdContact); - } - return cequintCallerIdContact; + public static CequintCallerIdManager createInstanceForCallLog() { + return new CequintCallerIdManager(); } @WorkerThread @@ -151,12 +125,6 @@ public class CequintCallerIdManager { LogUtil.sanitizePhoneNumber(number), LogUtil.sanitizePii(cnapName), isIncoming); - registerContentObserver(context); - if (isIncoming && incallIncomingCallCache.containsKey(number)) { - return incallIncomingCallCache.get(number); - } else if (!isIncoming && incallOutgoingCallCache.containsKey(number)) { - return incallOutgoingCallCache.get(number); - } int flag = 0; if (isIncoming) { flag |= CALLER_ID_LOOKUP_INCOMING_CALL; @@ -165,14 +133,28 @@ public class CequintCallerIdManager { flag |= CALLER_ID_LOOKUP_USER_PROVIDED_CID; } String[] flags = {cnapName, String.valueOf(flag)}; + return lookup(context, CONTENT_URI_FOR_INCALL, number, flags); + } + + @WorkerThread + @Nullable + public CequintCallerIdContact getCequintCallerIdContact(Context context, String number) { + Assert.isWorkerThread(); + LogUtil.d( + "CequintCallerIdManager.getCequintCallerIdContact", + "number: %s", + LogUtil.sanitizePhoneNumber(number)); + if (callLogCache.containsKey(number)) { + return callLogCache.get(number); + } CequintCallerIdContact cequintCallerIdContact = - lookup(context, CONTENT_URI_FOR_INCALL, number, flags); + lookup( + context, + CONTENT_URI, + PhoneNumberUtils.stripSeparators(number), + new String[] {"system"}); if (cequintCallerIdContact != null) { - if (isIncoming) { - incallIncomingCallCache.put(number, cequintCallerIdContact); - } else { - incallOutgoingCallCache.put(number, cequintCallerIdContact); - } + callLogCache.put(number, cequintCallerIdContact); } return cequintCallerIdContact; } @@ -285,33 +267,7 @@ public class CequintCallerIdManager { return geoDescription; } - private static synchronized void registerContentObserver(Context context) { - if (!PermissionsUtil.hasCequintPermissions(context)) { - LogUtil.i("CequintCallerIdManager.registerContentObserver", "no cequint permissions"); - return; - } - - if (hasRegisteredContentObserver) { - return; - } - ContentObserver contentObserver = - new ContentObserver(null) { - @Override - public void onChange(boolean selfChange) { - invalidateCache(); - } - }; - - context - .getContentResolver() - .registerContentObserver(CONTENT_URI_FOR_INCALL, true, contentObserver); - hasRegisteredContentObserver = true; - } - - private static void invalidateCache() { - incallIncomingCallCache.clear(); - incallOutgoingCallCache.clear(); + private CequintCallerIdManager() { + callLogCache = new ConcurrentHashMap<>(); } - - private CequintCallerIdManager() {} } diff --git a/java/com/android/dialer/oem/MotorolaHiddenMenuKeySequence.java b/java/com/android/dialer/oem/MotorolaHiddenMenuKeySequence.java index 9cf145b7afdc7e0a4f67a9f7462941f2ba17744c..79abff08e9c6489415724d6e317c5da54b53bfbb 100644 --- a/java/com/android/dialer/oem/MotorolaHiddenMenuKeySequence.java +++ b/java/com/android/dialer/oem/MotorolaHiddenMenuKeySequence.java @@ -67,9 +67,7 @@ public class MotorolaHiddenMenuKeySequence { } private MotorolaHiddenMenuKeySequence(Context context) { - featureHiddenMenuEnabled = - MotorolaUtils.isSpnMatched(context) - && context.getResources().getBoolean(R.bool.motorola_feature_hidden_menu); + featureHiddenMenuEnabled = MotorolaUtils.isSupportingHiddenMenu(context); // In case we do have a SPN from resource we need to match from service; otherwise we are // free to go if (featureHiddenMenuEnabled) { diff --git a/java/com/android/dialer/oem/MotorolaUtils.java b/java/com/android/dialer/oem/MotorolaUtils.java index db2b8909a0672c066e719d65a9fc3ddbe2b6337e..ffab8ea23523c4f994fc2a627f97095acc6573dd 100644 --- a/java/com/android/dialer/oem/MotorolaUtils.java +++ b/java/com/android/dialer/oem/MotorolaUtils.java @@ -18,8 +18,11 @@ package com.android.dialer.oem; import android.content.Context; import android.content.res.Resources; import android.telephony.TelephonyManager; -import com.android.dialer.common.ConfigProviderBindings; +import com.android.dialer.common.LogUtil; import com.android.dialer.common.PackageUtils; +import com.android.dialer.configprovider.ConfigProviderBindings; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; /** Util class for Motorola OEM devices. */ public class MotorolaUtils { @@ -39,6 +42,8 @@ public class MotorolaUtils { // This is used to check if a Motorola device supports WiFi call feature, by checking if a certain // package is enabled. private static final String WIFI_CALL_PACKAGE_NAME = "com.motorola.sprintwfc"; + // Thi is used to check if a Motorola device supports hidden menu feature. + private static final String HIDDEN_MENU_FEATURE = "com.motorola.software.sprint.hidden_menu"; // Feature flag indicates it's a HD call, currently this is only used by Motorola system build. // TODO(b/35359461): Use reference to android.provider.CallLog once it's in new SDK. @@ -64,6 +69,10 @@ public class MotorolaUtils { } } + static boolean isSupportingHiddenMenu(Context context) { + return context.getPackageManager().hasSystemFeature(HIDDEN_MENU_FEATURE); + } + public static boolean shouldBlinkHdIconWhenConnectingCall(Context context) { return ConfigProviderBindings.get(context) .getBoolean(CONFIG_HD_CODEC_BLINKING_ICON_WHEN_CONNECTING_CALL_ENABLED, true) @@ -102,6 +111,22 @@ public class MotorolaUtils { return MotorolaHiddenMenuKeySequence.handleCharSequence(context, input); } + public static boolean isWifiCallingAvailable(Context context) { + if (!isSupportingSprintWifiCall(context)) { + return false; + } + TelephonyManager telephonyManager = context.getSystemService(TelephonyManager.class); + try { + Method method = TelephonyManager.class.getMethod("isWifiCallingAvailable"); + boolean isWifiCallingAvailable = (boolean) method.invoke(telephonyManager); + LogUtil.d("MotorolaUtils.isWifiCallingAvailable", "%b", isWifiCallingAvailable); + return isWifiCallingAvailable; + } catch (NoSuchMethodException | InvocationTargetException | IllegalAccessException e) { + LogUtil.e("MotorolaUtils.isWifiCallingAvailable", "", e); + } + return false; + } + private static boolean isSupportingSprintHdCodec(Context context) { return isSpnMatched(context) && context.getResources().getBoolean(R.bool.motorola_sprint_hd_codec) diff --git a/java/com/android/dialer/oem/res/values-mcc310-mnc000/motorola_config.xml b/java/com/android/dialer/oem/res/values-mcc310-mnc000/motorola_config.xml index 7f63bee75ec926c22403871cfe82dc4eb24d2ebe..ac339752014782264cf9ac39a6030331cffa103f 100644 --- a/java/com/android/dialer/oem/res/values-mcc310-mnc000/motorola_config.xml +++ b/java/com/android/dialer/oem/res/values-mcc310-mnc000/motorola_config.xml @@ -1,6 +1,21 @@ + + true - true Sprint \ No newline at end of file diff --git a/java/com/android/dialer/oem/res/values-mcc310-mnc120/motorola_config.xml b/java/com/android/dialer/oem/res/values-mcc310-mnc120/motorola_config.xml index 39b72cdd14cd78c03db9c4d75054eccaa2520e07..c5cb0d1f725d33ffbef4ebc80cf6b8e1edfbf13d 100644 --- a/java/com/android/dialer/oem/res/values-mcc310-mnc120/motorola_config.xml +++ b/java/com/android/dialer/oem/res/values-mcc310-mnc120/motorola_config.xml @@ -1,5 +1,20 @@ + + true - true \ No newline at end of file diff --git a/java/com/android/dialer/oem/res/values-mcc311-mnc490/motorola_config.xml b/java/com/android/dialer/oem/res/values-mcc311-mnc490/motorola_config.xml index 39b72cdd14cd78c03db9c4d75054eccaa2520e07..c5cb0d1f725d33ffbef4ebc80cf6b8e1edfbf13d 100644 --- a/java/com/android/dialer/oem/res/values-mcc311-mnc490/motorola_config.xml +++ b/java/com/android/dialer/oem/res/values-mcc311-mnc490/motorola_config.xml @@ -1,5 +1,20 @@ + + true - true \ No newline at end of file diff --git a/java/com/android/dialer/oem/res/values-mcc311-mnc870/motorola_config.xml b/java/com/android/dialer/oem/res/values-mcc311-mnc870/motorola_config.xml index 39b72cdd14cd78c03db9c4d75054eccaa2520e07..c5cb0d1f725d33ffbef4ebc80cf6b8e1edfbf13d 100644 --- a/java/com/android/dialer/oem/res/values-mcc311-mnc870/motorola_config.xml +++ b/java/com/android/dialer/oem/res/values-mcc311-mnc870/motorola_config.xml @@ -1,5 +1,20 @@ + + true - true \ No newline at end of file diff --git a/java/com/android/dialer/oem/res/values-mcc312-mnc530/motorola_config.xml b/java/com/android/dialer/oem/res/values-mcc312-mnc530/motorola_config.xml index 39b72cdd14cd78c03db9c4d75054eccaa2520e07..c5cb0d1f725d33ffbef4ebc80cf6b8e1edfbf13d 100644 --- a/java/com/android/dialer/oem/res/values-mcc312-mnc530/motorola_config.xml +++ b/java/com/android/dialer/oem/res/values-mcc312-mnc530/motorola_config.xml @@ -1,5 +1,20 @@ + + true - true \ No newline at end of file diff --git a/java/com/android/dialer/oem/res/values-mcc316-mnc010/motorola_config.xml b/java/com/android/dialer/oem/res/values-mcc316-mnc010/motorola_config.xml index 39b72cdd14cd78c03db9c4d75054eccaa2520e07..c5cb0d1f725d33ffbef4ebc80cf6b8e1edfbf13d 100644 --- a/java/com/android/dialer/oem/res/values-mcc316-mnc010/motorola_config.xml +++ b/java/com/android/dialer/oem/res/values-mcc316-mnc010/motorola_config.xml @@ -1,5 +1,20 @@ + + true - true \ No newline at end of file diff --git a/java/com/android/dialer/oem/res/values/motorola_config.xml b/java/com/android/dialer/oem/res/values/motorola_config.xml index f875d573d2ea51216f5bb05087fea64bb1b0df60..46e7a16b68c0ac003b13d9194f83cd6a805c79da 100644 --- a/java/com/android/dialer/oem/res/values/motorola_config.xml +++ b/java/com/android/dialer/oem/res/values/motorola_config.xml @@ -1,12 +1,25 @@ + + false - - false - diff --git a/java/com/android/dialer/p13n/inference/P13nRanking.java b/java/com/android/dialer/p13n/inference/P13nRanking.java index 0682e85db1972df11c6743a0b9198979fdbb96c7..79b4d7136f4e5bb736194ce7bfa01fce345ac37b 100644 --- a/java/com/android/dialer/p13n/inference/P13nRanking.java +++ b/java/com/android/dialer/p13n/inference/P13nRanking.java @@ -22,7 +22,7 @@ import android.support.annotation.MainThread; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import com.android.dialer.common.Assert; -import com.android.dialer.common.ConfigProviderBindings; +import com.android.dialer.configprovider.ConfigProviderBindings; import com.android.dialer.p13n.inference.protocol.P13nRanker; import com.android.dialer.p13n.inference.protocol.P13nRankerFactory; import java.util.List; diff --git a/java/com/android/dialer/performancereport/PerformanceReport.java b/java/com/android/dialer/performancereport/PerformanceReport.java new file mode 100644 index 0000000000000000000000000000000000000000..27fd7485b7407c98e37668e2a5c8d8b0a250d35f --- /dev/null +++ b/java/com/android/dialer/performancereport/PerformanceReport.java @@ -0,0 +1,155 @@ +/* + * Copyright (C) 2017 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License + */ + +package com.android.dialer.performancereport; + +import android.os.SystemClock; +import android.support.annotation.Nullable; +import android.support.v7.widget.RecyclerView; +import android.widget.AbsListView; +import com.android.dialer.common.LogUtil; +import com.android.dialer.logging.UiAction; +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.TimeUnit; + +/** Tracks UI performance for a call. */ +public final class PerformanceReport { + + private static final long INVALID_TIME = -1; + private static final long ACTIVE_DURATION = TimeUnit.MINUTES.toMillis(5); + + private static final List actions = new ArrayList<>(); + private static final List actionTimestamps = new ArrayList<>(); + + private static final RecyclerView.OnScrollListener recordOnScrollListener = + new RecyclerView.OnScrollListener() { + @Override + public void onScrollStateChanged(RecyclerView recyclerView, int newState) { + if (newState == RecyclerView.SCROLL_STATE_SETTLING) { + PerformanceReport.recordClick(UiAction.Type.SCROLL); + } + super.onScrollStateChanged(recyclerView, newState); + } + }; + + private static boolean recording = false; + private static long appLaunchTimeMillis = INVALID_TIME; + private static long firstClickTimeMillis = INVALID_TIME; + private static long lastActionTimeMillis = INVALID_TIME; + + @Nullable private static UiAction.Type ignoreActionOnce = null; + + private PerformanceReport() {} + + public static void startRecording() { + LogUtil.enterBlock("PerformanceReport.startRecording"); + + appLaunchTimeMillis = SystemClock.elapsedRealtime(); + lastActionTimeMillis = appLaunchTimeMillis; + if (!actions.isEmpty()) { + actions.clear(); + actionTimestamps.clear(); + } + recording = true; + } + + public static void stopRecording() { + LogUtil.enterBlock("PerformanceReport.stopRecording"); + recording = false; + } + + public static void recordClick(UiAction.Type action) { + if (!recording) { + return; + } + + if (action == ignoreActionOnce) { + LogUtil.i("PerformanceReport.recordClick", "%s is ignored", action.toString()); + ignoreActionOnce = null; + return; + } + ignoreActionOnce = null; + + LogUtil.v("PerformanceReport.recordClick", action.toString()); + + // Timeout + long currentTime = SystemClock.elapsedRealtime(); + if (currentTime - lastActionTimeMillis > ACTIVE_DURATION) { + startRecording(); + recordClick(action); + return; + } + + lastActionTimeMillis = currentTime; + if (actions.isEmpty()) { + firstClickTimeMillis = currentTime; + } + actions.add(action); + actionTimestamps.add(currentTime - appLaunchTimeMillis); + } + + public static void recordScrollStateChange(int scrollState) { + if (scrollState == AbsListView.OnScrollListener.SCROLL_STATE_TOUCH_SCROLL) { + recordClick(UiAction.Type.SCROLL); + } + } + + public static void logOnScrollStateChange(RecyclerView recyclerView) { + // Remove the listener in case it was added before + recyclerView.removeOnScrollListener(recordOnScrollListener); + recyclerView.addOnScrollListener(recordOnScrollListener); + } + + public static boolean isRecording() { + return recording; + } + + public static long getTimeSinceAppLaunch() { + if (appLaunchTimeMillis == INVALID_TIME) { + return INVALID_TIME; + } + return SystemClock.elapsedRealtime() - appLaunchTimeMillis; + } + + public static long getTimeSinceFirstClick() { + if (firstClickTimeMillis == INVALID_TIME) { + return INVALID_TIME; + } + return SystemClock.elapsedRealtime() - firstClickTimeMillis; + } + + public static List getActions() { + return actions; + } + + public static List getActionTimestamps() { + return actionTimestamps; + } + + @Nullable + public static UiAction.Type getIgnoreActionOnce() { + return ignoreActionOnce; + } + + public static void setIgnoreActionOnce(@Nullable UiAction.Type ignoreActionOnce) { + PerformanceReport.ignoreActionOnce = ignoreActionOnce; + LogUtil.i( + "PerformanceReport.setIgnoreActionOnce", + "next action will be ignored once if it is %s", + ignoreActionOnce.toString()); + } +} diff --git a/java/com/android/dialer/phonenumbercache/CachedNumberLookupService.java b/java/com/android/dialer/phonenumbercache/CachedNumberLookupService.java index 2aed9e75ec9f9454c8c48993aaee8bfacedb6c2d..c398251e41e3ec6ddb67184b1251b73240782ba3 100644 --- a/java/com/android/dialer/phonenumbercache/CachedNumberLookupService.java +++ b/java/com/android/dialer/phonenumbercache/CachedNumberLookupService.java @@ -49,6 +49,8 @@ public interface CachedNumberLookupService { boolean canReportAsInvalid(ContactSource.Type sourceType, String objectId); + boolean reportAsInvalid(Context context, CachedContactInfo cachedContactInfo); + /** @return return {@link Uri} to the photo or return {@code null} when failing to add photo */ @Nullable Uri addPhoto(Context context, String number, InputStream in); diff --git a/java/com/android/dialer/phonenumbercache/ContactInfo.java b/java/com/android/dialer/phonenumbercache/ContactInfo.java index 5546553f9fcf4b1815a436859df79b7f1cf9c63d..aef7374e43d5b048294e9e46029e452435b3abac 100644 --- a/java/com/android/dialer/phonenumbercache/ContactInfo.java +++ b/java/com/android/dialer/phonenumbercache/ContactInfo.java @@ -17,7 +17,7 @@ package com.android.dialer.phonenumbercache; import android.net.Uri; -import android.support.annotation.Nullable; +import android.support.annotation.NonNull; import android.text.TextUtils; import com.android.contacts.common.ContactsUtils.UserType; import com.android.contacts.common.util.UriUtils; @@ -59,7 +59,7 @@ public class ContactInfo { public boolean isBadData; public String objectId; public @UserType long userType; - public @Nullable ContactSource.Type sourceType = ContactSource.Type.UNKNOWN_SOURCE_TYPE; + public @NonNull ContactSource.Type sourceType = ContactSource.Type.UNKNOWN_SOURCE_TYPE; /** * True if local contact exists. This is only used for Cequint Caller ID so it won't overwrite * photo if local contact exists. diff --git a/java/com/android/dialer/phonenumbercache/ContactInfoHelper.java b/java/com/android/dialer/phonenumbercache/ContactInfoHelper.java index bd4ba9764008e9b9bf512e7e3a6b9adc907e19e9..4fa3147eb3c5bcd85ef7431bdff1273332465d9c 100644 --- a/java/com/android/dialer/phonenumbercache/ContactInfoHelper.java +++ b/java/com/android/dialer/phonenumbercache/ContactInfoHelper.java @@ -203,6 +203,7 @@ public class ContactInfoHelper { return info; } + @Nullable public ContactInfo lookupNumber(String number, String countryIso) { return lookupNumber(number, countryIso, -1); } @@ -223,12 +224,14 @@ public class ContactInfoHelper { @SuppressWarnings("ReferenceEquality") public ContactInfo lookupNumber(String number, String countryIso, long directoryId) { if (TextUtils.isEmpty(number)) { + LogUtil.d("ContactInfoHelper.lookupNumber", "number is empty"); return null; } ContactInfo info; if (PhoneNumberHelper.isUriNumber(number)) { + LogUtil.d("ContactInfoHelper.lookupNumber", "number is sip"); // The number is a SIP address.. info = lookupContactFromUri(getContactInfoLookupUri(number, directoryId)); if (info == null || info == ContactInfo.EMPTY) { @@ -246,6 +249,7 @@ public class ContactInfoHelper { final ContactInfo updatedInfo; if (info == null) { // The lookup failed. + LogUtil.d("ContactInfoHelper.lookupNumber", "lookup failed"); updatedInfo = null; } else { // If we did not find a matching contact, generate an empty contact info for the number. @@ -325,9 +329,11 @@ public class ContactInfoHelper { */ ContactInfo lookupContactFromUri(Uri uri) { if (uri == null) { + LogUtil.d("ContactInfoHelper.lookupContactFromUri", "uri is null"); return null; } if (!PermissionsUtil.hasContactsReadPermissions(mContext)) { + LogUtil.d("ContactInfoHelper.lookupContactFromUri", "no contact permission, return empty"); return ContactInfo.EMPTY; } @@ -336,10 +342,12 @@ public class ContactInfoHelper { String[] projection = PhoneQuery.getPhoneLookupProjection(uri); phoneLookupCursor = mContext.getContentResolver().query(uri, projection, null, null, null); } catch (NullPointerException e) { + LogUtil.e("ContactInfoHelper.lookupContactFromUri", "phone lookup", e); // Trap NPE from pre-N CP2 return null; } if (phoneLookupCursor == null) { + LogUtil.d("ContactInfoHelper.lookupContactFromUri", "phoneLookupCursor is null"); return null; } @@ -408,19 +416,32 @@ public class ContactInfoHelper { private ContactInfo queryContactInfoForPhoneNumber( String number, String countryIso, long directoryId) { if (TextUtils.isEmpty(number)) { + LogUtil.d("ContactInfoHelper.queryContactInfoForPhoneNumber", "number is empty"); return null; } ContactInfo info = lookupContactFromUri(getContactInfoLookupUri(number, directoryId)); + if (info == null) { + LogUtil.d("ContactInfoHelper.queryContactInfoForPhoneNumber", "info looked up is null"); + } if (info != null && info != ContactInfo.EMPTY) { info.formattedNumber = formatPhoneNumber(number, null, countryIso); + if (directoryId == -1) { + // Contact found in the default directory + info.sourceType = ContactSource.Type.SOURCE_TYPE_DIRECTORY; + } else { + // Contact found in the extended directory specified by directoryId + info.sourceType = ContactSource.Type.SOURCE_TYPE_EXTENDED; + } } else if (mCachedNumberLookupService != null) { CachedContactInfo cacheInfo = mCachedNumberLookupService.lookupCachedContactFromNumber(mContext, number); if (cacheInfo != null) { - info = cacheInfo.getContactInfo().isBadData ? null : cacheInfo.getContactInfo(); - } else { - info = null; + if (!cacheInfo.getContactInfo().isBadData) { + info = cacheInfo.getContactInfo(); + } else { + LogUtil.i("ContactInfoHelper.queryContactInfoForPhoneNumber", "info is bad data"); + } } } return info; @@ -601,13 +622,17 @@ public class ContactInfoHelper { * will be updated if available. */ @WorkerThread - public void updateFromCequintCallerId(ContactInfo info, String number) { + public void updateFromCequintCallerId( + @Nullable CequintCallerIdManager cequintCallerIdManager, ContactInfo info, String number) { Assert.isWorkerThread(); if (!CequintCallerIdManager.isCequintCallerIdEnabled(mContext)) { return; } + if (cequintCallerIdManager == null) { + return; + } CequintCallerIdContact cequintCallerIdContact = - CequintCallerIdManager.getCequintCallerIdContact(mContext, number); + cequintCallerIdManager.getCequintCallerIdContact(mContext, number); if (cequintCallerIdContact == null) { return; } diff --git a/java/com/android/dialer/phonenumberproto/Converter.java b/java/com/android/dialer/phonenumberproto/Converter.java new file mode 100644 index 0000000000000000000000000000000000000000..453b98844f6df1fceef5e1c99a7891a4114af154 --- /dev/null +++ b/java/com/android/dialer/phonenumberproto/Converter.java @@ -0,0 +1,120 @@ +/* + * Copyright (C) 2017 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.android.dialer.phonenumberproto; + +import com.android.dialer.DialerInternalPhoneNumber; +import com.google.i18n.phonenumbers.Phonenumber.PhoneNumber; + +/** + * Methods for converting from {@link PhoneNumber} POJOs to {@link DialerInternalPhoneNumber} protos + * and back. + */ +class Converter { + + static DialerInternalPhoneNumber pojoToProto(PhoneNumber pojo) { + DialerInternalPhoneNumber.Builder proto = DialerInternalPhoneNumber.newBuilder(); + if (pojo.hasCountryCode()) { + proto.setCountryCode(pojo.getCountryCode()); + } + if (pojo.hasCountryCodeSource()) { + switch (pojo.getCountryCodeSource()) { + case FROM_NUMBER_WITH_PLUS_SIGN: + proto.setCountryCodeSource( + DialerInternalPhoneNumber.CountryCodeSource.FROM_NUMBER_WITH_PLUS_SIGN); + break; + case FROM_NUMBER_WITH_IDD: + proto.setCountryCodeSource( + DialerInternalPhoneNumber.CountryCodeSource.FROM_NUMBER_WITH_IDD); + break; + case FROM_NUMBER_WITHOUT_PLUS_SIGN: + proto.setCountryCodeSource( + DialerInternalPhoneNumber.CountryCodeSource.FROM_NUMBER_WITHOUT_PLUS_SIGN); + break; + case FROM_DEFAULT_COUNTRY: + proto.setCountryCodeSource( + DialerInternalPhoneNumber.CountryCodeSource.FROM_DEFAULT_COUNTRY); + break; + default: + throw new IllegalArgumentException( + "unsupported country code source: " + pojo.getCountryCodeSource()); + } + } + if (pojo.hasExtension()) { + proto.setExtension(pojo.getExtension()); + } + if (pojo.hasItalianLeadingZero()) { + proto.setItalianLeadingZero(pojo.isItalianLeadingZero()); + } + if (pojo.hasNationalNumber()) { + proto.setNationalNumber(pojo.getNationalNumber()); + } + if (pojo.hasNumberOfLeadingZeros()) { + proto.setNumberOfLeadingZeros(pojo.getNumberOfLeadingZeros()); + } + if (pojo.hasPreferredDomesticCarrierCode()) { + proto.setPreferredDomesticCarrierCode(pojo.getPreferredDomesticCarrierCode()); + } + if (pojo.hasRawInput()) { + proto.setRawInput(pojo.getRawInput()); + } + return proto.build(); + } + + static PhoneNumber protoToPojo(DialerInternalPhoneNumber proto) { + PhoneNumber pojo = new PhoneNumber(); + if (proto.hasCountryCode()) { + pojo.setCountryCode(proto.getCountryCode()); + } + if (proto.hasCountryCodeSource()) { + switch (proto.getCountryCodeSource()) { + case FROM_NUMBER_WITH_PLUS_SIGN: + pojo.setCountryCodeSource(PhoneNumber.CountryCodeSource.FROM_NUMBER_WITH_PLUS_SIGN); + break; + case FROM_NUMBER_WITH_IDD: + pojo.setCountryCodeSource(PhoneNumber.CountryCodeSource.FROM_NUMBER_WITH_IDD); + break; + case FROM_NUMBER_WITHOUT_PLUS_SIGN: + pojo.setCountryCodeSource(PhoneNumber.CountryCodeSource.FROM_NUMBER_WITHOUT_PLUS_SIGN); + break; + case FROM_DEFAULT_COUNTRY: + pojo.setCountryCodeSource(PhoneNumber.CountryCodeSource.FROM_DEFAULT_COUNTRY); + break; + default: + throw new IllegalArgumentException( + "unsupported country code source: " + proto.getCountryCodeSource()); + } + } + if (proto.hasExtension()) { + pojo.setExtension(proto.getExtension()); + } + if (proto.hasItalianLeadingZero()) { + pojo.setItalianLeadingZero(proto.getItalianLeadingZero()); + } + if (proto.hasNationalNumber()) { + pojo.setNationalNumber(proto.getNationalNumber()); + } + if (proto.hasNumberOfLeadingZeros()) { + pojo.setNumberOfLeadingZeros(proto.getNumberOfLeadingZeros()); + } + if (proto.hasPreferredDomesticCarrierCode()) { + pojo.setPreferredDomesticCarrierCode(proto.getPreferredDomesticCarrierCode()); + } + if (proto.hasRawInput()) { + pojo.setRawInput(proto.getRawInput()); + } + return pojo; + } +} diff --git a/java/com/android/dialer/phonenumberproto/DialerPhoneNumberUtil.java b/java/com/android/dialer/phonenumberproto/DialerPhoneNumberUtil.java new file mode 100644 index 0000000000000000000000000000000000000000..cc509f41ba57fd67ba4707bce6d3cb4954b7775f --- /dev/null +++ b/java/com/android/dialer/phonenumberproto/DialerPhoneNumberUtil.java @@ -0,0 +1,108 @@ +/* + * Copyright (C) 2017 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.dialer.phonenumberproto; + +import android.support.annotation.NonNull; +import android.support.annotation.Nullable; +import android.support.annotation.WorkerThread; +import com.android.dialer.DialerInternalPhoneNumber; +import com.android.dialer.DialerPhoneNumber; +import com.android.dialer.DialerPhoneNumber.RawInput; +import com.android.dialer.common.Assert; +import com.android.dialer.common.LogUtil; +import com.google.i18n.phonenumbers.NumberParseException; +import com.google.i18n.phonenumbers.PhoneNumberUtil; +import com.google.i18n.phonenumbers.PhoneNumberUtil.MatchType; + +/** + * Wrapper for selected methods in {@link PhoneNumberUtil} which uses the {@link DialerPhoneNumber} + * lite proto instead of the {@link com.google.i18n.phonenumbers.Phonenumber.PhoneNumber} POJO. + * + *

      All methods should be called on a worker thread. + */ +public class DialerPhoneNumberUtil { + private final PhoneNumberUtil phoneNumberUtil; + + @WorkerThread + public DialerPhoneNumberUtil(@NonNull PhoneNumberUtil phoneNumberUtil) { + Assert.isWorkerThread(); + this.phoneNumberUtil = Assert.isNotNull(phoneNumberUtil); + } + + /** + * Parses the provided raw phone number into a {@link DialerPhoneNumber}. + * + * @see PhoneNumberUtil#parse(String, String) + */ + @WorkerThread + public DialerPhoneNumber parse(@Nullable String numberToParse, @Nullable String defaultRegion) { + Assert.isWorkerThread(); + + DialerPhoneNumber.Builder dialerPhoneNumber = DialerPhoneNumber.newBuilder(); + RawInput.Builder rawInput = RawInput.newBuilder(); + // Numbers can be null or empty for incoming "unknown" calls. + if (numberToParse != null) { + rawInput.setNumber(numberToParse); + } + if (defaultRegion != null) { + rawInput.setCountryIso(defaultRegion); + } + dialerPhoneNumber.setRawInput(rawInput.build()); + + try { + dialerPhoneNumber.setDialerInternalPhoneNumber( + Converter.pojoToProto(phoneNumberUtil.parse(numberToParse, defaultRegion))); + } catch (NumberParseException e) { + LogUtil.w("DialerPhoneNumberUtil.parse", "couldn't parse phone number", e); + } + return dialerPhoneNumber.build(); + } + + /** + * Returns true if the two numbers were parseable by libphonenumber and are an {@link + * MatchType#EXACT_MATCH} or if they have the same raw input. + */ + @WorkerThread + public boolean isExactMatch( + @NonNull DialerPhoneNumber firstNumberIn, @NonNull DialerPhoneNumber secondNumberIn) { + Assert.isWorkerThread(); + if (!Assert.isNotNull(firstNumberIn).hasDialerInternalPhoneNumber() + || !Assert.isNotNull(secondNumberIn).hasDialerInternalPhoneNumber()) { + return firstNumberIn.getRawInput().equals(secondNumberIn.getRawInput()); + } + return isNumberMatch( + firstNumberIn.getDialerInternalPhoneNumber(), + secondNumberIn.getDialerInternalPhoneNumber()) + == MatchType.EXACT_MATCH; + } + + /** + * Compares the provided phone numbers. + * + * @see PhoneNumberUtil#isNumberMatch(com.google.i18n.phonenumbers.Phonenumber.PhoneNumber, + * com.google.i18n.phonenumbers.Phonenumber.PhoneNumber) + */ + @WorkerThread + private MatchType isNumberMatch( + @NonNull DialerInternalPhoneNumber firstNumberIn, + @NonNull DialerInternalPhoneNumber secondNumberIn) { + Assert.isWorkerThread(); + return phoneNumberUtil.isNumberMatch( + Converter.protoToPojo(Assert.isNotNull(firstNumberIn)), + Converter.protoToPojo(Assert.isNotNull(secondNumberIn))); + } +} diff --git a/java/com/android/dialer/phonenumberproto/dialer_phone_number.proto b/java/com/android/dialer/phonenumberproto/dialer_phone_number.proto new file mode 100644 index 0000000000000000000000000000000000000000..a0f362631b6fd269318e15c5fd8a3576143d51f8 --- /dev/null +++ b/java/com/android/dialer/phonenumberproto/dialer_phone_number.proto @@ -0,0 +1,172 @@ +// Copyright (C) 2017 The Android Open Source Project +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License + +syntax = "proto2"; + +option java_package = "com.android.dialer"; +option java_multiple_files = true; +option optimize_for = LITE_RUNTIME; + +package com.android.dialer; + +// A phone number for use in the dialer application. It consists of a +// DialerInternalPhoneNumber, which is a copy of libphonenumber's PhoneNumber +// proto, and the raw input used to create it. +message DialerPhoneNumber { + // libphonenumber representation of the phone number. May be empty if the raw + // input failed to parse, in which case raw_input should be used. + optional DialerInternalPhoneNumber dialer_internal_phone_number = 1; + + // The raw input which was used to create a DialerPhoneNumber. + message RawInput { + // The phone number as it was entered or received. + optional string number = 1; + // The ISO 3166-1 two letter country code of the country where the user made + // or received the call. + optional string country_iso = 2; + } + // Prefer to use dialer_internal_phone_number if present. + optional RawInput raw_input = 2; +} + +// This is a copy of libphonenumber proto file for use in the dialer codebase. +// We cannot depend on the real libphonenumber proto because it is not exposed +// in any open source library. As such, this file could fall out of sync with +// that proto over time. +// +// The only difference between this proto and the libphonenumber proto (as of +// when this file was created) is the package name and proto name. +// +// If the libphonenumber proto becomes accessible some day, it may be possible +// to remove this proto and use the real libphonenumber proto assuming this +// proto is kept wire-compatible with it. +message DialerInternalPhoneNumber { + // The country calling code for this number, as defined by the International + // Telecommunication Union (ITU). For example, this would be 1 for NANPA + // countries, and 33 for France. + required int32 country_code = 1; + + // The National (significant) Number, as defined in International + // Telecommunication Union (ITU) Recommendation E.164, without any leading + // zero. The leading-zero is stored separately if required, since this is an + // uint64 and hence cannot store such information. Do not use this field + // directly: if you want the national significant number, call the + // getNationalSignificantNumber method of PhoneNumberUtil. + // + // For countries which have the concept of an "area code" or "national + // destination code", this is included in the National (significant) Number. + // Although the ITU says the maximum length should be 15, we have found longer + // numbers in some countries e.g. Germany. + // Note that the National (significant) Number does not contain the National + // (trunk) prefix. Obviously, as a uint64, it will never contain any + // formatting (hyphens, spaces, parentheses), nor any alphanumeric spellings. + required uint64 national_number = 2 [jstype = JS_NUMBER]; + + // Extension is not standardized in ITU recommendations, except for being + // defined as a series of numbers with a maximum length of 40 digits. It is + // defined as a string here to accommodate for the possible use of a leading + // zero in the extension (organizations have complete freedom to do so, as + // there is no standard defined). Other than digits, some other dialling + // characters such as "," (indicating a wait) may be stored here. + optional string extension = 3; + + // In some countries, the national (significant) number starts with one or + // more "0"s without this being a national prefix or trunk code of some kind. + // For example, the leading zero in the national (significant) number of an + // Italian phone number indicates the number is a fixed-line number. There + // have been plans to migrate fixed-line numbers to start with the digit two + // since December 2000, but it has not happened yet. See + // http://en.wikipedia.org/wiki/%2B39 for more details. + // + // These fields can be safely ignored (there is no need to set them) for most + // countries. Some limited number of countries behave like Italy - for these + // cases, if the leading zero(s) of a number would be retained even when + // dialling internationally, set this flag to true, and also set the number of + // leading zeros. + // + // Clients who use the parsing or conversion functionality of the i18n phone + // number libraries (go/phonenumbers) will have these fields set if necessary + // automatically. + optional bool italian_leading_zero = 4; + optional int32 number_of_leading_zeros = 8 [default = 1]; + + // The next few fields are non-essential fields for a phone number. They + // retain extra information about the form the phone number was in when it was + // provided to us to parse. They can be safely ignored by most clients. To + // populate them, call parseAndKeepRawInput on PhoneNumberUtil. + + // This field is used to store the raw input string containing phone numbers + // before it was canonicalized by the library. For example, it could be used + // to store alphanumerical numbers such as "1-800-GOOG-411". + optional string raw_input = 5; + + // The source from which the country_code is derived. This is not set in the + // general parsing method, but in the method that parses and keeps raw_input. + // New fields could be added upon request. + enum CountryCodeSource { + // The country_code is derived based on a phone number with a leading "+", + // e.g. the French number "+33 1 42 68 53 00". + FROM_NUMBER_WITH_PLUS_SIGN = 1; + + // The country_code is derived based on a phone number with a leading IDD, + // e.g. the French number "011 33 1 42 68 53 00", as it is dialled from US. + FROM_NUMBER_WITH_IDD = 5; + + // The country_code is derived based on a phone number without a leading + // "+", e.g. the French number "33 1 42 68 53 00" when defaultCountry is + // supplied as France. + FROM_NUMBER_WITHOUT_PLUS_SIGN = 10; + + // The country_code is derived NOT based on the phone number itself, but + // from the defaultCountry parameter provided in the parsing function by the + // clients. This happens mostly for numbers written in the national format + // (without country code). For example, this would be set when parsing the + // French number "01 42 68 53 00", when defaultCountry is supplied as + // France. + FROM_DEFAULT_COUNTRY = 20; + } + + // The source from which the country_code is derived. + optional CountryCodeSource country_code_source = 6; + + // The carrier selection code that is preferred when calling this phone number + // domestically. This also includes codes that need to be dialed in some + // countries when calling from landlines to mobiles or vice versa. For + // example, in Columbia, a "3" needs to be dialed before the phone number + // itself when calling from a mobile phone to a domestic landline phone and + // vice versa. + // + // Note this is the "preferred" code, which means other codes may work as + // well. + optional string preferred_domestic_carrier_code = 7; +} + +// Examples: +// +// Google MTV, +1 650-253-0000, (650) 253-0000 +// country_code: 1 +// national_number: 6502530000 +// +// Google Paris, +33 (0)1 42 68 53 00, 01 42 68 53 00 +// country_code: 33 +// national_number: 142685300 +// +// Google Beijing, +86-10-62503000, (010) 62503000 +// country_code: 86 +// national_number: 1062503000 +// +// Google Italy, +39 02-36618 300, 02-36618 300 +// country_code: 39 +// national_number: 236618300 +// italian_leading_zero: true \ No newline at end of file diff --git a/java/com/android/dialer/postcall/AndroidManifest.xml b/java/com/android/dialer/postcall/AndroidManifest.xml index 79ca5d5eb74512e799d80bafb7e31d1cc334fef9..22c77dd93f56fa76d8b291114a8645f8c48748e7 100644 --- a/java/com/android/dialer/postcall/AndroidManifest.xml +++ b/java/com/android/dialer/postcall/AndroidManifest.xml @@ -21,7 +21,7 @@ diff --git a/java/com/android/dialer/postcall/PostCall.java b/java/com/android/dialer/postcall/PostCall.java index 586b47395ca8935c2066fee9ad88d2393beff45f..b17a9b66d200f24403dd20b2ac008472c92c59e1 100644 --- a/java/com/android/dialer/postcall/PostCall.java +++ b/java/com/android/dialer/postcall/PostCall.java @@ -26,24 +26,23 @@ import android.support.design.widget.Snackbar; import android.telephony.TelephonyManager; import android.view.View; import android.view.View.OnClickListener; -import com.android.dialer.buildtype.BuildType; -import com.android.dialer.common.Assert; -import com.android.dialer.common.ConfigProvider; -import com.android.dialer.common.ConfigProviderBindings; import com.android.dialer.common.LogUtil; +import com.android.dialer.configprovider.ConfigProvider; +import com.android.dialer.configprovider.ConfigProviderBindings; import com.android.dialer.enrichedcall.EnrichedCallCapabilities; import com.android.dialer.enrichedcall.EnrichedCallComponent; import com.android.dialer.enrichedcall.EnrichedCallManager; import com.android.dialer.logging.DialerImpression; import com.android.dialer.logging.Logger; +import com.android.dialer.performancereport.PerformanceReport; import com.android.dialer.util.DialerUtils; import com.android.dialer.util.IntentUtil; /** Helper class to handle all post call actions. */ public class PostCall { - private static final String KEY_POST_CALL_CALL_CONNECT_TIME = "post_call_call_connect_time"; private static final String KEY_POST_CALL_CALL_DISCONNECT_TIME = "post_call_call_disconnect_time"; + private static final String KEY_POST_CALL_CALL_CONNECT_TIME = "post_call_call_connect_time"; private static final String KEY_POST_CALL_CALL_NUMBER = "post_call_call_number"; private static final String KEY_POST_CALL_MESSAGE_SENT = "post_call_message_sent"; @@ -55,6 +54,8 @@ public class PostCall { promptUserToViewSentMessage(activity, rootView); } else if (shouldPromptUserToSendMessage(activity)) { promptUserToSendMessage(activity, rootView); + } else { + clear(activity); } } } @@ -160,6 +161,19 @@ public class PostCall { .apply(); } + /** + * Restart performance recording if there is a recent call (disconnect time to now is under + * threshold) + */ + public static void restartPerformanceRecordingIfARecentCallExist(Context context) { + long disconnectTimeMillis = + DialerUtils.getDefaultSharedPreferenceForDeviceProtectedStorageContext(context) + .getLong(PostCall.KEY_POST_CALL_CALL_DISCONNECT_TIME, -1); + if (disconnectTimeMillis != -1 && PerformanceReport.isRecording()) { + PerformanceReport.startRecording(); + } + } + private static void clear(Context context) { activeSnackbar = null; @@ -203,19 +217,7 @@ public class PostCall { } private static boolean isEnabled(Context context) { - @BuildType.Type int type = BuildType.get(); - switch (type) { - case BuildType.BUGFOOD: - case BuildType.DOGFOOD: - case BuildType.FISHFOOD: - case BuildType.TEST: - return ConfigProviderBindings.get(context).getBoolean("enable_post_call", true); - case BuildType.RELEASE: - return ConfigProviderBindings.get(context).getBoolean("enable_post_call_prod", true); - default: - Assert.fail(); - return false; - } + return ConfigProviderBindings.get(context).getBoolean("enable_post_call_prod", true); } private static boolean isSimReady(Context context) { diff --git a/java/com/android/dialer/protos/ProtoParsers.java b/java/com/android/dialer/protos/ProtoParsers.java index b77c0699b667d0be3bd462b9ae7cc5f9e28ac7d7..5a60799bc0467b8dcbeda0f3da4d31d2661f6841 100644 --- a/java/com/android/dialer/protos/ProtoParsers.java +++ b/java/com/android/dialer/protos/ProtoParsers.java @@ -18,13 +18,10 @@ package com.android.dialer.protos; import android.content.Intent; import android.os.Bundle; -import android.os.Parcel; -import android.os.Parcelable; +import android.support.annotation.NonNull; import com.android.dialer.common.Assert; -import com.google.protobuf.CodedOutputStream; import com.google.protobuf.InvalidProtocolBufferException; import com.google.protobuf.MessageLite; -import java.io.IOException; /** Useful methods for using Protocol Buffers with Android. */ public final class ProtoParsers { @@ -35,11 +32,8 @@ public final class ProtoParsers { @SuppressWarnings("unchecked") // We want to eventually optimize away parser classes, so cast public static T get(Bundle bundle, String key, T defaultInstance) throws InvalidProtocolBufferException { - // Class loaders are unique to each Class instance, so we need to specify how to decode - // the information again, even though we set the class loaders when serializing the data. - bundle.setClassLoader(ProtoParsers.class.getClassLoader()); - InternalDontUse parcelable = bundle.getParcelable(key); - return (T) parcelable.getMessageUnsafe(defaultInstance.getDefaultInstanceForType()); + byte[] bytes = bundle.getByteArray(key); + return (T) mergeFrom(bytes, defaultInstance.getDefaultInstanceForType()); } /** @@ -51,7 +45,7 @@ public final class ProtoParsers { try { return get(bundle, key, defaultInstance); } catch (InvalidProtocolBufferException e) { - throw new RuntimeException(e); + throw Assert.createIllegalStateFailException(e.toString()); } } @@ -68,121 +62,28 @@ public final class ProtoParsers { * Stores a proto in a Bundle, for later retrieval by {@link #get(Bundle, String, MessageLite)} or * {@link #getFromInstanceState(Bundle, String, MessageLite)}. */ - public static void put(Bundle bundle, String key, MessageLite message) { - bundle.putParcelable(key, new InternalDontUse<>(null, message)); + public static void put( + @NonNull Bundle bundle, @NonNull String key, @NonNull MessageLite message) { + Assert.checkState(message != null); + bundle.putByteArray(key, message.toByteArray()); } /** * Stores a proto in an Intent, for later retrieval by {@link #get(Bundle, String, MessageLite)}. * Needs separate method because Intent has similar to but different API than Bundle. */ - public static void put(Intent intent, String key, MessageLite message) { - intent.putExtra(key, new InternalDontUse<>(null, message)); - } - - /** Returns a {@linkplain Parcelable} representation of this protobuf message. */ - public static ParcelableProto asParcelable(T message) { - return new InternalDontUse<>(null, message); - } - - /** - * A protobuf message that can be stored in a {@link Parcel}. - * - *

      Note: This Parcelable can only be used in single app. Attempting to send - * it to another app through an Intent will result in an exception due to Proguard - * obfusation when the target application attempts to load the ParcelableProto class. - */ - public interface ParcelableProto extends Parcelable { - /** - * @throws IllegalStateException if the parceled data does not correspond to the defaultInstance - * type. - */ - T getMessage(T defaultInstance); - } - - /** Public because of Parcelable requirements. Do not use. */ - public static final class InternalDontUse implements ParcelableProto { - /* One of these two fields is always populated - since the bytes field never escapes this - * object, there is no risk of concurrent modification by multiple threads, and volatile - * is sufficient to be thread-safe. */ - private volatile byte[] bytes; - private volatile T message; - - /** - * Ideally, we would have type safety here. However, a static field {@link Creator} is required - * by {@link Parcelable}. Static fields are inherently not type safe, since only 1 exists per - * class (rather than 1 per type). - */ - public static final Parcelable.Creator> CREATOR = - new Creator>() { - @Override - public InternalDontUse createFromParcel(Parcel parcel) { - int serializedSize = parcel.readInt(); - byte[] array = new byte[serializedSize]; - parcel.readByteArray(array); - return new InternalDontUse<>(array, null); - } - - @Override - public InternalDontUse[] newArray(int i) { - return new InternalDontUse[i]; - } - }; - - private InternalDontUse(byte[] bytes, T message) { - Assert.checkArgument(bytes != null || message != null, "Must have a message or bytes"); - this.bytes = bytes; - this.message = message; - } - - @Override - public int describeContents() { - return 0; - } - - @Override - public void writeToParcel(Parcel parcel, int i) { - if (bytes == null) { - final byte[] flatArray = new byte[message.getSerializedSize()]; - try { - message.writeTo(CodedOutputStream.newInstance(flatArray)); - bytes = flatArray; - } catch (IOException impossible) { - throw new AssertionError(impossible); - } - } - parcel.writeInt(bytes.length); - parcel.writeByteArray(bytes); - } - - @Override - public T getMessage(T defaultInstance) { - try { - // The proto should never be invalid if it came from our application, so if it is, throw. - return getMessageUnsafe(defaultInstance); - } catch (InvalidProtocolBufferException e) { - throw new IllegalStateException(e); - } - } - - @SuppressWarnings("unchecked") // We're being deserialized, so there's no real type safety - T getMessageUnsafe(T defaultInstance) throws InvalidProtocolBufferException { - // There's a risk that we'll double-parse the bytes, but that's OK, because it'll end up - // as the same immutable object anyway. - if (message == null) { - message = (T) defaultInstance.toBuilder().mergeFrom(bytes).build(); - } - return message; - } + public static void put(@NonNull Intent intent, @NonNull String key, MessageLite message) { + Assert.checkState(message != null); + intent.putExtra(key, message.toByteArray()); } /** Parses a proto, throwing parser errors as runtime exceptions. */ @SuppressWarnings("unchecked") // We want to eventually optimize away parser classes - public static T mergeFrom(byte[] bytes, T defaultInstance) { + private static T mergeFrom(byte[] bytes, T defaultInstance) { try { return (T) defaultInstance.toBuilder().mergeFrom(bytes).build(); } catch (InvalidProtocolBufferException e) { - throw new RuntimeException(e); + throw Assert.createIllegalStateFailException(e.toString()); } } } diff --git a/java/com/android/dialer/searchfragment/README.md b/java/com/android/dialer/searchfragment/README.md new file mode 100644 index 0000000000000000000000000000000000000000..b3b9135e5dd835ba604229a6543e2e5a5578858a --- /dev/null +++ b/java/com/android/dialer/searchfragment/README.md @@ -0,0 +1,62 @@ +# Dialer Search Ui + +searchfragment/ contains all code relevant to loading, rendering and filtering +search results in both dialpad search and regular search. + +## Loading + +### On Device Contacts + +On device contacts loading happens in SearchContactsCursorLoader. It is used in +conjunction with NewSearchFragment and Loader Callbacks to return a cursor from +cp2 containing all of the relevant info needed to rendering. + +### Business Search + +// TODO(calderwoodra) + +### Google Directory Search + +// TODO(calderwoodra) + +## Rendering + +NewSearchFragment, SearchAdapter, SearchContactViewHolder and +SearchCursorManager are used to render contact information. The fragment's +recyclerview, adapter and viewholder work as expected like a normal recyclerview +paradigm. + +The are three things to note about rendering: + +* There are three data sources rendered: On device contacts, business search + results and google directory results. +* SearchContactsCursorLoader returns its cursor from cp2 and we filter/wrap it + with SearchContactCursor to render useful results (see below). +* SearchCursorManager is used to coalesce all three data sources to help with + determining row count, row type and returning the correct data source for + each position. + +## Filtering + +On device contacts are filtered using SearchContactCursor. We wrap the cursor +returned from SearchContactsCursorLoader in NewSearchFragment#onLoadFinished in +order to abstract away the filtering logic from the recyclerview adapter and +viewholders. + +SearchContactCursor applies filtering in SearchContactCursor#filter to remove +duplicate phone numbers returned from cp2 and phone numbers that do not match +the given search query. + +Filtering methods used are: + +* T9/dialpad search methods + * Initial match (957 matches [W]illiam [J]ohn [S]mith) + * Number + name match (1800946 matches [1800-Win]-A-Prize) +* Numeric/dialpad search methods + * Simple number match (510333 matches [510-333]-7596) + * Country-code agnostic matching for E164 normalized numbers (9177 matches + +65[9177]6930) + * Country-code agnostic matching (510333 matches 1-[510-333]-7596) + * Area-code agnostic matching (333 matches 510-[333]-7596) +* Name/keyboard search methods: + * Simple name match (564 matches [Joh]n) diff --git a/java/com/android/dialer/searchfragment/common/AndroidManifest.xml b/java/com/android/dialer/searchfragment/common/AndroidManifest.xml new file mode 100644 index 0000000000000000000000000000000000000000..178cd83c3967d4c5314ced7f9cd1fd315ef77738 --- /dev/null +++ b/java/com/android/dialer/searchfragment/common/AndroidManifest.xml @@ -0,0 +1,16 @@ + + \ No newline at end of file diff --git a/java/com/android/dialer/searchfragment/common/Projections.java b/java/com/android/dialer/searchfragment/common/Projections.java new file mode 100644 index 0000000000000000000000000000000000000000..37e20d19544059718dec76c371d97555626edbb3 --- /dev/null +++ b/java/com/android/dialer/searchfragment/common/Projections.java @@ -0,0 +1,50 @@ +/* + * Copyright (C) 2017 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License + */ + +package com.android.dialer.searchfragment.common; + +import android.provider.ContactsContract.CommonDataKinds.Phone; + +/** Class containing relevant projections for searching contacts. */ +public class Projections { + + public static final int PHONE_ID = 0; + public static final int PHONE_TYPE = 1; + public static final int PHONE_LABEL = 2; + public static final int PHONE_NUMBER = 3; + public static final int PHONE_DISPLAY_NAME = 4; + public static final int PHONE_PHOTO_ID = 5; + public static final int PHONE_PHOTO_URI = 6; + public static final int PHONE_LOOKUP_KEY = 7; + public static final int PHONE_CARRIER_PRESENCE = 8; + + @SuppressWarnings("unused") + public static final int PHONE_SORT_KEY = 9; + + public static final String[] PHONE_PROJECTION = + new String[] { + Phone._ID, // 0 + Phone.TYPE, // 1 + Phone.LABEL, // 2 + Phone.NUMBER, // 3 + Phone.DISPLAY_NAME_PRIMARY, // 4 + Phone.PHOTO_ID, // 5 + Phone.PHOTO_THUMBNAIL_URI, // 6 + Phone.LOOKUP_KEY, // 7 + Phone.CARRIER_PRESENCE, // 8 + Phone.SORT_KEY_PRIMARY // 9 + }; +} diff --git a/java/com/android/dialer/searchfragment/common/QueryBoldingUtil.java b/java/com/android/dialer/searchfragment/common/QueryBoldingUtil.java new file mode 100644 index 0000000000000000000000000000000000000000..7bdd69567588b9cd48c8737c15068c2e521bf4e1 --- /dev/null +++ b/java/com/android/dialer/searchfragment/common/QueryBoldingUtil.java @@ -0,0 +1,154 @@ +/* + * Copyright (C) 2017 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License + */ + +package com.android.dialer.searchfragment.common; + +import android.graphics.Typeface; +import android.support.annotation.NonNull; +import android.support.annotation.Nullable; +import android.text.SpannableString; +import android.text.Spanned; +import android.text.TextUtils; +import android.text.style.StyleSpan; + +/** Utility class for handling bolding queries contained in string. */ +public class QueryBoldingUtil { + + /** + * Compares a name and query and returns a {@link CharSequence} with bolded characters. + * + *

      Some example: + * + *

        + *
      • "query" would bold "John [query] Smith" + *
      • "222" would bold "[AAA] Mom" + *
      • "222" would bold "[A]llen [A]lex [A]aron" + *
      + * + * @param query containing any characters + * @param name of a contact/string that query will compare to + * @return name with query bolded if query can be found in the name. + */ + public static CharSequence getNameWithQueryBolded(@Nullable String query, @NonNull String name) { + if (TextUtils.isEmpty(query)) { + return name; + } + + int index = -1; + int numberOfBoldedCharacters = 0; + + if (QueryFilteringUtil.nameMatchesT9Query(query, name)) { + // Bold the characters that match the t9 query + String t9 = QueryFilteringUtil.getT9Representation(name); + index = QueryFilteringUtil.indexOfQueryNonDigitsIgnored(query, t9); + if (index == -1) { + return getNameWithInitialsBolded(query, name); + } + numberOfBoldedCharacters = query.length(); + + for (int i = 0; i < query.length(); i++) { + char c = query.charAt(i); + if (!Character.isDigit(c)) { + numberOfBoldedCharacters--; + } + } + + for (int i = 0; i < index + numberOfBoldedCharacters; i++) { + if (!Character.isLetterOrDigit(name.charAt(i))) { + if (i < index) { + index++; + } else { + numberOfBoldedCharacters++; + } + } + } + } + + if (index == -1) { + // Bold the query as an exact match in the name + index = name.toLowerCase().indexOf(query); + numberOfBoldedCharacters = query.length(); + } + + return index == -1 ? name : getBoldedString(name, index, numberOfBoldedCharacters); + } + + private static CharSequence getNameWithInitialsBolded(String query, String name) { + SpannableString boldedInitials = new SpannableString(name); + name = name.toLowerCase(); + int initialsBolded = 0; + int nameIndex = -1; + + while (++nameIndex < name.length() && initialsBolded < query.length()) { + if ((nameIndex == 0 || name.charAt(nameIndex - 1) == ' ') + && QueryFilteringUtil.getDigit(name.charAt(nameIndex)) == query.charAt(initialsBolded)) { + boldedInitials.setSpan( + new StyleSpan(Typeface.BOLD), + nameIndex, + nameIndex + 1, + Spanned.SPAN_INCLUSIVE_INCLUSIVE); + initialsBolded++; + } + } + return boldedInitials; + } + + /** + * Compares a number and a query and returns a {@link CharSequence} with bolded characters. + * + *
        + *
      • "123" would bold "(650)34[1-23]24" + *
      • "123" would bold "+1([123])111-2222 + *
      + * + * @param query containing only numbers and phone number related characters "(", ")", "-", "+" + * @param number phone number of a contact that the query will compare to. + * @return number with query bolded if query can be found in the number. + */ + public static CharSequence getNumberWithQueryBolded( + @Nullable String query, @NonNull String number) { + if (TextUtils.isEmpty(query) || !QueryFilteringUtil.numberMatchesNumberQuery(query, number)) { + return number; + } + + int index = QueryFilteringUtil.indexOfQueryNonDigitsIgnored(query, number); + int boldedCharacters = query.length(); + + for (char c : query.toCharArray()) { + if (!Character.isDigit(c)) { + boldedCharacters--; + } + } + + for (int i = 0; i < index + boldedCharacters; i++) { + if (!Character.isDigit(number.charAt(i))) { + if (i <= index) { + index++; + } else { + boldedCharacters++; + } + } + } + return getBoldedString(number, index, boldedCharacters); + } + + private static SpannableString getBoldedString(String s, int index, int numBolded) { + SpannableString span = new SpannableString(s); + span.setSpan( + new StyleSpan(Typeface.BOLD), index, index + numBolded, Spanned.SPAN_INCLUSIVE_EXCLUSIVE); + return span; + } +} diff --git a/java/com/android/dialer/searchfragment/common/QueryFilteringUtil.java b/java/com/android/dialer/searchfragment/common/QueryFilteringUtil.java new file mode 100644 index 0000000000000000000000000000000000000000..b23315b1505c384f19fbd8ea17e544c9ac4aec3b --- /dev/null +++ b/java/com/android/dialer/searchfragment/common/QueryFilteringUtil.java @@ -0,0 +1,141 @@ +/* + * Copyright (C) 2017 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License + */ + +package com.android.dialer.searchfragment.common; + +import android.support.annotation.NonNull; +import android.telephony.PhoneNumberUtils; +import android.text.TextUtils; +import java.util.regex.Pattern; + +/** Utility class for filtering, comparing and handling strings and queries. */ +public class QueryFilteringUtil { + + /** Matches strings with "-", "(", ")", 2-9 of at least length one. */ + static final Pattern T9_PATTERN = Pattern.compile("[\\-()2-9]+"); + + /** + * @return true if the query is of T9 format and the name's T9 representation belongs to the + * query; false otherwise. + */ + public static boolean nameMatchesT9Query(String query, String name) { + if (!T9_PATTERN.matcher(query).matches()) { + return false; + } + + // Substring + if (indexOfQueryNonDigitsIgnored(query, getT9Representation(name)) != -1) { + return true; + } + + // Check matches initials + // TODO investigate faster implementation + query = digitsOnly(query); + int queryIndex = 0; + + String[] names = name.toLowerCase().split("\\s"); + for (int i = 0; i < names.length && queryIndex < query.length(); i++) { + if (TextUtils.isEmpty(names[i])) { + continue; + } + + if (getDigit(names[i].charAt(0)) == query.charAt(queryIndex)) { + queryIndex++; + } + } + + return queryIndex == query.length(); + } + + /** @return true if the number belongs to the query. */ + public static boolean numberMatchesNumberQuery(String query, String number) { + return PhoneNumberUtils.isGlobalPhoneNumber(query) + && indexOfQueryNonDigitsIgnored(query, number) != -1; + } + + /** + * Checks if query is contained in number while ignoring all characters in both that are not + * digits (i.e. {@link Character#isDigit(char)} returns false). + * + * @return index where query is found with all non-digits removed, -1 if it's not found. + */ + static int indexOfQueryNonDigitsIgnored(@NonNull String query, @NonNull String number) { + return digitsOnly(number).indexOf(digitsOnly(query)); + } + + // Returns string with letters replaced with their T9 representation. + static String getT9Representation(String s) { + StringBuilder builder = new StringBuilder(s.length()); + for (char c : s.toLowerCase().toCharArray()) { + builder.append(getDigit(c)); + } + return builder.toString(); + } + + /** @return String s with only digits recognized by Character#isDigit() remaining */ + public static String digitsOnly(String s) { + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < s.length(); i++) { + char c = s.charAt(i); + if (Character.isDigit(c)) { + sb.append(c); + } + } + return sb.toString(); + } + + // Returns the T9 representation of a lower case character, otherwise returns the character. + static char getDigit(char c) { + switch (c) { + case 'a': + case 'b': + case 'c': + return '2'; + case 'd': + case 'e': + case 'f': + return '3'; + case 'g': + case 'h': + case 'i': + return '4'; + case 'j': + case 'k': + case 'l': + return '5'; + case 'm': + case 'n': + case 'o': + return '6'; + case 'p': + case 'q': + case 'r': + case 's': + return '7'; + case 't': + case 'u': + case 'v': + return '8'; + case 'w': + case 'x': + case 'y': + case 'z': + return '9'; + default: + return c; + } + } +} diff --git a/java/com/android/dialer/searchfragment/common/res/layout/search_contact_row.xml b/java/com/android/dialer/searchfragment/common/res/layout/search_contact_row.xml new file mode 100644 index 0000000000000000000000000000000000000000..dd871af709ed43c4a4578d836696b282f2d32445 --- /dev/null +++ b/java/com/android/dialer/searchfragment/common/res/layout/search_contact_row.xml @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/java/com/android/dialer/searchfragment/common/res/values/dimens.xml b/java/com/android/dialer/searchfragment/common/res/values/dimens.xml new file mode 100644 index 0000000000000000000000000000000000000000..d5459ddb3ba00d4eb66d1bd2afedbdea464864fe --- /dev/null +++ b/java/com/android/dialer/searchfragment/common/res/values/dimens.xml @@ -0,0 +1,23 @@ + + + + 56dp + 8dp + 8dp + 16dp + 16sp + \ No newline at end of file diff --git a/java/com/android/dialer/searchfragment/cp2/SearchContactCursor.java b/java/com/android/dialer/searchfragment/cp2/SearchContactCursor.java new file mode 100644 index 0000000000000000000000000000000000000000..a2ef58c3cdbfe20b58f9c3f0ba992bbee4ea4470 --- /dev/null +++ b/java/com/android/dialer/searchfragment/cp2/SearchContactCursor.java @@ -0,0 +1,392 @@ +/* + * Copyright (C) 2017 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License + */ + +package com.android.dialer.searchfragment.cp2; + +import android.content.ContentResolver; +import android.database.CharArrayBuffer; +import android.database.ContentObserver; +import android.database.Cursor; +import android.database.DataSetObserver; +import android.net.Uri; +import android.os.Bundle; +import android.support.annotation.IntDef; +import android.support.annotation.Nullable; +import android.text.TextUtils; +import com.android.dialer.searchfragment.common.Projections; +import com.android.dialer.searchfragment.common.QueryFilteringUtil; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.util.ArrayList; +import java.util.List; + +/** + * Wrapper for a cursor returned by {@link SearchContactsCursorLoader}. + * + *

      This cursor removes duplicate phone numbers associated with the same contact and can filter + * contacts based on a query by calling {@link #filter(String)}. + */ +public final class SearchContactCursor implements Cursor { + + private final Cursor cursor; + // List of cursor ids that are valid for displaying after filtering. + private final List queryFilteredPositions = new ArrayList<>(); + + private int currentPosition = 0; + + @Retention(RetentionPolicy.SOURCE) + @IntDef({ + Qualification.NUMBERS_ARE_NOT_DUPLICATES, + Qualification.NEW_NUMBER_IS_MORE_QUALIFIED, + Qualification.CURRENT_MORE_QUALIFIED + }) + private @interface Qualification { + /** Numbers are not duplicates (i.e. neither is more qualified than the other). */ + int NUMBERS_ARE_NOT_DUPLICATES = 0; + /** Number are duplicates and new number is more qualified than the existing number. */ + int NEW_NUMBER_IS_MORE_QUALIFIED = 1; + /** Numbers are duplicates but current/existing number is more qualified than new number. */ + int CURRENT_MORE_QUALIFIED = 2; + } + + /** + * @param cursor with projection {@link Projections#PHONE_PROJECTION}. + * @param query to filter cursor results. + */ + public SearchContactCursor(Cursor cursor, @Nullable String query) { + // TODO investigate copying this into a MatrixCursor and holding in memory + this.cursor = cursor; + filter(query); + } + + /** + * Filters out contacts that do not match the query. + * + *

      The query can have at least 1 of 3 forms: + * + *

        + *
      • A phone number + *
      • A T9 representation of a name (matches {@link QueryFilteringUtil#T9_PATTERN}). + *
      • A name + *
      + * + *

      A contact is considered a match if: + * + *

        + *
      • Its phone number contains the phone number query + *
      • Its name represented in T9 contains the T9 query + *
      • Its name contains the query + *
      + */ + public void filter(@Nullable String query) { + if (query == null) { + query = ""; + } + queryFilteredPositions.clear(); + + // On some devices, contacts have multiple rows with identical phone numbers. These numbers are + // considered duplicates. Since the order might not be guaranteed, we compare all of the numbers + // and hold onto the most qualified one as the one we want to display to the user. + // See #getQualification for details on how qualification is determined. + int previousMostQualifiedPosition = 0; + String previousName = ""; + String previousMostQualifiedNumber = ""; + + query = query.toLowerCase(); + cursor.moveToPosition(-1); + + while (cursor.moveToNext()) { + int position = cursor.getPosition(); + String currentNumber = cursor.getString(Projections.PHONE_NUMBER); + String currentName = cursor.getString(Projections.PHONE_DISPLAY_NAME); + + if (!previousName.equals(currentName)) { + previousName = currentName; + previousMostQualifiedNumber = currentNumber; + previousMostQualifiedPosition = position; + } else { + // Since the contact name is the same, check if this number is a duplicate + switch (getQualification(currentNumber, previousMostQualifiedNumber)) { + case Qualification.CURRENT_MORE_QUALIFIED: + // Number is a less qualified duplicate, ignore it. + continue; + case Qualification.NEW_NUMBER_IS_MORE_QUALIFIED: + // If number wasn't filtered out before, remove it and add it's more qualified version. + if (queryFilteredPositions.contains(previousMostQualifiedPosition)) { + queryFilteredPositions.remove(previousMostQualifiedPosition); + queryFilteredPositions.add(position); + } + previousMostQualifiedNumber = currentNumber; + previousMostQualifiedPosition = position; + continue; + case Qualification.NUMBERS_ARE_NOT_DUPLICATES: + default: + previousMostQualifiedNumber = currentNumber; + previousMostQualifiedPosition = position; + } + } + + if (TextUtils.isEmpty(query) + || QueryFilteringUtil.nameMatchesT9Query(query, previousName) + || QueryFilteringUtil.numberMatchesNumberQuery(query, previousMostQualifiedNumber) + || previousName.contains(query)) { + queryFilteredPositions.add(previousMostQualifiedPosition); + } + } + currentPosition = 0; + cursor.moveToFirst(); + } + + /** + * @param number that may or may not be more qualified than the existing most qualified number + * @param mostQualifiedNumber currently most qualified number associated with same contact + * @return {@link Qualification} where the more qualified number is the number with the most + * digits. If the digits are the same, the number with the most formatting is more qualified. + */ + private @Qualification int getQualification(String number, String mostQualifiedNumber) { + // Ignore formatting + String numberDigits = QueryFilteringUtil.digitsOnly(number); + String qualifiedNumberDigits = QueryFilteringUtil.digitsOnly(mostQualifiedNumber); + + // If the numbers are identical, return version with more formatting + if (qualifiedNumberDigits.equals(numberDigits)) { + if (mostQualifiedNumber.length() >= number.length()) { + return Qualification.CURRENT_MORE_QUALIFIED; + } else { + return Qualification.NEW_NUMBER_IS_MORE_QUALIFIED; + } + } + + // If one number is a suffix of another, then return the longer one. + // If they are equal, then return the current most qualified number. + if (qualifiedNumberDigits.endsWith(numberDigits)) { + return Qualification.CURRENT_MORE_QUALIFIED; + } + if (numberDigits.endsWith(qualifiedNumberDigits)) { + return Qualification.NEW_NUMBER_IS_MORE_QUALIFIED; + } + return Qualification.NUMBERS_ARE_NOT_DUPLICATES; + } + + @Override + public boolean moveToPosition(int position) { + currentPosition = position; + return currentPosition < getCount() + && cursor.moveToPosition(queryFilteredPositions.get(currentPosition)); + } + + @Override + public boolean move(int offset) { + currentPosition += offset; + return moveToPosition(currentPosition); + } + + @Override + public int getCount() { + return queryFilteredPositions.size(); + } + + @Override + public boolean isFirst() { + return currentPosition == 0; + } + + @Override + public boolean isLast() { + return currentPosition == getCount() - 1; + } + + @Override + public int getPosition() { + return currentPosition; + } + + @Override + public boolean moveToFirst() { + return moveToPosition(0); + } + + @Override + public boolean moveToLast() { + return moveToPosition(getCount() - 1); + } + + @Override + public boolean moveToNext() { + return moveToPosition(++currentPosition); + } + + @Override + public boolean moveToPrevious() { + return moveToPosition(--currentPosition); + } + + // Methods below simply call the corresponding method in cursor. + @Override + public boolean isBeforeFirst() { + return cursor.isBeforeFirst(); + } + + @Override + public boolean isAfterLast() { + return cursor.isAfterLast(); + } + + @Override + public int getColumnIndex(String columnName) { + return cursor.getColumnIndex(columnName); + } + + @Override + public int getColumnIndexOrThrow(String columnName) { + return cursor.getColumnIndexOrThrow(columnName); + } + + @Override + public String getColumnName(int columnIndex) { + return cursor.getColumnName(columnIndex); + } + + @Override + public String[] getColumnNames() { + return cursor.getColumnNames(); + } + + @Override + public int getColumnCount() { + return cursor.getColumnCount(); + } + + @Override + public byte[] getBlob(int columnIndex) { + return cursor.getBlob(columnIndex); + } + + @Override + public String getString(int columnIndex) { + return cursor.getString(columnIndex); + } + + @Override + public void copyStringToBuffer(int columnIndex, CharArrayBuffer buffer) { + cursor.copyStringToBuffer(columnIndex, buffer); + } + + @Override + public short getShort(int columnIndex) { + return cursor.getShort(columnIndex); + } + + @Override + public int getInt(int columnIndex) { + return cursor.getInt(columnIndex); + } + + @Override + public long getLong(int columnIndex) { + return cursor.getLong(columnIndex); + } + + @Override + public float getFloat(int columnIndex) { + return cursor.getFloat(columnIndex); + } + + @Override + public double getDouble(int columnIndex) { + return cursor.getDouble(columnIndex); + } + + @Override + public int getType(int columnIndex) { + return cursor.getType(columnIndex); + } + + @Override + public boolean isNull(int columnIndex) { + return cursor.isNull(columnIndex); + } + + @Override + public void deactivate() { + cursor.deactivate(); + } + + @Override + public boolean requery() { + return cursor.requery(); + } + + @Override + public void close() { + cursor.close(); + } + + @Override + public boolean isClosed() { + return cursor.isClosed(); + } + + @Override + public void registerContentObserver(ContentObserver observer) { + cursor.registerContentObserver(observer); + } + + @Override + public void unregisterContentObserver(ContentObserver observer) { + cursor.unregisterContentObserver(observer); + } + + @Override + public void registerDataSetObserver(DataSetObserver observer) { + cursor.registerDataSetObserver(observer); + } + + @Override + public void unregisterDataSetObserver(DataSetObserver observer) { + cursor.unregisterDataSetObserver(observer); + } + + @Override + public void setNotificationUri(ContentResolver cr, Uri uri) { + cursor.setNotificationUri(cr, uri); + } + + @Override + public Uri getNotificationUri() { + return cursor.getNotificationUri(); + } + + @Override + public boolean getWantsAllOnMoveCalls() { + return cursor.getWantsAllOnMoveCalls(); + } + + @Override + public void setExtras(Bundle extras) { + cursor.setExtras(extras); + } + + @Override + public Bundle getExtras() { + return cursor.getExtras(); + } + + @Override + public Bundle respond(Bundle extras) { + return cursor.respond(extras); + } +} diff --git a/java/com/android/dialer/searchfragment/cp2/SearchContactViewHolder.java b/java/com/android/dialer/searchfragment/cp2/SearchContactViewHolder.java new file mode 100644 index 0000000000000000000000000000000000000000..5f06b5991efb0fc18d78b15f177a6a89ef640f69 --- /dev/null +++ b/java/com/android/dialer/searchfragment/cp2/SearchContactViewHolder.java @@ -0,0 +1,204 @@ +/* + * Copyright (C) 2017 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License + */ + +package com.android.dialer.searchfragment.cp2; + +import android.content.Context; +import android.content.res.Resources; +import android.database.Cursor; +import android.net.Uri; +import android.provider.ContactsContract.CommonDataKinds.Phone; +import android.provider.ContactsContract.Contacts; +import android.support.annotation.IntDef; +import android.support.v7.widget.RecyclerView.ViewHolder; +import android.text.TextUtils; +import android.view.View; +import android.view.View.OnClickListener; +import android.widget.ImageView; +import android.widget.QuickContactBadge; +import android.widget.TextView; +import com.android.contacts.common.ContactPhotoManager; +import com.android.contacts.common.lettertiles.LetterTileDrawable; +import com.android.dialer.callintent.CallInitiationType.Type; +import com.android.dialer.callintent.CallIntentBuilder; +import com.android.dialer.common.Assert; +import com.android.dialer.searchfragment.common.Projections; +import com.android.dialer.searchfragment.common.QueryBoldingUtil; +import com.android.dialer.searchfragment.common.R; +import com.android.dialer.telecom.TelecomUtil; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +/** ViewHolder for a contact row. */ +public final class SearchContactViewHolder extends ViewHolder implements OnClickListener { + + /** IntDef for the different types of actions that can be shown. */ + @Retention(RetentionPolicy.SOURCE) + @IntDef({CallToAction.NONE, CallToAction.VIDEO_CALL, CallToAction.SHARE_AND_CALL}) + @interface CallToAction { + int NONE = 0; + int VIDEO_CALL = 1; + int SHARE_AND_CALL = 2; + } + + private final QuickContactBadge photo; + private final TextView nameOrNumberView; + private final TextView numberView; + private final ImageView callToActionView; + private final Context context; + + private String number; + private @CallToAction int currentAction; + + public SearchContactViewHolder(View view) { + super(view); + view.setOnClickListener(this); + photo = view.findViewById(R.id.photo); + nameOrNumberView = view.findViewById(R.id.primary); + numberView = view.findViewById(R.id.secondary); + callToActionView = view.findViewById(R.id.call_to_action); + context = view.getContext(); + } + + /** + * Binds the ViewHolder with a cursor from {@link SearchContactsCursorLoader} with the data found + * at the cursors set position. + */ + public void bind(Cursor cursor, String query) { + number = cursor.getString(Projections.PHONE_NUMBER); + String name = cursor.getString(Projections.PHONE_DISPLAY_NAME); + String label = getLabel(context.getResources(), cursor); + String secondaryInfo = + TextUtils.isEmpty(label) + ? number + : context.getString( + com.android.contacts.common.R.string.call_subject_type_and_number, label, number); + + nameOrNumberView.setText(QueryBoldingUtil.getNameWithQueryBolded(query, name)); + numberView.setText(QueryBoldingUtil.getNumberWithQueryBolded(query, secondaryInfo)); + setCallToAction(cursor); + + if (shouldShowPhoto(cursor, name)) { + nameOrNumberView.setVisibility(View.VISIBLE); + photo.setVisibility(View.VISIBLE); + String photoUri = cursor.getString(Projections.PHONE_PHOTO_URI); + ContactPhotoManager.getInstance(context) + .loadDialerThumbnailOrPhoto( + photo, + getContactUri(cursor), + cursor.getLong(Projections.PHONE_PHOTO_ID), + photoUri == null ? null : Uri.parse(photoUri), + name, + LetterTileDrawable.TYPE_DEFAULT); + } else { + nameOrNumberView.setVisibility(View.GONE); + photo.setVisibility(View.INVISIBLE); + } + } + + private boolean shouldShowPhoto(Cursor cursor, String currentName) { + int currentPosition = cursor.getPosition(); + if (currentPosition == 0) { + return true; + } else { + cursor.moveToPosition(currentPosition - 1); + String previousName = cursor.getString(Projections.PHONE_DISPLAY_NAME); + cursor.moveToPosition(currentPosition); + return !currentName.equals(previousName); + } + } + + private static Uri getContactUri(Cursor cursor) { + long contactId = cursor.getLong(Projections.PHONE_ID); + String lookupKey = cursor.getString(Projections.PHONE_LOOKUP_KEY); + return Contacts.getLookupUri(contactId, lookupKey); + } + + // TODO: handle CNAP and cequint types. + // TODO: unify this into a utility method with CallLogAdapter#getNumberType + private static String getLabel(Resources resources, Cursor cursor) { + int numberType = cursor.getInt(Projections.PHONE_TYPE); + String numberLabel = cursor.getString(Projections.PHONE_LABEL); + + // Returns empty label instead of "custom" if the custom label is empty. + if (numberType == Phone.TYPE_CUSTOM && TextUtils.isEmpty(numberLabel)) { + return ""; + } + return (String) Phone.getTypeLabel(resources, numberType, numberLabel); + } + + private void setCallToAction(Cursor cursor) { + currentAction = getCallToAction(cursor); + switch (currentAction) { + case CallToAction.NONE: + callToActionView.setVisibility(View.GONE); + callToActionView.setOnClickListener(null); + break; + case CallToAction.SHARE_AND_CALL: + callToActionView.setVisibility(View.VISIBLE); + callToActionView.setImageDrawable( + context.getDrawable(com.android.contacts.common.R.drawable.ic_phone_attach)); + callToActionView.setOnClickListener(this); + break; + case CallToAction.VIDEO_CALL: + callToActionView.setVisibility(View.VISIBLE); + callToActionView.setImageDrawable( + context.getDrawable(R.drawable.quantum_ic_videocam_white_24)); + callToActionView.setOnClickListener(this); + break; + default: + throw Assert.createIllegalStateFailException( + "Invalid Call to action type: " + currentAction); + } + } + + private static @CallToAction int getCallToAction(Cursor cursor) { + int carrierPresence = cursor.getInt(Projections.PHONE_CARRIER_PRESENCE); + if ((carrierPresence & Phone.CARRIER_PRESENCE_VT_CAPABLE) == 1) { + return CallToAction.VIDEO_CALL; + } + + // TODO: enriched calling + return CallToAction.NONE; + } + + @Override + public void onClick(View view) { + if (view == callToActionView) { + switch (currentAction) { + case CallToAction.SHARE_AND_CALL: + callToActionView.setVisibility(View.VISIBLE); + callToActionView.setImageDrawable( + context.getDrawable(com.android.contacts.common.R.drawable.ic_phone_attach)); + // TODO: open call composer. + break; + case CallToAction.VIDEO_CALL: + callToActionView.setVisibility(View.VISIBLE); + callToActionView.setImageDrawable( + context.getDrawable(R.drawable.quantum_ic_videocam_white_24)); + // TODO: place a video call + break; + case CallToAction.NONE: + default: + throw Assert.createIllegalStateFailException( + "Invalid Call to action type: " + currentAction); + } + } else { + // TODO: set the correct call initiation type. + TelecomUtil.placeCall(context, new CallIntentBuilder(number, Type.REGULAR_SEARCH).build()); + } + } +} diff --git a/java/com/android/dialer/searchfragment/cp2/SearchContactsCursorLoader.java b/java/com/android/dialer/searchfragment/cp2/SearchContactsCursorLoader.java new file mode 100644 index 0000000000000000000000000000000000000000..c72f28b25abc4df48d4706ec8aa0143b6d3d0a4e --- /dev/null +++ b/java/com/android/dialer/searchfragment/cp2/SearchContactsCursorLoader.java @@ -0,0 +1,42 @@ +/* + * Copyright (C) 2017 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.dialer.searchfragment.cp2; + +import android.content.Context; +import android.content.CursorLoader; +import android.database.Cursor; +import android.provider.ContactsContract.CommonDataKinds.Phone; +import com.android.dialer.searchfragment.common.Projections; + +/** Cursor Loader for CP2 contacts. */ +public final class SearchContactsCursorLoader extends CursorLoader { + + public SearchContactsCursorLoader(Context context) { + super( + context, + Phone.CONTENT_URI, + Projections.PHONE_PROJECTION, + null, + null, + Phone.SORT_KEY_PRIMARY + " ASC"); + } + + @Override + public Cursor loadInBackground() { + return new SearchContactCursor(super.loadInBackground(), null); + } +} diff --git a/java/com/android/dialer/searchfragment/list/AndroidManifest.xml b/java/com/android/dialer/searchfragment/list/AndroidManifest.xml new file mode 100644 index 0000000000000000000000000000000000000000..e0890cc2c48abef7e2e9c41bbbaeba1246493c6b --- /dev/null +++ b/java/com/android/dialer/searchfragment/list/AndroidManifest.xml @@ -0,0 +1,16 @@ + + \ No newline at end of file diff --git a/java/com/android/dialer/searchfragment/list/HeaderViewHolder.java b/java/com/android/dialer/searchfragment/list/HeaderViewHolder.java new file mode 100644 index 0000000000000000000000000000000000000000..dd35b13eecae01e748872d5e273067ce0da70707 --- /dev/null +++ b/java/com/android/dialer/searchfragment/list/HeaderViewHolder.java @@ -0,0 +1,36 @@ +/* + * Copyright (C) 2017 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License + */ + +package com.android.dialer.searchfragment.list; + +import android.support.v7.widget.RecyclerView; +import android.view.View; +import android.widget.TextView; + +/** ViewHolder for header rows in {@link NewSearchFragment}. */ +final class HeaderViewHolder extends RecyclerView.ViewHolder { + + private final TextView header; + + HeaderViewHolder(View view) { + super(view); + header = view.findViewById(R.id.header); + } + + public void setHeader(String header) { + this.header.setText(header); + } +} diff --git a/java/com/android/dialer/searchfragment/list/NewSearchFragment.java b/java/com/android/dialer/searchfragment/list/NewSearchFragment.java new file mode 100644 index 0000000000000000000000000000000000000000..fcc87c386d33cb83e824d23487ba6f800aa35a7c --- /dev/null +++ b/java/com/android/dialer/searchfragment/list/NewSearchFragment.java @@ -0,0 +1,125 @@ +/* + * Copyright (C) 2017 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License + */ + +package com.android.dialer.searchfragment.list; + +import android.app.Fragment; +import android.app.LoaderManager.LoaderCallbacks; +import android.content.Loader; +import android.database.Cursor; +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import com.android.contacts.common.extensions.PhoneDirectoryExtenderAccessor; +import com.android.dialer.common.concurrent.ThreadUtil; +import com.android.dialer.searchfragment.cp2.SearchContactsCursorLoader; +import com.android.dialer.searchfragment.nearbyplaces.NearbyPlacesCursorLoader; + +/** Fragment used for searching contacts. */ +public final class NewSearchFragment extends Fragment implements LoaderCallbacks { + + // Since some of our queries can generate network requests, we should delay them until the user + // stops typing to prevent generating too much network traffic. + private static final int NETWORK_SEARCH_DELAY_MILLIS = 300; + + private static final int CONTACTS_LOADER_ID = 0; + private static final int NEARBY_PLACES_ID = 1; + + private RecyclerView recyclerView; + private SearchAdapter adapter; + private String query; + + private final Runnable loadNearbyPlacesRunnable = + () -> getLoaderManager().restartLoader(NEARBY_PLACES_ID, null, this); + + @Nullable + @Override + public View onCreateView( + LayoutInflater inflater, @Nullable ViewGroup parent, @Nullable Bundle bundle) { + getLoaderManager().initLoader(0, null, this); + View view = inflater.inflate(R.layout.fragment_search, parent, false); + adapter = new SearchAdapter(getContext()); + recyclerView = view.findViewById(R.id.recycler_view); + recyclerView.setLayoutManager(new LinearLayoutManager(getContext())); + recyclerView.setAdapter(adapter); + + getLoaderManager().initLoader(CONTACTS_LOADER_ID, null, this); + loadNearbyPlacesCursor(); + return view; + } + + @Override + public Loader onCreateLoader(int id, Bundle bundle) { + // TODO add enterprise loader + if (id == CONTACTS_LOADER_ID) { + return new SearchContactsCursorLoader(getContext()); + } else if (id == NEARBY_PLACES_ID) { + return new NearbyPlacesCursorLoader(getContext(), query); + } else { + throw new IllegalStateException("Invalid loader id: " + id); + } + } + + @Override + public void onLoadFinished(Loader loader, Cursor cursor) { + if (loader instanceof SearchContactsCursorLoader) { + adapter.setContactsCursor(cursor); + } else if (loader instanceof NearbyPlacesCursorLoader) { + adapter.setNearbyPlacesCursor(cursor); + } else { + throw new IllegalStateException("Invalid loader: " + loader); + } + } + + @Override + public void onLoaderReset(Loader loader) { + adapter.clear(); + recyclerView.setAdapter(null); + } + + public void setQuery(String query) { + this.query = query; + if (adapter != null) { + adapter.setQuery(query); + loadNearbyPlacesCursor(); + } + } + + @Override + public void onDestroy() { + super.onDestroy(); + // close adapters + adapter.setNearbyPlacesCursor(null); + adapter.setContactsCursor(null); + ThreadUtil.getUiThreadHandler().removeCallbacks(loadNearbyPlacesRunnable); + } + + private void loadNearbyPlacesCursor() { + // Cancel existing load if one exists. + ThreadUtil.getUiThreadHandler().removeCallbacks(loadNearbyPlacesRunnable); + + // If nearby places is not enabled, do not try to load them. + if (!PhoneDirectoryExtenderAccessor.get(getContext()).isEnabled(getContext())) { + return; + } + ThreadUtil.getUiThreadHandler() + .postDelayed(loadNearbyPlacesRunnable, NETWORK_SEARCH_DELAY_MILLIS); + } +} diff --git a/java/com/android/dialer/searchfragment/list/SearchAdapter.java b/java/com/android/dialer/searchfragment/list/SearchAdapter.java new file mode 100644 index 0000000000000000000000000000000000000000..023513e478a371e2818cd37ef2d5d1bcb56c055a --- /dev/null +++ b/java/com/android/dialer/searchfragment/list/SearchAdapter.java @@ -0,0 +1,108 @@ +/* + * Copyright (C) 2017 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License + */ + +package com.android.dialer.searchfragment.list; + +import android.content.Context; +import android.database.Cursor; +import android.support.v7.widget.RecyclerView; +import android.support.v7.widget.RecyclerView.ViewHolder; +import android.view.LayoutInflater; +import android.view.ViewGroup; +import com.android.dialer.common.Assert; +import com.android.dialer.searchfragment.cp2.SearchContactViewHolder; +import com.android.dialer.searchfragment.list.SearchCursorManager.RowType; +import com.android.dialer.searchfragment.nearbyplaces.NearbyPlaceViewHolder; + +/** RecyclerView adapter for {@link NewSearchFragment}. */ +class SearchAdapter extends RecyclerView.Adapter { + + private final SearchCursorManager searchCursorManager; + private final Context context; + + private String query; + + SearchAdapter(Context context) { + searchCursorManager = new SearchCursorManager(); + this.context = context; + } + + @Override + public ViewHolder onCreateViewHolder(ViewGroup root, @RowType int rowType) { + switch (rowType) { + case RowType.CONTACT_ROW: + return new SearchContactViewHolder( + LayoutInflater.from(context).inflate(R.layout.search_contact_row, root, false)); + case RowType.NEARBY_PLACES_ROW: + return new NearbyPlaceViewHolder( + LayoutInflater.from(context).inflate(R.layout.search_contact_row, root, false)); + case RowType.DIRECTORY_HEADER: + case RowType.NEARBY_PLACES_HEADER: + return new HeaderViewHolder( + LayoutInflater.from(context).inflate(R.layout.header_layout, root, false)); + case RowType.DIRECTORY_ROW: // TODO: add directory rows to search + case RowType.INVALID: + default: + throw Assert.createIllegalStateFailException("Invalid RowType: " + rowType); + } + } + + @Override + public @RowType int getItemViewType(int position) { + return searchCursorManager.getRowType(position); + } + + @Override + public void onBindViewHolder(ViewHolder holder, int position) { + if (holder instanceof SearchContactViewHolder) { + Cursor cursor = searchCursorManager.getCursor(position); + ((SearchContactViewHolder) holder).bind(cursor, query); + } else if (holder instanceof NearbyPlaceViewHolder) { + Cursor cursor = searchCursorManager.getCursor(position); + ((NearbyPlaceViewHolder) holder).bind(cursor, query); + } else if (holder instanceof HeaderViewHolder) { + String header = context.getString(searchCursorManager.getHeaderText(position)); + ((HeaderViewHolder) holder).setHeader(header); + } else { + throw Assert.createIllegalStateFailException("Invalid ViewHolder: " + holder); + } + } + + void setContactsCursor(Cursor cursor) { + searchCursorManager.setContactsCursor(cursor); + notifyDataSetChanged(); + } + + void clear() { + searchCursorManager.clear(); + } + + @Override + public int getItemCount() { + return searchCursorManager.getCount(); + } + + public void setQuery(String query) { + this.query = query; + searchCursorManager.setQuery(query); + notifyDataSetChanged(); + } + + public void setNearbyPlacesCursor(Cursor nearbyPlacesCursor) { + searchCursorManager.setNearbyPlacesCursor(nearbyPlacesCursor); + notifyDataSetChanged(); + } +} diff --git a/java/com/android/dialer/searchfragment/list/SearchCursorManager.java b/java/com/android/dialer/searchfragment/list/SearchCursorManager.java new file mode 100644 index 0000000000000000000000000000000000000000..216a9ada942e7d08c9c5d3702a234d3d2d2fa345 --- /dev/null +++ b/java/com/android/dialer/searchfragment/list/SearchCursorManager.java @@ -0,0 +1,273 @@ +/* + * Copyright (C) 2017 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License + */ + +package com.android.dialer.searchfragment.list; + +import android.database.Cursor; +import android.support.annotation.IntDef; +import android.support.annotation.StringRes; +import com.android.dialer.common.Assert; +import com.android.dialer.searchfragment.cp2.SearchContactCursor; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +/** + * Manages all of the cursors needed for {@link SearchAdapter}. + * + *

      This class accepts three cursors: + * + *

        + *
      • A contacts cursor {@link #setContactsCursor(Cursor)} + *
      • A google search results cursor {@link #setNearbyPlacesCursor(Cursor)} + *
      • A work directory cursor {@link #setCorpDirectoryCursor(Cursor)} + *
      + * + *

      The key purpose of this class is to compose three aforementioned cursors together to function + * as one cursor. The key methods needed to utilize this class as a cursor are: + * + *

        + *
      • {@link #getCursor(int)} + *
      • {@link #getCount()} + *
      • {@link #getRowType(int)} + *
      + */ +final class SearchCursorManager { + + /** IntDef for the different types of rows that can be shown when searching. */ + @Retention(RetentionPolicy.SOURCE) + @IntDef({ + SearchCursorManager.RowType.INVALID, + SearchCursorManager.RowType.CONTACT_ROW, + SearchCursorManager.RowType.NEARBY_PLACES_HEADER, + SearchCursorManager.RowType.NEARBY_PLACES_ROW, + SearchCursorManager.RowType.DIRECTORY_HEADER, + SearchCursorManager.RowType.DIRECTORY_ROW + }) + @interface RowType { + int INVALID = 0; + /** A row containing contact information for contacts stored locally on device. */ + int CONTACT_ROW = 1; + /** Header to mark the end of contact rows and start of nearby places rows. */ + int NEARBY_PLACES_HEADER = 2; + /** A row containing nearby places information/search results. */ + int NEARBY_PLACES_ROW = 3; + /** Header to mark the end of the previous row set and start of directory rows. */ + int DIRECTORY_HEADER = 4; + /** A row containing contact information for contacts stored externally in corp directories. */ + int DIRECTORY_ROW = 5; + } + + private Cursor contactsCursor = null; + private Cursor nearbyPlacesCursor = null; + private Cursor corpDirectoryCursor = null; + + void setContactsCursor(Cursor cursor) { + if (cursor == contactsCursor) { + return; + } + + if (contactsCursor != null && !contactsCursor.isClosed()) { + contactsCursor.close(); + } + + if (cursor != null && cursor.getCount() > 0) { + contactsCursor = cursor; + } else { + contactsCursor = null; + } + } + + void setNearbyPlacesCursor(Cursor cursor) { + if (cursor == nearbyPlacesCursor) { + return; + } + + if (nearbyPlacesCursor != null && !nearbyPlacesCursor.isClosed()) { + nearbyPlacesCursor.close(); + } + + if (cursor != null && cursor.getCount() > 0) { + nearbyPlacesCursor = cursor; + } else { + nearbyPlacesCursor = null; + } + } + + void setCorpDirectoryCursor(Cursor cursor) { + if (cursor == corpDirectoryCursor) { + return; + } + + if (corpDirectoryCursor != null && !corpDirectoryCursor.isClosed()) { + corpDirectoryCursor.close(); + } + + if (cursor != null && cursor.getCount() > 0) { + corpDirectoryCursor = cursor; + } else { + corpDirectoryCursor = null; + } + } + + void setQuery(String query) { + if (contactsCursor != null) { + // TODO: abstract this + ((SearchContactCursor) contactsCursor).filter(query); + } + } + + /** @return the sum of counts of all cursors, including headers. */ + int getCount() { + int count = 0; + if (contactsCursor != null) { + count += contactsCursor.getCount(); + } + + if (nearbyPlacesCursor != null) { + count++; // header + count += nearbyPlacesCursor.getCount(); + } + + if (corpDirectoryCursor != null) { + count++; // header + count += corpDirectoryCursor.getCount(); + } + + return count; + } + + @RowType + int getRowType(int position) { + if (contactsCursor != null) { + position -= contactsCursor.getCount(); + + if (position < 0) { + return SearchCursorManager.RowType.CONTACT_ROW; + } + } + + if (nearbyPlacesCursor != null) { + if (position == 0) { + return SearchCursorManager.RowType.NEARBY_PLACES_HEADER; + } else { + position--; // header + } + + position -= nearbyPlacesCursor.getCount(); + + if (position < 0) { + return SearchCursorManager.RowType.NEARBY_PLACES_ROW; + } + } + + if (corpDirectoryCursor != null) { + if (position == 0) { + return SearchCursorManager.RowType.DIRECTORY_HEADER; + } else { + position--; // header + } + + position -= corpDirectoryCursor.getCount(); + + if (position < 0) { + return SearchCursorManager.RowType.DIRECTORY_ROW; + } + } + + throw Assert.createIllegalStateFailException("No valid row type."); + } + + /** + * Gets cursor corresponding to position in coelesced list of search cursors. Callers should + * ensure that {@link #getRowType(int)} doesn't correspond to header position, otherwise an + * exception will be thrown. + * + * @param position in coalecsed list of search cursors + * @return Cursor moved to position specific to passed in position. + */ + Cursor getCursor(int position) { + if (contactsCursor != null) { + int count = contactsCursor.getCount(); + + if (position - count < 0) { + contactsCursor.moveToPosition(position); + return contactsCursor; + } + position -= count; + } + + if (nearbyPlacesCursor != null) { + Assert.checkArgument(position != 0, "No valid cursor, position is nearby places header."); + position--; // header + int count = nearbyPlacesCursor.getCount(); + + if (position - count < 0) { + nearbyPlacesCursor.moveToPosition(position); + return nearbyPlacesCursor; + } + position -= count; + } + + if (corpDirectoryCursor != null) { + Assert.checkArgument(position != 0, "No valid cursor, position is directory search header."); + position--; // header + int count = corpDirectoryCursor.getCount(); + + if (position - count < 0) { + corpDirectoryCursor.moveToPosition(position); + return corpDirectoryCursor; + } + position -= count; + } + + throw Assert.createIllegalStateFailException("No valid cursor."); + } + + @StringRes + int getHeaderText(int position) { + @RowType int rowType = getRowType(position); + switch (rowType) { + case RowType.NEARBY_PLACES_HEADER: + return R.string.nearby_places; + case RowType.DIRECTORY_HEADER: // TODO + case RowType.DIRECTORY_ROW: + case RowType.CONTACT_ROW: + case RowType.NEARBY_PLACES_ROW: + case RowType.INVALID: + default: + throw Assert.createIllegalStateFailException( + "Invalid row type, position " + position + " is rowtype " + rowType); + } + } + + /** removes all cursors. */ + void clear() { + if (contactsCursor != null) { + contactsCursor.close(); + contactsCursor = null; + } + + if (nearbyPlacesCursor != null) { + nearbyPlacesCursor.close(); + nearbyPlacesCursor = null; + } + + if (corpDirectoryCursor != null) { + corpDirectoryCursor.close(); + corpDirectoryCursor = null; + } + } +} diff --git a/java/com/android/dialer/searchfragment/list/res/layout/fragment_search.xml b/java/com/android/dialer/searchfragment/list/res/layout/fragment_search.xml new file mode 100644 index 0000000000000000000000000000000000000000..06f234889fe925ab633e28a01b3183472525786d --- /dev/null +++ b/java/com/android/dialer/searchfragment/list/res/layout/fragment_search.xml @@ -0,0 +1,21 @@ + + + diff --git a/java/com/android/dialer/searchfragment/list/res/layout/header_layout.xml b/java/com/android/dialer/searchfragment/list/res/layout/header_layout.xml new file mode 100644 index 0000000000000000000000000000000000000000..36af42ed9f2986b9d60836cd53765ca7f2b525fb --- /dev/null +++ b/java/com/android/dialer/searchfragment/list/res/layout/header_layout.xml @@ -0,0 +1,22 @@ + + + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/AndroidManifest.xml b/java/com/android/dialer/searchfragment/nearbyplaces/AndroidManifest.xml new file mode 100644 index 0000000000000000000000000000000000000000..178cd83c3967d4c5314ced7f9cd1fd315ef77738 --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/AndroidManifest.xml @@ -0,0 +1,16 @@ + + \ No newline at end of file diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/NearbyPlaceViewHolder.java b/java/com/android/dialer/searchfragment/nearbyplaces/NearbyPlaceViewHolder.java new file mode 100644 index 0000000000000000000000000000000000000000..b6e5a9013f65310be3c15fe4286d50572ea498e2 --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/NearbyPlaceViewHolder.java @@ -0,0 +1,90 @@ +/* + * Copyright (C) 2017 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License + */ + +package com.android.dialer.searchfragment.nearbyplaces; + +import android.content.Context; +import android.database.Cursor; +import android.net.Uri; +import android.provider.ContactsContract; +import android.support.v7.widget.RecyclerView; +import android.view.View; +import android.widget.QuickContactBadge; +import android.widget.TextView; +import com.android.contacts.common.ContactPhotoManager; +import com.android.contacts.common.lettertiles.LetterTileDrawable; +import com.android.dialer.callintent.CallInitiationType; +import com.android.dialer.callintent.CallIntentBuilder; +import com.android.dialer.searchfragment.common.Projections; +import com.android.dialer.searchfragment.common.QueryBoldingUtil; +import com.android.dialer.searchfragment.common.R; +import com.android.dialer.telecom.TelecomUtil; + +/** ViewHolder for a nearby place row. */ +public final class NearbyPlaceViewHolder extends RecyclerView.ViewHolder + implements View.OnClickListener { + + private final Context context; + private final TextView placeName; + private final TextView placeAddress; + private final QuickContactBadge photo; + + private String number; + + public NearbyPlaceViewHolder(View view) { + super(view); + view.setOnClickListener(this); + photo = view.findViewById(R.id.photo); + placeName = view.findViewById(R.id.primary); + placeAddress = view.findViewById(R.id.secondary); + context = view.getContext(); + } + + /** + * Binds the ViewHolder with a cursor from {@link NearbyPlacesCursorLoader} with the data found at + * the cursors set position. + */ + public void bind(Cursor cursor, String query) { + number = cursor.getString(Projections.PHONE_NUMBER); + String name = cursor.getString(Projections.PHONE_DISPLAY_NAME); + String address = cursor.getString(Projections.PHONE_LABEL); + + placeName.setText(QueryBoldingUtil.getNameWithQueryBolded(query, name)); + placeAddress.setText(QueryBoldingUtil.getNameWithQueryBolded(query, address)); + + String photoUri = cursor.getString(Projections.PHONE_PHOTO_URI); + ContactPhotoManager.getInstance(context) + .loadDialerThumbnailOrPhoto( + photo, + getContactUri(cursor), + cursor.getLong(Projections.PHONE_PHOTO_ID), + photoUri == null ? null : Uri.parse(photoUri), + name, + LetterTileDrawable.TYPE_DEFAULT); + } + + private static Uri getContactUri(Cursor cursor) { + long contactId = cursor.getLong(Projections.PHONE_ID); + String lookupKey = cursor.getString(Projections.PHONE_LOOKUP_KEY); + return ContactsContract.Contacts.getLookupUri(contactId, lookupKey); + } + + @Override + public void onClick(View v) { + TelecomUtil.placeCall( + context, new CallIntentBuilder(number, CallInitiationType.Type.REGULAR_SEARCH).build()); + } +} diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/NearbyPlacesCursorLoader.java b/java/com/android/dialer/searchfragment/nearbyplaces/NearbyPlacesCursorLoader.java new file mode 100644 index 0000000000000000000000000000000000000000..9f3193e9223aa3aea3cc0cdafa26b2b16a78150a --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/NearbyPlacesCursorLoader.java @@ -0,0 +1,43 @@ +/* + * Copyright (C) 2017 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.dialer.searchfragment.nearbyplaces; + +import android.content.Context; +import android.content.CursorLoader; +import android.net.Uri; +import android.provider.ContactsContract; +import com.android.contacts.common.extensions.PhoneDirectoryExtenderAccessor; +import com.android.dialer.searchfragment.common.Projections; + +/** Cursor loader for nearby places search results. */ +public final class NearbyPlacesCursorLoader extends CursorLoader { + + private static final String MAX_RESULTS = "3"; + + public NearbyPlacesCursorLoader(Context context, String query) { + super(context, getContentUri(context, query), Projections.PHONE_PROJECTION, null, null, null); + } + + private static Uri getContentUri(Context context, String query) { + return PhoneDirectoryExtenderAccessor.get(context) + .getContentUri() + .buildUpon() + .appendPath(query) + .appendQueryParameter(ContactsContract.LIMIT_PARAM_KEY, MAX_RESULTS) + .build(); + } +} diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-af/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-af/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..21eb4b11d9294e4f391b466808d55022c9b88396 --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-af/strings.xml @@ -0,0 +1,21 @@ + + + + + "Nabygeleë plekke" + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-am/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-am/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-am/strings.xml @@ -0,0 +1,22 @@ + + + + + + + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-ar/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-ar/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..d68b4d1ee597c89bd13b6847151358cf3441bf47 --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-ar/strings.xml @@ -0,0 +1,21 @@ + + + + + "الأماكن المجاورة" + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-az/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-az/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-az/strings.xml @@ -0,0 +1,22 @@ + + + + + + + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-b+sr+Latn/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-b+sr+Latn/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..bb9f06fe7666dc25c37ce0772e1dcdbf203098d6 --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-b+sr+Latn/strings.xml @@ -0,0 +1,21 @@ + + + + + "Obližnja mesta" + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-be/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-be/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-be/strings.xml @@ -0,0 +1,22 @@ + + + + + + + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-bg/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-bg/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..e8839532afe089d68c977109bfcb6ca0cc595881 --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-bg/strings.xml @@ -0,0 +1,21 @@ + + + + + "Места в района" + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-bn/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-bn/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..4bc3fedb43c4771fe4fde7baa6d883d12b615d2d --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-bn/strings.xml @@ -0,0 +1,21 @@ + + + + + "আশপাশের জায়গাগুলি" + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-bs/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-bs/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..f3fb92187d7646892eb4458da74302a49aa7f2c0 --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-bs/strings.xml @@ -0,0 +1,21 @@ + + + + + "Mjesta u blizini" + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-ca/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-ca/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-ca/strings.xml @@ -0,0 +1,22 @@ + + + + + + + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-cs/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-cs/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-cs/strings.xml @@ -0,0 +1,22 @@ + + + + + + + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-da/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-da/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-da/strings.xml @@ -0,0 +1,22 @@ + + + + + + + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-de/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-de/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..9e2db4a325a92027be618f36cae024a7040b41f4 --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-de/strings.xml @@ -0,0 +1,21 @@ + + + + + "Orte in der Nähe" + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-el/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-el/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-el/strings.xml @@ -0,0 +1,22 @@ + + + + + + + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-en-rAU/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-en-rAU/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..0778273154aa2ca279c4b76ee535cf76aca62478 --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-en-rAU/strings.xml @@ -0,0 +1,21 @@ + + + + + "Places nearby" + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-en-rGB/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-en-rGB/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..0778273154aa2ca279c4b76ee535cf76aca62478 --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-en-rGB/strings.xml @@ -0,0 +1,21 @@ + + + + + "Places nearby" + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-en-rIN/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-en-rIN/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..0778273154aa2ca279c4b76ee535cf76aca62478 --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-en-rIN/strings.xml @@ -0,0 +1,21 @@ + + + + + "Places nearby" + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-es-rUS/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-es-rUS/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-es-rUS/strings.xml @@ -0,0 +1,22 @@ + + + + + + + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-es/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-es/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..fada6bcafe7c9e9e7609ff5f2c90d3e0e06e0d0c --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-es/strings.xml @@ -0,0 +1,21 @@ + + + + + "Sitios cercanos" + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-et/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-et/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-et/strings.xml @@ -0,0 +1,22 @@ + + + + + + + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-eu/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-eu/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-eu/strings.xml @@ -0,0 +1,22 @@ + + + + + + + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-fa/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-fa/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-fa/strings.xml @@ -0,0 +1,22 @@ + + + + + + + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-fi/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-fi/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-fi/strings.xml @@ -0,0 +1,22 @@ + + + + + + + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-fr-rCA/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-fr-rCA/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..d65e7bd5523b72fec6a03a98557f473cb8845497 --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-fr-rCA/strings.xml @@ -0,0 +1,21 @@ + + + + + "Adresses à proximité" + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-fr/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-fr/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..d65e7bd5523b72fec6a03a98557f473cb8845497 --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-fr/strings.xml @@ -0,0 +1,21 @@ + + + + + "Adresses à proximité" + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-gl/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-gl/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..5a4cce7e083ded49212424f447978e25f63dd28e --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-gl/strings.xml @@ -0,0 +1,21 @@ + + + + + "Lugares próximos" + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-gu/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-gu/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..ee32e466f8a3d1d178fd15bb807b93fbae929647 --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-gu/strings.xml @@ -0,0 +1,21 @@ + + + + + "નજીકના સ્થળો" + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-hi/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-hi/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..079c03e0467d55bf2cf575157d9c7c8bb50e6355 --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-hi/strings.xml @@ -0,0 +1,21 @@ + + + + + "आस-पास के स्थल" + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-hr/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-hr/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-hr/strings.xml @@ -0,0 +1,22 @@ + + + + + + + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-hu/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-hu/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-hu/strings.xml @@ -0,0 +1,22 @@ + + + + + + + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-hy/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-hy/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..3a2ba393844375cbf4bc148c25a347f9cbe3d0d7 --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-hy/strings.xml @@ -0,0 +1,21 @@ + + + + + "Մոտակա վայրեր" + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-in/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-in/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-in/strings.xml @@ -0,0 +1,22 @@ + + + + + + + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-is/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-is/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-is/strings.xml @@ -0,0 +1,22 @@ + + + + + + + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-it/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-it/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-it/strings.xml @@ -0,0 +1,22 @@ + + + + + + + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-iw/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-iw/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..0f07995f3283ada28bbe4d59e7242cf213dc9f97 --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-iw/strings.xml @@ -0,0 +1,21 @@ + + + + + "מקומות קרובים" + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-ja/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-ja/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-ja/strings.xml @@ -0,0 +1,22 @@ + + + + + + + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-ka/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-ka/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-ka/strings.xml @@ -0,0 +1,22 @@ + + + + + + + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-kk/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-kk/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-kk/strings.xml @@ -0,0 +1,22 @@ + + + + + + + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-km/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-km/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-km/strings.xml @@ -0,0 +1,22 @@ + + + + + + + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-kn/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-kn/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-kn/strings.xml @@ -0,0 +1,22 @@ + + + + + + + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-ko/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-ko/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..f05a332898f22ac965e3701c0d81bdd4d0cb5023 --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-ko/strings.xml @@ -0,0 +1,21 @@ + + + + + "주변 장소" + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-ky/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-ky/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-ky/strings.xml @@ -0,0 +1,22 @@ + + + + + + + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-lo/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-lo/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..2ff0e854821f2e3355b3b7d31c843a1e9634f59d --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-lo/strings.xml @@ -0,0 +1,21 @@ + + + + + "ສະຖານທີ່ໃກ້ຄຽງ" + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-lt/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-lt/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..9baf54044cb04a2a7e41135a81dea1eb0a50deb9 --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-lt/strings.xml @@ -0,0 +1,21 @@ + + + + + "Netoliese esančios vietos" + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-lv/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-lv/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-lv/strings.xml @@ -0,0 +1,22 @@ + + + + + + + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-mk/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-mk/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-mk/strings.xml @@ -0,0 +1,22 @@ + + + + + + + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-ml/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-ml/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-ml/strings.xml @@ -0,0 +1,22 @@ + + + + + + + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-mn/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-mn/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..707a6c955947258b5dd6eacf9a57bf380a62fec9 --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-mn/strings.xml @@ -0,0 +1,21 @@ + + + + + "Ойролцоох газрууд" + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-mr/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-mr/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..862cd041947e54a6bf880032c1d07fb0d1e4674a --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-mr/strings.xml @@ -0,0 +1,21 @@ + + + + + "जवळपासची ठिकाणे" + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-ms/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-ms/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..aed0bbb4d01aa09b3c20cf78b57a20cb066180f9 --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-ms/strings.xml @@ -0,0 +1,21 @@ + + + + + "Tempat berdekatan" + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-my/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-my/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..74e60a089f939f082ac6ec457332ddd7c39548fa --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-my/strings.xml @@ -0,0 +1,21 @@ + + + + + "အနီးတဝိုက်ရှိ နေရာများ" + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-nb/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-nb/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-nb/strings.xml @@ -0,0 +1,22 @@ + + + + + + + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-ne/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-ne/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..29b6854fec040a372eb910ea83a8fdd54d784528 --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-ne/strings.xml @@ -0,0 +1,21 @@ + + + + + "नजिकका स्थानहरू" + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-nl/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-nl/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-nl/strings.xml @@ -0,0 +1,22 @@ + + + + + + + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-no/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-no/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-no/strings.xml @@ -0,0 +1,22 @@ + + + + + + + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-pa/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-pa/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..1d4d472a3c8eb8125cbe674c8e9f33341b9af0bb --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-pa/strings.xml @@ -0,0 +1,21 @@ + + + + + "ਨਜ਼ਦੀਕੀ ਸਥਾਨ" + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-pl/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-pl/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..c00b6081a86bcf050986da5b05eb78100236b820 --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-pl/strings.xml @@ -0,0 +1,21 @@ + + + + + "Miejsca w pobliżu" + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-pt-rBR/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-pt-rBR/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-pt-rBR/strings.xml @@ -0,0 +1,22 @@ + + + + + + + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-pt-rPT/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-pt-rPT/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-pt-rPT/strings.xml @@ -0,0 +1,22 @@ + + + + + + + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-pt/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-pt/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-pt/strings.xml @@ -0,0 +1,22 @@ + + + + + + + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-ro/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-ro/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-ro/strings.xml @@ -0,0 +1,22 @@ + + + + + + + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-ru/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-ru/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-ru/strings.xml @@ -0,0 +1,22 @@ + + + + + + + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-si/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-si/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-si/strings.xml @@ -0,0 +1,22 @@ + + + + + + + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-sk/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-sk/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-sk/strings.xml @@ -0,0 +1,22 @@ + + + + + + + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-sl/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-sl/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-sl/strings.xml @@ -0,0 +1,22 @@ + + + + + + + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-sq/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-sq/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-sq/strings.xml @@ -0,0 +1,22 @@ + + + + + + + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-sr/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-sr/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..21af04328e32dc8ad10441feab6f978f01776004 --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-sr/strings.xml @@ -0,0 +1,21 @@ + + + + + "Оближња места" + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-sv/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-sv/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..c309b8df47575787c09a6da1fc11e925c7660b53 --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-sv/strings.xml @@ -0,0 +1,21 @@ + + + + + "Platser i närheten" + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-sw/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-sw/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-sw/strings.xml @@ -0,0 +1,22 @@ + + + + + + + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-ta/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-ta/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..ce7496e530a17dac5e746e744f5995da41bf0f81 --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-ta/strings.xml @@ -0,0 +1,21 @@ + + + + + "அருகிலுள்ள இடங்கள்" + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-te/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-te/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..c8229fb649c491fe80e2ec1fbc59de475a1c156f --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-te/strings.xml @@ -0,0 +1,21 @@ + + + + + "సమీప స్థలాలు" + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-th/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-th/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..1167d2f57b023f5b7ea8e1a94e9aee649c250bb1 --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-th/strings.xml @@ -0,0 +1,21 @@ + + + + + "สถานที่ใกล้เคียง" + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-tl/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-tl/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-tl/strings.xml @@ -0,0 +1,22 @@ + + + + + + + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-tr/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-tr/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-tr/strings.xml @@ -0,0 +1,22 @@ + + + + + + + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-uk/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-uk/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..a3936be25633040dfe21bc9b6c56fd23e931288b --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-uk/strings.xml @@ -0,0 +1,21 @@ + + + + + "Місця поблизу" + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-ur/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-ur/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..1a220b3c22a11b9bc2c7751e4f6cf9b53476dd95 --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-ur/strings.xml @@ -0,0 +1,21 @@ + + + + + "قریبی مقامات" + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-uz/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-uz/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-uz/strings.xml @@ -0,0 +1,22 @@ + + + + + + + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-vi/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-vi/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-vi/strings.xml @@ -0,0 +1,22 @@ + + + + + + + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-zh-rCN/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-zh-rCN/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..e060cb589fa91b14e3fc5c35ccfb99abfe1bf82f --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-zh-rCN/strings.xml @@ -0,0 +1,21 @@ + + + + + "附近的地点" + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-zh-rHK/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-zh-rHK/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..5cdf5b9a77fbe5e83e31db5c783d01bc4d84776f --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-zh-rHK/strings.xml @@ -0,0 +1,21 @@ + + + + + "附近地點" + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-zh-rTW/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-zh-rTW/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-zh-rTW/strings.xml @@ -0,0 +1,22 @@ + + + + + + + diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-zu/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-zu/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c --- /dev/null +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-zu/strings.xml @@ -0,0 +1,22 @@ + + + + + + + diff --git a/java/com/android/contacts/common/res/drawable/ic_back_arrow.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values/strings.xml similarity index 70% rename from java/com/android/contacts/common/res/drawable/ic_back_arrow.xml rename to java/com/android/dialer/searchfragment/nearbyplaces/res/values/strings.xml index ecf704e8ebb5269ced5b1c826a1666b8b9a266de..ed8068018b125d372b34d0f87bf81e375f7b87b3 100644 --- a/java/com/android/contacts/common/res/drawable/ic_back_arrow.xml +++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values/strings.xml @@ -1,6 +1,6 @@ - \ No newline at end of file + + + Nearby places + \ No newline at end of file diff --git a/java/com/android/dialer/shortcuts/AndroidManifest.xml b/java/com/android/dialer/shortcuts/AndroidManifest.xml index 71320517d01c536a391090f7a5771dadbe0e5e88..15f77944e3c1ddc21ea37b696c0e3995ad7c904f 100644 --- a/java/com/android/dialer/shortcuts/AndroidManifest.xml +++ b/java/com/android/dialer/shortcuts/AndroidManifest.xml @@ -20,7 +20,7 @@ android:minSdkVersion="23" android:targetSdkVersion="26"/> - + , Boolean> isVoicemailNumberCache = + new ConcurrentHashMap<>(); + + @VisibleForTesting(otherwise = VisibleForTesting.NONE) + public static void setInstanceForTesting(TelecomUtilImpl instanceForTesting) { + instance = instanceForTesting; + } public static void showInCallScreen(Context context, boolean showDialpad) { if (hasReadPhoneStatePermission(context)) { @@ -125,18 +141,30 @@ public class TelecomUtil { } public static boolean isInCall(Context context) { - if (hasReadPhoneStatePermission(context)) { - return getTelecomManager(context).isInCall(); - } - return false; + return instance.isInCall(context); } + /** + * {@link TelecomManager#isVoiceMailNumber(PhoneAccountHandle, String)} takes about 10ms, which is + * way too slow for regular purposes. This method will cache the result for the life time of the + * process. The cache will not be invalidated, for example, if the voicemail number is changed by + * setting up apps like Google Voicemail, the result will be wrong. These events are rare. + */ public static boolean isVoicemailNumber( Context context, PhoneAccountHandle accountHandle, String number) { + if (TextUtils.isEmpty(number)) { + return false; + } + Pair cacheKey = new Pair<>(accountHandle, number); + if (isVoicemailNumberCache.containsKey(cacheKey)) { + return isVoicemailNumberCache.get(cacheKey); + } + boolean result = false; if (hasReadPhoneStatePermission(context)) { - return getTelecomManager(context).isVoiceMailNumber(accountHandle, number); + result = getTelecomManager(context).isVoiceMailNumber(accountHandle, number); } - return false; + isVoicemailNumberCache.put(cacheKey, result); + return result; } @Nullable @@ -189,43 +217,47 @@ public class TelecomUtil { } private static boolean hasPermission(Context context, String permission) { - if (hasPermissionForTesting != null) { - return hasPermissionForTesting; - } - return ContextCompat.checkSelfPermission(context, permission) - == PackageManager.PERMISSION_GRANTED; - } - - public static boolean isDefaultDialer(Context context) { - if (isDefaultDialerForTesting != null) { - return isDefaultDialerForTesting; - } - final boolean result = - TextUtils.equals( - context.getPackageName(), getTelecomManager(context).getDefaultDialerPackage()); - if (result) { - sWarningLogged = false; - } else { - if (!sWarningLogged) { - // Log only once to prevent spam. - LogUtil.w(TAG, "Dialer is not currently set to be default dialer"); - sWarningLogged = true; - } - } - return result; + return instance.hasPermission(context, permission); } private static TelecomManager getTelecomManager(Context context) { return (TelecomManager) context.getSystemService(Context.TELECOM_SERVICE); } - @VisibleForTesting(otherwise = VisibleForTesting.NONE) - public static void setIsDefaultDialerForTesting(Boolean defaultDialer) { - isDefaultDialerForTesting = defaultDialer; + public static boolean isDefaultDialer(Context context) { + return instance.isDefaultDialer(context); } - @VisibleForTesting(otherwise = VisibleForTesting.NONE) - public static void setHasPermissionForTesting(Boolean hasPermission) { - hasPermissionForTesting = hasPermission; + /** Contains an implementation for {@link TelecomUtil} methods */ + @VisibleForTesting() + public static class TelecomUtilImpl { + + public boolean isInCall(Context context) { + if (hasReadPhoneStatePermission(context)) { + return getTelecomManager(context).isInCall(); + } + return false; + } + + public boolean hasPermission(Context context, String permission) { + return ContextCompat.checkSelfPermission(context, permission) + == PackageManager.PERMISSION_GRANTED; + } + + public boolean isDefaultDialer(Context context) { + final boolean result = + TextUtils.equals( + context.getPackageName(), getTelecomManager(context).getDefaultDialerPackage()); + if (result) { + sWarningLogged = false; + } else { + if (!sWarningLogged) { + // Log only once to prevent spam. + LogUtil.w(TAG, "Dialer is not currently set to be default dialer"); + sWarningLogged = true; + } + } + return result; + } } } diff --git a/java/com/android/dialer/theme/res/values-af/strings.xml b/java/com/android/dialer/theme/res/values-af/strings.xml index f263a81865c6a9985e62a795e1e008729f456ff5..17e6ceac4b57713d9f7e9e467820143e3b59ef21 100644 --- a/java/com/android/dialer/theme/res/values-af/strings.xml +++ b/java/com/android/dialer/theme/res/values-af/strings.xml @@ -21,5 +21,7 @@ "%s %d" "Telefoonhokkie" "Foon" + "Kameratoestemming is geaktiveer" + "Video-oproep" "Bel"
      diff --git a/java/com/android/dialer/theme/res/values-am/strings.xml b/java/com/android/dialer/theme/res/values-am/strings.xml index 4f36244280b0fc3ffeff038f3691ad7d58ff3a02..5b0b2fd1f8a4c2e28e4050ef3c1f9e9f4b746e1c 100644 --- a/java/com/android/dialer/theme/res/values-am/strings.xml +++ b/java/com/android/dialer/theme/res/values-am/strings.xml @@ -21,5 +21,7 @@ "%s %d" "የሕዝብ ስልክ" "ስልክ" + "የካሜራ ፈቃድ ነቅቷል" + "የቪዲዮ ጥሪ" "ደውል" diff --git a/java/com/android/dialer/theme/res/values-ar/strings.xml b/java/com/android/dialer/theme/res/values-ar/strings.xml index 951bde2c0bdd407f6be4347e7ed66c95c2780162..ea3468e618b8356a6021309878dcffbbc1dd455a 100644 --- a/java/com/android/dialer/theme/res/values-ar/strings.xml +++ b/java/com/android/dialer/theme/res/values-ar/strings.xml @@ -21,5 +21,7 @@ "%s %d" "هاتف يعمل بالعملة" "الهاتف" + "تم تمكين إذن الكاميرا" + "مكالمة فيديو" "اتصال" diff --git a/java/com/android/dialer/theme/res/values-az/strings.xml b/java/com/android/dialer/theme/res/values-az/strings.xml index 08eaf337bbf93ec5d708628802310d5a668ee4a6..91ead1b68ad47bc792c5db02e6bfea5eda1b9780 100644 --- a/java/com/android/dialer/theme/res/values-az/strings.xml +++ b/java/com/android/dialer/theme/res/values-az/strings.xml @@ -21,5 +21,7 @@ "%s %d" "Taksofon" "Telefon" + "Kamera icazəsi aktiv edildi" + "Video zəng" "Zəng edin" diff --git a/java/com/android/dialer/theme/res/values-b+sr+Latn/strings.xml b/java/com/android/dialer/theme/res/values-b+sr+Latn/strings.xml index 01cdb472246b9c241d837067c08c49505a770506..a1e59654fde94edf092cf181e1d528798e711b91 100644 --- a/java/com/android/dialer/theme/res/values-b+sr+Latn/strings.xml +++ b/java/com/android/dialer/theme/res/values-b+sr+Latn/strings.xml @@ -21,5 +21,7 @@ "%s %d" "Telefonska govornica" "Telefon" + "Omogućena je dozvola za kameru" + "Uputi video poziv" "Pozovi" diff --git a/java/com/android/dialer/theme/res/values-be/strings.xml b/java/com/android/dialer/theme/res/values-be/strings.xml index 49be019bfaac8b59f7552d2e9485d559c8fb81e1..881aa7f209a86b8fddb8355f2b090e3a1f4782d8 100644 --- a/java/com/android/dialer/theme/res/values-be/strings.xml +++ b/java/com/android/dialer/theme/res/values-be/strings.xml @@ -21,5 +21,7 @@ "%s %d" "Таксафон" "Тэлефон" + "Уключаны дазвол на выкарыстанне камеры" + "Відэавыклік" "Выклікаць" diff --git a/java/com/android/dialer/theme/res/values-bg/strings.xml b/java/com/android/dialer/theme/res/values-bg/strings.xml index 87af9f0fd05fedc3d2592360aa59de435d35bd2d..debc23803ef7d4863b3b00a9cdd163eacd1001b9 100644 --- a/java/com/android/dialer/theme/res/values-bg/strings.xml +++ b/java/com/android/dialer/theme/res/values-bg/strings.xml @@ -21,5 +21,7 @@ "%s %d" "Обществен телефон" "Телефон" + "Активирано бе разрешението за камерата" + "Видеообаждане" "Обаждане" diff --git a/java/com/android/dialer/theme/res/values-bn/strings.xml b/java/com/android/dialer/theme/res/values-bn/strings.xml index ab1c65b5d49ac8afc2290c8dfb49b4d981ba6b5e..806ee8e02f6797ef3c4229b016f9f2146a4263ab 100644 --- a/java/com/android/dialer/theme/res/values-bn/strings.xml +++ b/java/com/android/dialer/theme/res/values-bn/strings.xml @@ -21,5 +21,7 @@ "%s %d" "পে ফোন" "ফোন" + "ক্যামেরার অনুমতি সক্ষম করা হয়েছে" + "ভিডিও কল" "কল করুন" diff --git a/java/com/android/dialer/theme/res/values-bs/strings.xml b/java/com/android/dialer/theme/res/values-bs/strings.xml index 01cdb472246b9c241d837067c08c49505a770506..bed71a23063899043abbf359df8186caedb4df72 100644 --- a/java/com/android/dialer/theme/res/values-bs/strings.xml +++ b/java/com/android/dialer/theme/res/values-bs/strings.xml @@ -21,5 +21,7 @@ "%s %d" "Telefonska govornica" "Telefon" + "Dozvola za kameru je omogućena" + "Videopoziv" "Pozovi" diff --git a/java/com/android/dialer/theme/res/values-ca/strings.xml b/java/com/android/dialer/theme/res/values-ca/strings.xml index 1e21a1f76b9fcbfdd78bfdb0ec08ef4a4830df0c..5140ca5747267325be5b59943d733422042fe48b 100644 --- a/java/com/android/dialer/theme/res/values-ca/strings.xml +++ b/java/com/android/dialer/theme/res/values-ca/strings.xml @@ -21,5 +21,7 @@ "%s %d" "Telèfon públic" "Telèfon" + "S\'ha activat el permís d\'accés a la càmera" + "Videotrucada" "Truca" diff --git a/java/com/android/dialer/theme/res/values-cs/strings.xml b/java/com/android/dialer/theme/res/values-cs/strings.xml index ca7bad9bba0c48739e26718b9fbc24019da17fa9..a951fe7a845e7dc7b2f98fdb063ce342b144d5a3 100644 --- a/java/com/android/dialer/theme/res/values-cs/strings.xml +++ b/java/com/android/dialer/theme/res/values-cs/strings.xml @@ -21,5 +21,7 @@ "%s %d" "Telefonní automat" "Telefon" + "Byl povolen přístup k fotoaparátu" + "Zahájit videohovor" "Volat" diff --git a/java/com/android/dialer/theme/res/values-da/strings.xml b/java/com/android/dialer/theme/res/values-da/strings.xml index c606b281eb5b0ecf4b47a3f6f41276106e33fa11..54f185041701e954d13542f333e748807895761f 100644 --- a/java/com/android/dialer/theme/res/values-da/strings.xml +++ b/java/com/android/dialer/theme/res/values-da/strings.xml @@ -21,5 +21,7 @@ "%s %d" "Mønttelefon" "Opkald" + "Kameratilladelse er aktiveret" + "Videoopkald" "Ring op" diff --git a/java/com/android/dialer/theme/res/values-de/strings.xml b/java/com/android/dialer/theme/res/values-de/strings.xml index d214287c2ef25378e6505e09e1692d12fdfe2397..0c97581cbe4885bf5a263c584f737d965ba386c7 100644 --- a/java/com/android/dialer/theme/res/values-de/strings.xml +++ b/java/com/android/dialer/theme/res/values-de/strings.xml @@ -21,5 +21,7 @@ "%s %d" "Münztelefon" "Telefon" + "Berechtigung für Kamera aktiviert" + "Videoanruf" "Anrufen" diff --git a/java/com/android/dialer/theme/res/values-el/strings.xml b/java/com/android/dialer/theme/res/values-el/strings.xml index abe1d3f18b68167a2ed8ebdbb80d5b53f470e3e3..1c34a69c718bc44bba0f7ec4bc3c6bed87c3b928 100644 --- a/java/com/android/dialer/theme/res/values-el/strings.xml +++ b/java/com/android/dialer/theme/res/values-el/strings.xml @@ -21,5 +21,7 @@ "%s %d" "Τηλέφωνο με χρέωση" "Τηλέφωνο" + "Το δικαίωμα χρήσης της κάμερας έχει ενεργοποιηθεί" + "Βιντεοκλήση" "Κλήση" diff --git a/java/com/android/dialer/theme/res/values-en-rAU/strings.xml b/java/com/android/dialer/theme/res/values-en-rAU/strings.xml index b086b4ca56636255a000ea7d557109a917651e32..136d7df33f467bddd03e320b0d58cd578197795b 100644 --- a/java/com/android/dialer/theme/res/values-en-rAU/strings.xml +++ b/java/com/android/dialer/theme/res/values-en-rAU/strings.xml @@ -21,5 +21,7 @@ "%s %d" "Payphone" "Phone" + "Camera permission enabled" + "Video call" "Call" diff --git a/java/com/android/dialer/theme/res/values-en-rGB/strings.xml b/java/com/android/dialer/theme/res/values-en-rGB/strings.xml index b086b4ca56636255a000ea7d557109a917651e32..136d7df33f467bddd03e320b0d58cd578197795b 100644 --- a/java/com/android/dialer/theme/res/values-en-rGB/strings.xml +++ b/java/com/android/dialer/theme/res/values-en-rGB/strings.xml @@ -21,5 +21,7 @@ "%s %d" "Payphone" "Phone" + "Camera permission enabled" + "Video call" "Call" diff --git a/java/com/android/dialer/theme/res/values-en-rIN/strings.xml b/java/com/android/dialer/theme/res/values-en-rIN/strings.xml index b086b4ca56636255a000ea7d557109a917651e32..136d7df33f467bddd03e320b0d58cd578197795b 100644 --- a/java/com/android/dialer/theme/res/values-en-rIN/strings.xml +++ b/java/com/android/dialer/theme/res/values-en-rIN/strings.xml @@ -21,5 +21,7 @@ "%s %d" "Payphone" "Phone" + "Camera permission enabled" + "Video call" "Call" diff --git a/java/com/android/dialer/theme/res/values-es-rUS/strings.xml b/java/com/android/dialer/theme/res/values-es-rUS/strings.xml index aee2d0a9d6e375bf44119236fc23b187acb022f1..90837b76a5cccbbae1de4baa656c63cce9f1d43b 100644 --- a/java/com/android/dialer/theme/res/values-es-rUS/strings.xml +++ b/java/com/android/dialer/theme/res/values-es-rUS/strings.xml @@ -21,5 +21,7 @@ "%s %d" "Teléfono público" "Teléfono" + "Se activó el permiso de la cámara" + "Videollamada" "Llamar" diff --git a/java/com/android/dialer/theme/res/values-es/strings.xml b/java/com/android/dialer/theme/res/values-es/strings.xml index 343ac2158b6b2f05630e3786d8ce4b718ff49f3a..c2d3ee3d4a733e86ccaa71e9cbd140107223102a 100644 --- a/java/com/android/dialer/theme/res/values-es/strings.xml +++ b/java/com/android/dialer/theme/res/values-es/strings.xml @@ -21,5 +21,7 @@ "%s %d" "Teléfono público" "Teléfono" + "Se ha habilitado el acceso a la cámara" + "Videollamada" "Llamar" diff --git a/java/com/android/dialer/theme/res/values-et/strings.xml b/java/com/android/dialer/theme/res/values-et/strings.xml index 5b1e6c0447c7d90c8fc6c35d37b3db208dcaa89e..269fa6403cdb9723f1d02a0b697094f4e9bc02b9 100644 --- a/java/com/android/dialer/theme/res/values-et/strings.xml +++ b/java/com/android/dialer/theme/res/values-et/strings.xml @@ -21,5 +21,7 @@ "%s %d" "Telefoniautomaat" "Telefon" + "Kaameraluba on antud" + "Videokõne" "Helista" diff --git a/java/com/android/dialer/theme/res/values-eu/strings.xml b/java/com/android/dialer/theme/res/values-eu/strings.xml index dbb4f703cf1cd2902ff664896e48644caccd77ce..14345f05f50a9e1d2847aaeda3249f82c0b13134 100644 --- a/java/com/android/dialer/theme/res/values-eu/strings.xml +++ b/java/com/android/dialer/theme/res/values-eu/strings.xml @@ -21,5 +21,7 @@ "%s %d" "Telefono publikoa" "Telefonoa" + "Kamera atzitzeko baimena eman da" + "Bideo-deia" "Deitu" diff --git a/java/com/android/dialer/theme/res/values-fa/strings.xml b/java/com/android/dialer/theme/res/values-fa/strings.xml index 99bed5f22c82c2b8e565c9228a3b1b45a9c848dd..f751f3404bf16647bf6955c770f7fe4bdfbc0346 100644 --- a/java/com/android/dialer/theme/res/values-fa/strings.xml +++ b/java/com/android/dialer/theme/res/values-fa/strings.xml @@ -21,5 +21,7 @@ "%d %s" "تلفن عمومی" "تلفن" + "مجوز دوربین فعال شد" + "تماس ویدیویی" "تماس" diff --git a/java/com/android/dialer/theme/res/values-fi/strings.xml b/java/com/android/dialer/theme/res/values-fi/strings.xml index a180be56592629849e3b6023ca3ae5e48bc8524d..0c09d7f438d18c08f36647d4ca8462d9f3ea66ae 100644 --- a/java/com/android/dialer/theme/res/values-fi/strings.xml +++ b/java/com/android/dialer/theme/res/values-fi/strings.xml @@ -21,5 +21,7 @@ "%s %d" "Maksupuhelin" "Puhelin" + "Kameran käyttöoikeus myönnettiin" + "Videopuhelu" "Soita" diff --git a/java/com/android/dialer/theme/res/values-fr-rCA/strings.xml b/java/com/android/dialer/theme/res/values-fr-rCA/strings.xml index 18a70bbe8d2efcd27bd89bd365d01f65c4dcc5d7..7d901ca3923f506c29246ce76180e725fc9347de 100644 --- a/java/com/android/dialer/theme/res/values-fr-rCA/strings.xml +++ b/java/com/android/dialer/theme/res/values-fr-rCA/strings.xml @@ -21,5 +21,7 @@ "%s %d" "Cabine téléphonique" "Téléphone" + "Autorisation d\'accès à l\'appareil photo activée" + "Appel vidéo" "Appeler" diff --git a/java/com/android/dialer/theme/res/values-fr/strings.xml b/java/com/android/dialer/theme/res/values-fr/strings.xml index 18a70bbe8d2efcd27bd89bd365d01f65c4dcc5d7..1c30ef1e7e9c4dcc9923cd808406272ff118433e 100644 --- a/java/com/android/dialer/theme/res/values-fr/strings.xml +++ b/java/com/android/dialer/theme/res/values-fr/strings.xml @@ -21,5 +21,7 @@ "%s %d" "Cabine téléphonique" "Téléphone" + "Autorisation d\'accès à l\'appareil photo accordée" + "Appel vidéo" "Appeler" diff --git a/java/com/android/dialer/theme/res/values-gl/strings.xml b/java/com/android/dialer/theme/res/values-gl/strings.xml index fbbad6c076bb1de78a965815e822a2afb3d2e11b..083d395ade17abeb54222962ef612a90dcc15e9d 100644 --- a/java/com/android/dialer/theme/res/values-gl/strings.xml +++ b/java/com/android/dialer/theme/res/values-gl/strings.xml @@ -21,5 +21,7 @@ "%s %d" "Teléfono público" "Teléfono" + "Activouse o permiso de acceso á cámara" + "Videochamada" "Chamar" diff --git a/java/com/android/dialer/theme/res/values-gu/strings.xml b/java/com/android/dialer/theme/res/values-gu/strings.xml index 9b38dcd3f6504046ca4a5d017bea52f379d5e6ea..4baba6971cbaeda25b5a535081c70258405b6150 100644 --- a/java/com/android/dialer/theme/res/values-gu/strings.xml +++ b/java/com/android/dialer/theme/res/values-gu/strings.xml @@ -21,5 +21,7 @@ "%s %d" "પેફોન" "ફોન" + "કૅમેરાની પરવાનગી સક્ષમ કરી" + "વિડિઓ કૉલ" "કૉલ કરો" diff --git a/java/com/android/dialer/theme/res/values-hi/strings.xml b/java/com/android/dialer/theme/res/values-hi/strings.xml index ee360b404a1e4043fac4da8f576a14bb1a143ae0..758be5d22e9c309a786e2604c7e70f66aa39e9d0 100644 --- a/java/com/android/dialer/theme/res/values-hi/strings.xml +++ b/java/com/android/dialer/theme/res/values-hi/strings.xml @@ -21,5 +21,7 @@ "%s %d" "पे-फ़ोन" "फ़ोन" + "कैमरे की अनुमति सक्षम की गई" + "वीडियो कॉल" "कॉल करें" diff --git a/java/com/android/dialer/theme/res/values-hr/strings.xml b/java/com/android/dialer/theme/res/values-hr/strings.xml index 92e19567d0233117bd16821b5d6cce14ec9f1516..89a5aeec2040f163b34aa1dc140b2d21aa7a9f3a 100644 --- a/java/com/android/dialer/theme/res/values-hr/strings.xml +++ b/java/com/android/dialer/theme/res/values-hr/strings.xml @@ -21,5 +21,7 @@ "%s %d" "Javna telefonska govornica" "Telefon" + "Omogućen je pristup kameri" + "Videopoziv" "Pozovi" diff --git a/java/com/android/dialer/theme/res/values-hu/strings.xml b/java/com/android/dialer/theme/res/values-hu/strings.xml index dfcc876e4a9f1194d55e9fb9d250ccdfb9ff7434..30051d430abe8e0d48a73c1d8d3ca9d3a57496c3 100644 --- a/java/com/android/dialer/theme/res/values-hu/strings.xml +++ b/java/com/android/dialer/theme/res/values-hu/strings.xml @@ -21,5 +21,7 @@ "%s %d" "Nyilvános telefon" "Telefon" + "Kameraengedély megadva" + "Videohívás" "Hívás" diff --git a/java/com/android/dialer/theme/res/values-hy/strings.xml b/java/com/android/dialer/theme/res/values-hy/strings.xml index 3b4e862b330663478b804869bfc80c2f3ad081ce..6577dab16b1ac7bcacd4214b9ea1e2a5f1974ebb 100644 --- a/java/com/android/dialer/theme/res/values-hy/strings.xml +++ b/java/com/android/dialer/theme/res/values-hy/strings.xml @@ -21,5 +21,7 @@ "%s %d" "Բջջային տերմինալ" "Հեռախոս" + "Տեսախցիկից օգտվելու թույլտվությունը տրամադրված է" + "Տեսազանգ" "Զանգել" diff --git a/java/com/android/dialer/theme/res/values-in/strings.xml b/java/com/android/dialer/theme/res/values-in/strings.xml index eda15a2991890ab3aba5aeaa2f01ca616c186caf..d2d72b832860e4d01e4e0783d08adf41fd2259dd 100644 --- a/java/com/android/dialer/theme/res/values-in/strings.xml +++ b/java/com/android/dialer/theme/res/values-in/strings.xml @@ -21,5 +21,7 @@ "%s %d" "Telepon Umum" "Telepon" + "Izin kamera diaktifkan" + "Video call" "Telepon" diff --git a/java/com/android/dialer/theme/res/values-is/strings.xml b/java/com/android/dialer/theme/res/values-is/strings.xml index cda7fc8fe59e78ee969918b890636f11058423c6..ff3faf8367c79b20869b1eba8b6ce8a7fc74d66e 100644 --- a/java/com/android/dialer/theme/res/values-is/strings.xml +++ b/java/com/android/dialer/theme/res/values-is/strings.xml @@ -21,5 +21,7 @@ "%s %d" "Símasjálfsali" "Sími" + "Myndavélarheimild virk" + "Hringja myndsímtal" "Hringja" diff --git a/java/com/android/dialer/theme/res/values-it/strings.xml b/java/com/android/dialer/theme/res/values-it/strings.xml index fa2caa6bbea50f4d2ac44c427675509de461c012..4b26288acdb30990d47e8d74ce8b768fe47686a4 100644 --- a/java/com/android/dialer/theme/res/values-it/strings.xml +++ b/java/com/android/dialer/theme/res/values-it/strings.xml @@ -21,5 +21,7 @@ "%s %d" "Cabina telefonica" "Telefono" + "Autorizzazioni della fotocamera attivate" + "Videochiamata" "Chiama" diff --git a/java/com/android/dialer/theme/res/values-iw/strings.xml b/java/com/android/dialer/theme/res/values-iw/strings.xml index 18d87eaf73d414b7c59ccc7f120ea0adf41e23bc..09abf2ed11d9fd8e815e38bc0e07f0fd1db50411 100644 --- a/java/com/android/dialer/theme/res/values-iw/strings.xml +++ b/java/com/android/dialer/theme/res/values-iw/strings.xml @@ -21,5 +21,7 @@ "%s %d" "טלפון ציבורי" "טלפון" + "הרשאת הגישה למצלמה הופעלה" + "שיחת וידאו" "התקשר" diff --git a/java/com/android/dialer/theme/res/values-ja/strings.xml b/java/com/android/dialer/theme/res/values-ja/strings.xml index 39215598c381ca40420a416e5162258be2ea850c..551d67983008bf1f24a9f69d80209723b391bde2 100644 --- a/java/com/android/dialer/theme/res/values-ja/strings.xml +++ b/java/com/android/dialer/theme/res/values-ja/strings.xml @@ -21,5 +21,7 @@ "%s%d)" "公衆電話" "電話" + "カメラへのアクセスを自動で許可しました" + "ビデオハングアウト" "発信" diff --git a/java/com/android/dialer/theme/res/values-ka/strings.xml b/java/com/android/dialer/theme/res/values-ka/strings.xml index 18e7cb34dde84b5c8854c74770299f96ce0fc76d..ab225954ed3ffed680d4d99d234fdf0d0b318b79 100644 --- a/java/com/android/dialer/theme/res/values-ka/strings.xml +++ b/java/com/android/dialer/theme/res/values-ka/strings.xml @@ -21,5 +21,7 @@ "%s %d" "გადახდის ტელეფონი" "ტელეფონი" + "კამერაზე წვდომის ნებართვა ჩართულია" + "ვიდეოზარი" "დარეკვა" diff --git a/java/com/android/dialer/theme/res/values-kk/strings.xml b/java/com/android/dialer/theme/res/values-kk/strings.xml index f9c62d32ec551aba2cfeb8e42adff3ec3aeba190..d3a1b7bb933ad7243be9a15448029cdce4b183ee 100644 --- a/java/com/android/dialer/theme/res/values-kk/strings.xml +++ b/java/com/android/dialer/theme/res/values-kk/strings.xml @@ -21,5 +21,7 @@ "%s %d" "Автомат-телефон" "Телефон" + "Камера рұқсаты қосылды" + "Бейне қоңырау" "Қоңырау шалу" diff --git a/java/com/android/dialer/theme/res/values-km/strings.xml b/java/com/android/dialer/theme/res/values-km/strings.xml index 7e375cf990d4ccc66306df598bf27627d1dd5fbb..900f1d690f4fbcf7cc7050d9944b1e628b8f9c14 100644 --- a/java/com/android/dialer/theme/res/values-km/strings.xml +++ b/java/com/android/dialer/theme/res/values-km/strings.xml @@ -21,5 +21,7 @@ "%s %d" "ទូរស័ព្ទសាធារណៈ" "ទូរស័ព្ទ" + "បានបើក​ការអនុញ្ញាត​កាមេរ៉ា" + "ការ​ហៅវីដេអូ" "ហៅ​ទូរសព្ទ" diff --git a/java/com/android/dialer/theme/res/values-kn/strings.xml b/java/com/android/dialer/theme/res/values-kn/strings.xml index 718fea0d47fb6406a969d26869d4a70beb8316ec..ab9f816db380350176d00bef1617f5de9927bc16 100644 --- a/java/com/android/dialer/theme/res/values-kn/strings.xml +++ b/java/com/android/dialer/theme/res/values-kn/strings.xml @@ -21,5 +21,7 @@ "%s %d" "ಪೇಫೋನ್" "ಫೋನ್" + "ಕ್ಯಾಮರಾ ಅನುಮತಿಯನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ" + "ವೀಡಿಯೊ ಕರೆ" "ಕರೆಮಾಡಿ" diff --git a/java/com/android/dialer/theme/res/values-ko/strings.xml b/java/com/android/dialer/theme/res/values-ko/strings.xml index 29f608c6e5361ce149ecc21fca70a31cf08ca564..b5ac55695706a3bb81f73261b9d27e43329d1011 100644 --- a/java/com/android/dialer/theme/res/values-ko/strings.xml +++ b/java/com/android/dialer/theme/res/values-ko/strings.xml @@ -21,5 +21,7 @@ "%s %d" "공중전화" "휴대전화" + "카메라 권한 사용 가능" + "화상 통화" "전화" diff --git a/java/com/android/dialer/theme/res/values-ky/strings.xml b/java/com/android/dialer/theme/res/values-ky/strings.xml index 905b8c5ff9ba19b5524606ded441960dba80a37a..0a9bec29453a5b727f07977423d456fef1ca6d2a 100644 --- a/java/com/android/dialer/theme/res/values-ky/strings.xml +++ b/java/com/android/dialer/theme/res/values-ky/strings.xml @@ -21,5 +21,7 @@ "%s %d" "Таксофон" "Телефон" + "Камеранын уруксаты иштетилди" + "Видео чалуу" "Чалуу" diff --git a/java/com/android/dialer/theme/res/values-lo/strings.xml b/java/com/android/dialer/theme/res/values-lo/strings.xml index 6826a753fd8a0ef412752e38f49a70abfe2ee90d..d33d43e5bbd9c6508114c7361343b5520a36cd70 100644 --- a/java/com/android/dialer/theme/res/values-lo/strings.xml +++ b/java/com/android/dialer/theme/res/values-lo/strings.xml @@ -21,5 +21,7 @@ "%s %d" "ຕູ້​ໂທ​ລະ​ສັບ​ສາ​ທາ​ລະ​ນະ" "ໂທລະສັບ" + "ເປີດໃຊ້ສິດອະນຸຍາດກ້ອງຖ່າຍຮູບແລ້ວ" + "ໂທວິດີໂອ" "ໂທ" diff --git a/java/com/android/dialer/theme/res/values-lt/strings.xml b/java/com/android/dialer/theme/res/values-lt/strings.xml index 43469a1fddfac52c039d0532dc31b7afb41e3d21..fdf31e22797240e24adf11fbf24afdc6b1c56e23 100644 --- a/java/com/android/dialer/theme/res/values-lt/strings.xml +++ b/java/com/android/dialer/theme/res/values-lt/strings.xml @@ -21,5 +21,7 @@ "%d %s" "Taksofonas" "Telefonas" + "Fotoaparato leidimas įgalintas" + "Vaizdo skambutis" "Skambinti" diff --git a/java/com/android/dialer/theme/res/values-lv/strings.xml b/java/com/android/dialer/theme/res/values-lv/strings.xml index f9a6deca8092b7b2e694a9e09980a5b9375cdd80..031c5bdea745f757a6b00492614d554a3e1bc79e 100644 --- a/java/com/android/dialer/theme/res/values-lv/strings.xml +++ b/java/com/android/dialer/theme/res/values-lv/strings.xml @@ -21,5 +21,7 @@ "%s %d" "Maksas tālrunis" "Tālrunis" + "Kameras atļauja iespējota" + "Videozvans" "Zvanīt" diff --git a/java/com/android/dialer/theme/res/values-mk/strings.xml b/java/com/android/dialer/theme/res/values-mk/strings.xml index 1328edbb2c817dce6e74fd2a8d2fd2b8caf9e52f..d89d12e904083e11fe6506921ee25a781ff6e351 100644 --- a/java/com/android/dialer/theme/res/values-mk/strings.xml +++ b/java/com/android/dialer/theme/res/values-mk/strings.xml @@ -21,5 +21,7 @@ "%s %d" "Говорница" "Телефон" + "Дозволата за камера е овозможена" + "Воспоставете видеоповик" "Повикајте" diff --git a/java/com/android/dialer/theme/res/values-ml/strings.xml b/java/com/android/dialer/theme/res/values-ml/strings.xml index 03f9533ffd41f21e97385f27efa85b6293821f3a..f02ceeb064218a89e08e9b02b94b4642207e6b43 100644 --- a/java/com/android/dialer/theme/res/values-ml/strings.xml +++ b/java/com/android/dialer/theme/res/values-ml/strings.xml @@ -21,5 +21,7 @@ "%s %d" "പണം നൽകി ഉപയോഗിക്കുന്ന ഫോൺ" "ഫോണ്‍" + "ക്യാമറ അനുമതി നൽകി" + "വീഡിയോ കോള്‍" "വിളിക്കുക" diff --git a/java/com/android/dialer/theme/res/values-mn/strings.xml b/java/com/android/dialer/theme/res/values-mn/strings.xml index c47f08324a2bdb5293aa1ccd39d055162685dcf6..7a07e5d4d6f34ca7779743ece22005a212586e43 100644 --- a/java/com/android/dialer/theme/res/values-mn/strings.xml +++ b/java/com/android/dialer/theme/res/values-mn/strings.xml @@ -21,5 +21,7 @@ "%s %d" "Payphone" "Утас" + "Камерын зөвшөөрөл идэвхжсэн" + "Видео дуудлага" "Залгах" diff --git a/java/com/android/dialer/theme/res/values-mr/strings.xml b/java/com/android/dialer/theme/res/values-mr/strings.xml index 41a9c96e0a0fd2932633e04050c8a948acbcdbb7..eeb9afa1e99b9191577cadb28db59c9f52c2e020 100644 --- a/java/com/android/dialer/theme/res/values-mr/strings.xml +++ b/java/com/android/dialer/theme/res/values-mr/strings.xml @@ -21,5 +21,7 @@ "%s %d" "सार्वजनिक फोन" "फोन" + "कॅमेरा परवानगी सक्षम केली" + "व्हिडिओ कॉल" "कॉल करा" diff --git a/java/com/android/dialer/theme/res/values-ms/strings.xml b/java/com/android/dialer/theme/res/values-ms/strings.xml index b28fe26ac975a9f2502fe0057149d6313058859b..2e424fdf761e4edc2f9c54d0a341037be44113c4 100644 --- a/java/com/android/dialer/theme/res/values-ms/strings.xml +++ b/java/com/android/dialer/theme/res/values-ms/strings.xml @@ -21,5 +21,7 @@ "%s %d" "Telefon Awam" "Telefon" + "Kebenaran kamera didayakan" + "Panggilan video" "Panggil" diff --git a/java/com/android/dialer/theme/res/values-my/strings.xml b/java/com/android/dialer/theme/res/values-my/strings.xml index eb21b6ef23adf37ce8ce1a60ed5826165545d71d..97b871b302bc719bf697bf941b4adc5d9e9cee05 100644 --- a/java/com/android/dialer/theme/res/values-my/strings.xml +++ b/java/com/android/dialer/theme/res/values-my/strings.xml @@ -21,5 +21,7 @@ "%s %d" "ငွေပေးရသည့်ဖုန်း" "ဖုန်း" + "ကင်မရာအသုံးပြုခွင့် ဖွင့်ထားပါသည်" + "ဗီဒီယိုခေါ်ဆိုမှု" "ခေါ်ဆိုရန်" diff --git a/java/com/android/dialer/theme/res/values-nb/strings.xml b/java/com/android/dialer/theme/res/values-nb/strings.xml index dcd9b17ad3c5c20f132c891bdda474787e73914f..7587b7e30708b10b9f8486cc56d679d92ddc096d 100644 --- a/java/com/android/dialer/theme/res/values-nb/strings.xml +++ b/java/com/android/dialer/theme/res/values-nb/strings.xml @@ -21,5 +21,7 @@ "%s %d" "Telefonkiosk" "Telefon" + "Kameratillatelsen er aktivert" + "Videosamtale" "Ring" diff --git a/java/com/android/dialer/theme/res/values-ne/strings.xml b/java/com/android/dialer/theme/res/values-ne/strings.xml index 383ac2c8d1263d15a46c8293e0b762bc1de079b4..af1ad5e249178a8b21713e2a7730f3016ae5df6c 100644 --- a/java/com/android/dialer/theme/res/values-ne/strings.xml +++ b/java/com/android/dialer/theme/res/values-ne/strings.xml @@ -21,5 +21,7 @@ "%s %d" "पेफोन" "फोन" + "क्यामेरा सम्बन्धी अनुमतिहरूलाई सक्षम पारियो" + "भिडियो कल" "कल गर्नुहोस्" diff --git a/java/com/android/dialer/theme/res/values-nl/strings.xml b/java/com/android/dialer/theme/res/values-nl/strings.xml index 96357081dc266c1f2d371d4d022225219f8cc99f..ab51c97ae38901cdb2f5e0e9d837227c16f91d70 100644 --- a/java/com/android/dialer/theme/res/values-nl/strings.xml +++ b/java/com/android/dialer/theme/res/values-nl/strings.xml @@ -21,5 +21,7 @@ "%s %d" "Telefooncel" "Telefoon" + "Camerarechten ingeschakeld" + "Videogesprek" "Bellen" diff --git a/java/com/android/dialer/theme/res/values-no/strings.xml b/java/com/android/dialer/theme/res/values-no/strings.xml index dcd9b17ad3c5c20f132c891bdda474787e73914f..7587b7e30708b10b9f8486cc56d679d92ddc096d 100644 --- a/java/com/android/dialer/theme/res/values-no/strings.xml +++ b/java/com/android/dialer/theme/res/values-no/strings.xml @@ -21,5 +21,7 @@ "%s %d" "Telefonkiosk" "Telefon" + "Kameratillatelsen er aktivert" + "Videosamtale" "Ring" diff --git a/java/com/android/dialer/theme/res/values-pa/strings.xml b/java/com/android/dialer/theme/res/values-pa/strings.xml index dc23b7a69020a3a181099fa8f208daf5f6ae7be1..8784bcae1887bdf6ca49529ea4d9e97305428455 100644 --- a/java/com/android/dialer/theme/res/values-pa/strings.xml +++ b/java/com/android/dialer/theme/res/values-pa/strings.xml @@ -21,5 +21,7 @@ "%s %d" "ਪੇਫੋਨ" "ਫੋਨ" + "ਕੈਮਰਾ ਇਜਾਜ਼ਤ ਨੂੰ ਯੋਗ ਬਣਾਇਆ ਗਿਆ ਹੈ" + "ਵੀਡੀਓ ਕਾਲ" "ਕਾਲ ਕਰੋ" diff --git a/java/com/android/dialer/theme/res/values-pl/strings.xml b/java/com/android/dialer/theme/res/values-pl/strings.xml index 1ebaad2cc76f729ecf434a0441b4dcd3c006574f..246261e97037aff983d1bc53aac2f4ddd7d726f3 100644 --- a/java/com/android/dialer/theme/res/values-pl/strings.xml +++ b/java/com/android/dialer/theme/res/values-pl/strings.xml @@ -21,5 +21,7 @@ "%s %d" "Automat telefoniczny" "Telefon" + "Uprawnienia do korzystania z aparatu zostały włączone" + "Rozmowa wideo" "Zadzwoń" diff --git a/java/com/android/dialer/theme/res/values-pt-rBR/strings.xml b/java/com/android/dialer/theme/res/values-pt-rBR/strings.xml index 6caf87cb8467deda34edc43e3c3bc6f9d785bed2..c1356d9b3a0232eabb447937ce3ecfbabf5d4bc6 100644 --- a/java/com/android/dialer/theme/res/values-pt-rBR/strings.xml +++ b/java/com/android/dialer/theme/res/values-pt-rBR/strings.xml @@ -21,5 +21,7 @@ "%s %d" "Telefone público" "Telefone" + "Permissão de câmera ativada" + "Videochamada" "Ligar" diff --git a/java/com/android/dialer/theme/res/values-pt-rPT/strings.xml b/java/com/android/dialer/theme/res/values-pt-rPT/strings.xml index ef7c7d6c6757c0603c78f9def3571a79337639e2..2b46e44a1fd06fe992ad5bba120ffe8a8aba14bf 100644 --- a/java/com/android/dialer/theme/res/values-pt-rPT/strings.xml +++ b/java/com/android/dialer/theme/res/values-pt-rPT/strings.xml @@ -21,5 +21,7 @@ "%s %d" "Telefone público" "Telefone" + "Autorização da câmara ativada" + "Videochamada" "Telefonar" diff --git a/java/com/android/dialer/theme/res/values-pt/strings.xml b/java/com/android/dialer/theme/res/values-pt/strings.xml index 6caf87cb8467deda34edc43e3c3bc6f9d785bed2..c1356d9b3a0232eabb447937ce3ecfbabf5d4bc6 100644 --- a/java/com/android/dialer/theme/res/values-pt/strings.xml +++ b/java/com/android/dialer/theme/res/values-pt/strings.xml @@ -21,5 +21,7 @@ "%s %d" "Telefone público" "Telefone" + "Permissão de câmera ativada" + "Videochamada" "Ligar" diff --git a/java/com/android/dialer/theme/res/values-ro/strings.xml b/java/com/android/dialer/theme/res/values-ro/strings.xml index 4d0c09baf064d2c66c0baf3a42f47105f523f1e2..8978e9240548a06040409302f40eb8c789ec3930 100644 --- a/java/com/android/dialer/theme/res/values-ro/strings.xml +++ b/java/com/android/dialer/theme/res/values-ro/strings.xml @@ -21,5 +21,7 @@ "%s %d" "Telefon public" "Telefon" + "Permisiunea pentru cameră a fost activată." + "Apel video" "Apelați" diff --git a/java/com/android/dialer/theme/res/values-ru/strings.xml b/java/com/android/dialer/theme/res/values-ru/strings.xml index aeab13624370f2400da48da614cdcce0ac846b2b..a155052be4870d60aa18dd70a0e82fec966e2be8 100644 --- a/java/com/android/dialer/theme/res/values-ru/strings.xml +++ b/java/com/android/dialer/theme/res/values-ru/strings.xml @@ -21,5 +21,7 @@ "%s %d" "Телефон-автомат" "Телефон" + "Доступ к камере разрешен" + "Видеовызов" "Позвонить" diff --git a/java/com/android/dialer/theme/res/values-si/strings.xml b/java/com/android/dialer/theme/res/values-si/strings.xml index ba3bb057712f03c65a3c70c2c007594897bf269a..424a11255d59d2dc3c713a2482c3b1630d26521d 100644 --- a/java/com/android/dialer/theme/res/values-si/strings.xml +++ b/java/com/android/dialer/theme/res/values-si/strings.xml @@ -21,5 +21,7 @@ "%s %d" "පේෆෝනය" "දුරකථනය" + "කැමරා අවසර සබල කර ඇත" + "වීඩියෝ ඇමතුම" "ඇමතුම" diff --git a/java/com/android/dialer/theme/res/values-sk/strings.xml b/java/com/android/dialer/theme/res/values-sk/strings.xml index 6863463aed41a2d0397af384ae03fddb623ae291..411b85edc19b45925e058b85d568b2ce23bc5888 100644 --- a/java/com/android/dialer/theme/res/values-sk/strings.xml +++ b/java/com/android/dialer/theme/res/values-sk/strings.xml @@ -21,5 +21,7 @@ "%s %d" "Telefónny automat" "Telefón" + "Povolenie pre fotoaparát je aktivované" + "Videohovor" "Volať" diff --git a/java/com/android/dialer/theme/res/values-sl/strings.xml b/java/com/android/dialer/theme/res/values-sl/strings.xml index 1b1776abc9cbf42716e1b7f657c15ad51870790b..85a3e2b8eba5a701ee33349eee93cbee9f1bad08 100644 --- a/java/com/android/dialer/theme/res/values-sl/strings.xml +++ b/java/com/android/dialer/theme/res/values-sl/strings.xml @@ -21,5 +21,7 @@ "%s %d" "Telefonska govorilnica" "Telefon" + "Dovoljenje za dostop do fotoaparata je omogočeno" + "Videoklic" "Pokliči" diff --git a/java/com/android/dialer/theme/res/values-sq/strings.xml b/java/com/android/dialer/theme/res/values-sq/strings.xml index 0d7084af665d0afc5a2092b3e35e1b1ff7102732..5cbd587d329d6b73bc44ffb20f5ef3418b556492 100644 --- a/java/com/android/dialer/theme/res/values-sq/strings.xml +++ b/java/com/android/dialer/theme/res/values-sq/strings.xml @@ -21,5 +21,7 @@ "%s %d" "Telefon me pagesë" "Telefoni" + "Leja e kamerës është aktivizuar" + "Telefonatë me video" "Telefono" diff --git a/java/com/android/dialer/theme/res/values-sr/strings.xml b/java/com/android/dialer/theme/res/values-sr/strings.xml index a744e95305772a95e9753d41af3f0990a3b7246b..310da735db3eeaf65ce6df916a9340cf7d071307 100644 --- a/java/com/android/dialer/theme/res/values-sr/strings.xml +++ b/java/com/android/dialer/theme/res/values-sr/strings.xml @@ -21,5 +21,7 @@ "%s %d" "Телефонска говорница" "Телефон" + "Омогућена је дозвола за камеру" + "Упути видео позив" "Позови" diff --git a/java/com/android/dialer/theme/res/values-sv/strings.xml b/java/com/android/dialer/theme/res/values-sv/strings.xml index f409807ef14404dfc507ac20031361d503b9c519..af8e5f7b1df834fe58a153287214bffaf3bac99a 100644 --- a/java/com/android/dialer/theme/res/values-sv/strings.xml +++ b/java/com/android/dialer/theme/res/values-sv/strings.xml @@ -21,5 +21,7 @@ "%s %d" "Telefonautomat" "Telefon" + "Kamerabehörighet har aktiverats" + "Videosamtal" "Ring" diff --git a/java/com/android/dialer/theme/res/values-sw/strings.xml b/java/com/android/dialer/theme/res/values-sw/strings.xml index a2f98888db952121576dbe33905d02c64248187c..31615febb2f7d53a26e9e9b9015138256974b42c 100644 --- a/java/com/android/dialer/theme/res/values-sw/strings.xml +++ b/java/com/android/dialer/theme/res/values-sw/strings.xml @@ -21,5 +21,7 @@ "%s %d" "Simu ya kulipia" "Simu" + "Imewasha ruhusa ya kamera" + "Simu ya video" "Piga simu" diff --git a/java/com/android/dialer/theme/res/values-ta/strings.xml b/java/com/android/dialer/theme/res/values-ta/strings.xml index a4f55f5c78211bca9070b21b1606e13a2157872c..ab15f0b0c59c95462e05bd4a5a1873cdcc01d1a2 100644 --- a/java/com/android/dialer/theme/res/values-ta/strings.xml +++ b/java/com/android/dialer/theme/res/values-ta/strings.xml @@ -21,5 +21,7 @@ "%s %d" "கட்டணத் தொலைபேசி" "மொபைல்" + "கேமராவிற்கான அனுமதி இயக்கப்பட்டது" + "வீடியோ அழைப்பு" "அழை" diff --git a/java/com/android/dialer/theme/res/values-te/strings.xml b/java/com/android/dialer/theme/res/values-te/strings.xml index 59f00ca1fe38cff78b7cc87b64ccaaa735936403..4a6fca1fb6f15ec215dbdc5344a63f094cce35bf 100644 --- a/java/com/android/dialer/theme/res/values-te/strings.xml +++ b/java/com/android/dialer/theme/res/values-te/strings.xml @@ -21,5 +21,7 @@ "%s %d" "పే ఫోన్" "ఫోన్" + "కెమెరా అనుమతిని ప్రారంభించాము" + "వీడియో కాల్" "కాల్ చేయి" diff --git a/java/com/android/dialer/theme/res/values-th/strings.xml b/java/com/android/dialer/theme/res/values-th/strings.xml index 3870b4da60b08e7dede08bb00ea5e07dd1f5f0fe..51db053fade9de8ccba536289287dd1892e7eae1 100644 --- a/java/com/android/dialer/theme/res/values-th/strings.xml +++ b/java/com/android/dialer/theme/res/values-th/strings.xml @@ -21,5 +21,7 @@ "%s %d" "โทรศัพท์สาธารณะ" "โทรศัพท์" + "ให้สิทธิ์เข้าถึงกล้องถ่ายรูปแล้ว" + "แฮงเอาท์วิดีโอ" "โทร" diff --git a/java/com/android/dialer/theme/res/values-tl/strings.xml b/java/com/android/dialer/theme/res/values-tl/strings.xml index 81692789fa8a4b6f5ced1bc2dfa6af479a74e0e8..97f69ec1c643025f31645a8070198c056d98f33b 100644 --- a/java/com/android/dialer/theme/res/values-tl/strings.xml +++ b/java/com/android/dialer/theme/res/values-tl/strings.xml @@ -21,5 +21,7 @@ "%s %d" "Payphone" "Telepono" + "Na-enable ang pahintulot sa camera" + "Mag-video call" "Tawag" diff --git a/java/com/android/dialer/theme/res/values-tr/strings.xml b/java/com/android/dialer/theme/res/values-tr/strings.xml index c11cd1375a2634909709b6232f180f930e777c71..b38f0674d3730e2d0dbe2abb7a0a2ba9c48de816 100644 --- a/java/com/android/dialer/theme/res/values-tr/strings.xml +++ b/java/com/android/dialer/theme/res/values-tr/strings.xml @@ -21,5 +21,7 @@ "%s %d" "Ankesörlü telefon" "Telefon" + "Kamera izni etkinleştirildi" + "Görüntülü görüşme" "Telefon et" diff --git a/java/com/android/dialer/theme/res/values-uk/strings.xml b/java/com/android/dialer/theme/res/values-uk/strings.xml index c87fe89b75a5d113e85ad5466f3ff7b1d53dc2b8..f0702770ab172521072cd4f0797ae9fc25049a36 100644 --- a/java/com/android/dialer/theme/res/values-uk/strings.xml +++ b/java/com/android/dialer/theme/res/values-uk/strings.xml @@ -21,5 +21,7 @@ "%s %d" "Таксофон" "Телефон" + "Камері надано дозвіл" + "Відеодзвінок" "Виклик" diff --git a/java/com/android/dialer/theme/res/values-ur/strings.xml b/java/com/android/dialer/theme/res/values-ur/strings.xml index abc0d6d6b2bc3355fcdf8529a8845ae6dc822136..e9a4b44bbeadf4efed70c05662d417c94806bd34 100644 --- a/java/com/android/dialer/theme/res/values-ur/strings.xml +++ b/java/com/android/dialer/theme/res/values-ur/strings.xml @@ -21,5 +21,7 @@ "%s %d" "پے فون" "فون" + "کیمرا کی اجازت فعال ہے" + "ویڈیو کال" "کال کریں" diff --git a/java/com/android/dialer/theme/res/values-uz/strings.xml b/java/com/android/dialer/theme/res/values-uz/strings.xml index 2889f3f12fb156a1de0f71dbc29d923dc1e29036..2bbaf20802562b46bbf947b7472a58e0c0bccb57 100644 --- a/java/com/android/dialer/theme/res/values-uz/strings.xml +++ b/java/com/android/dialer/theme/res/values-uz/strings.xml @@ -21,5 +21,7 @@ "%s %d" "Taksofon" "Telefon" + "Kameraga kirishga ruxsat berildi" + "Video suhbat" "Chaqirish" diff --git a/java/com/android/dialer/theme/res/values-vi/strings.xml b/java/com/android/dialer/theme/res/values-vi/strings.xml index b014516beb2280afd64dfd266499ee911451f77e..fae31809159a9b32532455f7a522184e44a65651 100644 --- a/java/com/android/dialer/theme/res/values-vi/strings.xml +++ b/java/com/android/dialer/theme/res/values-vi/strings.xml @@ -21,5 +21,7 @@ "%s %d" "Điện thoại công cộng" "Điện thoại" + "Đã bật quyền sử dụng máy ảnh" + "Gọi điện video" "Gọi" diff --git a/java/com/android/dialer/theme/res/values-zh-rCN/strings.xml b/java/com/android/dialer/theme/res/values-zh-rCN/strings.xml index baff75258f29aced441e68f584892e9c29ac6c1f..2e609629643f2c9547cdd8ad93bb298a44476d96 100644 --- a/java/com/android/dialer/theme/res/values-zh-rCN/strings.xml +++ b/java/com/android/dialer/theme/res/values-zh-rCN/strings.xml @@ -21,5 +21,7 @@ "%s %d" "公用电话" "电话" + "已启用相机使用权限" + "视频通话" "拨打电话" diff --git a/java/com/android/dialer/theme/res/values-zh-rHK/strings.xml b/java/com/android/dialer/theme/res/values-zh-rHK/strings.xml index 8b26663d1aae92c382e9870178eb707874fadf98..7b08024ac5b249fc602971d301f6ed189c259221 100644 --- a/java/com/android/dialer/theme/res/values-zh-rHK/strings.xml +++ b/java/com/android/dialer/theme/res/values-zh-rHK/strings.xml @@ -21,5 +21,7 @@ "%s %d" "公共電話" "電話" + "已啟用相機權限" + "視像通話" "通話" diff --git a/java/com/android/dialer/theme/res/values-zh-rTW/strings.xml b/java/com/android/dialer/theme/res/values-zh-rTW/strings.xml index 24a5c10d1c80e08a63de6267d26fd31aca40c593..57d7fe2b157b83b6db242f063227e0c802badcb8 100644 --- a/java/com/android/dialer/theme/res/values-zh-rTW/strings.xml +++ b/java/com/android/dialer/theme/res/values-zh-rTW/strings.xml @@ -21,5 +21,7 @@ "%s %d" "公用電話" "電話" + "已啟用相機權限" + "視訊通話" "撥號" diff --git a/java/com/android/dialer/theme/res/values-zu/strings.xml b/java/com/android/dialer/theme/res/values-zu/strings.xml index 96cd79873e674bdd373a5f7000425ac5487d2fde..d0dd7288b18fd081f58f0d1384eb87277617d97a 100644 --- a/java/com/android/dialer/theme/res/values-zu/strings.xml +++ b/java/com/android/dialer/theme/res/values-zu/strings.xml @@ -21,5 +21,7 @@ "%s %d" "Ucingo olufakwa imali" "Ifoni" + "Imvume yekhamera inikwe amandla" + "Ikholi yevidiyo" "Shaya" diff --git a/java/com/android/dialer/theme/res/values/strings.xml b/java/com/android/dialer/theme/res/values/strings.xml index a14693f51c395eaa6b04ef33b120a31d5bee287e..af61d35967399cfe8d8703824724a0f2833acb04 100644 --- a/java/com/android/dialer/theme/res/values/strings.xml +++ b/java/com/android/dialer/theme/res/values/strings.xml @@ -30,6 +30,12 @@ used in the Launcher icon. --> Phone + + Camera permission enabled + + + Video call + Call diff --git a/java/com/android/dialer/theme/res/values/themes.xml b/java/com/android/dialer/theme/res/values/themes.xml index 0d0c45f9099c87cdda8d849675ac98054b5561b5..124682692f9ffa027490549e717d3256bcfeb619 100644 --- a/java/com/android/dialer/theme/res/values/themes.xml +++ b/java/com/android/dialer/theme/res/values/themes.xml @@ -1,4 +1,19 @@ + + + + + + + + diff --git a/java/com/android/dialer/util/CallUtil.java b/java/com/android/dialer/util/CallUtil.java index 81a4bb21e1a8691575798dfc0de2e925a6961470..0afe930c9e4b1637a27ee51ebcd5a935c3763ea5 100644 --- a/java/com/android/dialer/util/CallUtil.java +++ b/java/com/android/dialer/util/CallUtil.java @@ -21,6 +21,7 @@ import android.net.Uri; import android.telecom.PhoneAccount; import android.telecom.PhoneAccountHandle; import android.telecom.TelecomManager; +import com.android.dialer.common.LogUtil; import com.android.dialer.compat.CompatUtils; import com.android.dialer.phonenumberutil.PhoneNumberHelper; import java.util.List; @@ -40,6 +41,9 @@ public class CallUtil { */ public static final int VIDEO_CALLING_PRESENCE = 2; + private static boolean hasInitializedIsVideoEnabledState; + private static boolean cachedIsVideoEnabledState; + /** Return Uri with an appropriate scheme, accepting both SIP and usual phone call numbers. */ public static Uri getCallUri(String number) { if (PhoneNumberHelper.isUriNumber(number)) { @@ -102,7 +106,23 @@ public class CallUtil { * false} otherwise. */ public static boolean isVideoEnabled(Context context) { - return (getVideoCallingAvailability(context) & VIDEO_CALLING_ENABLED) != 0; + boolean isVideoEnabled = (getVideoCallingAvailability(context) & VIDEO_CALLING_ENABLED) != 0; + + // Log everytime the video enabled state changes. + if (!hasInitializedIsVideoEnabledState) { + LogUtil.i("CallUtil.isVideoEnabled", "isVideoEnabled: " + isVideoEnabled); + hasInitializedIsVideoEnabledState = true; + cachedIsVideoEnabledState = isVideoEnabled; + } else if (cachedIsVideoEnabledState != isVideoEnabled) { + LogUtil.i( + "CallUtil.isVideoEnabled", + "isVideoEnabled changed from %b to %b", + cachedIsVideoEnabledState, + isVideoEnabled); + cachedIsVideoEnabledState = isVideoEnabled; + } + + return isVideoEnabled; } /** diff --git a/java/com/android/dialer/util/PermissionsUtil.java b/java/com/android/dialer/util/PermissionsUtil.java index 466e862043398e018877f412421a11b180cd81cc..34828317d685c23e40efb3b62013f30116582f86 100644 --- a/java/com/android/dialer/util/PermissionsUtil.java +++ b/java/com/android/dialer/util/PermissionsUtil.java @@ -16,15 +16,33 @@ package com.android.dialer.util; +import static android.Manifest.permission.ACCESS_COARSE_LOCATION; +import static android.Manifest.permission.ACCESS_FINE_LOCATION; +import static android.Manifest.permission.ADD_VOICEMAIL; +import static android.Manifest.permission.CALL_PHONE; +import static android.Manifest.permission.MODIFY_PHONE_STATE; +import static android.Manifest.permission.READ_CALL_LOG; +import static android.Manifest.permission.READ_CONTACTS; +import static android.Manifest.permission.READ_PHONE_STATE; +import static android.Manifest.permission.READ_VOICEMAIL; +import static android.Manifest.permission.WRITE_CALL_LOG; +import static android.Manifest.permission.WRITE_CONTACTS; +import static android.Manifest.permission.WRITE_VOICEMAIL; + import android.Manifest.permission; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.pm.PackageManager; +import android.support.annotation.NonNull; import android.support.v4.content.ContextCompat; import android.support.v4.content.LocalBroadcastManager; import com.android.dialer.common.LogUtil; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; /** Utility class to help with runtime permissions. */ public class PermissionsUtil { @@ -32,6 +50,27 @@ public class PermissionsUtil { private static final String PERMISSION_PREFERENCE = "dialer_permissions"; private static final String CEQUINT_PERMISSION = "com.cequint.ecid.CALLER_ID_LOOKUP"; + // Permissions list retrieved from application manifest. + // Starting in Android O Permissions must be explicitly enumerated: + // https://developer.android.com/preview/behavior-changes.html#rmp + public static final List allPhoneGroupPermissionsUsedInDialer = + Collections.unmodifiableList( + Arrays.asList( + READ_CALL_LOG, + WRITE_CALL_LOG, + READ_PHONE_STATE, + MODIFY_PHONE_STATE, + CALL_PHONE, + ADD_VOICEMAIL, + WRITE_VOICEMAIL, + READ_VOICEMAIL)); + + public static final List allContactsGroupPermissionsUsedInDialer = + Collections.unmodifiableList(Arrays.asList(READ_CONTACTS, WRITE_CONTACTS)); + + public static final List allLocationGroupPermissionsUsedInDialer = + Collections.unmodifiableList(Arrays.asList(ACCESS_FINE_LOCATION, ACCESS_COARSE_LOCATION)); + public static boolean hasPhonePermissions(Context context) { return hasPermission(context, permission.CALL_PHONE); } @@ -147,4 +186,25 @@ public class PermissionsUtil { final Intent intent = new Intent(permission); LocalBroadcastManager.getInstance(context).sendBroadcast(intent); } + + /** + * Returns a list of permissions currently not granted to the application from the supplied list. + * + * @param context - The Application context. + * @param permissionsList - A list of permissions to check if the current application has been + * granted. + * @return An array of permissions that are currently DENIED to the application; a subset of + * permissionsList. + */ + @NonNull + public static String[] getPermissionsCurrentlyDenied( + @NonNull Context context, @NonNull List permissionsList) { + List permissionsCurrentlyDenied = new ArrayList<>(); + for (String permission : permissionsList) { + if (!hasPermission(context, permission)) { + permissionsCurrentlyDenied.add(permission); + } + } + return permissionsCurrentlyDenied.toArray(new String[permissionsCurrentlyDenied.size()]); + } } diff --git a/java/com/android/dialer/widget/DialerToolbar.java b/java/com/android/dialer/widget/DialerToolbar.java index 9e1058383066fa35d753ce839e1eb49d592793fe..fe0e86110221afc55d09f450e5c1070237be9d51 100644 --- a/java/com/android/dialer/widget/DialerToolbar.java +++ b/java/com/android/dialer/widget/DialerToolbar.java @@ -41,6 +41,11 @@ public class DialerToolbar extends Toolbar { setNavigationIcon(R.drawable.quantum_ic_close_white_24); setNavigationContentDescription(R.string.toolbar_close); setNavigationOnClickListener(v -> ((Activity) context).finish()); + setPaddingRelative( + getPaddingStart(), + getPaddingTop(), + getResources().getDimensionPixelSize(R.dimen.toolbar_end_padding), + getPaddingBottom()); } @Override diff --git a/java/com/android/dialer/app/widget/EmptyContentView.java b/java/com/android/dialer/widget/EmptyContentView.java similarity index 87% rename from java/com/android/dialer/app/widget/EmptyContentView.java rename to java/com/android/dialer/widget/EmptyContentView.java index cfc8665a2163ab11d30add98a53cf0af1d7d279e..a76ab98d6a27c176f1d90fd2c2b0938650b0d01e 100644 --- a/java/com/android/dialer/app/widget/EmptyContentView.java +++ b/java/com/android/dialer/widget/EmptyContentView.java @@ -14,16 +14,16 @@ * limitations under the License. */ -package com.android.dialer.app.widget; +package com.android.dialer.widget; import android.content.Context; +import android.support.annotation.StringRes; import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.View; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; -import com.android.dialer.app.R; public class EmptyContentView extends LinearLayout implements View.OnClickListener { @@ -40,6 +40,8 @@ public class EmptyContentView extends LinearLayout implements View.OnClickListen private TextView mActionView; private OnEmptyViewActionButtonClickedListener mOnActionButtonClickedListener; + private @StringRes int actionLabel; + public EmptyContentView(Context context) { this(context, null); } @@ -58,9 +60,9 @@ public class EmptyContentView extends LinearLayout implements View.OnClickListen // Don't let touches fall through the empty view. setClickable(true); - mImageView = (ImageView) findViewById(R.id.emptyListViewImage); - mDescriptionView = (TextView) findViewById(R.id.emptyListViewMessage); - mActionView = (TextView) findViewById(R.id.emptyListViewAction); + mImageView = (ImageView) findViewById(R.id.empty_list_view_image); + mDescriptionView = (TextView) findViewById(R.id.empty_list_view_message); + mActionView = (TextView) findViewById(R.id.empty_list_view_action); mActionView.setOnClickListener(this); } @@ -84,7 +86,8 @@ public class EmptyContentView extends LinearLayout implements View.OnClickListen } } - public void setActionLabel(int resourceId) { + public void setActionLabel(@StringRes int resourceId) { + actionLabel = resourceId; if (resourceId == NO_LABEL) { mActionView.setText(null); mActionView.setVisibility(View.GONE); @@ -94,6 +97,10 @@ public class EmptyContentView extends LinearLayout implements View.OnClickListen } } + public @StringRes int getActionLabel() { + return actionLabel; + } + public boolean isShowingContent() { return mImageView.getVisibility() == View.VISIBLE || mDescriptionView.getVisibility() == View.VISIBLE @@ -117,5 +124,4 @@ public class EmptyContentView extends LinearLayout implements View.OnClickListen (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); inflater.inflate(R.layout.empty_content_view, this); } - } diff --git a/java/com/android/incallui/incall/impl/LockableViewPager.java b/java/com/android/dialer/widget/LockableViewPager.java similarity index 93% rename from java/com/android/incallui/incall/impl/LockableViewPager.java rename to java/com/android/dialer/widget/LockableViewPager.java index 5b8b126099dc8cde78be5cc14b9d4c0e032adedf..b5d4022e7fd820e41932147ba7afbe6740d3b55a 100644 --- a/java/com/android/incallui/incall/impl/LockableViewPager.java +++ b/java/com/android/dialer/widget/LockableViewPager.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.incallui.incall.impl; +package com.android.dialer.widget; import android.content.Context; import android.support.v4.view.ViewPager; @@ -34,6 +34,10 @@ public class LockableViewPager extends ViewPager { this.swipingLocked = swipingLocked; } + public boolean isSwipingLocked() { + return swipingLocked; + } + @Override public boolean onInterceptTouchEvent(MotionEvent motionEvent) { return !swipingLocked && super.onInterceptTouchEvent(motionEvent); diff --git a/java/com/android/dialer/widget/MessageFragment.java b/java/com/android/dialer/widget/MessageFragment.java index b136f47eb4712ea5bb914ff61a0b325434422ecb..615ad3b776f38411eead636e958bf2f25e70f403 100644 --- a/java/com/android/dialer/widget/MessageFragment.java +++ b/java/com/android/dialer/widget/MessageFragment.java @@ -23,6 +23,7 @@ import android.text.Editable; import android.text.InputFilter; import android.text.TextUtils; import android.text.TextWatcher; +import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; @@ -31,11 +32,13 @@ import android.widget.EditText; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; +import android.widget.TextView.OnEditorActionListener; import com.android.dialer.common.Assert; import com.android.dialer.common.FragmentUtils; /** Fragment used to compose call with message fragment. */ -public class MessageFragment extends Fragment implements OnClickListener, TextWatcher { +public class MessageFragment extends Fragment + implements OnClickListener, TextWatcher, OnEditorActionListener { private static final String CHAR_LIMIT_KEY = "char_limit"; private static final String SHOW_SEND_ICON_KEY = "show_send_icon"; private static final String MESSAGE_LIST_KEY = "message_list"; @@ -69,7 +72,7 @@ public class MessageFragment extends Fragment implements OnClickListener, TextWa LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_message, container, false); - sendMessage = (ImageView) view.findViewById(R.id.send_message); + sendMessage = view.findViewById(R.id.send_message); sendMessageContainer = view.findViewById(R.id.count_and_send_container); if (getArguments().getBoolean(SHOW_SEND_ICON_KEY, false)) { sendMessage.setVisibility(View.VISIBLE); @@ -77,18 +80,19 @@ public class MessageFragment extends Fragment implements OnClickListener, TextWa sendMessageContainer.setOnClickListener(this); } - customMessage = (EditText) view.findViewById(R.id.custom_message); + customMessage = view.findViewById(R.id.custom_message); customMessage.addTextChangedListener(this); + customMessage.setOnEditorActionListener(this); charLimit = getArguments().getInt(CHAR_LIMIT_KEY, NO_CHAR_LIMIT); if (charLimit != NO_CHAR_LIMIT) { - remainingChar = (TextView) view.findViewById(R.id.remaining_characters); + remainingChar = view.findViewById(R.id.remaining_characters); remainingChar.setVisibility(View.VISIBLE); - remainingChar = (TextView) view.findViewById(R.id.remaining_characters); - remainingChar.setText("" + charLimit); + remainingChar = view.findViewById(R.id.remaining_characters); + remainingChar.setText(Integer.toString(charLimit)); customMessage.setFilters(new InputFilter[] {new InputFilter.LengthFilter(charLimit)}); } - LinearLayout messageContainer = (LinearLayout) view.findViewById(R.id.message_container); + LinearLayout messageContainer = view.findViewById(R.id.message_container); for (String message : getArguments().getStringArray(MESSAGE_LIST_KEY)) { TextView textView = (TextView) inflater.inflate(R.layout.selectable_text_view, null); textView.setOnClickListener(this); @@ -123,11 +127,20 @@ public class MessageFragment extends Fragment implements OnClickListener, TextWa @Override public void afterTextChanged(Editable s) { if (charLimit != NO_CHAR_LIMIT) { - remainingChar.setText("" + (charLimit - s.length())); + remainingChar.setText(Integer.toString(charLimit - s.length())); } getListener().onMessageFragmentAfterTextChange(s.toString()); } + @Override + public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { + if (getMessage() == null) { + return false; + } + getListener().onMessageFragmentSendMessage(getMessage()); + return true; + } + private Listener getListener() { return FragmentUtils.getParentUnsafe(this, Listener.class); } diff --git a/java/com/android/dialer/app/res/drawable-hdpi/empty_contacts.png b/java/com/android/dialer/widget/res/drawable-hdpi/empty_contacts.png similarity index 100% rename from java/com/android/dialer/app/res/drawable-hdpi/empty_contacts.png rename to java/com/android/dialer/widget/res/drawable-hdpi/empty_contacts.png diff --git a/java/com/android/dialer/app/res/drawable-mdpi/empty_contacts.png b/java/com/android/dialer/widget/res/drawable-mdpi/empty_contacts.png similarity index 100% rename from java/com/android/dialer/app/res/drawable-mdpi/empty_contacts.png rename to java/com/android/dialer/widget/res/drawable-mdpi/empty_contacts.png diff --git a/java/com/android/dialer/app/res/drawable-xhdpi/empty_contacts.png b/java/com/android/dialer/widget/res/drawable-xhdpi/empty_contacts.png similarity index 100% rename from java/com/android/dialer/app/res/drawable-xhdpi/empty_contacts.png rename to java/com/android/dialer/widget/res/drawable-xhdpi/empty_contacts.png diff --git a/java/com/android/dialer/app/res/drawable-xxhdpi/empty_contacts.png b/java/com/android/dialer/widget/res/drawable-xxhdpi/empty_contacts.png similarity index 100% rename from java/com/android/dialer/app/res/drawable-xxhdpi/empty_contacts.png rename to java/com/android/dialer/widget/res/drawable-xxhdpi/empty_contacts.png diff --git a/java/com/android/dialer/app/res/drawable-xxxhdpi/empty_contacts.png b/java/com/android/dialer/widget/res/drawable-xxxhdpi/empty_contacts.png similarity index 100% rename from java/com/android/dialer/app/res/drawable-xxxhdpi/empty_contacts.png rename to java/com/android/dialer/widget/res/drawable-xxxhdpi/empty_contacts.png diff --git a/java/com/android/dialer/widget/res/layout-land/empty_content_view.xml b/java/com/android/dialer/widget/res/layout-land/empty_content_view.xml new file mode 100644 index 0000000000000000000000000000000000000000..00344bf44c4b05ac262cb61f3e18989137e22d02 --- /dev/null +++ b/java/com/android/dialer/widget/res/layout-land/empty_content_view.xml @@ -0,0 +1,56 @@ + + + + + + + + + + + + + diff --git a/java/com/android/dialer/widget/res/layout/dialer_toolbar.xml b/java/com/android/dialer/widget/res/layout/dialer_toolbar.xml index c4aac65fb3117a68618c5e371b3655576bf6ab9c..023b0ffe2eb67a5d1c6b69c923c169ae1e9b46b9 100644 --- a/java/com/android/dialer/widget/res/layout/dialer_toolbar.xml +++ b/java/com/android/dialer/widget/res/layout/dialer_toolbar.xml @@ -29,7 +29,9 @@ android:gravity="top" android:textSize="@dimen/toolbar_title_text_size" android:textColor="@color/background_dialer_white" - android:fontFamily="sans-serif-medium"/> + android:fontFamily="sans-serif-medium" + android:maxLines="1" + android:ellipsize="end"/> + android:visibility="gone" + android:maxLines="1" + android:ellipsize="end"/> \ No newline at end of file diff --git a/java/com/android/dialer/app/res/layout/empty_content_view.xml b/java/com/android/dialer/widget/res/layout/empty_content_view.xml similarity index 92% rename from java/com/android/dialer/app/res/layout/empty_content_view.xml rename to java/com/android/dialer/widget/res/layout/empty_content_view.xml index 96a6a0262172fe8f5c80d73123c90bf284c6a731..1777443853b5bf7f0e3fbf0c4a410f32286d1c21 100644 --- a/java/com/android/dialer/app/res/layout/empty_content_view.xml +++ b/java/com/android/dialer/widget/res/layout/empty_content_view.xml @@ -16,13 +16,13 @@ + android:layout_toStartOf="@+id/count_and_send_container" + android:inputType="textShortMessage|textCapSentences" + android:imeOptions="actionSend"/> + + "Skryf \'n gepasmaakte boodskap" "Maak toe" + "Jy het nog nie enige kontakte nie" + "Skep nuwe kontak" + "Skakel aan" + "Skakel die kontaktetoestemming aan om jou kontakte te sien." + "Geen kontakte-program beskikbaar nie" diff --git a/java/com/android/dialer/widget/res/values-am/strings.xml b/java/com/android/dialer/widget/res/values-am/strings.xml index f11b4683502fd67b47974288f0634b7103ef12ef..3952e83ccbd7de7325d1214c2686d988101da117 100644 --- a/java/com/android/dialer/widget/res/values-am/strings.xml +++ b/java/com/android/dialer/widget/res/values-am/strings.xml @@ -1,6 +1,28 @@ + + "ብጁ መልዕክት ይጻፉ" "ዝጋ" + "ገና ምንም እውቂያዎች የሉዎትም" + + + "አብራ" + "የእርስዎን እውቂያዎች ለማየት፣ የእውቂያዎች ፍቃዱን ያብሩ።" + "ምንም የእውቂያዎች መተግበሪያ አይገኝም" diff --git a/java/com/android/dialer/widget/res/values-ar/strings.xml b/java/com/android/dialer/widget/res/values-ar/strings.xml index cb2e733787cd53f957525723a68a07ce836bb79e..26ed748f08e334bb54b8b58dd5d12f33927bdfb7 100644 --- a/java/com/android/dialer/widget/res/values-ar/strings.xml +++ b/java/com/android/dialer/widget/res/values-ar/strings.xml @@ -1,6 +1,27 @@ + + "كتابة رسالة مخصصة" "إغلاق" + "ليست لديك أية جهات اتصال حتى الآن" + "إنشاء جهة اتصال" + "تشغيل" + "للاطلاع على جهات الاتصال، شغِّل إذن جهات الاتصال." + "لا يتوفر تطبيق لجهات الاتصال" diff --git a/java/com/android/dialer/widget/res/values-az/strings.xml b/java/com/android/dialer/widget/res/values-az/strings.xml index 3860a58467ed78083b77e2b326293b8f403580b6..cb40af6d7f58dc1ea32a41f423ae174be50e63d4 100644 --- a/java/com/android/dialer/widget/res/values-az/strings.xml +++ b/java/com/android/dialer/widget/res/values-az/strings.xml @@ -1,6 +1,28 @@ + + "Fərdi mesaj yazın" "Bağlayın" + "Hələ heç bir kontakt yoxdur" + + + "Aktiv edin" + "Kontaktları görmək üçün Kontakt icazəsini aktiv edin." + "Kontakt tətbiqi əlçatan deyil" diff --git a/java/com/android/dialer/widget/res/values-b+sr+Latn/strings.xml b/java/com/android/dialer/widget/res/values-b+sr+Latn/strings.xml index daefd90202169eabcb4d33ba230a8d69d48e7481..fea3cb0ef21901ddd785a81891acbdcb86744ccb 100644 --- a/java/com/android/dialer/widget/res/values-b+sr+Latn/strings.xml +++ b/java/com/android/dialer/widget/res/values-b+sr+Latn/strings.xml @@ -1,6 +1,27 @@ + + "Napišite prilagođenu poruku" "Zatvorite" + "Još uvek nemate nijedan kontakt" + "Napravi novi kontakt" + "Uključi" + "Da biste videli kontakte, uključite dozvolu za Kontakte." + "Nema dostupne aplikacije za kontakte" diff --git a/java/com/android/dialer/widget/res/values-be/strings.xml b/java/com/android/dialer/widget/res/values-be/strings.xml index 87861321fcde91f1e25090e1cf59c9724b0e799c..6805984c32b6a031afbf27dcd516409d64fa82ff 100644 --- a/java/com/android/dialer/widget/res/values-be/strings.xml +++ b/java/com/android/dialer/widget/res/values-be/strings.xml @@ -1,6 +1,28 @@ + + "Напісаць карыстальніцкае паведамленне" "Закрыць" + "У вас пакуль няма ніякіх кантактаў" + + + "Уключыць" + "Каб бачыць свае кантакты, уключыце дазвол для Кантактаў." + "Праграмы для аперацый з кантактамі няма" diff --git a/java/com/android/dialer/widget/res/values-bg/strings.xml b/java/com/android/dialer/widget/res/values-bg/strings.xml index 35e980c5fc9e82a6897fedfb6819ffaccd789f29..fbb87d031d60cb150ce84e0e8eee3ab8b87a8452 100644 --- a/java/com/android/dialer/widget/res/values-bg/strings.xml +++ b/java/com/android/dialer/widget/res/values-bg/strings.xml @@ -1,6 +1,27 @@ + + "Напишете свое съобщение" "Затваряне" + "Още нямате контакти" + "Създаване на нов контакт" + "Включване" + "За да видите контактите си, включете разрешението за Контакти." + "Няма налично приложение за контакти" diff --git a/java/com/android/dialer/widget/res/values-bn/strings.xml b/java/com/android/dialer/widget/res/values-bn/strings.xml index 9e170711479b58100c3b7ebca0e6bdc9228445f0..58bf44c6add4c0657be4ba946730066b551c32d0 100644 --- a/java/com/android/dialer/widget/res/values-bn/strings.xml +++ b/java/com/android/dialer/widget/res/values-bn/strings.xml @@ -1,6 +1,27 @@ + + "একটি কাস্টম বার্তা লিখুন" "বন্ধ করুন" + "আপনার এখনও পর্যন্ত কোনো পরিচিতি নেই" + "নতুন পরিচিতি তৈরি করুন" + "চালু করুন" + "আপনার পরিচিতিগুলি দেখতে, পরিচিতিগুলির অনুমতি চালু করুন।" + "কোনো পরিচিতি অ্যাপ্লিকেশান উপলব্ধ নয়" diff --git a/java/com/android/dialer/widget/res/values-bs/strings.xml b/java/com/android/dialer/widget/res/values-bs/strings.xml index 0bc1a9c15e8346ecdd5b8a866042a4c5a58bad95..239c0741278836ca31d765ca5342a242aa417861 100644 --- a/java/com/android/dialer/widget/res/values-bs/strings.xml +++ b/java/com/android/dialer/widget/res/values-bs/strings.xml @@ -1,6 +1,27 @@ + + "Napišite prilagođenu poruku" "Zatvori" + "Još nemate nijedan kontakt" + "Kreirajte novi kontakt" + "Uključi" + "Da vidite kontakte, uključite dozvolu za Kontakte." + "Nije dostupna nijedna aplikacija za kontakte" diff --git a/java/com/android/dialer/widget/res/values-ca/strings.xml b/java/com/android/dialer/widget/res/values-ca/strings.xml index 8639300394fe8967ed1f2ffa1ad113fd6783b8bf..8f01cb53ec3aa0ce6fd732375119dc8b69af4b15 100644 --- a/java/com/android/dialer/widget/res/values-ca/strings.xml +++ b/java/com/android/dialer/widget/res/values-ca/strings.xml @@ -1,6 +1,28 @@ + + "Escriu un miss. personalitzat" "Tanca" + "Encara no tens cap contacte" + + + "Activa" + "Activa el permís Contactes per veure els teus contactes." + "No hi ha cap contacte disponible" diff --git a/java/com/android/dialer/widget/res/values-cs/strings.xml b/java/com/android/dialer/widget/res/values-cs/strings.xml index 829aab8ddbd830b9727b3a9af045409f70e2d35c..ee8d14022965bf181cd5061e9904d77622bf291a 100644 --- a/java/com/android/dialer/widget/res/values-cs/strings.xml +++ b/java/com/android/dialer/widget/res/values-cs/strings.xml @@ -1,6 +1,28 @@ + + "Napište vlastní zprávu" "Zavřít" + "Zatím nemáte žádné kontakty" + + + "Povolit" + "Pokud chcete zobrazit kontakty, povolte aplikaci přístup ke Kontaktům." + "Není k dispozici žádná aplikace pro práci s kontakty" diff --git a/java/com/android/dialer/widget/res/values-da/strings.xml b/java/com/android/dialer/widget/res/values-da/strings.xml index 9381f36f52b91e61b206c1dd530b29635e1c6122..0e449489df5b1b9cba013cc1cfbfd095db260738 100644 --- a/java/com/android/dialer/widget/res/values-da/strings.xml +++ b/java/com/android/dialer/widget/res/values-da/strings.xml @@ -1,6 +1,28 @@ + + "Skriv en tilpasset besked" "Luk" + "Du har endnu ikke nogen kontaktpersoner" + + + "Slå til" + "Slå tilladelsen Kontaktpersoner til for at se dine kontaktpersoner." + "Der er ingen tilgængelig app til kontaktpersoner" diff --git a/java/com/android/dialer/widget/res/values-de/strings.xml b/java/com/android/dialer/widget/res/values-de/strings.xml index 949fe9e493b9db2782e0d1c61e7aff823b1f1fea..f650df9f0329884726f54c68bafd493dc3f5d626 100644 --- a/java/com/android/dialer/widget/res/values-de/strings.xml +++ b/java/com/android/dialer/widget/res/values-de/strings.xml @@ -1,6 +1,27 @@ + + "Eigene Nachricht schreiben" "Schließen" + "Du hast noch keine Kontakte" + "Neuen Kontakt erstellen" + "Aktivieren" + "Aktiviere die Berechtigung \"Kontakte\", um deine Kontakte abzurufen." + "Keine Kontakte-App verfügbar" diff --git a/java/com/android/dialer/widget/res/values-el/strings.xml b/java/com/android/dialer/widget/res/values-el/strings.xml index 21e049bf71344743b2ed8421426e128399448d37..849fd6a8aa906b3ec2c9691bd5511905de34b101 100644 --- a/java/com/android/dialer/widget/res/values-el/strings.xml +++ b/java/com/android/dialer/widget/res/values-el/strings.xml @@ -1,6 +1,28 @@ + + "Γράψτε ένα προσαρμ. μήνυμα" "Κλείσιμο" + "Δεν έχετε επαφές ακόμη" + + + "Ενεργοποίηση" + "Για να δείτε τις επαφές σας, ενεργοποιήστε την άδεια πρόσβασης στις Επαφές." + "Δεν υπάρχει διαθέσιμη εφαρμογή επαφών" diff --git a/java/com/android/dialer/widget/res/values-en-rAU/strings.xml b/java/com/android/dialer/widget/res/values-en-rAU/strings.xml index 7f22b46da2e29eef3bf7c357c529db092c70657d..33cba33376cff6d36fe824890e8093d4b467083d 100644 --- a/java/com/android/dialer/widget/res/values-en-rAU/strings.xml +++ b/java/com/android/dialer/widget/res/values-en-rAU/strings.xml @@ -1,6 +1,27 @@ + + "Write a custom message" "Close" + "You don\'t have any contacts yet" + "Create new contact" + "Turn on" + "To see your contacts, turn on the Contacts permission." + "No contacts app available" diff --git a/java/com/android/dialer/widget/res/values-en-rGB/strings.xml b/java/com/android/dialer/widget/res/values-en-rGB/strings.xml index 7f22b46da2e29eef3bf7c357c529db092c70657d..33cba33376cff6d36fe824890e8093d4b467083d 100644 --- a/java/com/android/dialer/widget/res/values-en-rGB/strings.xml +++ b/java/com/android/dialer/widget/res/values-en-rGB/strings.xml @@ -1,6 +1,27 @@ + + "Write a custom message" "Close" + "You don\'t have any contacts yet" + "Create new contact" + "Turn on" + "To see your contacts, turn on the Contacts permission." + "No contacts app available" diff --git a/java/com/android/dialer/widget/res/values-en-rIN/strings.xml b/java/com/android/dialer/widget/res/values-en-rIN/strings.xml index 7f22b46da2e29eef3bf7c357c529db092c70657d..33cba33376cff6d36fe824890e8093d4b467083d 100644 --- a/java/com/android/dialer/widget/res/values-en-rIN/strings.xml +++ b/java/com/android/dialer/widget/res/values-en-rIN/strings.xml @@ -1,6 +1,27 @@ + + "Write a custom message" "Close" + "You don\'t have any contacts yet" + "Create new contact" + "Turn on" + "To see your contacts, turn on the Contacts permission." + "No contacts app available" diff --git a/java/com/android/dialer/widget/res/values-es-rUS/strings.xml b/java/com/android/dialer/widget/res/values-es-rUS/strings.xml index c7fbdaa58c4fddf82603cadf95eeb265035d99da..8c257b2d0ecac461e086f1722043b68797b5729b 100644 --- a/java/com/android/dialer/widget/res/values-es-rUS/strings.xml +++ b/java/com/android/dialer/widget/res/values-es-rUS/strings.xml @@ -1,6 +1,28 @@ + + "Escribe tu propio mensaje" "Cerrar" + "Aún no tienes contactos" + + + "Activar" + "Para ver los contactos, activa el permiso Contactos." + "No hay ninguna app de contactos disponible" diff --git a/java/com/android/dialer/widget/res/values-es/strings.xml b/java/com/android/dialer/widget/res/values-es/strings.xml index 507e8af0dc3b5cdb6df7efaf2da38e2447a487e4..dcb695e201be2eabe52d6f289198d538f39112b3 100644 --- a/java/com/android/dialer/widget/res/values-es/strings.xml +++ b/java/com/android/dialer/widget/res/values-es/strings.xml @@ -1,6 +1,27 @@ + + "Mensaje personalizado" "Cerrar" + "Aún no tienes contactos" + "Crear un contacto" + "Activar" + "Para ver tus contactos, activa el permiso de Contactos." + "No hay aplicaciones de contactos disponibles" diff --git a/java/com/android/dialer/widget/res/values-et/strings.xml b/java/com/android/dialer/widget/res/values-et/strings.xml index 71dab4276a2e9395e4be54e0494b8de0cd580055..f7357c279caa29e30e78eb41e8409a79fedebe9e 100644 --- a/java/com/android/dialer/widget/res/values-et/strings.xml +++ b/java/com/android/dialer/widget/res/values-et/strings.xml @@ -1,6 +1,28 @@ + + "Kirjutage kohandatud sõnum" "Sule" + "Teil pole veel kontakte" + + + "Lülita sisse" + "Kontaktide vaatamiseks lülitage sisse kontaktide luba." + "Kontaktide rakendus pole saadaval" diff --git a/java/com/android/dialer/widget/res/values-eu/strings.xml b/java/com/android/dialer/widget/res/values-eu/strings.xml index b8e4085a06553a3e104a505dea66ecbe10197267..f4d0d1d7a11aea07e1ee96b062d6aedf5b8f01dc 100644 --- a/java/com/android/dialer/widget/res/values-eu/strings.xml +++ b/java/com/android/dialer/widget/res/values-eu/strings.xml @@ -1,6 +1,28 @@ + + "Idatzi mezu bat" "Itxi" + "Oraindik ez duzu kontakturik" + + + "Aktibatu" + "Kontaktuak ikusteko, aktibatu Kontaktuak atzitzeko baimena." + "Ez dago kontaktu-aplikaziorik erabilgarri" diff --git a/java/com/android/dialer/widget/res/values-fa/strings.xml b/java/com/android/dialer/widget/res/values-fa/strings.xml index 0c3b1d4f5f505402569bfba7452a96803c76b43e..9168ac2932e8f3383954d3b4bd5c48b1c02bc633 100644 --- a/java/com/android/dialer/widget/res/values-fa/strings.xml +++ b/java/com/android/dialer/widget/res/values-fa/strings.xml @@ -1,6 +1,28 @@ + + "پیام سفارشی بنویسید" "بستن" + "هنوز هیچ مخاطبی ندارید" + + + "فعال‌سازی" + "برای دیدن مخاطبینتان، مجوز «مخاطبین» را روشن کنید." + "هیچ برنامه مخاطبی در دسترس نیست" diff --git a/java/com/android/dialer/widget/res/values-fi/strings.xml b/java/com/android/dialer/widget/res/values-fi/strings.xml index e0e971cd873e2d0a32af53c4f4081f7ba92a285a..80f190253a6d5ceb3856d85f2d71612f4aae3207 100644 --- a/java/com/android/dialer/widget/res/values-fi/strings.xml +++ b/java/com/android/dialer/widget/res/values-fi/strings.xml @@ -1,6 +1,28 @@ + + "Kirjoita oma viesti" "Sulje" + "Sinulla ei ole vielä yhteystietoja." + + + "Ota käyttöön" + "Jos haluat katsella yhteystietojasi, ota Yhteystiedot-käyttöoikeus käyttöön." + "Yhteystietosovellusta ei ole käytettävissä." diff --git a/java/com/android/dialer/widget/res/values-fr-rCA/strings.xml b/java/com/android/dialer/widget/res/values-fr-rCA/strings.xml index 9776385b4d8f8d22f1e021dd274a1fe261ac45a6..7785509979ee56cc2928025eb0d088022f788a9f 100644 --- a/java/com/android/dialer/widget/res/values-fr-rCA/strings.xml +++ b/java/com/android/dialer/widget/res/values-fr-rCA/strings.xml @@ -1,6 +1,27 @@ + + "Rédiger message personnalisé" "Fermer" + "Vous n\'avez pas encore de contacts" + "Créer un contact" + "Activer" + "Pour consulter vos contacts, activez l\'autorisation Contacts." + "Aucune application Contacts n\'est disponible" diff --git a/java/com/android/dialer/widget/res/values-fr/strings.xml b/java/com/android/dialer/widget/res/values-fr/strings.xml index fececd84aa0d57ee485ab25502281fe31e58b99c..be8810fd9ff9f2978a10086ed8409bd47c8a5808 100644 --- a/java/com/android/dialer/widget/res/values-fr/strings.xml +++ b/java/com/android/dialer/widget/res/values-fr/strings.xml @@ -1,6 +1,27 @@ + + "Écrire mon propre message" "Fermer" + "Vous n\'avez pas encore de contacts." + "Créer un contact" + "Activer" + "Pour consulter vos contacts, activez l\'autorisation Contacts." + "Aucune application de gestion des contacts n\'est disponible" diff --git a/java/com/android/dialer/widget/res/values-gl/strings.xml b/java/com/android/dialer/widget/res/values-gl/strings.xml index 6a756810ba6eb7f0c330905bb8986e41d591c4e1..a519e68b6eac87ccb8104eb84b45dedb0585079b 100644 --- a/java/com/android/dialer/widget/res/values-gl/strings.xml +++ b/java/com/android/dialer/widget/res/values-gl/strings.xml @@ -1,6 +1,27 @@ + + "Escribe unha mensaxe personalizada" "Pechar" + "Aínda non tes ningún contacto" + "Crear novo contacto" + "Activar" + "Para ver os teus contactos, activa o permiso de Contactos." + "Non hai ningunha aplicación de contactos dispoñible" diff --git a/java/com/android/dialer/widget/res/values-gu/strings.xml b/java/com/android/dialer/widget/res/values-gu/strings.xml index c2f8cf0e190e9fdd502d3fce2894cb643c7b16d5..81e6f10114f8eb3d888899dde97655e1d37e7164 100644 --- a/java/com/android/dialer/widget/res/values-gu/strings.xml +++ b/java/com/android/dialer/widget/res/values-gu/strings.xml @@ -1,6 +1,27 @@ + + "એક કસ્ટમ સંદેશ લખો" "બંધ કરો" + "તમે હજી સુધી કોઇપણ સંપર્કો ધરાવતાં નથી" + "નવો સંપર્ક બનાવો" + "ચાલુ કરો" + "તમારા સંપર્કો જોવા માટે, સંપર્કોની પરવાનગી ચાલુ કરો." + "કોઈ સંપર્કો ઍપ્લિકેશન ઉપલબ્ધ નથી" diff --git a/java/com/android/dialer/widget/res/values-hi/strings.xml b/java/com/android/dialer/widget/res/values-hi/strings.xml index 63c94e7f697a0018aad191920d54c3e9cfd83825..622cdca067fd0a234d2ae81b2cf3b7b5d65c333a 100644 --- a/java/com/android/dialer/widget/res/values-hi/strings.xml +++ b/java/com/android/dialer/widget/res/values-hi/strings.xml @@ -1,6 +1,27 @@ + + "कोई कस्टम संदेश लिखें" "बंद करें" + "आपके पास अभी कोई भी संपर्क नहीं है" + "नया संपर्क बनाएं" + "चालू करें" + "अपने संपर्क देखने के लिए, संपर्क अनुमति चालू करें." + "कोई भी संपर्क ऐप उपलब्‍ध नहीं है" diff --git a/java/com/android/dialer/widget/res/values-hr/strings.xml b/java/com/android/dialer/widget/res/values-hr/strings.xml index 28a58d4537724fab29e4bd6215dd4d77a9b6ea9d..7254bc06210f1101a9a76dc742c2aabf39e5e9c0 100644 --- a/java/com/android/dialer/widget/res/values-hr/strings.xml +++ b/java/com/android/dialer/widget/res/values-hr/strings.xml @@ -1,6 +1,28 @@ + + "Napišite prilagođenu poruku" "Zatvaranje" + "Još nemate nijedan kontakt" + + + "Uključi" + "Da biste vidjeli svoje kontakte, uključite dopuštenje za kontakte." + "Nije dostupna nijedna aplikacija za kontakte" diff --git a/java/com/android/dialer/widget/res/values-hu/strings.xml b/java/com/android/dialer/widget/res/values-hu/strings.xml index dcd2b36ea54f3e96399def7738109b721d6199ed..5301d697071e62890fdc6423d0b18e53a0aa0419 100644 --- a/java/com/android/dialer/widget/res/values-hu/strings.xml +++ b/java/com/android/dialer/widget/res/values-hu/strings.xml @@ -1,6 +1,28 @@ + + "Egyéni üzenet írása" "Bezárás" + "Még nem rendelkezik egyetlen névjeggyel sem" + + + "Bekapcsolás" + "A névjegyek megtekintéséhez kapcsolja be a Névjegyek engedélyt." + "Nincs elérhető névjegykezelő alkalmazás" diff --git a/java/com/android/dialer/widget/res/values-hy/strings.xml b/java/com/android/dialer/widget/res/values-hy/strings.xml index 7b78bb23e1df395aa11beef8c9f934ee1008645e..95d0b73030424df005d8b5a93f5bb158301fdf70 100644 --- a/java/com/android/dialer/widget/res/values-hy/strings.xml +++ b/java/com/android/dialer/widget/res/values-hy/strings.xml @@ -1,6 +1,27 @@ + + "Գրել տեքստն ինքնուրույն" "Փակել" + "Դեռ կոնտակտներ չունեք" + "Ստեղծել նոր կոնտակտ" + "Միացնել" + "Ձեր կոնտակտները տեսնելու համար միացրեք Կոնտակտների թույլտվությունը:" + "Կոնտակտների հավելված չկա" diff --git a/java/com/android/dialer/widget/res/values-in/strings.xml b/java/com/android/dialer/widget/res/values-in/strings.xml index b4b65504b70d81963d7d18b6d5157fa5bf3b8983..98dfe7be233bbdc48f22384982cabd67029b800e 100644 --- a/java/com/android/dialer/widget/res/values-in/strings.xml +++ b/java/com/android/dialer/widget/res/values-in/strings.xml @@ -1,6 +1,28 @@ + + "Tulis pesan khusus" "Tutup" + "Anda belum memiliki kontak" + + + "Aktifkan" + "Untuk melihat kontak, aktifkan izin Kontak." + "Aplikasi kontak tidak tersedia" diff --git a/java/com/android/dialer/widget/res/values-is/strings.xml b/java/com/android/dialer/widget/res/values-is/strings.xml index fd844197e4190cfae7009c384994aaa9a316eabc..22485aa46d8746073847cb8d896a40e859e05c26 100644 --- a/java/com/android/dialer/widget/res/values-is/strings.xml +++ b/java/com/android/dialer/widget/res/values-is/strings.xml @@ -1,6 +1,28 @@ + + "Skrifa sérsniðin skilaboð" "Loka" + "Þú ert ekki með neina tengiliði enn sem komið er" + + + "Kveikja" + "Kveiktu á tengiliðaheimildinni til að sjá tengiliðina þína." + "Ekkert tengiliðaforrit í boði" diff --git a/java/com/android/dialer/widget/res/values-it/strings.xml b/java/com/android/dialer/widget/res/values-it/strings.xml index 0af3fd2eb9fecc069c6425651f88ab5dfaf85b1a..059a7d644cf7a1d86b28d6e0ceddc26621ca39cc 100644 --- a/java/com/android/dialer/widget/res/values-it/strings.xml +++ b/java/com/android/dialer/widget/res/values-it/strings.xml @@ -1,6 +1,28 @@ + + "Scrivi un messaggio personalizzato" "Chiudi" + "Nessun contatto disponibile" + + + "Attiva" + "Per accedere ai tuoi contatti, attiva l\'autorizzazione Contatti." + "Nessuna app di contatti disponibile" diff --git a/java/com/android/dialer/widget/res/values-iw/strings.xml b/java/com/android/dialer/widget/res/values-iw/strings.xml index a485888ae027f5ece085b5abda01061d7e85c1c8..48bf21911a8c8da8e1ede55fefcd1c44f0896492 100644 --- a/java/com/android/dialer/widget/res/values-iw/strings.xml +++ b/java/com/android/dialer/widget/res/values-iw/strings.xml @@ -1,6 +1,27 @@ + + "כתוב הודעה מותאמת אישית" "סגירה" + "עדיין אין לך אנשי קשר" + "איש קשר חדש" + "הפעלה" + "עליך להפעיל את ההרשאה \'אנשי קשר\' כדי להציג את אנשי הקשר שלך." + "אין אף אפליקציה לניהול אנשי קשר" diff --git a/java/com/android/dialer/widget/res/values-ja/strings.xml b/java/com/android/dialer/widget/res/values-ja/strings.xml index 9fd65a80622658c84eec9576d99ee8d9a8e9b68c..969ffbac08394c0d3b55e2f5f3c12f4ea2d3bc1b 100644 --- a/java/com/android/dialer/widget/res/values-ja/strings.xml +++ b/java/com/android/dialer/widget/res/values-ja/strings.xml @@ -1,6 +1,28 @@ + + "カスタム メッセージを入力" "閉じる" + "連絡先はまだありません" + + + "ON にする" + "連絡先を表示するには、連絡先へのアクセスを許可する設定を ON にしてください。" + "利用できる連絡先アプリがありません" diff --git a/java/com/android/dialer/widget/res/values-ka/strings.xml b/java/com/android/dialer/widget/res/values-ka/strings.xml index 6dde0443073eb6a69b41a462f70b52afa4d7f5dc..fcd45439e67a6504a8298bd8364f3ef804da785f 100644 --- a/java/com/android/dialer/widget/res/values-ka/strings.xml +++ b/java/com/android/dialer/widget/res/values-ka/strings.xml @@ -1,6 +1,28 @@ + + "დაწერეთ მორგებ. შეტყობინება" "დახურვა" + "კონტაქტები ჯერ არ გაქვთ" + + + "ჩართვა" + "კონტაქტების სანახავად ჩართეთ კონტაქტების ნებართვა." + "კონტაქტების აპი მიუწვდომელია" diff --git a/java/com/android/dialer/widget/res/values-kk/strings.xml b/java/com/android/dialer/widget/res/values-kk/strings.xml index 334d915e25a44156262a7e3b9e2145e61fe34582..cab827192f16e795639a630cb69cc268d2e99f31 100644 --- a/java/com/android/dialer/widget/res/values-kk/strings.xml +++ b/java/com/android/dialer/widget/res/values-kk/strings.xml @@ -1,6 +1,28 @@ + + "Арнаулы хабар жазу" "Жабу" + "Әлі ешқандай контактілер жоқ" + + + "Қосу" + "Контактілерді көру үшін \"Контактілер\" рұқсатын қосыңыз." + "Контактілер қолданбасы қолжетімді емес" diff --git a/java/com/android/dialer/widget/res/values-km/strings.xml b/java/com/android/dialer/widget/res/values-km/strings.xml index d0f5633e4a0b1995c79d30b1b22818fa08664c1b..2d6f2f25ddb8f852947306ee697c73088df2816c 100644 --- a/java/com/android/dialer/widget/res/values-km/strings.xml +++ b/java/com/android/dialer/widget/res/values-km/strings.xml @@ -1,6 +1,28 @@ + + "សរសេរ​សារ​ផ្ទាល់ខ្លួន" "បិទ" + "អ្នកមិនទាន់មានទំនាក់ទំនងនៅឡើយទេ" + + + "បើក" + "ដើម្បីមើលទំនាក់ទំនងរបស់អ្នក សូមបើកការ​អនុញ្ញាតកម្មវិធីទំនាក់ទំនង។" + "មិនមានកម្មវិធីទំនាក់ទំនងទេ" diff --git a/java/com/android/dialer/widget/res/values-kn/strings.xml b/java/com/android/dialer/widget/res/values-kn/strings.xml index 3535bfcb76f7822091a44e95823f5965ee17f546..d449cb8b7c0e57da266b530ae87212ddaf79f47e 100644 --- a/java/com/android/dialer/widget/res/values-kn/strings.xml +++ b/java/com/android/dialer/widget/res/values-kn/strings.xml @@ -1,6 +1,28 @@ + + "ಕಸ್ಟಮ್ ಸಂದೇಶವನ್ನು ಬರೆಯಿರಿ" "ಮುಚ್ಚಿ" + "ನಿಮ್ಮ ಬಳಿ ಇನ್ನೂ ಯಾವುದೇ ಸಂಪರ್ಕಗಳಿಲ್ಲ" + + + "ಆನ್ ಮಾಡಿ" + "ನಿಮ್ಮ ಸಂಪರ್ಕಗಳನ್ನು ವೀಕ್ಷಿಸಲು, ಸಂಪರ್ಕಗಳ ಅನುಮತಿಯನ್ನು ಆನ್ ಮಾಡಿ." + "ಯಾವುದೇ ಸಂಪರ್ಕಗಳ ಅಪ್ಲಿಕೇಶನ್‌ ಲಭ್ಯವಿಲ್ಲ" diff --git a/java/com/android/dialer/widget/res/values-ko/strings.xml b/java/com/android/dialer/widget/res/values-ko/strings.xml index 8c00cea8b1f808302ef5f6013dd8d2b51f6340fb..0827d36485df8dcbb78e07edfc83d6e6d18dbfa7 100644 --- a/java/com/android/dialer/widget/res/values-ko/strings.xml +++ b/java/com/android/dialer/widget/res/values-ko/strings.xml @@ -1,6 +1,27 @@ + + "맞춤 메시지를 작성하세요." "닫기" + "아직 연락처가 없습니다." + "새 연락처 만들기" + "사용" + "연락처를 보려면 연락처에 액세스할 권한을 부여하세요." + "사용할 수 있는 연락처 앱이 없습니다." diff --git a/java/com/android/dialer/widget/res/values-ky/strings.xml b/java/com/android/dialer/widget/res/values-ky/strings.xml index 46ea8514cc4a7814effab81ad5795408ee15c0fe..62bd08851209e5e24472c63c4a07f9ce1d9bcd7a 100644 --- a/java/com/android/dialer/widget/res/values-ky/strings.xml +++ b/java/com/android/dialer/widget/res/values-ky/strings.xml @@ -1,6 +1,28 @@ + + "Башка билдирүүнү жазыңыз" "Жабуу" + "Азырынча эч байланышыңыз жок" + + + "Күйгүзүү" + "Байланыштарыңызды көрүү үчүн, \"Байланыштар\" уруксатын күйгүзүңүз." + "Жеткиликтүү байланыштар колдонмосу жок" diff --git a/java/com/android/dialer/widget/res/values-lo/strings.xml b/java/com/android/dialer/widget/res/values-lo/strings.xml index 0db64a78a4f2b3a064bb19ea87be93278633d706..8b7e476d971ff0d9135556788957638458c9d68a 100644 --- a/java/com/android/dialer/widget/res/values-lo/strings.xml +++ b/java/com/android/dialer/widget/res/values-lo/strings.xml @@ -1,6 +1,27 @@ + + "ຂຽນຂໍ້ຄວາມດ້ວຍຕົນເອງ" "ປິດ" + "ທ່ານຍັງບໍ່ມີລາຍຊື່ຜູ້ຕິດຕໍ່ເທື່ອ" + "ສ້າງລາຍຊື່ຜູ້ຕິດຕໍ່ໃໝ່" + "ເປີດໃຊ້" + "ເພື່ອເບິ່ງລາຍຊື່ຜູ້ຕິດຕໍ່ຂອງທ່ານ, ໃຫ້ເປີດການອະນຸຍາດລາຍຊື່ຜູ້ຕິດຕໍ່ກ່ອນ" + "ບໍ່ມີແອັບລາຍຊື່ຜູ້ຕິດຕໍ່ທີ່ສາມາດໃຊ້ໄດ້" diff --git a/java/com/android/dialer/widget/res/values-lt/strings.xml b/java/com/android/dialer/widget/res/values-lt/strings.xml index a10b91ef694405fa2b37d11d259d836fab9e4817..30cc0adebfac5e2e0637aa680bbeab49fab79df5 100644 --- a/java/com/android/dialer/widget/res/values-lt/strings.xml +++ b/java/com/android/dialer/widget/res/values-lt/strings.xml @@ -1,6 +1,27 @@ + + "Parašykite tinkintą praneš." "Uždaryti" + "Dar neturite jokių kontaktų" + "Sukurti naują kontaktą" + "Įjungti" + "Jei norite peržiūrėti kontaktus, įjunkite Kontaktų leidimą." + "Nepasiekiama jokia kontaktų programa" diff --git a/java/com/android/dialer/widget/res/values-lv/strings.xml b/java/com/android/dialer/widget/res/values-lv/strings.xml index 8ff079390d26a64998513227e862eeae778aaa12..87464c576f30ac433e1b888fbf1e130fa758c4d6 100644 --- a/java/com/android/dialer/widget/res/values-lv/strings.xml +++ b/java/com/android/dialer/widget/res/values-lv/strings.xml @@ -1,6 +1,28 @@ + + "Rakstīt pielāgotu ziņojumu" "Aizvērt" + "Jums vēl nav nevienas kontaktpersonas." + + + "Ieslēgt" + "Lai skatītu savas kontaktpersonas, ieslēdziet atļauju Kontaktpersonas." + "Nav pieejama neviena kontaktpersonu lietotne." diff --git a/java/com/android/dialer/widget/res/values-mk/strings.xml b/java/com/android/dialer/widget/res/values-mk/strings.xml index aa9be305524395066fea15190bad5041b23f1bfa..cd2f86b7c22c87934ee6ce9cb08feecc97e7cba8 100644 --- a/java/com/android/dialer/widget/res/values-mk/strings.xml +++ b/java/com/android/dialer/widget/res/values-mk/strings.xml @@ -1,6 +1,28 @@ + + "Напиши приспособена порака" "Затвори" + "Сè уште немате контакти" + + + "Вклучи" + "За да ги видите контактите, вклучете ја дозволата за контакти." + "Нема достапна апликација за контакти" diff --git a/java/com/android/dialer/widget/res/values-ml/strings.xml b/java/com/android/dialer/widget/res/values-ml/strings.xml index b52ee401cf67d1650da6dc26af0fbbb7efe38b6e..1799755d1224a5a63388d9e2f3ec68d8bd3a97a8 100644 --- a/java/com/android/dialer/widget/res/values-ml/strings.xml +++ b/java/com/android/dialer/widget/res/values-ml/strings.xml @@ -1,6 +1,28 @@ + + "ഒരു ഇ‌ഷ്‌ടാനുസൃത സന്ദേശം രചിക്കൂ" "അടയ്‌ക്കുക" + "നിങ്ങൾക്ക് ഇതുവരെയും കോൺടാക്റ്റുകൾ ഒന്നുമില്ല." + + + "ഓൺ ചെയ്യുക" + "നിങ്ങളുടെ കോൺടാക്റ്റുകൾ കാണുന്നതിന്, \'കോൺടാക്റ്റുകൾ\' അനുമതി ഓണാക്കുക." + "കോൺടാക്റ്റ് അപ്ലിക്കേഷനൊന്നും ലഭ്യമല്ല" diff --git a/java/com/android/dialer/widget/res/values-mn/strings.xml b/java/com/android/dialer/widget/res/values-mn/strings.xml index 6bdad8983d30a7486a71c449a124dba1623f080c..e5f5c2162f81eb5f38fa52b17b2a7f64d5f16b3a 100644 --- a/java/com/android/dialer/widget/res/values-mn/strings.xml +++ b/java/com/android/dialer/widget/res/values-mn/strings.xml @@ -1,6 +1,27 @@ + + "Тусгай зурвас бичих" "Хаах" + "Танд одоогоор харилцагч байхгүй байна" + "Шинэ харилцагч үүсгэх" + "Асаах" + "Харилцагчдаа харахын тулд Харилцагчдын зөвшөөрлийг идэвхжүүлнэ үү." + "Ямар ч харилцагчдын апликейшн байхгүй байна" diff --git a/java/com/android/dialer/widget/res/values-mr/strings.xml b/java/com/android/dialer/widget/res/values-mr/strings.xml index 5661fa8b9b6d47e17a5d872882cd6dc1cb144a54..63239d21d212e0d6a162004cc6c90a9473a9812a 100644 --- a/java/com/android/dialer/widget/res/values-mr/strings.xml +++ b/java/com/android/dialer/widget/res/values-mr/strings.xml @@ -1,6 +1,27 @@ + + "एक सानुकूल संदेश लिहा" "बंद करा" + "आपल्‍याकडे अद्याप कोणतेही संपर्क नाहीत" + "नवीन संपर्क तयार करा" + "चालू करा" + "आपले संपर्क पाहण्‍यासाठी, संपर्क परवानगी चालू करा." + "कोणताही संपर्क अॅप उपलब्ध नाही" diff --git a/java/com/android/dialer/widget/res/values-ms/strings.xml b/java/com/android/dialer/widget/res/values-ms/strings.xml index 8889ccc8de2f4f30abfbbb737b2fcedbcab591f6..cf61fc171d838957e5904cab7913b6723484f811 100644 --- a/java/com/android/dialer/widget/res/values-ms/strings.xml +++ b/java/com/android/dialer/widget/res/values-ms/strings.xml @@ -1,6 +1,27 @@ + + "Tulis mesej tersuai" "Tutup" + "Anda belum mempunyai sebarang kenalan" + "Buat kenalan baharu" + "Hidupkan" + "Untuk melihat kenalan anda, hidupkan kebenaran Kenalan." + "Tiada apl kenalan yang tersedia" diff --git a/java/com/android/dialer/widget/res/values-my/strings.xml b/java/com/android/dialer/widget/res/values-my/strings.xml index 9a69f29ebfebd7051826dc3974b8276e3ecefca9..5d3d9ebff56d6f44864b5ec5118dadebf2064d8c 100644 --- a/java/com/android/dialer/widget/res/values-my/strings.xml +++ b/java/com/android/dialer/widget/res/values-my/strings.xml @@ -1,6 +1,27 @@ + + "စိတ်ကြိုက် မက်ဆေ့ဂျ်တစ်ခု ရေးပါ" "ပိတ်ရန်" + "သင့်တွင် မည်သည့်အဆက်အသွယ်မျှ မရှိသေးပါ" + "အဆက်အသွယ်အသစ် ပြုလုပ်ရန်" + "ဖွင့်ရန်" + "အဆက်အသွယ်များကိုကြည့်ရန်၊ အဆက်အသွယ်ခွင့်ပြုချက်ကို ဖွင့်ပါ။" + "အဆက်အသွယ်များ app မရှိပါ" diff --git a/java/com/android/dialer/widget/res/values-nb/strings.xml b/java/com/android/dialer/widget/res/values-nb/strings.xml index 100156bd14ea96a3c8371112f2d8e492ae8612ff..44121826749e7def2bc0df23c81484f43ffa5215 100644 --- a/java/com/android/dialer/widget/res/values-nb/strings.xml +++ b/java/com/android/dialer/widget/res/values-nb/strings.xml @@ -1,6 +1,28 @@ + + "Skriv egendefinert melding" "Lukk" + "Du har ingen kontakter ennå" + + + "Slå på" + "For å se kontaktene dine må du slå på Kontakter-tillatelsen." + "Ingen kontaktapper er tilgjengelige" diff --git a/java/com/android/dialer/widget/res/values-ne/strings.xml b/java/com/android/dialer/widget/res/values-ne/strings.xml index abb8bb04b4368155572819f4c3091761fcc032b3..e1f6e959bade43f5bbb1b76e65dc58f4a21c94ee 100644 --- a/java/com/android/dialer/widget/res/values-ne/strings.xml +++ b/java/com/android/dialer/widget/res/values-ne/strings.xml @@ -1,6 +1,27 @@ + + "आफू अनुकूल सन्देश लेख्‍ने" "बन्द गर्नुहोस्" + "अहिलेसम्म तपाईंसँग कुनै सम्पर्कहरू छैनन्" + "नयाँ सम्पर्क सिर्जना गर्नुहोस्" + "सक्रिय गर्नुहोस्" + "आफ्ना सम्पर्कहरू हेर्न सम्पर्क सम्बन्धी अनुमतिलाई सक्रिय गर्नुहोस्।" + "सम्पर्क सम्बन्धी कुनै अनुप्रयोग उपलब्ध छैन" diff --git a/java/com/android/dialer/widget/res/values-nl/strings.xml b/java/com/android/dialer/widget/res/values-nl/strings.xml index 55602889370d521a95bd474137288d25af5f071b..1fb5f5ed3f345a6ce4c4c554bd6d92144873b8c8 100644 --- a/java/com/android/dialer/widget/res/values-nl/strings.xml +++ b/java/com/android/dialer/widget/res/values-nl/strings.xml @@ -1,6 +1,28 @@ + + "Schrijf zelf een bericht" "Sluiten" + "Je hebt nog geen contacten" + + + "Inschakelen" + "Als je je contacten wilt bekijken, schakel je de machtiging voor Contacten in." + "Geen app voor contacten beschikbaar" diff --git a/java/com/android/dialer/widget/res/values-no/strings.xml b/java/com/android/dialer/widget/res/values-no/strings.xml index 100156bd14ea96a3c8371112f2d8e492ae8612ff..44121826749e7def2bc0df23c81484f43ffa5215 100644 --- a/java/com/android/dialer/widget/res/values-no/strings.xml +++ b/java/com/android/dialer/widget/res/values-no/strings.xml @@ -1,6 +1,28 @@ + + "Skriv egendefinert melding" "Lukk" + "Du har ingen kontakter ennå" + + + "Slå på" + "For å se kontaktene dine må du slå på Kontakter-tillatelsen." + "Ingen kontaktapper er tilgjengelige" diff --git a/java/com/android/dialer/widget/res/values-pa/strings.xml b/java/com/android/dialer/widget/res/values-pa/strings.xml index 4c69c2c6e4d55d089ba0ede673c468a94c80e53a..14b7b416b685c9e78a8a646e19f5772374d664d7 100644 --- a/java/com/android/dialer/widget/res/values-pa/strings.xml +++ b/java/com/android/dialer/widget/res/values-pa/strings.xml @@ -1,6 +1,27 @@ + + "ਵਿਸ਼ੇਸ਼-ਵਿਉਂਤਬੱਧ ਸੰਦੇਸ਼ ਲਿਖੋ" "ਬੰਦ ਕਰੋ" + "ਤੁਹਾਡੇ ਕੋਲ ਹਾਲੇ ਕੋਈ ਸੰਪਰਕ ਨਹੀਂ ਹਨ" + "ਨਵਾਂ ਸੰਪਰਕ ਬਣਾਓ" + "ਚਾਲੂ ਕਰੋ" + "ਆਪਣੇ ਸੰਪਰਕਾਂ ਨੂੰ ਵੇਖਣ ਲਈ, ਸੰਪਰਕ ਇਜਾਜ਼ਤ ਚਾਲੂ ਕਰੋ।" + "ਕੋਈ ਸੰਪਰਕ ਐਪ ਉਪਲਬਧ ਨਹੀਂ ਹੈ" diff --git a/java/com/android/dialer/widget/res/values-pl/strings.xml b/java/com/android/dialer/widget/res/values-pl/strings.xml index cec7a4045212fcb9ef6477f7b2e50863d699cf5b..3f0668c98a87f1f36d8a81515e49f0a7e465cf5d 100644 --- a/java/com/android/dialer/widget/res/values-pl/strings.xml +++ b/java/com/android/dialer/widget/res/values-pl/strings.xml @@ -1,6 +1,27 @@ + + "Wpisz wiadomość" "Zamknij" + "Nie masz jeszcze żadnych kontaktów" + "Utwórz nowy kontakt" + "Włącz" + "Aby zobaczyć swoje kontakty, włącz uprawnienia Kontakty." + "Nie jest dostępna żadna aplikacja do obsługi kontaktów" diff --git a/java/com/android/dialer/widget/res/values-pt-rBR/strings.xml b/java/com/android/dialer/widget/res/values-pt-rBR/strings.xml index b15bfac8df8c0e6d7c9b5010fc8ed0bd679eb0d4..7bc501e4f1718588c4f7e8a9c525cc5d011d6d34 100644 --- a/java/com/android/dialer/widget/res/values-pt-rBR/strings.xml +++ b/java/com/android/dialer/widget/res/values-pt-rBR/strings.xml @@ -1,6 +1,28 @@ + + "Escreva sua mensagem" "Fechar" + "Você ainda não tem contatos" + + + "Ativar" + "Para ver seus contatos, ative a permissão para o app Contatos." + "Nenhum app de contatos disponível" diff --git a/java/com/android/dialer/widget/res/values-pt-rPT/strings.xml b/java/com/android/dialer/widget/res/values-pt-rPT/strings.xml index ece2ef2c32569d9ac666e0c2cee5859d5b342b8b..459ba5790d49728d96126a2a75f250ddebc3b249 100644 --- a/java/com/android/dialer/widget/res/values-pt-rPT/strings.xml +++ b/java/com/android/dialer/widget/res/values-pt-rPT/strings.xml @@ -1,6 +1,28 @@ + + "Escreva uma mensagem" "Fechar" + "Ainda não tem nenhum contacto" + + + "Ativar" + "Para ver os seus contactos, ative a autorização Contactos." + "Não existe nenhuma aplicação de contactos disponível" diff --git a/java/com/android/dialer/widget/res/values-pt/strings.xml b/java/com/android/dialer/widget/res/values-pt/strings.xml index b15bfac8df8c0e6d7c9b5010fc8ed0bd679eb0d4..7bc501e4f1718588c4f7e8a9c525cc5d011d6d34 100644 --- a/java/com/android/dialer/widget/res/values-pt/strings.xml +++ b/java/com/android/dialer/widget/res/values-pt/strings.xml @@ -1,6 +1,28 @@ + + "Escreva sua mensagem" "Fechar" + "Você ainda não tem contatos" + + + "Ativar" + "Para ver seus contatos, ative a permissão para o app Contatos." + "Nenhum app de contatos disponível" diff --git a/java/com/android/dialer/widget/res/values-ro/strings.xml b/java/com/android/dialer/widget/res/values-ro/strings.xml index 753b920b47e4a5863a0e6b2a84751e752dfc62f7..6138eb1b6a5cea0bf880815b59591557d4d584a9 100644 --- a/java/com/android/dialer/widget/res/values-ro/strings.xml +++ b/java/com/android/dialer/widget/res/values-ro/strings.xml @@ -1,6 +1,28 @@ + + "Scrieți mesaj personalizat" "Închideți" + "Nu aveți încă persoane de contact." + + + "Activați" + "Pentru a vedea persoanele de contact, activați permisiunea pentru Agendă." + "Nu este disponibilă nicio aplicație pentru agendă" diff --git a/java/com/android/dialer/widget/res/values-ru/strings.xml b/java/com/android/dialer/widget/res/values-ru/strings.xml index bdebd3ce4e4141728288ec111abfd2fcd3fa0710..7eb9f1de1a1820f69eed6afb04d0bcd0b72f52a9 100644 --- a/java/com/android/dialer/widget/res/values-ru/strings.xml +++ b/java/com/android/dialer/widget/res/values-ru/strings.xml @@ -1,6 +1,28 @@ + + "Добавьте свой текст" "Закрыть" + "Контактов нет" + + + "Предоставить разрешение" + "Чтобы открыть список контактов, предоставьте приложению разрешение \"Контакты\"." + "Нет приложения для работы с контактами" diff --git a/java/com/android/dialer/widget/res/values-si/strings.xml b/java/com/android/dialer/widget/res/values-si/strings.xml index 4988259d4c981b56aba40346d97fae551b911eb3..fb57425765da51d02a85c1b4c8187bc8784d8007 100644 --- a/java/com/android/dialer/widget/res/values-si/strings.xml +++ b/java/com/android/dialer/widget/res/values-si/strings.xml @@ -1,6 +1,28 @@ + + "අභිරුචි පණිවිඩයක් ලියන්න" "වසන්න" + "ඔබට තවම කිසිදු සම්බන්ධතාවක් නැත" + + + "ක්‍රියාත්මක කරන්න" + "ඔබේ සම්බන්ධතා බැලීමට, සම්බන්ධතා අවසරය ක්‍රියාත්මක කරන්න." + "සබඳතා යෙදුම ලබා ගැනීමට නොහැකිය" diff --git a/java/com/android/dialer/widget/res/values-sk/strings.xml b/java/com/android/dialer/widget/res/values-sk/strings.xml index 5dc1bd505389c5609fbe9a4678acf6efd3f77e7e..5912b574a211e2fefe661a56f9547b60999475f6 100644 --- a/java/com/android/dialer/widget/res/values-sk/strings.xml +++ b/java/com/android/dialer/widget/res/values-sk/strings.xml @@ -1,6 +1,28 @@ + + "Napíšte vlastnú správu" "Zavrieť" + "Zatiaľ nemáte žiadne kontakty" + + + "Zapnúť" + "Ak si chcete zobraziť kontakty, zapnite povolenie Kontakty." + "Nie je k dispozícii žiadna aplikácia na prácu s kontaktmi" diff --git a/java/com/android/dialer/widget/res/values-sl/strings.xml b/java/com/android/dialer/widget/res/values-sl/strings.xml index 0ba965b2edc2370fb431636fd8ce5dc426a1aa5e..1ee87d13db26d046618e9dbd83ab9f6bb2230633 100644 --- a/java/com/android/dialer/widget/res/values-sl/strings.xml +++ b/java/com/android/dialer/widget/res/values-sl/strings.xml @@ -1,6 +1,28 @@ + + "Napišite sporočilo po meri" "Zapri" + "Nimate še nobenega stika" + + + "Vklopi" + "Če si želite ogledati stike, vklopite dovoljenje za stike." + "Na voljo ni nobene aplikacije za stike" diff --git a/java/com/android/dialer/widget/res/values-sq/strings.xml b/java/com/android/dialer/widget/res/values-sq/strings.xml index 7f5e0f2857840e7512f32c2689422f6266fc6167..b55e47c89c9ae2dcdfb662466ef44f41adb408c9 100644 --- a/java/com/android/dialer/widget/res/values-sq/strings.xml +++ b/java/com/android/dialer/widget/res/values-sq/strings.xml @@ -1,6 +1,28 @@ + + "Shkruaj mesazh të person." "Mbyll" + "Nuk ke ende kontakte" + + + "Aktivizo" + "Për të parë kontaktet, aktivizo lejen e Kontakteve." + "Nuk ka asnjë aplikacion për kontaktet" diff --git a/java/com/android/dialer/widget/res/values-sr/strings.xml b/java/com/android/dialer/widget/res/values-sr/strings.xml index 446c273639947c0e34e797ce78163a62eb37d1ae..c2f269d3f7f87059a46d5c7e02ad77f9dce94236 100644 --- a/java/com/android/dialer/widget/res/values-sr/strings.xml +++ b/java/com/android/dialer/widget/res/values-sr/strings.xml @@ -1,6 +1,27 @@ + + "Напишите прилагођену поруку" "Затворите" + "Још увек немате ниједан контакт" + "Направи нови контакт" + "Укључи" + "Да бисте видели контакте, укључите дозволу за Контакте." + "Нема доступне апликације за контакте" diff --git a/java/com/android/dialer/widget/res/values-sv/strings.xml b/java/com/android/dialer/widget/res/values-sv/strings.xml index 7d2f44c454f05609b6e6ebd53973ef34b892924c..75add78ac585bc335dde71a59d077e8937cdad05 100644 --- a/java/com/android/dialer/widget/res/values-sv/strings.xml +++ b/java/com/android/dialer/widget/res/values-sv/strings.xml @@ -1,6 +1,27 @@ + + "Skriv anpassat meddelande" "Stäng" + "Du har inga kontakter ännu" + "Skapa ny kontakt" + "Aktivera" + "Du måste aktivera behörigheten Kontakter för att visa kontakterna." + "Det finns inga appar för kontakter" diff --git a/java/com/android/dialer/widget/res/values-sw/strings.xml b/java/com/android/dialer/widget/res/values-sw/strings.xml index d2c2a97212b4c53ca0db1ae0c88ad3cadfa2a5ff..a9139809fe8400a6fb7370a0a2da9919859086f5 100644 --- a/java/com/android/dialer/widget/res/values-sw/strings.xml +++ b/java/com/android/dialer/widget/res/values-sw/strings.xml @@ -1,6 +1,28 @@ + + "Andika ujumbe maalum" "Funga" + "Bado huna anwani zozote" + + + "Washa" + "Ili uone anwani zako, washa ruhusa ya Anwani." + "Hakuna programu ya anwani iliyopatikana" diff --git a/java/com/android/dialer/widget/res/values-ta/strings.xml b/java/com/android/dialer/widget/res/values-ta/strings.xml index 4061c169f88abcf5a3d8b7891f1beb7220e1c7fb..17333304f1d2db163002270969c5580e96251387 100644 --- a/java/com/android/dialer/widget/res/values-ta/strings.xml +++ b/java/com/android/dialer/widget/res/values-ta/strings.xml @@ -1,6 +1,27 @@ + + "தனிப்பயன் செய்தியை எழுதவும்" "மூடு" + "இதுவரை தொடர்புகள் எதுவுமில்லை" + "புதிய தொடர்பை உருவாக்கு" + "இயக்கு" + "தொடர்புகளைப் பார்க்க, தொடர்புகள் அனுமதியை இயக்கவும்." + "தொடர்புகள் பயன்பாடு எதுவுமில்லை" diff --git a/java/com/android/dialer/widget/res/values-te/strings.xml b/java/com/android/dialer/widget/res/values-te/strings.xml index c2474b7ce27fb285864e4bdcb315160e3ffe510a..27e6b0536ed2ec439216cb5198b18ac8edad8575 100644 --- a/java/com/android/dialer/widget/res/values-te/strings.xml +++ b/java/com/android/dialer/widget/res/values-te/strings.xml @@ -1,6 +1,27 @@ + + "అనుకూల సందేశాన్ని వ్రాయండి" "మూసివేయి" + "మీకు ఇప్పటికీ పరిచయాలేవీ లేవు" + "కొత్త పరిచయాన్ని సృష్టించండి" + "ఆన్ చేయి" + "మీ పరిచయాలను చూడటానికి, పరిచయాల అనుమతిని ఆన్ చేయండి." + "పరిచయాల అనువర్తనం ఏదీ అందుబాటులో లేదు" diff --git a/java/com/android/dialer/widget/res/values-th/strings.xml b/java/com/android/dialer/widget/res/values-th/strings.xml index d450b4b1318290b3511737d6d4bf54ec0dd13831..40134c84d2e72ad50882134d637b669398ea4932 100644 --- a/java/com/android/dialer/widget/res/values-th/strings.xml +++ b/java/com/android/dialer/widget/res/values-th/strings.xml @@ -1,6 +1,27 @@ + + "เขียนข้อความที่กำหนดเอง" "ปิด" + "คุณยังไม่มีรายชื่อติดต่อ" + "สร้างรายชื่อติดต่อใหม่" + "เปิด" + "หากต้องการดูรายชื่อติดต่อ ให้เปิดสิทธิ์เข้าถึงรายชื่อติดต่อ" + "ไม่มีแอปรายชื่อติดต่อที่พร้อมใช้งาน" diff --git a/java/com/android/dialer/widget/res/values-tl/strings.xml b/java/com/android/dialer/widget/res/values-tl/strings.xml index ee7c52f7b3958fd354d316d0fa89d2085525a87c..406f18b5e48a8e7a7976b70b45009f55f7881d6f 100644 --- a/java/com/android/dialer/widget/res/values-tl/strings.xml +++ b/java/com/android/dialer/widget/res/values-tl/strings.xml @@ -1,6 +1,28 @@ + + "Sumulat ng custom na mensahe" "Isara" + "Wala ka pang sinumang contact" + + + "I-on" + "Upang makita ang iyong mga contact, i-on ang pahintulot ng Mga Contact." + "Walang available na app ng mga contact" diff --git a/java/com/android/dialer/widget/res/values-tr/strings.xml b/java/com/android/dialer/widget/res/values-tr/strings.xml index 64e2ea535b8d946177d911df2b42a42fa5ca4f62..e1dcabd48a98d3398588aad97679c24967b88b52 100644 --- a/java/com/android/dialer/widget/res/values-tr/strings.xml +++ b/java/com/android/dialer/widget/res/values-tr/strings.xml @@ -1,6 +1,28 @@ + + "Özel bir mesaj yazın" "Kapat" + "Henüz hiç kişiniz yok" + + + "Etkinleştir" + "Kişilerinizi görmek için Kişiler iznini etkinleştirin." + "Kullanılabilir kişi uygulaması yok" diff --git a/java/com/android/dialer/widget/res/values-uk/strings.xml b/java/com/android/dialer/widget/res/values-uk/strings.xml index f8d9bb8715d2e4e0cbb0ab82ed2ea9e8646f0f74..d1a281c64aeab7c648e82de90aec155d20e39aa9 100644 --- a/java/com/android/dialer/widget/res/values-uk/strings.xml +++ b/java/com/android/dialer/widget/res/values-uk/strings.xml @@ -1,6 +1,27 @@ + + "Ваше власне повідомлення" "Закрити" + "Ще немає контактів" + "Створити контакт" + "Увімкнути" + "Щоб переглянути контакти, увімкніть дозвіл \"Контакти\"." + "Немає додатка з контактами" diff --git a/java/com/android/dialer/widget/res/values-ur/strings.xml b/java/com/android/dialer/widget/res/values-ur/strings.xml index 6edeb5c95ea4c079a641170974bea8ebe5775270..d5dcad0bd2797d1cf3c6d7fec1eeb5371fe6b6f4 100644 --- a/java/com/android/dialer/widget/res/values-ur/strings.xml +++ b/java/com/android/dialer/widget/res/values-ur/strings.xml @@ -1,6 +1,27 @@ + + "ایک حسب ضرورت پیغام لکھیں" "بند کریں" + "آپ کے پاس ابھی تک کوئی رابطے نہیں ہیں" + "نیا رابطہ بنائیں" + "آن کریں" + "اپنے رابطے دیکھنے کیلئے رابطوں کی اجازت آن کریں۔" + "رابطوں کی کوئی ایپ دستیاب نہیں ہے" diff --git a/java/com/android/dialer/widget/res/values-uz/strings.xml b/java/com/android/dialer/widget/res/values-uz/strings.xml index 434464aef55db07659a4694ad75dd07e2379538b..b3003be16a442122f434332a5654c130b07dfc87 100644 --- a/java/com/android/dialer/widget/res/values-uz/strings.xml +++ b/java/com/android/dialer/widget/res/values-uz/strings.xml @@ -1,6 +1,28 @@ + + "Boshqa xabar yozing" "Yopish" + "Kontaktlar yo‘q" + + + "Ruxsat berish" + "Kontaktlar ro‘yxatini ko‘rish uchun ilovaga Kontaktlarga kirishga ruxsat bering." + "Kontaktlarni ochadigan ilova yo‘q" diff --git a/java/com/android/dialer/widget/res/values-vi/strings.xml b/java/com/android/dialer/widget/res/values-vi/strings.xml index 1a30f7c966fbe55f1880ecb6718ed68359c6890b..68669ec671b306e613a614681dba92ea7aa93d8b 100644 --- a/java/com/android/dialer/widget/res/values-vi/strings.xml +++ b/java/com/android/dialer/widget/res/values-vi/strings.xml @@ -1,6 +1,28 @@ + + "Viết tin nhắn tùy chỉnh" "Đóng" + "Bạn chưa có bất kỳ liên hệ nào" + + + "Bật" + "Để xem danh bạ của bạn, bật quyền đối với Danh bạ." + "Không có ứng dụng danh bạ" diff --git a/java/com/android/dialer/widget/res/values-zh-rCN/strings.xml b/java/com/android/dialer/widget/res/values-zh-rCN/strings.xml index 7999723938bd8c41aeaca21ab25f541ac4007531..4a5e458019f8d67b93ad71a7e3729ab89be0315c 100644 --- a/java/com/android/dialer/widget/res/values-zh-rCN/strings.xml +++ b/java/com/android/dialer/widget/res/values-zh-rCN/strings.xml @@ -1,6 +1,27 @@ + + "自行撰写信息" "关闭" + "您还没有任何联系人" + "创建新联系人" + "开启" + "要查看您的联系人,请开启“通讯录”权限。" + "没有可用的通讯录应用" diff --git a/java/com/android/dialer/widget/res/values-zh-rHK/strings.xml b/java/com/android/dialer/widget/res/values-zh-rHK/strings.xml index b0bfcc8d962efbcd31c5472dff86fce965a1cfae..3d5fe6ebb59d6a224c48e61a31e6be1b07c502af 100644 --- a/java/com/android/dialer/widget/res/values-zh-rHK/strings.xml +++ b/java/com/android/dialer/widget/res/values-zh-rHK/strings.xml @@ -1,6 +1,27 @@ + + "撰寫自訂訊息" "關閉" + "您尚無任何聯絡人" + "建立新聯絡人" + "開放" + "如要查看聯絡人,請開放「通訊錄」權限。" + "沒有可用的聯絡人應用程式" diff --git a/java/com/android/dialer/widget/res/values-zh-rTW/strings.xml b/java/com/android/dialer/widget/res/values-zh-rTW/strings.xml index b0bfcc8d962efbcd31c5472dff86fce965a1cfae..0cb8d152dad5a258b8c95fe65a2bb7862eb5fbff 100644 --- a/java/com/android/dialer/widget/res/values-zh-rTW/strings.xml +++ b/java/com/android/dialer/widget/res/values-zh-rTW/strings.xml @@ -1,6 +1,28 @@ + + "撰寫自訂訊息" "關閉" + "你還沒有任何聯絡人" + + + "開啟" + "如要查看你的聯絡人,請開啟「聯絡人」存取權限。" + "沒有可用的聯絡人應用程式" diff --git a/java/com/android/dialer/widget/res/values-zu/strings.xml b/java/com/android/dialer/widget/res/values-zu/strings.xml index 074aa582265329bc732d49e64d30b510be67443c..ca5898341c7b96b59c485df1c0d9ed0ca1894774 100644 --- a/java/com/android/dialer/widget/res/values-zu/strings.xml +++ b/java/com/android/dialer/widget/res/values-zu/strings.xml @@ -1,6 +1,28 @@ + + "Bhala umlayezo wangokwezifiso" "Vala" + "Awunabo oxhumana nabo okwamanje" + + + "Vula" + "Ukuze ubone oxhumana nabo, vula imvume yoxhumana nabo." + "Alukho uhlelo lokusebenza loxhumana nabo olutholakalayo" diff --git a/java/com/android/dialer/widget/res/values/colors.xml b/java/com/android/dialer/widget/res/values/colors.xml new file mode 100644 index 0000000000000000000000000000000000000000..c974609ef404f48bcacd9ce1831c5f0228e8787a --- /dev/null +++ b/java/com/android/dialer/widget/res/values/colors.xml @@ -0,0 +1,4 @@ + + + #b2b2b2 + \ No newline at end of file diff --git a/java/com/android/dialer/widget/res/values/dimens.xml b/java/com/android/dialer/widget/res/values/dimens.xml index 20393a8425d69e75c602ed1a2e87d9fe9d72e3ea..537ad7bd774d3fe5b2a1be7ef4276682cabd36f6 100644 --- a/java/com/android/dialer/widget/res/values/dimens.xml +++ b/java/com/android/dialer/widget/res/values/dimens.xml @@ -26,4 +26,9 @@ 14sp 12sp 4dp + 4dp + + + 20dp + 16sp \ No newline at end of file diff --git a/java/com/android/dialer/widget/res/values/strings.xml b/java/com/android/dialer/widget/res/values/strings.xml index a5829bb0b891069640662eaae360f60795c0f40b..74a5f0f2151e039c2e52f4cb6e521f5b58bddcb8 100644 --- a/java/com/android/dialer/widget/res/values/strings.xml +++ b/java/com/android/dialer/widget/res/values/strings.xml @@ -1,8 +1,38 @@ + Write a custom message Close + + + You don\'t have any contacts yet + + + Create new contact + + + Turn on + + + To see your contacts, turn on the Contacts permission. + + + No contacts app available \ No newline at end of file diff --git a/java/com/android/dialershared/bubble/AndroidManifest.xml b/java/com/android/dialershared/bubble/AndroidManifest.xml new file mode 100644 index 0000000000000000000000000000000000000000..1a94aafc1eb4ac99fa1d7de1efcaf7282fd999d9 --- /dev/null +++ b/java/com/android/dialershared/bubble/AndroidManifest.xml @@ -0,0 +1,22 @@ + + + + + + + diff --git a/java/com/android/dialershared/bubble/Bubble.java b/java/com/android/dialershared/bubble/Bubble.java new file mode 100644 index 0000000000000000000000000000000000000000..dbb5ea759251ae6d7d562590a59d4b5d67ba22cc --- /dev/null +++ b/java/com/android/dialershared/bubble/Bubble.java @@ -0,0 +1,767 @@ +/* + * Copyright (C) 2017 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License + */ + +package com.android.dialershared.bubble; + +import android.animation.Animator; +import android.animation.AnimatorSet; +import android.animation.ObjectAnimator; +import android.animation.PropertyValuesHolder; +import android.annotation.SuppressLint; +import android.app.PendingIntent.CanceledException; +import android.content.Context; +import android.content.Intent; +import android.content.res.ColorStateList; +import android.graphics.PixelFormat; +import android.graphics.drawable.Animatable; +import android.graphics.drawable.Drawable; +import android.graphics.drawable.RippleDrawable; +import android.net.Uri; +import android.os.Build.VERSION; +import android.os.Build.VERSION_CODES; +import android.os.Handler; +import android.provider.Settings; +import android.support.annotation.ColorInt; +import android.support.annotation.IntDef; +import android.support.annotation.NonNull; +import android.support.annotation.Nullable; +import android.support.annotation.VisibleForTesting; +import android.support.v4.graphics.ColorUtils; +import android.support.v4.os.BuildCompat; +import android.support.v4.view.animation.FastOutLinearInInterpolator; +import android.support.v4.view.animation.LinearOutSlowInInterpolator; +import android.transition.TransitionManager; +import android.transition.TransitionValues; +import android.view.ContextThemeWrapper; +import android.view.Gravity; +import android.view.LayoutInflater; +import android.view.MotionEvent; +import android.view.View; +import android.view.ViewGroup; +import android.view.ViewGroup.MarginLayoutParams; +import android.view.ViewPropertyAnimator; +import android.view.ViewTreeObserver.OnPreDrawListener; +import android.view.WindowManager; +import android.view.WindowManager.LayoutParams; +import android.view.animation.AnticipateInterpolator; +import android.view.animation.OvershootInterpolator; +import android.widget.FrameLayout; +import android.widget.ImageView; +import android.widget.TextView; +import android.widget.ViewAnimator; +import com.android.dialershared.bubble.BubbleInfo.Action; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.util.List; + +/** + * Creates and manages a bubble window from information in a {@link BubbleInfo}. Before creating, be + * sure to check whether bubbles may be shown using {@link #canShowBubbles(Context)} and request + * permission if necessary ({@link #getRequestPermissionIntent(Context)} is provided for + * convenience) + */ +public class Bubble { + // This class has some odd behavior that is not immediately obvious in order to avoid jank when + // resizing. See http://go/bubble-resize for details. + + // How long text should show after showText(CharSequence) is called + private static final int SHOW_TEXT_DURATION_MILLIS = 3000; + // How long the new window should show before destroying the old one during resize operations. + // This ensures the new window has had time to draw first. + private static final int WINDOW_REDRAW_DELAY_MILLIS = 50; + + private static Boolean canShowBubblesForTesting = null; + + private final Context context; + private final WindowManager windowManager; + + private LayoutParams windowParams; + + // Initialized in factory method + @SuppressWarnings("NullableProblems") + @NonNull + private BubbleInfo currentInfo; + + private boolean isShowing; + private boolean expanded; + private boolean textShowing; + private boolean hideAfterText; + + private final Handler handler = new Handler(); + + private ViewHolder viewHolder; + private ViewPropertyAnimator collapseAnimation; + private Integer overrideGravity; + + @Retention(RetentionPolicy.SOURCE) + @IntDef({CollapseEnd.NOTHING, CollapseEnd.HIDE}) + private @interface CollapseEnd { + int NOTHING = 0; + int HIDE = 1; + } + + /** + * Determines whether bubbles can be shown based on permissions obtained. This should be checked + * before attempting to create a Bubble. + * + * @return true iff bubbles are able to be shown. + * @see Settings#canDrawOverlays(Context) + */ + public static boolean canShowBubbles(@NonNull Context context) { + return canShowBubblesForTesting != null + ? canShowBubblesForTesting + : VERSION.SDK_INT < VERSION_CODES.M || Settings.canDrawOverlays(context); + } + + @VisibleForTesting(otherwise = VisibleForTesting.NONE) + public static void setCanShowBubblesForTesting(boolean canShowBubbles) { + canShowBubblesForTesting = canShowBubbles; + } + + /** Returns an Intent to request permission to show overlays */ + @NonNull + public static Intent getRequestPermissionIntent(@NonNull Context context) { + return new Intent( + Settings.ACTION_MANAGE_OVERLAY_PERMISSION, + Uri.fromParts("package", context.getPackageName(), null)); + } + + /** Creates instances of Bubble. The default implementation just calls the constructor. */ + @VisibleForTesting + public interface BubbleFactory { + Bubble createBubble(@NonNull Context context); + } + + private static BubbleFactory bubbleFactory = Bubble::new; + + public static Bubble createBubble(@NonNull Context context, @NonNull BubbleInfo info) { + Bubble bubble = bubbleFactory.createBubble(context); + bubble.setBubbleInfo(info); + return bubble; + } + + @VisibleForTesting + public static void setBubbleFactory(@NonNull BubbleFactory bubbleFactory) { + Bubble.bubbleFactory = bubbleFactory; + } + + @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE) + Bubble(@NonNull Context context) { + context = new ContextThemeWrapper(context, R.style.Theme_AppCompat); + this.context = context; + windowManager = context.getSystemService(WindowManager.class); + + viewHolder = new ViewHolder(context); + } + + /** + * Make the bubble visible. Will show a short entrance animation as it enters. If the bubble is + * already showing this method does nothing. + */ + public void show() { + if (isShowing) { + return; + } + + hideAfterText = false; + + if (windowParams == null) { + // Apps targeting O+ must use TYPE_APPLICATION_OVERLAY, which is not available prior to O. + @SuppressWarnings("deprecation") + @SuppressLint("InlinedApi") + int type = + BuildCompat.isAtLeastO() + ? LayoutParams.TYPE_APPLICATION_OVERLAY + : LayoutParams.TYPE_PHONE; + + windowParams = + new LayoutParams( + type, + LayoutParams.FLAG_NOT_TOUCH_MODAL + | LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH + | LayoutParams.FLAG_NOT_FOCUSABLE + | LayoutParams.FLAG_LAYOUT_NO_LIMITS, + PixelFormat.TRANSLUCENT); + windowParams.gravity = Gravity.TOP | Gravity.LEFT; + windowParams.x = context.getResources().getDimensionPixelOffset(R.dimen.bubble_safe_margin_x); + windowParams.y = currentInfo.getStartingYPosition(); + windowParams.height = LayoutParams.WRAP_CONTENT; + windowParams.width = LayoutParams.WRAP_CONTENT; + } + + windowManager.addView(viewHolder.getRoot(), windowParams); + ObjectAnimator showAnimator = + ObjectAnimator.ofPropertyValuesHolder( + viewHolder.getPrimaryButton(), + PropertyValuesHolder.ofFloat(View.SCALE_X, 0, 1), + PropertyValuesHolder.ofFloat(View.SCALE_Y, 0, 1)); + showAnimator.setInterpolator(new OvershootInterpolator()); + showAnimator.start(); + isShowing = true; + updatePrimaryIconAnimation(); + } + + /** + * Hide the button if visible. Will run a short exit animation before hiding. If the bubble is + * currently showing text, will hide after the text is done displaying. If the bubble is not + * visible this method does nothing. + */ + public void hide() { + if (!isShowing) { + return; + } + + if (textShowing) { + hideAfterText = true; + return; + } + + if (expanded) { + startCollapse(CollapseEnd.HIDE); + return; + } + + viewHolder + .getPrimaryButton() + .animate() + .setInterpolator(new AnticipateInterpolator()) + .scaleX(0) + .scaleY(0) + .withEndAction( + () -> { + windowManager.removeView(viewHolder.getRoot()); + isShowing = false; + updatePrimaryIconAnimation(); + }) + .start(); + } + + /** Returns whether the bubble is currently visible */ + public boolean isShowing() { + return isShowing; + } + + /** + * Set the info for this Bubble to display + * + * @param bubbleInfo the BubbleInfo to display in this Bubble. + */ + public void setBubbleInfo(@NonNull BubbleInfo bubbleInfo) { + currentInfo = bubbleInfo; + update(); + } + + /** + * Update the state and behavior of actions. + * + * @param actions the new state of the bubble's actions + */ + public void updateActions(@NonNull List actions) { + currentInfo = BubbleInfo.from(currentInfo).setActions(actions).build(); + updateButtonStates(); + } + + /** Returns the currently displayed BubbleInfo */ + public BubbleInfo getBubbleInfo() { + return currentInfo; + } + + /** + * Display text in the main bubble. The bubble's drawer is not expandable while text is showing, + * and the drawer will be closed if already open. + * + * @param text the text to display to the user + */ + public void showText(@NonNull CharSequence text) { + textShowing = true; + if (expanded) { + startCollapse(CollapseEnd.NOTHING); + doShowText(text); + } else { + // Need to transition from old bounds to new bounds manually + ChangeOnScreenBounds transition = new ChangeOnScreenBounds(); + // Prepare and capture start values + TransitionValues startValues = new TransitionValues(); + startValues.view = viewHolder.getPrimaryButton(); + transition.addTarget(startValues.view); + transition.captureStartValues(startValues); + + doResize( + () -> { + doShowText(text); + // Hide the text so we can animate it in + viewHolder.getPrimaryText().setAlpha(0); + + ViewAnimator primaryButton = viewHolder.getPrimaryButton(); + // Cancel the automatic transition scheduled in doShowText + TransitionManager.endTransitions((ViewGroup) primaryButton.getParent()); + primaryButton + .getViewTreeObserver() + .addOnPreDrawListener( + new OnPreDrawListener() { + @Override + public boolean onPreDraw() { + primaryButton.getViewTreeObserver().removeOnPreDrawListener(this); + + // Prepare and capture end values + TransitionValues endValues = new TransitionValues(); + endValues.view = primaryButton; + transition.addTarget(endValues.view); + transition.captureEndValues(endValues); + + // animate the primary button bounds change + Animator bounds = + transition.createAnimator(primaryButton, startValues, endValues); + + // Animate the text in + Animator alpha = + ObjectAnimator.ofFloat(viewHolder.getPrimaryText(), View.ALPHA, 1f); + + AnimatorSet set = new AnimatorSet(); + set.play(bounds).before(alpha); + set.start(); + return false; + } + }); + }); + } + handler.removeCallbacks(null); + handler.postDelayed( + () -> { + textShowing = false; + if (hideAfterText) { + hide(); + } else { + doResize( + () -> viewHolder.getPrimaryButton().setDisplayedChild(ViewHolder.CHILD_INDEX_ICON)); + } + }, + SHOW_TEXT_DURATION_MILLIS); + } + + @Nullable + Integer getGravityOverride() { + return overrideGravity; + } + + void onMoveStart() { + startCollapse(CollapseEnd.NOTHING); + viewHolder + .getPrimaryButton() + .animate() + .translationZ( + context.getResources().getDimensionPixelOffset(R.dimen.bubble_move_elevation_change)); + } + + void onMoveFinish() { + viewHolder.getPrimaryButton().animate().translationZ(0); + // If it's GONE, no resize is necessary. If it's VISIBLE, it will get cleaned up when the + // collapse animation finishes + if (viewHolder.getExpandedView().getVisibility() == View.INVISIBLE) { + doResize(null); + } + } + + void primaryButtonClick() { + if (expanded || textShowing || currentInfo.getActions().isEmpty()) { + try { + currentInfo.getPrimaryIntent().send(); + } catch (CanceledException e) { + throw new RuntimeException(e); + } + return; + } + + doResize( + () -> { + onLeftRightSwitch(isDrawingFromRight()); + viewHolder.setDrawerVisibility(View.VISIBLE); + }); + View expandedView = viewHolder.getExpandedView(); + expandedView + .getViewTreeObserver() + .addOnPreDrawListener( + new OnPreDrawListener() { + @Override + public boolean onPreDraw() { + expandedView.getViewTreeObserver().removeOnPreDrawListener(this); + expandedView.setTranslationX( + isDrawingFromRight() ? expandedView.getWidth() : -expandedView.getWidth()); + expandedView + .animate() + .setInterpolator(new LinearOutSlowInInterpolator()) + .translationX(0); + return false; + } + }); + setFocused(true); + expanded = true; + } + + void onLeftRightSwitch(boolean onRight) { + if (viewHolder.isMoving()) { + if (viewHolder.getExpandedView().getVisibility() == View.GONE) { + // If the drawer is not part of the layout we don't need to do anything. Layout flips will + // happen if necessary when opening the drawer. + return; + } + } + + viewHolder + .getRoot() + .setLayoutDirection(onRight ? View.LAYOUT_DIRECTION_RTL : View.LAYOUT_DIRECTION_LTR); + View primaryContainer = viewHolder.getRoot().findViewById(R.id.bubble_primary_container); + ViewGroup.LayoutParams layoutParams = primaryContainer.getLayoutParams(); + ((FrameLayout.LayoutParams) layoutParams).gravity = onRight ? Gravity.RIGHT : Gravity.LEFT; + primaryContainer.setLayoutParams(layoutParams); + + viewHolder + .getExpandedView() + .setBackgroundResource( + onRight + ? R.drawable.bubble_background_pill_rtl + : R.drawable.bubble_background_pill_ltr); + } + + LayoutParams getWindowParams() { + return windowParams; + } + + View getRootView() { + return viewHolder.getRoot(); + } + + private void update() { + RippleDrawable backgroundRipple = + (RippleDrawable) + context.getResources().getDrawable(R.drawable.bubble_ripple_circle, context.getTheme()); + int primaryTint = + ColorUtils.compositeColors( + context.getColor(R.color.bubble_primary_background_darken), + currentInfo.getPrimaryColor()); + backgroundRipple.getDrawable(0).setTint(primaryTint); + viewHolder.getPrimaryButton().setBackground(backgroundRipple); + + setBackgroundDrawable(viewHolder.getFirstButton(), primaryTint); + setBackgroundDrawable(viewHolder.getSecondButton(), primaryTint); + setBackgroundDrawable(viewHolder.getThirdButton(), primaryTint); + + int numButtons = currentInfo.getActions().size(); + viewHolder.getThirdButton().setVisibility(numButtons < 3 ? View.GONE : View.VISIBLE); + viewHolder.getSecondButton().setVisibility(numButtons < 2 ? View.GONE : View.VISIBLE); + + viewHolder.getPrimaryIcon().setImageIcon(currentInfo.getPrimaryIcon()); + updatePrimaryIconAnimation(); + + viewHolder + .getExpandedView() + .setBackgroundTintList(ColorStateList.valueOf(currentInfo.getPrimaryColor())); + + updateButtonStates(); + } + + private void updatePrimaryIconAnimation() { + Drawable drawable = viewHolder.getPrimaryIcon().getDrawable(); + if (drawable instanceof Animatable) { + if (isShowing) { + ((Animatable) drawable).start(); + } else { + ((Animatable) drawable).stop(); + } + } + } + + private void setBackgroundDrawable(CheckableImageButton view, @ColorInt int color) { + RippleDrawable itemRipple = + (RippleDrawable) + context + .getResources() + .getDrawable(R.drawable.bubble_ripple_checkable_circle, context.getTheme()); + itemRipple.getDrawable(0).setTint(color); + view.setBackground(itemRipple); + } + + private void updateButtonStates() { + int numButtons = currentInfo.getActions().size(); + + if (numButtons >= 1) { + configureButton(currentInfo.getActions().get(0), viewHolder.getFirstButton()); + if (numButtons >= 2) { + configureButton(currentInfo.getActions().get(1), viewHolder.getSecondButton()); + if (numButtons >= 3) { + configureButton(currentInfo.getActions().get(2), viewHolder.getThirdButton()); + } + } + } + } + + private void doShowText(@NonNull CharSequence text) { + TransitionManager.beginDelayedTransition((ViewGroup) viewHolder.getPrimaryButton().getParent()); + viewHolder.getPrimaryText().setText(text); + viewHolder.getPrimaryButton().setDisplayedChild(ViewHolder.CHILD_INDEX_TEXT); + } + + private void configureButton(Action action, CheckableImageButton button) { + action + .getIcon() + .loadDrawableAsync( + context, + d -> { + button.setImageIcon(action.getIcon()); + button.setContentDescription(action.getName()); + button.setChecked(action.isChecked()); + button.setEnabled(action.isEnabled()); + }, + handler); + button.setOnClickListener(v -> doAction(action)); + } + + private void doAction(Action action) { + try { + action.getIntent().send(); + } catch (CanceledException e) { + throw new RuntimeException(e); + } + } + + private void doResize(@Nullable Runnable operation) { + // If we're resizing on the right side of the screen, there is an implicit move operation + // necessary. The WindowManager does not sync the move and resize operations, so serious jank + // would occur. To fix this, instead of resizing the window, we create a new one and destroy + // the old one. There is a short delay before destroying the old view to ensure the new one has + // had time to draw. + ViewHolder oldViewHolder = viewHolder; + if (isDrawingFromRight()) { + viewHolder = new ViewHolder(oldViewHolder.getRoot().getContext()); + update(); + viewHolder + .getPrimaryButton() + .setDisplayedChild(oldViewHolder.getPrimaryButton().getDisplayedChild()); + viewHolder.getPrimaryText().setText(oldViewHolder.getPrimaryText().getText()); + } + + if (operation != null) { + operation.run(); + } + + if (isDrawingFromRight()) { + swapViewHolders(oldViewHolder); + } + } + + private void swapViewHolders(ViewHolder oldViewHolder) { + oldViewHolder.getShadowProvider().setVisibility(View.GONE); + ViewGroup root = viewHolder.getRoot(); + windowManager.addView(root, windowParams); + root.getViewTreeObserver() + .addOnPreDrawListener( + new OnPreDrawListener() { + @Override + public boolean onPreDraw() { + root.getViewTreeObserver().removeOnPreDrawListener(this); + // Wait a bit before removing the old view; make sure the new one has drawn over it. + handler.postDelayed( + () -> windowManager.removeView(oldViewHolder.getRoot()), + WINDOW_REDRAW_DELAY_MILLIS); + return true; + } + }); + } + + private void startCollapse(@CollapseEnd int collapseEndAction) { + View expandedView = viewHolder.getExpandedView(); + if (expandedView.getVisibility() != View.VISIBLE || collapseAnimation != null) { + // Drawer is already collapsed or animation is running. + return; + } + + overrideGravity = isDrawingFromRight() ? Gravity.RIGHT : Gravity.LEFT; + setFocused(false); + collapseAnimation = + expandedView + .animate() + .translationX(isDrawingFromRight() ? expandedView.getWidth() : -expandedView.getWidth()) + .setInterpolator(new FastOutLinearInInterpolator()) + .withEndAction( + () -> { + collapseAnimation = null; + expanded = false; + + if (textShowing) { + // Will do resize once the text is done. + return; + } + + // Hide the drawer and resize if possible. + viewHolder.setDrawerVisibility(View.INVISIBLE); + if (!viewHolder.isMoving() || !isDrawingFromRight()) { + doResize(() -> viewHolder.setDrawerVisibility(View.GONE)); + } + + // If this collapse was to come before a hide, do it now. + if (collapseEndAction == CollapseEnd.HIDE) { + hide(); + } + + // Resume normal gravity after any resizing is done. + handler.postDelayed( + () -> { + overrideGravity = null; + if (!viewHolder.isMoving()) { + viewHolder.undoGravityOverride(); + } + }, + // Need to wait twice as long for resize and layout + WINDOW_REDRAW_DELAY_MILLIS * 2); + }); + } + + private boolean isDrawingFromRight() { + return (windowParams.gravity & Gravity.RIGHT) == Gravity.RIGHT; + } + + private void setFocused(boolean focused) { + if (focused) { + windowParams.flags &= ~LayoutParams.FLAG_NOT_FOCUSABLE; + } else { + windowParams.flags |= LayoutParams.FLAG_NOT_FOCUSABLE; + } + windowManager.updateViewLayout(getRootView(), windowParams); + } + + private class ViewHolder { + + public static final int CHILD_INDEX_ICON = 0; + public static final int CHILD_INDEX_TEXT = 1; + + private final MoveHandler moveHandler; + private final WindowRoot root; + private final ViewAnimator primaryButton; + private final ImageView primaryIcon; + private final TextView primaryText; + + private final CheckableImageButton firstButton; + private final CheckableImageButton secondButton; + private final CheckableImageButton thirdButton; + private final View expandedView; + private final View shadowProvider; + + public ViewHolder(Context context) { + // Window root is not in the layout file so that the inflater has a view to inflate into + this.root = new WindowRoot(context); + LayoutInflater inflater = LayoutInflater.from(root.getContext()); + View contentView = inflater.inflate(R.layout.bubble_base, root, true); + expandedView = contentView.findViewById(R.id.bubble_expanded_layout); + primaryButton = contentView.findViewById(R.id.bubble_button_primary); + primaryIcon = contentView.findViewById(R.id.bubble_icon_primary); + primaryText = contentView.findViewById(R.id.bubble_text); + shadowProvider = contentView.findViewById(R.id.bubble_drawer_shadow_provider); + + firstButton = contentView.findViewById(R.id.bubble_icon_first); + secondButton = contentView.findViewById(R.id.bubble_icon_second); + thirdButton = contentView.findViewById(R.id.bubble_icon_third); + + root.setOnBackPressedListener( + () -> { + if (isShowing && expanded) { + startCollapse(CollapseEnd.NOTHING); + return true; + } + return false; + }); + root.setOnTouchListener( + (v, event) -> { + if (expanded && event.getActionMasked() == MotionEvent.ACTION_OUTSIDE) { + startCollapse(CollapseEnd.NOTHING); + return true; + } + return false; + }); + expandedView + .getViewTreeObserver() + .addOnDrawListener( + () -> { + int translationX = (int) expandedView.getTranslationX(); + int parentOffset = + ((MarginLayoutParams) ((ViewGroup) expandedView.getParent()).getLayoutParams()) + .leftMargin; + if (isDrawingFromRight()) { + int maxLeft = + shadowProvider.getRight() + - context.getResources().getDimensionPixelSize(R.dimen.bubble_size); + shadowProvider.setLeft( + Math.min(maxLeft, expandedView.getLeft() + translationX + parentOffset)); + } else { + int minRight = + shadowProvider.getLeft() + + context.getResources().getDimensionPixelSize(R.dimen.bubble_size); + shadowProvider.setRight( + Math.max(minRight, expandedView.getRight() + translationX + parentOffset)); + } + }); + moveHandler = new MoveHandler(primaryButton, Bubble.this); + } + + public ViewGroup getRoot() { + return root; + } + + public ViewAnimator getPrimaryButton() { + return primaryButton; + } + + public ImageView getPrimaryIcon() { + return primaryIcon; + } + + public TextView getPrimaryText() { + return primaryText; + } + + public CheckableImageButton getFirstButton() { + return firstButton; + } + + public CheckableImageButton getSecondButton() { + return secondButton; + } + + public CheckableImageButton getThirdButton() { + return thirdButton; + } + + public View getExpandedView() { + return expandedView; + } + + public View getShadowProvider() { + return shadowProvider; + } + + public void setDrawerVisibility(int visibility) { + expandedView.setVisibility(visibility); + shadowProvider.setVisibility(visibility); + } + + public boolean isMoving() { + return moveHandler.isMoving(); + } + + public void undoGravityOverride() { + moveHandler.undoGravityOverride(); + } + } +} diff --git a/java/com/android/dialershared/bubble/BubbleInfo.java b/java/com/android/dialershared/bubble/BubbleInfo.java new file mode 100644 index 0000000000000000000000000000000000000000..eb9abd0593eef28eafd71356e3585d08caae6df8 --- /dev/null +++ b/java/com/android/dialershared/bubble/BubbleInfo.java @@ -0,0 +1,123 @@ +/* + * Copyright (C) 2017 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License + */ + +package com.android.dialershared.bubble; + +import android.app.PendingIntent; +import android.graphics.drawable.Icon; +import android.support.annotation.ColorInt; +import android.support.annotation.NonNull; +import android.support.annotation.Px; +import com.google.auto.value.AutoValue; +import java.util.Collections; +import java.util.List; + +/** Info for displaying a {@link Bubble} */ +@AutoValue +public abstract class BubbleInfo { + @ColorInt + public abstract int getPrimaryColor(); + + @NonNull + public abstract Icon getPrimaryIcon(); + + @NonNull + public abstract PendingIntent getPrimaryIntent(); + + @Px + public abstract int getStartingYPosition(); + + @NonNull + public abstract List getActions(); + + public static Builder builder() { + return new AutoValue_BubbleInfo.Builder().setActions(Collections.emptyList()); + } + + public static Builder from(@NonNull BubbleInfo bubbleInfo) { + return builder() + .setPrimaryIntent(bubbleInfo.getPrimaryIntent()) + .setPrimaryColor(bubbleInfo.getPrimaryColor()) + .setPrimaryIcon(bubbleInfo.getPrimaryIcon()) + .setStartingYPosition(bubbleInfo.getStartingYPosition()) + .setActions(bubbleInfo.getActions()); + } + + /** Builder for {@link BubbleInfo} */ + @AutoValue.Builder + public abstract static class Builder { + + public abstract Builder setPrimaryColor(@ColorInt int primaryColor); + + public abstract Builder setPrimaryIcon(@NonNull Icon primaryIcon); + + public abstract Builder setPrimaryIntent(@NonNull PendingIntent primaryIntent); + + public abstract Builder setStartingYPosition(@Px int startingYPosition); + + public abstract Builder setActions(List actions); + + public abstract BubbleInfo build(); + } + + /** Represents actions to be shown in the bubble when expanded */ + @AutoValue + public abstract static class Action { + + @NonNull + public abstract Icon getIcon(); + + @NonNull + public abstract CharSequence getName(); + + @NonNull + public abstract PendingIntent getIntent(); + + public abstract boolean isEnabled(); + + public abstract boolean isChecked(); + + public static Builder builder() { + return new AutoValue_BubbleInfo_Action.Builder().setEnabled(true).setChecked(false); + } + + public static Builder from(@NonNull Action action) { + return builder() + .setIntent(action.getIntent()) + .setChecked(action.isChecked()) + .setEnabled(action.isEnabled()) + .setName(action.getName()) + .setIcon(action.getIcon()); + } + + /** Builder for {@link Action} */ + @AutoValue.Builder + public abstract static class Builder { + + public abstract Builder setIcon(@NonNull Icon icon); + + public abstract Builder setName(@NonNull CharSequence name); + + public abstract Builder setIntent(@NonNull PendingIntent intent); + + public abstract Builder setEnabled(boolean enabled); + + public abstract Builder setChecked(boolean checked); + + public abstract Action build(); + } + } +} diff --git a/java/com/android/dialershared/bubble/ChangeOnScreenBounds.java b/java/com/android/dialershared/bubble/ChangeOnScreenBounds.java new file mode 100644 index 0000000000000000000000000000000000000000..4da6a3561b39b96a634ccbf254761a5f00a604ae --- /dev/null +++ b/java/com/android/dialershared/bubble/ChangeOnScreenBounds.java @@ -0,0 +1,166 @@ +/* + * Copyright (C) 2017 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License + */ + +package com.android.dialershared.bubble; + +import android.animation.Animator; +import android.animation.AnimatorSet; +import android.animation.ObjectAnimator; +import android.graphics.Path; +import android.graphics.PointF; +import android.graphics.Rect; +import android.transition.Transition; +import android.transition.TransitionValues; +import android.util.Property; +import android.view.View; +import android.view.ViewGroup; + +/** Similar to {@link android.transition.ChangeBounds ChangeBounds} but works across windows */ +public class ChangeOnScreenBounds extends Transition { + + private static final String PROPNAME_BOUNDS = "bubble:changeScreenBounds:bounds"; + private static final String PROPNAME_SCREEN_X = "bubble:changeScreenBounds:screenX"; + private static final String PROPNAME_SCREEN_Y = "bubble:changeScreenBounds:screenY"; + + private static final Property TOP_LEFT_PROPERTY = + new Property(PointF.class, "topLeft") { + @Override + public void set(ViewBounds viewBounds, PointF topLeft) { + viewBounds.setTopLeft(topLeft); + } + + @Override + public PointF get(ViewBounds viewBounds) { + return null; + } + }; + + private static final Property BOTTOM_RIGHT_PROPERTY = + new Property(PointF.class, "bottomRight") { + @Override + public void set(ViewBounds viewBounds, PointF bottomRight) { + viewBounds.setBottomRight(bottomRight); + } + + @Override + public PointF get(ViewBounds viewBounds) { + return null; + } + }; + private final int[] tempLocation = new int[2]; + + @Override + public void captureStartValues(TransitionValues transitionValues) { + captureValues(transitionValues); + } + + @Override + public void captureEndValues(TransitionValues transitionValues) { + captureValues(transitionValues); + } + + private void captureValues(TransitionValues values) { + View view = values.view; + + if (view.isLaidOut() || view.getWidth() != 0 || view.getHeight() != 0) { + values.values.put( + PROPNAME_BOUNDS, + new Rect(view.getLeft(), view.getTop(), view.getRight(), view.getBottom())); + values.view.getLocationOnScreen(tempLocation); + values.values.put(PROPNAME_SCREEN_X, tempLocation[0]); + values.values.put(PROPNAME_SCREEN_Y, tempLocation[1]); + } + } + + @Override + public Animator createAnimator( + ViewGroup sceneRoot, TransitionValues startValues, TransitionValues endValues) { + Rect startBounds = (Rect) startValues.values.get(PROPNAME_BOUNDS); + + // Offset the startBounds by the difference in screen position + int startScreenX = (Integer) startValues.values.get(PROPNAME_SCREEN_X); + int startScreenY = (Integer) startValues.values.get(PROPNAME_SCREEN_Y); + int endScreenX = (Integer) endValues.values.get(PROPNAME_SCREEN_X); + int endScreenY = (Integer) endValues.values.get(PROPNAME_SCREEN_Y); + startBounds.offset(startScreenX - endScreenX, startScreenY - endScreenY); + + Rect endBounds = (Rect) endValues.values.get(PROPNAME_BOUNDS); + final int startLeft = startBounds.left; + final int endLeft = endBounds.left; + final int startTop = startBounds.top; + final int endTop = endBounds.top; + final int startRight = startBounds.right; + final int endRight = endBounds.right; + final int startBottom = startBounds.bottom; + final int endBottom = endBounds.bottom; + ViewBounds viewBounds = new ViewBounds(endValues.view); + viewBounds.setTopLeft(new PointF(startLeft, startTop)); + viewBounds.setBottomRight(new PointF(startRight, startBottom)); + + // Animate the top left and bottom right corners along a path + Path topLeftPath = getPathMotion().getPath(startLeft, startTop, endLeft, endTop); + ObjectAnimator topLeftAnimator = + ObjectAnimator.ofObject(viewBounds, TOP_LEFT_PROPERTY, null, topLeftPath); + + Path bottomRightPath = getPathMotion().getPath(startRight, startBottom, endRight, endBottom); + ObjectAnimator bottomRightAnimator = + ObjectAnimator.ofObject(viewBounds, BOTTOM_RIGHT_PROPERTY, null, bottomRightPath); + AnimatorSet set = new AnimatorSet(); + set.playTogether(topLeftAnimator, bottomRightAnimator); + return set; + } + + private static class ViewBounds { + private int left; + private int top; + private int right; + private int bottom; + private final View view; + private int topLeftCalls; + private int bottomRightCalls; + + public ViewBounds(View view) { + this.view = view; + } + + public void setTopLeft(PointF topLeft) { + left = Math.round(topLeft.x); + top = Math.round(topLeft.y); + topLeftCalls++; + if (topLeftCalls == bottomRightCalls) { + updateLeftTopRightBottom(); + } + } + + public void setBottomRight(PointF bottomRight) { + right = Math.round(bottomRight.x); + bottom = Math.round(bottomRight.y); + bottomRightCalls++; + if (topLeftCalls == bottomRightCalls) { + updateLeftTopRightBottom(); + } + } + + private void updateLeftTopRightBottom() { + view.setLeft(left); + view.setTop(top); + view.setRight(right); + view.setBottom(bottom); + topLeftCalls = 0; + bottomRightCalls = 0; + } + } +} diff --git a/java/com/android/dialershared/bubble/CheckableImageButton.java b/java/com/android/dialershared/bubble/CheckableImageButton.java new file mode 100644 index 0000000000000000000000000000000000000000..7a5a432a6d5ee70af593b30cdad905bd3368c42b --- /dev/null +++ b/java/com/android/dialershared/bubble/CheckableImageButton.java @@ -0,0 +1,101 @@ +/* + * Copyright (C) 2017 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License + */ + +package com.android.dialershared.bubble; + +import android.content.Context; +import android.support.v4.view.AccessibilityDelegateCompat; +import android.support.v4.view.ViewCompat; +import android.support.v4.view.accessibility.AccessibilityEventCompat; +import android.support.v4.view.accessibility.AccessibilityNodeInfoCompat; +import android.support.v7.widget.AppCompatImageButton; +import android.util.AttributeSet; +import android.view.View; +import android.view.accessibility.AccessibilityEvent; +import android.widget.Checkable; + +/** + * An {@link android.widget.ImageButton ImageButton} that implements {@link Checkable} and + * propagates the checkable state + */ +public class CheckableImageButton extends AppCompatImageButton implements Checkable { + + // Copied without modification from AppCompat library + + private static final int[] DRAWABLE_STATE_CHECKED = new int[] {android.R.attr.state_checked}; + + private boolean mChecked; + + public CheckableImageButton(Context context) { + this(context, null); + } + + public CheckableImageButton(Context context, AttributeSet attrs) { + this(context, attrs, android.R.attr.imageButtonStyle); + } + + public CheckableImageButton(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + + ViewCompat.setAccessibilityDelegate( + this, + new AccessibilityDelegateCompat() { + @Override + public void onInitializeAccessibilityEvent(View host, AccessibilityEvent event) { + super.onInitializeAccessibilityEvent(host, event); + event.setChecked(isChecked()); + } + + @Override + public void onInitializeAccessibilityNodeInfo( + View host, AccessibilityNodeInfoCompat info) { + super.onInitializeAccessibilityNodeInfo(host, info); + info.setCheckable(true); + info.setChecked(isChecked()); + } + }); + } + + @Override + public void setChecked(boolean checked) { + if (mChecked != checked) { + mChecked = checked; + refreshDrawableState(); + sendAccessibilityEvent(AccessibilityEventCompat.TYPE_WINDOW_CONTENT_CHANGED); + } + } + + @Override + public boolean isChecked() { + return mChecked; + } + + @Override + public void toggle() { + setChecked(!mChecked); + } + + @Override + public int[] onCreateDrawableState(int extraSpace) { + if (mChecked) { + return mergeDrawableStates( + super.onCreateDrawableState(extraSpace + DRAWABLE_STATE_CHECKED.length), + DRAWABLE_STATE_CHECKED); + } else { + return super.onCreateDrawableState(extraSpace); + } + } +} diff --git a/java/com/android/dialershared/bubble/MoveHandler.java b/java/com/android/dialershared/bubble/MoveHandler.java new file mode 100644 index 0000000000000000000000000000000000000000..bc6db64bc18f322f04425b6e8621b59ecec2418a --- /dev/null +++ b/java/com/android/dialershared/bubble/MoveHandler.java @@ -0,0 +1,264 @@ +/* + * Copyright (C) 2017 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License + */ + +package com.android.dialershared.bubble; + +import android.content.Context; +import android.graphics.Point; +import android.support.animation.FloatPropertyCompat; +import android.support.animation.SpringAnimation; +import android.support.animation.SpringForce; +import android.support.annotation.NonNull; +import android.support.v4.math.MathUtils; +import android.view.Gravity; +import android.view.MotionEvent; +import android.view.VelocityTracker; +import android.view.View; +import android.view.View.OnTouchListener; +import android.view.ViewConfiguration; +import android.view.WindowManager; +import android.view.WindowManager.LayoutParams; +import android.widget.Scroller; + +/** Handles touches and manages moving the bubble in response */ +class MoveHandler implements OnTouchListener { + + // Amount the ViewConfiguration's minFlingVelocity will be scaled by for our own minVelocity + private static final int MIN_FLING_VELOCITY_FACTOR = 8; + // The friction multiplier to control how slippery the bubble is when flung + private static final float SCROLL_FRICTION_MULTIPLIER = 4f; + + private final Context context; + private final WindowManager windowManager; + private final Bubble bubble; + private final int minX; + private final int minY; + private final int maxX; + private final int maxY; + private final int bubbleSize; + private final int shadowPaddingSize; + private final float touchSlopSquared; + + private boolean isMoving; + private float firstX; + private float firstY; + + private SpringAnimation moveXAnimation; + private SpringAnimation moveYAnimation; + private VelocityTracker velocityTracker; + private Scroller scroller; + + // Handles the left/right gravity conversion and centering + private final FloatPropertyCompat xProperty = + new FloatPropertyCompat("xProperty") { + @Override + public float getValue(LayoutParams windowParams) { + int realX = windowParams.x; + realX = realX + bubbleSize / 2; + realX = realX + shadowPaddingSize; + if (relativeToRight(windowParams)) { + int displayWidth = context.getResources().getDisplayMetrics().widthPixels; + realX = displayWidth - realX; + } + return MathUtils.clamp(realX, minX, maxX); + } + + @Override + public void setValue(LayoutParams windowParams, float value) { + boolean wasOnRight = (windowParams.gravity & Gravity.RIGHT) == Gravity.RIGHT; + int displayWidth = context.getResources().getDisplayMetrics().widthPixels; + boolean onRight; + Integer gravityOverride = bubble.getGravityOverride(); + if (gravityOverride == null) { + onRight = value > displayWidth / 2; + } else { + onRight = (gravityOverride & Gravity.RIGHT) == Gravity.RIGHT; + } + int centeringOffset = bubbleSize / 2 + shadowPaddingSize; + windowParams.x = + (int) (onRight ? (displayWidth - value - centeringOffset) : value - centeringOffset); + windowParams.gravity = Gravity.TOP | (onRight ? Gravity.RIGHT : Gravity.LEFT); + if (wasOnRight != onRight) { + bubble.onLeftRightSwitch(onRight); + } + if (bubble.isShowing()) { + windowManager.updateViewLayout(bubble.getRootView(), windowParams); + } + } + }; + + private final FloatPropertyCompat yProperty = + new FloatPropertyCompat("yProperty") { + @Override + public float getValue(LayoutParams object) { + return MathUtils.clamp(object.y + bubbleSize + shadowPaddingSize, minY, maxY); + } + + @Override + public void setValue(LayoutParams object, float value) { + object.y = (int) value - bubbleSize - shadowPaddingSize; + if (bubble.isShowing()) { + windowManager.updateViewLayout(bubble.getRootView(), object); + } + } + }; + + public MoveHandler(@NonNull View targetView, @NonNull Bubble bubble) { + this.bubble = bubble; + context = targetView.getContext(); + windowManager = context.getSystemService(WindowManager.class); + + bubbleSize = context.getResources().getDimensionPixelSize(R.dimen.bubble_size); + shadowPaddingSize = + context.getResources().getDimensionPixelOffset(R.dimen.bubble_shadow_padding_size); + minX = + context.getResources().getDimensionPixelOffset(R.dimen.bubble_safe_margin_x) + + bubbleSize / 2; + minY = + context.getResources().getDimensionPixelOffset(R.dimen.bubble_safe_margin_y) + + bubbleSize / 2; + maxX = context.getResources().getDisplayMetrics().widthPixels - minX; + maxY = context.getResources().getDisplayMetrics().heightPixels - minY; + + // Squared because it will be compared against the square of the touch delta. This is more + // efficient than needing to take a square root. + touchSlopSquared = (float) Math.pow(ViewConfiguration.get(context).getScaledTouchSlop(), 2); + + targetView.setOnTouchListener(this); + } + + public boolean isMoving() { + return isMoving; + } + + public void undoGravityOverride() { + LayoutParams windowParams = bubble.getWindowParams(); + xProperty.setValue(windowParams, xProperty.getValue(windowParams)); + } + + @Override + public boolean onTouch(View v, MotionEvent event) { + float eventX = event.getRawX(); + float eventY = event.getRawY(); + switch (event.getActionMasked()) { + case MotionEvent.ACTION_DOWN: + firstX = eventX; + firstY = eventY; + velocityTracker = VelocityTracker.obtain(); + break; + case MotionEvent.ACTION_MOVE: + if (isMoving || hasExceededTouchSlop(event)) { + if (!isMoving) { + isMoving = true; + bubble.onMoveStart(); + } + + if (moveXAnimation == null) { + moveXAnimation = new SpringAnimation(bubble.getWindowParams(), xProperty); + moveXAnimation.setSpring(new SpringForce()); + moveXAnimation.getSpring().setDampingRatio(SpringForce.DAMPING_RATIO_NO_BOUNCY); + } + if (moveYAnimation == null) { + moveYAnimation = new SpringAnimation(bubble.getWindowParams(), yProperty); + moveYAnimation.setSpring(new SpringForce()); + moveYAnimation.getSpring().setDampingRatio(SpringForce.DAMPING_RATIO_NO_BOUNCY); + } + + moveXAnimation.animateToFinalPosition(MathUtils.clamp(eventX, minX, maxX)); + moveYAnimation.animateToFinalPosition(MathUtils.clamp(eventY, minY, maxY)); + } + + velocityTracker.addMovement(event); + break; + case MotionEvent.ACTION_UP: + if (isMoving) { + ViewConfiguration viewConfiguration = ViewConfiguration.get(context); + velocityTracker.computeCurrentVelocity( + 1000, viewConfiguration.getScaledMaximumFlingVelocity()); + float xVelocity = velocityTracker.getXVelocity(); + float yVelocity = velocityTracker.getYVelocity(); + boolean isFling = isFling(xVelocity, yVelocity); + + if (isFling) { + Point target = + findTarget( + xVelocity, + yVelocity, + (int) xProperty.getValue(bubble.getWindowParams()), + (int) yProperty.getValue(bubble.getWindowParams())); + + moveXAnimation.animateToFinalPosition(target.x); + moveYAnimation.animateToFinalPosition(target.y); + } else { + snapX(); + } + isMoving = false; + bubble.onMoveFinish(); + } else { + v.performClick(); + bubble.primaryButtonClick(); + } + break; + } + return true; + } + + private Point findTarget(float xVelocity, float yVelocity, int startX, int startY) { + if (scroller == null) { + scroller = new Scroller(context); + scroller.setFriction(ViewConfiguration.getScrollFriction() * SCROLL_FRICTION_MULTIPLIER); + } + + // Find where a fling would end vertically + scroller.fling(startX, startY, (int) xVelocity, (int) yVelocity, minX, maxX, minY, maxY); + int targetY = scroller.getFinalY(); + scroller.abortAnimation(); + + // If the x component of the velocity is above the minimum fling velocity, use velocity to + // determine edge. Otherwise use its starting position + boolean pullRight = isFling(xVelocity, 0) ? xVelocity > 0 : isOnRightHalf(startX); + return new Point(pullRight ? maxX : minX, targetY); + } + + private boolean isFling(float xVelocity, float yVelocity) { + int minFlingVelocity = + ViewConfiguration.get(context).getScaledMinimumFlingVelocity() * MIN_FLING_VELOCITY_FACTOR; + return getMagnitudeSquared(xVelocity, yVelocity) > minFlingVelocity * minFlingVelocity; + } + + private boolean isOnRightHalf(float currentX) { + return currentX > (minX + maxX) / 2; + } + + private void snapX() { + // Check if x value is closer to min or max + boolean pullRight = isOnRightHalf(xProperty.getValue(bubble.getWindowParams())); + moveXAnimation.animateToFinalPosition(pullRight ? maxX : minX); + } + + private boolean relativeToRight(LayoutParams windowParams) { + return (windowParams.gravity & Gravity.RIGHT) == Gravity.RIGHT; + } + + private boolean hasExceededTouchSlop(MotionEvent event) { + return getMagnitudeSquared(event.getRawX() - firstX, event.getRawY() - firstY) + > touchSlopSquared; + } + + private float getMagnitudeSquared(float deltaX, float deltaY) { + return deltaX * deltaX + deltaY * deltaY; + } +} diff --git a/java/com/android/dialershared/bubble/WindowRoot.java b/java/com/android/dialershared/bubble/WindowRoot.java new file mode 100644 index 0000000000000000000000000000000000000000..2c176662e4231a87e3156b2b97d404dd9820918f --- /dev/null +++ b/java/com/android/dialershared/bubble/WindowRoot.java @@ -0,0 +1,55 @@ +/* + * Copyright (C) 2017 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License + */ + +package com.android.dialershared.bubble; + +import android.content.Context; +import android.support.annotation.NonNull; +import android.view.KeyEvent; +import android.widget.FrameLayout; + +/** + * ViewGroup that handles some overlay window concerns. Allows back button events to be listened for + * via an interface. + */ +public class WindowRoot extends FrameLayout { + + private OnBackPressedListener backPressedListener; + + /** Callback for when the back button is pressed while this window is in focus */ + public interface OnBackPressedListener { + boolean onBackPressed(); + } + + public WindowRoot(@NonNull Context context) { + super(context); + } + + public void setOnBackPressedListener(OnBackPressedListener listener) { + backPressedListener = listener; + } + + @Override + public boolean dispatchKeyEvent(KeyEvent event) { + if (event.getKeyCode() == KeyEvent.KEYCODE_BACK && backPressedListener != null) { + if (event.getAction() == KeyEvent.ACTION_UP) { + return backPressedListener.onBackPressed(); + } + return true; + } + return super.dispatchKeyEvent(event); + } +} diff --git a/java/com/android/dialershared/bubble/g3doc/INTEGRATION.md b/java/com/android/dialershared/bubble/g3doc/INTEGRATION.md new file mode 100644 index 0000000000000000000000000000000000000000..a13a6053bd2df901b45585f40b724455c66aff17 --- /dev/null +++ b/java/com/android/dialershared/bubble/g3doc/INTEGRATION.md @@ -0,0 +1,69 @@ +# Floating Bubble Integration + +go/bubble-integration + +Author: keyboardr@ + +Last Updated: 2017-06-06 + +Floating bubbles provide a lightweight means of providing interactive UI while +the user is away from the app. This document details the steps necessary to +integrate these bubbles into your app. + +[TOC] + +![Floating bubble](images/bubble_collapsed.png){height=400} + +## Ensure Bubbles can be shown + +Add the `android.permission.SYSTEM_ALERT_WINDOW` permission to your manifest. +Before you show the bubble, call `Bubble.canShowBubbles(Context)` to see if the +user has granted you permission. If not, you can start an Activity from +`Bubble.getRequestPermissionIntent(Context)` to navigate the user to the system +settings to enable drawing over other apps. This is more than just a simple +runtime permission; the user must explicitly allow you to draw over other apps +via this system setting. System apps may have this allowed by default, but be +sure to test. + +## Create your initial `BubbleInfo` + +Use `BubbleInfo.builder()` to populate a `BubbleInfo` with your color, main +icon, main Intent (which should navigate back to your app), starting Y position, +and a list of `Actions` to put in the drawer. Each `Action` will define its +icon, user-displayable name (used for content description), Intent to perform +when clicked, whether it is enabled (optional, default true), and whether it is +checked (optional, default false). + +![Floating bubble expanded](images/bubble_expanded.png){height=400} + +## Create, show, and hide the Bubble + +Create the bubble using `Bubble.createBubble(Context, BubbleInfo)`. The `show()` +method is safe to call at any time. If the Bubble is already showing, it is a +no-op. `hide()` may also be called at any time and will collapse the drawer +before hiding if already open. While `show()` will show immediately, `hide()` +may need to wait for other operations or animations before the bubble is hidden. +It is unlikely you will need to keep track of this, however. The bubble will be +hidden at its next opportunity, and `hide()` will not block. + +![Floating bubble with state](images/bubble_state.png){height=400} + +## Update the Bubble's state + +Call `Bubble.setBubbleInfo(BubbleInfo)` to update all displayed state. +`BubbleInfo`s are immutable, so to make a new one using an existing +`BubbleInfo`, use `BubbleInfo.from(BubbleInfo)` to get a `Builder` with +prepopulated info. If only the `Action` state has changed, it is more efficient +to just call `Bubble.updateActions(List)` + +![Floating bubble with text](images/bubble_text.png){height=400} + +## Show text + +To temporarily replace the icon with a textual message, call +`Bubble.showText(CharSequence)`. The text will be displayed for several seconds +before transitioning back to the primary icon. The drawer will be closed if open +and cannot be reopened while the text is displayed. Any calls to `hide()` will +be deferred until after the text is done being displayed, so if you wish to show +an ending message of some sort you may call `hide()` immediately after +`showText(CharSequence)`. diff --git a/java/com/android/dialershared/bubble/g3doc/images/bubble_collapsed.png b/java/com/android/dialershared/bubble/g3doc/images/bubble_collapsed.png new file mode 100644 index 0000000000000000000000000000000000000000..7ecc0675b3adc3464f2d0cc8b00a18509b2cdf65 Binary files /dev/null and b/java/com/android/dialershared/bubble/g3doc/images/bubble_collapsed.png differ diff --git a/java/com/android/dialershared/bubble/g3doc/images/bubble_expanded.png b/java/com/android/dialershared/bubble/g3doc/images/bubble_expanded.png new file mode 100644 index 0000000000000000000000000000000000000000..cd477f334c1483de48726d1d3811fe1ef8247250 Binary files /dev/null and b/java/com/android/dialershared/bubble/g3doc/images/bubble_expanded.png differ diff --git a/java/com/android/dialershared/bubble/g3doc/images/bubble_state.png b/java/com/android/dialershared/bubble/g3doc/images/bubble_state.png new file mode 100644 index 0000000000000000000000000000000000000000..21ca8a8b58200aff246e33d83cb19140b41f533b Binary files /dev/null and b/java/com/android/dialershared/bubble/g3doc/images/bubble_state.png differ diff --git a/java/com/android/dialershared/bubble/g3doc/images/bubble_text.png b/java/com/android/dialershared/bubble/g3doc/images/bubble_text.png new file mode 100644 index 0000000000000000000000000000000000000000..9c476dca6e78c6cbbd13b35b1f27af17c2056d8b Binary files /dev/null and b/java/com/android/dialershared/bubble/g3doc/images/bubble_text.png differ diff --git a/java/com/android/contacts/common/res/drawable/ic_call_and_share.xml b/java/com/android/dialershared/bubble/res/color/bubble_checkable_mask.xml similarity index 66% rename from java/com/android/contacts/common/res/drawable/ic_call_and_share.xml rename to java/com/android/dialershared/bubble/res/color/bubble_checkable_mask.xml index be0cdd3585353f27f2fc9275904212f63f34e746..f9416ab57622f312946806b22df9df12dacbfa54 100644 --- a/java/com/android/contacts/common/res/drawable/ic_call_and_share.xml +++ b/java/com/android/dialershared/bubble/res/color/bubble_checkable_mask.xml @@ -1,6 +1,6 @@ - \ No newline at end of file + + + + diff --git a/java/com/android/dialershared/bubble/res/color/bubble_icon_tint_states.xml b/java/com/android/dialershared/bubble/res/color/bubble_icon_tint_states.xml new file mode 100644 index 0000000000000000000000000000000000000000..33ca1fdc5294e46661ad00f13310ad379206494e --- /dev/null +++ b/java/com/android/dialershared/bubble/res/color/bubble_icon_tint_states.xml @@ -0,0 +1,21 @@ + + + + + + + diff --git a/java/com/android/dialershared/bubble/res/drawable/bubble_background_pill_ltr.xml b/java/com/android/dialershared/bubble/res/drawable/bubble_background_pill_ltr.xml new file mode 100644 index 0000000000000000000000000000000000000000..77c813a75eb1479c6878ed5c33efb0121390afa6 --- /dev/null +++ b/java/com/android/dialershared/bubble/res/drawable/bubble_background_pill_ltr.xml @@ -0,0 +1,23 @@ + + + + + + + diff --git a/java/com/android/dialershared/bubble/res/drawable/bubble_background_pill_rtl.xml b/java/com/android/dialershared/bubble/res/drawable/bubble_background_pill_rtl.xml new file mode 100644 index 0000000000000000000000000000000000000000..9e25421549dd6e419102ed32b8b20a1be64b219f --- /dev/null +++ b/java/com/android/dialershared/bubble/res/drawable/bubble_background_pill_rtl.xml @@ -0,0 +1,23 @@ + + + + + + + diff --git a/java/com/android/dialer/notification/res/values/ids.xml b/java/com/android/dialershared/bubble/res/drawable/bubble_ripple_checkable_circle.xml similarity index 58% rename from java/com/android/dialer/notification/res/values/ids.xml rename to java/com/android/dialershared/bubble/res/drawable/bubble_ripple_checkable_circle.xml index c965f319d89b5a676ceb530e9884d18b6e3c3056..85e0b24f3470be70efcc998d1036d5009337f686 100644 --- a/java/com/android/dialer/notification/res/values/ids.xml +++ b/java/com/android/dialershared/bubble/res/drawable/bubble_ripple_checkable_circle.xml @@ -15,13 +15,16 @@ ~ limitations under the License --> - - - - - - - - - - + + + + + + + + + + + + diff --git a/java/com/android/contacts/common/res/drawable/ic_search_video_call.xml b/java/com/android/dialershared/bubble/res/drawable/bubble_ripple_circle.xml similarity index 65% rename from java/com/android/contacts/common/res/drawable/ic_search_video_call.xml rename to java/com/android/dialershared/bubble/res/drawable/bubble_ripple_circle.xml index 0fe0367e1996672dc960be2f278453bb44d70c47..8d5cf0bb53fb26301caca9bd05e02b4cdc244515 100644 --- a/java/com/android/contacts/common/res/drawable/ic_search_video_call.xml +++ b/java/com/android/dialershared/bubble/res/drawable/bubble_ripple_circle.xml @@ -1,6 +1,6 @@ - + + + + + + + + diff --git a/java/com/android/dialershared/bubble/res/layout/bubble_base.xml b/java/com/android/dialershared/bubble/res/layout/bubble_base.xml new file mode 100644 index 0000000000000000000000000000000000000000..76970f020452ca14e9a4bc5cbdc6dab31f5f2c9b --- /dev/null +++ b/java/com/android/dialershared/bubble/res/layout/bubble_base.xml @@ -0,0 +1,127 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/java/com/android/incallui/res/drawable/img_conference_automirrored.xml b/java/com/android/dialershared/bubble/res/values/colors.xml similarity index 76% rename from java/com/android/incallui/res/drawable/img_conference_automirrored.xml rename to java/com/android/dialershared/bubble/res/values/colors.xml index 78b2876bcd652f8c9920a38a0151271200eef8d7..97545faf3993ab4a15b6bf6f18a8587f71dd3bb3 100644 --- a/java/com/android/incallui/res/drawable/img_conference_automirrored.xml +++ b/java/com/android/dialershared/bubble/res/values/colors.xml @@ -1,7 +1,6 @@ - - \ No newline at end of file + + #33000000 + diff --git a/java/com/android/dialershared/bubble/res/values/values.xml b/java/com/android/dialershared/bubble/res/values/values.xml new file mode 100644 index 0000000000000000000000000000000000000000..f5816172deb7d41d930acc3f7ffd44d532171e4c --- /dev/null +++ b/java/com/android/dialershared/bubble/res/values/values.xml @@ -0,0 +1,25 @@ + + + + + 16dp + 64dp + 56dp + 16dp + 4dp + 16dp + diff --git a/java/com/android/incallui/AndroidManifest.xml b/java/com/android/incallui/AndroidManifest.xml index 8539bd0cf5f880f7e1fb0ba6d81adbafc36af07f..703e5b5091da51f5f61adcf07843f2e8c5dc4a0b 100644 --- a/java/com/android/incallui/AndroidManifest.xml +++ b/java/com/android/incallui/AndroidManifest.xml @@ -15,11 +15,11 @@ --> + package="com.android.incallui"> + android:minSdkVersion="23" + android:targetSdkVersion="26"/> + android:name="android.hardware.camera.any" + android:required="false"/> @@ -43,47 +43,49 @@ Set taskAffinity for application is not working because it will be merged and the result is that all activities here still have same taskAffinity as activities under dialer. --> - + + + android:directBootAware="true" + android:excludeFromRecents="true" + android:exported="false" + android:label="@string/phoneAppLabel" + android:launchMode="singleInstance" + android:name="com.android.incallui.InCallActivity" + android:resizeableActivity="true" + android:screenOrientation="nosensor" + android:taskAffinity="com.android.incallui" + android:theme="@style/Theme.InCallScreen"> + android:directBootAware="true" + android:excludeFromRecents="true" + android:exported="false" + android:label="@string/manageConferenceLabel" + android:launchMode="singleTask" + android:name="com.android.incallui.ManageConferenceActivity" + android:noHistory="true" + android:resizeableActivity="true" + android:taskAffinity="com.android.incallui" + android:theme="@style/Theme.InCallScreen.ManageConference"/> + android:directBootAware="true" + android:exported="true" + android:name="com.android.incallui.InCallServiceImpl" + android:permission="android.permission.BIND_INCALL_SERVICE"> + android:name="android.telecom.IN_CALL_SERVICE_UI" + android:value="true"/> + android:name="android.telecom.IN_CALL_SERVICE_RINGING" + android:value="false"/> + android:name="android.telecom.INCLUDE_EXTERNAL_CALLS" + android:value="true"/> @@ -97,23 +99,35 @@ excludeFromRecents="true" -> Don't show in "recent apps" screen --> + android:excludeFromRecents="true" + android:exported="false" + android:name="com.android.incallui.spam.SpamNotificationActivity" + android:noHistory="true" + android:taskAffinity="" + android:theme="@style/AfterCallNotificationTheme"> + + + android:exported="false" + android:name="com.android.incallui.spam.SpamNotificationService"/> + android:directBootAware="true" + android:exported="false" + android:name="com.android.incallui.NotificationBroadcastReceiver"/> + + diff --git a/java/com/android/incallui/AnswerScreenPresenter.java b/java/com/android/incallui/AnswerScreenPresenter.java index ca34aa6aa8b1096f62e20700f9dda9b3acabd6ab..d5304014500b60339b3ad450fb2cc4c61eda3c88 100644 --- a/java/com/android/incallui/AnswerScreenPresenter.java +++ b/java/com/android/incallui/AnswerScreenPresenter.java @@ -17,12 +17,14 @@ package com.android.incallui; import android.content.Context; +import android.os.SystemClock; import android.support.annotation.FloatRange; import android.support.annotation.NonNull; import android.support.v4.os.UserManagerCompat; import android.telecom.VideoProfile; import com.android.dialer.common.Assert; import com.android.dialer.common.LogUtil; +import com.android.dialer.common.concurrent.ThreadUtil; import com.android.dialer.logging.DialerImpression; import com.android.dialer.logging.Logger; import com.android.incallui.answer.protocol.AnswerScreen; @@ -36,11 +38,14 @@ import com.android.incallui.call.DialerCallListener; /** Manages changes for an incoming call screen. */ public class AnswerScreenPresenter implements AnswerScreenDelegate, DialerCall.CannedTextResponsesLoadedListener { + private static final int ACCEPT_REJECT_CALL_TIME_OUT_IN_MILLIS = 5000; + @NonNull private final Context context; @NonNull private final AnswerScreen answerScreen; @NonNull private final DialerCall call; + private long actionPerformedTimeMillis; - public AnswerScreenPresenter( + AnswerScreenPresenter( @NonNull Context context, @NonNull AnswerScreen answerScreen, @NonNull DialerCall call) { LogUtil.i("AnswerScreenPresenter.constructor", null); this.context = Assert.isNotNull(context); @@ -59,6 +64,13 @@ public class AnswerScreenPresenter } } + @Override + public boolean isActionTimeout() { + return actionPerformedTimeMillis != 0 + && SystemClock.elapsedRealtime() - actionPerformedTimeMillis + >= ACCEPT_REJECT_CALL_TIME_OUT_IN_MILLIS; + } + @Override public void onAnswerScreenUnready() { call.removeCannedTextResponsesLoadedListener(this); @@ -73,6 +85,7 @@ public class AnswerScreenPresenter public void onRejectCallWithMessage(String message) { call.reject(true /* rejectWithMessage */, message); onDismissDialog(); + addTimeoutCheck(); } @Override @@ -100,6 +113,7 @@ public class AnswerScreenPresenter call.answer(); } } + addTimeoutCheck(); } @Override @@ -114,6 +128,7 @@ public class AnswerScreenPresenter } else { call.reject(false /* rejectWithMessage */, null); } + addTimeoutCheck(); } @Override @@ -124,9 +139,27 @@ public class AnswerScreenPresenter LogUtil.i("AnswerScreenPresenter.onAnswerAndReleaseCall", "activeCall == null"); onAnswer(false); } else { + activeCall.setReleasedByAnsweringSecondCall(true); activeCall.addListener(new AnswerOnDisconnected(activeCall)); activeCall.disconnect(); } + addTimeoutCheck(); + } + + @Override + public void onAnswerAndReleaseButtonDisabled() { + DialerCall activeCall = CallList.getInstance().getActiveCall(); + if (activeCall != null) { + activeCall.increaseSecondCallWithoutAnswerAndReleasedButtonTimes(); + } + } + + @Override + public void onAnswerAndReleaseButtonEnabled() { + DialerCall activeCall = CallList.getInstance().getActiveCall(); + if (activeCall != null) { + activeCall.increaseAnswerAndReleaseButtonDisplayedTimes(); + } } @Override @@ -148,7 +181,7 @@ public class AnswerScreenPresenter private final DialerCall disconnectingCall; - public AnswerOnDisconnected(DialerCall disconnectingCall) { + AnswerOnDisconnected(DialerCall disconnectingCall) { this.disconnectingCall = disconnectingCall; } @@ -183,10 +216,32 @@ public class AnswerScreenPresenter @Override public void onInternationalCallOnWifi() {} + + @Override + public void onEnrichedCallSessionUpdate() {} } private boolean isSmsResponseAllowed(DialerCall call) { return UserManagerCompat.isUserUnlocked(context) && call.can(android.telecom.Call.Details.CAPABILITY_RESPOND_VIA_TEXT); } + + private void addTimeoutCheck() { + actionPerformedTimeMillis = SystemClock.elapsedRealtime(); + if (answerScreen.getAnswerScreenFragment().isVisible()) { + ThreadUtil.postDelayedOnUiThread( + () -> { + if (!answerScreen.getAnswerScreenFragment().isVisible()) { + LogUtil.d( + "AnswerScreenPresenter.addTimeoutCheck", + "accept/reject call timed out, do nothing"); + return; + } + LogUtil.i("AnswerScreenPresenter.addTimeoutCheck", "accept/reject call timed out"); + // Force re-evaluate which fragment to show. + InCallPresenter.getInstance().refreshUi(); + }, + ACCEPT_REJECT_CALL_TIME_OUT_IN_MILLIS); + } + } } diff --git a/java/com/android/incallui/AnswerScreenPresenterStub.java b/java/com/android/incallui/AnswerScreenPresenterStub.java index 7bff3299afd88aa7294bd6881224e78b2c68e007..2f9e608189cad929c68d6f31330ba43013de83d4 100644 --- a/java/com/android/incallui/AnswerScreenPresenterStub.java +++ b/java/com/android/incallui/AnswerScreenPresenterStub.java @@ -42,6 +42,17 @@ public class AnswerScreenPresenterStub implements AnswerScreenDelegate { @Override public void onAnswerAndReleaseCall() {} + @Override + public void onAnswerAndReleaseButtonEnabled() {} + + @Override + public void onAnswerAndReleaseButtonDisabled() {} + @Override public void updateWindowBackgroundColor(@FloatRange(from = -1f, to = 1.0f) float progress) {} + + @Override + public boolean isActionTimeout() { + return false; + } } diff --git a/java/com/android/incallui/AudioRouteSelectorActivity.java b/java/com/android/incallui/AudioRouteSelectorActivity.java new file mode 100644 index 0000000000000000000000000000000000000000..dfd4d1abf1ecaef981bcd6fbb0aad248fce538d0 --- /dev/null +++ b/java/com/android/incallui/AudioRouteSelectorActivity.java @@ -0,0 +1,47 @@ +/* + * Copyright (C) 2017 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License + */ + +package com.android.incallui; + +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.support.v4.app.FragmentActivity; +import com.android.incallui.audiomode.AudioModeProvider; +import com.android.incallui.audioroute.AudioRouteSelectorDialogFragment; +import com.android.incallui.audioroute.AudioRouteSelectorDialogFragment.AudioRouteSelectorPresenter; +import com.android.incallui.call.TelecomAdapter; + +/** Simple activity that just shows the audio route selector fragment */ +public class AudioRouteSelectorActivity extends FragmentActivity + implements AudioRouteSelectorPresenter { + + @Override + protected void onCreate(@Nullable Bundle bundle) { + super.onCreate(bundle); + AudioRouteSelectorDialogFragment.newInstance(AudioModeProvider.getInstance().getAudioState()) + .show(getSupportFragmentManager(), null); + } + + @Override + public void onAudioRouteSelected(int audioRoute) { + TelecomAdapter.getInstance().setAudioRoute(audioRoute); + } + + @Override + public void onAudioRouteSelectorDismiss() { + finish(); + } +} diff --git a/java/com/android/incallui/CallButtonPresenter.java b/java/com/android/incallui/CallButtonPresenter.java index b0c3a99eabcdeb5d3876d1aaf8c88476c309c972..e36d9cf9e07c9011153c337bea6fe0bf10717ed9 100644 --- a/java/com/android/incallui/CallButtonPresenter.java +++ b/java/com/android/incallui/CallButtonPresenter.java @@ -300,23 +300,15 @@ public class CallButtonPresenter */ @Override public void switchCameraClicked(boolean useFrontFacingCamera) { - InCallCameraManager cameraManager = InCallPresenter.getInstance().getInCallCameraManager(); - cameraManager.setUseFrontFacingCamera(useFrontFacingCamera); - - String cameraId = cameraManager.getActiveCameraId(); - if (cameraId != null) { - final int cameraDir = - cameraManager.isUsingFrontFacingCamera() - ? CameraDirection.CAMERA_DIRECTION_FRONT_FACING - : CameraDirection.CAMERA_DIRECTION_BACK_FACING; - mCall.setCameraDir(cameraDir); - mCall.getVideoTech().setCamera(cameraId); - } + updateCamera(useFrontFacingCamera); } @Override public void toggleCameraClicked() { LogUtil.i("CallButtonPresenter.toggleCameraClicked", ""); + if (mCall == null) { + return; + } Logger.get(mContext) .logCallImpression( DialerImpression.Type.IN_CALL_SCREEN_SWAP_CAMERA, @@ -345,8 +337,11 @@ public class CallButtonPresenter mCall.getTimeAddedMs()); if (pause) { + mCall.getVideoTech().setCamera(null); mCall.getVideoTech().stopTransmission(); } else { + updateCamera( + InCallPresenter.getInstance().getInCallCameraManager().isUsingFrontFacingCamera()); mCall.getVideoTech().resumeTransmission(); } @@ -354,6 +349,21 @@ public class CallButtonPresenter mInCallButtonUi.enableButton(InCallButtonIds.BUTTON_PAUSE_VIDEO, false); } + private void updateCamera(boolean useFrontFacingCamera) { + InCallCameraManager cameraManager = InCallPresenter.getInstance().getInCallCameraManager(); + cameraManager.setUseFrontFacingCamera(useFrontFacingCamera); + + String cameraId = cameraManager.getActiveCameraId(); + if (cameraId != null) { + final int cameraDir = + cameraManager.isUsingFrontFacingCamera() + ? CameraDirection.CAMERA_DIRECTION_FRONT_FACING + : CameraDirection.CAMERA_DIRECTION_BACK_FACING; + mCall.setCameraDir(cameraDir); + mCall.getVideoTech().setCamera(cameraId); + } + } + private void updateUi(InCallState state, DialerCall call) { LogUtil.v("CallButtonPresenter", "updating call UI for call: ", call); diff --git a/java/com/android/incallui/CallCardPresenter.java b/java/com/android/incallui/CallCardPresenter.java index c2b99c1d1a6c69867cd5ea3340011c5a1a8f1687..67b917767397015e47814c1475fc72d523d5a046 100644 --- a/java/com/android/incallui/CallCardPresenter.java +++ b/java/com/android/incallui/CallCardPresenter.java @@ -44,12 +44,9 @@ import com.android.contacts.common.ContactsUtils; import com.android.contacts.common.preference.ContactsPreferences; import com.android.contacts.common.util.ContactDisplayUtils; import com.android.dialer.common.Assert; -import com.android.dialer.common.ConfigProviderBindings; import com.android.dialer.common.LogUtil; import com.android.dialer.compat.ActivityCompat; -import com.android.dialer.enrichedcall.EnrichedCallComponent; -import com.android.dialer.enrichedcall.EnrichedCallManager; -import com.android.dialer.enrichedcall.Session; +import com.android.dialer.configprovider.ConfigProviderBindings; import com.android.dialer.logging.DialerImpression; import com.android.dialer.logging.Logger; import com.android.dialer.multimedia.MultimediaData; @@ -85,8 +82,7 @@ public class CallCardPresenter InCallDetailsListener, InCallEventListener, InCallScreenDelegate, - DialerCallListener, - EnrichedCallManager.StateChangedListener { + DialerCallListener { /** * Amount of time to wait before sending an announcement via the accessibility manager. When the @@ -249,7 +245,7 @@ public class CallCardPresenter @Override public void onStateChange(InCallState oldState, InCallState newState, CallList callList) { - LogUtil.v("CallCardPresenter.onStateChange", "" + newState); + LogUtil.v("CallCardPresenter.onStateChange", "oldState: %s, newState: %s", oldState, newState); if (mInCallScreen == null) { return; } @@ -376,6 +372,12 @@ public class CallCardPresenter @Override public void onInternationalCallOnWifi() {} + @Override + public void onEnrichedCallSessionUpdate() { + LogUtil.enterBlock("CallCardPresenter.onEnrichedCallSessionUpdate"); + updatePrimaryDisplayInfo(); + } + /** Handles a change to the child number by refreshing the primary call info. */ @Override public void onDialerCallChildNumberChange() { @@ -418,12 +420,6 @@ public class CallCardPresenter updatePrimaryCallState(); } - @Override - public void onEnrichedCallStateChanged() { - LogUtil.enterBlock("CallCardPresenter.onEnrichedCallStateChanged"); - updatePrimaryDisplayInfo(); - } - private boolean shouldRefreshPrimaryInfo(boolean primaryChanged) { if (mPrimary == null) { return false; @@ -475,7 +471,8 @@ public class CallCardPresenter mPrimary.getConnectTimeMillis(), CallerInfoUtils.isVoiceMailNumber(mContext, mPrimary), mPrimary.isRemotelyHeld(), - isBusiness)); + isBusiness, + supports2ndCallOnHold())); InCallActivity activity = (InCallActivity) (mInCallScreen.getInCallScreenFragment().getActivity()); @@ -505,6 +502,15 @@ public class CallCardPresenter && !mIsFullscreen; } + private boolean supports2ndCallOnHold() { + DialerCall firstCall = CallList.getInstance().getActiveOrBackgroundCall(); + DialerCall incomingCall = CallList.getInstance().getIncomingCall(); + if (firstCall != null && incomingCall != null && firstCall != incomingCall) { + return incomingCall.can(Details.CAPABILITY_HOLD); + } + return true; + } + @Override public void onCallStateButtonClicked() { Intent broadcastIntent = Bindings.get(mContext).getCallStateButtonBroadcastIntent(mContext); @@ -666,26 +672,8 @@ public class CallCardPresenter boolean hasWorkCallProperty = mPrimary.hasProperty(PROPERTY_ENTERPRISE_CALL); MultimediaData multimediaData = null; - if (mPrimary.getNumber() != null) { - EnrichedCallManager manager = EnrichedCallComponent.get(mContext).getEnrichedCallManager(); - - EnrichedCallManager.Filter filter; - if (mPrimary.isIncoming()) { - filter = manager.createIncomingCallComposerFilter(); - } else { - filter = manager.createOutgoingCallComposerFilter(); - } - - Session enrichedCallSession = - manager.getSession(mPrimary.getUniqueCallId(), mPrimary.getNumber(), filter); - - mPrimary.setEnrichedCallSession(enrichedCallSession); - mPrimary.setEnrichedCallCapabilities(manager.getCapabilities(mPrimary.getNumber())); - - if (enrichedCallSession != null) { - enrichedCallSession.setUniqueDialerCallId(mPrimary.getUniqueCallId()); - multimediaData = enrichedCallSession.getMultimediaData(); - } + if (mPrimary.getEnrichedCallSession() != null) { + multimediaData = mPrimary.getEnrichedCallSession().getMultimediaData(); } if (mPrimary.isConferenceCall()) { @@ -696,7 +684,8 @@ public class CallCardPresenter mInCallScreen.setPrimary( new PrimaryInfo( null /* number */, - getConferenceString(mPrimary), + CallerInfoUtils.getConferenceString( + mContext, mPrimary.hasProperty(Details.PROPERTY_GENERIC_CONFERENCE)), false /* nameIsNumber */, null /* location */, null /* label */, @@ -876,11 +865,20 @@ public class CallCardPresenter return; } + if (mSecondary.isMergeInProcess()) { + LogUtil.i( + "CallCardPresenter.updateSecondaryDisplayInfo", + "secondary call is merge in process, clearing info"); + mInCallScreen.setSecondary(SecondaryInfo.createEmptySecondaryInfo(mIsFullscreen)); + return; + } + if (mSecondary.isConferenceCall()) { mInCallScreen.setSecondary( new SecondaryInfo( true /* show */, - getConferenceString(mSecondary), + CallerInfoUtils.getConferenceString( + mContext, mSecondary.hasProperty(Details.PROPERTY_GENERIC_CONFERENCE)), false /* nameIsNumber */, null /* label */, mSecondary.getCallProviderLabel(), @@ -972,7 +970,7 @@ public class CallCardPresenter } /** Gets the name to display for the call. */ - String getNameForCall(ContactCacheEntry contactInfo) { + private String getNameForCall(ContactCacheEntry contactInfo) { String preferredName = ContactDisplayUtils.getPreferredDisplayName( contactInfo.namePrimary, contactInfo.nameAlternative, mContactsPreferences); @@ -982,19 +980,6 @@ public class CallCardPresenter return preferredName; } - /** Gets the number to display for a call. */ - String getNumberForCall(ContactCacheEntry contactInfo) { - // If the name is empty, we use the number for the name...so don't show a second - // number in the number field - String preferredName = - ContactDisplayUtils.getPreferredDisplayName( - contactInfo.namePrimary, contactInfo.nameAlternative, mContactsPreferences); - if (TextUtils.isEmpty(preferredName)) { - return contactInfo.location; - } - return contactInfo.number; - } - @Override public void onSecondaryInfoClicked() { if (mSecondary == null) { @@ -1035,15 +1020,6 @@ public class CallCardPresenter return mPrimary != null && mPrimary.getState() == DialerCall.State.ACTIVE; } - private String getConferenceString(DialerCall call) { - boolean isGenericConference = call.hasProperty(Details.PROPERTY_GENERIC_CONFERENCE); - LogUtil.v("CallCardPresenter.getConferenceString", "" + isGenericConference); - - final int resId = - isGenericConference ? R.string.generic_conference_call_name : R.string.conference_call_name; - return mContext.getResources().getString(resId); - } - private boolean shouldShowEndCallButton(DialerCall primary, int callState) { if (primary == null) { return false; @@ -1063,7 +1039,6 @@ public class CallCardPresenter @Override public void onInCallScreenResumed() { - EnrichedCallComponent.get(mContext).getEnrichedCallManager().registerStateChangedListener(this); updatePrimaryDisplayInfo(); if (shouldSendAccessibilityEvent) { @@ -1072,11 +1047,7 @@ public class CallCardPresenter } @Override - public void onInCallScreenPaused() { - EnrichedCallComponent.get(mContext) - .getEnrichedCallManager() - .unregisterStateChangedListener(this); - } + public void onInCallScreenPaused() {} static boolean sendAccessibilityEvent(Context context, InCallScreen inCallScreen) { AccessibilityManager am = diff --git a/java/com/android/incallui/CallerInfoUtils.java b/java/com/android/incallui/CallerInfoUtils.java index 5644466470fddffdfb387ad56ad270a258975706..8f23107603c377a8bfe792aea172d3931903763f 100644 --- a/java/com/android/incallui/CallerInfoUtils.java +++ b/java/com/android/incallui/CallerInfoUtils.java @@ -282,4 +282,11 @@ public class CallerInfoUtils { }); loader.startLoading(); } + + /** @return conference name for conference call. */ + public static String getConferenceString(Context context, boolean isGenericConference) { + final int resId = + isGenericConference ? R.string.generic_conference_call_name : R.string.conference_call_name; + return context.getResources().getString(resId); + } } diff --git a/java/com/android/incallui/ContactInfoCache.java b/java/com/android/incallui/ContactInfoCache.java index e45eb9746b365aefe6566f5303ed4335871074b9..fdfba3b9fdb6af1d749e77f7e9143f9f5c6832c6 100644 --- a/java/com/android/incallui/ContactInfoCache.java +++ b/java/com/android/incallui/ContactInfoCache.java @@ -33,6 +33,7 @@ import android.support.annotation.MainThread; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.annotation.WorkerThread; +import android.support.v4.content.ContextCompat; import android.support.v4.os.UserManagerCompat; import android.telecom.TelecomManager; import android.telephony.PhoneNumberUtils; @@ -406,7 +407,7 @@ public class ContactInfoCache implements OnImageLoadCompleteListener { } else { ContactCacheEntry initialCacheEntry = updateCallerInfoInCacheOnAnyThread( - callId, call.getNumberPresentation(), callerInfo, isIncoming, false, queryToken); + callId, call.getNumberPresentation(), callerInfo, false, queryToken); sendInfoNotifications(callId, initialCacheEntry); } } @@ -416,7 +417,6 @@ public class ContactInfoCache implements OnImageLoadCompleteListener { String callId, int numberPresentation, CallerInfo callerInfo, - boolean isIncoming, boolean didLocalLookup, CallerInfoQueryToken queryToken) { Log.d( @@ -443,16 +443,7 @@ public class ContactInfoCache implements OnImageLoadCompleteListener { Log.d(TAG, "Existing cacheEntry in hashMap " + existingCacheEntry); if (didLocalLookup) { - // Before issuing a request for more data from other services, we only check that the - // contact wasn't found in the local DB. We don't check the if the cache entry already - // has a name because we allow overriding cnap data with data from other services. - if (!callerInfo.contactExists && mPhoneNumberService != null) { - Log.d(TAG, "Contact lookup. Local contacts miss, checking remote"); - final PhoneNumberServiceListener listener = - new PhoneNumberServiceListener(callId, queryToken.mQueryId); - cacheEntry.hasPendingQuery = true; - mPhoneNumberService.getPhoneNumberInfo(cacheEntry.number, listener, listener, isIncoming); - } else if (cacheEntry.displayPhotoUri != null) { + if (cacheEntry.displayPhotoUri != null) { // When the difference between 2 numbers is only the prefix (e.g. + or IDD), // we will still trigger force query so that the number can be updated on // the calling screen. We need not query the image again if the previous @@ -606,7 +597,7 @@ public class ContactInfoCache implements OnImageLoadCompleteListener { // This will only be true for emergency numbers if (info.photoResource != 0) { - cce.photo = context.getResources().getDrawable(info.photoResource); + cce.photo = ContextCompat.getDrawable(context, info.photoResource); } else if (info.isCachedPhotoCurrent) { if (info.cachedPhoto != null) { cce.photo = info.cachedPhoto; @@ -789,7 +780,7 @@ public class ContactInfoCache implements OnImageLoadCompleteListener { maybeUpdateFromCequintCallerId(ci, cw.cnapName, mIsIncoming); long time = SystemClock.uptimeMillis() - start; Log.d(TAG, "Cequint Caller Id look up takes " + time + " ms."); - updateCallerInfoInCacheOnAnyThread(cw.callId, cw.numberPresentation, ci, mIsIncoming, true, mQueryToken); + updateCallerInfoInCacheOnAnyThread(cw.callId, cw.numberPresentation, ci, true, mQueryToken); } @Override @@ -807,6 +798,16 @@ public class ContactInfoCache implements OnImageLoadCompleteListener { clearCallbacks(callId); return; } + // Before issuing a request for more data from other services, we only check that the + // contact wasn't found in the local DB. We don't check the if the cache entry already + // has a name because we allow overriding cnap data with data from other services. + if (!callerInfo.contactExists && mPhoneNumberService != null) { + Log.d(TAG, "Contact lookup. Local contacts miss, checking remote"); + final PhoneNumberServiceListener listener = + new PhoneNumberServiceListener(callId, mQueryToken.mQueryId); + cacheEntry.hasPendingQuery = true; + mPhoneNumberService.getPhoneNumberInfo(cacheEntry.number, listener, listener, mIsIncoming); + } sendInfoNotifications(callId, cacheEntry); if (!cacheEntry.hasPendingQuery) { if (callerInfo.contactExists) { @@ -870,6 +871,7 @@ public class ContactInfoCache implements OnImageLoadCompleteListener { entry.shouldShowLocation = oldEntry.shouldShowLocation; // Contact specific ringtone is obtained from local lookup. entry.contactRingtoneUri = oldEntry.contactRingtoneUri; + entry.originalPhoneNumber = oldEntry.originalPhoneNumber; } // If no image and it's a business, switch to using the default business avatar. diff --git a/java/com/android/incallui/ExternalCallNotifier.java b/java/com/android/incallui/ExternalCallNotifier.java index 0c2493c600cdefe3f4adc7fd0feae0f5e355bfef..f01a29458b15c9d6ed7ad50f9d23c43bf039de7b 100644 --- a/java/com/android/incallui/ExternalCallNotifier.java +++ b/java/com/android/incallui/ExternalCallNotifier.java @@ -29,6 +29,7 @@ import android.net.Uri; import android.os.Build.VERSION_CODES; import android.support.annotation.NonNull; import android.support.annotation.Nullable; +import android.support.v4.os.BuildCompat; import android.telecom.Call; import android.telecom.PhoneAccount; import android.telecom.VideoProfile; @@ -41,8 +42,7 @@ import com.android.contacts.common.compat.CallCompat; import com.android.contacts.common.preference.ContactsPreferences; import com.android.contacts.common.util.BitmapUtil; import com.android.contacts.common.util.ContactDisplayUtils; -import com.android.dialer.notification.NotificationChannelManager; -import com.android.dialer.notification.NotificationChannelManager.Channel; +import com.android.dialer.notification.NotificationChannelId; import com.android.incallui.call.DialerCall; import com.android.incallui.call.DialerCallDelegate; import com.android.incallui.call.ExternalCallList; @@ -59,9 +59,10 @@ import java.util.Map; public class ExternalCallNotifier implements ExternalCallList.ExternalCallListener { /** Tag used with the notification manager to uniquely identify external call notifications. */ - private static final int NOTIFICATION_ID = R.id.notification_external_call; + private static final String NOTIFICATION_TAG = "EXTERNAL_CALL"; + + private static final int NOTIFICATION_SUMMARY_ID = -1; - private static final String NOTIFICATION_GROUP = "ExternalCallNotifier"; private final Context mContext; private final ContactInfoCache mContactInfoCache; private Map mNotifications = new ArrayMap<>(); @@ -188,15 +189,14 @@ public class ExternalCallNotifier implements ExternalCallList.ExternalCallListen NotificationManager notificationManager = (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE); - notificationManager.cancel( - String.valueOf(mNotifications.get(call).getNotificationId()), NOTIFICATION_ID); + notificationManager.cancel(NOTIFICATION_TAG, mNotifications.get(call).getNotificationId()); mNotifications.remove(call); if (mShowingSummary && mNotifications.size() <= 1) { // Where a summary notification is showing and there is now not enough notifications to // necessitate a summary, cancel the summary. - notificationManager.cancel(NOTIFICATION_GROUP, NOTIFICATION_ID); + notificationManager.cancel(NOTIFICATION_TAG, NOTIFICATION_SUMMARY_ID); mShowingSummary = false; // If there is still a single call requiring a notification, re-post the notification as a @@ -237,7 +237,7 @@ public class ExternalCallNotifier implements ExternalCallList.ExternalCallListen builder.setOngoing(true); // Make the notification prioritized over the other normal notifications. builder.setPriority(Notification.PRIORITY_HIGH); - builder.setGroup(NOTIFICATION_GROUP); + builder.setGroup(NOTIFICATION_TAG); boolean isVideoCall = VideoProfile.isVideo(info.getCall().getDetails().getVideoState()); // Set the content ("Ongoing call on another device") @@ -251,9 +251,9 @@ public class ExternalCallNotifier implements ExternalCallList.ExternalCallListen builder.setLargeIcon(info.getLargeIcon()); builder.setColor(mContext.getResources().getColor(R.color.dialer_theme_color)); builder.addPerson(info.getPersonReference()); - - NotificationChannelManager.applyChannel( - builder, mContext, Channel.EXTERNAL_CALL, info.getCall().getDetails().getAccountHandle()); + if (BuildCompat.isAtLeastO()) { + builder.setChannelId(NotificationChannelId.DEFAULT); + } // Where the external call supports being transferred to the local device, add an action // to the notification to initiate the call pull process. @@ -286,20 +286,16 @@ public class ExternalCallNotifier implements ExternalCallList.ExternalCallListen Notification.Builder publicBuilder = new Notification.Builder(mContext); publicBuilder.setSmallIcon(R.drawable.quantum_ic_call_white_24); publicBuilder.setColor(mContext.getResources().getColor(R.color.dialer_theme_color)); - - NotificationChannelManager.applyChannel( - publicBuilder, - mContext, - Channel.EXTERNAL_CALL, - info.getCall().getDetails().getAccountHandle()); + if (BuildCompat.isAtLeastO()) { + publicBuilder.setChannelId(NotificationChannelId.DEFAULT); + } builder.setPublicVersion(publicBuilder.build()); Notification notification = builder.build(); NotificationManager notificationManager = (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE); - notificationManager.notify( - String.valueOf(info.getNotificationId()), NOTIFICATION_ID, notification); + notificationManager.notify(NOTIFICATION_TAG, info.getNotificationId(), notification); if (!mShowingSummary && mNotifications.size() > 1) { // If the number of notifications shown is > 1, and we're not already showing a group summary, @@ -310,12 +306,13 @@ public class ExternalCallNotifier implements ExternalCallList.ExternalCallListen summary.setOngoing(true); // Make the notification prioritized over the other normal notifications. summary.setPriority(Notification.PRIORITY_HIGH); - summary.setGroup(NOTIFICATION_GROUP); + summary.setGroup(NOTIFICATION_TAG); summary.setGroupSummary(true); summary.setSmallIcon(R.drawable.quantum_ic_call_white_24); - NotificationChannelManager.applyChannel( - summary, mContext, Channel.EXTERNAL_CALL, info.getCall().getDetails().getAccountHandle()); - notificationManager.notify(NOTIFICATION_GROUP, NOTIFICATION_ID, summary.build()); + if (BuildCompat.isAtLeastO()) { + summary.setChannelId(NotificationChannelId.DEFAULT); + } + notificationManager.notify(NOTIFICATION_TAG, NOTIFICATION_SUMMARY_ID, summary.build()); mShowingSummary = true; } } @@ -384,11 +381,10 @@ public class ExternalCallNotifier implements ExternalCallList.ExternalCallListen ContactInfoCache.ContactCacheEntry contactInfo, android.telecom.Call call) { - if (call.getDetails().hasProperty(android.telecom.Call.Details.PROPERTY_CONFERENCE) - && !call.getDetails() - .hasProperty(android.telecom.Call.Details.PROPERTY_GENERIC_CONFERENCE)) { - - return context.getResources().getString(R.string.conference_call_name); + if (call.getDetails().hasProperty(android.telecom.Call.Details.PROPERTY_CONFERENCE)) { + return CallerInfoUtils.getConferenceString( + context, + call.getDetails().hasProperty(android.telecom.Call.Details.PROPERTY_GENERIC_CONFERENCE)); } String preferredName = diff --git a/java/com/android/incallui/InCallActivity.java b/java/com/android/incallui/InCallActivity.java index cc9a8e4385427d0ad3e3894aa8dfa597f46d4f3b..6ea31fc4c71857caf9b273dbf91531b386e027e6 100644 --- a/java/com/android/incallui/InCallActivity.java +++ b/java/com/android/incallui/InCallActivity.java @@ -35,9 +35,9 @@ import android.view.MenuItem; import android.view.MotionEvent; import android.view.View; import com.android.dialer.common.Assert; -import com.android.dialer.common.ConfigProviderBindings; import com.android.dialer.common.LogUtil; import com.android.dialer.compat.ActivityCompat; +import com.android.dialer.configprovider.ConfigProviderBindings; import com.android.dialer.logging.Logger; import com.android.dialer.logging.ScreenEvent; import com.android.incallui.answer.bindings.AnswerBindings; @@ -630,12 +630,22 @@ public class InCallActivity extends TransactionSafeFragmentActivity AnswerScreen answerScreen = getAnswerScreen(); if (answerScreen.getCallId().equals(call.getId()) && answerScreen.isVideoCall() == call.isVideoCall() - && answerScreen.isVideoUpgradeRequest() == isVideoUpgradeRequest) { + && answerScreen.isVideoUpgradeRequest() == isVideoUpgradeRequest + && !answerScreen.isActionTimeout()) { + LogUtil.d( + "InCallActivity.showAnswerScreenFragment", + "answer fragment exists for same call and has NOT been accepted/rejected/timed out"); return false; } - LogUtil.i( - "InCallActivity.showAnswerScreenFragment", - "answer fragment exists but arguments do not match"); + if (answerScreen.isActionTimeout()) { + LogUtil.i( + "InCallActivity.showAnswerScreenFragment", + "answer fragment exists but has been accepted/rejected and timed out"); + } else { + LogUtil.i( + "InCallActivity.showAnswerScreenFragment", + "answer fragment exists but arguments do not match"); + } hideAnswerScreenFragment(transaction); } @@ -694,13 +704,8 @@ public class InCallActivity extends TransactionSafeFragmentActivity if (didShowInCallScreen) { return false; } - InCallScreen inCallScreen = getInCallScreen(); - if (inCallScreen == null) { - inCallScreen = InCallBindings.createInCallScreen(); - transaction.add(R.id.main, inCallScreen.getInCallScreenFragment(), TAG_IN_CALL_SCREEN); - } else { - transaction.show(inCallScreen.getInCallScreenFragment()); - } + InCallScreen inCallScreen = InCallBindings.createInCallScreen(); + transaction.add(R.id.main, inCallScreen.getInCallScreenFragment(), TAG_IN_CALL_SCREEN); Logger.get(this).logScreenView(ScreenEvent.Type.INCALL, this); didShowInCallScreen = true; return true; @@ -712,7 +717,7 @@ public class InCallActivity extends TransactionSafeFragmentActivity } InCallScreen inCallScreen = getInCallScreen(); if (inCallScreen != null) { - transaction.hide(inCallScreen.getInCallScreenFragment()); + transaction.remove(inCallScreen.getInCallScreenFragment()); } didShowInCallScreen = false; return true; diff --git a/java/com/android/incallui/InCallPresenter.java b/java/com/android/incallui/InCallPresenter.java index 2d6d83c3c8319a4ec8ebf958d2d7b66bfc05fcf9..0bfd67e87d9532a7e2aeff969033d016375256a1 100644 --- a/java/com/android/incallui/InCallPresenter.java +++ b/java/com/android/incallui/InCallPresenter.java @@ -695,7 +695,10 @@ public class InCallPresenter implements CallList.Listener { if (newState == InCallState.INCOMING && (waitingForAccountCall = callList.getWaitingForAccountCall()) != null) { waitingForAccountCall.disconnect(); - mInCallActivity.dismissPendingDialogs(); + // The InCallActivity might be destroyed or not started yet at this point. + if (isActivityStarted()) { + mInCallActivity.dismissPendingDialogs(); + } } newState = startOrFinishUi(newState); @@ -1011,6 +1014,13 @@ public class InCallPresenter implements CallList.Listener { } } + public void refreshUi() { + if (mInCallActivity != null) { + // Re-evaluate which fragment is being shown. + mInCallActivity.onPrimaryCallStateChanged(); + } + } + public void addInCallUiListener(InCallUiListener listener) { mInCallUiListeners.add(listener); } diff --git a/java/com/android/incallui/InCallServiceImpl.java b/java/com/android/incallui/InCallServiceImpl.java index 4ab92a797bf91c338e96b94d9f4e138242c01e49..d2b0297417e5c236ecd9f404af28dd60699250a6 100644 --- a/java/com/android/incallui/InCallServiceImpl.java +++ b/java/com/android/incallui/InCallServiceImpl.java @@ -36,6 +36,8 @@ import com.android.incallui.call.TelecomAdapter; */ public class InCallServiceImpl extends InCallService { + private ReturnToCallController returnToCallController; + @Override public void onCallAudioStateChanged(CallAudioState audioState) { AudioModeProvider.getInstance().onAudioStateChanged(audioState); @@ -79,6 +81,9 @@ public class InCallServiceImpl extends InCallService { InCallPresenter.getInstance().onServiceBind(); InCallPresenter.getInstance().maybeStartRevealAnimation(intent); TelecomAdapter.getInstance().setInCallService(this); + if (ReturnToCallController.isEnabled(this)) { + returnToCallController = new ReturnToCallController(this); + } return super.onBind(intent); } @@ -98,5 +103,9 @@ public class InCallServiceImpl extends InCallService { // Tear down the InCall system TelecomAdapter.getInstance().clearInCallService(); InCallPresenter.getInstance().tearDown(); + if (returnToCallController != null) { + returnToCallController.tearDown(); + returnToCallController = null; + } } } diff --git a/java/com/android/incallui/ReturnToCallActionReceiver.java b/java/com/android/incallui/ReturnToCallActionReceiver.java new file mode 100644 index 0000000000000000000000000000000000000000..b645c155c5957e2c3e33e37ba29da0b448e654e1 --- /dev/null +++ b/java/com/android/incallui/ReturnToCallActionReceiver.java @@ -0,0 +1,132 @@ +/* + * Copyright (C) 2017 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License + */ + +package com.android.incallui; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.telecom.CallAudioState; +import com.android.dialer.common.LogUtil; +import com.android.dialer.logging.DialerImpression; +import com.android.dialer.logging.Logger; +import com.android.incallui.audiomode.AudioModeProvider; +import com.android.incallui.call.CallList; +import com.android.incallui.call.DialerCall; +import com.android.incallui.call.TelecomAdapter; + +/** Handles clicks on the return-to-call bubble */ +public class ReturnToCallActionReceiver extends BroadcastReceiver { + + public static final String ACTION_TOGGLE_SPEAKER = "toggleSpeaker"; + public static final String ACTION_SHOW_AUDIO_ROUTE_SELECTOR = "showAudioRouteSelector"; + public static final String ACTION_TOGGLE_MUTE = "toggleMute"; + public static final String ACTION_END_CALL = "endCall"; + + @Override + public void onReceive(Context context, Intent intent) { + switch (intent.getAction()) { + case ACTION_TOGGLE_SPEAKER: + toggleSpeaker(context); + break; + case ACTION_SHOW_AUDIO_ROUTE_SELECTOR: + showAudioRouteSelector(context); + break; + case ACTION_TOGGLE_MUTE: + toggleMute(context); + break; + case ACTION_END_CALL: + endCall(context); + break; + } + } + + private void toggleSpeaker(Context context) { + CallAudioState audioState = AudioModeProvider.getInstance().getAudioState(); + + if ((audioState.getSupportedRouteMask() & CallAudioState.ROUTE_BLUETOOTH) + == CallAudioState.ROUTE_BLUETOOTH) { + LogUtil.w( + "ReturnToCallActionReceiver.toggleSpeaker", + "toggleSpeaker() called when bluetooth available." + + " Probably should have shown audio route selector"); + } + + DialerCall call = getCall(); + + int newRoute; + if (audioState.getRoute() == CallAudioState.ROUTE_SPEAKER) { + newRoute = CallAudioState.ROUTE_WIRED_OR_EARPIECE; + Logger.get(context) + .logCallImpression( + DialerImpression.Type.BUBBLE_TURN_ON_WIRED_OR_EARPIECE, + call != null ? call.getUniqueCallId() : "", + call != null ? call.getTimeAddedMs() : 0); + } else { + newRoute = CallAudioState.ROUTE_SPEAKER; + Logger.get(context) + .logCallImpression( + DialerImpression.Type.BUBBLE_TURN_ON_SPEAKERPHONE, + call != null ? call.getUniqueCallId() : "", + call != null ? call.getTimeAddedMs() : 0); + } + TelecomAdapter.getInstance().setAudioRoute(newRoute); + } + + public void showAudioRouteSelector(Context context) { + context.startActivity(new Intent(context, AudioRouteSelectorActivity.class)); + } + + private void toggleMute(Context context) { + DialerCall call = getCall(); + boolean shouldMute = !AudioModeProvider.getInstance().getAudioState().isMuted(); + Logger.get(context) + .logCallImpression( + shouldMute + ? DialerImpression.Type.BUBBLE_MUTE_CALL + : DialerImpression.Type.BUBBLE_UNMUTE_CALL, + call != null ? call.getUniqueCallId() : "", + call != null ? call.getTimeAddedMs() : 0); + TelecomAdapter.getInstance().mute(shouldMute); + } + + private void endCall(Context context) { + DialerCall call = getCall(); + + Logger.get(context) + .logCallImpression( + DialerImpression.Type.BUBBLE_END_CALL, + call != null ? call.getUniqueCallId() : "", + call != null ? call.getTimeAddedMs() : 0); + if (call != null) { + call.disconnect(); + } + } + + private DialerCall getCall() { + CallList callList = InCallPresenter.getInstance().getCallList(); + if (callList != null) { + DialerCall call = callList.getOutgoingCall(); + if (call == null) { + call = callList.getActiveOrBackgroundCall(); + } + if (call != null) { + return call; + } + } + return null; + } +} diff --git a/java/com/android/incallui/ReturnToCallController.java b/java/com/android/incallui/ReturnToCallController.java new file mode 100644 index 0000000000000000000000000000000000000000..314aa45d4a4984ca036163cc42fae2ed00d66f20 --- /dev/null +++ b/java/com/android/incallui/ReturnToCallController.java @@ -0,0 +1,212 @@ +/* + * Copyright (C) 2017 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License + */ + +package com.android.incallui; + +import android.app.PendingIntent; +import android.content.Context; +import android.content.Intent; +import android.graphics.drawable.Icon; +import android.support.annotation.NonNull; +import android.support.annotation.VisibleForTesting; +import android.telecom.CallAudioState; +import com.android.dialer.common.LogUtil; +import com.android.dialer.configprovider.ConfigProviderBindings; +import com.android.dialer.telecom.TelecomUtil; +import com.android.dialershared.bubble.Bubble; +import com.android.dialershared.bubble.BubbleInfo; +import com.android.dialershared.bubble.BubbleInfo.Action; +import com.android.incallui.InCallPresenter.InCallUiListener; +import com.android.incallui.audiomode.AudioModeProvider; +import com.android.incallui.audiomode.AudioModeProvider.AudioModeListener; +import com.android.incallui.call.CallList; +import com.android.incallui.call.CallList.Listener; +import com.android.incallui.call.DialerCall; +import com.android.incallui.speakerbuttonlogic.SpeakerButtonInfo; +import com.android.incallui.speakerbuttonlogic.SpeakerButtonInfo.IconSize; +import java.util.ArrayList; +import java.util.List; + +/** + * Listens for events relevant to the return-to-call bubble and updates the bubble's state as + * necessary + */ +public class ReturnToCallController implements InCallUiListener, Listener, AudioModeListener { + + private final Context context; + + @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE) + Bubble bubble; + + private CallAudioState audioState; + + private final PendingIntent toggleSpeaker; + private final PendingIntent showSpeakerSelect; + private final PendingIntent toggleMute; + private final PendingIntent endCall; + + public static boolean isEnabled(Context context) { + return !ConfigProviderBindings.get(context).getBoolean("disable_return_to_call_bubble", false); + } + + public ReturnToCallController(Context context) { + this.context = context; + + toggleSpeaker = createActionIntent(ReturnToCallActionReceiver.ACTION_TOGGLE_SPEAKER); + showSpeakerSelect = + createActionIntent(ReturnToCallActionReceiver.ACTION_SHOW_AUDIO_ROUTE_SELECTOR); + toggleMute = createActionIntent(ReturnToCallActionReceiver.ACTION_TOGGLE_MUTE); + endCall = createActionIntent(ReturnToCallActionReceiver.ACTION_END_CALL); + + InCallPresenter.getInstance().addInCallUiListener(this); + CallList.getInstance().addListener(this); + AudioModeProvider.getInstance().addListener(this); + audioState = AudioModeProvider.getInstance().getAudioState(); + } + + public void tearDown() { + InCallPresenter.getInstance().removeInCallUiListener(this); + CallList.getInstance().removeListener(this); + AudioModeProvider.getInstance().removeListener(this); + } + + @Override + public void onUiShowing(boolean showing) { + if (showing) { + hide(); + } else { + if (TelecomUtil.isInCall(context)) { + show(); + } + } + } + + private void hide() { + if (bubble != null) { + bubble.hide(); + } else { + LogUtil.i("ReturnToCallController.hide", "hide() called without calling show()"); + } + } + + private void show() { + if (bubble == null) { + bubble = startNewBubble(); + } else { + bubble.show(); + } + } + + private Bubble startNewBubble() { + if (!Bubble.canShowBubbles(context)) { + LogUtil.i("ReturnToCallController.startNewBubble", "can't show bubble, no permission"); + context.startActivity(Bubble.getRequestPermissionIntent(context)); + return null; + } + Bubble returnToCallBubble = Bubble.createBubble(context, generateBubbleInfo()); + returnToCallBubble.show(); + return returnToCallBubble; + } + + @Override + public void onIncomingCall(DialerCall call) {} + + @Override + public void onUpgradeToVideo(DialerCall call) {} + + @Override + public void onSessionModificationStateChange(DialerCall call) {} + + @Override + public void onCallListChange(CallList callList) {} + + @Override + public void onDisconnect(DialerCall call) { + if (bubble != null && bubble.isShowing()) { + bubble.showText(context.getText(R.string.incall_call_ended)); + } + + if (!TelecomUtil.isInCall(context)) { + hide(); + } + } + + @Override + public void onWiFiToLteHandover(DialerCall call) {} + + @Override + public void onHandoverToWifiFailed(DialerCall call) {} + + @Override + public void onInternationalCallOnWifi(@NonNull DialerCall call) {} + + @Override + public void onAudioStateChanged(CallAudioState audioState) { + this.audioState = audioState; + if (bubble != null) { + bubble.updateActions(generateActions()); + } + } + + private BubbleInfo generateBubbleInfo() { + Intent activityIntent = InCallActivity.getIntent(context, false, false, false); + activityIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + return BubbleInfo.builder() + .setPrimaryColor(context.getResources().getColor(R.color.dialer_theme_color, null)) + .setPrimaryIcon(Icon.createWithResource(context, R.drawable.on_going_call)) + .setStartingYPosition( + context.getResources().getDimensionPixelOffset(R.dimen.return_to_call_initial_offset_y)) + .setPrimaryIntent(PendingIntent.getActivity(context, 0, activityIntent, 0)) + .setActions(generateActions()) + .build(); + } + + @NonNull + private List generateActions() { + List actions = new ArrayList<>(); + SpeakerButtonInfo speakerButtonInfo = new SpeakerButtonInfo(audioState, IconSize.SIZE_24_DP); + + actions.add( + Action.builder() + .setIcon(Icon.createWithResource(context, speakerButtonInfo.icon)) + .setName(context.getText(speakerButtonInfo.label)) + .setChecked(speakerButtonInfo.isChecked) + .setIntent(speakerButtonInfo.checkable ? toggleSpeaker : showSpeakerSelect) + .build()); + + actions.add( + Action.builder() + .setIcon(Icon.createWithResource(context, R.drawable.quantum_ic_mic_off_white_24)) + .setName(context.getText(R.string.incall_label_mute)) + .setChecked(audioState.isMuted()) + .setIntent(toggleMute) + .build()); + actions.add( + Action.builder() + .setIcon(Icon.createWithResource(context, R.drawable.quantum_ic_call_end_white_24)) + .setName(context.getText(R.string.incall_label_end_call)) + .setIntent(endCall) + .build()); + return actions; + } + + @NonNull + private PendingIntent createActionIntent(String action) { + Intent toggleSpeaker = new Intent(context, ReturnToCallActionReceiver.class); + toggleSpeaker.setAction(action); + return PendingIntent.getBroadcast(context, 0, toggleSpeaker, 0); + } +} diff --git a/java/com/android/incallui/StatusBarNotifier.java b/java/com/android/incallui/StatusBarNotifier.java index 165b30b52b95c4498b9a4785ac50f1d425279df4..458df51494a187be01a2d108be6aaeaba3d973b6 100644 --- a/java/com/android/incallui/StatusBarNotifier.java +++ b/java/com/android/incallui/StatusBarNotifier.java @@ -28,7 +28,6 @@ import static com.android.incallui.NotificationBroadcastReceiver.ACTION_HANG_UP_ import android.Manifest; import android.app.ActivityManager; import android.app.Notification; -import android.app.Notification.Builder; import android.app.NotificationManager; import android.app.PendingIntent; import android.content.Context; @@ -62,16 +61,15 @@ import android.text.style.ForegroundColorSpan; import com.android.contacts.common.ContactsUtils; import com.android.contacts.common.ContactsUtils.UserType; import com.android.contacts.common.lettertiles.LetterTileDrawable; +import com.android.contacts.common.lettertiles.LetterTileDrawable.ContactType; import com.android.contacts.common.preference.ContactsPreferences; import com.android.contacts.common.util.BitmapUtil; import com.android.contacts.common.util.ContactDisplayUtils; import com.android.dialer.common.LogUtil; -import com.android.dialer.enrichedcall.EnrichedCallComponent; import com.android.dialer.enrichedcall.EnrichedCallManager; import com.android.dialer.enrichedcall.Session; import com.android.dialer.multimedia.MultimediaData; -import com.android.dialer.notification.NotificationChannelManager; -import com.android.dialer.notification.NotificationChannelManager.Channel; +import com.android.dialer.notification.NotificationChannelId; import com.android.dialer.oem.MotorolaUtils; import com.android.dialer.util.DrawableConverter; import com.android.incallui.ContactInfoCache.ContactCacheEntry; @@ -93,6 +91,9 @@ import java.util.Objects; public class StatusBarNotifier implements InCallPresenter.InCallStateListener, EnrichedCallManager.StateChangedListener { + private static final String NOTIFICATION_TAG = "STATUS_BAR_NOTIFIER"; + private static final int NOTIFICATION_ID = 1; + // Notification types // Indicates that no notification is currently showing. private static final int NOTIFICATION_NONE = 0; @@ -147,7 +148,7 @@ public class StatusBarNotifier NotificationManager notificationManager = backupContext.getSystemService(NotificationManager.class); - notificationManager.cancel(R.id.notification_ongoing_call); + notificationManager.cancel(NOTIFICATION_TAG, NOTIFICATION_ID); } private static int getWorkStringFromPersonalString(int resId) { @@ -173,12 +174,6 @@ public class StatusBarNotifier return PendingIntent.getBroadcast(context, 0, intent, 0); } - private static void setColorized(@NonNull Builder builder) { - if (BuildCompat.isAtLeastO()) { - builder.setColorized(true); - } - } - /** Creates notifications according to the state we receive from {@link InCallPresenter}. */ @Override @RequiresPermission(Manifest.permission.READ_PHONE_STATE) @@ -226,7 +221,7 @@ public class StatusBarNotifier } if (mCurrentNotification != NOTIFICATION_NONE) { LogUtil.i("StatusBarNotifier.cancelNotification", "cancel"); - mNotificationManager.cancel(R.id.notification_ongoing_call); + mNotificationManager.cancel(NOTIFICATION_TAG, NOTIFICATION_ID); } mCurrentNotification = NOTIFICATION_NONE; } @@ -365,13 +360,13 @@ public class StatusBarNotifier LogUtil.i("StatusBarNotifier.buildAndSendNotification", "notificationType=" + notificationType); switch (notificationType) { case NOTIFICATION_INCOMING_CALL: - NotificationChannelManager.applyChannel( - builder, mContext, Channel.INCOMING_CALL, accountHandle); + if (BuildCompat.isAtLeastO()) { + builder.setChannelId(NotificationChannelId.INCOMING_CALL); + } configureFullScreenIntent(builder, createLaunchPendingIntent(true /* isFullScreen */)); // Set the notification category and bump the priority for incoming calls builder.setCategory(Notification.CATEGORY_CALL); // This will be ignored on O+ and handled by the channel - //noinspection deprecation builder.setPriority(Notification.PRIORITY_MAX); if (mCurrentNotification != NOTIFICATION_INCOMING_CALL) { LogUtil.i( @@ -379,18 +374,20 @@ public class StatusBarNotifier "Canceling old notification so this one can be noisy"); // Moving from a non-interuptive notification (or none) to a noisy one. Cancel the old // notification (if there is one) so the fullScreenIntent or HUN will show - mNotificationManager.cancel(R.id.notification_ongoing_call); + mNotificationManager.cancel(NOTIFICATION_TAG, NOTIFICATION_ID); } break; case NOTIFICATION_INCOMING_CALL_QUIET: - NotificationChannelManager.applyChannel( - builder, mContext, Channel.ONGOING_CALL, accountHandle); + if (BuildCompat.isAtLeastO()) { + builder.setChannelId(NotificationChannelId.ONGOING_CALL); + } break; case NOTIFICATION_IN_CALL: - setColorized(publicBuilder); - setColorized(builder); - NotificationChannelManager.applyChannel( - builder, mContext, Channel.ONGOING_CALL, accountHandle); + if (BuildCompat.isAtLeastO()) { + publicBuilder.setColorized(true); + builder.setColorized(true); + builder.setChannelId(NotificationChannelId.ONGOING_CALL); + } break; } @@ -436,7 +433,7 @@ public class StatusBarNotifier "displaying notification for " + notificationType); try { - mNotificationManager.notify(R.id.notification_ongoing_call, notification); + mNotificationManager.notify(NOTIFICATION_TAG, NOTIFICATION_ID, notification); } catch (RuntimeException e) { // TODO(b/34744003): Move the memory stats into silent feedback PSD. ActivityManager activityManager = mContext.getSystemService(ActivityManager.class); @@ -565,8 +562,9 @@ public class StatusBarNotifier @VisibleForTesting @Nullable String getContentTitle(ContactCacheEntry contactInfo, DialerCall call) { - if (call.isConferenceCall() && !call.hasProperty(Details.PROPERTY_GENERIC_CONFERENCE)) { - return mContext.getResources().getString(R.string.conference_call_name); + if (call.isConferenceCall()) { + return CallerInfoUtils.getConferenceString( + mContext, call.hasProperty(Details.PROPERTY_GENERIC_CONFERENCE)); } String preferredName = @@ -604,20 +602,16 @@ public class StatusBarNotifier if (contactInfo.photo == null) { int width = (int) resources.getDimension(android.R.dimen.notification_large_icon_width); int height = (int) resources.getDimension(android.R.dimen.notification_large_icon_height); - int contactType = LetterTileDrawable.TYPE_DEFAULT; + @ContactType + int contactType = + LetterTileDrawable.getContactTypeFromPrimitives( + CallerInfoUtils.isVoiceMailNumber(context, call), + call.isSpam(), + contactInfo.isBusiness, + call.getNumberPresentation(), + call.isConferenceCall() && !call.hasProperty(Details.PROPERTY_GENERIC_CONFERENCE)); LetterTileDrawable lettertile = new LetterTileDrawable(resources); - // TODO: Deduplicate across Dialer. b/36195917 - if (CallerInfoUtils.isVoiceMailNumber(context, call)) { - contactType = LetterTileDrawable.TYPE_VOICEMAIL; - } else if (contactInfo.isBusiness) { - contactType = LetterTileDrawable.TYPE_BUSINESS; - } else if (call.getNumberPresentation() == TelecomManager.PRESENTATION_RESTRICTED) { - contactType = LetterTileDrawable.TYPE_GENERIC_AVATAR; - } else if (call.isConferenceCall() - && !call.hasProperty(Details.PROPERTY_GENERIC_CONFERENCE)) { - contactType = LetterTileDrawable.TYPE_CONFERENCE; - } lettertile.setCanonicalDialerLetterTileDetails( contactInfo.namePrimary == null ? contactInfo.number : contactInfo.namePrimary, contactInfo.lookupKey, @@ -663,13 +657,17 @@ public class StatusBarNotifier return R.drawable.quantum_ic_videocam_white_24; } else if (call.hasProperty(PROPERTY_HIGH_DEF_AUDIO) && MotorolaUtils.shouldShowHdIconInNotification(mContext)) { - // Normally when a call is ongoing the status bar displays an icon of a phone with animated - // lines. This is a helpful hint for users so they know how to get back to the call. - // For Sprint HD calls, we replace this icon with an icon of a phone with a HD badge. - // This is a carrier requirement. + // Normally when a call is ongoing the status bar displays an icon of a phone. This is a + // helpful hint for users so they know how to get back to the call. For Sprint HD calls, we + // replace this icon with an icon of a phone with a HD badge. This is a carrier requirement. return R.drawable.ic_hd_call; } - return R.anim.on_going_call; + // If ReturnToCall is enabled, use the static icon. The animated one will show in the bubble. + if (ReturnToCallController.isEnabled(mContext)) { + return R.drawable.quantum_ic_call_white_24; + } else { + return R.drawable.on_going_call; + } } /** Returns the message to use with the notification. */ @@ -694,20 +692,10 @@ public class StatusBarNotifier } if (isIncomingOrWaiting) { - EnrichedCallManager manager = EnrichedCallComponent.get(mContext).getEnrichedCallManager(); - Session session = null; - if (call.getNumber() != null) { - session = - manager.getSession( - call.getUniqueCallId(), - call.getNumber(), - manager.createIncomingCallComposerFilter()); - } - if (call.isSpam()) { resId = R.string.notification_incoming_spam_call; - } else if (session != null) { - resId = getECIncomingCallText(session); + } else if (shouldShowEnrichedCallNotification(call.getEnrichedCallSession())) { + resId = getECIncomingCallText(call.getEnrichedCallSession()); } else if (call.hasProperty(Details.PROPERTY_WIFI)) { resId = R.string.notification_incoming_call_wifi; } else { @@ -731,6 +719,13 @@ public class StatusBarNotifier return mContext.getString(resId); } + private boolean shouldShowEnrichedCallNotification(Session session) { + if (session == null) { + return false; + } + return session.getMultimediaData().hasData() || session.getMultimediaData().isImportant(); + } + private int getECIncomingCallText(Session session) { int resId; MultimediaData data = session.getMultimediaData(); @@ -756,8 +751,10 @@ public class StatusBarNotifier } else { resId = R.string.important_notification_incoming_call_with_photo; } - } else { + } else if (hasSubject) { resId = R.string.important_notification_incoming_call_with_message; + } else { + resId = R.string.important_notification_incoming_call; } if (mContext.getString(resId).length() > 50) { resId = R.string.important_notification_incoming_call_attachments; @@ -827,13 +824,9 @@ public class StatusBarNotifier "will show \"answer\" action in the incoming call Notification"); PendingIntent answerVoicePendingIntent = createNotificationPendingIntent(mContext, ACTION_ANSWER_VOICE_INCOMING_CALL); - // We put animation resources in "anim" folder instead of "drawable", which causes Android - // Studio to complain. - // TODO: Move "anim" resources to "drawable" as recommended in AnimationDrawable doc? - //noinspection ResourceType builder.addAction( new Notification.Action.Builder( - Icon.createWithResource(mContext, R.anim.on_going_call), + Icon.createWithResource(mContext, R.drawable.quantum_ic_call_white_24), getActionText( R.string.notification_action_answer, R.color.notification_action_accept), answerVoicePendingIntent) @@ -931,7 +924,7 @@ public class StatusBarNotifier builder.setOngoing(true); builder.setOnlyAlertOnce(true); // This will be ignored on O+ and handled by the channel - //noinspection deprecation + // noinspection deprecation builder.setPriority(Notification.PRIORITY_HIGH); return builder; @@ -1005,6 +998,9 @@ public class StatusBarNotifier @Override public void onInternationalCallOnWifi() {} + @Override + public void onEnrichedCallSessionUpdate() {} + /** * Responds to changes in the session modification state for the call by dismissing the status * bar notification as required. diff --git a/java/com/android/incallui/VideoCallPresenter.java b/java/com/android/incallui/VideoCallPresenter.java index 31999ef2e1238d370d4717b722dc1163e52082e3..bd9837097d692c5359c613cc38aa1a1ab0fb41dd 100644 --- a/java/com/android/incallui/VideoCallPresenter.java +++ b/java/com/android/incallui/VideoCallPresenter.java @@ -27,9 +27,9 @@ import android.telecom.VideoProfile.CameraCapabilities; import android.view.Surface; import android.view.SurfaceView; import com.android.dialer.common.Assert; -import com.android.dialer.common.ConfigProviderBindings; import com.android.dialer.common.LogUtil; import com.android.dialer.compat.CompatUtils; +import com.android.dialer.configprovider.ConfigProviderBindings; import com.android.incallui.InCallPresenter.InCallDetailsListener; import com.android.incallui.InCallPresenter.InCallOrientationListener; import com.android.incallui.InCallPresenter.InCallStateListener; diff --git a/java/com/android/incallui/answer/impl/AnswerFragment.java b/java/com/android/incallui/answer/impl/AnswerFragment.java index 1f0541c4bf19b25659459cf66c32bcd2c75fe5a5..44310536d003ddba71312e7124560abac02741b1 100644 --- a/java/com/android/incallui/answer/impl/AnswerFragment.java +++ b/java/com/android/incallui/answer/impl/AnswerFragment.java @@ -216,6 +216,7 @@ public class AnswerFragment extends Fragment private void performAnswerAndRelease() { restoreAnswerAndReleaseButtonAnimation(); answerScreenDelegate.onAnswerAndReleaseCall(); + buttonAcceptClicked = true; } private void restoreAnswerAndReleaseButtonAnimation() { @@ -358,6 +359,11 @@ public class AnswerFragment extends Fragment return instance; } + @Override + public boolean isActionTimeout() { + return (buttonAcceptClicked || buttonRejectClicked) && answerScreenDelegate.isActionTimeout(); + } + @Override @NonNull public String getCallId() { @@ -427,8 +433,10 @@ public class AnswerFragment extends Fragment if (allowAnswerAndRelease()) { answerAndReleaseButton.setVisibility(View.VISIBLE); + answerScreenDelegate.onAnswerAndReleaseButtonEnabled(); } else { answerAndReleaseButton.setVisibility(View.INVISIBLE); + answerScreenDelegate.onAnswerAndReleaseButtonDisabled(); } } @@ -524,6 +532,7 @@ public class AnswerFragment extends Fragment if (!isAdded()) { return; } + LogUtil.enterBlock("AnswerFragment.updateDataFragment"); Fragment current = getChildFragmentManager().findFragmentById(R.id.incall_data_container); Fragment newFragment = null; @@ -540,6 +549,7 @@ public class AnswerFragment extends Fragment || !Objects.equals(((MultimediaFragment) current).getSubject(), subject) || !Objects.equals(((MultimediaFragment) current).getImageUri(), imageUri) || !Objects.equals(((MultimediaFragment) current).getLocation(), location)) { + LogUtil.i("AnswerFragment.updateDataFragment", "Replacing multimedia fragment"); // Needs replacement newFragment = MultimediaFragment.newInstance( @@ -551,12 +561,14 @@ public class AnswerFragment extends Fragment } else if (shouldShowAvatar()) { // Needs Avatar if (!(current instanceof AvatarFragment)) { + LogUtil.i("AnswerFragment.updateDataFragment", "Replacing avatar fragment"); // Needs replacement newFragment = new AvatarFragment(); } } else { // Needs empty if (current != null) { + LogUtil.i("AnswerFragment.updateDataFragment", "Removing current fragment"); getChildFragmentManager().beginTransaction().remove(current).commitNow(); } contactGridManager.setAvatarImageView(null, 0, false); @@ -930,7 +942,7 @@ public class AnswerFragment extends Fragment if (hasCallOnHold()) { getAnswerMethod() .setHintText(getText(R.string.call_incoming_default_label_answer_and_release_third)); - } else { + } else if (primaryCallState.supportsCallOnHold) { getAnswerMethod() .setHintText(getText(R.string.call_incoming_default_label_answer_and_release_second)); } @@ -1019,7 +1031,7 @@ public class AnswerFragment extends Fragment } private void updateImportanceBadgeVisibility() { - if (!isAdded()) { + if (!isAdded() || getView() == null) { return; } diff --git a/java/com/android/incallui/answer/impl/PillDrawable.java b/java/com/android/incallui/answer/impl/PillDrawable.java deleted file mode 100644 index 57d84c45f3d2e5c3f009594fdccb08433ba6f0d0..0000000000000000000000000000000000000000 --- a/java/com/android/incallui/answer/impl/PillDrawable.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright (C) 2016 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License - */ - -package com.android.incallui.answer.impl; - -import android.graphics.Rect; -import android.graphics.drawable.GradientDrawable; - -/** Draws a pill-shaped background */ -public class PillDrawable extends GradientDrawable { - - public PillDrawable() { - super(); - setShape(RECTANGLE); - } - - @Override - protected void onBoundsChange(Rect r) { - super.onBoundsChange(r); - setCornerRadius(r.height() / 2); - } - - @Override - public void setShape(int shape) { - if (shape != GradientDrawable.RECTANGLE) { - throw new UnsupportedOperationException("PillDrawable must be a rectangle"); - } - super.setShape(shape); - } -} diff --git a/java/com/android/incallui/answer/impl/answermethod/res/layout/swipe_up_down_method.xml b/java/com/android/incallui/answer/impl/answermethod/res/layout/swipe_up_down_method.xml index 9a49075b8435d6453b7480ae8bcb679bd3c24258..600115e275b629ce70dcc56b586be1de530487ca 100644 --- a/java/com/android/incallui/answer/impl/answermethod/res/layout/swipe_up_down_method.xml +++ b/java/com/android/incallui/answer/impl/answermethod/res/layout/swipe_up_down_method.xml @@ -41,6 +41,7 @@ android:layout_marginBottom="116dp" android:layout_gravity="center_horizontal" android:alpha="0" + android:gravity="center_horizontal" android:text="@string/call_incoming_will_disconnect" android:textColor="@color/blue_grey_100" android:textSize="16sp" @@ -59,6 +60,7 @@ android:layout_marginBottom="18dp" android:layout_gravity="center_horizontal" android:focusable="false" + android:gravity="center_horizontal" android:text="@string/call_incoming_swipe_to_answer" android:textAlignment="center" android:textAppearance="@style/Dialer.Incall.TextAppearance.Hint"/> @@ -110,6 +112,7 @@ android:layout_gravity="center_horizontal" android:alpha="0" android:focusable="false" + android:gravity="center_horizontal" android:text="@string/call_incoming_swipe_to_reject" android:textAppearance="@style/Dialer.Incall.TextAppearance.Hint" tools:alpha="1"/> diff --git a/java/com/android/incallui/answer/impl/classifier/HumanInteractionClassifier.java b/java/com/android/incallui/answer/impl/classifier/HumanInteractionClassifier.java index 1d3d7ef22276b8cdec46f90d68be1b62cc4999d6..5e83dfc78707b1dc2bcefabc15196fda9c4c59e5 100644 --- a/java/com/android/incallui/answer/impl/classifier/HumanInteractionClassifier.java +++ b/java/com/android/incallui/answer/impl/classifier/HumanInteractionClassifier.java @@ -20,7 +20,7 @@ import android.content.Context; import android.hardware.SensorEvent; import android.util.DisplayMetrics; import android.view.MotionEvent; -import com.android.dialer.common.ConfigProviderBindings; +import com.android.dialer.configprovider.ConfigProviderBindings; /** An classifier trying to determine whether it is a human interacting with the phone or not. */ class HumanInteractionClassifier extends Classifier { diff --git a/java/com/android/incallui/answer/impl/hint/AnswerHintFactory.java b/java/com/android/incallui/answer/impl/hint/AnswerHintFactory.java index 77b45ec71f4ae38caabf5f1e154d2bcdb8b9d53e..94cf893f0e463d22b3eaae37dbdea92100ccf43a 100644 --- a/java/com/android/incallui/answer/impl/hint/AnswerHintFactory.java +++ b/java/com/android/incallui/answer/impl/hint/AnswerHintFactory.java @@ -23,9 +23,8 @@ import android.os.Build; import android.support.annotation.NonNull; import android.support.annotation.VisibleForTesting; import com.android.dialer.common.Assert; -import com.android.dialer.common.ConfigProvider; -import com.android.dialer.common.ConfigProviderBindings; import com.android.dialer.common.LogUtil; +import com.android.dialer.configprovider.ConfigProviderBindings; import com.android.dialer.util.DialerUtils; import com.android.incallui.util.AccessibilityUtil; @@ -35,8 +34,9 @@ import com.android.incallui.util.AccessibilityUtil; */ public class AnswerHintFactory { - private static final String CONFIG_ANSWER_HINT_ANSWERED_THRESHOLD_KEY = - "answer_hint_answered_threshold"; + @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE) + static final String CONFIG_ANSWER_HINT_ANSWERED_THRESHOLD_KEY = "answer_hint_answered_threshold"; + @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE) static final String CONFIG_ANSWER_HINT_WHITELISTED_DEVICES_KEY = "answer_hint_whitelisted_devices"; @@ -58,12 +58,7 @@ public class AnswerHintFactory { @NonNull public AnswerHint create(Context context, long puckUpDuration, long puckUpDelay) { - - if (shouldShowAnswerHint( - context, - ConfigProviderBindings.get(context), - DialerUtils.getDefaultSharedPreferenceForDeviceProtectedStorageContext(context), - Build.PRODUCT)) { + if (shouldShowAnswerHint(context, Build.PRODUCT)) { return new DotAnswerHint(context, puckUpDuration, puckUpDelay); } @@ -84,24 +79,23 @@ public class AnswerHintFactory { } @VisibleForTesting - static boolean shouldShowAnswerHint( - Context context, - ConfigProvider configProvider, - SharedPreferences sharedPreferences, - String device) { + static boolean shouldShowAnswerHint(Context context, String device) { if (AccessibilityUtil.isTouchExplorationEnabled(context)) { return false; } // Devices that has the legacy dialer installed are whitelisted as they are likely to go through // a UX change during updates. - if (!isDeviceWhitelisted(device, configProvider)) { + if (!isDeviceWhitelisted(context, device)) { return false; } // If the user has gone through the process a few times we can assume they have learnt the // method. - int answeredCount = sharedPreferences.getInt(ANSWERED_COUNT_PREFERENCE_KEY, 0); - long threshold = configProvider.getLong(CONFIG_ANSWER_HINT_ANSWERED_THRESHOLD_KEY, 3); + int answeredCount = + DialerUtils.getDefaultSharedPreferenceForDeviceProtectedStorageContext(context) + .getInt(ANSWERED_COUNT_PREFERENCE_KEY, 0); + long threshold = + ConfigProviderBindings.get(context).getLong(CONFIG_ANSWER_HINT_ANSWERED_THRESHOLD_KEY, 3); LogUtil.i( "AnswerHintFactory.shouldShowAnswerHint", "answerCount: %d, threshold: %d", @@ -115,8 +109,8 @@ public class AnswerHintFactory { * @param configProvider should provide a list of devices quoted with '/' concatenated to a * string. */ - private static boolean isDeviceWhitelisted(String device, ConfigProvider configProvider) { - return configProvider + private static boolean isDeviceWhitelisted(Context context, String device) { + return ConfigProviderBindings.get(context) .getString(CONFIG_ANSWER_HINT_WHITELISTED_DEVICES_KEY, DEFAULT_WHITELISTED_DEVICES_CSV) .contains("/" + device + "/"); } diff --git a/java/com/android/incallui/answer/impl/hint/PawImageLoaderImpl.java b/java/com/android/incallui/answer/impl/hint/PawImageLoaderImpl.java index 21154cadeb138abf8fdce16b467924981cad5ef0..05358d8315511acd455a9828e838e6c22e6ec824 100644 --- a/java/com/android/incallui/answer/impl/hint/PawImageLoaderImpl.java +++ b/java/com/android/incallui/answer/impl/hint/PawImageLoaderImpl.java @@ -24,7 +24,9 @@ import android.os.Build.VERSION_CODES; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import com.android.dialer.common.Assert; +import com.android.dialer.common.LogUtil; import com.android.dialer.util.DialerUtils; +import com.android.incallui.answer.impl.hint.PawSecretCodeListener.PawType; /** Decrypt the event payload to be shown if in a specific time range and the key is received. */ @TargetApi(VERSION_CODES.M) @@ -40,10 +42,25 @@ public final class PawImageLoaderImpl implements PawImageLoader { if (!preferences.getBoolean(PawSecretCodeListener.PAW_ENABLED_WITH_SECRET_CODE_KEY, false)) { return null; } - int drawableId = preferences.getInt(PawSecretCodeListener.PAW_DRAWABLE_ID_KEY, 0); - if (drawableId == 0) { - return null; + @PawType + int pawType = + preferences.getInt(PawSecretCodeListener.PAW_TYPE, PawSecretCodeListener.PAW_TYPE_INVALID); + + if (pawType == PawSecretCodeListener.PAW_TYPE_INVALID) { + LogUtil.i("PawImageLoaderImpl.loadPayload", "paw type not found, rerolling"); + PawSecretCodeListener.selectPawType(preferences); + pawType = + preferences.getInt( + PawSecretCodeListener.PAW_TYPE, PawSecretCodeListener.PAW_TYPE_INVALID); + } + + switch (pawType) { + case PawSecretCodeListener.PAW_TYPE_CAT: + return context.getDrawable(R.drawable.cat_paw); + case PawSecretCodeListener.PAW_TYPE_DOG: + return context.getDrawable(R.drawable.dog_paw); + default: + throw Assert.createAssertionFailException("unknown paw type " + pawType); } - return context.getDrawable(drawableId); } } diff --git a/java/com/android/incallui/answer/impl/hint/PawSecretCodeListener.java b/java/com/android/incallui/answer/impl/hint/PawSecretCodeListener.java index a8737c3634b21ad0b9b532b92a9999f04c24c03e..204c4e1315b1c17709b1ac46a8de36aa89316bbc 100644 --- a/java/com/android/incallui/answer/impl/hint/PawSecretCodeListener.java +++ b/java/com/android/incallui/answer/impl/hint/PawSecretCodeListener.java @@ -20,15 +20,16 @@ import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; -import android.preference.PreferenceManager; +import android.support.annotation.IntDef; import android.support.annotation.VisibleForTesting; import android.text.TextUtils; import android.widget.Toast; import com.android.dialer.common.Assert; -import com.android.dialer.common.ConfigProviderBindings; import com.android.dialer.common.LogUtil; +import com.android.dialer.configprovider.ConfigProviderBindings; import com.android.dialer.logging.DialerImpression.Type; import com.android.dialer.logging.Logger; +import com.android.dialer.util.DialerUtils; import java.util.Random; /** @@ -40,7 +41,20 @@ public class PawSecretCodeListener extends BroadcastReceiver { static final String CONFIG_PAW_SECRET_CODE = "paw_secret_code"; public static final String PAW_ENABLED_WITH_SECRET_CODE_KEY = "paw_enabled_with_secret_code"; - public static final String PAW_DRAWABLE_ID_KEY = "paw_drawable_id"; + + /** Which paw to show, must be {@link PawType} */ + public static final String PAW_TYPE = "paw_type"; + + /** Resource id is not stable across app versions. Use {@link #PAW_TYPE} instead. */ + @Deprecated public static final String PAW_DRAWABLE_ID_KEY = "paw_drawable_id"; + + /** Enum for all paws. */ + @IntDef({PAW_TYPE_INVALID, PAW_TYPE_CAT, PAW_TYPE_DOG}) + @interface PawType {} + + public static final int PAW_TYPE_INVALID = 0; + public static final int PAW_TYPE_CAT = 1; + public static final int PAW_TYPE_DOG = 2; @Override public void onReceive(Context context, Intent intent) { @@ -54,7 +68,8 @@ public class PawSecretCodeListener extends BroadcastReceiver { if (!TextUtils.equals(secretCode, host)) { return; } - SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context); + SharedPreferences preferences = + DialerUtils.getDefaultSharedPreferenceForDeviceProtectedStorageContext(context); boolean wasEnabled = preferences.getBoolean(PAW_ENABLED_WITH_SECRET_CODE_KEY, false); if (wasEnabled) { preferences.edit().putBoolean(PAW_ENABLED_WITH_SECRET_CODE_KEY, false).apply(); @@ -62,20 +77,24 @@ public class PawSecretCodeListener extends BroadcastReceiver { Logger.get(context).logImpression(Type.EVENT_ANSWER_HINT_DEACTIVATED); LogUtil.i("PawSecretCodeListener.onReceive", "PawAnswerHint disabled"); } else { - int drawableId; - if (new Random().nextBoolean()) { - drawableId = R.drawable.cat_paw; - } else { - drawableId = R.drawable.dog_paw; - } - preferences - .edit() - .putBoolean(PAW_ENABLED_WITH_SECRET_CODE_KEY, true) - .putInt(PAW_DRAWABLE_ID_KEY, drawableId) - .apply(); + selectPawType(preferences); Toast.makeText(context, R.string.event_activated, Toast.LENGTH_SHORT).show(); Logger.get(context).logImpression(Type.EVENT_ANSWER_HINT_ACTIVATED); LogUtil.i("PawSecretCodeListener.onReceive", "PawAnswerHint enabled"); } } + + public static void selectPawType(SharedPreferences preferences) { + @PawType int pawType; + if (new Random().nextBoolean()) { + pawType = PAW_TYPE_CAT; + } else { + pawType = PAW_TYPE_DOG; + } + preferences + .edit() + .putBoolean(PAW_ENABLED_WITH_SECRET_CODE_KEY, true) + .putInt(PAW_TYPE, pawType) + .apply(); + } } diff --git a/java/com/android/incallui/answer/impl/res/values-af/strings.xml b/java/com/android/incallui/answer/impl/res/values-af/strings.xml index 82a87963d7f82b6625a1023c846b9ab7b16ccc41..b155ee8745a00aa5c79f2757c5fecc6786d2726b 100644 --- a/java/com/android/incallui/answer/impl/res/values-af/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-af/strings.xml @@ -1,4 +1,20 @@ + + "Swiep vanaf ikoon om met boodskap af te wys" @@ -20,5 +36,5 @@ "Antwoord en beëindig die voortgesette oproep" "Video is af" "Swiep op met twee vingers om te antwoord. Swiep af met twee vingers om af te wys." - "Dringend" + "Belangrik" diff --git a/java/com/android/incallui/answer/impl/res/values-am/strings.xml b/java/com/android/incallui/answer/impl/res/values-am/strings.xml index 40869773ee71294b0bc3fbe47e9db6d64fc73996..c27705fd2db90c2307f461638d15dc561250ac42 100644 --- a/java/com/android/incallui/answer/impl/res/values-am/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-am/strings.xml @@ -1,4 +1,20 @@ + + "በመልዕክት ላለመቀበል ከአዶ ያንሸራቱ" @@ -20,5 +36,5 @@ "ይመልሱ እና በመካሄድ ላይ ያለ ጥሪን ይጨርሱ" "ቪዲዮ ጠፍቷል" "ለመመለስ በሁለት ጣት ወደ ላይ ያንሸራቱ። ላለመቀበል በሁለት ጣት ወደ ታች ያንሸራቱ።" - "አስቸኳይ" + "አስፈላጊ" diff --git a/java/com/android/incallui/answer/impl/res/values-ar/strings.xml b/java/com/android/incallui/answer/impl/res/values-ar/strings.xml index fc29c16fae7c8a889f2a657c73af85746797028a..e3f84fff5dab90e01f44d20fc135a5d3a4950b19 100644 --- a/java/com/android/incallui/answer/impl/res/values-ar/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-ar/strings.xml @@ -1,4 +1,20 @@ + + "تمرير سريع من الرمز للرفض مع إرسال رسالة" @@ -20,5 +36,5 @@ "الرد وإنهاء مكالمة جارية" "الفيديو قيد إيقاف التشغيل" "مرر بأصبعين لأعلى للرد. مرر بأصبعين لأسفل للرفض." - "عاجل" + "مهم" diff --git a/java/com/android/incallui/answer/impl/res/values-az/strings.xml b/java/com/android/incallui/answer/impl/res/values-az/strings.xml index fff561de3c4cfab8e148e7c993b04c3817971e2d..5d113b48d106271c4e702bdeadc6ac15dd56163d 100644 --- a/java/com/android/incallui/answer/impl/res/values-az/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-az/strings.xml @@ -1,4 +1,20 @@ + + "Mesaj göndərərək imtina etmək üçün ikonadan sürüşdürün" @@ -20,5 +36,5 @@ "Cavab verin və gedən zəngi bitirin" "Videoları deaktivdir" "Cavab vermək üçün iki barmaq ilə yuxarı sürüşdürün. İmtina etmək üçün iki barmaq ilə aşağı sürüşdürün." - "Vacib" + "Önəmli" diff --git a/java/com/android/incallui/answer/impl/res/values-b+sr+Latn/strings.xml b/java/com/android/incallui/answer/impl/res/values-b+sr+Latn/strings.xml index 7b29bfa66a166bc77962ef7befade25ff865c83e..3acc576d995fcfa547854e92c1e175afc6343036 100644 --- a/java/com/android/incallui/answer/impl/res/values-b+sr+Latn/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-b+sr+Latn/strings.xml @@ -1,4 +1,20 @@ + + "Prevucite od ikone da biste odbili porukom" @@ -20,5 +36,5 @@ "Javite se i završite poziv koji je u toku" "Kamera je isključena" "Prevucite nagore pomoću dva prsta da biste odgovorili. Prevucite nadole pomoću dva prsta da biste odbili." - "Hitno" + "Važno" diff --git a/java/com/android/incallui/answer/impl/res/values-be/strings.xml b/java/com/android/incallui/answer/impl/res/values-be/strings.xml index 228a80f7ffe5eb756f1e0850aa964c7ea3e3bcef..4f34150e6c830418ddf49d4d8bbfb3bfec7b0082 100644 --- a/java/com/android/incallui/answer/impl/res/values-be/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-be/strings.xml @@ -1,4 +1,20 @@ + + "Правядзіце ад значка, каб адхіліць, адправіўшы SMS" @@ -20,5 +36,5 @@ "Адказаць і скончыць бягучы выклік" "Відэа адключана" "Правядзіце двума пальцамі ўверх, каб адказаць; двума пальцамі ўніз – каб адхіліць." - "Тэрмінова" + "Важны" diff --git a/java/com/android/incallui/answer/impl/res/values-bg/strings.xml b/java/com/android/incallui/answer/impl/res/values-bg/strings.xml index 4e9422f00c7e302618a5c0712c5719d47d6695f1..54a5ab9467c9779ee5635285e61356c72e488856 100644 --- a/java/com/android/incallui/answer/impl/res/values-bg/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-bg/strings.xml @@ -1,4 +1,20 @@ + + "Прекарайте пръст от иконата, за да отхвърлите със съобщение" @@ -20,5 +36,5 @@ "Отговор и завършване на текущото обаждане" "Видеото е изключено" "Прекарайте два пръста нагоре за отговаряне, надолу за отхвърляне." - "Спешно" + "Важно" diff --git a/java/com/android/incallui/answer/impl/res/values-bn/strings.xml b/java/com/android/incallui/answer/impl/res/values-bn/strings.xml index 869f7b9ae6df80a1d4bcaa8a32cbfe6d9ec72b28..d2aa4c3f344b58b613af820278f44df0191757ab 100644 --- a/java/com/android/incallui/answer/impl/res/values-bn/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-bn/strings.xml @@ -1,4 +1,20 @@ + + "বার্তা সহ প্রত্যাখ্যান করতে আইকন থেকে সোয়াইপ করুন" @@ -20,5 +36,5 @@ "উত্তর দিন এবং চলছে এমন কল কেটে দিন" "ভিডিও বন্ধ আছে" "উত্তর দিতে উপরের দিকে, প্রত্যাখ্যান করতে নিচের দিকে দুই আঙুল দিয়ে সোয়াইপ করুন৷" - "জরুরি" + "গুরুত্বপূর্ণ" diff --git a/java/com/android/incallui/answer/impl/res/values-bs/strings.xml b/java/com/android/incallui/answer/impl/res/values-bs/strings.xml index b36e178f40789c4afadccc68b5e7de3ec291967a..e175887505c542d0b74207224d0aa77005e7ab84 100644 --- a/java/com/android/incallui/answer/impl/res/values-bs/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-bs/strings.xml @@ -1,4 +1,20 @@ + + "Prevucite preko ikone da odbijete porukom" @@ -20,5 +36,5 @@ "Odgovorite na poziv i završite ga" "Kamera je isključena" "Prevucite pomoću dva prsta prema gore da odgovorite. Prevucite pomoću dva prsta prema dolje da odbijete." - "Hitno" + "Važno" diff --git a/java/com/android/incallui/answer/impl/res/values-ca/strings.xml b/java/com/android/incallui/answer/impl/res/values-ca/strings.xml index 13b3b321a7e9a30a112ff14921bbb70a33a0a348..538e0d3e0db178674740abd363659032216d4d58 100644 --- a/java/com/android/incallui/answer/impl/res/values-ca/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-ca/strings.xml @@ -1,4 +1,20 @@ + + "Llisca des de la icona per rebutjar la trucada amb un missatge" @@ -20,5 +36,5 @@ "Respon a la trucada i finalitza l\'actual" "El vídeo està desactivat" "Llisca amb dos dits cap amunt per respondre a la trucada i cap avall per rebutjar-la." - "Urgent" + "Important" diff --git a/java/com/android/incallui/answer/impl/res/values-cs/strings.xml b/java/com/android/incallui/answer/impl/res/values-cs/strings.xml index 6c6903041df797d97e8edaae6166696b69ce034f..626409ead5bdb2aee54405a79fc829e41ce116fe 100644 --- a/java/com/android/incallui/answer/impl/res/values-cs/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-cs/strings.xml @@ -1,4 +1,20 @@ + + "Přejetím prstem od ikony hovor odmítnete a pošlete zprávu" @@ -20,5 +36,5 @@ "Přijmout hovor a ukončit probíhající hovor" "Video je vypnuté" "Přejetím dvěma prsty nahoru hovor přijmete. Přejetím dvěma prsty dolů jej odmítnete." - "Naléhavé" + "Důležité" diff --git a/java/com/android/incallui/answer/impl/res/values-da/strings.xml b/java/com/android/incallui/answer/impl/res/values-da/strings.xml index 3a87d44fe9082e21829bb4e9198e1599d653fe79..3870891169e2d341b491b68769684d7b0603cec3 100644 --- a/java/com/android/incallui/answer/impl/res/values-da/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-da/strings.xml @@ -1,4 +1,20 @@ + + "Stryg fra ikonet for at afvise med en besked" @@ -20,5 +36,5 @@ "Besvar, og afslut det igangværende opkald" "Video er deaktiveret" "Stryg op med to fingre for at besvare. Stryg ned med to fingre for at afvise." - "Haster" + "Vigtigt" diff --git a/java/com/android/incallui/answer/impl/res/values-de/strings.xml b/java/com/android/incallui/answer/impl/res/values-de/strings.xml index f4356d29f765f5f140bcd7ba00ddc3fdd6491b5b..ab3c33cc52d0c21709568e138626d8302cde4e5e 100644 --- a/java/com/android/incallui/answer/impl/res/values-de/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-de/strings.xml @@ -1,4 +1,20 @@ + + "Zum Ablehnen mit Nachricht vom Symbol wegwischen" @@ -20,5 +36,5 @@ "Nimm den Anruf an und beende den aktuellen Anruf" "Video deaktiviert" "Zum Annehmen mit zwei Fingern nach oben wischen. Zum Ablehnen mit zwei Fingern nach unten wischen." - "Dringend" + "Wichtig" diff --git a/java/com/android/incallui/answer/impl/res/values-el/strings.xml b/java/com/android/incallui/answer/impl/res/values-el/strings.xml index 9c9a0f35f86b993b469f2b934187ba8509ddf85f..d847aac54cc9309531b03f2d58baa86d7fe00690 100644 --- a/java/com/android/incallui/answer/impl/res/values-el/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-el/strings.xml @@ -1,4 +1,20 @@ + + "Σύρετε από το εικονίδιο προς τα έξω για απόρριψη του μηνύματος" @@ -20,5 +36,5 @@ "Απάντηση και τερματισμός κλήσης σε εξέλιξη" "Το βίντεο είναι ανενεργό" "Σύρετε με δύο δάχτυλα, προς τα επάνω για απάντηση και προς τα κάτω για απόρριψη." - "Επείγον" + "Σημαντικό" diff --git a/java/com/android/incallui/answer/impl/res/values-en-rAU/strings.xml b/java/com/android/incallui/answer/impl/res/values-en-rAU/strings.xml index fb8d156822f92aabac560d91119672ccf03d72bb..fe6aa4607473102c21dc05eb0fa66288b4545973 100644 --- a/java/com/android/incallui/answer/impl/res/values-en-rAU/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-en-rAU/strings.xml @@ -1,4 +1,20 @@ + + "Swipe from icon to decline with a message" @@ -20,5 +36,5 @@ "Answer and end ongoing call" "Video is off" "Swipe up with two fingers to answer. Swipe down with two fingers to decline." - "Urgent" + "Important" diff --git a/java/com/android/incallui/answer/impl/res/values-en-rGB/strings.xml b/java/com/android/incallui/answer/impl/res/values-en-rGB/strings.xml index fb8d156822f92aabac560d91119672ccf03d72bb..fe6aa4607473102c21dc05eb0fa66288b4545973 100644 --- a/java/com/android/incallui/answer/impl/res/values-en-rGB/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-en-rGB/strings.xml @@ -1,4 +1,20 @@ + + "Swipe from icon to decline with a message" @@ -20,5 +36,5 @@ "Answer and end ongoing call" "Video is off" "Swipe up with two fingers to answer. Swipe down with two fingers to decline." - "Urgent" + "Important" diff --git a/java/com/android/incallui/answer/impl/res/values-en-rIN/strings.xml b/java/com/android/incallui/answer/impl/res/values-en-rIN/strings.xml index fb8d156822f92aabac560d91119672ccf03d72bb..fe6aa4607473102c21dc05eb0fa66288b4545973 100644 --- a/java/com/android/incallui/answer/impl/res/values-en-rIN/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-en-rIN/strings.xml @@ -1,4 +1,20 @@ + + "Swipe from icon to decline with a message" @@ -20,5 +36,5 @@ "Answer and end ongoing call" "Video is off" "Swipe up with two fingers to answer. Swipe down with two fingers to decline." - "Urgent" + "Important" diff --git a/java/com/android/incallui/answer/impl/res/values-es-rUS/strings.xml b/java/com/android/incallui/answer/impl/res/values-es-rUS/strings.xml index 14928eeb69d6bd9a3a6c25e8e8817abfa2286a0f..60fcd014ed94de800e3857f8f86f998ef957115c 100644 --- a/java/com/android/incallui/answer/impl/res/values-es-rUS/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-es-rUS/strings.xml @@ -1,4 +1,20 @@ + + "Desliza desde el ícono para rechazar la llamada con un mensaje" @@ -20,5 +36,5 @@ "Responder y finalizar la llamada en curso" "El video está desactivado" "Desliza dos dedos hacia arriba para responder la llamada o hacia abajo para rechazarla." - "Urgente" + "Importante" diff --git a/java/com/android/incallui/answer/impl/res/values-es/strings.xml b/java/com/android/incallui/answer/impl/res/values-es/strings.xml index 972bbc503f6ce6301cfbd242efdca3805e790013..7b2f19a812d37b567cfcd6c9780b6e7da05a4251 100644 --- a/java/com/android/incallui/answer/impl/res/values-es/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-es/strings.xml @@ -1,4 +1,20 @@ + + "Desliza desde el icono para rechazar con mensaje" @@ -20,5 +36,5 @@ "Responder a una llamada y finalizar otra en curso" "El vídeo está desconectado" "Desliza dos dedos hacia arriba para responder o hacia abajo para rechazar la llamada." - "Urgente" + "Importante" diff --git a/java/com/android/incallui/answer/impl/res/values-et/strings.xml b/java/com/android/incallui/answer/impl/res/values-et/strings.xml index 9e303bb16427c4215d15b2e777f874b97e0237f2..b4632d1844f8e924b6739e921478e835b2aea5d3 100644 --- a/java/com/android/incallui/answer/impl/res/values-et/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-et/strings.xml @@ -1,4 +1,20 @@ + + "Sõnumiga keeldumiseks pühkige ikoonilt eemale" @@ -20,5 +36,5 @@ "Vastake ja lõpetage käimasolev kõne" "Video on välja lülitatud" "Vastamiseks pühkige kahe sõrmega üles. Keeldumiseks pühkige kahe sõrmega alla." - "Kiireloomuline" + "Tähtis" diff --git a/java/com/android/incallui/answer/impl/res/values-eu/strings.xml b/java/com/android/incallui/answer/impl/res/values-eu/strings.xml index a1f6d717d7a2286513ccbe726ace59e4d89c4a42..118a2c74d33c70d6dc140722f4a0f98b2e6b66dd 100644 --- a/java/com/android/incallui/answer/impl/res/values-eu/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-eu/strings.xml @@ -1,4 +1,20 @@ + + "Pasatu hatza ikonotik baztertzeko eta mezu bat bidaltzeko" @@ -20,5 +36,5 @@ "Erantzun eta amaitu uneko deia" "Desaktibatuta dago kamera" "Pasatu bi hatz gora erantzuteko; eta behera, baztertzeko." - "Premiazkoa" + "Garrantzitsua" diff --git a/java/com/android/incallui/answer/impl/res/values-fa/strings.xml b/java/com/android/incallui/answer/impl/res/values-fa/strings.xml index 28cf826197b394b9134dbfbeb01bd0ef709252e4..971b172ef634c83a20435a40c34ef858ff653d71 100644 --- a/java/com/android/incallui/answer/impl/res/values-fa/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-fa/strings.xml @@ -1,4 +1,20 @@ + + "برای رد کردن با ارسال پیام، انگشتتان را تند از روی نماد بکشید" @@ -20,5 +36,5 @@ "پاسخ دادن به تماس درحال انجام و پایان دادن به آن" "ویدیو خاموش است" "برای پاسخ‌گویی، دو انگشتتان را تند به بالا بکشید و برای رد کردن به پایین بکشید." - "فوری" + "مهم" diff --git a/java/com/android/incallui/answer/impl/res/values-fi/strings.xml b/java/com/android/incallui/answer/impl/res/values-fi/strings.xml index 8b8eac942f20c7c6996d107ddef4151c261d63aa..7ae9a1f875772562c634c39eaf9bbd16b93c0c97 100644 --- a/java/com/android/incallui/answer/impl/res/values-fi/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-fi/strings.xml @@ -1,4 +1,20 @@ + + "Hylkää ja kirjoita viesti pyyhkäisemällä kuvaketta." @@ -20,5 +36,5 @@ "Vastaa puheluun ja lopeta nykyinen puhelu" "Videokuva ei ole käytössä." "Vastaa pyyhkäisemällä ylös kahdella sormella. Hylkää pyyhkäisemällä alas kahdella sormella." - "Kiireellinen" + "Tärkeä" diff --git a/java/com/android/incallui/answer/impl/res/values-fr-rCA/strings.xml b/java/com/android/incallui/answer/impl/res/values-fr-rCA/strings.xml index 9ea27b89cdbb67963b2a896364c888c7d31a395b..ce454b5ce045a56b887132378cece77e0b31f4ef 100644 --- a/java/com/android/incallui/answer/impl/res/values-fr-rCA/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-fr-rCA/strings.xml @@ -1,4 +1,20 @@ + + "Balayez à partir de l\'icône pour refuser avec un message" @@ -20,5 +36,5 @@ "Répondre et mettre fin à l\'appel en cours" "La vidéo est désactivée" "Balayez vers le haut avec deux doigts pour répondre. Balayez vers le bas avec deux doigts pour refuser." - "Urgent" + "Important" diff --git a/java/com/android/incallui/answer/impl/res/values-fr/strings.xml b/java/com/android/incallui/answer/impl/res/values-fr/strings.xml index 3aa3c12c92ca304da5a54e656f110731a02612df..7f77ed0c812631774b419e02919689d72dd82626 100644 --- a/java/com/android/incallui/answer/impl/res/values-fr/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-fr/strings.xml @@ -1,4 +1,20 @@ + + "Appuyer sur l\'icône, puis balayer l\'écran pour refuser l\'appel en envoyant un message" @@ -20,5 +36,5 @@ "Répondre ou mettre fin à l\'appel en cours" "La vidéo est désactivée." "Balayez l\'écran avec deux doigts vers le haut pour répondre, ou vers le bas pour refuser l\'appel." - "Urgent" + "Importants" diff --git a/java/com/android/incallui/answer/impl/res/values-gl/strings.xml b/java/com/android/incallui/answer/impl/res/values-gl/strings.xml index 16c0f6969c5e6f34a127954b97fe186e843b6ff1..07e0c516de29c1023510b1f7a8cf1127429792d5 100644 --- a/java/com/android/incallui/answer/impl/res/values-gl/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-gl/strings.xml @@ -1,4 +1,20 @@ + + "Pasar o dedo desde a icona para rexeitar cunha mensaxe" @@ -20,5 +36,5 @@ "Responde á chamada entrante e finaliza a chamada en curso" "O vídeo está desactivado" "Pasa dous dedos cara arriba para responder a chamada ou cara abaixo para rexeitala." - "Urxente" + "Importante" diff --git a/java/com/android/incallui/answer/impl/res/values-gu/strings.xml b/java/com/android/incallui/answer/impl/res/values-gu/strings.xml index 3f99c7108a0cc8b121753a144a6a095d9e08464a..845e9def8a95752300c61c52bf9d4aa71146d974 100644 --- a/java/com/android/incallui/answer/impl/res/values-gu/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-gu/strings.xml @@ -1,4 +1,20 @@ + + "સંદેશ સાથે નકારવા માટે આઇકનથી સ્વાઇપ કરો" @@ -20,5 +36,5 @@ "જવાબ આપો અને ચાલુ કૉલ સમાપ્ત કરો" "વિડિઓ બંધ છે" "જવાબ આપવા માટે બે આંગળી ઉપર સ્વાઇપ કરો. નકારવા માટે બે આંગળી નીચે સ્વાઇપ કરો." - "તાત્કાલિક" + "મહત્વપૂર્ણ" diff --git a/java/com/android/incallui/answer/impl/res/values-hi/strings.xml b/java/com/android/incallui/answer/impl/res/values-hi/strings.xml index f28505f7c1988c66233635c8442de0c3cb554fa1..e8e3c75c4237463bb65bd819f0f88a89fe1f098c 100644 --- a/java/com/android/incallui/answer/impl/res/values-hi/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-hi/strings.xml @@ -1,4 +1,20 @@ + + "संदेश के साथ अस्वीकार करने के लिए आइकन से स्वाइप करें" @@ -20,5 +36,5 @@ "कॉल का जवाब दें और जारी कॉल समाप्त करें" "वीडियो बंद है" "जवाब देने के लिए दो अंगुलियों से ऊपर स्वाइप करें. अस्वीकार करने के लिए दो अंगुलियों से नीचे स्वाइप करें." - "बहुत ज़रूरी" + "महत्वपूर्ण" diff --git a/java/com/android/incallui/answer/impl/res/values-hr/strings.xml b/java/com/android/incallui/answer/impl/res/values-hr/strings.xml index 28074397622e387cc0ce6877c9978bc9af37e868..ffd0c9b8cbc19bf1fa090401c54faad3fa043308 100644 --- a/java/com/android/incallui/answer/impl/res/values-hr/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-hr/strings.xml @@ -1,4 +1,20 @@ + + "Prijeđite prstom od ikone da biste odbili poruku" @@ -20,5 +36,5 @@ "Odgovorite na poziv i prekinite poziv u tijeku" "Videokamera je isključena" "Prijeđite dvama prstima prema gore za odgovor, a dvama prstima prema dolje za odbijanje." - "Hitno" + "Važno" diff --git a/java/com/android/incallui/answer/impl/res/values-hu/strings.xml b/java/com/android/incallui/answer/impl/res/values-hu/strings.xml index d7dacbfe0a35e37772f5ee1eec5ee40d27d87a3b..13ec7da173087f0baebdbc19682bf8f79beedf6b 100644 --- a/java/com/android/incallui/answer/impl/res/values-hu/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-hu/strings.xml @@ -1,4 +1,20 @@ + + "Csúsztassa el az ujját az ikonról az üzenettel való elutasításhoz" @@ -20,5 +36,5 @@ "Hívásfogadás és a folyamatban lévő hívás befejezése" "A videokép ki van kapcsolva" "Csúsztassa felfelé két ujját a hívás fogadásához. Csúsztassa lefelé két ujját a hívás elutasításához." - "Sürgős" + "Fontos" diff --git a/java/com/android/incallui/answer/impl/res/values-hy/strings.xml b/java/com/android/incallui/answer/impl/res/values-hy/strings.xml index 4492833d98e5ac8fde019904f5ed8a5de9c68cb8..7fb7ef45f21e3cc7f307960d19e142a5744207fc 100644 --- a/java/com/android/incallui/answer/impl/res/values-hy/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-hy/strings.xml @@ -1,4 +1,20 @@ + + "Զանգը մերժելու և հաղորդագրություն ուղարկելու համար պատկերակից մատով մի կողմ սահեցրեք" @@ -20,5 +36,5 @@ "Պատասխանել և ավարտել ընթացիկ զանգը" "Տեսախցիկն անջատած է" "Պատասխանելու համար երկու մատով սահեցրեք վերև, մերժելու համար՝ ներքև:" - "Շտապ" + "Կարևոր" diff --git a/java/com/android/incallui/answer/impl/res/values-in/strings.xml b/java/com/android/incallui/answer/impl/res/values-in/strings.xml index a1fd19f6eb1f255610cb1126431153b1a8a83412..48d71af9a6b7af2b2e9ffca2f1817beec8bb05c0 100644 --- a/java/com/android/incallui/answer/impl/res/values-in/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-in/strings.xml @@ -1,4 +1,20 @@ + + "Gesek dari ikon untuk menolak dengan pesan" @@ -20,5 +36,5 @@ "Menjawab dan mengakhiri panggilan yang sedang berlangsung" "Video nonaktif" "Geser ke atas dengan dua jari untuk menjawab. Geser ke bawah dengan dua jari untuk menolak." - "Penting" + "Penting" diff --git a/java/com/android/incallui/answer/impl/res/values-is/strings.xml b/java/com/android/incallui/answer/impl/res/values-is/strings.xml index c4f9eb40c04e5f95c7935a292f06e162f822553b..a92a411ee09de61c3667703e8d73392022a036b2 100644 --- a/java/com/android/incallui/answer/impl/res/values-is/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-is/strings.xml @@ -1,4 +1,20 @@ + + "Strjúktu frá tákninu til að hafna með skilaboðum" @@ -20,5 +36,5 @@ "Svara og ljúka yfirstandandi símtali" "Slökkt á myndavél" "Strjúktu upp með tveimur fingrum til að svara. Strjúktu niður með tveimur fingrum til að hafna." - "Áríðandi" + "Mikilvægt" diff --git a/java/com/android/incallui/answer/impl/res/values-it/strings.xml b/java/com/android/incallui/answer/impl/res/values-it/strings.xml index 70e972212456c86ab82f8142dab6f47dc968b0ef..b29bca7c86742e36670e14416a1cfbc22f847ce0 100644 --- a/java/com/android/incallui/answer/impl/res/values-it/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-it/strings.xml @@ -1,4 +1,20 @@ + + "Fai scorrere dall\'icona per rifiutare e inviare un messaggio" @@ -20,5 +36,5 @@ "Rispondi e termina la chiamata in corso" "Il video è disattivato" "Fai scorrere con due dita verso l\'alto per rispondere e verso il basso per rifiutare." - "Urgente" + "Importante" diff --git a/java/com/android/incallui/answer/impl/res/values-iw/strings.xml b/java/com/android/incallui/answer/impl/res/values-iw/strings.xml index 08c02e3895d7dbd25cc0e60952a51589406b5c0f..6544e8f3cf56cc447e20e121f5bb4ee84d2a655c 100644 --- a/java/com/android/incallui/answer/impl/res/values-iw/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-iw/strings.xml @@ -1,4 +1,20 @@ + + "החלק מהסמל כדי לדחות עם הודעה" @@ -20,5 +36,5 @@ "מענה וסיום שיחה" "הווידאו מושבת" "החלק עם שתי אצבעות למעלה כדי לענות או למטה כדי לדחות." - "דחופה" + "חשוב" diff --git a/java/com/android/incallui/answer/impl/res/values-ja/strings.xml b/java/com/android/incallui/answer/impl/res/values-ja/strings.xml index b7bd65bc45c0e64718aba5ccb4762963585aa73b..83f8f094a737a2590d7a0b24d9237a5323c6568b 100644 --- a/java/com/android/incallui/answer/impl/res/values-ja/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-ja/strings.xml @@ -1,4 +1,20 @@ + + "アイコンをスワイプして着信を拒否し、メッセージを送信" @@ -20,5 +36,5 @@ "通話に応答し、進行中の通話を終了" "ビデオ: OFF" "応答するには 2 本の指で上にスワイプ、拒否するには 2 本の指で下にスワイプします。" - "緊急" + "重要" diff --git a/java/com/android/incallui/answer/impl/res/values-ka/strings.xml b/java/com/android/incallui/answer/impl/res/values-ka/strings.xml index 681306776f7b13f58cee876f211a8e5aee7ecdb1..4a1120c6936aec75e84e6ef8c1f20d81c5fdf552 100644 --- a/java/com/android/incallui/answer/impl/res/values-ka/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-ka/strings.xml @@ -1,4 +1,20 @@ + + "გადაუსვით ხატულადან შეტყობინებით უარყოფისთვის" @@ -20,5 +36,5 @@ "პასუხი და მიმდინარე ზარის დასრულება" "ვიდეო გამორთულია" "საპასუხოდ გადაფურცლეთ ზემოთ ორი თითით. უარყოფისთვის გადაფურცლეთ ქვემოთ ორი თითით." - "სასწრაფო" + "მნიშვნელოვანი" diff --git a/java/com/android/incallui/answer/impl/res/values-kk/strings.xml b/java/com/android/incallui/answer/impl/res/values-kk/strings.xml index 3d1863323e4dda0ad4f3d25e376a2e9631f1e538..69cf9497dd72bd7f7b7a33ba92588396e6c97553 100644 --- a/java/com/android/incallui/answer/impl/res/values-kk/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-kk/strings.xml @@ -1,4 +1,20 @@ + + "Қабылдамай, жай хабар жіберу үшін, белгішеден әрі қарай сырғытыңыз" @@ -20,5 +36,5 @@ "Қоңырауға жауап беру және ағымдағы қоңырауды аяқтау" "Бейне өшірулі" "Жауап беру үшін екі саусақпен жоғары сырғытылады. Қабылдамау үшін екі саусақпен төмен сырғытылады." - "Шұғыл" + "Маңызды" diff --git a/java/com/android/incallui/answer/impl/res/values-km/strings.xml b/java/com/android/incallui/answer/impl/res/values-km/strings.xml index 89f9031e971d8d9f3006f942d05f7f1364feb673..db65a97f5280c5591b6efd372a9ed2773b357301 100644 --- a/java/com/android/incallui/answer/impl/res/values-km/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-km/strings.xml @@ -1,4 +1,20 @@ + + "អូស​ចេញ​ពី​រូបតំណាង​ដើម្បី​បដិសេធ​​ដោយ​មាន​សារ" @@ -20,5 +36,5 @@ "ឆ្លើយ និង​បញ្ចប់​ការ​ហៅ​ទូរសព្ទ​ដែល​កំពុង​ដំណើរការ" "វីដេអូត្រូវបានបិទ" "អូស​ម្រាម​ដៃ​ពីរ​ឡើងលើ​ ដើម្បី​ឆ្លើយ។ អូស​ម្រាមដៃ​ពីរ​ចុះ​ក្រោម​ ដើម្បី​បដិសេធ។" - "បន្ទាន់" + "សំខាន់" diff --git a/java/com/android/incallui/answer/impl/res/values-kn/strings.xml b/java/com/android/incallui/answer/impl/res/values-kn/strings.xml index f02a6b8a347b9c07ace6c3f5553078464ca87358..8426aef46761b481e752074efb503188222b838a 100644 --- a/java/com/android/incallui/answer/impl/res/values-kn/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-kn/strings.xml @@ -1,4 +1,20 @@ + + "ಸಂದೇಶದ ಜೊತೆಗೆ ನಿರಾಕರಿಸಲು ಐಕಾನ್‌ನಿಂದ ಸ್ವೈಪ್ ಮಾಡಿ" @@ -20,5 +36,5 @@ "ಚಾಲ್ತಿಯಲ್ಲಿರುವ ಕರೆಗೆ ಉತ್ತರಿಸಿ ಮತ್ತು ಅಂತ್ಯಗೊಳಿಸಿ" "ವೀಡಿಯೊ ಆಫ್ ಆಗಿದೆ" "ಉತ್ತರಿಸಲು ಎರಡು ಬೆರಳಿನಿಂದ ಮೇಲಕ್ಕೆ ಸ್ವೈಪ್ ಮಾಡಿ. ನಿರಾಕರಿಸಲು ಎರಡು ಬೆರಳಿನಿಂದ ಕೆಳಗೆ ಸ್ವೈಪ್ ಮಾಡಿ." - "ತುರ್ತು" + "ಪ್ರಮುಖ" diff --git a/java/com/android/incallui/answer/impl/res/values-ko/strings.xml b/java/com/android/incallui/answer/impl/res/values-ko/strings.xml index 850b4400767d793a4e1476b24b93162312faec39..6b6beff85815de1469423b76743b4381bf753cf0 100644 --- a/java/com/android/incallui/answer/impl/res/values-ko/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-ko/strings.xml @@ -1,4 +1,20 @@ + + "메시지를 거부하려면 아이콘에서 스와이프하세요." @@ -20,5 +36,5 @@ "현재 통화를 종료하고 전화 받기" "동영상이 꺼져 있습니다." "받으려면 두 손가락을 위로 스와이프하고 거부하려면 두 손가락을 아래로 스와이프하세요." - "긴급" + "중요" diff --git a/java/com/android/incallui/answer/impl/res/values-ky/strings.xml b/java/com/android/incallui/answer/impl/res/values-ky/strings.xml index dc08e8449beb871bdc816a829575f5e162fd1761..6dd5a2dd75fb117cb508bd43e9f90f14d87c015f 100644 --- a/java/com/android/incallui/answer/impl/res/values-ky/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-ky/strings.xml @@ -1,4 +1,20 @@ + + "Чалууну билдирүү менен четке кагуу үчүн сүрөтчөнү сүрүңүз" @@ -20,5 +36,5 @@ "Чалууга жооп бериңиз же учурдагы чалууну аяктаңыз" "Видео өчүк" "Жооп берүү үчүн экранды өйдө сүрүп, четке кагуу үчүн ылдый сүрүп коюңуз." - "Шашылыш" + "Маанилүү" diff --git a/java/com/android/incallui/answer/impl/res/values-lo/strings.xml b/java/com/android/incallui/answer/impl/res/values-lo/strings.xml index 06ad00c884582e7a17f1326fcbe31e39c64304de..776c027b528fd443ebda9049962ce2a0621f1fe1 100644 --- a/java/com/android/incallui/answer/impl/res/values-lo/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-lo/strings.xml @@ -1,4 +1,20 @@ + + "ປັດຈາກໄອຄອນເພື່ອປະຕິເສດຂໍ້ຄວາມ" @@ -20,5 +36,5 @@ "ຮັບສາຍ ແລະ ວາງສາຍທີ່ກຳລັງໂທອອກ" "ວິດີໂອປິດຢູ່" "ປັດສອງນິ້ວຂຶ້ນເພື່ອຮັບສາຍ. ປັດສອງນິ້ວລົງເພື່ອປະຕິເສດ." - "ດ່ວນ" + "ສຳຄັນ" diff --git a/java/com/android/incallui/answer/impl/res/values-lt/strings.xml b/java/com/android/incallui/answer/impl/res/values-lt/strings.xml index 3366e337b5df813a3536722e36429b87a13818a2..2ef70eaff077b06852f242ec5d96a5205864650d 100644 --- a/java/com/android/incallui/answer/impl/res/values-lt/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-lt/strings.xml @@ -1,4 +1,20 @@ + + "Perbraukite iš piktogramos, kad atmestumėte išsiųsdami pranešimą" @@ -20,5 +36,5 @@ "Atsakykite ir užbaikite vykstantį skambutį" "Vaizdas išjungtas" "Perbraukite dviem pirštais aukštyn, kad atsakytumėte. Perbraukite dviem pirštais žemyn, kad atmestumėte." - "Skubus" + "Svarbu" diff --git a/java/com/android/incallui/answer/impl/res/values-lv/strings.xml b/java/com/android/incallui/answer/impl/res/values-lv/strings.xml index 49d1dc9f4631e9ced5a8111989c6edf217c229ed..3fc754db4c17d2d0018086032cf77386f5242487 100644 --- a/java/com/android/incallui/answer/impl/res/values-lv/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-lv/strings.xml @@ -1,4 +1,20 @@ + + "Lai noraidītu, izmantojot ziņojumu, velciet no ikonas" @@ -20,5 +36,5 @@ "Atbildiet un beidziet notiekošo zvanu" "Video ir izslēgts" "Ar diviem pirkstiem velciet augšup, lai atbildētu. Ar diviem pirkstiem velciet lejup, lai noraidītu." - "Steidzams" + "Svarīgs" diff --git a/java/com/android/incallui/answer/impl/res/values-mk/strings.xml b/java/com/android/incallui/answer/impl/res/values-mk/strings.xml index c068f665b96e4c41533c386529060c25d72df7d1..deeba45e60172031e9be1947f7f519bd2d07e26d 100644 --- a/java/com/android/incallui/answer/impl/res/values-mk/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-mk/strings.xml @@ -1,4 +1,20 @@ + + "Повлечете од иконата за да одбиете со порака" @@ -20,5 +36,5 @@ "Одговорете и завршете го тековниот повик" "Видеото е исклучено" "Повлечете нагоре со два прста за да одговорите. Повлечете надолу со два прста за да одбиете." - "Итно" + "Важно" diff --git a/java/com/android/incallui/answer/impl/res/values-ml/strings.xml b/java/com/android/incallui/answer/impl/res/values-ml/strings.xml index 8e1d492e7dc1e9cfd92e1026ee6d7b548948b2ac..d8ce90dab0a63dd34376d75ad52f62e7c1ddfc49 100644 --- a/java/com/android/incallui/answer/impl/res/values-ml/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-ml/strings.xml @@ -1,4 +1,20 @@ + + "സന്ദേശമയച്ചുകൊണ്ട് നിരസിക്കാൻ ഐക്കണിൽ നിന്ന് സ്വൈപ്പുചെയ്യുക" @@ -20,5 +36,5 @@ "മറുപടി നൽകുകയും നിലവിലുള്ള കോൾ അവസാനിപ്പിക്കുകയും ചെയ്യൂ" "വീഡിയോ ഓഫാണ്" "മറുപടി നൽകാൻ രണ്ടുവിരലുകൾ ഉപയോഗിച്ച് മുകളിലേക്ക് സ്വൈപ്പുചെയ്യുക. നിരസിക്കാൻ രണ്ടുവിരലുകൾ ഉപയോഗിച്ച് താഴേക്ക് സ്വൈപ്പുചെയ്യുക." - "അടിയന്തിര പ്രാധാന്യം" + "പ്രധാനപ്പെട്ടവ" diff --git a/java/com/android/incallui/answer/impl/res/values-mn/strings.xml b/java/com/android/incallui/answer/impl/res/values-mn/strings.xml index 4bdd912adc18b6756396dd3a04856b9eed7dca64..aaa16213a58c9a6ece3cbee9943fb8c8d7303c5a 100644 --- a/java/com/android/incallui/answer/impl/res/values-mn/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-mn/strings.xml @@ -1,4 +1,20 @@ + + "Зурвас явуулангаа татгалзах бол дүрснээс шударна уу" @@ -20,5 +36,5 @@ "Ирсэн дуудлагыг авч, одоогийн дуудлагыг таслах" "Видео идэвхгүй байна" "Хариулах бол хоёр хуруугаар дээш шударна уу. Таслах бол хоёр хуруугаар доош шударна уу." - "Яаралтай" + "Чухал" diff --git a/java/com/android/incallui/answer/impl/res/values-mr/strings.xml b/java/com/android/incallui/answer/impl/res/values-mr/strings.xml index 11c826896bfa356ebbc79aa102c682065fd73189..eea662fa11892abff70e5ae119f9987f248f531e 100644 --- a/java/com/android/incallui/answer/impl/res/values-mr/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-mr/strings.xml @@ -1,4 +1,20 @@ + + "संदेशासह नाकारण्यासाठी आयकॉनपासून स्वाइप करा" @@ -20,5 +36,5 @@ "उत्तर द्या आणि सुरु असलेला कॉल बंद करा" "व्हिडिओ बंद आहे" "उत्तर देण्यासाठी दोन बोटांनी वर स्वाइप करा. नकार देण्यासाठी दोन बोटांनी खाली स्वाइप करा." - "त्वरित" + "महत्त्वाचे" diff --git a/java/com/android/incallui/answer/impl/res/values-ms/strings.xml b/java/com/android/incallui/answer/impl/res/values-ms/strings.xml index 36ede756807eadf37e98ad06e96b433dca9d0aec..04b054e4ef1a38f7d86f2dcb64c2a0be8406aec1 100644 --- a/java/com/android/incallui/answer/impl/res/values-ms/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-ms/strings.xml @@ -1,4 +1,20 @@ + + "Leret dari ikon untuk menolak dengan mesej" @@ -20,5 +36,5 @@ "Jawab dan tamatkan panggilan yang sedang berlangsung" "Video dimatikan" "Leret dua jari ke atas untuk menjawab. Leret dua jari ke bawah untuk menolak." - "Segera" + "Penting" diff --git a/java/com/android/incallui/answer/impl/res/values-my/strings.xml b/java/com/android/incallui/answer/impl/res/values-my/strings.xml index 5ad7a8284b408d9ceecd48b4967e6b09acd9e91a..f3d6a2e3818e2be74e3dae6b8404a8e5673d8370 100644 --- a/java/com/android/incallui/answer/impl/res/values-my/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-my/strings.xml @@ -1,4 +1,20 @@ + + "မက်ဆေ့ဂျ်ဖြင့်ငြင်းပယ်ရန် သင်္ကေတမှ ပွတ်ဆွဲပါ" @@ -20,5 +36,5 @@ "ဖြေကြားပြီး လက်ရှိခေါ်ဆိုမှုကို အပြီးသတ်ပါ" "ဗီဒီယို ပိတ်ထားပါသည်" "ဖြေကြားရန် လက်နှစ်ချောင်းဖြင့် အပေါ်သို့ ပွတ်ဆွဲပါ။ ငြင်းပယ်ရန် လက်နှစ်ချောင်းဖြင့် အောက်သို့ ပွတ်ဆွဲပါ။" - "အရေးတကြီး" + "အရေးကြီး" diff --git a/java/com/android/incallui/answer/impl/res/values-nb/strings.xml b/java/com/android/incallui/answer/impl/res/values-nb/strings.xml index b1c32bea44d6cdea75938025d871705ab257ea50..42ff3d0af640216e0aa4da816a590eb5b1d55319 100644 --- a/java/com/android/incallui/answer/impl/res/values-nb/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-nb/strings.xml @@ -1,4 +1,20 @@ + + "Sveip fra ikonet for å avslå med en melding" @@ -20,5 +36,5 @@ "Svar, og avslutt samtalen som er i gang" "Video er av" "Sveip oppover med to fingre for å svare. Sveip nedover med to fingre for å avvise." - "Haster" + "Viktig" diff --git a/java/com/android/incallui/answer/impl/res/values-ne/strings.xml b/java/com/android/incallui/answer/impl/res/values-ne/strings.xml index 40ef7b6e313ce7e90ca0a17b1155b74faa788632..f0b8641af85589c7c44830f480ebb14df99b0963 100644 --- a/java/com/android/incallui/answer/impl/res/values-ne/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-ne/strings.xml @@ -1,4 +1,20 @@ + + "सन्देश सहित अस्वीकार गर्न आइकनबाट स्वाइप गर्नुहोस्" @@ -20,5 +36,5 @@ "जवाफ फर्काउनुहोस् र जारी कललाई अन्त्य गर्नुहोस्" "भिडियो निष्क्रिय छ" "जवाफ दिन दुई औंलाले माथितिर स्वाइप गर्नुहोस्। अस्वीकार गर्न दुई औंलाले तलतिर स्वाइप गर्नुहोस्।" - "जरुरी" + "महत्त्वपूर्ण" diff --git a/java/com/android/incallui/answer/impl/res/values-nl/strings.xml b/java/com/android/incallui/answer/impl/res/values-nl/strings.xml index b2f619fa3346c1b34f5ba2abf3c89fc7bc38eeea..89c956a9f811d59166c8d7565154e76616f1dd76 100644 --- a/java/com/android/incallui/answer/impl/res/values-nl/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-nl/strings.xml @@ -1,4 +1,20 @@ + + "Veeg vanaf pictogram om te weigeren met bericht" @@ -20,5 +36,5 @@ "Opnemen en actieve oproep beëindigen" "Video is uit" "Veeg met twee vingers omhoog om te beantwoorden. Veeg met twee vingers omlaag om te weigeren." - "Urgent" + "Belangrijk" diff --git a/java/com/android/incallui/answer/impl/res/values-no/strings.xml b/java/com/android/incallui/answer/impl/res/values-no/strings.xml index b1c32bea44d6cdea75938025d871705ab257ea50..42ff3d0af640216e0aa4da816a590eb5b1d55319 100644 --- a/java/com/android/incallui/answer/impl/res/values-no/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-no/strings.xml @@ -1,4 +1,20 @@ + + "Sveip fra ikonet for å avslå med en melding" @@ -20,5 +36,5 @@ "Svar, og avslutt samtalen som er i gang" "Video er av" "Sveip oppover med to fingre for å svare. Sveip nedover med to fingre for å avvise." - "Haster" + "Viktig" diff --git a/java/com/android/incallui/answer/impl/res/values-pa/strings.xml b/java/com/android/incallui/answer/impl/res/values-pa/strings.xml index d2b14523cdbf0415939dc3166b375cd3048f9617..3772f291f59b54bb4ec22b2d1e686adaa755f263 100644 --- a/java/com/android/incallui/answer/impl/res/values-pa/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-pa/strings.xml @@ -1,4 +1,20 @@ + + "ਸੁਨੇਹੇ ਦੇ ਨਾਲ ਅਸਵੀਕਾਰ ਕਰਨ ਲਈ ਚਿੰਨ੍ਹ ਤੋਂ ਸਵਾਈਪ ਕਰੋ" @@ -20,5 +36,5 @@ "ਜਵਾਬ ਦਿਓ ਅਤੇ ਜਾਰੀ ਕਾਲ ਨੂੰ ਸਮਾਪਤ ਕਰੋ" "ਵੀਡੀਓ ਬੰਦ ਹੈ" "ਜਵਾਬ ਦੇਣ ਲਈ ਦੋ ਉਂਗਲਾਂ ਨਾਲ ਉੱਪਰ ਵੱਲ ਸਵਾਈਪ ਕਰੋ। ਅਸਵੀਕਾਰ ਕਰਨ ਲਈ ਦੋ ਉਂਗਲਾਂ ਨਾਲ ਹੇਠਾਂ ਵੱਲ ਸਵਾਈਪ ਕਰੋ।" - "ਜ਼ਰੂਰੀ" + "ਮਹੱਤਵਪੂਰਨ" diff --git a/java/com/android/incallui/answer/impl/res/values-pl/strings.xml b/java/com/android/incallui/answer/impl/res/values-pl/strings.xml index b0c44e72a1e5a013a3299ab55b4d236e51f608f5..f6e1f1ba4f3645a6ab52b0c8d35e785859f6df98 100644 --- a/java/com/android/incallui/answer/impl/res/values-pl/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-pl/strings.xml @@ -1,4 +1,20 @@ + + "Przesuń palcem od ikony, aby odrzucić połączenie i wysłać wiadomość" @@ -20,5 +36,5 @@ "Odbierz połączenie i zakończ trwającą rozmowę" "Wideo jest wyłączone" "Przesuń dwoma palcami w górę, aby odebrać. Przesuń dwoma palcami w dół, aby odrzucić." - "Pilne" + "Ważne" diff --git a/java/com/android/incallui/answer/impl/res/values-pt-rBR/strings.xml b/java/com/android/incallui/answer/impl/res/values-pt-rBR/strings.xml index fe1c89de41c5a57989675750934075e292ad4241..1ed245140d8490c0ab511fed1ec4d5cd3fb81fc5 100644 --- a/java/com/android/incallui/answer/impl/res/values-pt-rBR/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-pt-rBR/strings.xml @@ -1,4 +1,20 @@ + + "Deslize a partir do ícone para recusar com uma mensagem" @@ -20,5 +36,5 @@ "Atender e encerrar a chamada em andamento" "O vídeo está desativado" "Deslize com dois dedos para cima para atender. Deslize com dois dedos para baixo para recusar." - "Urgente" + "Importante" diff --git a/java/com/android/incallui/answer/impl/res/values-pt-rPT/strings.xml b/java/com/android/incallui/answer/impl/res/values-pt-rPT/strings.xml index 1a23a4a9d25e683629d6a0f73103bdc3ea461188..f1e17a1d9a71256ba49ddee997b33af0609038de 100644 --- a/java/com/android/incallui/answer/impl/res/values-pt-rPT/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-pt-rPT/strings.xml @@ -1,4 +1,20 @@ + + "Deslize rapidamente a partir do ícone para recusar com uma mensagem" @@ -20,5 +36,5 @@ "Atender e terminar uma chamada em curso" "O vídeo está desativado" "Deslize rapidamente com dois dedos para cima para responder. Deslize rapidamente com dois dedos para baixo para recusar." - "Urgente" + "Importante" diff --git a/java/com/android/incallui/answer/impl/res/values-pt/strings.xml b/java/com/android/incallui/answer/impl/res/values-pt/strings.xml index fe1c89de41c5a57989675750934075e292ad4241..1ed245140d8490c0ab511fed1ec4d5cd3fb81fc5 100644 --- a/java/com/android/incallui/answer/impl/res/values-pt/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-pt/strings.xml @@ -1,4 +1,20 @@ + + "Deslize a partir do ícone para recusar com uma mensagem" @@ -20,5 +36,5 @@ "Atender e encerrar a chamada em andamento" "O vídeo está desativado" "Deslize com dois dedos para cima para atender. Deslize com dois dedos para baixo para recusar." - "Urgente" + "Importante" diff --git a/java/com/android/incallui/answer/impl/res/values-ro/strings.xml b/java/com/android/incallui/answer/impl/res/values-ro/strings.xml index 6c8bafa2865375635d567e93df8b2fa406ae72b1..0b1f4f4813b7f1ac1650828f88dcdd3c3433ee4c 100644 --- a/java/com/android/incallui/answer/impl/res/values-ro/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-ro/strings.xml @@ -1,4 +1,20 @@ + + "Glisați de pe pictogramă pentru a respinge cu un mesaj" @@ -20,5 +36,5 @@ "Răspundeți și încheiați apelul în curs" "Camera video este dezactivată." "Glisați cu două degete în sus pentru a răspunde și în jos pentru a respinge." - "Urgent" + "Important" diff --git a/java/com/android/incallui/answer/impl/res/values-ru/strings.xml b/java/com/android/incallui/answer/impl/res/values-ru/strings.xml index 67ff06a3477a9770d7177039fe09561e8587ed5e..d1fdcf73e94a86cc73e446c41eb7b55a5b98079e 100644 --- a/java/com/android/incallui/answer/impl/res/values-ru/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-ru/strings.xml @@ -1,4 +1,20 @@ + + "Чтобы отклонить вызов и отправить SMS, проведите пальцем от значка" @@ -20,5 +36,5 @@ "Ответить и завершить текущий вызов" "Камера выключена" "Проведите двумя пальцами по экрану вверх, чтобы ответить, или вниз, чтобы отклонить вызов." - "Срочно" + "Важный звонок" diff --git a/java/com/android/incallui/answer/impl/res/values-si/strings.xml b/java/com/android/incallui/answer/impl/res/values-si/strings.xml index ae3c0800895aa3a8cf7f161364823f1fbfbe9d2a..99f4989aa2c903b2423a51e2d735305853c5c2f9 100644 --- a/java/com/android/incallui/answer/impl/res/values-si/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-si/strings.xml @@ -1,4 +1,20 @@ + + "පණිවිඩය සහිතව ප්‍රතික්ෂේප කිරීමට නිරූපකයේ සිට ස්වයිප් කරන්න" @@ -20,5 +36,5 @@ "යන අැමතුමට පිළිතරු දී අවසන් කරන්න" "වීඩියෝව ක්‍රියාවිරහිතයි" "පිළිතුරු දීමට ඇඟිලි දෙකකින් ඉහළට ස්වයිප් කරන්න, ප්‍රතික්ෂේප කිරීමට ඇඟිලි දෙකකින් පහළට ස්වයිප් කරන්න." - "හදිසි" + "වැදගත්" diff --git a/java/com/android/incallui/answer/impl/res/values-sk/strings.xml b/java/com/android/incallui/answer/impl/res/values-sk/strings.xml index 179be7b08ce042967f31afefdfc087c24aa03350..fa00ac4c6ebb1beeea934f982d16465927cf5c93 100644 --- a/java/com/android/incallui/answer/impl/res/values-sk/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-sk/strings.xml @@ -1,4 +1,20 @@ + + "Prejdením prstom od ikony odmietnuť so správou" @@ -20,5 +36,5 @@ "Prijať hovor a ukončiť prebiehajúci hovor" "Video je vypnuté" "Ak chcete hovor prijať, prejdite dvomi prstami nahor. Ak ho chcete odmietnuť, prejdite dvomi prstami nadol." - "Naliehavé" + "Dôležité" diff --git a/java/com/android/incallui/answer/impl/res/values-sl/strings.xml b/java/com/android/incallui/answer/impl/res/values-sl/strings.xml index 5f658be9d9b78f97d72b6d5568700c518155b905..147a098356d4f447930a6a9761b0de0d9d7dba63 100644 --- a/java/com/android/incallui/answer/impl/res/values-sl/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-sl/strings.xml @@ -1,4 +1,20 @@ + + "Povlecite z ikone, da klic zavrnete s sporočilom" @@ -20,5 +36,5 @@ "Sprejmi klic in končaj aktivni klic" "Video je izklopljen" "Z dvema prstoma povlecite navzgor, da sprejmete klic. Z dvema prstoma povlecite navzdol, da zavrnete klic." - "Nujno" + "Pomembno" diff --git a/java/com/android/incallui/answer/impl/res/values-sq/strings.xml b/java/com/android/incallui/answer/impl/res/values-sq/strings.xml index 1de60c9c9b2d9302aeed5889904b8489fd7b6462..e71691af86674a9ad945a1b2861eadf29ea41223 100644 --- a/java/com/android/incallui/answer/impl/res/values-sq/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-sq/strings.xml @@ -1,4 +1,20 @@ + + "Rrëshqit nga ikona për të refuzuar me mesazh" @@ -20,5 +36,5 @@ "Përgjigju dhe mbyll telefonatën në vazhdim" "Videoja është joaktive" "Rrëshqit dy gishta lart për t\'u përgjigjur. Rrëshqit dy gishta poshtë për të refuzuar." - "Urgjente" + "E rëndësishme" diff --git a/java/com/android/incallui/answer/impl/res/values-sr/strings.xml b/java/com/android/incallui/answer/impl/res/values-sr/strings.xml index 4d6ef563606d7d8184d53ac196bea5cbb51d9ed0..c802b0e975d4aa91837632f1e458aeebab112fa7 100644 --- a/java/com/android/incallui/answer/impl/res/values-sr/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-sr/strings.xml @@ -1,4 +1,20 @@ + + "Превуците од иконе да бисте одбили поруком" @@ -20,5 +36,5 @@ "Јавите се и завршите позив који је у току" "Камера је искључена" "Превуците нагоре помоћу два прста да бисте одговорили. Превуците надоле помоћу два прста да бисте одбили." - "Хитно" + "Важно" diff --git a/java/com/android/incallui/answer/impl/res/values-sv/strings.xml b/java/com/android/incallui/answer/impl/res/values-sv/strings.xml index e47b4e0a3217caf8fa6467f7d766a67101effc20..2265dc4c2f4e2ccf9ba13387ef7bcd3a3b1ac092 100644 --- a/java/com/android/incallui/answer/impl/res/values-sv/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-sv/strings.xml @@ -1,4 +1,20 @@ + + "Svep från ikonen för att avvisa med meddelande" @@ -20,5 +36,5 @@ "Svara och avsluta pågående samtal" "Video avstängd" "Dra två fingrar uppåt för att svara och två nedåt för att avvisa." - "Brådskande" + "Viktigt" diff --git a/java/com/android/incallui/answer/impl/res/values-sw/strings.xml b/java/com/android/incallui/answer/impl/res/values-sw/strings.xml index 1e5896662e6ff1ea282d5d694c4387d50ad542c3..26e1b7ab54dc429fa4dc901c3b54c58011f50986 100644 --- a/java/com/android/incallui/answer/impl/res/values-sw/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-sw/strings.xml @@ -1,4 +1,20 @@ + + "Telezesha kidole ukianzia kwenye aikoni ili utume ujumbe wa kukataa" @@ -20,5 +36,5 @@ "Jibu na ukate simu inayoendelea" "Video imezimwa" "Telezesha juu kwa vidole viwili ili uijibu. Telezesha chini kwa vidole viwili ili uikate." - "Dharura" + "Muhimu" diff --git a/java/com/android/incallui/answer/impl/res/values-ta/strings.xml b/java/com/android/incallui/answer/impl/res/values-ta/strings.xml index 847936f5bfdd6360eecf93aca6ef846b96031a9f..453781dae9f0ef9ea4344e3ee20e6cf1ce5db033 100644 --- a/java/com/android/incallui/answer/impl/res/values-ta/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-ta/strings.xml @@ -1,4 +1,20 @@ + + "செய்தியுடன் நிராகரிக்க, ஐகானிலிருந்து ஸ்வைப் செய்யவும்" @@ -20,5 +36,5 @@ "உள்வரும் அழைப்பிற்குப் பதிலளித்து, செயலில் உள்ள அழைப்பை முடிக்கும்" "வீடியோ முடக்கப்பட்டுள்ளது" "பதிலளிக்க, இரு விரல்களால் மேலே ஸ்வைப் செய்யவும். நிராகரிக்க, இரு விரல்களால் கீழே ஸ்வைப் செய்யவும்." - "அவசரம்" + "முக்கிய அழைப்பு" diff --git a/java/com/android/incallui/answer/impl/res/values-te/strings.xml b/java/com/android/incallui/answer/impl/res/values-te/strings.xml index abc3902940c15c308b55244721207b68c1884ed2..e0e508768c042155da6d295eab699340ded5f736 100644 --- a/java/com/android/incallui/answer/impl/res/values-te/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-te/strings.xml @@ -1,4 +1,20 @@ + + "సందేశంతో తిరస్కరించడానికి చిహ్నం నుండి స్వైప్ చేయండి" @@ -20,5 +36,5 @@ "సమాధానం ఇస్తుంది మరియు కొనసాగుతున్న కాల్‌ను ముగిస్తుంది" "వీడియో ఆఫ్‌లో ఉంది" "సమాధానం ఇవ్వడానికి రెండు వేళ్లతో పైకి స్వైప్ చేయండి. తిరస్కరించడానికి రెండు వేళ్లతో క్రిందికి స్వైప్ చేయండి." - "అత్యవసరం" + "ముఖ్యమైనది" diff --git a/java/com/android/incallui/answer/impl/res/values-th/strings.xml b/java/com/android/incallui/answer/impl/res/values-th/strings.xml index 54069b3d8a352a494d8133ddfc2e64cfc0bfe0b5..695da74f7f684a536c5e6976807b530fdb0a5277 100644 --- a/java/com/android/incallui/answer/impl/res/values-th/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-th/strings.xml @@ -1,4 +1,20 @@ + + "เลื่อนไอคอนเพื่อปฏิเสธสายด้วยข้อความ" @@ -20,5 +36,5 @@ "รับและวางสาย" "วิดีโอปิดอยู่" "ใช้สองนิ้วเลื่อนขึ้นเพื่อรับสายและเลื่อนลงเพื่อตัดสาย" - "ด่วน" + "สำคัญ" diff --git a/java/com/android/incallui/answer/impl/res/values-tl/strings.xml b/java/com/android/incallui/answer/impl/res/values-tl/strings.xml index 8f87b56052ab5a12262961b6692b47bb7c962ec4..6128d6fad21b63e01888574f614477d7fe69b682 100644 --- a/java/com/android/incallui/answer/impl/res/values-tl/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-tl/strings.xml @@ -1,4 +1,20 @@ + + "I-swipe mula sa icon upang tanggihan gamit ang mensahe" @@ -20,5 +36,5 @@ "Sagutin at tapusin ang kasalukuyang tawag" "Naka-off ang video" "I-swipe nang pataas gamit ang dalawang daliri upang sagutin. I-swipe nang pababa gamit ang dalawang daliri upang tanggihan." - "Apurahan" + "Mahalaga" diff --git a/java/com/android/incallui/answer/impl/res/values-tr/strings.xml b/java/com/android/incallui/answer/impl/res/values-tr/strings.xml index 53f5eb9a91e2abf1b899b90e75f8c56885f0159b..87583c03d0e54cfd2c08bd8c28902dada0f5ed01 100644 --- a/java/com/android/incallui/answer/impl/res/values-tr/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-tr/strings.xml @@ -1,4 +1,20 @@ + + "Mesajla reddetmek için, simgeden hızlıca kaydırın" @@ -20,5 +36,5 @@ "Bir çağrı cevaplanır ve devam eden çağrı sona erdirilir" "Video kapalı" "Cevaplamak için iki parmağınızla hızlıca yukarı kaydırın. Reddetmek içinse iki parmağınızla hızlıca aşağı kaydırın." - "Acil" + "Önemli" diff --git a/java/com/android/incallui/answer/impl/res/values-uk/strings.xml b/java/com/android/incallui/answer/impl/res/values-uk/strings.xml index a0332d377802871fe0d08a461d27fc745b375399..76eb2b0a205b8408a6be5d7de32ab8fa9b442834 100644 --- a/java/com/android/incallui/answer/impl/res/values-uk/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-uk/strings.xml @@ -1,4 +1,20 @@ + + "Проведіть пальцем убік від значка, щоб відхилити з повідомленням" @@ -20,5 +36,5 @@ "Відповісти на виклик, завершивши поточний" "Відео вимкнено" "Проведіть двома пальцями вгору, щоб відповісти, або вниз, щоб відхилити дзвінок." - "Терміново" + "Важливо" diff --git a/java/com/android/incallui/answer/impl/res/values-ur/strings.xml b/java/com/android/incallui/answer/impl/res/values-ur/strings.xml index e1813cbf71a2dca6fc939e3bc320f63e771cb60c..2a44e9083a3b6ecf41771cf32154767cf5d11f66 100644 --- a/java/com/android/incallui/answer/impl/res/values-ur/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-ur/strings.xml @@ -1,4 +1,20 @@ + + "پیغام کے ساتھ رد کرنے کیلئے آئیکن سے سوائپ کریں" @@ -20,5 +36,5 @@ "جواب دیں اور جاری کال ختم کریں" "ویڈیو آف ہے" "جواب دینے کیلئے دوانگلیوں کے ساتھ اوپر سوائپ کریں۔ مسترد کرنے کیلئے دو انگلیوں کے ساتھ نیچے سوائپ کریں۔" - "ارجنٹ" + "اہم" diff --git a/java/com/android/incallui/answer/impl/res/values-uz/strings.xml b/java/com/android/incallui/answer/impl/res/values-uz/strings.xml index b83abcce05d70e2d55ba3ad053abbc505bd5a145..f348a499d5471f14e3c22fa034b7e700f09b8c2e 100644 --- a/java/com/android/incallui/answer/impl/res/values-uz/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-uz/strings.xml @@ -1,4 +1,20 @@ + + "Qo‘ng‘iroqni SMS bilan rad etish uchun nishonchadan suring." @@ -20,5 +36,5 @@ "Kiruvchi chaqiruvga javob berish va joriy qo‘ng‘iroqni tugatish" "Kamera o‘chiq" "Chaqiruvga javob berish uchun ikki barmoq bilan tepaga, rad etish uchun ikki barmoq bilan pastga suring." - "Juda muhim" + "Muhim qo‘ng‘iroq" diff --git a/java/com/android/incallui/answer/impl/res/values-vi/strings.xml b/java/com/android/incallui/answer/impl/res/values-vi/strings.xml index 94dd1c386126d27a69ef3f4d74c19a9cfee4b8b7..f4dfa5b1d3b9476dcfebc7e5653e9e5f099002ee 100644 --- a/java/com/android/incallui/answer/impl/res/values-vi/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-vi/strings.xml @@ -1,4 +1,20 @@ + + "Vuốt từ biểu tượng để từ chối kèm thông báo" @@ -20,5 +36,5 @@ "Trả lời và kết thúc cuộc gọi đang diễn ra" "Video đã tắt" "Vuốt hai ngón tay lên để trả lời. Vuốt hai ngón tay xuống để từ chối." - "Khẩn cấp" + "Quan trọng" diff --git a/java/com/android/incallui/answer/impl/res/values-zh-rCN/strings.xml b/java/com/android/incallui/answer/impl/res/values-zh-rCN/strings.xml index fc7ce64096be989c278b3108089fd78265b50f60..9698aa06d43dedf0cb77fde547c65574af5cf006 100644 --- a/java/com/android/incallui/answer/impl/res/values-zh-rCN/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-zh-rCN/strings.xml @@ -1,4 +1,20 @@ + + "滑动图标即可拒接来电并发送信息" @@ -20,5 +36,5 @@ "接听并结束当前通话" "摄像头处于关闭状态" "双指向上滑动即可接听,向下滑动则可拒接。" - "紧急" + "重要" diff --git a/java/com/android/incallui/answer/impl/res/values-zh-rHK/strings.xml b/java/com/android/incallui/answer/impl/res/values-zh-rHK/strings.xml index 97955396f4a0c273bb5cc8a559d9650718b49d2f..81a88151b502aa062ffa79119d6336149e5db87c 100644 --- a/java/com/android/incallui/answer/impl/res/values-zh-rHK/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-zh-rHK/strings.xml @@ -1,4 +1,20 @@ + + "從圖示快速滑動即可透過訊息拒絕" @@ -20,5 +36,5 @@ "接聽及結束進行中的通話" "視像已關閉" "兩指向上滑動可接聽,向下滑動則可拒接。" - "緊急" + "重要事項" diff --git a/java/com/android/incallui/answer/impl/res/values-zh-rTW/strings.xml b/java/com/android/incallui/answer/impl/res/values-zh-rTW/strings.xml index f27e5ae5bbea3b98f55897ac124cf5949746d82a..8f04992d1097c8d064a857e169ee3cdb82f6fdac 100644 --- a/java/com/android/incallui/answer/impl/res/values-zh-rTW/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-zh-rTW/strings.xml @@ -1,4 +1,20 @@ + + "滑動圖示即可拒接來電並傳送簡訊" @@ -20,5 +36,5 @@ "接聽來電及結束進行中的通話" "已關閉攝影機" "用雙指向上滑動可接聽,向下滑動可拒接。" - "緊急" + "重要" diff --git a/java/com/android/incallui/answer/impl/res/values-zu/strings.xml b/java/com/android/incallui/answer/impl/res/values-zu/strings.xml index 52f2400eb39098ff3fbcf49e1cdff713a0366323..23c988eaad4e3b3877ab38edd929d7e4f051dda5 100644 --- a/java/com/android/incallui/answer/impl/res/values-zu/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-zu/strings.xml @@ -1,4 +1,20 @@ + + "Swayipha isithonjana ukuze wenqabe ngomlayezo" @@ -20,5 +36,5 @@ "Phendula uphinde uqede ikholi eqhubekayo" "Ividiyo ivaliwe" "Swayiphela iminwe emibili phezulu ukuze uphendule. Swayiphela iminwe emibili phansi ukuze wenqabe." - "Okuphuthumayo" + "Kubalulekile" diff --git a/java/com/android/incallui/answer/impl/res/values/strings.xml b/java/com/android/incallui/answer/impl/res/values/strings.xml index 235922047422db30008a0c72ef2264a437301ec3..de5ee6e69ae54397d06b105b120ff30ab0dd3ec6 100644 --- a/java/com/android/incallui/answer/impl/res/values/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values/strings.xml @@ -1,4 +1,19 @@ + Swipe from icon to decline with message Swipe from icon to answer as an audio call @@ -26,5 +41,5 @@ Two finger swipe up to answer. Two finger swipe down to decline. - Urgent + Important diff --git a/java/com/android/incallui/answer/protocol/AnswerScreen.java b/java/com/android/incallui/answer/protocol/AnswerScreen.java index 8bcad6e35aafbe14b7070ce7cc40e4aa4974b966..5ad500200ec31fd4c125428b03797bbefc3ff5e4 100644 --- a/java/com/android/incallui/answer/protocol/AnswerScreen.java +++ b/java/com/android/incallui/answer/protocol/AnswerScreen.java @@ -30,6 +30,8 @@ public interface AnswerScreen { boolean allowAnswerAndRelease(); + boolean isActionTimeout(); + void setTextResponses(List textResponses); boolean hasPendingDialogs(); diff --git a/java/com/android/incallui/answer/protocol/AnswerScreenDelegate.java b/java/com/android/incallui/answer/protocol/AnswerScreenDelegate.java index 9815981ca3630290db4940f61031b743f5ed991f..5d2c415ed51811ed919f21414dc5faa706c8dc97 100644 --- a/java/com/android/incallui/answer/protocol/AnswerScreenDelegate.java +++ b/java/com/android/incallui/answer/protocol/AnswerScreenDelegate.java @@ -32,6 +32,10 @@ public interface AnswerScreenDelegate { void onReject(); void onAnswerAndReleaseCall(); + + void onAnswerAndReleaseButtonEnabled(); + + void onAnswerAndReleaseButtonDisabled(); /** * Sets the window background color based on foreground call's theme and the given progress. This * is called from the answer UI to animate the accept and reject action. @@ -42,4 +46,7 @@ public interface AnswerScreenDelegate { * @param progress float from -1 to 1. -1 is fully rejected, 1 is fully accepted, and 0 is neutral */ void updateWindowBackgroundColor(@FloatRange(from = -1f, to = 1.0f) float progress); + + /** Returns true if any answer/reject action timed out. */ + boolean isActionTimeout(); } diff --git a/java/com/android/incallui/answerproximitysensor/AnswerProximitySensor.java b/java/com/android/incallui/answerproximitysensor/AnswerProximitySensor.java index 24fbfc42866d858d64cd17f401a6f7181c151596..536a470b0939bbe3b31344db79dc3de40ec63229 100644 --- a/java/com/android/incallui/answerproximitysensor/AnswerProximitySensor.java +++ b/java/com/android/incallui/answerproximitysensor/AnswerProximitySensor.java @@ -20,8 +20,8 @@ import android.content.Context; import android.hardware.display.DisplayManager; import android.os.PowerManager; import android.view.Display; -import com.android.dialer.common.ConfigProviderBindings; import com.android.dialer.common.LogUtil; +import com.android.dialer.configprovider.ConfigProviderBindings; import com.android.incallui.call.DialerCall; import com.android.incallui.call.DialerCall.State; import com.android.incallui.call.DialerCallListener; @@ -142,6 +142,9 @@ public class AnswerProximitySensor @Override public void onInternationalCallOnWifi() {} + @Override + public void onEnrichedCallSessionUpdate() {} + @Override public void onDialerCallSessionModificationStateChange() {} diff --git a/java/com/android/incallui/audioroute/AudioRouteSelectorDialogFragment.java b/java/com/android/incallui/audioroute/AudioRouteSelectorDialogFragment.java index c757477f1a956eb15d6a758119f44a578080b4b8..c7a9d63325ac0a53654048f3d0b969ea884be345 100644 --- a/java/com/android/incallui/audioroute/AudioRouteSelectorDialogFragment.java +++ b/java/com/android/incallui/audioroute/AudioRouteSelectorDialogFragment.java @@ -18,6 +18,7 @@ package com.android.incallui.audioroute; import android.app.Dialog; import android.content.Context; +import android.content.DialogInterface; import android.content.res.ColorStateList; import android.graphics.PorterDuff.Mode; import android.os.Bundle; @@ -41,6 +42,8 @@ public class AudioRouteSelectorDialogFragment extends BottomSheetDialogFragment /** Called when an audio route is picked */ public interface AudioRouteSelectorPresenter { void onAudioRouteSelected(int audioRoute); + + void onAudioRouteSelectorDismiss(); } public static AudioRouteSelectorDialogFragment newInstance(CallAudioState audioState) { @@ -91,6 +94,14 @@ public class AudioRouteSelectorDialogFragment extends BottomSheetDialogFragment return view; } + @Override + public void onDismiss(DialogInterface dialogInterface) { + super.onDismiss(dialogInterface); + FragmentUtils.getParentUnsafe( + AudioRouteSelectorDialogFragment.this, AudioRouteSelectorPresenter.class) + .onAudioRouteSelectorDismiss(); + } + private void initItem(TextView item, final int itemRoute, CallAudioState audioState) { int selectedColor = getResources().getColor(R.color.dialer_theme_color); if ((audioState.getSupportedRouteMask() & itemRoute) == 0) { diff --git a/java/com/android/incallui/bindings/InCallUiBindings.java b/java/com/android/incallui/bindings/InCallUiBindings.java index d3d3a8b3747ed08be4ede3b620acf074c02509ee..5c6aef4bea2a2342a7927cdc06adf3242497c8a8 100644 --- a/java/com/android/incallui/bindings/InCallUiBindings.java +++ b/java/com/android/incallui/bindings/InCallUiBindings.java @@ -19,7 +19,6 @@ package com.android.incallui.bindings; import android.content.Context; import android.content.Intent; import android.support.annotation.Nullable; -import com.android.dialer.common.ConfigProvider; /** This interface allows the container application to customize the in call UI. */ public interface InCallUiBindings { @@ -37,12 +36,4 @@ public interface InCallUiBindings { */ @Nullable Intent getCallStateButtonBroadcastIntent(Context context); - - @Nullable - DistanceHelper newDistanceHelper(Context context, DistanceHelper.Listener listener); - - @Nullable - ContactUtils getContactUtilsInstance(Context context); - - ConfigProvider getConfigProvider(); } diff --git a/java/com/android/incallui/bindings/InCallUiBindingsStub.java b/java/com/android/incallui/bindings/InCallUiBindingsStub.java index 7b42fb375f4195c3570aeaa9810f77dd45358c29..3a005b0fb5b690ca4d5dd79e2e650c031364fd34 100644 --- a/java/com/android/incallui/bindings/InCallUiBindingsStub.java +++ b/java/com/android/incallui/bindings/InCallUiBindingsStub.java @@ -19,11 +19,9 @@ package com.android.incallui.bindings; import android.content.Context; import android.content.Intent; import android.support.annotation.Nullable; -import com.android.dialer.common.ConfigProvider; /** Default implementation for InCallUi bindings. */ public class InCallUiBindingsStub implements InCallUiBindings { - private ConfigProvider configProvider; @Override @Nullable @@ -42,40 +40,4 @@ public class InCallUiBindingsStub implements InCallUiBindings { public Intent getCallStateButtonBroadcastIntent(Context context) { return null; } - - @Override - @Nullable - public DistanceHelper newDistanceHelper(Context context, DistanceHelper.Listener listener) { - return null; - } - - @Override - @Nullable - public ContactUtils getContactUtilsInstance(Context context) { - return null; - } - - @Override - public ConfigProvider getConfigProvider() { - if (configProvider == null) { - configProvider = - new ConfigProvider() { - @Override - public String getString(String key, String defaultValue) { - return defaultValue; - } - - @Override - public long getLong(String key, long defaultValue) { - return defaultValue; - } - - @Override - public boolean getBoolean(String key, boolean defaultValue) { - return defaultValue; - } - }; - } - return configProvider; - } } diff --git a/java/com/android/incallui/call/CallList.java b/java/com/android/incallui/call/CallList.java index 34f0cc0d70be58419eae2faf7ec36260c7544bc0..269fcd68b0b68a2a7e1679b8145d5960b21a1279 100644 --- a/java/com/android/incallui/call/CallList.java +++ b/java/com/android/incallui/call/CallList.java @@ -32,6 +32,8 @@ import com.android.dialer.blocking.FilteredNumberAsyncQueryHandler; import com.android.dialer.blocking.FilteredNumbersUtil; import com.android.dialer.common.Assert; import com.android.dialer.common.LogUtil; +import com.android.dialer.enrichedcall.EnrichedCallComponent; +import com.android.dialer.enrichedcall.EnrichedCallManager; import com.android.dialer.location.GeoUtil; import com.android.dialer.logging.DialerImpression; import com.android.dialer.logging.Logger; @@ -117,6 +119,10 @@ public class CallList implements DialerCallDelegate { new DialerCall(context, this, telecomCall, latencyReport, true /* registerCallback */); logSecondIncomingCall(context, call); + EnrichedCallManager manager = EnrichedCallComponent.get(context).getEnrichedCallManager(); + manager.registerCapabilitiesListener(call); + manager.registerStateChangedListener(call); + final DialerCallListenerImpl dialerCallListener = new DialerCallListenerImpl(call); call.addListener(dialerCallListener); LogUtil.d("CallList.onCallAdded", "callState=" + call.getState()); @@ -278,6 +284,10 @@ public class CallList implements DialerCallDelegate { DialerCall call = mCallByTelecomCall.get(telecomCall); Assert.checkArgument(!call.isExternalCall()); + EnrichedCallManager manager = EnrichedCallComponent.get(context).getEnrichedCallManager(); + manager.unregisterCapabilitiesListener(call); + manager.unregisterStateChangedListener(call); + // Don't log an already logged call. logCall() might be called multiple times // for the same call due to b/24109437. if (call.getLogState() != null && !call.getLogState().isLogged) { @@ -289,6 +299,8 @@ public class CallList implements DialerCallDelegate { LogUtil.w( "CallList.onCallRemoved", "Removing call not previously disconnected " + call.getId()); } + + call.onRemovedFromCallList(); } if (!hasLiveCall()) { @@ -556,7 +568,8 @@ public class CallList implements DialerCallDelegate { * * @param call The call to update. */ - private void onUpdateCall(DialerCall call) { + @VisibleForTesting + void onUpdateCall(DialerCall call) { LogUtil.d("CallList.onUpdateCall", String.valueOf(call)); if (!mCallById.containsKey(call.getId()) && call.isExternalCall()) { // When a regular call becomes external, it is removed from the call list, and there may be @@ -792,6 +805,9 @@ public class CallList implements DialerCallDelegate { } } + @Override + public void onEnrichedCallSessionUpdate() {} + @Override public void onDialerCallSessionModificationStateChange() { for (Listener listener : mListeners) { diff --git a/java/com/android/incallui/call/DialerCall.java b/java/com/android/incallui/call/DialerCall.java index acedf41f1dac96650d86c5cb438f3fc9fad9ef7d..88e0dbb5e5d1afb3b728d2b89bb4b089e8cc3388 100644 --- a/java/com/android/incallui/call/DialerCall.java +++ b/java/com/android/incallui/call/DialerCall.java @@ -47,10 +47,14 @@ import com.android.dialer.callintent.CallInitiationType; import com.android.dialer.callintent.CallIntentParser; import com.android.dialer.callintent.CallSpecificAppData; import com.android.dialer.common.Assert; -import com.android.dialer.common.ConfigProviderBindings; import com.android.dialer.common.LogUtil; +import com.android.dialer.configprovider.ConfigProviderBindings; import com.android.dialer.enrichedcall.EnrichedCallCapabilities; import com.android.dialer.enrichedcall.EnrichedCallComponent; +import com.android.dialer.enrichedcall.EnrichedCallManager; +import com.android.dialer.enrichedcall.EnrichedCallManager.CapabilitiesListener; +import com.android.dialer.enrichedcall.EnrichedCallManager.Filter; +import com.android.dialer.enrichedcall.EnrichedCallManager.StateChangedListener; import com.android.dialer.enrichedcall.Session; import com.android.dialer.lightbringer.LightbringerComponent; import com.android.dialer.logging.ContactLookupResult; @@ -77,7 +81,7 @@ import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.TimeUnit; /** Describes a single call and its state. */ -public class DialerCall implements VideoTechListener { +public class DialerCall implements VideoTechListener, StateChangedListener, CapabilitiesListener { public static final int CALL_HISTORY_STATUS_UNKNOWN = 0; public static final int CALL_HISTORY_STATUS_PRESENT = 1; @@ -143,6 +147,12 @@ public class DialerCall implements VideoTechListener { private EnrichedCallCapabilities mEnrichedCallCapabilities; private Session mEnrichedCallSession; + private int answerAndReleaseButtonDisplayedTimes = 0; + private boolean releasedByAnsweringSecondCall = false; + // Times when a second call is received but AnswerAndRelease button is not shown + // since it's not supported. + private int secondCallWithoutAnswerAndReleasedButtonTimes = 0; + public static String getNumberFromHandle(Uri handle) { return handle == null ? "" : handle.getSchemeSpecificPart(); } @@ -153,6 +163,9 @@ public class DialerCall implements VideoTechListener { */ private boolean isRemotelyHeld; + /** Indicates whether this call is currently in the process of being merged into a conference. */ + private boolean isMergeInProcess; + /** * Indicates whether the phone account associated with this call supports specifying a call * subject. @@ -255,6 +268,14 @@ public class DialerCall implements VideoTechListener { case TelephonyManagerCompat.EVENT_NOTIFY_INTERNATIONAL_CALL_ON_WFC: notifyInternationalCallOnWifi(); break; + case TelephonyManagerCompat.EVENT_MERGE_START: + LogUtil.i("DialerCall.onConnectionEvent", "merge start"); + isMergeInProcess = true; + break; + case TelephonyManagerCompat.EVENT_MERGE_COMPLETE: + LogUtil.i("DialerCall.onConnectionEvent", "merge complete"); + isMergeInProcess = false; + break; default: break; } @@ -292,6 +313,8 @@ public class DialerCall implements VideoTechListener { mTimeAddedMs = System.currentTimeMillis(); parseCallSpecificAppData(); + + updateEnrichedCallSession(); } private static int translateState(int state) { @@ -413,6 +436,12 @@ public class DialerCall implements VideoTechListener { for (DialerCallListener listener : mListeners) { listener.onDialerCallDisconnect(); } + EnrichedCallComponent.get(mContext) + .getEnrichedCallManager() + .unregisterCapabilitiesListener(this); + EnrichedCallComponent.get(mContext) + .getEnrichedCallManager() + .unregisterCapabilitiesListener(this); } else { for (DialerCallListener listener : mListeners) { listener.onDialerCallUpdate(); @@ -952,6 +981,10 @@ public class DialerCall implements VideoTechListener { return isRemotelyHeld; } + public boolean isMergeInProcess() { + return isMergeInProcess; + } + public boolean isIncoming() { return mLogState.isIncoming; } @@ -960,6 +993,30 @@ public class DialerCall implements VideoTechListener { return mLatencyReport; } + public int getAnswerAndReleaseButtonDisplayedTimes() { + return answerAndReleaseButtonDisplayedTimes; + } + + public void increaseAnswerAndReleaseButtonDisplayedTimes() { + answerAndReleaseButtonDisplayedTimes++; + } + + public boolean getReleasedByAnsweringSecondCall() { + return releasedByAnsweringSecondCall; + } + + public void setReleasedByAnsweringSecondCall(boolean releasedByAnsweringSecondCall) { + this.releasedByAnsweringSecondCall = releasedByAnsweringSecondCall; + } + + public int getSecondCallWithoutAnswerAndReleasedButtonTimes() { + return secondCallWithoutAnswerAndReleasedButtonTimes; + } + + public void increaseSecondCallWithoutAnswerAndReleasedButtonTimes() { + secondCallWithoutAnswerAndReleasedButtonTimes++; + } + @Nullable public EnrichedCallCapabilities getEnrichedCallCapabilities() { return mEnrichedCallCapabilities; @@ -1172,6 +1229,71 @@ public class DialerCall implements VideoTechListener { TelecomAdapter.getInstance().setAudioRoute(CallAudioState.ROUTE_SPEAKER); } + @Override + public void onCapabilitiesUpdated() { + if (getNumber() == null) { + return; + } + EnrichedCallCapabilities capabilities = + EnrichedCallComponent.get(mContext).getEnrichedCallManager().getCapabilities(getNumber()); + if (capabilities != null) { + setEnrichedCallCapabilities(capabilities); + update(); + } + } + + @Override + public void onEnrichedCallStateChanged() { + updateEnrichedCallSession(); + } + + private void updateEnrichedCallSession() { + if (getNumber() == null) { + return; + } + if (getEnrichedCallSession() != null) { + // State changes to existing sessions are currently handled by the UI components (which have + // their own listeners). Someday instead we could remove those and just call update() here and + // have the usual onDialerCallUpdate update the UI. + dispatchOnEnrichedCallSessionUpdate(); + return; + } + + EnrichedCallManager manager = EnrichedCallComponent.get(mContext).getEnrichedCallManager(); + + Filter filter = + isIncoming() + ? manager.createIncomingCallComposerFilter() + : manager.createOutgoingCallComposerFilter(); + + Session session = manager.getSession(getUniqueCallId(), getNumber(), filter); + if (session == null) { + return; + } + + session.setUniqueDialerCallId(getUniqueCallId()); + setEnrichedCallSession(session); + + LogUtil.i( + "DialerCall.updateEnrichedCallSession", + "setting session %d's dialer id to %s", + session.getSessionId(), + getUniqueCallId()); + + dispatchOnEnrichedCallSessionUpdate(); + } + + private void dispatchOnEnrichedCallSessionUpdate() { + for (DialerCallListener listener : mListeners) { + listener.onEnrichedCallSessionUpdate(); + } + } + + void onRemovedFromCallList() { + // Ensure we clean up when this call is removed. + mVideoTechManager.dispatchRemovedFromCallList(); + } + /** * Specifies whether a number is in the call history or not. {@link #CALL_HISTORY_STATUS_UNKNOWN} * means there is no result. @@ -1372,6 +1494,7 @@ public class DialerCall implements VideoTechListener { String phoneNumber = call.getNumber(); phoneNumber = phoneNumber != null ? phoneNumber : ""; + phoneNumber = phoneNumber.replaceAll("[^+0-9]", ""); // Insert order here determines the priority of that video tech option videoTechs = new ArrayList<>(); @@ -1390,7 +1513,10 @@ public class DialerCall implements VideoTechListener { videoTechs.add( new LightbringerTech( - LightbringerComponent.get(call.mContext).getLightbringer(), call, phoneNumber)); + LightbringerComponent.get(call.mContext).getLightbringer(), + call, + call.mTelecomCall, + phoneNumber)); } VideoTech getVideoTech() { @@ -1414,6 +1540,12 @@ public class DialerCall implements VideoTechListener { videoTech.onCallStateChanged(context, newState); } } + + void dispatchRemovedFromCallList() { + for (VideoTech videoTech : videoTechs) { + videoTech.onRemovedFromCallList(); + } + } } /** Called when canned text responses have been loaded. */ diff --git a/java/com/android/incallui/call/DialerCallListener.java b/java/com/android/incallui/call/DialerCallListener.java index ed321be05084e9f10fcd1659239f64643cc443d8..5d24a4d4b66fe26874010dcefd3467d74f815ecf 100644 --- a/java/com/android/incallui/call/DialerCallListener.java +++ b/java/com/android/incallui/call/DialerCallListener.java @@ -36,4 +36,6 @@ public interface DialerCallListener { void onHandoverToWifiFailure(); void onInternationalCallOnWifi(); + + void onEnrichedCallSessionUpdate(); } diff --git a/java/com/android/incallui/call/TelecomAdapter.java b/java/com/android/incallui/call/TelecomAdapter.java index ebf4ecf4fada7445467e61431de61e1acedaa140..4fc9f81eb4fb87c94eb9f243ea24d7341efe2776 100644 --- a/java/com/android/incallui/call/TelecomAdapter.java +++ b/java/com/android/incallui/call/TelecomAdapter.java @@ -20,12 +20,13 @@ import android.content.ActivityNotFoundException; import android.content.Intent; import android.os.Looper; import android.support.annotation.MainThread; +import android.support.annotation.VisibleForTesting; import android.telecom.InCallService; import com.android.dialer.common.LogUtil; import java.util.List; /** Wrapper around Telecom APIs. */ -public final class TelecomAdapter implements InCallServiceListener { +public class TelecomAdapter implements InCallServiceListener { private static final String ADD_CALL_MODE_KEY = "add_call_mode"; @@ -45,6 +46,11 @@ public final class TelecomAdapter implements InCallServiceListener { return sInstance; } + @VisibleForTesting(otherwise = VisibleForTesting.NONE) + public static void setInstanceForTesting(TelecomAdapter telecomAdapter) { + sInstance = telecomAdapter; + } + @Override public void setInCallService(InCallService inCallService) { mInCallService = inCallService; diff --git a/java/com/android/incallui/calllocation/impl/DownloadMapImageTask.java b/java/com/android/incallui/calllocation/impl/DownloadMapImageTask.java index 801b0d35c25865b3ea4cb43fe52084996c06248f..b093a1b15e5a532f01034f115d90b6253f09ce2c 100644 --- a/java/com/android/incallui/calllocation/impl/DownloadMapImageTask.java +++ b/java/com/android/incallui/calllocation/impl/DownloadMapImageTask.java @@ -21,6 +21,7 @@ import android.location.Location; import android.net.TrafficStats; import android.os.AsyncTask; import com.android.dialer.common.LogUtil; +import com.android.dialer.constants.TrafficStatsTags; import com.android.incallui.calllocation.impl.LocationPresenter.LocationUi; import java.io.InputStream; import java.lang.ref.WeakReference; diff --git a/java/com/android/incallui/calllocation/impl/LocationHelper.java b/java/com/android/incallui/calllocation/impl/LocationHelper.java index 3a147894532cc4e512201085692480daff7e33c6..99a759bbb09d485a96c6033a66f9a56d46c99ad5 100644 --- a/java/com/android/incallui/calllocation/impl/LocationHelper.java +++ b/java/com/android/incallui/calllocation/impl/LocationHelper.java @@ -24,6 +24,7 @@ import android.os.Bundle; import android.os.Handler; import android.support.annotation.IntDef; import android.support.annotation.MainThread; +import android.support.v4.os.UserManagerCompat; import com.android.dialer.common.Assert; import com.android.dialer.common.LogUtil; import com.android.dialer.util.PermissionsUtil; @@ -87,6 +88,12 @@ public class LocationHelper { LogUtil.i("LocationHelper.canGetLocation", "location service is disabled."); return false; } + + if (!UserManagerCompat.isUserUnlocked(context)) { + LogUtil.i("LocationHelper.canGetLocation", "location unavailable in FBE mode."); + return false; + } + return true; } diff --git a/java/com/android/incallui/calllocation/impl/ReverseGeocodeTask.java b/java/com/android/incallui/calllocation/impl/ReverseGeocodeTask.java index eb5957b0504e4d16cbd6d90fa9a51dbc2036f9ff..060ec0b4f0e2804dc5cb187c28b32a4b1599eb71 100644 --- a/java/com/android/incallui/calllocation/impl/ReverseGeocodeTask.java +++ b/java/com/android/incallui/calllocation/impl/ReverseGeocodeTask.java @@ -20,6 +20,7 @@ import android.location.Location; import android.net.TrafficStats; import android.os.AsyncTask; import com.android.dialer.common.LogUtil; +import com.android.dialer.constants.TrafficStatsTags; import com.android.incallui.calllocation.impl.LocationPresenter.LocationUi; import java.lang.ref.WeakReference; import org.json.JSONArray; diff --git a/java/com/android/incallui/commontheme/res/anim/blinking.xml b/java/com/android/incallui/commontheme/res/anim/blinking.xml deleted file mode 100644 index 4b921c611f03708b6af180730ba2be57afccf2aa..0000000000000000000000000000000000000000 --- a/java/com/android/incallui/commontheme/res/anim/blinking.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - \ No newline at end of file diff --git a/java/com/android/incallui/commontheme/res/drawable-hdpi/ic_phone_audio_white_36dp.png b/java/com/android/incallui/commontheme/res/drawable-hdpi/ic_phone_audio_white_36dp.png deleted file mode 100644 index 26f3fe00107cde34214cc08fc6bf3f46d110e2d8..0000000000000000000000000000000000000000 Binary files a/java/com/android/incallui/commontheme/res/drawable-hdpi/ic_phone_audio_white_36dp.png and /dev/null differ diff --git a/java/com/android/incallui/commontheme/res/drawable-mdpi/ic_phone_audio_white_36dp.png b/java/com/android/incallui/commontheme/res/drawable-mdpi/ic_phone_audio_white_36dp.png deleted file mode 100644 index 5b0a9d66305a83c903f994ec4869ed3b9543a788..0000000000000000000000000000000000000000 Binary files a/java/com/android/incallui/commontheme/res/drawable-mdpi/ic_phone_audio_white_36dp.png and /dev/null differ diff --git a/java/com/android/incallui/commontheme/res/drawable-xhdpi/ic_phone_audio_white_36dp.png b/java/com/android/incallui/commontheme/res/drawable-xhdpi/ic_phone_audio_white_36dp.png deleted file mode 100644 index d595b190d205afd9efc5a22542d419b3a94772e4..0000000000000000000000000000000000000000 Binary files a/java/com/android/incallui/commontheme/res/drawable-xhdpi/ic_phone_audio_white_36dp.png and /dev/null differ diff --git a/java/com/android/incallui/commontheme/res/drawable-xxhdpi/ic_phone_audio_white_36dp.png b/java/com/android/incallui/commontheme/res/drawable-xxhdpi/ic_phone_audio_white_36dp.png deleted file mode 100644 index fb7cf161b1c85df71970d24c694a33126aac327d..0000000000000000000000000000000000000000 Binary files a/java/com/android/incallui/commontheme/res/drawable-xxhdpi/ic_phone_audio_white_36dp.png and /dev/null differ diff --git a/java/com/android/incallui/commontheme/res/drawable-xxxhdpi/ic_phone_audio_white_36dp.png b/java/com/android/incallui/commontheme/res/drawable-xxxhdpi/ic_phone_audio_white_36dp.png deleted file mode 100644 index 4bb58d9f5f88db5c913890ca0ab5b768572a9a65..0000000000000000000000000000000000000000 Binary files a/java/com/android/incallui/commontheme/res/drawable-xxxhdpi/ic_phone_audio_white_36dp.png and /dev/null differ diff --git a/java/com/android/incallui/commontheme/res/values-af/strings.xml b/java/com/android/incallui/commontheme/res/values-af/strings.xml index 0dfdbc7d56c45b9d3b8789886401008a2f9c076f..0721869bbf78409a85ea4e2836a7e9806210cef8 100644 --- a/java/com/android/incallui/commontheme/res/values-af/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-af/strings.xml @@ -1,4 +1,20 @@ + + "Beëindig oproep" @@ -15,4 +31,6 @@ "Video aan" "Video af" "Verwissel video" + "Luidspreker" + "Klank" diff --git a/java/com/android/incallui/commontheme/res/values-am/strings.xml b/java/com/android/incallui/commontheme/res/values-am/strings.xml index 3155c39becbb1288864d1fded1ae790fb6a926a7..9d748e3808665e61b882dba612b2428f63cd7a72 100644 --- a/java/com/android/incallui/commontheme/res/values-am/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-am/strings.xml @@ -1,4 +1,20 @@ + + "ጥሪ ጨርስ" @@ -15,4 +31,6 @@ "ቪዲዮ በርቷል" "ቪዲዮ ጠፍቷል" "ቪዲዮ አገላብጥ" + "የድምጽ ማጉያ" + "ድምፅ" diff --git a/java/com/android/incallui/commontheme/res/values-ar/strings.xml b/java/com/android/incallui/commontheme/res/values-ar/strings.xml index ecb3608bd4c4ed887972420d9e43018d88f86f07..693bfc57a2016c3ee12052819d2697e7c1d74f4b 100644 --- a/java/com/android/incallui/commontheme/res/values-ar/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-ar/strings.xml @@ -1,4 +1,20 @@ + + "إنهاء المكالمة" @@ -15,4 +31,6 @@ "الفيديو قيد التشغيل" "الفيديو ليس قيد التشغيل" "تبديل الفيديو" + "مكبر الصوت" + "صوت" diff --git a/java/com/android/incallui/commontheme/res/values-az/strings.xml b/java/com/android/incallui/commontheme/res/values-az/strings.xml index d935a6c934860b5db160afe6e7d3fceb3db030e5..a1d88ceef1a6b4dd9d2640907da9e77b72ccf3c9 100644 --- a/java/com/android/incallui/commontheme/res/values-az/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-az/strings.xml @@ -1,4 +1,20 @@ + + "Zəngi sonlandırın" @@ -15,4 +31,6 @@ "Video aktivdir" "Video deaktivdir" "Videonu dəyişdirin" + "Dinamik" + "Səs" diff --git a/java/com/android/incallui/commontheme/res/values-b+sr+Latn/strings.xml b/java/com/android/incallui/commontheme/res/values-b+sr+Latn/strings.xml index 36430c42bbfabe4d861381dc7a1b705b7d557474..05ae59cdd54f6ca2f4ff2a5314417ef4b26a548b 100644 --- a/java/com/android/incallui/commontheme/res/values-b+sr+Latn/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-b+sr+Latn/strings.xml @@ -1,4 +1,20 @@ + + "Završi poziv" @@ -15,4 +31,6 @@ "Uključi video" "Isključi video" "Zameni video" + "Zvučnik" + "Zvuk" diff --git a/java/com/android/incallui/commontheme/res/values-be/strings.xml b/java/com/android/incallui/commontheme/res/values-be/strings.xml index 9609a634677ca657de1b2eb451e6dec4879c2de4..e772e2795b330abc5496084c6554b165ae5287a0 100644 --- a/java/com/android/incallui/commontheme/res/values-be/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-be/strings.xml @@ -1,4 +1,20 @@ + + "Завяршыць выклік" @@ -15,4 +31,6 @@ "Відэа ўкл." "Відэа выкл." "Пераключыць відэа" + "Вонк.дынамік" + "Гук" diff --git a/java/com/android/incallui/commontheme/res/values-bg/strings.xml b/java/com/android/incallui/commontheme/res/values-bg/strings.xml index 1a0f3e312c78f9283daa0e2e676f861ceaa9016a..63364f8e682f1fa2bebf1806f790104e1d82c88d 100644 --- a/java/com/android/incallui/commontheme/res/values-bg/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-bg/strings.xml @@ -1,4 +1,20 @@ + + "Край на обаждането" @@ -15,4 +31,6 @@ "Видеото е включено" "Видеото е изключено" "Размяна на видеото" + "Високогов." + "Звук" diff --git a/java/com/android/incallui/commontheme/res/values-bn/strings.xml b/java/com/android/incallui/commontheme/res/values-bn/strings.xml index ef2408f6459b7b03c493c9b1c9c67124e62d50fe..9871ea447e74882397c6c78fb797f7c47c5bb7f6 100644 --- a/java/com/android/incallui/commontheme/res/values-bn/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-bn/strings.xml @@ -1,4 +1,20 @@ + + "কল কেটে দিন" @@ -15,4 +31,6 @@ "ভিডিও চালু আছে" "ভিডিও বন্ধ আছে" "ভিডিও অদল বদল করুন" + "স্পিকার" + "শব্দ" diff --git a/java/com/android/incallui/commontheme/res/values-bs/strings.xml b/java/com/android/incallui/commontheme/res/values-bs/strings.xml index bfaff983fa008a318adca64f8b77e6bb611be075..76f991d6453def3a72711ea864a319dbd189ec3f 100644 --- a/java/com/android/incallui/commontheme/res/values-bs/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-bs/strings.xml @@ -1,4 +1,20 @@ + + "Prekini poziv" @@ -15,4 +31,6 @@ "Kamera je uključena" "Kamera je isključena" "Zamijeni kameru" + "Zvučnik" + "Zvuk" diff --git a/java/com/android/incallui/commontheme/res/values-ca/strings.xml b/java/com/android/incallui/commontheme/res/values-ca/strings.xml index 1b6ed4492448a2b437828655a285ba09444083ab..832027d399599f13ef5f0feca5a1c45f0585ef2c 100644 --- a/java/com/android/incallui/commontheme/res/values-ca/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-ca/strings.xml @@ -1,4 +1,20 @@ + + "Finalitza la trucada" @@ -15,4 +31,6 @@ "Vídeo activat" "Vídeo desactivat" "Canvia de vídeo" + "Altaveu" + "So" diff --git a/java/com/android/incallui/commontheme/res/values-cs/strings.xml b/java/com/android/incallui/commontheme/res/values-cs/strings.xml index 1f10d85fe355939b35bd36ad706e76227ac9eb9d..7afdcba0bfa0c2806f601fe0b1c7c4c67f7ed0c6 100644 --- a/java/com/android/incallui/commontheme/res/values-cs/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-cs/strings.xml @@ -1,4 +1,20 @@ + + "Ukončit hovor" @@ -15,4 +31,6 @@ "Zapnuté video" "Vypnuté video" "Přepnout video" + "Reproduktor" + "Zvuk" diff --git a/java/com/android/incallui/commontheme/res/values-da/strings.xml b/java/com/android/incallui/commontheme/res/values-da/strings.xml index 35d01e31799838009e9278c673c348eaf2ee8959..bd26e90e5a27bc4b531fcbb86859b631d1ca94de 100644 --- a/java/com/android/incallui/commontheme/res/values-da/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-da/strings.xml @@ -1,4 +1,20 @@ + + "Afslut opkald" @@ -15,4 +31,6 @@ "Video til" "Video fra" "Byt video" + "Højttaler" + "Lyd" diff --git a/java/com/android/incallui/commontheme/res/values-de/strings.xml b/java/com/android/incallui/commontheme/res/values-de/strings.xml index 57a95b7f3affae250836b6f03999d66ff631a28a..3fd10f0e60465dc8673a891f2754df565a66b5c3 100644 --- a/java/com/android/incallui/commontheme/res/values-de/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-de/strings.xml @@ -1,4 +1,20 @@ + + "Anruf beenden" @@ -15,4 +31,6 @@ "Video an" "Video aus" "Video wechseln" + "Lautsprecher" + "Tonausgabe" diff --git a/java/com/android/incallui/commontheme/res/values-el/strings.xml b/java/com/android/incallui/commontheme/res/values-el/strings.xml index 6bb9edcd14b1814e0ff7bb0350009d6f2fa375fb..71c0be9a7eb98ba46859bd8c9baffc17d9398442 100644 --- a/java/com/android/incallui/commontheme/res/values-el/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-el/strings.xml @@ -1,4 +1,20 @@ + + "Τερματισμός" @@ -15,4 +31,6 @@ "Εικόνα βίντεο ενεργοποιημένη" "Εικόνα βίντεο απενεργοποιημένη" "Εναλλαγή βίντεο" + "Ηχείο" + "Ήχος" diff --git a/java/com/android/incallui/commontheme/res/values-en-rAU/strings.xml b/java/com/android/incallui/commontheme/res/values-en-rAU/strings.xml index 8133185b577baf67d122fbbaf6c96ff33f48ea9d..4869c3fa3bf4f7a19feb112461e3ff982806733e 100644 --- a/java/com/android/incallui/commontheme/res/values-en-rAU/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-en-rAU/strings.xml @@ -1,4 +1,20 @@ + + "End call" @@ -15,4 +31,6 @@ "Video on" "Video off" "Swap video" + "Speaker" + "Sound" diff --git a/java/com/android/incallui/commontheme/res/values-en-rGB/strings.xml b/java/com/android/incallui/commontheme/res/values-en-rGB/strings.xml index 8133185b577baf67d122fbbaf6c96ff33f48ea9d..4869c3fa3bf4f7a19feb112461e3ff982806733e 100644 --- a/java/com/android/incallui/commontheme/res/values-en-rGB/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-en-rGB/strings.xml @@ -1,4 +1,20 @@ + + "End call" @@ -15,4 +31,6 @@ "Video on" "Video off" "Swap video" + "Speaker" + "Sound" diff --git a/java/com/android/incallui/commontheme/res/values-en-rIN/strings.xml b/java/com/android/incallui/commontheme/res/values-en-rIN/strings.xml index 8133185b577baf67d122fbbaf6c96ff33f48ea9d..4869c3fa3bf4f7a19feb112461e3ff982806733e 100644 --- a/java/com/android/incallui/commontheme/res/values-en-rIN/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-en-rIN/strings.xml @@ -1,4 +1,20 @@ + + "End call" @@ -15,4 +31,6 @@ "Video on" "Video off" "Swap video" + "Speaker" + "Sound" diff --git a/java/com/android/incallui/commontheme/res/values-es-rUS/strings.xml b/java/com/android/incallui/commontheme/res/values-es-rUS/strings.xml index 45f2e2f4263e552b1e1aab190285850e75fc3ea1..a9596d9e6fa6a71858748a1f2890d3c111e00c13 100644 --- a/java/com/android/incallui/commontheme/res/values-es-rUS/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-es-rUS/strings.xml @@ -1,4 +1,20 @@ + + "Finalizar llamada" @@ -15,4 +31,6 @@ "Video activado" "Video desactivado" "Intercambiar video" + "Altavoz" + "Sonido" diff --git a/java/com/android/incallui/commontheme/res/values-es/strings.xml b/java/com/android/incallui/commontheme/res/values-es/strings.xml index 56c8b2852a07c9d3eb0059cf0678afd9c6332fed..aa84c625b2f391c711e34c30ddf0b299e89cdc95 100644 --- a/java/com/android/incallui/commontheme/res/values-es/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-es/strings.xml @@ -1,4 +1,20 @@ + + "Finalizar llamada" @@ -15,4 +31,6 @@ "Vídeo activado" "Vídeo desactivado" "Cambiar de vídeo" + "Altavoz" + "Sonido" diff --git a/java/com/android/incallui/commontheme/res/values-et/strings.xml b/java/com/android/incallui/commontheme/res/values-et/strings.xml index 069f3b5fd8e6203ffec6c80646a533ad64fd2d80..ae2e1ba536f1de7d3cf476bc3f2527c425bea3d7 100644 --- a/java/com/android/incallui/commontheme/res/values-et/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-et/strings.xml @@ -1,4 +1,20 @@ + + "Kõne lõpetamine" @@ -15,4 +31,6 @@ "Video on sees" "Video on väljas" "Video vahetamine" + "Kõlar" + "Heli" diff --git a/java/com/android/incallui/commontheme/res/values-eu/strings.xml b/java/com/android/incallui/commontheme/res/values-eu/strings.xml index bbcf5dc6e3531d8c2ed100476ae87b10ccc46941..0dd126c5a1f8d0e377d97261361a843de9cfa9a4 100644 --- a/java/com/android/incallui/commontheme/res/values-eu/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-eu/strings.xml @@ -1,4 +1,20 @@ + + "Amaitu deia" @@ -15,4 +31,6 @@ "Aktibatuta dago bideoa" "Desaktibatuta dago bideoa" "Aldatu bideoa" + "Bozgorailua" + "Soinua" diff --git a/java/com/android/incallui/commontheme/res/values-fa/strings.xml b/java/com/android/incallui/commontheme/res/values-fa/strings.xml index ea967bb7e21c54f6ad5af0dfbe828e7fa4bfcd27..1996ad47ba023732cd67a0d77451a1c28faed403 100644 --- a/java/com/android/incallui/commontheme/res/values-fa/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-fa/strings.xml @@ -1,4 +1,20 @@ + + "پایان تماس" @@ -15,4 +31,6 @@ "ویدئو فعال" "ویدئو غیرفعال" "جابه‌جایی ویدئو" + "بلندگو" + "صدا" diff --git a/java/com/android/incallui/commontheme/res/values-fi/strings.xml b/java/com/android/incallui/commontheme/res/values-fi/strings.xml index f0da44f0704f08a98841b45c77a2dbc0188b4405..5a579816b46349b79892acf474cf12988364c35f 100644 --- a/java/com/android/incallui/commontheme/res/values-fi/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-fi/strings.xml @@ -1,4 +1,20 @@ + + "Päätä puhelu" @@ -15,4 +31,6 @@ "Videokuva käytössä" "Videokuva poissa käytöstä" "Vaihda videota" + "Kaiutin" + "Ääni" diff --git a/java/com/android/incallui/commontheme/res/values-fr-rCA/strings.xml b/java/com/android/incallui/commontheme/res/values-fr-rCA/strings.xml index bf74dfbefe293702d3ab3a3367ed091396dce0a2..a1db3065ab6675c0df19839eabc2f1d142c2e06f 100644 --- a/java/com/android/incallui/commontheme/res/values-fr-rCA/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-fr-rCA/strings.xml @@ -1,4 +1,20 @@ + + "Mettre fin à l\'appel" @@ -15,4 +31,6 @@ "Vidéo activée" "Vidéo désactivée" "Permuter la vidéo" + "Haut-parleur" + "Son" diff --git a/java/com/android/incallui/commontheme/res/values-fr/strings.xml b/java/com/android/incallui/commontheme/res/values-fr/strings.xml index fb674a4839881b99ec48c407e19db9da232c3ea7..e169a3d7a2c254ef41c53720c51e3de0227fd3f0 100644 --- a/java/com/android/incallui/commontheme/res/values-fr/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-fr/strings.xml @@ -1,4 +1,20 @@ + + "Mettre fin à l\'appel" @@ -15,4 +31,6 @@ "Vidéo activée" "Vidéo désactivée" "Permuter la vidéo" + "Haut-parleur" + "Audio" diff --git a/java/com/android/incallui/commontheme/res/values-gl/strings.xml b/java/com/android/incallui/commontheme/res/values-gl/strings.xml index c7e22141629c36b86571a24b6946ec5a4dac7de2..ba98a98a74644c42094292895c1655e2ab381562 100644 --- a/java/com/android/incallui/commontheme/res/values-gl/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-gl/strings.xml @@ -1,4 +1,20 @@ + + "Finalizar chamada" @@ -15,4 +31,6 @@ "Vídeo activado" "Vídeo desactivado" "Alternar vídeo" + "Altofalante" + "Son" diff --git a/java/com/android/incallui/commontheme/res/values-gu/strings.xml b/java/com/android/incallui/commontheme/res/values-gu/strings.xml index 75584ea0d3bfde2ccf87c9b517f045a75d5d96c7..194590cecee2475468a10ef5e1ab68c3721ffa11 100644 --- a/java/com/android/incallui/commontheme/res/values-gu/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-gu/strings.xml @@ -1,4 +1,20 @@ + + "કૉલ સમાપ્ત કરો" @@ -15,4 +31,6 @@ "વિડિઓ ચાલુ" "વિડિઓ બંધ" "વિડિઓ સ્વેપ કરો" + "સ્પીકર" + "ધ્વનિ" diff --git a/java/com/android/incallui/commontheme/res/values-hi/strings.xml b/java/com/android/incallui/commontheme/res/values-hi/strings.xml index f7ea68ad82e81e56f192e399a3a62bfdc017d0ec..207bbf2be2015093df38c4c6ef7f07e8375fd9f0 100644 --- a/java/com/android/incallui/commontheme/res/values-hi/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-hi/strings.xml @@ -1,4 +1,20 @@ + + "कॉल समाप्त करें" @@ -15,4 +31,6 @@ "वीडियो चालू" "वीडियो बंद" "वीडियो स्वैप करें" + "स्‍पीकर" + "ध्वनि" diff --git a/java/com/android/incallui/commontheme/res/values-hr/strings.xml b/java/com/android/incallui/commontheme/res/values-hr/strings.xml index c30f3977e7b7e8f3088de06b54bf3e99010a2141..c58ab852fcb16ff8f60808321e0ef9e50eca1818 100644 --- a/java/com/android/incallui/commontheme/res/values-hr/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-hr/strings.xml @@ -1,4 +1,20 @@ + + "Prekid poziva" @@ -15,4 +31,6 @@ "Videopoziv uključen" "Videopoziv isključen" "Zamijeni videopoziv" + "Zvučnik" + "Zvuk" diff --git a/java/com/android/incallui/commontheme/res/values-hu/strings.xml b/java/com/android/incallui/commontheme/res/values-hu/strings.xml index 9ee2300e2202f9eace2122a34148dee9392024ab..ba7fec7d55d03ff00be33b7f9ad3956b6715a154 100644 --- a/java/com/android/incallui/commontheme/res/values-hu/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-hu/strings.xml @@ -1,4 +1,20 @@ + + "Hívás befejezése" @@ -15,4 +31,6 @@ "Videó be" "Videó ki" "Videó cseréje" + "Hangszóró" + "Hang" diff --git a/java/com/android/incallui/commontheme/res/values-hy/strings.xml b/java/com/android/incallui/commontheme/res/values-hy/strings.xml index 96a0cab6fafca2dfcdf3033d2de4320d23efe7c9..81262e4c6800f86592e81cb3707f2cf39688010a 100644 --- a/java/com/android/incallui/commontheme/res/values-hy/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-hy/strings.xml @@ -1,4 +1,20 @@ + + "Ավարտել զանգը" @@ -15,4 +31,6 @@ "Տեսախցիկը միացած է" "Տեսախցիկն անջատած է" "Փոխարկել խցիկը" + "Բարձրախոս" + "Ձայն" diff --git a/java/com/android/incallui/commontheme/res/values-in/strings.xml b/java/com/android/incallui/commontheme/res/values-in/strings.xml index 4536f5db0e8c11eafee2ddc379e6b57de156718b..fb3fc56ec750efed72c4eddc70b895d88ee4d5ec 100644 --- a/java/com/android/incallui/commontheme/res/values-in/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-in/strings.xml @@ -1,4 +1,20 @@ + + "Akhiri panggilan" @@ -15,4 +31,6 @@ "Video aktif" "Video nonaktif" "Tukar Video" + "Speaker" + "Suara" diff --git a/java/com/android/incallui/commontheme/res/values-is/strings.xml b/java/com/android/incallui/commontheme/res/values-is/strings.xml index 357f90eee4e762c050d4e68687272cb3ff295123..438b143e44ae4505ef017cca3fc98a6c162fc635 100644 --- a/java/com/android/incallui/commontheme/res/values-is/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-is/strings.xml @@ -1,4 +1,20 @@ + + "Ljúka símtali" @@ -15,4 +31,6 @@ "Kveikja á mynd" "Slökkva á mynd" "Skipta um mynd" + "Hátalari" + "Hljóð" diff --git a/java/com/android/incallui/commontheme/res/values-it/strings.xml b/java/com/android/incallui/commontheme/res/values-it/strings.xml index a63d3140ae3de1873a1d531c95e940c510d48117..b7c1d3f4eda85db80ab3f53a5fcda9a7efd1ca1c 100644 --- a/java/com/android/incallui/commontheme/res/values-it/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-it/strings.xml @@ -1,4 +1,20 @@ + + "Termina chiamata" @@ -15,4 +31,6 @@ "Video attivo" "Video non attivo" "Scambia video" + "Altoparlante" + "Suono" diff --git a/java/com/android/incallui/commontheme/res/values-iw/strings.xml b/java/com/android/incallui/commontheme/res/values-iw/strings.xml index 1e2b7f2b17901d80fa5d3c1d714172eef4425564..cbd6d757306afa515cd9d0eeffb32bd717b5ac36 100644 --- a/java/com/android/incallui/commontheme/res/values-iw/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-iw/strings.xml @@ -1,4 +1,20 @@ + + "סיים שיחה" @@ -15,4 +31,6 @@ "הווידאו מופעל" "הווידאו מושבת" "החלף וידאו" + "רמקול" + "קול" diff --git a/java/com/android/incallui/commontheme/res/values-ja/strings.xml b/java/com/android/incallui/commontheme/res/values-ja/strings.xml index 658b51349c3c6f02cd9782bdce861db7137d5911..4ea949581228980bd4c41076f9dd4cef061e2f1b 100644 --- a/java/com/android/incallui/commontheme/res/values-ja/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-ja/strings.xml @@ -1,4 +1,20 @@ + + "通話を終了" @@ -15,4 +31,6 @@ "ビデオが ON になっています" "ビデオが OFF になっています" "ビデオを切り替える" + "スピーカー" + "音声" diff --git a/java/com/android/incallui/commontheme/res/values-ka/strings.xml b/java/com/android/incallui/commontheme/res/values-ka/strings.xml index ffba7cedee22161f8d444d34dd014ae6b7ef8e7e..3163476b6e675c218b7adec97485271cffcc3409 100644 --- a/java/com/android/incallui/commontheme/res/values-ka/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-ka/strings.xml @@ -1,4 +1,20 @@ + + "ზარის დასრულება" @@ -15,4 +31,6 @@ "ვიდეო ჩართულია" "ვიდეო გამორთულია" "ვიდეოს შენაცვლება" + "სპიკერი" + "ხმა" diff --git a/java/com/android/incallui/commontheme/res/values-kk/strings.xml b/java/com/android/incallui/commontheme/res/values-kk/strings.xml index ace83ecee0339d9cbaa669cdecadccfc63a6f670..23b3a2ad67274707f77262253d9e3f3a28cc7a15 100644 --- a/java/com/android/incallui/commontheme/res/values-kk/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-kk/strings.xml @@ -1,4 +1,20 @@ + + "Қоңырауды аяқтау" @@ -15,4 +31,6 @@ "Бейне қосулы" "Бейне өшірулі" "Бейнені ауыстыру" + "Динамик" + "Дыбыс" diff --git a/java/com/android/incallui/commontheme/res/values-km/strings.xml b/java/com/android/incallui/commontheme/res/values-km/strings.xml index e28f120297f906e8a6afaa9256793fd072ba7b50..55cfa0a16abf339f3c6a52f8899989dcfb8076d9 100644 --- a/java/com/android/incallui/commontheme/res/values-km/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-km/strings.xml @@ -1,4 +1,20 @@ + + "បញ្ចប់​ការ​ហៅ" @@ -15,4 +31,6 @@ "បើក​វីដេអូ​" "បិទ​វីដេអូ" "ប្ដូរ​វីដេអូ" + "ឧបករណ៍​បំពង​សំឡេង" + "សំឡេង" diff --git a/java/com/android/incallui/commontheme/res/values-kn/strings.xml b/java/com/android/incallui/commontheme/res/values-kn/strings.xml index 59186e0a3eb50d842c71ec3230b48c178277e7d0..685ef642ff8b827293b06277f1906a9436b2ad53 100644 --- a/java/com/android/incallui/commontheme/res/values-kn/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-kn/strings.xml @@ -1,4 +1,20 @@ + + "ಕರೆ ಅಂತ್ಯಗೊಳಿಸಿ" @@ -15,4 +31,6 @@ "ವೀಡಿಯೊ ಆನ್" "ವೀಡಿಯೊ ಆಫ್" "ವೀಡಿಯೊ ಬದಲಾಯಿಸಿ" + "ಸ್ಪೀಕರ್‌" + "ಶಬ್ದ" diff --git a/java/com/android/incallui/commontheme/res/values-ko/strings.xml b/java/com/android/incallui/commontheme/res/values-ko/strings.xml index 0a0e3c9aa84a350db7d206f995f07c9da8b3c1cb..088746ddd47fb441157c95cb8f5689be3bdd2b72 100644 --- a/java/com/android/incallui/commontheme/res/values-ko/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-ko/strings.xml @@ -1,4 +1,20 @@ + + "통화 종료" @@ -15,4 +31,6 @@ "동영상 켜짐" "동영상 꺼짐" "동영상 전환" + "스피커" + "소리" diff --git a/java/com/android/incallui/commontheme/res/values-ky/strings.xml b/java/com/android/incallui/commontheme/res/values-ky/strings.xml index ac697e4fe6543f2a87e95e437a991996491c4b1a..5dd4d0c219f5fda742916c718122abcbb7354115 100644 --- a/java/com/android/incallui/commontheme/res/values-ky/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-ky/strings.xml @@ -1,4 +1,20 @@ + + "Чалууну бүтүрүү" @@ -15,4 +31,6 @@ "Видео күйүк" "Видео өчүк" "Видеону иштетүү/өчүрүү" + "Катуу сүйлөткүч" + "Добуш" diff --git a/java/com/android/incallui/commontheme/res/values-lo/strings.xml b/java/com/android/incallui/commontheme/res/values-lo/strings.xml index da2050ac2116ea56b2bb528aae90da05c9ad7ce9..2f0b94b5421ba92ab6198ac5077017f973ab800d 100644 --- a/java/com/android/incallui/commontheme/res/values-lo/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-lo/strings.xml @@ -1,4 +1,20 @@ + + "ວາງສາຍ" @@ -15,4 +31,6 @@ "ວິດີໂອເປີດ" "ວິດີໂອປິດ" "ສະຫຼັບວິດີໂອ" + "ລຳໂພງ" + "ສຽງ" diff --git a/java/com/android/incallui/commontheme/res/values-lt/strings.xml b/java/com/android/incallui/commontheme/res/values-lt/strings.xml index bda53d6f6183234e9436b11fc989a4b98fd50f0c..d0a5e0d9cf042aec6555893b3d5f021db6ce95ed 100644 --- a/java/com/android/incallui/commontheme/res/values-lt/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-lt/strings.xml @@ -1,4 +1,20 @@ + + "Baigti skambutį" @@ -15,4 +31,6 @@ "Vaizdas įjungtas" "Vaizdas išjungtas" "Sukeisti vaizdą" + "Garsiakalbis" + "Garsas" diff --git a/java/com/android/incallui/commontheme/res/values-lv/strings.xml b/java/com/android/incallui/commontheme/res/values-lv/strings.xml index beaf35c5838f9f2c07ddea2e7b029b839eaad6e0..443ac5e80777bd3e61156419b434115f22ade818 100644 --- a/java/com/android/incallui/commontheme/res/values-lv/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-lv/strings.xml @@ -1,4 +1,20 @@ + + "Beigt zvanu" @@ -15,4 +31,6 @@ "Video ieslēgts" "Video izslēgts" "Mainīt video" + "Skaļrunis" + "Skaņa" diff --git a/java/com/android/incallui/commontheme/res/values-mk/strings.xml b/java/com/android/incallui/commontheme/res/values-mk/strings.xml index 5b4f6d0c5cf7f903b2386dbe4b9ad59d3632c35a..d9a339eab622a7d20e4a025eec39b81534e2dd0f 100644 --- a/java/com/android/incallui/commontheme/res/values-mk/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-mk/strings.xml @@ -1,4 +1,20 @@ + + "Завршете го повикот" @@ -15,4 +31,6 @@ "Видеото е вклучено" "Видеото е исклучено" "Заменете го видеото" + "Звучник" + "Звук" diff --git a/java/com/android/incallui/commontheme/res/values-ml/strings.xml b/java/com/android/incallui/commontheme/res/values-ml/strings.xml index 024266736565ba7023d516532b4c4b19d17e0d08..0f2d889687a7bbdf57f524a053d9b479d6aa8d02 100644 --- a/java/com/android/incallui/commontheme/res/values-ml/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-ml/strings.xml @@ -1,4 +1,20 @@ + + "കോള്‍ അവസാനിപ്പിക്കൂ" @@ -15,4 +31,6 @@ "വീഡിയോ ഓണാണ്" "വീഡിയോ ഓഫാണ്" "വീഡിയോ സ്വാപ്പുചെയ്യുക" + "സ്പീക്കർ" + "ശബ്‌ദം" diff --git a/java/com/android/incallui/commontheme/res/values-mn/strings.xml b/java/com/android/incallui/commontheme/res/values-mn/strings.xml index cd286edb9e38bdff2c6c9f4e905d9ed281eb92dc..3665fcfa6fa4cb74c4f3cd4a86363b7a3d515a66 100644 --- a/java/com/android/incallui/commontheme/res/values-mn/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-mn/strings.xml @@ -1,4 +1,20 @@ + + "Дуудлагыг таслах" @@ -15,4 +31,6 @@ "Видео идэвхтэй" "Видео идэвхгүй" "Видеог солих" + "Чанга яригч" + "Дуу" diff --git a/java/com/android/incallui/commontheme/res/values-mr/strings.xml b/java/com/android/incallui/commontheme/res/values-mr/strings.xml index 2c626edbdbbc066cf9fbc3f3c48228a7fd9579ef..f7498097fed41084f575f544592f347ec17ab3dc 100644 --- a/java/com/android/incallui/commontheme/res/values-mr/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-mr/strings.xml @@ -1,4 +1,20 @@ + + "कॉल समाप्त करा" @@ -15,4 +31,6 @@ "व्हिडिओ चालू" "व्हिडिओ बंद" "व्हिडिओ बदला" + "स्पीकर" + "ध्वनी" diff --git a/java/com/android/incallui/commontheme/res/values-ms/strings.xml b/java/com/android/incallui/commontheme/res/values-ms/strings.xml index f6c358d7907112be17b57f4c12f728abc27d9b47..fb38fa9d1d9597440a6a7d63138ee0235e3a3144 100644 --- a/java/com/android/incallui/commontheme/res/values-ms/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-ms/strings.xml @@ -1,4 +1,20 @@ + + "Tamatkan panggilan" @@ -15,4 +31,6 @@ "Video dihidupkan" "Video dimatikan" "Silih video" + "Pmbsr suara" + "Bunyi" diff --git a/java/com/android/incallui/commontheme/res/values-my/strings.xml b/java/com/android/incallui/commontheme/res/values-my/strings.xml index 6b6614c36d6e5db4799e25bc29bdd92b01371b7e..5b396be5919cf949d8aeb71d87c57fc500ec53ce 100644 --- a/java/com/android/incallui/commontheme/res/values-my/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-my/strings.xml @@ -1,4 +1,20 @@ + + "ခေါ်ဆိုမှုအပြီးသတ်ရန်" @@ -15,4 +31,6 @@ "ဗီဒီယိုဖွင့်ထားသည်" "ဗီဒီယိုပိတ်ထားသည်" "ဗီဒီယိုဖလှယ်ရန်" + "စပီကာ" + "အသံ" diff --git a/java/com/android/incallui/commontheme/res/values-nb/strings.xml b/java/com/android/incallui/commontheme/res/values-nb/strings.xml index 4974411bc8d84fa64c18020574e2b3b4467a4509..506b15e31895308b0f999b7131078c5e7d601835 100644 --- a/java/com/android/incallui/commontheme/res/values-nb/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-nb/strings.xml @@ -1,4 +1,20 @@ + + "Avslutt samtalen" @@ -15,4 +31,6 @@ "Video på" "Video av" "Bytt video" + "Høyttaler" + "Lyd" diff --git a/java/com/android/incallui/commontheme/res/values-ne/strings.xml b/java/com/android/incallui/commontheme/res/values-ne/strings.xml index 5cd91b336d191d4312d768cfd0ebc037afee00f1..fa9d87fb714dbddb46dc8c3aa0ba6943d29cb1d2 100644 --- a/java/com/android/incallui/commontheme/res/values-ne/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-ne/strings.xml @@ -1,4 +1,20 @@ + + "कल अन्त्य गर्नुहोस्" @@ -15,4 +31,6 @@ "सक्रिय भिडियो" "निष्क्रिय भिडियो" "भिडियो साट्नुहोस्" + "स्पिकर" + "आवाज" diff --git a/java/com/android/incallui/commontheme/res/values-nl/strings.xml b/java/com/android/incallui/commontheme/res/values-nl/strings.xml index d33d60075dd5f684119834dc09109bdf650137a0..192c47b976d547305da43f2cbbe20fa50a60a7a8 100644 --- a/java/com/android/incallui/commontheme/res/values-nl/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-nl/strings.xml @@ -1,4 +1,20 @@ + + "Oproep beëindigen" @@ -15,4 +31,6 @@ "Video aan" "Video uit" "Video wisselen" + "Luidspreker" + "Geluid" diff --git a/java/com/android/incallui/commontheme/res/values-no/strings.xml b/java/com/android/incallui/commontheme/res/values-no/strings.xml index 4974411bc8d84fa64c18020574e2b3b4467a4509..506b15e31895308b0f999b7131078c5e7d601835 100644 --- a/java/com/android/incallui/commontheme/res/values-no/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-no/strings.xml @@ -1,4 +1,20 @@ + + "Avslutt samtalen" @@ -15,4 +31,6 @@ "Video på" "Video av" "Bytt video" + "Høyttaler" + "Lyd" diff --git a/java/com/android/incallui/commontheme/res/values-pa/strings.xml b/java/com/android/incallui/commontheme/res/values-pa/strings.xml index 7e59e6114eed329da7e465c537c0a4bafc62dc55..77ceb252a323403a5dd39448282c178277eed2bd 100644 --- a/java/com/android/incallui/commontheme/res/values-pa/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-pa/strings.xml @@ -1,4 +1,20 @@ + + "ਕਾਲ ਸਮਾਪਤ ਕਰੋ" @@ -15,4 +31,6 @@ "ਵੀਡੀਓ ਚਾਲੂ" "ਵੀਡੀਓ ਬੰਦ" "ਵੀਡੀਓ ਦੀ ਅਦਲਾ ਬਦਲੀ ਕਰੋ" + "ਸਪੀਕਰ" + "ਧੁਨੀ" diff --git a/java/com/android/incallui/commontheme/res/values-pl/strings.xml b/java/com/android/incallui/commontheme/res/values-pl/strings.xml index 4ab1d244d0f60358a0f1f7acd1862a595a2df041..d9b037e8dc8db15eb246ca2e7a226b2ae60471b1 100644 --- a/java/com/android/incallui/commontheme/res/values-pl/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-pl/strings.xml @@ -1,4 +1,20 @@ + + "Zakończ połączenie" @@ -15,4 +31,6 @@ "Wideo włączone" "Wideo wyłączone" "Przełącz wideo" + "Głośnik" + "Dźwięk" diff --git a/java/com/android/incallui/commontheme/res/values-pt-rBR/strings.xml b/java/com/android/incallui/commontheme/res/values-pt-rBR/strings.xml index 67f367466aa9f4ddca60dd03b2b8943c726a7bb3..2c1834e0f6212c06e4d41cc66df94a8991513411 100644 --- a/java/com/android/incallui/commontheme/res/values-pt-rBR/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-pt-rBR/strings.xml @@ -1,4 +1,20 @@ + + "Encerrar chamada" @@ -15,4 +31,6 @@ "Vídeo ativado" "Vídeo desativado" "Trocar vídeo" + "Alto-falante" + "Som" diff --git a/java/com/android/incallui/commontheme/res/values-pt-rPT/strings.xml b/java/com/android/incallui/commontheme/res/values-pt-rPT/strings.xml index 27c5649289a40d2cfd7e77bf45d688bbbed43a44..f0c14d027976d4d6b87c12d13f52367b00c04df7 100644 --- a/java/com/android/incallui/commontheme/res/values-pt-rPT/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-pt-rPT/strings.xml @@ -1,4 +1,20 @@ + + "Terminar chamada" @@ -15,4 +31,6 @@ "Vídeo ativado" "Vídeo desativado" "Alternar vídeo" + "Altifalante" + "Som" diff --git a/java/com/android/incallui/commontheme/res/values-pt/strings.xml b/java/com/android/incallui/commontheme/res/values-pt/strings.xml index 67f367466aa9f4ddca60dd03b2b8943c726a7bb3..2c1834e0f6212c06e4d41cc66df94a8991513411 100644 --- a/java/com/android/incallui/commontheme/res/values-pt/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-pt/strings.xml @@ -1,4 +1,20 @@ + + "Encerrar chamada" @@ -15,4 +31,6 @@ "Vídeo ativado" "Vídeo desativado" "Trocar vídeo" + "Alto-falante" + "Som" diff --git a/java/com/android/incallui/commontheme/res/values-ro/strings.xml b/java/com/android/incallui/commontheme/res/values-ro/strings.xml index b7fec9a58b7f507ed3d023dd01aa7faa914210b9..f7c8f7257601a34b8f7b00329ea2a168c9573150 100644 --- a/java/com/android/incallui/commontheme/res/values-ro/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-ro/strings.xml @@ -1,4 +1,20 @@ + + "Încheiați apelul" @@ -15,4 +31,6 @@ "Imaginea video este activată" "Imaginea video este dezactivată" "Schimbați imaginea video" + "Difuzor" + "Sunet" diff --git a/java/com/android/incallui/commontheme/res/values-ru/strings.xml b/java/com/android/incallui/commontheme/res/values-ru/strings.xml index 5d1807f7af886199a5c93dcdb8796463fafbce30..1853ad23ffd48282f6c1c87092cbf9c44a9c69e8 100644 --- a/java/com/android/incallui/commontheme/res/values-ru/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-ru/strings.xml @@ -1,4 +1,20 @@ + + "Завершить вызов" @@ -15,4 +31,6 @@ "Камера включена" "Камера выключена" "Включить/выключить камеру" + "Динамик" + "Звук" diff --git a/java/com/android/incallui/commontheme/res/values-si/strings.xml b/java/com/android/incallui/commontheme/res/values-si/strings.xml index 0a0f35c47fe34c5cde8d744225b7292edd359f13..ae13cc4242f73ac2d907acfce3c9d1aa5f14dd1f 100644 --- a/java/com/android/incallui/commontheme/res/values-si/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-si/strings.xml @@ -1,4 +1,20 @@ + + "ඇමතුම අවසන් කරන්න" @@ -15,4 +31,6 @@ "වීඩියෝව ක්‍රියාත්මකයි" "වීඩියෝව ක්‍රියාවිරහිතයි" "වීඩියෝව මාරු කරන්න" + "ස්පීකරය" + "හඬ" diff --git a/java/com/android/incallui/commontheme/res/values-sk/strings.xml b/java/com/android/incallui/commontheme/res/values-sk/strings.xml index 97eabebb4f869176cebeb32fab0050efbb9ccc34..cd9aa9912a68e6d65fe58e50d662ac290754176a 100644 --- a/java/com/android/incallui/commontheme/res/values-sk/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-sk/strings.xml @@ -1,4 +1,20 @@ + + "Ukončiť hovor" @@ -15,4 +31,6 @@ "Video je zapnuté" "Video je vypnuté" "Zameniť video" + "Reproduktor" + "Zvuk" diff --git a/java/com/android/incallui/commontheme/res/values-sl/strings.xml b/java/com/android/incallui/commontheme/res/values-sl/strings.xml index 46cf2e8eead8c16fd9bdbc673c723919c1dca3fe..0aa6e699add6d9a0d36417cba694c80a3a5acb80 100644 --- a/java/com/android/incallui/commontheme/res/values-sl/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-sl/strings.xml @@ -1,4 +1,20 @@ + + "Končaj klic" @@ -15,4 +31,6 @@ "Vklopi video" "Izklopi video" "Zamenjaj video" + "Zvočnik" + "Zvok" diff --git a/java/com/android/incallui/commontheme/res/values-sq/strings.xml b/java/com/android/incallui/commontheme/res/values-sq/strings.xml index 17ec08167ecc610924a18e45fc69294880969099..b9c97d1dd621cb034a5c8a944db437fa4021063f 100644 --- a/java/com/android/incallui/commontheme/res/values-sq/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-sq/strings.xml @@ -1,4 +1,20 @@ + + "Mbylle telefonatën" @@ -15,4 +31,6 @@ "Videoja aktive" "Videoja joaktive" "Shkëmbe video" + "Altoparlanti" + "Tingulli" diff --git a/java/com/android/incallui/commontheme/res/values-sr/strings.xml b/java/com/android/incallui/commontheme/res/values-sr/strings.xml index 2928bc992397f04619e451843bfd01eb0ac915d9..67586b72eb8215e8b0c4199c79c9227718c49bd6 100644 --- a/java/com/android/incallui/commontheme/res/values-sr/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-sr/strings.xml @@ -1,4 +1,20 @@ + + "Заврши позив" @@ -15,4 +31,6 @@ "Укључи видео" "Искључи видео" "Замени видео" + "Звучник" + "Звук" diff --git a/java/com/android/incallui/commontheme/res/values-sv/strings.xml b/java/com/android/incallui/commontheme/res/values-sv/strings.xml index 17b5d3745cf3730ef4c3a83650696de5597c5592..957a2f85ac7a7c876881320b1b2494a87fb8c423 100644 --- a/java/com/android/incallui/commontheme/res/values-sv/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-sv/strings.xml @@ -1,4 +1,20 @@ + + "Avsluta samtal" @@ -15,4 +31,6 @@ "Video på" "Video av" "Byt video" + "Högtalare" + "Ljud" diff --git a/java/com/android/incallui/commontheme/res/values-sw/strings.xml b/java/com/android/incallui/commontheme/res/values-sw/strings.xml index 165d57622fee2b48ba2923ea5473ed15dceb7ec0..8752c2d37e543290b8fc9b3c16183ae9b21fc42b 100644 --- a/java/com/android/incallui/commontheme/res/values-sw/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-sw/strings.xml @@ -1,4 +1,20 @@ + + "Kata simu" @@ -15,4 +31,6 @@ "Washa video" "Zima video" "Badilisha video" + "Spika" + "Sauti" diff --git a/java/com/android/incallui/commontheme/res/values-ta/strings.xml b/java/com/android/incallui/commontheme/res/values-ta/strings.xml index fa2dfb2801f00388368064211abebac5295d0c01..69258d2e6de39c95f973eb5886a9c036a53c8797 100644 --- a/java/com/android/incallui/commontheme/res/values-ta/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-ta/strings.xml @@ -1,4 +1,20 @@ + + "அழைப்பைத் துண்டிக்கும்" @@ -15,4 +31,6 @@ "வீடியோ இயக்கப்பட்டது" "வீடியோ முடக்கப்பட்டது" "வீடியோவிற்கு மாற்றும்" + "ஸ்பீக்கர்" + "ஒலி" diff --git a/java/com/android/incallui/commontheme/res/values-te/strings.xml b/java/com/android/incallui/commontheme/res/values-te/strings.xml index 3ce431cd10e98aa855539cbbe058fc41b60ecfcc..9454e15b760c9e791ed7eba4504ef607627af312 100644 --- a/java/com/android/incallui/commontheme/res/values-te/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-te/strings.xml @@ -1,4 +1,20 @@ + + "కాల్‌ను ముగిస్తుంది" @@ -15,4 +31,6 @@ "వీడియో ఆన్‌లో ఉంది" "వీడియో ఆఫ్‌లో ఉంది" "వీడియోను మారుస్తుంది" + "స్పీకర్" + "ధ్వని" diff --git a/java/com/android/incallui/commontheme/res/values-th/strings.xml b/java/com/android/incallui/commontheme/res/values-th/strings.xml index 1fa145c025e59154bb0dbf0beea83957d0affc13..8235310000b1b9c1544284f745270bd957a3e756 100644 --- a/java/com/android/incallui/commontheme/res/values-th/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-th/strings.xml @@ -1,4 +1,20 @@ + + "วางสาย" @@ -15,4 +31,6 @@ "เปิดวิดีโอ" "ปิดวิดีโอ" "สลับวิดีโอ" + "ลำโพง" + "เสียง" diff --git a/java/com/android/incallui/commontheme/res/values-tl/strings.xml b/java/com/android/incallui/commontheme/res/values-tl/strings.xml index a53e11c7da0a040602f8b45f25e614b85c4460d0..f368e3a6850afa9e50c31b77753627da7a504d9f 100644 --- a/java/com/android/incallui/commontheme/res/values-tl/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-tl/strings.xml @@ -1,4 +1,20 @@ + + "Tapusin ang tawag" @@ -15,4 +31,6 @@ "Naka-on ang video" "Naka-off ang video" "Pagpalitin ang video" + "Speaker" + "Tunog" diff --git a/java/com/android/incallui/commontheme/res/values-tr/strings.xml b/java/com/android/incallui/commontheme/res/values-tr/strings.xml index 09552730a9aa6886b6dcd491aade851d1d5eb76c..cbf550211a987d9cc2ae2a8445363dc5e9e7d829 100644 --- a/java/com/android/incallui/commontheme/res/values-tr/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-tr/strings.xml @@ -1,4 +1,20 @@ + + "Çağrıyı sonlandırın" @@ -15,4 +31,6 @@ "Video açık" "Video kapalı" "Videoyu değiştirin" + "Hoparlör" + "Ses" diff --git a/java/com/android/incallui/commontheme/res/values-uk/strings.xml b/java/com/android/incallui/commontheme/res/values-uk/strings.xml index e17e781b3ae76595ce184ec45b3fecf4ac562f2a..2bcd04c0e878dcfeac369cde6d5a837853dba786 100644 --- a/java/com/android/incallui/commontheme/res/values-uk/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-uk/strings.xml @@ -1,4 +1,20 @@ + + "Завершити виклик" @@ -15,4 +31,6 @@ "Відео ввімкнено" "Відео вимкнено" "Поміняти відео" + "Динамік" + "Звук" diff --git a/java/com/android/incallui/commontheme/res/values-ur/strings.xml b/java/com/android/incallui/commontheme/res/values-ur/strings.xml index 5082e9d11b22d2fb21deddc57307b3fa8e8452c3..bd8cf680776ca52185487bd42b3d6fceaa25220b 100644 --- a/java/com/android/incallui/commontheme/res/values-ur/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-ur/strings.xml @@ -1,4 +1,20 @@ + + "کال ختم کریں" @@ -15,4 +31,6 @@ "ویڈیو آن ہے" "ویڈیو آف ہے" "ویڈیو کا تبادلہ کریں" + "اسپیکر" + "آواز" diff --git a/java/com/android/incallui/commontheme/res/values-uz/strings.xml b/java/com/android/incallui/commontheme/res/values-uz/strings.xml index d349d3f9aada9267dac750128dd4ed1e090267ed..9bc995de2298a068f97277e22e55f18205989199 100644 --- a/java/com/android/incallui/commontheme/res/values-uz/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-uz/strings.xml @@ -1,4 +1,20 @@ + + "Qo‘ng‘iroqni tugatish" @@ -15,4 +31,6 @@ "Video yoniq" "Video o‘chiq" "Videoni yoqish/ochirish" + "Karnay" + "Tovush" diff --git a/java/com/android/incallui/commontheme/res/values-vi/strings.xml b/java/com/android/incallui/commontheme/res/values-vi/strings.xml index 3bd39ae4d30ddc1fd6c53a23b6ea832b0d1e90b9..caf8f3434e7048ce9cbeb2c77ed99e3da2648353 100644 --- a/java/com/android/incallui/commontheme/res/values-vi/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-vi/strings.xml @@ -1,4 +1,20 @@ + + "Kết thúc cuộc gọi" @@ -15,4 +31,6 @@ "Bật video" "Tắt video" "Hoán đổi video" + "Loa" + "Âm báo" diff --git a/java/com/android/incallui/commontheme/res/values-zh-rCN/strings.xml b/java/com/android/incallui/commontheme/res/values-zh-rCN/strings.xml index 0f57120e26b64593f89c372f9e1bae3bfbabf962..4d8bda6bce6d31b64188366f0de502930c24aa05 100644 --- a/java/com/android/incallui/commontheme/res/values-zh-rCN/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-zh-rCN/strings.xml @@ -1,4 +1,20 @@ + + "结束通话" @@ -15,4 +31,6 @@ "视频已开启" "视频已关闭" "切换视频" + "免提" + "音频路径" diff --git a/java/com/android/incallui/commontheme/res/values-zh-rHK/strings.xml b/java/com/android/incallui/commontheme/res/values-zh-rHK/strings.xml index a3809ebcad147efe68c99b28d901aafa9011cd21..175b3e6575764843adcf308a34d5e6399d65f7e5 100644 --- a/java/com/android/incallui/commontheme/res/values-zh-rHK/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-zh-rHK/strings.xml @@ -1,4 +1,20 @@ + + "結束通話" @@ -15,4 +31,6 @@ "視像已開啟" "視像已關閉" "切換視像" + "喇叭" + "音效" diff --git a/java/com/android/incallui/commontheme/res/values-zh-rTW/strings.xml b/java/com/android/incallui/commontheme/res/values-zh-rTW/strings.xml index 983dddda7b12d52f8696a036c36cdf7a5fab0ecd..dee1b9c958ce652bb5c45e58bea7f492114449c0 100644 --- a/java/com/android/incallui/commontheme/res/values-zh-rTW/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-zh-rTW/strings.xml @@ -1,4 +1,20 @@ + + "結束通話" @@ -15,4 +31,6 @@ "開啟視訊畫面" "關閉視訊畫面" "切換視訊畫面" + "擴音" + "音訊" diff --git a/java/com/android/incallui/commontheme/res/values-zu/strings.xml b/java/com/android/incallui/commontheme/res/values-zu/strings.xml index 2dd2c897ee2bbb9dfb671e12a04c7a29c1c3073f..953596231e8863f3008e5ac3cf56349ea91e95ff 100644 --- a/java/com/android/incallui/commontheme/res/values-zu/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-zu/strings.xml @@ -1,4 +1,20 @@ + + "Qeda ikholi" @@ -15,4 +31,6 @@ "Ividiyo ivuliwe" "Ividiyo ivaliwe" "Shintsha ividiyo" + "Isipikha" + "Umsindo" diff --git a/java/com/android/incallui/commontheme/res/values/strings.xml b/java/com/android/incallui/commontheme/res/values/strings.xml index 6f346a34de2506741148e5e5f4118f89ed2a1591..94a8c901b7fba07078af7f052f379da31439faa3 100644 --- a/java/com/android/incallui/commontheme/res/values/strings.xml +++ b/java/com/android/incallui/commontheme/res/values/strings.xml @@ -1,4 +1,19 @@ + End call @@ -32,4 +47,11 @@ Swap video + + Speaker + + Sound + diff --git a/java/com/android/incallui/contactgrid/BottomRow.java b/java/com/android/incallui/contactgrid/BottomRow.java index 228c786a01eb70a79f4fadf6e5b3d5acdd294cd9..d0ff1926acb06fa3946faa9fcc15d6e915409d1b 100644 --- a/java/com/android/incallui/contactgrid/BottomRow.java +++ b/java/com/android/incallui/contactgrid/BottomRow.java @@ -22,7 +22,6 @@ import android.telephony.PhoneNumberUtils; import android.text.BidiFormatter; import android.text.TextDirectionHeuristics; import android.text.TextUtils; -import com.android.contacts.common.compat.PhoneNumberUtilsCompat; import com.android.incallui.call.DialerCall.State; import com.android.incallui.incall.protocol.PrimaryCallState; import com.android.incallui.incall.protocol.PrimaryInfo; @@ -137,7 +136,7 @@ public class BottomRow { } private static CharSequence spanDisplayNumber(String displayNumber) { - return PhoneNumberUtilsCompat.createTtsSpannable( + return PhoneNumberUtils.createTtsSpannable( BidiFormatter.getInstance().unicodeWrap(displayNumber, TextDirectionHeuristics.LTR)); } diff --git a/java/com/android/incallui/contactgrid/ContactGridManager.java b/java/com/android/incallui/contactgrid/ContactGridManager.java index 1322d58eacec5ff4a95d8bfa015ffc7b0cd4ae39..502cc52b85f064d389fe379ca725855116d0ab84 100644 --- a/java/com/android/incallui/contactgrid/ContactGridManager.java +++ b/java/com/android/incallui/contactgrid/ContactGridManager.java @@ -20,10 +20,8 @@ import android.content.Context; import android.graphics.drawable.Animatable; import android.graphics.drawable.Drawable; import android.os.SystemClock; -import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v4.view.ViewCompat; -import android.telecom.TelecomManager; import android.text.TextUtils; import android.view.View; import android.view.accessibility.AccessibilityEvent; @@ -78,6 +76,7 @@ public class ContactGridManager { private boolean hideAvatar; private boolean showAnonymousAvatar; private boolean middleRowVisible = true; + private boolean isTimerStarted; private PrimaryInfo primaryInfo = PrimaryInfo.createEmptyPrimaryInfo(); private PrimaryCallState primaryCallState = PrimaryCallState.createEmptyPrimaryCallState(); @@ -105,6 +104,7 @@ public class ContactGridManager { contactGridLayout = (View) contactNameTextView.getParent(); letterTile = new LetterTileDrawable(context.getResources()); + isTimerStarted = false; } public void show() { @@ -213,7 +213,7 @@ public class ContactGridManager { *
    */ private void updateTopRow() { - TopRow.Info info = TopRow.getInfo(context, primaryCallState); + TopRow.Info info = TopRow.getInfo(context, primaryCallState, primaryInfo); if (TextUtils.isEmpty(info.label)) { // Use INVISIBLE here to prevent the rows below this one from moving up and down. statusTextView.setVisibility(View.INVISIBLE); @@ -232,26 +232,6 @@ public class ContactGridManager { } } - /** - * Returns the appropriate LetterTileDrawable.TYPE_ based on a given call state. - * - *

    If no special state is detected, yields TYPE_DEFAULT. - */ - private static @LetterTileDrawable.ContactType int getContactTypeForPrimaryCallState( - @NonNull PrimaryCallState callState, @NonNull PrimaryInfo primaryInfo) { - if (callState.isVoiceMailNumber) { - return LetterTileDrawable.TYPE_VOICEMAIL; - } else if (callState.isBusinessNumber) { - return LetterTileDrawable.TYPE_BUSINESS; - } else if (primaryInfo.numberPresentation == TelecomManager.PRESENTATION_RESTRICTED) { - return LetterTileDrawable.TYPE_GENERIC_AVATAR; - } else if (callState.isConference) { - return LetterTileDrawable.TYPE_CONFERENCE; - } else { - return LetterTileDrawable.TYPE_DEFAULT; - } - } - /** * Updates row 1. For example: * @@ -295,8 +275,12 @@ public class ContactGridManager { primaryInfo.name, primaryInfo.contactInfoLookupKey, LetterTileDrawable.SHAPE_CIRCLE, - getContactTypeForPrimaryCallState(primaryCallState, primaryInfo)); - + LetterTileDrawable.getContactTypeFromPrimitives( + primaryCallState.isVoiceMailNumber, + primaryInfo.isSpam, + primaryCallState.isBusinessNumber, + primaryInfo.numberPresentation, + primaryCallState.isConference)); // By invalidating the avatarImageView we force a redraw of the letter tile. // This is required to properly display the updated letter tile iconography based on the // contact type, because the background drawable reference cached in the view, and the @@ -363,15 +347,19 @@ public class ContactGridManager { } if (info.isTimerVisible) { - bottomTextSwitcher.setDisplayedChild(1); - bottomTimerView.setBase( - primaryCallState.connectTimeMillis - - System.currentTimeMillis() - + SystemClock.elapsedRealtime()); - bottomTimerView.start(); + if (!isTimerStarted) { + bottomTextSwitcher.setDisplayedChild(1); + bottomTimerView.setBase( + primaryCallState.connectTimeMillis + - System.currentTimeMillis() + + SystemClock.elapsedRealtime()); + bottomTimerView.start(); + isTimerStarted = true; + } } else { bottomTextSwitcher.setDisplayedChild(0); bottomTimerView.stop(); + isTimerStarted = false; } } } diff --git a/java/com/android/incallui/contactgrid/TopRow.java b/java/com/android/incallui/contactgrid/TopRow.java index 8c3d6b00489dca25bff67b302dbec79098626dc5..ab003570f695e242d149a81b56ddbb13f064fe7b 100644 --- a/java/com/android/incallui/contactgrid/TopRow.java +++ b/java/com/android/incallui/contactgrid/TopRow.java @@ -19,10 +19,14 @@ package com.android.incallui.contactgrid; import android.content.Context; import android.graphics.drawable.Drawable; import android.support.annotation.Nullable; +import android.telephony.PhoneNumberUtils; +import android.text.BidiFormatter; +import android.text.TextDirectionHeuristics; import android.text.TextUtils; import com.android.dialer.common.Assert; import com.android.incallui.call.DialerCall.State; import com.android.incallui.incall.protocol.PrimaryCallState; +import com.android.incallui.incall.protocol.PrimaryInfo; import com.android.incallui.videotech.utils.SessionModificationState; import com.android.incallui.videotech.utils.VideoUtils; @@ -55,7 +59,7 @@ public class TopRow { private TopRow() {} - public static Info getInfo(Context context, PrimaryCallState state) { + public static Info getInfo(Context context, PrimaryCallState state, PrimaryInfo primaryInfo) { CharSequence label = null; Drawable icon = state.connectionIcon; boolean labelIsSingleLine = true; @@ -73,6 +77,11 @@ public class TopRow { labelIsSingleLine = false; } else { label = getLabelForIncoming(context, state); + // Show phone number if it's not displayed in name (center row) or location field (bottom + // row). + if (shouldShowNumber(primaryInfo)) { + label = TextUtils.concat(label, " ", spanDisplayNumber(primaryInfo.number)); + } } } else if (VideoUtils.hasSentVideoUpgradeRequest(state.sessionModificationState) || VideoUtils.hasReceivedVideoUpgradeRequest(state.sessionModificationState)) { @@ -85,6 +94,8 @@ public class TopRow { label = getLabelForDialing(context, state); } else if (state.state == State.ACTIVE && state.isRemotelyHeld) { label = context.getString(R.string.incall_remotely_held); + } else if (state.state == State.ACTIVE && shouldShowNumber(primaryInfo)) { + label = spanDisplayNumber(primaryInfo.number); } else { // Video calling... // [Wi-Fi icon] Starbucks Wi-Fi @@ -94,9 +105,27 @@ public class TopRow { return new Info(label, icon, labelIsSingleLine); } + private static CharSequence spanDisplayNumber(String displayNumber) { + return PhoneNumberUtils.createTtsSpannable( + BidiFormatter.getInstance().unicodeWrap(displayNumber, TextDirectionHeuristics.LTR)); + } + + private static boolean shouldShowNumber(PrimaryInfo primaryInfo) { + if (primaryInfo.nameIsNumber) { + return false; + } + if (primaryInfo.location == null) { + return false; + } + if (TextUtils.isEmpty(primaryInfo.number)) { + return false; + } + return true; + } + private static CharSequence getLabelForIncoming(Context context, PrimaryCallState state) { if (state.isVideoCall) { - return getLabelForIncomingVideo(context, state.isWifi); + return getLabelForIncomingVideo(context, state.sessionModificationState, state.isWifi); } else if (state.isWifi && !TextUtils.isEmpty(state.connectionLabel)) { return state.connectionLabel; } else if (isAccount(state)) { @@ -108,11 +137,20 @@ public class TopRow { } } - private static CharSequence getLabelForIncomingVideo(Context context, boolean isWifi) { - if (isWifi) { - return context.getString(R.string.contact_grid_incoming_wifi_video_call); + private static CharSequence getLabelForIncomingVideo( + Context context, @SessionModificationState int sessionModificationState, boolean isWifi) { + if (sessionModificationState == SessionModificationState.RECEIVED_UPGRADE_TO_VIDEO_REQUEST) { + if (isWifi) { + return context.getString(R.string.contact_grid_incoming_wifi_video_request); + } else { + return context.getString(R.string.contact_grid_incoming_video_request); + } } else { - return context.getString(R.string.contact_grid_incoming_video_call); + if (isWifi) { + return context.getString(R.string.contact_grid_incoming_wifi_video_call); + } else { + return context.getString(R.string.contact_grid_incoming_video_call); + } } } @@ -154,7 +192,7 @@ public class TopRow { case SessionModificationState.UPGRADE_TO_VIDEO_REQUEST_TIMED_OUT: return context.getString(R.string.incall_video_call_request_timed_out); case SessionModificationState.RECEIVED_UPGRADE_TO_VIDEO_REQUEST: - return getLabelForIncomingVideo(context, state.isWifi); + return getLabelForIncomingVideo(context, state.sessionModificationState, state.isWifi); case SessionModificationState.NO_REQUEST: default: Assert.fail(); diff --git a/java/com/android/incallui/contactgrid/res/values-af/strings.xml b/java/com/android/incallui/contactgrid/res/values-af/strings.xml index 95ec39bc3be76aab9964f4840988368c70a30d7d..75a8bf37f8dd911f617d64724eb3696c111c8860 100644 --- a/java/com/android/incallui/contactgrid/res/values-af/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-af/strings.xml @@ -1,4 +1,20 @@ + + "Bel via %s" @@ -14,6 +30,8 @@ "Hou aan" "Video-oproep vanaf" "Wi-Fi-video-oproep vanaf" + "Versoekvorm vir video-opgradering" + "Versoekvorm vir Wi-Fi-video-opgradering" "Oproep vanaf" "Werkoproep vanaf" "Inkomend via %s" diff --git a/java/com/android/incallui/contactgrid/res/values-am/strings.xml b/java/com/android/incallui/contactgrid/res/values-am/strings.xml index d8060c9c574cebcd04b26d42a3ce994b475ab026..3d11f73c21220caed03699ea5879eb6b303351db 100644 --- a/java/com/android/incallui/contactgrid/res/values-am/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-am/strings.xml @@ -1,4 +1,20 @@ + + "በ%s በኩል በመደወል ላይ" @@ -14,6 +30,8 @@ "ያዝና ቆይ" "ቪዲዮ ጥሪ ከ" "Wi-Fi ቪዲዮ ጥሪ ከ" + "የቪዲዮ ማሻሻል ጥያቄ ከ" + "የWi-Fi ቪዲዮ ማሻሻል ጥያቄ ከ" "ጥሪ ከ" "የሥራ ጥሪ ከ" "በ%s በኩል የገባ" diff --git a/java/com/android/incallui/contactgrid/res/values-ar/strings.xml b/java/com/android/incallui/contactgrid/res/values-ar/strings.xml index 30fd32cfaf843f17426814dae3ea009a12aadb35..cddd1eca94d79a6e2ebdf62749b7ae49fe168303 100644 --- a/java/com/android/incallui/contactgrid/res/values-ar/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-ar/strings.xml @@ -1,4 +1,20 @@ + + "الاتصال عبر %s" @@ -14,6 +30,8 @@ "معلقة" "مكالمة فيديو من" "‏مكالمة فيديو عبر Wi-Fi من" + "طلب ترقية الفيديو من" + "‏طلب ترقية فيديو Wi-Fi من" "اتصال من" "مكالمة عمل من" "واردة عبر %s" diff --git a/java/com/android/incallui/contactgrid/res/values-az/strings.xml b/java/com/android/incallui/contactgrid/res/values-az/strings.xml index 4fe79eeaac89dbd14647130704cfddc6795b24c4..8c1993dc04eb5d8efc3b48773b7ce5f50f6ba791 100644 --- a/java/com/android/incallui/contactgrid/res/values-az/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-az/strings.xml @@ -1,4 +1,20 @@ + + "%s vasitəsilə zəng edilir" @@ -14,6 +30,8 @@ "Gözləmədə" "Video zəng edən" "Wi-Fi video zəng edən" + "Video təkmilləşdirilməsi üçün təklif" + "Wi-Fi video təkmilləşdirilməsi üçün təklif" "Zəng edən" "İş zəngi edən" "%s vasitəsilə gələn" diff --git a/java/com/android/incallui/contactgrid/res/values-b+sr+Latn/strings.xml b/java/com/android/incallui/contactgrid/res/values-b+sr+Latn/strings.xml index f1a938ea9da14c99e88d4fa3c54c6011d25e73ed..caa61bdacec553b2b4d4ee2fc2c2a5c8c72c6499 100644 --- a/java/com/android/incallui/contactgrid/res/values-b+sr+Latn/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-b+sr+Latn/strings.xml @@ -1,4 +1,20 @@ + + "Pozivamo preko %s" @@ -14,6 +30,8 @@ "Na čekanju" "Video poziv od" "Wi-Fi video poziv od" + "Zahtev za prelazak na video poziv od" + "Zahtev za prelazak na video poziv preko Wi-Fi-ja od" "Poziv od" "Poslovni poziv od" "Dolazni poziv preko %s" diff --git a/java/com/android/incallui/contactgrid/res/values-be/strings.xml b/java/com/android/incallui/contactgrid/res/values-be/strings.xml index aec3a3106f2d1c03daea64c23f37c9a04257e002..51f7ea97a48f95bb516f75ddb87ef87b1b59ce58 100644 --- a/java/com/android/incallui/contactgrid/res/values-be/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-be/strings.xml @@ -1,4 +1,20 @@ + + "Званкі праз %s" @@ -14,6 +30,8 @@ "На ўтрыманні" "Відэавыклік ад" "Відэавыклік праз Wi-Fi ад" + "Запыт на абнаўленне да відэавыкліка ад" + "Запыт на абнаўленне да відэавыкліка па Wi-Fi ад" "Выклік ад" "Рабочы выклік ад" "Уваходны выклік праз %s" diff --git a/java/com/android/incallui/contactgrid/res/values-bg/strings.xml b/java/com/android/incallui/contactgrid/res/values-bg/strings.xml index f162e4cd0eb99f5c1b0d59e4fe54abb13ec0f953..4e313d408acb518660657ef2b9ae49de56e1d3f9 100644 --- a/java/com/android/incallui/contactgrid/res/values-bg/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-bg/strings.xml @@ -1,4 +1,20 @@ + + "Обаждане чрез %s" @@ -14,6 +30,8 @@ "Задържано" "Видеообаждане от" "Видеообаждане по Wi-Fi от" + "Заявка за преминаване към видеообаждане от" + "Заявка за преминаване към видеообаждане през Wi-Fi от" "Обаждане от" "Служебно обаждане от" "Входящо обаждане чрез %s" diff --git a/java/com/android/incallui/contactgrid/res/values-bn/strings.xml b/java/com/android/incallui/contactgrid/res/values-bn/strings.xml index 6d3a50c6103efe7388fab13852635aa34bcba27a..8fce2e46079a8c13b463aa73c72802547c5e6465 100644 --- a/java/com/android/incallui/contactgrid/res/values-bn/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-bn/strings.xml @@ -1,4 +1,20 @@ + + "%s এর মাধ্যমে কল করা হচ্ছে" @@ -14,6 +30,8 @@ "হোল্ডে রয়েছে" "এর থেকে আগত ভিডিও কল" "এর থেকে আগত Wi-Fi ভিডিও কল" + "এর থেকে ভিডিও আপগ্রেড করার অনুরোধ" + "এর থেকে ওয়াই-ফাই ভিডিও আপগ্রেড করার অনুরোধ" "এর থেকে আগত কল" "এর থেকে আগত কর্মক্ষেত্রের কল" "%s এর মাধ্যমে আগত কল" diff --git a/java/com/android/incallui/contactgrid/res/values-bs/strings.xml b/java/com/android/incallui/contactgrid/res/values-bs/strings.xml index 258799215ac554cb12687fab3c7db8270cf05d31..0d4dfb3d83428d9363ef541dd5813cbeff229740 100644 --- a/java/com/android/incallui/contactgrid/res/values-bs/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-bs/strings.xml @@ -1,4 +1,20 @@ + + "Pozivanje putem mreže %s" @@ -14,6 +30,8 @@ "Na čekanju" "Videopoziv od" "Wi-Fi videopoziv od" + "Zahtjev za nadogradnju na videozapis od pozivaoca" + "Zahtjev za nadogradnju na Wi-Fi videozapis od pozivaoca" "Poziv od" "Poslovni poziv od" "Dolazni poziv putem %s" diff --git a/java/com/android/incallui/contactgrid/res/values-ca/strings.xml b/java/com/android/incallui/contactgrid/res/values-ca/strings.xml index 07598a2174b125f7d60c8ee1b27fe7e33a182305..b4aa2ddc0081451836278703c819694968746780 100644 --- a/java/com/android/incallui/contactgrid/res/values-ca/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-ca/strings.xml @@ -1,4 +1,20 @@ + + "S\'està trucant amb %s" @@ -14,6 +30,8 @@ "En espera" "Videotrucada de" "Videotrucada per Wi-Fi de" + "Sol·licitud d\'actualització a videotrucada procedent de:" + "Sol·licitud d\'actualització a videotrucada per Wi-Fi procedent de:" "Trucada de" "Trucada de feina de" "Entrant via %s" diff --git a/java/com/android/incallui/contactgrid/res/values-cs/strings.xml b/java/com/android/incallui/contactgrid/res/values-cs/strings.xml index d27a0283b4c94e2dbc62cebbca59e3373d3d6911..b8698f0716e9d72ce98b2d64427cc7fe499f99ea 100644 --- a/java/com/android/incallui/contactgrid/res/values-cs/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-cs/strings.xml @@ -1,4 +1,20 @@ + + "Volání přes poskytovatele %s" @@ -14,6 +30,8 @@ "Podrženo" "Příchozí videohovor:" "Příchozí videohovor přes Wi-Fi:" + "Žádost o upgrade na videohovor od uživatele" + "Žádost o upgrade na videohovor přes Wi-Fi od uživatele" "Příchozí hovor:" "Příchozí pracovní hovor:" "Příchozí hovor přes poskytovatele %s" diff --git a/java/com/android/incallui/contactgrid/res/values-da/strings.xml b/java/com/android/incallui/contactgrid/res/values-da/strings.xml index 555a2ac5f3e7034c92d36208d4e197101af87248..71a651f189379f20e33d73b42513a195b390b885 100644 --- a/java/com/android/incallui/contactgrid/res/values-da/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-da/strings.xml @@ -1,4 +1,20 @@ + + "Ringer via %s" @@ -14,6 +30,8 @@ "I venteposition" "Videoopkald fra" "Wi-Fi-videoopkald fra" + "Anmodning om opgradering til et videoopkald fra" + "Anmodning om opgradering til et Wi-Fi-videoopkald fra" "Opkald fra" "Arbejdsopkald fra" "Indgående opkald via %s" diff --git a/java/com/android/incallui/contactgrid/res/values-de/strings.xml b/java/com/android/incallui/contactgrid/res/values-de/strings.xml index 3d3838ca2477d85dc9dfc8f6b5ab034049c6c61e..d69e0f6bb67d11cb6f22da7389dedf06471a48df 100644 --- a/java/com/android/incallui/contactgrid/res/values-de/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-de/strings.xml @@ -1,4 +1,20 @@ + + "Anruf über %s" @@ -14,6 +30,8 @@ "Anruf wird gehalten" "Videoanruf von" "WLAN-Videoanruf von" + "Anfrage für Upgrade auf Videoanruf von" + "Anfrage für Upgrade auf Videoanruf über WLAN von" "Anruf von" "Geschäftlicher Anruf von" "Eingehender Anruf über %s" diff --git a/java/com/android/incallui/contactgrid/res/values-el/strings.xml b/java/com/android/incallui/contactgrid/res/values-el/strings.xml index 337da7b0348b43fc2662d49427cc4e8decd04c3f..954e7b75d25ae2c316698acdf87b43754f3e3c13 100644 --- a/java/com/android/incallui/contactgrid/res/values-el/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-el/strings.xml @@ -1,4 +1,20 @@ + + "Κλήση μέσω %s" @@ -14,6 +30,8 @@ "Σε αναμονή" "Βιντεοκλήση από" "Βιντεοκλήση μέσω Wi-Fi από" + "Αίτημα αναβάθμισης βίντεο από" + "Αίτημα αναβάθμισης βίντεο Wi-Fi από" "Κλήση από" "Κλήση από το γραφείο από" "Εισερχόμενη κλήση μέσω %s" diff --git a/java/com/android/incallui/contactgrid/res/values-en-rAU/strings.xml b/java/com/android/incallui/contactgrid/res/values-en-rAU/strings.xml index 3748db2f40976a4e6699099836e6aa13712edaf6..a1402ff5c48d49e81505fa13970c58fde4ea551e 100644 --- a/java/com/android/incallui/contactgrid/res/values-en-rAU/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-en-rAU/strings.xml @@ -1,4 +1,20 @@ + + "Calling via %s" @@ -14,6 +30,8 @@ "On hold" "Video call from" "Wi-Fi video call from" + "Video upgrade request from" + "Wi-Fi video upgrade request from" "Call from" "Work call from" "Incoming via %s" diff --git a/java/com/android/incallui/contactgrid/res/values-en-rGB/strings.xml b/java/com/android/incallui/contactgrid/res/values-en-rGB/strings.xml index 3748db2f40976a4e6699099836e6aa13712edaf6..a1402ff5c48d49e81505fa13970c58fde4ea551e 100644 --- a/java/com/android/incallui/contactgrid/res/values-en-rGB/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-en-rGB/strings.xml @@ -1,4 +1,20 @@ + + "Calling via %s" @@ -14,6 +30,8 @@ "On hold" "Video call from" "Wi-Fi video call from" + "Video upgrade request from" + "Wi-Fi video upgrade request from" "Call from" "Work call from" "Incoming via %s" diff --git a/java/com/android/incallui/contactgrid/res/values-en-rIN/strings.xml b/java/com/android/incallui/contactgrid/res/values-en-rIN/strings.xml index 3748db2f40976a4e6699099836e6aa13712edaf6..a1402ff5c48d49e81505fa13970c58fde4ea551e 100644 --- a/java/com/android/incallui/contactgrid/res/values-en-rIN/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-en-rIN/strings.xml @@ -1,4 +1,20 @@ + + "Calling via %s" @@ -14,6 +30,8 @@ "On hold" "Video call from" "Wi-Fi video call from" + "Video upgrade request from" + "Wi-Fi video upgrade request from" "Call from" "Work call from" "Incoming via %s" diff --git a/java/com/android/incallui/contactgrid/res/values-es-rUS/strings.xml b/java/com/android/incallui/contactgrid/res/values-es-rUS/strings.xml index fa56849279713907415f1e44a5b37374ec7989a8..abb2b01d96923cb8352af527940da0e69b5e1946 100644 --- a/java/com/android/incallui/contactgrid/res/values-es-rUS/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-es-rUS/strings.xml @@ -1,4 +1,20 @@ + + "Llamada por medio de %s" @@ -14,6 +30,8 @@ "En espera" "Videollamada de" "Videollamada con Wi-Fi de" + "Actualización a video solicitada por" + "Actualización a video con Wi-Fi solicitada por" "Llamada de" "Llamada laboral de" "Entrante por medio de %s" diff --git a/java/com/android/incallui/contactgrid/res/values-es/strings.xml b/java/com/android/incallui/contactgrid/res/values-es/strings.xml index 1d57f9c6fddbee51d7a28f47b75c53e9852d6c92..ef7c45774b2bbd76e9c912ca794edf69ab04b203 100644 --- a/java/com/android/incallui/contactgrid/res/values-es/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-es/strings.xml @@ -1,4 +1,20 @@ + + "Llamada a través de %s" @@ -14,6 +30,8 @@ "En espera" "Videollamada de" "Videollamada por Wi-Fi de" + "Solicitud de actualización de videollamada de" + "Solicitud de actualización de videollamada por Wi-Fi de" "Llamada de" "Llamada de trabajo de" "Recibida a través de %s" diff --git a/java/com/android/incallui/contactgrid/res/values-et/strings.xml b/java/com/android/incallui/contactgrid/res/values-et/strings.xml index 2d81062f4b390b0923bf4d2517941f210243adeb..b91f073d0be218cf6184879abcb317845d25daa4 100644 --- a/java/com/android/incallui/contactgrid/res/values-et/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-et/strings.xml @@ -1,4 +1,20 @@ + + "Kõne edastab %s" @@ -14,6 +30,8 @@ "Ootel" "Videokõne kontaktilt" "WiFi-videokõne kontaktilt" + "Video täiendamise taotlus:" + "WiFi kaudu video täiendamise taotlus:" "Kõne kontaktilt" "Töökõne kontaktilt" "Sissetulev kõne teenusepakkuja %s kaudu" diff --git a/java/com/android/incallui/contactgrid/res/values-eu/strings.xml b/java/com/android/incallui/contactgrid/res/values-eu/strings.xml index f08347bf061315ba2cd6e0ab1d7ee120c4b5eaa3..ba7995ad9a3e23d8352dc427b2c226d06ef11ed6 100644 --- a/java/com/android/incallui/contactgrid/res/values-eu/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-eu/strings.xml @@ -1,4 +1,20 @@ + + "%s bidez deitzen" @@ -14,6 +30,8 @@ "Zain" "Bideo-deia:" "Wi-Fi bidezko bideo-deia:" + "Bideo-dei bat egiteko eskaera bidali dizu erabiltzaile honek:" + "Wi-Fi bidezko bideo-dei bat egiteko eskaera bidali dizu erabiltzaile honek:" "Deia:" "Laneko deia:" "%s bidez jasotzen" diff --git a/java/com/android/incallui/contactgrid/res/values-fa/strings.xml b/java/com/android/incallui/contactgrid/res/values-fa/strings.xml index 0dfc0f41fb2e22b7e24b34e2debcabc53c815cc3..40873ca158494ee2a77deb4dd3639517cd1be58a 100644 --- a/java/com/android/incallui/contactgrid/res/values-fa/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-fa/strings.xml @@ -1,4 +1,20 @@ + + "تماس از طریق %s" @@ -14,6 +30,8 @@ "درانتظار" "تماس ویدئویی از" "‏تماس ویدئویی Wi-Fi از" + "درخواست ارتقای تماس ویدیویی از" + "‏در خواست ارتقای تماس ویدیویی Wi-Fi از" "تماس از" "تماس کاری از" "تماس‌های ورودی ازطریق %s" diff --git a/java/com/android/incallui/contactgrid/res/values-fi/strings.xml b/java/com/android/incallui/contactgrid/res/values-fi/strings.xml index 00503bf2f324d92dcf6160aa285bb8c89deb4f00..241fef5a182de698fe4dc9eb2ab82b43b93c3a55 100644 --- a/java/com/android/incallui/contactgrid/res/values-fi/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-fi/strings.xml @@ -1,4 +1,20 @@ + + "Käytetään operaattoria %s" @@ -14,6 +30,8 @@ "Pidossa" "Videopuhelu henkilöltä" "Wi-Fi-videopuhelu henkilöltä" + "Videoon siirtymispyyntö, jonka lähettäjä on" + "Wi-Fi-videopuheluun siirtymispyyntö, jonka lähettäjän on" "Puhelu henkilöltä" "Työpuhelu henkilöltä" "Saapuva puhelu (%s)" diff --git a/java/com/android/incallui/contactgrid/res/values-fr-rCA/strings.xml b/java/com/android/incallui/contactgrid/res/values-fr-rCA/strings.xml index ee0196d9800b31f10102817d3d80f234addab17d..3ffc1e9183de48482feca9f9a3ddf886f5f6f585 100644 --- a/java/com/android/incallui/contactgrid/res/values-fr-rCA/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-fr-rCA/strings.xml @@ -1,4 +1,20 @@ + + "Appel par %s en cours…" @@ -14,6 +30,8 @@ "En attente" "Appel vidéo de" "Appel vidéo Wi-Fi de" + "Demande de mise à niveau vidéo de" + "Demande de mise à niveau vidéo Wi-Fi de" "Appel de" "Appel professionnel de" "Appel entrant par %s" diff --git a/java/com/android/incallui/contactgrid/res/values-fr/strings.xml b/java/com/android/incallui/contactgrid/res/values-fr/strings.xml index 9849ad6230fa53264ac7a567c5d14de6275220a0..0db6ae0894b517fc6db0ef9ac56f3048864e363d 100644 --- a/java/com/android/incallui/contactgrid/res/values-fr/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-fr/strings.xml @@ -1,4 +1,20 @@ + + "Appel via %s" @@ -14,6 +30,8 @@ "En attente" "Appel vidéo de" "Appel vidéo Wi-Fi de" + "Demande de passage en mode vidéo par" + "Demande de passage en mode vidéo Wi-Fi par" "Appel de" "Appel professionnel de" "Appel entrant via %s" diff --git a/java/com/android/incallui/contactgrid/res/values-gl/strings.xml b/java/com/android/incallui/contactgrid/res/values-gl/strings.xml index c85f336b834cdc8c2f3c48529b3ad179eca2e3be..29700145496b36c6d39f04bc415224c21659e020 100644 --- a/java/com/android/incallui/contactgrid/res/values-gl/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-gl/strings.xml @@ -1,4 +1,20 @@ + + "Chamando a través de %s" @@ -14,6 +30,8 @@ "En espera" "Videochamada de" "Videochamada por wifi de" + "Solicitude de actualización a videochamada de" + "Solicitude de actualización a videochamada por wifi de" "Chamada de" "Chamada de traballo de" "Chamada entrante a través de %s" diff --git a/java/com/android/incallui/contactgrid/res/values-gu/strings.xml b/java/com/android/incallui/contactgrid/res/values-gu/strings.xml index 5179cc0cbe84ce1e45280a6301284c7d5682af90..220bebe39689233451fedfa0a4c64b23bbfdfcb5 100644 --- a/java/com/android/incallui/contactgrid/res/values-gu/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-gu/strings.xml @@ -1,4 +1,20 @@ + + "%s મારફતે કૉલ કરી રહ્યાં છે" @@ -14,6 +30,8 @@ "હોલ્ડ પર" "આમના તરફથી વિડિઓ કૉલ" "આમના તરફથી Wi-Fi વિડિઓ કૉલ" + "આમના તરફથી વિડિઓ અપગ્રેડની વિનંતી" + "આમના તરફથી Wi-Fi વિડિઓ અપગ્રેડની વિનંતી" "આમના તરફથી કૉલ" "આમના તરફથી કાર્ય કૉલ" "%s મારફતે ઇનકમિંગ" diff --git a/java/com/android/incallui/contactgrid/res/values-hi/strings.xml b/java/com/android/incallui/contactgrid/res/values-hi/strings.xml index dec7b629d9ee90d429d36d9a8231968ca530ac0e..da128b644e40726ca3527d9e204942e3cceeed2b 100644 --- a/java/com/android/incallui/contactgrid/res/values-hi/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-hi/strings.xml @@ -1,4 +1,20 @@ + + "%s के माध्यम से कॉल किया जा रहा है" @@ -14,6 +30,8 @@ "होल्ड पर" "इससे वीडियो कॉल" "इससे वाई-फ़ाई वीडियो कॉल" + "इसकी ओर से वीडियो में अपग्रेड करने का अनुरोध" + "इसकी ओर से वाई-फ़ाई वीडियो में अपग्रेड करने का अनुरोध" "इससे कॉल" "इससे कार्य संबंधी कॉल" "%s की ओर से इनकमिंग" diff --git a/java/com/android/incallui/contactgrid/res/values-hr/strings.xml b/java/com/android/incallui/contactgrid/res/values-hr/strings.xml index d7023ac24a5f771914c02ac9dc8c362da82ff695..24429a248644d41d734710a7cb77a3a1781d1bef 100644 --- a/java/com/android/incallui/contactgrid/res/values-hr/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-hr/strings.xml @@ -1,4 +1,20 @@ + + "Pozivanje putem operatera %s" @@ -14,6 +30,8 @@ "Na čekanju" "Videopoziv s broja" "Videopoziv putem Wi-Fi veze s broja" + "Video upgrade request from" + "Wi-Fi video upgrade request from" "Poziv s broja" "Poslovni poziv s broja" "Dolazni pozivi putem davatelja %s" diff --git a/java/com/android/incallui/contactgrid/res/values-hu/strings.xml b/java/com/android/incallui/contactgrid/res/values-hu/strings.xml index f7da92322c4e41f038a5234aa8d729629770afd8..600b69f6d23b3ebf891b084e2e5dc9e23d54c686 100644 --- a/java/com/android/incallui/contactgrid/res/values-hu/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-hu/strings.xml @@ -1,4 +1,20 @@ + + "Hívás a(z) %s szolgáltatón keresztül" @@ -14,6 +30,8 @@ "Várakoztatva" "Videohívás a következőtől:" "Wi-Fi-videohívás a következőtől:" + "Videófrissítési kérelem a következőtől" + "Wi-Fi-videófrissítési kérelem a következőtől" "Hívás a következőtől:" "Munkahelyi hívás a következőről:" "Bejövő hívás a következőn keresztül: %s" diff --git a/java/com/android/incallui/contactgrid/res/values-hy/strings.xml b/java/com/android/incallui/contactgrid/res/values-hy/strings.xml index 6384fa9243754b3f5075b7582b21e30cc1110f52..88a49eb487967f8e11a833e297722b2739e13782 100644 --- a/java/com/android/incallui/contactgrid/res/values-hy/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-hy/strings.xml @@ -1,4 +1,20 @@ + + "Զանգում է %s-ի միջոցով" @@ -14,6 +30,8 @@ "Սպասում" "Տեսազանգ հետևյալ բաժանորդից՝" "Wi-Fi տեսազանգ հետևյալ բաժանորդից՝" + "Տեսազանգին անցնելու խնդրանք հետևյալ օգտատիրոջից՝" + "Wi-Fi-ի միջոցով տեսազանգին անցնելու խնդրանք հետևյալ օգտատիրոջից՝" "Զանգ հետևյալ բաժանորդից՝" "Գործնական զանգ հետևյալ բաժանորդից՝" "Մուտքային զանգ %s ցանցից" diff --git a/java/com/android/incallui/contactgrid/res/values-in/strings.xml b/java/com/android/incallui/contactgrid/res/values-in/strings.xml index 75568387b72e4f3d69167b5e3aceec793d34aaf5..f6735832a907581dc55edb33d013b4eb0260b125 100644 --- a/java/com/android/incallui/contactgrid/res/values-in/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-in/strings.xml @@ -1,4 +1,20 @@ + + "Menelepon melalui %s" @@ -14,6 +30,8 @@ "Ditangguhkan" "Video call dari" "Video call Wi-Fi dari" + "Permintaan upgrade video dari" + "Permintaan upgrade video Wi-Fi dari" "Telepon dari" "Panggilan telepon kerja dari" "Masuk melalui %s" diff --git a/java/com/android/incallui/contactgrid/res/values-is/strings.xml b/java/com/android/incallui/contactgrid/res/values-is/strings.xml index 86d577c6480dbcce78410359b8fd4f99462fa5fd..9e830312d7f616712e790a64478ba68eb9860b8b 100644 --- a/java/com/android/incallui/contactgrid/res/values-is/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-is/strings.xml @@ -1,4 +1,20 @@ + + "Hringt í gegnum %s" @@ -14,6 +30,8 @@ "Í bið" "Myndsímtal berst frá" "Wi-Fi myndsímtal berst frá" + "Beiðni um að uppfæra í myndsímtal frá" + "Beiðni um að uppfæra í Wi-Fi myndsímtal frá" "Símtal berst frá" "Vinnusímtal berst frá" "Berst í gegnum %s" diff --git a/java/com/android/incallui/contactgrid/res/values-it/strings.xml b/java/com/android/incallui/contactgrid/res/values-it/strings.xml index 9576a6d958761109d651bfbbe3560e5084fcbb24..76958cf72aa3893822b9c8070ba3b8c49f2c1ba8 100644 --- a/java/com/android/incallui/contactgrid/res/values-it/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-it/strings.xml @@ -1,4 +1,20 @@ + + "Chiamate tramite %s" @@ -14,6 +30,8 @@ "In attesa" "Videochiamata da" "Videochiamata Wi-Fi da" + "Upgrade della videochiamata richiesto da" + "Upgrade della videochiamata Wi-Fi richiesto da" "Chiamata da" "Chiamata di lavoro da" "In arrivo tramite %s" diff --git a/java/com/android/incallui/contactgrid/res/values-iw/strings.xml b/java/com/android/incallui/contactgrid/res/values-iw/strings.xml index 62771d18f1dd31e67bcaa016f8841475c2e6619f..b06c3212cd2eaa4e1a2584bc83f1b7fec8086345 100644 --- a/java/com/android/incallui/contactgrid/res/values-iw/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-iw/strings.xml @@ -1,4 +1,20 @@ + + "שיחה באמצעות %s" @@ -14,6 +30,8 @@ "בהמתנה" "שיחת וידאו מאת" "‏שיחת וידאו ב-Wi-Fi מאת" + "בקשה לשדרוג לשיחת וידאו מאת" + "‏בקשת לשדרוג לשיחת וידאו ברשת Wi-Fi מאת" "שיחה מאת" "שיחת עבודה מאת" "שיחה נכנסת באמצעות %s" diff --git a/java/com/android/incallui/contactgrid/res/values-ja/strings.xml b/java/com/android/incallui/contactgrid/res/values-ja/strings.xml index a5d958c60289ce9fd3f05df8606230fdc6237a89..a2fce09cfabc76ea20cb82587b7874446069237e 100644 --- a/java/com/android/incallui/contactgrid/res/values-ja/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-ja/strings.xml @@ -1,4 +1,20 @@ + + "%s で発信中" @@ -14,6 +30,8 @@ "保留中" "ビデオハングアウトの着信" "Wi-Fi ビデオハングアウトの着信" + "ビデオハングアウトへの変更リクエスト" + "Wi-Fi ビデオハングアウトへの変更リクエスト" "着信" "仕事の通話の着信" "%s から着信" diff --git a/java/com/android/incallui/contactgrid/res/values-ka/strings.xml b/java/com/android/incallui/contactgrid/res/values-ka/strings.xml index 7848f595eba566ec30d1e530fdf4f9300310d749..cb0094d3700d00eb0525caa18ff8c8ae1f288a8c 100644 --- a/java/com/android/incallui/contactgrid/res/values-ka/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-ka/strings.xml @@ -1,4 +1,20 @@ + + "მიმდინარეობს დარეკვა %s-ის მეშვეობით" @@ -14,6 +30,8 @@ "მოცდის რეჟიმში" "ვიდეოზარი აბონენტისგან" "Wi-Fi ვიდეოზარი აბონენტისგან" + "ვიდეოზარზე გადასვლის მოთხოვნა კონტაქტისგან:" + "Wi-Fi ვიდეოზარზე გადასვლის მოთხოვნა კონტაქტისგან:" "ზარი აბონენტისგან" "სამსახურებრივი ზარი აბონენტისგან" "შემომავალი, %s-იდან" diff --git a/java/com/android/incallui/contactgrid/res/values-kk/strings.xml b/java/com/android/incallui/contactgrid/res/values-kk/strings.xml index aaf260b9a183b133a4783ad93c1dee950aba9288..3fc68c2dbdb834b381c9888ac28e18bd56dd1e84 100644 --- a/java/com/android/incallui/contactgrid/res/values-kk/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-kk/strings.xml @@ -1,4 +1,20 @@ + + "%s арқылы қоңырау шалу" @@ -14,6 +30,8 @@ "Күтуде" "Бейне қоңырау шалушы:" "Wi-Fi бейне қоңырау шалушы:" + "Бейне қоңырауға ауысу өтініші:" + "Wi-Fi арқылы бейне қоңырауға ауысу өтініші:" "Қоңырау шалушы:" "Жұмыстан қоңырау шалушы:" "%s арқылы кіріс" diff --git a/java/com/android/incallui/contactgrid/res/values-km/strings.xml b/java/com/android/incallui/contactgrid/res/values-km/strings.xml index b2bfc962891a1ba4eceb30acaa2f7aeacb2be7d7..7ee21ba705137d4fd3d83b328b842e48b96da2fd 100644 --- a/java/com/android/incallui/contactgrid/res/values-km/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-km/strings.xml @@ -1,4 +1,20 @@ + + "កំពុង​ហៅតាម %s" @@ -14,6 +30,8 @@ "កំពុង​រង់ចាំ" "ការ​ហៅ​ជា​វីដេអូ​ពី" "ការ​ហៅ​ជា​វីដេអូ​តាម Wi-Fi ពី" + "ស្នើ​ដំឡើង​កំណែ​វីដេអូ​ពី" + "ស្នើ​ដំឡើង​កំណែ​វីដេអូតាម Wi-Fi ពី" "ការ​ហៅ​ពី" "ការ​ហៅ​ការងារ​ពី" "ការ​ហៅ​ចូល​តាម %s" diff --git a/java/com/android/incallui/contactgrid/res/values-kn/strings.xml b/java/com/android/incallui/contactgrid/res/values-kn/strings.xml index 0ee73baccabe5768336f987a5dd20df519392633..e90bd6b540bbad9a17b629da3af95c7af377f51a 100644 --- a/java/com/android/incallui/contactgrid/res/values-kn/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-kn/strings.xml @@ -1,4 +1,20 @@ + + "%s ಮೂಲಕ ಕರೆ ಮಾಡಲಾಗುತ್ತಿದೆ" @@ -14,6 +30,8 @@ "ಹೋಲ್ಡ್‌ ಮಾಡಲಾಗಿದೆ" "ಇವರಿಂದ ವೀಡಿಯೊ ಕರೆ" "ಇವರಿಂದ ವೈ-ಫೈ ವೀಡಿಯೊ ಕರೆ" + "ಇದರಿಂದ ವೀಡಿಯೊ ಅಪ್‌ಗ್ರೇಡ್ ವಿನಂತಿ" + "ಇದರಿಂದ ವೈಫೈ ವೀಡಿಯೊ ಅಪ್‌ಗ್ರೇಡ್ ವಿನಂತಿ" "ಇವರಿಂದ ಕರೆ" "ಇವರಿಂದ ಕೆಲಸದ ಕರೆ" "%s ಮೂಲಕ ಒಳಬರುತ್ತಿರುವ ಕರೆ" diff --git a/java/com/android/incallui/contactgrid/res/values-ko/strings.xml b/java/com/android/incallui/contactgrid/res/values-ko/strings.xml index a5a34e3d7b2c988360f599675f3c9907d239386b..85dd613bb47a082ef1a6a86e1d2757388805a15e 100644 --- a/java/com/android/incallui/contactgrid/res/values-ko/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-ko/strings.xml @@ -1,4 +1,20 @@ + + "%s을(를) 통해 거는 전화" @@ -14,6 +30,8 @@ "대기 중" "화상 통화 발신:" "Wi-Fi 화상 통화 발신:" + "화상 통화로의 업그레이드를 요청한 사용자:" + "Wi-Fi 화상 통화로의 업그레이드를 요청한 사용자:" "통화 발신:" "업무 통화 발신:" "%s을(를) 통해 걸려온 전화" diff --git a/java/com/android/incallui/contactgrid/res/values-ky/strings.xml b/java/com/android/incallui/contactgrid/res/values-ky/strings.xml index a020e70d1d1b9f282763ba1f684ce738e954f433..6028022e1b0c1ac8184109f80da20fd46c099416 100644 --- a/java/com/android/incallui/contactgrid/res/values-ky/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-ky/strings.xml @@ -1,4 +1,20 @@ + + "%s аркылуу чалуу" @@ -14,6 +30,8 @@ "Күтүү режиминде" "Видео чалуу" "Wi-Fi аркылуу видео чалуу:" + "Видеону кийинки версияга көтөрүү сурамы:" + "Wi-Fi аркылуу видеомаектешүү сурамы:" "Чалып жатат:" "Иш боюнча чалып жатат:" "%s аркылуу чалып жатат" diff --git a/java/com/android/incallui/contactgrid/res/values-lo/strings.xml b/java/com/android/incallui/contactgrid/res/values-lo/strings.xml index 96c1dcf11ef1fdc40be7d0ee382f7af21f30ac38..6ad1178186f6835cae7460cdc72b7b1fb36e8c70 100644 --- a/java/com/android/incallui/contactgrid/res/values-lo/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-lo/strings.xml @@ -1,4 +1,20 @@ + + "ກຳລັງໂທຜ່ານ %s" @@ -14,6 +30,8 @@ "ຖືສາຍລໍຖ້າ" "ການໂທວິດີໂອຈາກ" "Wi-Fi video call from" + "ຄຳຮ້ອງອັບເກຣດວິດີໂອຈາກ" + "ຄຳຮ້ອງອັບເກຣດວິດີໂອ Wi-Fi ຈາກ" "ການໂທຈາກ" "Work call from" "ສາຍໂທເຂົ້າ​ຈາກ %s" diff --git a/java/com/android/incallui/contactgrid/res/values-lt/strings.xml b/java/com/android/incallui/contactgrid/res/values-lt/strings.xml index e8e42fc9bfcb776d52ef4ee5a208c7c4f225e19c..3cca55c46b56c63240041054baceb1b2fa9ecee5 100644 --- a/java/com/android/incallui/contactgrid/res/values-lt/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-lt/strings.xml @@ -1,4 +1,20 @@ + + "Skambinama naudojantis „%s“ paslaugomis" @@ -14,6 +30,8 @@ "Sulaikytas" "Vaizdo skambutis nuo" "„Wi-Fi“ vaizdo skambutis nuo" + "Vaizdo skambučio naujovinimo užklausa nuo" + "„Wi-Fi“ vaizdo skambučio naujovinimo užklausa nuo" "Skambutis nuo" "Darbo skambutis nuo" "Gaunama per „%s“" diff --git a/java/com/android/incallui/contactgrid/res/values-lv/strings.xml b/java/com/android/incallui/contactgrid/res/values-lv/strings.xml index 1b3823f1e96049e7c92bde1b9f7a3bd95d616a59..87e5c9049164ede1e812d68204ac887aabe7df17 100644 --- a/java/com/android/incallui/contactgrid/res/values-lv/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-lv/strings.xml @@ -1,4 +1,20 @@ + + "Zvanu nodrošina %s" @@ -14,6 +30,8 @@ "Aizturēts" "Videozvans no:" "Wi-Fi videozvans no:" + "Videozvana jaunināšanas pieprasījums no:" + "Wi-Fi videozvana jaunināšanas pieprasījums no:" "Zvans no:" "Darba zvans no:" "Ienākošie zvani, ko nodrošina %s" diff --git a/java/com/android/incallui/contactgrid/res/values-mk/strings.xml b/java/com/android/incallui/contactgrid/res/values-mk/strings.xml index 104468359a058c75e0b2b59ae433bc40ab5bb354..fcab8f45270bafc7b5085721fd0ea0d6453d0ece 100644 --- a/java/com/android/incallui/contactgrid/res/values-mk/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-mk/strings.xml @@ -1,4 +1,20 @@ + + "Повикување преку %s" @@ -14,6 +30,8 @@ "На чекање" "Видеоповик од" "Видеоповик преку Wi-Fi од" + "Барање за надградба на видеоповик од" + "Барање за надградба на видеоповик преку Wi-Fi од" "Повик од" "Работен повик од" "Дојдовни повици преку %s" diff --git a/java/com/android/incallui/contactgrid/res/values-ml/strings.xml b/java/com/android/incallui/contactgrid/res/values-ml/strings.xml index 519e9f47872c36c453748712aa1710f22640c52e..1dfb46a931786cfe7370a7ba4ba786f86026b326 100644 --- a/java/com/android/incallui/contactgrid/res/values-ml/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-ml/strings.xml @@ -1,4 +1,20 @@ + + "%s മുഖേന വിളിക്കുന്നു" @@ -14,6 +30,8 @@ "ഹോള്‍ഡിലാണ്" "ഈ വ്യക്തിയിൽ നിന്നുള്ള വീഡിയോ കോൾ" "ഈ വ്യക്തിയിൽ നിന്നുള്ള Wi-Fi വീഡിയോ കോൾ" + "ഇനിപ്പറയുന്നതിൽ നിന്നുള്ള വീഡിയോ അപ്‌ഗ്രേഡ് അഭ്യർത്ഥന" + "ഇനിപ്പറയുന്നതിൽ നിന്നുള്ള Wi-Fi വീഡിയോ അപ്‌ഗ്രേഡ് അഭ്യർത്ഥന" "ഈ വ്യക്തിയിൽ നിന്നുള്ള കോൾ" "ഈ വ്യക്തിയിൽ നിന്നുള്ള ഔദ്യോഗിക കോൾ" "%s മുഖേനയുള്ള ഇൻകമിംഗ്" diff --git a/java/com/android/incallui/contactgrid/res/values-mn/strings.xml b/java/com/android/incallui/contactgrid/res/values-mn/strings.xml index c87e071798e6c6b05040b78cc22bcd1829acd38b..c93bd468a5e6662534d965fed6b94a7f438d2a67 100644 --- a/java/com/android/incallui/contactgrid/res/values-mn/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-mn/strings.xml @@ -1,4 +1,20 @@ + + "%s-р залгаж байна" @@ -14,6 +30,8 @@ "Хүлээлгэнд байгаа" "Видео дуудлага" "Wi-Fi видео дуудлага" + "Видеог сайжруулах хүсэлт" + "Wi-Fi видеог сайжруулах хүсэлт" "Дуудлага" "Ажлын дуудлага" "%s-р ирж байна" diff --git a/java/com/android/incallui/contactgrid/res/values-mr/strings.xml b/java/com/android/incallui/contactgrid/res/values-mr/strings.xml index 6a0181774c369b8152f58567a2dc457ffd746b1f..81d76dd7045e4504db6addd06de1c1e36c42a155 100644 --- a/java/com/android/incallui/contactgrid/res/values-mr/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-mr/strings.xml @@ -1,4 +1,20 @@ + + "%s द्वारे कॉल करीत आहे" @@ -14,6 +30,8 @@ "होल्ड वर" "यावरून व्हिडिओ कॉल" "Wi-Fi व्हिडिओ कॉल" + "याकडून व्हिडिओ श्रेणीसुधारणेची विनंती" + "याकडून Wi-Fi व्हिडिओ श्रेणीसुधारणेची विनंती" "यावरील कॉल" "कडून कार्य कॉल" "%s द्वारे येणारे" diff --git a/java/com/android/incallui/contactgrid/res/values-ms/strings.xml b/java/com/android/incallui/contactgrid/res/values-ms/strings.xml index 17ca75369123773a5f5abc37e80cca0ed354fa53..815df7947b3ee7b335051a7d5c629daec1c85415 100644 --- a/java/com/android/incallui/contactgrid/res/values-ms/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-ms/strings.xml @@ -1,4 +1,20 @@ + + "Memanggil melalui %s" @@ -14,6 +30,8 @@ "Panggilan ditahan" "Panggilan video daripada" "Panggilan video Wi-Fi daripada" + "Permintaan peningkatan video daripada" + "Permintaan peningkatan video Wi-Fi daripada" "Panggilan daripada" "Panggilan kerja daripada" "Panggilan masuk melalui %s" diff --git a/java/com/android/incallui/contactgrid/res/values-my/strings.xml b/java/com/android/incallui/contactgrid/res/values-my/strings.xml index 14770cfaf8577a0bcbb41d01825ee1d5e79942a9..3c8a88e417e47b51c6218c0f2e08eebb37c7015f 100644 --- a/java/com/android/incallui/contactgrid/res/values-my/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-my/strings.xml @@ -1,4 +1,20 @@ + + "%s မှတစ်ဆင့် ခေါ်ဆိုနေသည်" @@ -14,6 +30,8 @@ "ဖုန်းကိုင်ထားသည်" "အောက်ပါထံမှ ဗီဒီယိုခေါ်ဆိုမှု" "အောက်ပါထံမှ Wi-Fi ဗီဒီယိုခေါ်ဆိုမှု" + "အောက်ပါထံမှ ဗီဒီယိုအဆင့်မြှင့်ခြင်းတောင်းဆိုချက်" + "အောက်ပါထံမှ Wi-Fi ဗီဒီယိုအဆင့်မြှင့်ခြင်းတောင်းဆိုချက်" "အောက်ပါထံမှ ခေါ်ဆိုမှု" "အောက်ပါထံမှ အလုပ်ခေါ်ဆိုမှု" "%s မှတစ်ဆင့် အဝင်ခေါ်ဆိုမှု" diff --git a/java/com/android/incallui/contactgrid/res/values-nb/strings.xml b/java/com/android/incallui/contactgrid/res/values-nb/strings.xml index fbf98954c899d7beab3b436041a54f7d0b090da0..9ad8d0d6aa7fa170edae5e1e3e428b3db3743eec 100644 --- a/java/com/android/incallui/contactgrid/res/values-nb/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-nb/strings.xml @@ -1,4 +1,20 @@ + + "Ringer via %s" @@ -14,6 +30,8 @@ "På vent" "Videoanrop fra" "Wi-Fi-videoanrop fra" + "Forespørsel om videooppdatering fra" + "Forespørsel om Wi-Fi-videooppdatering fra" "Anrop fra" "Jobbrelatert anrop fra" "Innkommende via %s" diff --git a/java/com/android/incallui/contactgrid/res/values-ne/strings.xml b/java/com/android/incallui/contactgrid/res/values-ne/strings.xml index d618af43f8fb59d077b060d6e049314942ec17a2..e6e65c5fbd5157625a7fc90139fc9978caa67869 100644 --- a/java/com/android/incallui/contactgrid/res/values-ne/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-ne/strings.xml @@ -1,4 +1,20 @@ + + "%s मार्फत कल गर्दै" @@ -14,6 +30,8 @@ "होल्डमा छ" "निम्नबाट भिडियो कल आएको छ" "निम्नबाट Wi-Fi मार्फत गरिएको भिडियो कल आएको छ" + "निम्नबाट आएको भिडियो अपग्रेडसम्बन्धी अनुरोध" + "निम्नबाट आएको Wi-Fi मार्फत भिडियो अपग्रेडसम्बन्धी अनुरोध" "निम्नबाट कल आएको छ" "निम्नबाट कार्य सम्बन्धी कल आएको छ" "%s मार्फत गरिएको आगमन कल" diff --git a/java/com/android/incallui/contactgrid/res/values-nl/strings.xml b/java/com/android/incallui/contactgrid/res/values-nl/strings.xml index 10dcd13f045c5d227f2d82a64f134cf977451302..828a7a22846474a45e694aed045beabc9de4ec50 100644 --- a/java/com/android/incallui/contactgrid/res/values-nl/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-nl/strings.xml @@ -1,4 +1,20 @@ + + "Bellen via %s" @@ -14,6 +30,8 @@ "In de wacht" "Videogesprek van" "Wifi-videogesprek van" + "Upgradeverzoek voor videogesprek van" + "Upgradeverzoek voor wifi-videogesprek van" "Oproep van" "Zakelijke oproep van" "Inkomend via %s" diff --git a/java/com/android/incallui/contactgrid/res/values-no/strings.xml b/java/com/android/incallui/contactgrid/res/values-no/strings.xml index fbf98954c899d7beab3b436041a54f7d0b090da0..9ad8d0d6aa7fa170edae5e1e3e428b3db3743eec 100644 --- a/java/com/android/incallui/contactgrid/res/values-no/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-no/strings.xml @@ -1,4 +1,20 @@ + + "Ringer via %s" @@ -14,6 +30,8 @@ "På vent" "Videoanrop fra" "Wi-Fi-videoanrop fra" + "Forespørsel om videooppdatering fra" + "Forespørsel om Wi-Fi-videooppdatering fra" "Anrop fra" "Jobbrelatert anrop fra" "Innkommende via %s" diff --git a/java/com/android/incallui/contactgrid/res/values-pa/strings.xml b/java/com/android/incallui/contactgrid/res/values-pa/strings.xml index fb261d649ad5a7931edbcddef347ab3b847af577..1d4801c431e2d5ab054860a13123c6aeb02b9be8 100644 --- a/java/com/android/incallui/contactgrid/res/values-pa/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-pa/strings.xml @@ -1,4 +1,20 @@ + + "%s ਰਾਹੀਂ ਕਾਲ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ" @@ -14,6 +30,8 @@ "ਰੋਕ ਕੇ ਰੱਖੀ ਗਈ" "ਇਸ ਤੋਂ ਵੀਡੀਓ ਕਾਲ" "ਇਸ ਤੋਂ Wi-Fi ਵੀਡੀਓ ਕਾਲ" + "ਇਸ ਤੋਂ ਵੀਡੀਓ ਅੱਪਗ੍ਰੇਡ ਬੇਨਤੀ" + "ਇਸ ਤੋਂ Wi-Fi ਵੀਡੀਓ ਅੱਪਗ੍ਰੇਡ ਬੇਨਤੀ" "ਇਸ ਤੋਂ ਕਾਲ" "ਇਸ ਤੋਂ ਕੰਮ ਸਬੰਧੀ ਕਾਲ" "%s ਰਾਹੀਂ ਇਨਕਮਿੰਗ" diff --git a/java/com/android/incallui/contactgrid/res/values-pl/strings.xml b/java/com/android/incallui/contactgrid/res/values-pl/strings.xml index 998e49e3ef6a202df246b95ebe9462da6310e9b4..586f39e6518e780eda63b398cd4e2ebbc501aa10 100644 --- a/java/com/android/incallui/contactgrid/res/values-pl/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-pl/strings.xml @@ -1,4 +1,20 @@ + + "Dzwonię przez %s" @@ -14,6 +30,8 @@ "Oczekujące" "Rozmowa wideo z:" "Rozmowa wideo przez Wi-Fi z:" + "Prośba o przejście na rozmowę wideo wysłana przez:" + "Prośba o przejście na rozmowę wideo przez Wi-Fi wysłana przez:" "Połączenie z:" "Połączenie służbowe z:" "Przychodzące z sieci %s" diff --git a/java/com/android/incallui/contactgrid/res/values-pt-rBR/strings.xml b/java/com/android/incallui/contactgrid/res/values-pt-rBR/strings.xml index 4365cba595355403f84b595475c67868eb453010..a445cdf600ab22122a4fe31cef08cabe17e8d404 100644 --- a/java/com/android/incallui/contactgrid/res/values-pt-rBR/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-pt-rBR/strings.xml @@ -1,4 +1,20 @@ + + "Ligando via %s" @@ -14,6 +30,8 @@ "Em espera" "Videochamada de" "Videochamada via Wi-Fi de" + "Solicitação de upgrade de vídeo de" + "Solicitação de upgrade de vídeo por Wi-Fi de" "Chamada de" "Chamada de trabalho de" "Chamada de %s" diff --git a/java/com/android/incallui/contactgrid/res/values-pt-rPT/strings.xml b/java/com/android/incallui/contactgrid/res/values-pt-rPT/strings.xml index 55d3c26950038a15b3bccfe5ec6a0d596ec06cae..ca07b3fc97558de087a2de9f3d5ccb6370d42ea9 100644 --- a/java/com/android/incallui/contactgrid/res/values-pt-rPT/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-pt-rPT/strings.xml @@ -1,4 +1,20 @@ + + "A telefonar através de %s…" @@ -14,6 +30,8 @@ "Em espera" "Videochamada de" "Videochamada a partir de rede Wi-Fi de" + "Pedido de atualização para videochamada de" + "Pedido de atualização para videochamada por Wi-Fi de" "Chamada de" "Chamada de trabalho de" "Chamada recebida através de %s" diff --git a/java/com/android/incallui/contactgrid/res/values-pt/strings.xml b/java/com/android/incallui/contactgrid/res/values-pt/strings.xml index 4365cba595355403f84b595475c67868eb453010..a445cdf600ab22122a4fe31cef08cabe17e8d404 100644 --- a/java/com/android/incallui/contactgrid/res/values-pt/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-pt/strings.xml @@ -1,4 +1,20 @@ + + "Ligando via %s" @@ -14,6 +30,8 @@ "Em espera" "Videochamada de" "Videochamada via Wi-Fi de" + "Solicitação de upgrade de vídeo de" + "Solicitação de upgrade de vídeo por Wi-Fi de" "Chamada de" "Chamada de trabalho de" "Chamada de %s" diff --git a/java/com/android/incallui/contactgrid/res/values-ro/strings.xml b/java/com/android/incallui/contactgrid/res/values-ro/strings.xml index f8d1c9b5432bf5d1473e7d22ad6f49ff0122bc31..180a01f4c1294740dd567770159bb7bb5c46c9b2 100644 --- a/java/com/android/incallui/contactgrid/res/values-ro/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-ro/strings.xml @@ -1,4 +1,20 @@ + + "Se apelează prin %s" @@ -14,6 +30,8 @@ "În așteptare" "Apel video de la" "Apel video prin Wi-Fi de la" + "Solicitare de upgrade la apel video de la" + "Solicitare de upgrade la apel video prin Wi-Fi de la" "Apel primit de la" "Apel de serviciu de la" "Primite prin %s" diff --git a/java/com/android/incallui/contactgrid/res/values-ru/strings.xml b/java/com/android/incallui/contactgrid/res/values-ru/strings.xml index dfbc08828b4ea2f9a98fd3c637e93551f1a4c118..e0a63518f36b505d18fb7ba5ac34b7bd77509208 100644 --- a/java/com/android/incallui/contactgrid/res/values-ru/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-ru/strings.xml @@ -1,4 +1,20 @@ + + "Вызов через %s" @@ -14,6 +30,8 @@ "На удержании" "Видеовызов от" "Видеовызов по Wi-Fi от" + "Запрос на переход к видеовстрече от:" + "Запрос на переход к видеовстрече через Wi-Fi от:" "Вызов от" "Рабочий вызов от" "Входящий вызов (оператор: %s)" diff --git a/java/com/android/incallui/contactgrid/res/values-si/strings.xml b/java/com/android/incallui/contactgrid/res/values-si/strings.xml index 00ca2aa90bf8ac8a056543a62dd35b4fd1f2b3f5..451dc396ce1454120137410f964b3f511d5dbcce 100644 --- a/java/com/android/incallui/contactgrid/res/values-si/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-si/strings.xml @@ -1,4 +1,20 @@ + + "%s හරහා අමතමින්" @@ -14,6 +30,8 @@ "රඳවා ගත්" "වෙතින් වීඩියෝ ඇමතුම" "වෙතින් Wi-Fi වීඩියෝ ඇමතුම" + "වෙතින් වීඩියෝ උත්ශ්‍රේණි කිරීමේ ඉල්ලීම" + "වෙතින් Wi-Fi වීඩියෝ උත්ශ්‍රේණි කිරීමේ ඉල්ලීම" "වෙතින් ඇමතුම" "වෙතින් කාර්යාල ඇමතුම" "%s හරහා එන" diff --git a/java/com/android/incallui/contactgrid/res/values-sk/strings.xml b/java/com/android/incallui/contactgrid/res/values-sk/strings.xml index 40039ee9aa40003316c7cbb7981fa9dd80f3d5c5..ae21ec855dcba5c8d85b7a90235b699b5606b28c 100644 --- a/java/com/android/incallui/contactgrid/res/values-sk/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-sk/strings.xml @@ -1,4 +1,20 @@ + + "Voláte prostredníctvom poskytovateľa %s" @@ -14,6 +30,8 @@ "Podržané" "Videohovor od:" "Videohovor cez Wi-Fi od:" + "Žiadosť o inováciu na videohovor od používateľa" + "Žiadosť o inováciu na videohovor cez Wi-Fi od používateľa" "Hovor od:" "Pracovný hovor od:" "Prichádzajúci hovor prostredníctvom poskytovateľa %s" diff --git a/java/com/android/incallui/contactgrid/res/values-sl/strings.xml b/java/com/android/incallui/contactgrid/res/values-sl/strings.xml index f76b5cdacda464bd3283b5a13aa3c8e48167d100..1d93d21a4410616469798181edc6be80f5e01354 100644 --- a/java/com/android/incallui/contactgrid/res/values-sl/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-sl/strings.xml @@ -1,4 +1,20 @@ + + "Klicanje prek ponudnika %s" @@ -14,6 +30,8 @@ "Zadržano" "Videoklic osebe" "Videoklic prek omrežja Wi-Fi osebe" + "Zahteva za nadgradnjo v video – zahteva osebe" + "Zahteva za nadgradnjo v video prek omrežja Wi-Fi – zahteva osebe" "Klic osebe" "Delovni klic osebe" "Dohodni klic prek storitve %s" diff --git a/java/com/android/incallui/contactgrid/res/values-sq/strings.xml b/java/com/android/incallui/contactgrid/res/values-sq/strings.xml index 34ec2d1f6ba2f421be45829bcd36a208a597d19c..8c28eb7eacbab4233b0a20a2cb28cb600f77b262 100644 --- a/java/com/android/incallui/contactgrid/res/values-sq/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-sq/strings.xml @@ -1,4 +1,20 @@ + + "Telefonatë nëpërmjet %s" @@ -14,6 +30,8 @@ "Në pritje" "Telefonatë me video nga" "Telefonatë me video në Wi-Fi nga" + "Kërkesë për përmirësimin me video nga" + "Kërkesë për përmirësimin me video me Wi-Fi nga" "Telefonatë nga" "Telefonatë pune nga" "Telefonatë hyrëse nëpërmjet %s" diff --git a/java/com/android/incallui/contactgrid/res/values-sr/strings.xml b/java/com/android/incallui/contactgrid/res/values-sr/strings.xml index 9ad149905c1c23944921a0883849e36856818685..66ea45d6ec0d1323cc713ff151ec9caedd3f4b06 100644 --- a/java/com/android/incallui/contactgrid/res/values-sr/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-sr/strings.xml @@ -1,4 +1,20 @@ + + "Позивамо преко %s" @@ -14,6 +30,8 @@ "На чекању" "Видео позив од" "Wi-Fi видео позив од" + "Захтев за прелазак на видео позив од" + "Захтев за прелазак на видео позив преко Wi-Fi-ја од" "Позив од" "Пословни позив од" "Долазни позив преко %s" diff --git a/java/com/android/incallui/contactgrid/res/values-sv/strings.xml b/java/com/android/incallui/contactgrid/res/values-sv/strings.xml index d5dd15953ee2e29eb397cec1c7456ec8ee2933ea..931d9c98d5c59b66cfade519c45bf641c54c646b 100644 --- a/java/com/android/incallui/contactgrid/res/values-sv/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-sv/strings.xml @@ -1,4 +1,20 @@ + + "Ringer med %s" @@ -14,6 +30,8 @@ "Parkerat" "Videosamtal från" "Wi-Fi-videosamtal från" + "Begäran om videouppgradering från" + "Begäran om uppgradering av Wi-Fi-video från" "Samtal från" "Jobbsamtal från" "Inkommande via %s" diff --git a/java/com/android/incallui/contactgrid/res/values-sw/strings.xml b/java/com/android/incallui/contactgrid/res/values-sw/strings.xml index 72bc26f58879dfee04c9f7a9493fa113877e733a..581d7970a3c7310cbe53fd07a57a051299bade63 100644 --- a/java/com/android/incallui/contactgrid/res/values-sw/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-sw/strings.xml @@ -1,4 +1,20 @@ + + "Inapiga simu kupitia %s" @@ -14,6 +30,8 @@ "Imesitishwa" "Simu ya video kutoka kwa" "Simu ya video kupitia Wi-Fi kutoka kwa" + "Umetumiwa ombi ili ubadilishe utumie simu ya video na" + "Umetumiwa ombi ili ubadilishe utumie simu ya video kwenye Wi-Fi na" "Simu kutoka kwa" "Simu ya kazi kutoka kwa" "Simu zinazoingia kupitia %s" diff --git a/java/com/android/incallui/contactgrid/res/values-ta/strings.xml b/java/com/android/incallui/contactgrid/res/values-ta/strings.xml index 2f5b1b81db24fd79c1cb893e51109b7ffba8da6c..37ff87681bf6255d352204ae32d846c808545986 100644 --- a/java/com/android/incallui/contactgrid/res/values-ta/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-ta/strings.xml @@ -1,4 +1,20 @@ + + "%s வழியாக அழைக்கிறது" @@ -14,6 +30,8 @@ "ஹோல்டில் உள்ளது" "வீடியோ அழைப்பு:" "வைஃபை வீடியோ அழைப்பு:" + "வீடியோவை மேம்படுத்துவதற்கான கோரிக்கை:" + "வைஃபையில் வீடியோவை மேம்படுத்துவதற்கான கோரிக்கை:" "அழைப்பு:" "அழைப்பு (பணி) :" "%s மூலம் உள்வரும் அழைப்பு" diff --git a/java/com/android/incallui/contactgrid/res/values-te/strings.xml b/java/com/android/incallui/contactgrid/res/values-te/strings.xml index 52038dbf806a37f0f38a852f0d3a07dbff805f5a..913c9448aa7ce33d7fa8e22e9d0efa7fce7ea559 100644 --- a/java/com/android/incallui/contactgrid/res/values-te/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-te/strings.xml @@ -1,4 +1,20 @@ + + "%s ద్వారా కాల్ చేస్తోంది" @@ -14,6 +30,8 @@ "హోల్డ్‌లో ఉంది" "వీరి నుండి వీడియో కాల్:" "వీరి నుండి Wi-Fi వీడియో కాల్:" + "వీరి నుండి వీడియో అప్‌గ్రేడ్ అభ్యర్థన" + "వీరి నుండి Wi-Fi వీడియో అప్‌గ్రేడ్ అభ్యర్థన" "వీరి నుండి కాల్:" "వీరి నుండి కార్యాలయ కాల్:" "%s ద్వారా ఇన్‌కమింగ్ కాల్" diff --git a/java/com/android/incallui/contactgrid/res/values-th/strings.xml b/java/com/android/incallui/contactgrid/res/values-th/strings.xml index 419db19cce33f65bad6c13658e888dfc6ba51d79..6503959e4fcaae8fbc4c54b030843b2da7f30e0c 100644 --- a/java/com/android/incallui/contactgrid/res/values-th/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-th/strings.xml @@ -1,4 +1,20 @@ + + "โทรผ่าน %s" @@ -14,6 +30,8 @@ "พักสาย" "แฮงเอาท์วิดีโอจาก" "แฮงเอาท์วิดีโอผ่าน Wi-Fi จาก" + "คำขออัปเกรดวิดีโอจาก" + "คำขออัปเกรดวิดีโอผ่าน Wi-Fi จาก" "โทรจาก" "โทรเรื่องงานจาก" "สายเรียกเข้าผ่าน %s" diff --git a/java/com/android/incallui/contactgrid/res/values-tl/strings.xml b/java/com/android/incallui/contactgrid/res/values-tl/strings.xml index 282ec106fb4a4fe27b2caf587e7a9fb08baef213..7fa063b61eff73c0d53198dceec2de5dc07cb0af 100644 --- a/java/com/android/incallui/contactgrid/res/values-tl/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-tl/strings.xml @@ -1,4 +1,20 @@ + + "Tumatawag sa pamamagitan ng %s" @@ -14,6 +30,8 @@ "Naka-hold" "Video call mula kay" "Wi-Fi na video call mula kay" + "Kahilingan upang i-upgrade ang video mula kay" + "Kahilingan upang i-upgrade ang video gamit ang Wi-Fi mula kay" "Tawag mula kay" "Tawag sa trabaho mula kay" "Papasok sa pamamagitan ng %s" diff --git a/java/com/android/incallui/contactgrid/res/values-tr/strings.xml b/java/com/android/incallui/contactgrid/res/values-tr/strings.xml index 5ecbf3543306ccf29ceb32fb6bb83c70b52a7cdf..1ce565dcad57ceb8e364f0a562f5a4afd3148b02 100644 --- a/java/com/android/incallui/contactgrid/res/values-tr/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-tr/strings.xml @@ -1,4 +1,20 @@ + + "%s üzerinden çağrı yapılıyor" @@ -14,6 +30,8 @@ "Beklemede" "Gelen video görüşmesi isteği:" "Gelen kablosuz video görüşmesi isteği:" + "Görüntülü görüşmeye geçme isteği alındı:" + "Kablosuz görüntülü görüşmeye geçme isteği alındı:" "Gelen çağrı:" "Gelen iş çağrısı:" "%s adlı sağlayıcı üzerinden gelen çağrı" diff --git a/java/com/android/incallui/contactgrid/res/values-uk/strings.xml b/java/com/android/incallui/contactgrid/res/values-uk/strings.xml index 7b84fb650032e835417919732b0f66319eb2fde8..0d4a595cadc3cc595863c344ae05b7812331eeb5 100644 --- a/java/com/android/incallui/contactgrid/res/values-uk/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-uk/strings.xml @@ -1,4 +1,20 @@ + + "Виклик здійснюється через оператора %s" @@ -14,6 +30,8 @@ "Утримується" "Відеодзвінок від:" "Відеодзвінок через Wi-Fi від:" + "Запит на відеодзвінок від користувача" + "Запит на відеодзвінок через Wi-Fi від користувача" "Виклик від:" "Виклик на робочий телефон від:" "Вхідні виклики через оператора %s" diff --git a/java/com/android/incallui/contactgrid/res/values-ur/strings.xml b/java/com/android/incallui/contactgrid/res/values-ur/strings.xml index 6584181fb863c9299b5c4f335e68450030e43246..793e4879dda86062e5492bb73bce80e901125819 100644 --- a/java/com/android/incallui/contactgrid/res/values-ur/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-ur/strings.xml @@ -1,4 +1,20 @@ + + "کالنگ بذریعہ %s" @@ -14,6 +30,8 @@ "ہولڈ پر ہے" "ویڈیو کال منجانب" "‏Wi-Fi ویڈیو کال منجانب" + "ویڈیو اپ گریڈ کی درخواست منجانب" + "‏Wi-Fi ویڈیو اپ گریڈ کی درخواست منجانب" "کال منجانب" "دفتری کال منجانب" "%s کے ذریعے آنے والی کال" diff --git a/java/com/android/incallui/contactgrid/res/values-uz/strings.xml b/java/com/android/incallui/contactgrid/res/values-uz/strings.xml index db11a1822e21f86c374553e202c63fc457c0a6e2..a5ce1caeaf38fa483b4e45172551523db6f0c14c 100644 --- a/java/com/android/incallui/contactgrid/res/values-uz/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-uz/strings.xml @@ -1,4 +1,20 @@ + + "%s orqali qo‘ng‘rioq qilinmoqda" @@ -14,6 +30,8 @@ "Kutish rejimida" "Kimdan video qo‘ng‘iroq:" "Wi-Fi orqali kimdan video qo‘ng‘iroq:" + "Bu foydalanuvchi video suhbatga o‘tishni so‘ramoqda:" + "Bu foydalanuvchi Wi-Fi orqali video suhbatga o‘tishni so‘ramoqda:" "Kimdan qo‘ng‘iroq:" "Ish telefoniga kimdan qo‘ng‘iroq:" "Kiruvchi qo‘ng‘iroq (operator: %s)" diff --git a/java/com/android/incallui/contactgrid/res/values-vi/strings.xml b/java/com/android/incallui/contactgrid/res/values-vi/strings.xml index 340a115774ce2c0352c5096d2c24ad94b3c344ce..9ce0f18389d369f86d27bdba2cc40d9573457a5a 100644 --- a/java/com/android/incallui/contactgrid/res/values-vi/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-vi/strings.xml @@ -1,4 +1,20 @@ + + "Đang gọi điện qua %s" @@ -14,6 +30,8 @@ "Đang chờ" "Cuộc gọi điện video từ" "Cuộc gọi điện video qua Wi-Fi từ" + "Yêu cầu nâng cấp video từ" + "Yêu cầu nâng cấp video Wi-Fi từ" "Cuộc gọi từ" "Cuộc gọi về công việc từ" "Cuộc gọi đến qua %s" diff --git a/java/com/android/incallui/contactgrid/res/values-zh-rCN/strings.xml b/java/com/android/incallui/contactgrid/res/values-zh-rCN/strings.xml index 16031b81131f132a6d252f3176960541ec6883a7..af5008af0994abfa5c86af6b490ae9f82db9b32c 100644 --- a/java/com/android/incallui/contactgrid/res/values-zh-rCN/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-zh-rCN/strings.xml @@ -1,4 +1,20 @@ + + "正在通过%s进行通话" @@ -14,6 +30,8 @@ "保持" "视频通话来自:" "WLAN 视频通话来自:" + "视频通话升级请求来自:" + "WLAN 视频通话升级请求来自:" "通话来自:" "工作通话来自:" "有人通过 %s 来电" diff --git a/java/com/android/incallui/contactgrid/res/values-zh-rHK/strings.xml b/java/com/android/incallui/contactgrid/res/values-zh-rHK/strings.xml index 14a444124d9fba4a99a4bf3ef950ddc8e3679025..9f47481759fe3306c4fb27cd635c18b643b000bf 100644 --- a/java/com/android/incallui/contactgrid/res/values-zh-rHK/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-zh-rHK/strings.xml @@ -1,4 +1,20 @@ + + "正在透過 %s 撥號" @@ -14,6 +30,8 @@ "保留" "視像通話來自" "Wi-Fi 視像通話來自" + "視像升級要求來自" + "Wi-Fi 視像升級要求來自" "通話來自" "工作通話來自" "透過 %s 的來電" diff --git a/java/com/android/incallui/contactgrid/res/values-zh-rTW/strings.xml b/java/com/android/incallui/contactgrid/res/values-zh-rTW/strings.xml index bdee41e678a4983eaac0563beafca232dc7f5bed..563bb2832014a90ea56ed858a5a0e569546313e9 100644 --- a/java/com/android/incallui/contactgrid/res/values-zh-rTW/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-zh-rTW/strings.xml @@ -1,4 +1,20 @@ + + "正在透過 %s 撥號" @@ -14,6 +30,8 @@ "保留中" "視訊通話來電:" "Wi-Fi 視訊通話來電:" + "視訊升級要求,來自:" + "Wi-Fi 視訊升級要求,來自:" "語音來電:" "公司來電:" "有人透過 %s 來電" diff --git a/java/com/android/incallui/contactgrid/res/values-zu/strings.xml b/java/com/android/incallui/contactgrid/res/values-zu/strings.xml index 150d5cc98d7c919e6821dfb0b1e8de14accc77d4..19951ccf7c0cbbb3a075448d88cca8eacf82532d 100644 --- a/java/com/android/incallui/contactgrid/res/values-zu/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-zu/strings.xml @@ -1,4 +1,20 @@ + + "Ishaya ucingo nge-%s" @@ -14,6 +30,8 @@ "Ibambile" "Ikholi yevidiyo kusukela ku-" "Ikholi yevidiyo ye-Wi-Fi kusukela ku-" + "Isicelo sokuthuthukiswa kwevidiyo kusukela" + "Isicelo sokuthuthukiswa kwevidiyo ye-Wi-Fi kusukela" "Ikholi esuka ku-" "Ikholi yomsebenzi kusukela ku-" "Ingena nge-%s" diff --git a/java/com/android/incallui/contactgrid/res/values/strings.xml b/java/com/android/incallui/contactgrid/res/values/strings.xml index 385f843b18480ab49789b6d51f8330a0e7530422..5a9272ca39fbb72f1db95ad1fd2dbb1d60107bdb 100644 --- a/java/com/android/incallui/contactgrid/res/values/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values/strings.xml @@ -1,4 +1,19 @@ + Wi-Fi video call from + + Video upgrade request from + + + Wi-Fi video upgrade request from + Call from diff --git a/java/com/android/incallui/incall/impl/ButtonChooserFactory.java b/java/com/android/incallui/incall/impl/ButtonChooserFactory.java index 0dcfdb5fe964d39f5828477387f038f98408ed6c..99364e22c8c88c03afc107305ebaf82278835690 100644 --- a/java/com/android/incallui/incall/impl/ButtonChooserFactory.java +++ b/java/com/android/incallui/incall/impl/ButtonChooserFactory.java @@ -82,12 +82,19 @@ class ButtonChooserFactory { Map mapping = createCommonMapping(); mapping.put( InCallButtonIds.BUTTON_SWITCH_TO_SECONDARY, MappingInfo.builder(4).setSlotOrder(0).build()); - mapping.put( - InCallButtonIds.BUTTON_MANAGE_VOICE_CONFERENCE, - MappingInfo.builder(4).setSlotOrder(5).build()); mapping.put( InCallButtonIds.BUTTON_UPGRADE_TO_VIDEO, MappingInfo.builder(4).setSlotOrder(10).build()); - mapping.put(InCallButtonIds.BUTTON_HOLD, MappingInfo.builder(5).setSlotOrder(0).build()); + + /* + * Unlike the other configurations, MANAGE_VOICE_CONFERENCE shares a spot with HOLD for GSM. + * On GSM, pressing hold while there's a background call just swaps to the background call. It + * doesn't make sense to show both SWITCH_TO_SECONDARY and HOLD when they do the same thing, so + * we show MANAGE_VOICE_CONFERENCE instead. Previously MANAGE_VOICE_CONFERENCE would not show. + */ + mapping.put( + InCallButtonIds.BUTTON_MANAGE_VOICE_CONFERENCE, + MappingInfo.builder(5).setSlotOrder(0).build()); + mapping.put(InCallButtonIds.BUTTON_HOLD, MappingInfo.builder(5).setSlotOrder(5).build()); return new ButtonChooser(new MappedButtonConfig(mapping)); } diff --git a/java/com/android/incallui/incall/impl/ButtonController.java b/java/com/android/incallui/incall/impl/ButtonController.java index 8c113649dbc0f2adf07500be838f34f21ef496ff..b7a47f08e573825dd8b6cca6279667e1b00a009d 100644 --- a/java/com/android/incallui/incall/impl/ButtonController.java +++ b/java/com/android/incallui/incall/impl/ButtonController.java @@ -29,6 +29,8 @@ import com.android.incallui.incall.impl.CheckableLabeledButton.OnCheckedChangeLi import com.android.incallui.incall.protocol.InCallButtonIds; import com.android.incallui.incall.protocol.InCallButtonUiDelegate; import com.android.incallui.incall.protocol.InCallScreenDelegate; +import com.android.incallui.speakerbuttonlogic.SpeakerButtonInfo; +import com.android.incallui.speakerbuttonlogic.SpeakerButtonInfo.IconSize; /** Manages a single button. */ interface ButtonController { @@ -376,36 +378,13 @@ interface ButtonController { } public void setAudioState(CallAudioState audioState) { - @StringRes int contentDescriptionResId; - if ((audioState.getSupportedRouteMask() & CallAudioState.ROUTE_BLUETOOTH) - == CallAudioState.ROUTE_BLUETOOTH) { - checkable = false; - isChecked = false; - label = R.string.incall_label_audio; - - if ((audioState.getRoute() & CallAudioState.ROUTE_BLUETOOTH) - == CallAudioState.ROUTE_BLUETOOTH) { - icon = R.drawable.quantum_ic_bluetooth_audio_white_36; - contentDescriptionResId = R.string.incall_content_description_bluetooth; - } else if ((audioState.getRoute() & CallAudioState.ROUTE_SPEAKER) - == CallAudioState.ROUTE_SPEAKER) { - icon = R.drawable.quantum_ic_volume_up_white_36; - contentDescriptionResId = R.string.incall_content_description_speaker; - } else if ((audioState.getRoute() & CallAudioState.ROUTE_WIRED_HEADSET) - == CallAudioState.ROUTE_WIRED_HEADSET) { - icon = R.drawable.quantum_ic_headset_white_36; - contentDescriptionResId = R.string.incall_content_description_headset; - } else { - icon = R.drawable.ic_phone_audio_white_36dp; - contentDescriptionResId = R.string.incall_content_description_earpiece; - } - } else { - checkable = true; - isChecked = audioState.getRoute() == CallAudioState.ROUTE_SPEAKER; - label = R.string.incall_label_speaker; - icon = R.drawable.quantum_ic_volume_up_white_36; - contentDescriptionResId = R.string.incall_content_description_speaker; - } + SpeakerButtonInfo info = new SpeakerButtonInfo(audioState, IconSize.SIZE_36_DP); + + checkable = info.checkable; + isChecked = info.isChecked; + label = info.label; + icon = info.icon; + @StringRes int contentDescriptionResId = info.contentDescription; contentDescription = delegate.getContext().getText(contentDescriptionResId); checkedContentDescription = diff --git a/java/com/android/incallui/incall/impl/InCallFragment.java b/java/com/android/incallui/incall/impl/InCallFragment.java index c5d75329f51f42cede7cfda8767bee7118203a59..e102ee009071da8be281fd9e6e98519d7ae37a49 100644 --- a/java/com/android/incallui/incall/impl/InCallFragment.java +++ b/java/com/android/incallui/incall/impl/InCallFragment.java @@ -42,6 +42,7 @@ import com.android.dialer.common.Assert; import com.android.dialer.common.FragmentUtils; import com.android.dialer.common.LogUtil; import com.android.dialer.multimedia.MultimediaData; +import com.android.dialer.widget.LockableViewPager; import com.android.incallui.audioroute.AudioRouteSelectorDialogFragment; import com.android.incallui.audioroute.AudioRouteSelectorDialogFragment.AudioRouteSelectorPresenter; import com.android.incallui.contactgrid.ContactGridManager; @@ -473,6 +474,9 @@ public class InCallFragment extends Fragment inCallButtonUiDelegate.setAudioRoute(audioRoute); } + @Override + public void onAudioRouteSelectorDismiss() {} + @NonNull @Override public ButtonController getButtonController(@InCallButtonIds int id) { diff --git a/java/com/android/incallui/incall/impl/InCallPagerAdapter.java b/java/com/android/incallui/incall/impl/InCallPagerAdapter.java index 0b1088d2d4cd6ecc2be6a81258b5222dcb571729..bc0c6160786e9f28d6625f2c84bb8e87c9808f3b 100644 --- a/java/com/android/incallui/incall/impl/InCallPagerAdapter.java +++ b/java/com/android/incallui/incall/impl/InCallPagerAdapter.java @@ -21,7 +21,6 @@ import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentStatePagerAdapter; import android.support.v4.view.PagerAdapter; -import android.text.TextUtils; import com.android.dialer.multimedia.MultimediaData; import com.android.incallui.sessiondata.MultimediaFragment; @@ -47,8 +46,7 @@ public class InCallPagerAdapter extends FragmentStatePagerAdapter { @Override public int getCount() { - if (attachments != null - && (!TextUtils.isEmpty(attachments.getText()) || attachments.hasImageData())) { + if (attachments != null && attachments.hasData()) { return 2; } return 1; diff --git a/java/com/android/incallui/incall/impl/res/layout/frag_incall_voice.xml b/java/com/android/incallui/incall/impl/res/layout/frag_incall_voice.xml index 44431413cce58ad53e00d1fe531b811ca83b78c9..c06f7099c36fcd7e5514263fb7aeb62093a81a09 100644 --- a/java/com/android/incallui/incall/impl/res/layout/frag_incall_voice.xml +++ b/java/com/android/incallui/incall/impl/res/layout/frag_incall_voice.xml @@ -1,4 +1,19 @@ + - + + "Video-oproep" "Hou aan" "Voeg oproep by" "Demp" + "Beëindig oproep" "Sleutelblok" - "Luidspreker" ", is aan" ", is af" "Voeg saam" "Bestuur" "Bestuur bellers" "Verwissel" - "Klank" "Nota is gestuur" diff --git a/java/com/android/incallui/incall/impl/res/values-am/strings.xml b/java/com/android/incallui/incall/impl/res/values-am/strings.xml index 9dfd0e61d05214e3e43b509bf61bba4b73c45bf4..66a38680eb2b383358aad114fb938a843cbd6383 100644 --- a/java/com/android/incallui/incall/impl/res/values-am/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-am/strings.xml @@ -1,18 +1,33 @@ + + "የቪዲዮ ጥሪ" "ይዘህ ቆይ" "ጥሪ ያክሉ" "ድምፀ-ከል አድርግ" + "ጥሪ ጨርስ" "ቁልፍ ሰሌዳ" - "የድምጽ ማጉያ" "፣ በርቷል" "፣ ጠፍቷል" "አዋህድ" "አስተዳድር" "ደዋዮችን ያስተዳድሩ" "አገላብጥ" - "ድምፅ" "ማስታወሻ ተልኳል" diff --git a/java/com/android/incallui/incall/impl/res/values-ar/strings.xml b/java/com/android/incallui/incall/impl/res/values-ar/strings.xml index a5f448a3181bba5ecc750376f1c9afe0f1983c35..e4dbfe4b6a757f805cf901c18c46e30871e8fa62 100644 --- a/java/com/android/incallui/incall/impl/res/values-ar/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-ar/strings.xml @@ -1,18 +1,33 @@ + + "مكالمة فيديو" "انتظار" "إضافة مكالمة" "كتم" + "إنهاء المكالمة" "لوحة مفاتيح" - "مكبر الصوت" "، مشغل" "، غير مشغل" "دمج" "إدارة" "إدارة المتصلين" "تبديل" - "الصوت" "تم إرسال الملاحظة" diff --git a/java/com/android/incallui/incall/impl/res/values-az/strings.xml b/java/com/android/incallui/incall/impl/res/values-az/strings.xml index 5f1f8cb9861f078de955bce91ddaef481e499fde..9a1f7f8fe8fb02a095411f7322f16fb6449da259 100644 --- a/java/com/android/incallui/incall/impl/res/values-az/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-az/strings.xml @@ -1,18 +1,33 @@ + + "Video zəng" "Xətdə axlayın" "Zəng əlavə edin" "Susdurun" + "Zəngi bitirin" "Klaviatura" - "Dinamik" ", aktivdir" ", deaktivdir" "Birləşdir" "İdarə edin" "Zəng edənləri idarə edin" "Dəyişdirin" - "Səs" "Qeyd göndərildi" diff --git a/java/com/android/incallui/incall/impl/res/values-b+sr+Latn/strings.xml b/java/com/android/incallui/incall/impl/res/values-b+sr+Latn/strings.xml index bff7ed079a8dd2897b52a78f591288be5743f20a..02d6b7c96cde3fa0825d3e29715db0cea24d078c 100644 --- a/java/com/android/incallui/incall/impl/res/values-b+sr+Latn/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-b+sr+Latn/strings.xml @@ -1,18 +1,33 @@ + + "Video poziv" "Na čekanje" "Dodaj poziv" "Isključi zvuk" + "Završi poziv" "Tastatura" - "Zvučnik" ", uključen" ", isključen" "Objedini" "Upravljaj" "Upravljajte pozivaocima" "Zameni" - "Zvuk" "Beleška je poslata" diff --git a/java/com/android/incallui/incall/impl/res/values-be/strings.xml b/java/com/android/incallui/incall/impl/res/values-be/strings.xml index 394c7c82e5f8555e7f541291158f0585929b51fb..45e1e10100b33c7fb9ef47674e0a740c55b1bfdc 100644 --- a/java/com/android/incallui/incall/impl/res/values-be/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-be/strings.xml @@ -1,18 +1,33 @@ + + "Відэавыклік" "Утрымліваць" "Дадаць выклік" "Адключыць мікрафон" + "Сконч. выкл." "Клавіятура" - "Вонк.дынамік" ", уключана" ", выключана" "Аб\'яднаць" "Кіраваць" "Кіраваць выклікаючымі абанентамі" "Пераключыць" - "Гук" "Нататка адпраўлена" diff --git a/java/com/android/incallui/incall/impl/res/values-bg/strings.xml b/java/com/android/incallui/incall/impl/res/values-bg/strings.xml index 4f5933be9f8ce264ef69f408afe2fbcc65c3b911..c339d3bca6920d06ce8666c6e547724e31f0baff 100644 --- a/java/com/android/incallui/incall/impl/res/values-bg/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-bg/strings.xml @@ -1,18 +1,33 @@ + + "Видеообажд." "Задържане" "Ново обажд." "Без звук" + "Затваряне" "Клавиатура" - "Високоговорител" "е включено" "е изключено" "Обединяване" "Управление" "Управление на обаждащите се" "Размяна" - "Звук" "Бележката е изпратена" diff --git a/java/com/android/incallui/incall/impl/res/values-bn/strings.xml b/java/com/android/incallui/incall/impl/res/values-bn/strings.xml index 9453e14bd62f0b581e9dac97343ef8facf8e7ee3..ca5837b0eb85b22cdf0297f709ffb11d3f6fc333 100644 --- a/java/com/android/incallui/incall/impl/res/values-bn/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-bn/strings.xml @@ -1,18 +1,33 @@ + + "ভিডিও কল" "ধরে থাকুন" "কল যোগ করুন" "নিঃশব্দ করুন" + "কল শেষ করুন" "কীপ্যাড" - "স্পিকার" ", চালু রয়েছে" ", বন্ধ রয়েছে" "মার্জ করুন" "পরিচালনা করুন" "কলারদের পরিচালনা করুন" "অদল বদল করুন" - "শব্দ" "নোট পাঠানো হয়েছে" diff --git a/java/com/android/incallui/incall/impl/res/values-bs/strings.xml b/java/com/android/incallui/incall/impl/res/values-bs/strings.xml index 4b47964574c81b0b5a44872ef0a15e94309aff52..26b44ea90500da9396dd06461452aba2e368d5e6 100644 --- a/java/com/android/incallui/incall/impl/res/values-bs/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-bs/strings.xml @@ -1,18 +1,33 @@ + + "Videopoziv" "Na čekanju" "Dodaj poziv" "Isključi" + "Prekini poziv" "Telefonska tastatura" - "Zvučnik" ", uključen" ", isključen" "Spoji" "Upravljaj" "Upravljanje pozivaocima" "Zamijeni" - "Zvuk" "Bilješka je poslana" diff --git a/java/com/android/incallui/incall/impl/res/values-ca/strings.xml b/java/com/android/incallui/incall/impl/res/values-ca/strings.xml index e10b7bd2d55201d4694b4515b6e0aff1d7c839aa..9c76a3a5f12860139b91047f5b7fd2d15790fb40 100644 --- a/java/com/android/incallui/incall/impl/res/values-ca/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-ca/strings.xml @@ -1,18 +1,33 @@ + + "Videotrucada" "Posa en espera" "Afeg. trucada" "Silencia" + "Penja" "Teclat" - "Altaveu" ", activat" ", desactivat" "Combina" "Gestiona" "Gestiona les persones que truquen" "Canvia" - "So" "La nota s\'ha enviat" diff --git a/java/com/android/incallui/incall/impl/res/values-cs/strings.xml b/java/com/android/incallui/incall/impl/res/values-cs/strings.xml index a00c10547c03960aab48b5e13b7177ded8cd4853..69f3e53a0e777e479243f93235a980fc5a07f065 100644 --- a/java/com/android/incallui/incall/impl/res/values-cs/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-cs/strings.xml @@ -1,18 +1,33 @@ + + "Videohovor" "Podržet" "Přidat hovor" "Vyp. mikrof." + "Zavěsit" "Klávesnice" - "Reproduktor" "– zapnuto" "– vypnuto" "Sloučit" "Spravovat" "Spravovat volající" "Přepnout" - "Zvuk" "Poznámka byla odeslána" diff --git a/java/com/android/incallui/incall/impl/res/values-da/strings.xml b/java/com/android/incallui/incall/impl/res/values-da/strings.xml index 08b5cbb8e882c0e998f7081e7272234774c4d4c8..d9328afe44bfc35d31ccc647884dabba85139ad9 100644 --- a/java/com/android/incallui/incall/impl/res/values-da/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-da/strings.xml @@ -1,18 +1,33 @@ + + "Videoopkald" "Parkér" "Tilføj opkald" "Slå lyden fra" + "Slut opkald" "Tastatur" - "Højttaler" ", er til" ", er fra" "Flet" "Administrer" "Administrer opkaldere" "Byt" - "Lyd" "Noten blev sendt" diff --git a/java/com/android/incallui/incall/impl/res/values-de/strings.xml b/java/com/android/incallui/incall/impl/res/values-de/strings.xml index 5f3f8c1cbce6edae895247b2a1a9b4d79c075829..30eae96b364cee02216b60beecbd957d8c274ceb 100644 --- a/java/com/android/incallui/incall/impl/res/values-de/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-de/strings.xml @@ -1,18 +1,33 @@ + + "Videoanruf" "Halten" "Hinzufügen" "Stumm" + "Beenden" "Wähltasten" - "Lautsprecher" ", ist an" ", ist aus" "Zusammenf." "Verwalten" "Anrufer verwalten" "Wechseln" - "Audio" "Notiz gesendet" diff --git a/java/com/android/incallui/incall/impl/res/values-el/strings.xml b/java/com/android/incallui/incall/impl/res/values-el/strings.xml index 0f5a1423891206af683db69eac58082f57a7e83b..b45314fa7bf04c31e2f6690e96b9dfcfdabc16a9 100644 --- a/java/com/android/incallui/incall/impl/res/values-el/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-el/strings.xml @@ -1,18 +1,33 @@ + + "Βιντεοκλήση" "Αναμονή" "Προσθ. κλήσ." "Σίγαση" + "Τερματισμός" "Πληκτρολόγιο" - "Ηχείο" ", ενεργό" ", ανενεργό" "Συγχώνευση" "Διαχείριση" "Διαχείριση καλούντων" "Ανταλλαγή" - "Ήχος" "Η σημείωση εστάλη" diff --git a/java/com/android/incallui/incall/impl/res/values-en-rAU/strings.xml b/java/com/android/incallui/incall/impl/res/values-en-rAU/strings.xml index 89b72df5482b8dd1792cba3e7ac1fab3b57a6837..34323f57a64641af2295a35159940b710da0cb7b 100644 --- a/java/com/android/incallui/incall/impl/res/values-en-rAU/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-en-rAU/strings.xml @@ -1,18 +1,33 @@ + + "Video call" "Hold" "Add call" "Mute" + "End call" "Keypad" - "Speaker" ", is on" ", is off" "Merge" "Manage" "Manage callers" "Swap" - "Sound" "Note sent" diff --git a/java/com/android/incallui/incall/impl/res/values-en-rGB/strings.xml b/java/com/android/incallui/incall/impl/res/values-en-rGB/strings.xml index 89b72df5482b8dd1792cba3e7ac1fab3b57a6837..34323f57a64641af2295a35159940b710da0cb7b 100644 --- a/java/com/android/incallui/incall/impl/res/values-en-rGB/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-en-rGB/strings.xml @@ -1,18 +1,33 @@ + + "Video call" "Hold" "Add call" "Mute" + "End call" "Keypad" - "Speaker" ", is on" ", is off" "Merge" "Manage" "Manage callers" "Swap" - "Sound" "Note sent" diff --git a/java/com/android/incallui/incall/impl/res/values-en-rIN/strings.xml b/java/com/android/incallui/incall/impl/res/values-en-rIN/strings.xml index 89b72df5482b8dd1792cba3e7ac1fab3b57a6837..34323f57a64641af2295a35159940b710da0cb7b 100644 --- a/java/com/android/incallui/incall/impl/res/values-en-rIN/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-en-rIN/strings.xml @@ -1,18 +1,33 @@ + + "Video call" "Hold" "Add call" "Mute" + "End call" "Keypad" - "Speaker" ", is on" ", is off" "Merge" "Manage" "Manage callers" "Swap" - "Sound" "Note sent" diff --git a/java/com/android/incallui/incall/impl/res/values-es-rUS/strings.xml b/java/com/android/incallui/incall/impl/res/values-es-rUS/strings.xml index fe9374cb9ef51790d463fda2778051f0210dbcd0..d39cf2f6f1b6890e0b1051c6485302935ddd9315 100644 --- a/java/com/android/incallui/incall/impl/res/values-es-rUS/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-es-rUS/strings.xml @@ -1,18 +1,33 @@ + + "Videollamada" "Retener" "Agregar llamada" "Silenciar" + "Finalizar" "Teclado" - "Altavoz" ", activado" ", desactivado" "Combinar" "Administrar" "Administrar números" "Cambiar" - "Sonido" "Se envió la nota" diff --git a/java/com/android/incallui/incall/impl/res/values-es/strings.xml b/java/com/android/incallui/incall/impl/res/values-es/strings.xml index f2dd09bb942c11c823f5f5e31b56fcaa6ba9f144..db5a7e6438bbf9027f4733315d7483039efce208 100644 --- a/java/com/android/incallui/incall/impl/res/values-es/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-es/strings.xml @@ -1,18 +1,33 @@ + + "Videollamada" "Retener" "Añadir" "Silenciar" + "Finalizar" "Teclado" - "Altavoz" ", activado" ", desactivado" "Combinar" "Gestionar" "Administrar llamadas" "Cambiar" - "Sonido" "Nota enviada" diff --git a/java/com/android/incallui/incall/impl/res/values-et/strings.xml b/java/com/android/incallui/incall/impl/res/values-et/strings.xml index 03fa7deae3c5d79107ef697fa9cae3c9c0e82879..f4587adaa81f3c3dd6f9e3596381d59d0fcb110e 100644 --- a/java/com/android/incallui/incall/impl/res/values-et/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-et/strings.xml @@ -1,18 +1,33 @@ + + "Videokõne" "Ootele" "Lisa kõne" "Vaigista" + "Lõpeta kõne" "Klaviatuur" - "Kõlar" ", on sees" ", on väljas" "Ühenda" "Halda" "Helistajate haldamine" "Vaheta" - "Heli" "Märge on saadetud" diff --git a/java/com/android/incallui/incall/impl/res/values-eu/strings.xml b/java/com/android/incallui/incall/impl/res/values-eu/strings.xml index 51d300e2e8d1dc7f02dd51e06f1e06482423ed31..28d78a70b35c6d1c63a081f468db24ffb2452080 100644 --- a/java/com/android/incallui/incall/impl/res/values-eu/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-eu/strings.xml @@ -1,18 +1,33 @@ + + "Bideo-deia" "Utzi zain" "Gehitu deia" "Des. audioa" + "Amaitu deia" "Teklatua" - "Bozgorailua" ", aktibatuta" ", desaktib." "Bateratu" "Kudeatu" "Kudeatu deitzaileak" "Aldatu" - "Soinua" "Bidali da oharra" diff --git a/java/com/android/incallui/incall/impl/res/values-fa/strings.xml b/java/com/android/incallui/incall/impl/res/values-fa/strings.xml index a0701163e0196a61327cbd74d79d8060844fc567..a26ac75a2904ab1e6c53d0818cb78380c5371ec9 100644 --- a/java/com/android/incallui/incall/impl/res/values-fa/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-fa/strings.xml @@ -1,18 +1,33 @@ + + "تماس ویدئویی" "درحال انتظار" "افزودن تماس" "بی‌صدا کردن" + "پایان تماس" "صفحه کلید" - "بلندگو" "، فعال است" "، غیرفعال است" "ادغام" "مدیریت" "مدیریت تماس‌گیرندگان" "جابه‌جایی" - "صدا" "یادداشت ارسال شد" diff --git a/java/com/android/incallui/incall/impl/res/values-fi/strings.xml b/java/com/android/incallui/incall/impl/res/values-fi/strings.xml index d81bfbf3954198a33f807cb7bd3aa7cb9b81846b..9ae53488a1a6f92221e7fc106a14f0bd4b771c9a 100644 --- a/java/com/android/incallui/incall/impl/res/values-fi/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-fi/strings.xml @@ -1,18 +1,33 @@ + + "Videopuhelu" "Pitoon" "Lisää puhelu" "Mykistä" + "Päätä puhelu" "Näppäimistö" - "Kaiutin" ", käytössä" ", ei käytössä" "Yhdistä" "Hallinnoi" "Hallinnoi soittajia" "Vaihda" - "Ääni" "Muistiinpano lähetettiin." diff --git a/java/com/android/incallui/incall/impl/res/values-fr-rCA/strings.xml b/java/com/android/incallui/incall/impl/res/values-fr-rCA/strings.xml index 1278bce2d7796d10a624f19816735ca6ae66a3a7..cff6745d15d1feea4db1af1fc933aba093fa6620 100644 --- a/java/com/android/incallui/incall/impl/res/values-fr-rCA/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-fr-rCA/strings.xml @@ -1,18 +1,33 @@ + + "Appel vidéo" "En attente" "Autre appel" "Couper son" + "Raccrocher" "Clavier" - "Haut-parleur" ", activé" ", désactivé" "Fusionner" "Gérer" "Gérer les appels" "Permuter" - "Son" "Note envoyée" diff --git a/java/com/android/incallui/incall/impl/res/values-fr/strings.xml b/java/com/android/incallui/incall/impl/res/values-fr/strings.xml index 5532032b98c84d2619ec298f734c41bc8a0f523a..14e92beeb031200d58c95b208974fabcde5c68dc 100644 --- a/java/com/android/incallui/incall/impl/res/values-fr/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-fr/strings.xml @@ -1,18 +1,33 @@ + + "Appel vidéo" "En attente" "Autre appel" "Couper micro" + "Raccrocher" "Clavier" - "Haut-parleur" ", activé" ", désactivé" "Fusionner" "Gérer" "Gérer les appelants" "Permuter" - "Son" "Note envoyée" diff --git a/java/com/android/incallui/incall/impl/res/values-gl/strings.xml b/java/com/android/incallui/incall/impl/res/values-gl/strings.xml index ec99b7c751cc369ff5b7509daef5b9f7d3c2a467..4b399f4eec818262f4f9a9c238b0d31a38afecd1 100644 --- a/java/com/android/incallui/incall/impl/res/values-gl/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-gl/strings.xml @@ -1,18 +1,33 @@ + + "Videochamada" "En espera" "Eng. chamada" "Ignorar" + "Finalizar chamada" "Teclado" - "Altofalante" "activado" "desactivado" "Combinar" "Xestionar" "Xestionar emisores de chamadas" "Cambiar" - "Son" "Enviouse a nota" diff --git a/java/com/android/incallui/incall/impl/res/values-gu/strings.xml b/java/com/android/incallui/incall/impl/res/values-gu/strings.xml index fb3999c9a18887f90897ed48668e8ed9c4b078b7..438f0f35183cc5bd6aa089c0aafc5c5fc413b053 100644 --- a/java/com/android/incallui/incall/impl/res/values-gu/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-gu/strings.xml @@ -1,18 +1,33 @@ + + "વિડિઓ કૉલ" "હોલ્ડ કરો" "કૉલ ઉમેરો" "મ્યૂટ કરો" + "કૉલ સમાપ્ત કરો" "કીપેડ" - "સ્પીકર" ", ચાલુ છે" ", બંધ છે" "મર્જ કરો" "સંચાલિત કરો" "કૉલર્સને સંચાલિત કરો" "સ્વેપ કરો" - "ધ્વનિ" "નોંધ મોકલી" diff --git a/java/com/android/incallui/incall/impl/res/values-h580dp/dimens.xml b/java/com/android/incallui/incall/impl/res/values-h580dp/dimens.xml deleted file mode 100644 index 1f37cd50406f009d49043fe364b998d2b7ff1f40..0000000000000000000000000000000000000000 --- a/java/com/android/incallui/incall/impl/res/values-h580dp/dimens.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - 88dp - diff --git a/java/com/android/incallui/incall/impl/res/values-h600dp/dimens.xml b/java/com/android/incallui/incall/impl/res/values-h600dp/dimens.xml new file mode 100644 index 0000000000000000000000000000000000000000..904aed2357e0e89a4c6e170c72478db55aa0cc31 --- /dev/null +++ b/java/com/android/incallui/incall/impl/res/values-h600dp/dimens.xml @@ -0,0 +1,20 @@ + + + + + 88dp + diff --git a/java/com/android/incallui/incall/impl/res/values-h580dp/styles.xml b/java/com/android/incallui/incall/impl/res/values-h650dp/styles.xml similarity index 100% rename from java/com/android/incallui/incall/impl/res/values-h580dp/styles.xml rename to java/com/android/incallui/incall/impl/res/values-h650dp/styles.xml diff --git a/java/com/android/incallui/incall/impl/res/values-hi/strings.xml b/java/com/android/incallui/incall/impl/res/values-hi/strings.xml index 6a7538dea6aec4ef570315cb1819f35c8302a3ed..39e6e6b6d6f77f1717cd90d5cd2f07aab8586d1e 100644 --- a/java/com/android/incallui/incall/impl/res/values-hi/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-hi/strings.xml @@ -1,18 +1,33 @@ + + "वीडियो कॉल" "होल्ड करें" "कॉल जोड़ें" "म्यूट करें" + "कॉल समाप्त करें" "कीपैड" - "स्‍पीकर" ", चालू है" ", बंद है" "एक बनाएं" "प्रबंधित करें" "कॉलर प्रबंधित करें" "स्वैप करें" - "ध्वनि" "नोट भेज दिया गया है" diff --git a/java/com/android/incallui/incall/impl/res/values-hr/strings.xml b/java/com/android/incallui/incall/impl/res/values-hr/strings.xml index fc431b33b3bcb0274e9c7de4265e7fe4e421051e..e440028d8a1abb9e379ed3128acb67285c614d8a 100644 --- a/java/com/android/incallui/incall/impl/res/values-hr/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-hr/strings.xml @@ -1,18 +1,33 @@ + + "Videopoziv" "Pauziraj" "Dodaj poziv" "Isklj. zvuk" + "Prekini poziv" "Tipkovnica" - "Zvučnik" ", uključeno" ", isključeno" "Spoji" "Upravljanje" "Upravljaj pozivateljima" "Zamijeni" - "Zvuk" "Bilješka je poslana" diff --git a/java/com/android/incallui/incall/impl/res/values-hu/strings.xml b/java/com/android/incallui/incall/impl/res/values-hu/strings.xml index 194c348d9c5d4e799017903d12e03706455241a6..e63ce5946c36714cc8c65ebc2949f8bcfeebfeec 100644 --- a/java/com/android/incallui/incall/impl/res/values-hu/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-hu/strings.xml @@ -1,18 +1,33 @@ + + "Videohívás" "Várakoztatás" "Hívás felv." "Némítás" + "Hívás vége" "Billentyűzet" - "Hangszóró" ", be" ", ki" "Egyesítés" "Kezelés" "Hívók kezelése" "Csere" - "Hang" "Üzenet elküldve" diff --git a/java/com/android/incallui/incall/impl/res/values-hy/strings.xml b/java/com/android/incallui/incall/impl/res/values-hy/strings.xml index 0e8054ec9b3c36841a83f44404a7f1f14c683373..ce395e70ce96f13822a8ec39d7a69f0e215a3939 100644 --- a/java/com/android/incallui/incall/impl/res/values-hy/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-hy/strings.xml @@ -1,18 +1,33 @@ + + "Տեսազանգ" "Պահել զանգը" "Ավելացնել զանգ" "Անջատել" + "Ավարտել զանգը" "Ստեղնաշար" - "Բարձրախոս" ", միացած է" ", անջատած է" "Միավորել" "Կառավարել" "Զանգողների կառավարում" "Փոխարկել" - "Ձայն" "Գրառումն ուղարկվեց" diff --git a/java/com/android/incallui/incall/impl/res/values-in/strings.xml b/java/com/android/incallui/incall/impl/res/values-in/strings.xml index f429cb4b7320413bfbbe18530e111fe4a3c9f1d7..e9d738a36ef751e21c2d99bfbd6e236875ba2fc5 100644 --- a/java/com/android/incallui/incall/impl/res/values-in/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-in/strings.xml @@ -1,18 +1,33 @@ + + "Video call" "Tahan" "Tambahkan panggilan" "Bisukan" + "Akhiri panggilan" "Keypad" - "Speaker" ", aktif" ", Nonaktif" "Gabungkan" "Kelola" "Kelola penelepon" "Tukar" - "Suara" "Catatan telah dikirim" diff --git a/java/com/android/incallui/incall/impl/res/values-is/strings.xml b/java/com/android/incallui/incall/impl/res/values-is/strings.xml index 9c3bf89bfc285895fc04f2497b9dd4a9fd679bc8..f262e3f9ff87b7dd0cfe2d40ffea2deeb54298d8 100644 --- a/java/com/android/incallui/incall/impl/res/values-is/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-is/strings.xml @@ -1,18 +1,33 @@ + + "Myndsímtal" "Setja í bið" "Bæta við" "Hljóð af" + "Ljúka" "Talnaborð" - "Hátalari" ", kveikt" ", slökkt" "Sameina" "Stjórna" "Hafa umsjón með hringjendum" "Skipta milli" - "Hljóð" "Glósa send" diff --git a/java/com/android/incallui/incall/impl/res/values-it/strings.xml b/java/com/android/incallui/incall/impl/res/values-it/strings.xml index 1cfb0be678974f23ef053b881e5ed28af941df33..f29a70260641e944421d44f7e49ef6ebb5034b1e 100644 --- a/java/com/android/incallui/incall/impl/res/values-it/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-it/strings.xml @@ -1,18 +1,33 @@ + + "Videochiamata" "In attesa" "Aggiungi chiamata" "Disattiva" + "Termina chiamata" "Tastierino" - "Altoparlante" ", attivo" ", non attivo" "Unisci" "Gestisci" "Gestisci chiamanti" "Scambia" - "Audio" "Nota inviata" diff --git a/java/com/android/incallui/incall/impl/res/values-iw/strings.xml b/java/com/android/incallui/incall/impl/res/values-iw/strings.xml index 2426fc86868855c146d7c892649d2f32c96c4a4f..bf08e3b0651bc97a9f813d1b743a706b50f8774f 100644 --- a/java/com/android/incallui/incall/impl/res/values-iw/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-iw/strings.xml @@ -1,18 +1,33 @@ + + "שיחת וידאו" "המתנה" "הוסף שיחה" "השתק" + "סיום השיחה" "לוח חיוג" - "רמקול" ", מופעל" ", מושבת" "מזג" "נהל" "ניהול המתקשרים" "החלף" - "צלילים" "ההערה נשלחה" diff --git a/java/com/android/incallui/incall/impl/res/values-ja/strings.xml b/java/com/android/incallui/incall/impl/res/values-ja/strings.xml index 9e313a072de0341b67d93720c239dbb54c39c406..b78ee202ec943f894e74c4d2b0707b015b6ff199 100644 --- a/java/com/android/incallui/incall/impl/res/values-ja/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-ja/strings.xml @@ -1,18 +1,33 @@ + + "ビデオ通話" "保留" "通話を追加" "ミュート" + "通話を終了" "キーパッド" - "スピーカー" "がオンです" "がオフです" "統合" "管理" "発信者を管理" "切り替え" - "音声" "メモを送信しました" diff --git a/java/com/android/incallui/incall/impl/res/values-ka/strings.xml b/java/com/android/incallui/incall/impl/res/values-ka/strings.xml index d33af5a4662d59fd42e9eb096373a8b3fe09cd07..f6926f39cfcd81e4412920b40b5852ebee5c2f49 100644 --- a/java/com/android/incallui/incall/impl/res/values-ka/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-ka/strings.xml @@ -1,18 +1,33 @@ + + "ვიდეოზარი" "შეყოვნება" "ზარის დამატ." "დადუმება" + "ზარის დასრ." "კლავიატურა" - "სპიკერი" ", ჩართულია" ", გამორთულია" "გაერთიანება" "მართვა" "აბონენტების მართვა" "შენაცვლება" - "ხმა" "ჩანიშვნა გაიგზავნა" diff --git a/java/com/android/incallui/incall/impl/res/values-kk/strings.xml b/java/com/android/incallui/incall/impl/res/values-kk/strings.xml index db9c4f6ca49514d41e10db051ae28589d6cdae4f..8da9982d0ea261e2543ff38f82e7b3141faf452c 100644 --- a/java/com/android/incallui/incall/impl/res/values-kk/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-kk/strings.xml @@ -1,18 +1,33 @@ + + "Бейне қоңырау" "Күттіру" "Қоңырау қосу" "Дыбысын өшіру" + "Қоңырауды аяқтау" "Пернетақта" - "Динамик" ", қосулы" ", өшірулі" "Біріктіру" "Басқару" "Қоңырау шалушыларды басқару" "Ауыстыру" - "Дыбыс" "Ескертпе жіберілді" diff --git a/java/com/android/incallui/incall/impl/res/values-km/strings.xml b/java/com/android/incallui/incall/impl/res/values-km/strings.xml index 6596bdf0c398c9b33578a83d2f327777c104191f..88e356a41d01411ea723c6d601dbacdde6b6c742 100644 --- a/java/com/android/incallui/incall/impl/res/values-km/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-km/strings.xml @@ -1,18 +1,33 @@ + + "ហៅ​ជា​វីដេអូ" "រង់ចាំ" "បន្ថែម​ការ​ហៅ" "បិទ​សំឡេង" + "បញ្ចប់​ការ​ហៅ" "បន្ទះ​​ចុច​លេខ" - "ឧបករណ៍​បំពង​សំឡេង" ", បាន​បើក" ", បានបិទ" "បញ្ចូលគ្នា" "គ្រប់គ្រង" "គ្រប់គ្រងអ្នក​ហៅ" "ប្ដូរ" - "សំឡេង" "បានផ្ញើចំណាំ" diff --git a/java/com/android/incallui/incall/impl/res/values-kn/strings.xml b/java/com/android/incallui/incall/impl/res/values-kn/strings.xml index c03ec09fadc8b32b549c5ac8cb4e3bdfa20f7a83..ad29b6d361f48d6c7a1a0729050b6194dbd1c969 100644 --- a/java/com/android/incallui/incall/impl/res/values-kn/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-kn/strings.xml @@ -1,18 +1,33 @@ + + "ವೀಡಿಯೊ ಕರೆ" "ಹೋಲ್ಡ್‌‌ ಮಾಡು" "ಕರೆಯನ್ನು ಸೇರಿಸಿ" "ಮ್ಯೂಟ್ ಮಾಡಿ" + "ಕರೆ ಅಂತ್ಯಗೊಳಿಸಿ" "ಕೀಪ್ಯಾಡ್‌" - "ಸ್ಪೀಕರ್‌" ", ಆನ್ ಆಗಿದೆ" ", ಆಫ್ ಆಗಿದೆ" "ವಿಲೀನಗೊಳಿಸು" "ನಿರ್ವಹಿಸು" "ಕರೆದಾತರನ್ನು ನಿರ್ವಹಿಸಿ" "ಸ್ವ್ಯಾಪ್‌ ಮಾಡು" - "ಧ್ವನಿ" "ಟಿಪ್ಪಣಿ ಕಳುಹಿಸಲಾಗಿದೆ" diff --git a/java/com/android/incallui/incall/impl/res/values-ko/strings.xml b/java/com/android/incallui/incall/impl/res/values-ko/strings.xml index e701e772f0280db16036e3cbea06ae84c0b4f381..f9bb20f8b12b7b25bd081f24f9f7bfb95708697d 100644 --- a/java/com/android/incallui/incall/impl/res/values-ko/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-ko/strings.xml @@ -1,18 +1,33 @@ + + "화상 통화" "대기" "통화 추가" "음소거" + "통화 종료" "키패드" - "스피커" ", 켜짐" ", 꺼짐" "병합" "관리" "발신자 관리" "전환" - "소리" "메모가 전송되었습니다." diff --git a/java/com/android/incallui/incall/impl/res/values-ky/strings.xml b/java/com/android/incallui/incall/impl/res/values-ky/strings.xml index e51d4c582048b6e1c7ec8d8c327b07de6236fb4d..f00264dbe2a388ef0a183d039aec76b16ad45c4b 100644 --- a/java/com/android/incallui/incall/impl/res/values-ky/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-ky/strings.xml @@ -1,18 +1,33 @@ + + "Видео чалуу" "Күттүрүү" "Чалууну кошуу" "Үнүн өчүрүү" + "Чалууну бүтүрүү" "Ном. тергич" - "Катуу сүйлөткүч" ", күйүк" ", өчүк" "Бириктирүү" "Башкаруу" "Чалуучуларды башкаруу" "Алмаштыруу" - "Добуш" "Билдирүү жөнөтүлдү" diff --git a/java/com/android/incallui/incall/impl/res/values-lo/strings.xml b/java/com/android/incallui/incall/impl/res/values-lo/strings.xml index 52de3ffccb2e122e4bace0351b4ec8ecbc44cbc0..2382f3241a0e213e0ecf2291943d65b6aefcc69a 100644 --- a/java/com/android/incallui/incall/impl/res/values-lo/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-lo/strings.xml @@ -1,18 +1,33 @@ + + "ໂທດ້ວຍວິດີໂອ" "ພັກສາຍຊົ່ວຄາວ" "ເພີ່ມການໂທ" "ປີດສຽງ" + "ວາງສາຍ" "ແປ້ນກົດ" - "ລຳໂພງ" ", ເປີດຢູ່" ", ປິດຢູ່" "ຮວມສາຍ" "ຈັດການ" "ຈັດການຜູ້ໂທ" "ສະຫຼັບສາຍ" - "ສຽງ" "ສົ່ງບັນທຶກແລ້ວ" diff --git a/java/com/android/incallui/incall/impl/res/values-lt/strings.xml b/java/com/android/incallui/incall/impl/res/values-lt/strings.xml index 4cd0356f35131bc042e5b31b247e72e6f39181fb..1a10884cb41732a21d9e87d96452af95b5893db5 100644 --- a/java/com/android/incallui/incall/impl/res/values-lt/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-lt/strings.xml @@ -1,18 +1,33 @@ + + "Vaizdo skambutis" "Sulaikyti" "Pr. skambutį" "Nutildyti" + "Baig. skamb." "Klaviatūra" - "Garsiakalbis" ", įjungtas" ", išjungtas" "Sujungti" "Tvarkyti" "Tvarkyti skambintojus" "Sukeisti" - "Garsas" "Užrašas išsiųstas" diff --git a/java/com/android/incallui/incall/impl/res/values-lv/strings.xml b/java/com/android/incallui/incall/impl/res/values-lv/strings.xml index 48f9ae032e7d5e4a2623d70461100443e56d7407..c19e7c0ae8b0ba045c27e0bff1be46277b5ad99d 100644 --- a/java/com/android/incallui/incall/impl/res/values-lv/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-lv/strings.xml @@ -1,18 +1,33 @@ + + "Videozvans" "Aizturēt" "Pievienot zvanu" "Izslēgt" + "Beigt zvanu" "Cipartast." - "Skaļrunis" ", ieslēgts" ", izslēgts" "Apvienot" "Pārvaldīt" "Pārvaldīt zvanītājus" "Pārslēgt" - "Skaņa" "Piezīme nosūtīta" diff --git a/java/com/android/incallui/incall/impl/res/values-mk/strings.xml b/java/com/android/incallui/incall/impl/res/values-mk/strings.xml index 5a61de5d3901edf3f57cf5c4983a816abbcef894..610a308035f7b590ef65d73ba96fb6ce4f3430aa 100644 --- a/java/com/android/incallui/incall/impl/res/values-mk/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-mk/strings.xml @@ -1,18 +1,33 @@ + + "Видеоповик" "На чекање" "Додај повик" "Исклучи звук" + "Заврши повик" "Тастатура" - "Звучник" ", е вклучен" ", е исклучен" "Спои" "Управувај" "Управувајте со повикувачите" "Замени" - "Звук" "Белешката е испратена" diff --git a/java/com/android/incallui/incall/impl/res/values-ml/strings.xml b/java/com/android/incallui/incall/impl/res/values-ml/strings.xml index 00586ffa7fe5d9fa7cad840bf8acb883da8c45cc..83c2989f0673bde21cc6a9f1ea937b5316b510e6 100644 --- a/java/com/android/incallui/incall/impl/res/values-ml/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-ml/strings.xml @@ -1,18 +1,33 @@ + + "വീഡിയോ കോള്‍" "ഹോള്‍ഡുചെയ്യുക" "കോൾ ചേർക്കുക" "മ്യൂട്ടുചെയ്യുക" + "കോള്‍ അവസാനിപ്പിക്കൂ" "കീപാഡ്" - "സ്പീക്കർ" ", ഓണാണ്" ", ഓഫാണ്" "ലയിപ്പിക്കുക" "മാനേജുചെയ്യുക" "കോൾ ചെയ്യുന്നവരെ മാനേജുചെയ്യുക" "സ്വാപ്പുചെയ്യുക" - "ശബ്‌ദം" "കുറിപ്പ് അയച്ചു" diff --git a/java/com/android/incallui/incall/impl/res/values-mn/strings.xml b/java/com/android/incallui/incall/impl/res/values-mn/strings.xml index 085a405b01e01b0dce761090cbe032fdad14dfe7..9427d86d21451d4b0236c2144983abb080ef59b9 100644 --- a/java/com/android/incallui/incall/impl/res/values-mn/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-mn/strings.xml @@ -1,18 +1,33 @@ + + "Видео хурал" "Саатуулах" "Дуудлага нэмэх" "Дууг хаах" + "Дуудлагыг таслах" "Товчлуур" - "Чанга яригч" ", асаатай" ", унтраатай" "Нэгтгэх" "Удирдах" "Залгагчдыг удирдах" "Солих" - "Дуу" "Тэмдэглэлийг илгээсэн" diff --git a/java/com/android/incallui/incall/impl/res/values-mr/strings.xml b/java/com/android/incallui/incall/impl/res/values-mr/strings.xml index 8419233521de24ff5815fde7ffb798e943bd9027..194c192bd47f2ce25f915545a692b0cb07d54ac2 100644 --- a/java/com/android/incallui/incall/impl/res/values-mr/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-mr/strings.xml @@ -1,18 +1,33 @@ + + "व्हिडिओ कॉल" "होल्ड करा" "कॉल जोडा" "नि:शब्द करा" + "कॉल समाप्त करा" "कीपॅड" - "स्पीकर" ", सुरू आहे" ", बंद आहे" "विलीन करा" "व्यवस्थापित करा" "कॉलर व्यवस्थापित करा" "अदलाबदल करा" - "ध्वनी" "टीप पाठविली" diff --git a/java/com/android/incallui/incall/impl/res/values-ms/strings.xml b/java/com/android/incallui/incall/impl/res/values-ms/strings.xml index c9db8325e94d33929a0ce2614b583a0f0d617713..a918dedb4a5506129ba0f84af3867cb5209972eb 100644 --- a/java/com/android/incallui/incall/impl/res/values-ms/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-ms/strings.xml @@ -1,18 +1,33 @@ + + "Pgln video" "Tunda" "Tambah pgln" "Redam" + "Tamatkn pgln" "Pad kekunci" - "Pmbsr suara" ", dihidupkan" ", Dimatikan" "Gabung" "Urus" "Urus pemanggil" "Silih" - "Bunyi" "Nota dihantar" diff --git a/java/com/android/incallui/incall/impl/res/values-my/strings.xml b/java/com/android/incallui/incall/impl/res/values-my/strings.xml index e0bfb8c711a413d3b1dcb5b321cdd2fa2fd43939..80070297bd2ccf2268c0c16c71cb989e77dbff7c 100644 --- a/java/com/android/incallui/incall/impl/res/values-my/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-my/strings.xml @@ -1,18 +1,33 @@ + + "ဗီဒီယိုခေါ်ဆိုမှု" "ခဏရပ်ထားရန်" "ထပ်ခေါ်ရန်" "အသံပိတ်ရန်" + "ဖုန်းချရန်" "ခလုတ်ခုံ" - "စပီကာ" "၊ ပွင့်နေသည်" "၊ ပိတ်နေသည်" "ပေါင်းရန်" "စီမံရန်" "ခေါ်ဆိုသူများကို စီမံခန့်ခွဲရန်" "ဖလှယ်ရန်" - "အသံ" "မှတ်စုပို့ပြီးပါပြီ" diff --git a/java/com/android/incallui/incall/impl/res/values-nb/strings.xml b/java/com/android/incallui/incall/impl/res/values-nb/strings.xml index 75200869c6b1f1e0494425f95906a92d04ca2ef3..704384ea0b83d31bef9205b2197e4d7320a1d1ef 100644 --- a/java/com/android/incallui/incall/impl/res/values-nb/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-nb/strings.xml @@ -1,18 +1,33 @@ + + "Videosamtale" "Sett på vent" "Nytt anrop" "Ignorer" + "Avslutt samtalen" "Tastatur" - "Høyttaler" "er på" "er av" "Slå sammen" "Administrer" "Håndter innringere" "Bytt" - "Lyd" "Notatet er sendt" diff --git a/java/com/android/incallui/incall/impl/res/values-ne/strings.xml b/java/com/android/incallui/incall/impl/res/values-ne/strings.xml index 6bcfb6dd27eb4e1af0ad3567d0f8637329d5f62b..beffa3e740c017204fa2bf4fd5f818fa3e815b11 100644 --- a/java/com/android/incallui/incall/impl/res/values-ne/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-ne/strings.xml @@ -1,18 +1,33 @@ + + "भिडियो कल" "होल्ड गर्ने" "कल थप्नुहोस्" "म्यूट गर्ने" + "कल अन्त्य गर्ने" "किप्याड" - "स्पिकर" ", खुला छ" ", बन्द छ" "मर्ज गर्ने" "प्रबन्ध गर्ने" "कल गर्ने व्यक्तिहरूलाई व्यवस्थित गर्नुहोस्" "साट्नुहोस्" - "आवाज" "टिपोट पठाइयो" diff --git a/java/com/android/incallui/incall/impl/res/values-nl/strings.xml b/java/com/android/incallui/incall/impl/res/values-nl/strings.xml index 63f1ebd5d88ebe355fe7032797916beef5b9f816..e3c919e1ac9240e83352b2aa82b593eb9b948576 100644 --- a/java/com/android/incallui/incall/impl/res/values-nl/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-nl/strings.xml @@ -1,18 +1,33 @@ + + "Videogespr." "In wacht" "Oproep toev." "Dempen" + "Oproep beëindigen" "Toetsenblok" - "Luidspreker" ", is aan" ", is uit" "Samenvoegen" "Beheren" "Bellers beheren" "Wisselen" - "Geluid" "Notitie verzonden" diff --git a/java/com/android/incallui/incall/impl/res/values-no/strings.xml b/java/com/android/incallui/incall/impl/res/values-no/strings.xml index 75200869c6b1f1e0494425f95906a92d04ca2ef3..704384ea0b83d31bef9205b2197e4d7320a1d1ef 100644 --- a/java/com/android/incallui/incall/impl/res/values-no/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-no/strings.xml @@ -1,18 +1,33 @@ + + "Videosamtale" "Sett på vent" "Nytt anrop" "Ignorer" + "Avslutt samtalen" "Tastatur" - "Høyttaler" "er på" "er av" "Slå sammen" "Administrer" "Håndter innringere" "Bytt" - "Lyd" "Notatet er sendt" diff --git a/java/com/android/incallui/incall/impl/res/values-pa/strings.xml b/java/com/android/incallui/incall/impl/res/values-pa/strings.xml index 10a2865a653643c8566a8b6d74088c43bb842337..d7e74ed830f595d35bcd0e9fc6d08dbb42a3d0d3 100644 --- a/java/com/android/incallui/incall/impl/res/values-pa/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-pa/strings.xml @@ -1,18 +1,33 @@ + + "ਵੀਡੀਓ ਕਾਲ" "ਰੋਕ ਕੇ ਰੱਖੋ" "ਕਾਲ ਸ਼ਾਮਲ ਕਰੋ" "ਮਿਊਟ ਕਰੋ" + "ਕਾਲ ਖਤਮ ਕਰੋ" "ਕੀਪੈਡ" - "ਸਪੀਕਰ" ", ਚਾਲੂ ਹੈ" ", ਬੰਦ ਹੈ" "ਰਲਗੱਡ ਕਰੋ" "ਪ੍ਰਬੰਧਨ ਕਰੋ" "ਕਾਲਰਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰੋ" "ਅਦਲੋ-ਬਦਲੋ" - "ਧੁਨੀ" "ਨੋਟ-ਕਥਨ ਭੇਜਿਆ ਗਿਆ" diff --git a/java/com/android/incallui/incall/impl/res/values-pl/strings.xml b/java/com/android/incallui/incall/impl/res/values-pl/strings.xml index 4bf6a5833f90b4a8e7c8fa42ff4959904b39259d..9971d75532dbfeb5b3a909f11dc4dec446137cac 100644 --- a/java/com/android/incallui/incall/impl/res/values-pl/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-pl/strings.xml @@ -1,18 +1,33 @@ + + "Rozmowa wid." "Wstrzymaj" "Dodaj poł." "Wycisz" + "Zakończ" "Klawiatura" - "Głośnik" "– włączony" "– wyłączony" "Scal" "Zarządzaj" "Zarządzaj rozmówcami" "Przełącz" - "Dźwięk" "Notatka wysłana" diff --git a/java/com/android/incallui/incall/impl/res/values-pt-rBR/strings.xml b/java/com/android/incallui/incall/impl/res/values-pt-rBR/strings.xml index 7ca6b6b6be84b2ab47682597d6098e42108922c5..538c20c0be0de912453f7e9429463fd94046b121 100644 --- a/java/com/android/incallui/incall/impl/res/values-pt-rBR/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-pt-rBR/strings.xml @@ -1,18 +1,33 @@ + + "Videocham." "Em espera" "Adic chamada" "Desativar" + "Encerrar" "Teclado" - "Alto-falante" "ativado" "desativado" "Mesclar" "Gerenciar" "Gerenciar os autores das chamadas" "Trocar" - "Som" "Nota enviada" diff --git a/java/com/android/incallui/incall/impl/res/values-pt-rPT/strings.xml b/java/com/android/incallui/incall/impl/res/values-pt-rPT/strings.xml index 750e57e3753b69c8f7ca754722fd971f1ffaaa36..376ee84433ff09807850196cc5c30103f53916e1 100644 --- a/java/com/android/incallui/incall/impl/res/values-pt-rPT/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-pt-rPT/strings.xml @@ -1,18 +1,33 @@ + + "Videochamada" "Em espera" "Adic. cham." "Desativ. som" + "Term. cham." "Teclado" - "Altifalante" ", ativado" ", desativado" "Unir" "Gerir" "Gerir autores das chamadas" "Alternar" - "Som" "Nota enviada" diff --git a/java/com/android/incallui/incall/impl/res/values-pt/strings.xml b/java/com/android/incallui/incall/impl/res/values-pt/strings.xml index 7ca6b6b6be84b2ab47682597d6098e42108922c5..538c20c0be0de912453f7e9429463fd94046b121 100644 --- a/java/com/android/incallui/incall/impl/res/values-pt/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-pt/strings.xml @@ -1,18 +1,33 @@ + + "Videocham." "Em espera" "Adic chamada" "Desativar" + "Encerrar" "Teclado" - "Alto-falante" "ativado" "desativado" "Mesclar" "Gerenciar" "Gerenciar os autores das chamadas" "Trocar" - "Som" "Nota enviada" diff --git a/java/com/android/incallui/incall/impl/res/values-ro/strings.xml b/java/com/android/incallui/incall/impl/res/values-ro/strings.xml index 1f93da9be0449f28044208eeeedaf10f1f543945..81dcdf3cce100052d7ab5d9cd74ad04f5099f546 100644 --- a/java/com/android/incallui/incall/impl/res/values-ro/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-ro/strings.xml @@ -1,18 +1,33 @@ + + "Apel video" "În așteptare" "Încă un apel" "Dezactivați" + "Încheiați" "Tastatură" - "Difuzor" ", e activat" ", dezactivat" "Îmbinați" "Gestionați" "Gestionați apelanții" "Schimbați" - "Sunet" "Nota a fost trimisă" diff --git a/java/com/android/incallui/incall/impl/res/values-ru/strings.xml b/java/com/android/incallui/incall/impl/res/values-ru/strings.xml index 89192c3aead4e4fc740022cacd4c9c74d64e645d..274f8fff7faca06fbb609d57b368f92e81c2f699 100644 --- a/java/com/android/incallui/incall/impl/res/values-ru/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-ru/strings.xml @@ -1,18 +1,33 @@ + + "Видеовызов" "Удерживать" "Добавить вызов" "Выкл. звук" + "Завершить вызов" "Клавиатура" - "Динамик" ", включен" ", отключен" "Объединить" "Управление" "Управление абонентами" "Переключить" - "Звук" "Сообщение отправлено" diff --git a/java/com/android/incallui/incall/impl/res/values-si/strings.xml b/java/com/android/incallui/incall/impl/res/values-si/strings.xml index 209bb77b1ad933b66f437a94d36d900a56f15626..a600c2193ef3381ff306109ce31afd7c1ac9a64c 100644 --- a/java/com/android/incallui/incall/impl/res/values-si/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-si/strings.xml @@ -1,18 +1,33 @@ + + "වීඩියෝ ඇමතුම" "රඳවා ගන්න" "ඇමතුම එක් ක." "නිහඬ කරන්න" + "ඇමතුම නිම ක." "යතුරු පුවරුව" - "ස්පීකරය" ", සක්‍රියයි" ", අක්‍රියයි" "ඒකාබද්ධ කර." "කළමනාකරණය ක." "අමතන්නන් කළමනාකරණය කරන්න" "මාරු කරන්න" - "හඬ" "සටහන යවන ලදී" diff --git a/java/com/android/incallui/incall/impl/res/values-sk/strings.xml b/java/com/android/incallui/incall/impl/res/values-sk/strings.xml index 4e06aee32b5efe5cbead245fb6757dd67313cd0f..d74d19e2214f601b075caa5311e2cf9dae7fcb33 100644 --- a/java/com/android/incallui/incall/impl/res/values-sk/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-sk/strings.xml @@ -1,18 +1,33 @@ + + "Videohovor" "Podržať" "Pridať hovor" "Vypnúť zvuk" + "Ukonč. hovor" "Klávesnica" - "Reproduktor" ", je zapnutý" ", je vypnutý" "Zlúčiť" "Spravovať" "Spravovať volajúcich" "Zameniť" - "Zvuk" "Poznámka bola odoslaná" diff --git a/java/com/android/incallui/incall/impl/res/values-sl/strings.xml b/java/com/android/incallui/incall/impl/res/values-sl/strings.xml index 7cdb6c88c8c02f76f6cd9b8c25dabe3911ee3e75..782ce444bf7af6a6e0f4537b263f8930df3fc513 100644 --- a/java/com/android/incallui/incall/impl/res/values-sl/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-sl/strings.xml @@ -1,18 +1,33 @@ + + "Videoklic" "Zadrži" "Dodaj klic" "Izklopi zvok" + "Končaj klic" "Tipkovnica" - "Zvočnik" ", vklopljen" ", izklopljen" "Združi" "Upravljanje" "Upravljanje klicateljev" "Zamenjaj" - "Zvok" "Opomba je poslana" diff --git a/java/com/android/incallui/incall/impl/res/values-sq/strings.xml b/java/com/android/incallui/incall/impl/res/values-sq/strings.xml index 9ba18b5f48a72ba0447ae0e8713a3791a6a6c3c1..a0fca3668e43cc4db32b0763100a792c4683d58b 100644 --- a/java/com/android/incallui/incall/impl/res/values-sq/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-sq/strings.xml @@ -1,18 +1,33 @@ + + "Video tel." "Në pritje" "Shto telef." "Hiqi zërin" + "Mbyll tel." "Blloku i tasteve" - "Altoparlant" ", është aktiv" ", është joaktiv" "Shkri" "Menaxho" "Menaxho telefonuesit" "Shkëmbe" - "Tingulli" "Shënimi u dërgua" diff --git a/java/com/android/incallui/incall/impl/res/values-sr/strings.xml b/java/com/android/incallui/incall/impl/res/values-sr/strings.xml index 56a968453c343af32c6e6de0c266fc0383e92bcf..ec704511b2b1da52008b19d7d6388ae5d859cd3e 100644 --- a/java/com/android/incallui/incall/impl/res/values-sr/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-sr/strings.xml @@ -1,18 +1,33 @@ + + "Видео позив" "На чекање" "Додај позив" "Искључи звук" + "Заврши позив" "Тастатура" - "Звучник" ", укључен" ", искључен" "Обједини" "Управљај" "Управљајте позиваоцима" "Замени" - "Звук" "Белешка је послата" diff --git a/java/com/android/incallui/incall/impl/res/values-sv/strings.xml b/java/com/android/incallui/incall/impl/res/values-sv/strings.xml index 27d83b74b0112b226b9acaea38eb1980f2bce16e..ded45221cceb608bda3f9aa0fbdd988347b66c0f 100644 --- a/java/com/android/incallui/incall/impl/res/values-sv/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-sv/strings.xml @@ -1,18 +1,33 @@ + + "Videosamtal" "Parkera" "Lägg t samt." "Ljud av" + "Avsl. samtal" "Knappsats" - "Högtalare" ", är på" ", är av" "Sammanfoga" "Hantera" "Hantera uppringare" "Växla" - "Ljud" "Anteckning skickad" diff --git a/java/com/android/incallui/incall/impl/res/values-sw/strings.xml b/java/com/android/incallui/incall/impl/res/values-sw/strings.xml index 136fe1713f53e3d5fb6b9a56709f00c31e678066..df634f4694cb4d2f0db9282e7f2cdbbbfadb9bb7 100644 --- a/java/com/android/incallui/incall/impl/res/values-sw/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-sw/strings.xml @@ -1,18 +1,33 @@ + + "Hangout ya video" "Shikilia" "Ongeza simu" "Zima maikrofoni" + "Kata simu" "Vitufe vya Simu" - "Spika" ", kimewashwa" ", kimezimwa" "Unganisha" "Dhibiti" "Dhibiti wanaopiga simu" "Badili" - "Sauti" "Dokezo limetumwa" diff --git a/java/com/android/incallui/incall/impl/res/values-ta/strings.xml b/java/com/android/incallui/incall/impl/res/values-ta/strings.xml index 342f8d0419a09f0f92e6b5f909d337d75997973f..5c94abff418ce64216570b3005d976cbb375bfcf 100644 --- a/java/com/android/incallui/incall/impl/res/values-ta/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-ta/strings.xml @@ -1,18 +1,33 @@ + + "வீடியோ கால்" "ஹோல்டில் வை" "அழைப்பை சேர்" "முடக்கு" + "அழைப்பை முடி" "விசைத்தளம்" - "ஸ்பீக்கர்" ", ஆன்" ", ஆஃப்" "இணை" "நிர்வகி" "அழைப்பாளர்களை நிர்வகிக்கும்" "மாற்று" - "ஒலி" "குறிப்பு அனுப்பப்பட்டது" diff --git a/java/com/android/incallui/incall/impl/res/values-te/strings.xml b/java/com/android/incallui/incall/impl/res/values-te/strings.xml index 004895647b3731136c5198a5da14efae38cac9f8..0cb3fb837ce3a2304f90e25b8fe88379fb6ca6c0 100644 --- a/java/com/android/incallui/incall/impl/res/values-te/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-te/strings.xml @@ -1,18 +1,33 @@ + + "వీడియో కాల్" "హోల్డ్ చేయి" "కాల్ జోడించు" "మ్యూట్ చేయి" + "కాల్ ముగించు" "కీప్యాడ్" - "స్పీకర్" ", ఆన్‌లో ఉంది" ", ఆఫ్‌లో ఉంది" "విలీనం చేయి" "నిర్వహించు" "కాలర్‌లను నిర్వహిస్తుంది" "మార్చు" - "శబ్దం" "గమనిక పంపబడింది" diff --git a/java/com/android/incallui/incall/impl/res/values-th/strings.xml b/java/com/android/incallui/incall/impl/res/values-th/strings.xml index a74028842399bef5fd7a05f00d1773d84684321e..0929cfc23f803ef5765d9fc9544ef3392e1c04e2 100644 --- a/java/com/android/incallui/incall/impl/res/values-th/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-th/strings.xml @@ -1,18 +1,33 @@ + + "แฮงเอาท์วิดีโอ" "พักสาย" "เพิ่มการโทร" "ปิดเสียง" + "วางสาย" "ปุ่มกด" - "ลำโพง" "เปิดอยู่" "ปิดอยู่" "รวม" "จัดการ" "จัดการผู้โทร" "สลับ" - "เสียง" "ส่งโน้ตแล้ว" diff --git a/java/com/android/incallui/incall/impl/res/values-tl/strings.xml b/java/com/android/incallui/incall/impl/res/values-tl/strings.xml index 46ff797313cce542a1d3b5ecf4f4a7e6391ba5c3..1ac2ef88cfcfe0fe664daf724b2cb90695dc0ed1 100644 --- a/java/com/android/incallui/incall/impl/res/values-tl/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-tl/strings.xml @@ -1,18 +1,33 @@ + + "Video call" "I-hold" "Mag-add: tawag" "I-mute" + "Tapusin ang tawag" "Keypad" - "Speaker" ",ay On" ", ay Off" "I-merge" "Pamahalaan" "Pamahalaan ang mga tumatawag" "Pagpalitin" - "Tunog" "Naipadala ang tala" diff --git a/java/com/android/incallui/incall/impl/res/values-tr/strings.xml b/java/com/android/incallui/incall/impl/res/values-tr/strings.xml index 89ca3302f69ae8f838e2708d37b644d2dbf2961d..241b69429199d2357c8870c81971bf28b0b0f5fb 100644 --- a/java/com/android/incallui/incall/impl/res/values-tr/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-tr/strings.xml @@ -1,18 +1,33 @@ + + "Görü. görüş." "Beklemeye al" "Çağrı ekle" "Sesi kapat" + "Çğryı sonldr" "Tuş takımı" - "Hoparlör" ", Açık" ", Kapalı" "Birleştir" "Yönet" "Arayanları yönetin" "Değiştir" - "Ses" "Not gönderildi" diff --git a/java/com/android/incallui/incall/impl/res/values-uk/strings.xml b/java/com/android/incallui/incall/impl/res/values-uk/strings.xml index 516bcb757df4a00ad92b6a708b97cd024cd53769..1821556fa1bed27643745041e9ccddf344602e42 100644 --- a/java/com/android/incallui/incall/impl/res/values-uk/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-uk/strings.xml @@ -1,18 +1,33 @@ + + "Відеодзвінок" "Утримувати" "Дод. виклик" "Без звуку" + "Завер. викл." "Клавіатура" - "Динамік" ", увімкнено" ", вимкнено" "Об’єднати" "Керувати" "Керувати абонентами" "Поміняти" - "Звук" "Нотатку надіслано" diff --git a/java/com/android/incallui/incall/impl/res/values-ur/strings.xml b/java/com/android/incallui/incall/impl/res/values-ur/strings.xml index 53ba19031c8ba91aeda54126bd643dfa5ccc33b2..fed0af6c249937c84c7ab2d52dae4685cd5071ee 100644 --- a/java/com/android/incallui/incall/impl/res/values-ur/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-ur/strings.xml @@ -1,18 +1,33 @@ + + "ویڈیو کال" "ہولڈ کریں" "کال شامل کریں" "خاموش کریں" + "کال ختم کریں" "کی پیڈ" - "اسپیکر" "، آن ہے" "، آف ہے" "ضم کریں" "نظم کریں" "کالرز کا نظم کریں" "تبادلہ کریں" - "آواز" "نوٹ بھیج دیا گیا" diff --git a/java/com/android/incallui/incall/impl/res/values-uz/strings.xml b/java/com/android/incallui/incall/impl/res/values-uz/strings.xml index 88184896509c299c417aecfa4ddb5c41ff6937b4..7d6af27b23ce09dd27f4847500aa74667737a594 100644 --- a/java/com/android/incallui/incall/impl/res/values-uz/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-uz/strings.xml @@ -1,18 +1,33 @@ + + "Video qo‘n." "Pauza" "Chaqiruv" "Ovozsiz" + "Tugatish" "Klaviatura" - "Karnay" ", yoniq" ", o‘chiq" - "Birlashtir." + "Birlashtirish" "Boshqarish" "Qo‘ng‘iroq qiluvchilarni boshqarish" "Almashish" - "Ovoz" "Qayd yuborildi" diff --git a/java/com/android/incallui/incall/impl/res/values-vi/strings.xml b/java/com/android/incallui/incall/impl/res/values-vi/strings.xml index 29f85efab1918d51ae502c5f30047b06a03d7ee2..42e320a7a9613fdd738c288535ac09c9eba9492d 100644 --- a/java/com/android/incallui/incall/impl/res/values-vi/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-vi/strings.xml @@ -1,18 +1,33 @@ + + "Gọi điện video" "Giữ" "Thêm cuộc gọi" "Tắt tiếng" + "Kết thúc cuộc gọi" "Bàn phím" - "Loa" ", đang bật" ", đang tắt" "Hợp nhất" "Quản lý" "Quản lý người gọi" "Hoán đổi" - "Âm thanh" "Đã gửi ghi chú" diff --git a/java/com/android/incallui/incall/impl/res/values-w260dp-h520dp/dimens.xml b/java/com/android/incallui/incall/impl/res/values-w260dp-h520dp/dimens.xml deleted file mode 100644 index e73eb934c5df1dc546929629572478ae1252bd15..0000000000000000000000000000000000000000 --- a/java/com/android/incallui/incall/impl/res/values-w260dp-h520dp/dimens.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - 16dp - 16dp - 64dp - 92dp - diff --git a/java/com/android/incallui/incall/impl/res/values-w260dp-h580dp/dimens.xml b/java/com/android/incallui/incall/impl/res/values-w260dp-h580dp/dimens.xml new file mode 100644 index 0000000000000000000000000000000000000000..834ea2f30223b18a720aaff3a2b9baf605760eaa --- /dev/null +++ b/java/com/android/incallui/incall/impl/res/values-w260dp-h580dp/dimens.xml @@ -0,0 +1,23 @@ + + + + + 16dp + 16dp + 64dp + 92dp + diff --git a/java/com/android/incallui/incall/impl/res/values-w300dp-h540dp/dimens.xml b/java/com/android/incallui/incall/impl/res/values-w300dp-h540dp/dimens.xml deleted file mode 100644 index 502ae72dc7533ba37df3b3541019ccde19235c09..0000000000000000000000000000000000000000 --- a/java/com/android/incallui/incall/impl/res/values-w300dp-h540dp/dimens.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - 32dp - 32dp - diff --git a/java/com/android/incallui/incall/impl/res/values-w300dp-h620dp/dimens.xml b/java/com/android/incallui/incall/impl/res/values-w300dp-h620dp/dimens.xml new file mode 100644 index 0000000000000000000000000000000000000000..c7ac35efcad3609d65908e2e797176508b4ecb6d --- /dev/null +++ b/java/com/android/incallui/incall/impl/res/values-w300dp-h620dp/dimens.xml @@ -0,0 +1,21 @@ + + + + + 32dp + 32dp + diff --git a/java/com/android/incallui/incall/impl/res/values-zh-rCN/strings.xml b/java/com/android/incallui/incall/impl/res/values-zh-rCN/strings.xml index ec64045692026a8e884d901c9a90f66346f59b19..f0cca9060a78a90bca2b712e13f50c22b0200614 100644 --- a/java/com/android/incallui/incall/impl/res/values-zh-rCN/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-zh-rCN/strings.xml @@ -1,18 +1,33 @@ + + "视频通话" "保持" "添加通话" "静音" + "结束通话" "拨号键盘" - "免提" ",已开启" ",已关闭" "合并" "管理" "管理来电者" "切换" - "声音" "已发送备注" diff --git a/java/com/android/incallui/incall/impl/res/values-zh-rHK/strings.xml b/java/com/android/incallui/incall/impl/res/values-zh-rHK/strings.xml index 63cd6d8c8452c291f92506f239cefca2d4189029..c38ef35a059dbc6c26c0381833f17bfdc977a7ef 100644 --- a/java/com/android/incallui/incall/impl/res/values-zh-rHK/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-zh-rHK/strings.xml @@ -1,18 +1,33 @@ + + "視像通話" "保留" "新增通話" "靜音" + "結束通話" "小鍵盤" - "揚聲器" ",已開啟" ",已關閉" "合併" "管理" "管理來電者" "切換" - "音效" "已傳送筆記" diff --git a/java/com/android/incallui/incall/impl/res/values-zh-rTW/strings.xml b/java/com/android/incallui/incall/impl/res/values-zh-rTW/strings.xml index be3103ba6d78d5eb3e98ffb7f18aa0116611dfb4..c04b8309e769be75931940e89d071e70a35349e2 100644 --- a/java/com/android/incallui/incall/impl/res/values-zh-rTW/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-zh-rTW/strings.xml @@ -1,18 +1,33 @@ + + "視訊通話" "保留" "新增通話" "靜音" + "結束通話" "撥號鍵盤" - "擴音模式" ",已開啟" ",已關閉" "合併" "管理" "管理來電者" "切換" - "音訊" "備註已送出" diff --git a/java/com/android/incallui/incall/impl/res/values-zu/strings.xml b/java/com/android/incallui/incall/impl/res/values-zu/strings.xml index df3f79484b0548d18578bb30ffe256075bb9fc70..a23a1d5e3460a301ff01d99cd31f04abc72c94bc 100644 --- a/java/com/android/incallui/incall/impl/res/values-zu/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-zu/strings.xml @@ -1,18 +1,33 @@ + + "Ikholi yevidiyo ye-Hangout" "Bamba" "Engeza ikholi" "Thulisa" + "Qeda ikholi" "Ikhiphedi" - "Isipikha" ", ivuliwe" ", ivaliwe" "Hlanganisa" "Phatha" "Phatha abashayi" "Shintsha" - "Umsindo" "Inothi lithunyelwe" diff --git a/java/com/android/incallui/incall/impl/res/values/strings.xml b/java/com/android/incallui/incall/impl/res/values/strings.xml index 054ca9687b8119233ec978b73917b18c24ffce33..2b30dfa5386b5900bd2ee91e871280cb53dffe22 100644 --- a/java/com/android/incallui/incall/impl/res/values/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values/strings.xml @@ -1,4 +1,19 @@ + Mute - - Keypad + End call - - Speaker + Keypad , is on @@ -45,12 +60,9 @@ [CHAR LIMIT=12] --> Swap - - Sound Note sent - \ No newline at end of file + diff --git a/java/com/android/incallui/incall/protocol/PrimaryCallState.java b/java/com/android/incallui/incall/protocol/PrimaryCallState.java index 2ae6a18e5b25d628a21aa73296159bd2f68f24a9..26dd3887aa6f3ecf23bf0339c07e54df405a5b7c 100644 --- a/java/com/android/incallui/incall/protocol/PrimaryCallState.java +++ b/java/com/android/incallui/incall/protocol/PrimaryCallState.java @@ -44,6 +44,7 @@ public class PrimaryCallState { public final boolean isVoiceMailNumber; public final boolean isRemotelyHeld; public final boolean isBusinessNumber; + public final boolean supportsCallOnHold; // TODO: Convert to autovalue. b/34502119 public static PrimaryCallState createEmptyPrimaryCallState() { @@ -67,7 +68,8 @@ public class PrimaryCallState { 0, false /* isVoiceMailNumber */, false /* isRemotelyHeld */, - false /* isBusinessNumber */); + false /* isBusinessNumber */, + true /* supportsCallOnHold */); } public PrimaryCallState( @@ -90,7 +92,8 @@ public class PrimaryCallState { long connectTimeMillis, boolean isVoiceMailNumber, boolean isRemotelyHeld, - boolean isBusinessNumber) { + boolean isBusinessNumber, + boolean supportsCallOnHold) { this.state = state; this.isVideoCall = isVideoCall; this.sessionModificationState = sessionModificationState; @@ -111,6 +114,7 @@ public class PrimaryCallState { this.isVoiceMailNumber = isVoiceMailNumber; this.isRemotelyHeld = isRemotelyHeld; this.isBusinessNumber = isBusinessNumber; + this.supportsCallOnHold = supportsCallOnHold; } @Override diff --git a/java/com/android/incallui/incall/protocol/PrimaryInfo.java b/java/com/android/incallui/incall/protocol/PrimaryInfo.java index c1709501ddd18cb7e6a3110bfdebd4dca2cbabac..761dd9a81412867eb8405eb63bcc0439671ac6e2 100644 --- a/java/com/android/incallui/incall/protocol/PrimaryInfo.java +++ b/java/com/android/incallui/incall/protocol/PrimaryInfo.java @@ -104,13 +104,14 @@ public class PrimaryInfo { return String.format( Locale.US, "PrimaryInfo, number: %s, name: %s, location: %s, label: %s, " - + "photo: %s, photoType: %d, isPhotoVisible: %b", + + "photo: %s, photoType: %d, isPhotoVisible: %b, MultimediaData: %s", LogUtil.sanitizePhoneNumber(number), LogUtil.sanitizePii(name), LogUtil.sanitizePii(location), label, photo, photoType, - isContactPhotoShown); + isContactPhotoShown, + multimediaData); } } diff --git a/java/com/android/incallui/res/drawable-hdpi/img_conference.png b/java/com/android/incallui/res/drawable-hdpi/img_conference.png deleted file mode 100644 index 3d9f683a58a696d3afa6a61031959036a2c15836..0000000000000000000000000000000000000000 Binary files a/java/com/android/incallui/res/drawable-hdpi/img_conference.png and /dev/null differ diff --git a/java/com/android/incallui/res/drawable-mdpi/img_conference.png b/java/com/android/incallui/res/drawable-mdpi/img_conference.png deleted file mode 100644 index 0694dbd556796c5c3455263db478100ae34b91d3..0000000000000000000000000000000000000000 Binary files a/java/com/android/incallui/res/drawable-mdpi/img_conference.png and /dev/null differ diff --git a/java/com/android/incallui/res/drawable-xhdpi/img_conference.png b/java/com/android/incallui/res/drawable-xhdpi/img_conference.png deleted file mode 100644 index b0dbcc2dc1501ca8d5b825d0b6baf198362b0747..0000000000000000000000000000000000000000 Binary files a/java/com/android/incallui/res/drawable-xhdpi/img_conference.png and /dev/null differ diff --git a/java/com/android/incallui/res/drawable-xxhdpi/img_conference.png b/java/com/android/incallui/res/drawable-xxhdpi/img_conference.png deleted file mode 100644 index a8dba5ed02efd651135c248d2dbcefc4962217ed..0000000000000000000000000000000000000000 Binary files a/java/com/android/incallui/res/drawable-xxhdpi/img_conference.png and /dev/null differ diff --git a/java/com/android/incallui/res/drawable-xxxhdpi/img_conference.png b/java/com/android/incallui/res/drawable-xxxhdpi/img_conference.png deleted file mode 100644 index eb42b5552108d1db6364c8c6bb1d4b68d9a255a0..0000000000000000000000000000000000000000 Binary files a/java/com/android/incallui/res/drawable-xxxhdpi/img_conference.png and /dev/null differ diff --git a/java/com/android/incallui/res/anim/on_going_call.xml b/java/com/android/incallui/res/drawable/on_going_call.xml similarity index 60% rename from java/com/android/incallui/res/anim/on_going_call.xml rename to java/com/android/incallui/res/drawable/on_going_call.xml index 3a2e2ba1a8da7bf1d59c626e4a0823eaa8252748..438ba82734b6271d875a7ccb6e863c924b24baf2 100644 --- a/java/com/android/incallui/res/anim/on_going_call.xml +++ b/java/com/android/incallui/res/drawable/on_going_call.xml @@ -1,4 +1,20 @@ + + - \ No newline at end of file + diff --git a/java/com/android/incallui/res/values-af/strings.xml b/java/com/android/incallui/res/values-af/strings.xml index 5dacaaa8da008e1efbd4767f9df24716093d9a6c..7d260c337164e9f0cc81148aeba791900cf99d47 100644 --- a/java/com/android/incallui/res/values-af/strings.xml +++ b/java/com/android/incallui/res/values-af/strings.xml @@ -33,8 +33,8 @@ "Gemiste oproep vanaf %s" "Oproep aan die gang" "Voortdurende werkoproep" - "Voortdurende Wi-Fi-oproep" - "Voortdurende Wi-Fi-werkoproep" + "Voortdurende Wi-Fi-oproep" + "Voortdurende Wi-Fi-werkoproep" "Hou aan" "Inkomende oproep" "Inkomende oproep met foto" @@ -55,8 +55,8 @@ "Belangrike inkomende oproep met foto, boodskap en ligging" "Belangrike inkomende oproep met aanhegsels" "Inkomende werkoproep" - "Inkomende Wi-Fi-oproep" - "Inkomende Wi-Fi-werkoproep" + "Inkomende Wi-Fi-oproep" + "Inkomende Wi-Fi-werkoproep" "Inkomende verdagte strooipos-oproep" "Inkomende videoversoek" "Geen diens nie" @@ -73,7 +73,7 @@ "Neem video-oproep" "Om \'n oproep te maak, skakel eers vliegtuigmodus af." "Nie geregistreer op netwerk nie." - "Sellulêre netwerk nie beskikbaar nie." + "Mobiele netwerk nie beskikbaar nie." "Voer \'n geldige nommer in om \'n oproep te maak." "Kan nie bel nie." "Begin MMI-volgorde…" @@ -134,8 +134,8 @@ "Beëindig oproep" "Konferensie-oproep" "Besig met oproep" - "Gaan voort met oproep deur sellulêre data te gebruik …" - "Kon nie na Wi-Fi-netwerk oorskakel nie" - "Video-oproep sal op sellulêre netwerk bly. Standaard datakoste kan dalk geld." + "Gaan voort met oproep deur mobiele data te gebruik ..." + "Kon nie na Wi-Fi-netwerk oorskakel nie" + "Video-oproep sal op mobiele netwerk bly. Standaard datakoste kan dalk geld." "Moenie dit weer wys nie" diff --git a/java/com/android/incallui/res/values-am/strings.xml b/java/com/android/incallui/res/values-am/strings.xml index 249447fee5e9164d6a14a2af5984fc3280ec9ea0..f09fd63e419dbac239ad30c745b55f6669353256 100644 --- a/java/com/android/incallui/res/values-am/strings.xml +++ b/java/com/android/incallui/res/values-am/strings.xml @@ -33,8 +33,8 @@ "ያልተመለሰ ጥሪ ከ%s" "እየተካሄደ ያለ ጥሪ" "በሂደት ላይ ያለ የሥራ ጥሪ" - "በሂደት ላይ ያለ የWi-Fi ጥሪ" - "በሂደት ላይ ያለ የWi-Fi የሥራ ጥሪ" + "በሂደት ላይ ያለ የWi-Fi ጥሪ" + "በሂደት ላይ ያለ የWi-Fi የሥራ ጥሪ" "ያዝናቆይ" "ገቢ ጥሪ" "ገቢ ጥሪ ከፎቶ ጋር" @@ -55,8 +55,8 @@ "አስፈላጊ ገቢ ጥሪ ከፎቶ፣ መልዕክት እና አካባቢ ጋር" "አስፈላጊ ገቢ ጥሪ ከአባሪ ጋር" "ገቢ የሥራ ጥሪ" - "ገቢ የWi-Fi ጥሪ" - "ገቢ የWi-Fi የሥራ ጥሪ" + "ገቢ የWi-Fi ጥሪ" + "ገቢ የWi-Fi የሥራ ጥሪ" "መጪ የተጠረጠረ የአይፈለጌ መልዕክት ጥሪ" "ገቢ የቪዲዮ ጥያቄ" "ምንም አገልግሎት የለም" @@ -73,7 +73,7 @@ "የቪዲዮ ጥሪ ውሰድ" "ለመደወል፣ መጀመሪያየአውሮፕላኑን ሁነታ አጥፋ።" "በአውታረ መረቡ ላይ አልተመዘገበም።" - "የተንቀሳቃሽ ስልክ አውታረ መረብ አይገኝም።" + "የተንቀሳቃሽ ስልክ አውታረ መረብ አይገኝም።" "አንድ ጥሪ ለማድረግ የሚሰራ ቁጥር ያስገቡ።" "መደወል አልተቻለም።" "የMMI sequence…" @@ -134,8 +134,8 @@ "ጥሪ ጨርስ" "የስብሰባ ጥሪ" "በጥሪ ላይ" - "ሴሉላር ውሂብ በመጠቀም ጥሪውን በመቀጠል ላይ…" - "ወደ Wi-Fi አውታረ መረብ መቀየር አልተቻለም።" - "የቪዲዮ ጥሪ በሴሉላር አውታረመረቡ ላይ ይቆያል። መደበኛ የውሂብ ክፍያዎች ተፈጻሚ ሊሆኑ ይችላሉ።" + "የተንቀሳቃሽ ስልክ ውሂብን በመጠቀም ጥሪውን በመቀጠል ላይ…" + "ወደ Wi-Fi አውታረ መረብ መቀየር አልተቻለም" + "የቪዲዮ ጥሪ በተንቀሳቃሽ ስልክ አውታረ መረብ ላይ ይቆያል። መደበኛ የውሂብ ክፍያዎች ተፈጻሚ ሊሆኑ ይችላሉ።" "ይህን በድጋሚ አታሳይ" diff --git a/java/com/android/incallui/res/values-ar/strings.xml b/java/com/android/incallui/res/values-ar/strings.xml index 7c3585c7aa630da55743011465782ff46c06a5ff..392829114663f3c025195f31a028b803f80bd5e1 100644 --- a/java/com/android/incallui/res/values-ar/strings.xml +++ b/java/com/android/incallui/res/values-ar/strings.xml @@ -33,8 +33,8 @@ "مكالمة فائتة من %s" "مكالمة حالية" "مكالمة عمل جارية" - "‏اتصال جارٍ عبر Wi-Fi" - "‏مكالمة عمل جارية عبر اتصال Wi-Fi" + "‏اتصال جارٍ عبر Wi-Fi" + "‏مكالمة عمل جارية عبر اتصال Wi-Fi" "معلقة" "مكالمة واردة" "مكالمة واردة مع صورة" @@ -55,8 +55,8 @@ "مكالمة واردة مهمة مع صورة ورسالة وموقع" "مكالمة واردة مهمة مع مرفقات" "مكالمة عمل واردة" - "‏اتصال وارد عبر Wi-Fi" - "‏مكالمة عمل واردة عبر اتصال Wi-Fi" + "‏اتصال وارد عبر Wi-Fi" + "‏مكالمة عمل واردة عبر اتصال Wi-Fi" "مكالمة واردة يشتبه في كونها غير مرغوب فيها" "طلب فيديو وارد" "لا خدمة" @@ -73,7 +73,7 @@ "الرد على مكالمة فيديو" "لإجراء مكالمة، أوقف تشغيل وضع الطائرة أولاً." "غير مسجل على الشبكة." - "شبكة الجوّال غير متاحة." + "شبكة الجوال غير متاحة." "لإجراء مكالمة، أدخل رقمًا صالحًا." "يتعذر الاتصال." "‏جارٍ بدء تسلسل MMI..." @@ -134,8 +134,8 @@ "إنهاء الاتصال" "مكالمة جماعية" "قيد الاتصال" - "جارٍ استكمال المكالمة باستخدام بيانات الجوّال…" - "‏تعذر التبديل إلى شبكة Wi-Fi" - "ستظل مكالمة الفيديو على شبكة الجوّال. قد يتم فرض رسوم على البيانات القياسية للشبكة." + "جارٍ استكمال المكالمة باستخدام بيانات الجوّال…" + "‏تعذر التبديل إلى شبكة Wi-Fi" + "ستظل مكالمة الفيديو جارية على شبكة الجوال. قد يتم تطبيق رسوم قياسية على استخدام البيانات." "عدم إظهار هذا مرة أخرى" diff --git a/java/com/android/incallui/res/values-az/strings.xml b/java/com/android/incallui/res/values-az/strings.xml index dc43014fbbe2590153d9e1d57179c159159b50cf..168dd07334c5b2cec06b3d4b228a96f72830a8ff 100644 --- a/java/com/android/incallui/res/values-az/strings.xml +++ b/java/com/android/incallui/res/values-az/strings.xml @@ -33,8 +33,8 @@ "%s tərəfindən zəng buraxılıb" "Davam edən zəng" "Davam edən iş çağrısı" - "Davam edən Wi-Fi zəngi" - "Davam edən Wi-Fi iş çağrısı" + "Davam edən Wi-Fi zəngi" + "Davam edən Wi-Fi iş zəngi" "Gözləmə mövqeyində" "Gələn zəng" "Foto ilə gələn zəng" @@ -55,8 +55,8 @@ "Foto, mesaj və məkan ilə gələn vacib zəng" "Qoşma ilə gələn vacib zəng" "Daxil olan iş çağrısı" - "Gələn Wi-Fi zəngi" - "Daxil olan Wi-Fi iş çağrısı" + "Gələn Wi-Fi zəngi" + "Gələn Wi-Fi iş zəngi" "Şübhəli spam zəngi" "Gələn video çağrı" "Xidmət yoxdur" @@ -73,7 +73,7 @@ "Video Zəngə cavab verin" "Zəng etmək üçün ilk olaraq Uçuş Rejimini söndürün." "Şəbəkədə qeydə alınmayıb." - "Mobil şəbəkə əlçatan deyil" + "Mobil şəbəkə əlçatımlı deyil." "Zəngi yerləşdirmək üçün düzgün nömrə daxil edin." "Zəng etmək mümkün deyil." "MMI başlanma ardıcıllığı…" @@ -134,8 +134,8 @@ "Zəngi sonlandırın" "Konfrans zəngi" "Çağrıda" - "Mobil data istifadə edərək zəng davam edir…" - "Wi-Fi şəbəkəsinə qoşulmaq olmadı" - "Video zəng mobil şəbəkə üzərində qalacaq. Standart data rüsumları tətbiq oluna bilər." + "Mobil data istifadə edərək zəngə davam edin…" + "Wi-Fi şəbəkəsinə qoşulmaq olmadı" + "Video zəng mobil şəbəkədə qalacaq. Standard data xərcləri tətbiq edilə bilər." "Bunu bi rdaha göstərməyin" diff --git a/java/com/android/incallui/res/values-b+sr+Latn/strings.xml b/java/com/android/incallui/res/values-b+sr+Latn/strings.xml index 3dddf653ff4fdee8996166c38f3c488dfdb1ffd9..de2ad8642fa8d11f6a96059d5a78db86276fb3fe 100644 --- a/java/com/android/incallui/res/values-b+sr+Latn/strings.xml +++ b/java/com/android/incallui/res/values-b+sr+Latn/strings.xml @@ -33,8 +33,8 @@ "Propušten poziv od: %s" "Aktuelni poziv" "Tekući poziv za Work" - "Tekući Wi-Fi poziv" - "Tekući poziv za Work preko Wi-Fi-ja" + "Wi‑Fi poziv u toku" + "Wi‑Fi poslovni poziv u toku" "Na čekanju" "Dolazni poziv" "Dolazni poziv sa slikom" @@ -55,8 +55,8 @@ "Važan dolazni poziv sa slikom, porukom i lokacijom" "Važan dolazni poziv sa prilozima" "Dolazni poziv za Work" - "Dolazni Wi-Fi poziv" - "Dolazni poziv za Work preko Wi-Fi-ja" + "Dolazni Wi‑Fi poziv" + "Dolazni Wi‑Fi poslovni poziv" "Sumnja na nepoželjan dolazni poziv" "Zahtev za dolazni video poziv" "Nema usluge" @@ -73,7 +73,7 @@ "Preuzmi video poziv" "Da biste uputili poziv, prvo isključite režim rada u avionu." "Nije registrovano na mreži." - "Mobilna mreža nije dostupna." + "Mobilna mreža nije dostupna." "Da biste uputili poziv, unesite važeći broj." "Poziv nije uspeo." "Pokretanje MMI sekvence" @@ -134,8 +134,8 @@ "Završite poziv" "Konferencijski poziv" "U pozivu" - "Poziv se nastavlja pomoću mobilnih podataka…" - "Prebacivanje na Wi-Fi mrežu nije uspelo" - "Video poziv će ostati na mobilnoj mreži. Mogu da važe standardne naknade za prenos podataka." + "Poziv se nastavlja pomoću mobilnih podataka…" + "Prebacivanje na Wi‑Fi mrežu nije uspelo" + "Video poziv će ostati na mobilnoj mreži. Važe standardne naknade za prenos podataka." "Ne prikazuj ovo ponovo" diff --git a/java/com/android/incallui/res/values-be/strings.xml b/java/com/android/incallui/res/values-be/strings.xml index 46b5d3941d5dc735d40ec1d25f9823504e364c96..274cac17faf614e8fe19fff7b1e5c7f3ebf25542 100644 --- a/java/com/android/incallui/res/values-be/strings.xml +++ b/java/com/android/incallui/res/values-be/strings.xml @@ -33,8 +33,8 @@ "Прапушчаны выклiк ад %s" "Бягучы выклік" "Бягучы выклік па працы" - "Бягучы выклік праз Wi-Fi" - "Бягучы выклік па працы праз Wi-Fi" + "Бягучы выклік праз Wi-Fi" + "Бягучы выклік па працы праз Wi-Fi" "У чаканні" "Уваходны выклік" "Уваходны выклік з фота" @@ -55,8 +55,8 @@ "Важны выклік з фота, паведамленнем і месцам" "Важны ўваходны выклік з далучэннямі" "Уваходны выклік па працы" - "Уваходны выклік праз Wi-Fi" - "Уваходны выклік па працы праз Wi-Fi" + "Уваходны выклік праз Wi-Fi" + "Уваходны выклік па працы праз Wi-Fi" "Уваходны выклiк ад абанента, якога падазраваюць у спаме" "Запыт уваходнага відэавыкліку" "Не абслугоўваецца" @@ -73,7 +73,7 @@ "Прыняць відэавыклік" "Каб зрабіць выклік, спачатку выключыце рэжым \"У самалёце\"." "Не зарэгістраваны ў сетцы." - "Мабільная сетка недаступная." + "Мабільная сетка недаступная." "Каб зрабіць выклік, увядзіце сапраўдны нумар." "Выклік немагчымы." "Пачатак паслядоўнасці MMI..." @@ -134,8 +134,8 @@ "Завяршыць выклік" "Канферэнц-выклік" "У выкліку" - "Працягваецца выклік з выкарыстаннем сотавай перадачы даных…" - "Немагчыма пераключыцца на сетку Wi-Fi" - "Відэавыклік застанецца ў мабільнай сетцы. Можа спаганяцца стандартная аплата за перадачу даных." + "Працягваецца выклік з выкарыстаннем мабільнай перадачы даных…" + "Немагчыма пераключыцца на сетку Wi-Fi" + "Відэавыклік застанецца ў мабільнай сетцы. Можа спаганяцца стандартная аплата за перадачу даных." "Больш не паказваць" diff --git a/java/com/android/incallui/res/values-bg/strings.xml b/java/com/android/incallui/res/values-bg/strings.xml index 84bffa02c85693c8f7acb1a97b8ad5347766dc01..b3c1f3fd74a59776ead363f84107726ed4539378 100644 --- a/java/com/android/incallui/res/values-bg/strings.xml +++ b/java/com/android/incallui/res/values-bg/strings.xml @@ -33,8 +33,8 @@ "Пропуснато обаждане от %s" "Текущо обаждане" "Текущо служебно обаждане" - "Текущо обаждане през Wi-Fi" - "Текущо служебно обаждане през Wi-Fi" + "Текущо обаждане през Wi-Fi" + "Текущо служебно обаждане през Wi-Fi" "Задържане на обаждането" "Вх. обаждане" "Входящо обаждане със снимка" @@ -55,8 +55,8 @@ "Важно обаждане с местоположение, снимка, съобщение" "Важно входящо обаждане с прикачени файлове" "Входящо служебно обаждане" - "Входящо обаждане през Wi-Fi" - "Входящо служебно обаждане през Wi-Fi" + "Входящо обаждане през Wi-Fi" + "Входящо служебно обаждане през Wi-Fi" "Входящо обаждане – възможен спам" "Входяща заявка за видеовръзка" "Няма покритие" @@ -73,7 +73,7 @@ "Приемане на видеообаждането" "Първо изключете самолетния режим, за да може да осъществите обаждане." "Няма регистрация в мрежата." - "Няма достъп до клетъчната мрежа." + "Няма мобилна мрежа." "За да извършите обаждане, въведете валиден номер." "Не може да се извърши обаждане." "Стартира се последователността MMI…" @@ -134,8 +134,8 @@ "Край на обаждането" "Конферентно обаждане" "В разговор" - "Обаждането продължава през мобилната връзка за данни…" - "Превключването към Wi-Fi мрежа не бе възможно" - "Видеообаждането ще остане в мобилната мрежа. Важат стандартните тарифи за данни." + "Обаждането продължава през мобилната връзка за данни…" + "Превключването към Wi-Fi мрежа не бе възможно" + "Видеообаждането ще остане в мобилната мрежа. Важат стандартните тарифи за данни." "Това да не се показва отново" diff --git a/java/com/android/incallui/res/values-bn/strings.xml b/java/com/android/incallui/res/values-bn/strings.xml index fc93830020e1adb42b2faaf32c5afbbcd68228dd..a964f81b1f9a3da68855a0f6a7ad24c3265bb418 100644 --- a/java/com/android/incallui/res/values-bn/strings.xml +++ b/java/com/android/incallui/res/values-bn/strings.xml @@ -33,8 +33,8 @@ "%s এর থেকে মিসড কল" "চালু থাকা কল" "চলমান কাজের কল" - "চলমান ওয়াই-ফাই কল" - "চলমান ওয়াই-ফাই কাজের কল" + "চালু থাকা ওয়াই-ফাই কল" + "চালু থাকা ওয়াই-ফাই কাজের কল" "সাময়িকভাবে স্থগিত রাখা হয়েছে" "ইনকামিং কল" "ফটো সহ ইনকামিং কল" @@ -55,8 +55,8 @@ "ফটো, বার্তা এবং অবস্থান সহ গুরুত্বপূর্ণ ইনকামিং কল" "সংযুক্তিগুলি সহ গুরুত্বপূর্ণ ইনকামিং কল" "আগত কাজের কল" - "আগত ওয়াই-ফাই কল" - "আগত ওয়াই-ফাই কাজের কল" + "আগত ওয়াই-ফাই কল" + "আগত ওয়াই-ফাই কাজের কল" "আগত সন্দেহভাজন স্প্যাম কল" "আগত ভিডিও অনুরোধ" "কোনো পরিষেবা নেই" @@ -73,7 +73,7 @@ "ভিডিও কলটি নিন" "একটি কল করতে, প্রথমে বিমান মোড বন্ধ করুন৷" "নেটওয়ার্কে নিবন্ধিত নয়৷" - "সেলুলার নেটওয়ার্ক উপলব্ধ নয়।" + "মোবাইল নেটওয়ার্ক উপলব্ধ নয়৷" "কোনো কল স্থাপন করতে, একটি বৈধ নম্বর লিখুন৷" "কল করা যাবে না৷" "MMI ক্রম চালু হচ্ছে…" @@ -134,8 +134,8 @@ "কল কেটে দিন" "কনফারেন্স কল" "কলে থাকাকালীন" - "সেলুলার ডেটা ব্যবহার করে কল করা চালিয়ে যান…" - "Wi-Fi নেটওয়ার্কে পাল্টানো গেল না" - "ভিডিও কল সেলুলার নেটওয়ার্কেই থাকবে৷ স্ট্যান্ডার্ড চার্জ প্রযোজ্য হতে পারে৷" + "মোবাইল ডেটা ব্যবহার করে কল করা চালিয়ে যান…" + "ওয়াই-ফাই নেটওয়ার্কে পাল্টানো গেল না" + "ভিডিও কল মোবাইল নেটওয়ার্কেই থাকবে৷ স্ট্যান্ডার্ড ডেটা চার্জ প্রযোজ্য হতে পারে৷" "এটি আমাকে আর দেখাবেন না" diff --git a/java/com/android/incallui/res/values-bs/strings.xml b/java/com/android/incallui/res/values-bs/strings.xml index c6950802f76665daa9678df44c49e3b47f2d307a..996eb980cb5c2354766c1b40a2a8595452d246a4 100644 --- a/java/com/android/incallui/res/values-bs/strings.xml +++ b/java/com/android/incallui/res/values-bs/strings.xml @@ -33,8 +33,8 @@ "Propušteni poziv od kontakta %s" "Poziv u toku" "Poslovni poziv u toku" - "Wi-Fi poziv u toku" - "Wi-Fi poslovni poziv u toku" + "Wi-Fi poziv je u toku" + "Wi-Fi poslovni poziv je u toku" "Na čekanju" "Dolazni poziv" "Dolazni poziv s fotografijom" @@ -55,8 +55,8 @@ "Važan poziv s fotografijom, porukom i lokacijom" "Važan dolazni poziv s prilozima" "Dolazni poslovni poziv" - "Dolazni Wi-Fi poziv" - "Dolazni Wi-Fi poslovni poziv" + "Dolazni Wi-Fi poziv" + "Dolazni Wi-Fi poslovni poziv" "Mogući neželjeni dolazni poziv" "Zahtjev za dolazni videopoziv" "Nema mreže" @@ -73,7 +73,7 @@ "Primi videopoziv" "Da uputite poziv, isključite Način rada u avionu." "Nije registrirano na mreži." - "Mobilna mreža nije dostupna." + "Mobilna mreža nije dostupna." "Da uputite poziv, upišite važeći broj." "Nije moguće pozvati." "Pokretanje MMI sekvence u toku…" @@ -134,8 +134,8 @@ "Prekini poziv" "Konferencijski poziv" "Poziv u toku" - "Poziv se nastavlja pomoću mobilnih podataka…" - "Prebacivanje na Wi-Fi mrežu nije moguće" - "Videopoziv će ostati na mobilnoj mreži. Mogu nastati standardni troškovi prijenosa podataka." + "Nastavak poziva prijenosom mobilnih podataka…" + "Prebacivanje na Wi-Fi mrežu nije moguće" + "Videopoziv će ostati na mobilnoj mreži. Mogu nastati standardni troškovi prijenosa podataka." "Ne prikazuj ponovo" diff --git a/java/com/android/incallui/res/values-ca/strings.xml b/java/com/android/incallui/res/values-ca/strings.xml index 5148db5408cc2d38269c2b1bee5f11306cae1896..f4d56a2a1e0789b175a28d1ea45a4bdfdf6b4544 100644 --- a/java/com/android/incallui/res/values-ca/strings.xml +++ b/java/com/android/incallui/res/values-ca/strings.xml @@ -33,8 +33,8 @@ "Trucada perduda de %s" "Trucada en procés" "Trucada de feina en curs" - "Trucada Wi-Fi en curs" - "Trucada de feina per Wi-Fi en curs" + "Trucada per Wi-Fi en curs" + "Trucada de feina per Wi-Fi en curs" "En espera" "Trucada entrant" "Trucada entrant amb foto" @@ -55,8 +55,8 @@ "Trucada entrant important amb foto, missatge i ubicació" "Trucada entrant important amb fitxers adjunts" "Trucada de feina entrant" - "Trucada Wi-Fi entrant" - "Trucada de feina per Wi-Fi entrant" + "Trucada per Wi-Fi entrant" + "Trucada de feina per Wi-Fi entrant" "Presumpta trucada brossa entrant" "Sol·licitud de vídeo entrant" "Sense servei" @@ -73,7 +73,7 @@ "Accepta la videotrucada" "Per fer una trucada, primer apagueu el mode d\'avió." "No registrat a la xarxa." - "La xarxa mòbil no està disponible." + "La xarxa mòbil no està disponible." "Per realitzar una trucada, introdueix un número vàlid." "No es pot trucar." "S\'està iniciant la seqüència MMI..." @@ -125,7 +125,7 @@ "Segons les nostres sospites, l\'autor de la trucada és un emissor de contingut brossa. Si ens equivoquem, toca NO ÉS BROSSA per informar-nos-en." "Bloqueja i marca" "Afegeix un contacte" - "No és contingut brossa" + "No és una trucada brossa" "Bloqueja el número" "Afegeix als contactes" "Bloqueja i marca com a brossa" @@ -134,8 +134,8 @@ "Finalitza la trucada" "Conferència" "En una trucada" - "S\'està continuant la trucada mitjançant dades mòbils…" - "No s\'ha pogut canviar a la xarxa Wi-Fi" - "La videotrucada es mantindrà a la xarxa mòbil. És possible que s\'apliquin càrrecs de dades estàndard." + "S\'està continuant la trucada mitjançant dades mòbils…" + "No s\'ha pogut canviar a la xarxa Wi-Fi" + "La videotrucada continuarà a la xarxa mòbil. És possible que s\'hi apliquin càrrecs de dades estàndard." "No ho tornis a mostrar" diff --git a/java/com/android/incallui/res/values-cs/strings.xml b/java/com/android/incallui/res/values-cs/strings.xml index 9d69cfac752f43914c1d04ac5e73faf6d71c80b3..e604a5249b1c2b4c86233ae7f4b22463b0bf43e9 100644 --- a/java/com/android/incallui/res/values-cs/strings.xml +++ b/java/com/android/incallui/res/values-cs/strings.xml @@ -33,8 +33,8 @@ "Zmeškaný hovor od volajícího %s" "Probíhající hovor" "Probíhající pracovní hovor" - "Probíhající volání přes Wi-Fi" - "Probíhající pracovní hovor (Wi-Fi)" + "Probíhající hovor přes Wi-Fi" + "Probíhající pracovní hovor přes Wi-Fi" "Přidržený hovor" "Příchozí hovor" "Příchozí hovor s fotkou" @@ -55,8 +55,8 @@ "Důležitý přích. hovor s fotkou, zprávou a polohou" "Důležitý příchozí hovor s přílohami" "Příchozí pracovní hovor" - "Příchozí volání přes Wi-Fi" - "Příchozí pracovní hovor (Wi-Fi)" + "Příchozí hovor přes Wi-Fi" + "Příchozí pracovní hovor přes Wi-Fi" "U příchozího hovoru máme podezření, že se jedná o spam" "Příchozí žádost o videohovor" "Žádný signál" @@ -73,7 +73,7 @@ "Převést videohovor sem" "Chcete-li telefonovat, vypněte nejprve režim Letadlo." "Přihlášení k síti nebylo úspěšné." - "Mobilní síť je nedostupná." + "Mobilní síť je nedostupná." "Chcete-li uskutečnit hovor, zadejte platné telefonní číslo." "Hovor nelze uskutečnit." "Spouštění sekvence MMI..." @@ -134,8 +134,8 @@ "Ukončit hovor" "Konferenční hovor" "Probíhá hovor" - "Hovor pokračuje přes mobilní data…" - "Přepnutí na síť Wi-Fi se nezdařilo" - "Videohovor zůstane na mobilní síti. Za datový přenos mohou být účtovány standardní poplatky." + "Hovor pokračuje přes mobilní data…" + "Přepnutí na síť Wi-Fi se nezdařilo" + "Videohovor zůstane na mobilní síti. Za datový přenos mohou být účtovány standardní poplatky." "Tuto zprávu příště nezobrazovat" diff --git a/java/com/android/incallui/res/values-da/strings.xml b/java/com/android/incallui/res/values-da/strings.xml index 19de78382cb41fa223c2c28e9a2bf4beef40b10f..fbf7927a3796b4c0c4177d56126b96cb63600e0a 100644 --- a/java/com/android/incallui/res/values-da/strings.xml +++ b/java/com/android/incallui/res/values-da/strings.xml @@ -33,8 +33,8 @@ "Ubesvaret opkald fra %s" "Igangværende opkald" "Igangværende opkald i forbindelse med arbejde" - "Igangværende opkald via Wi-Fi" - "Igangværende Wi-Fi-opkald i forbindelse med arbejde" + "Igangværende Wi-Fi-opkald" + "Igangværende Wi-Fi-opkald i forbindelse med arbejde" "Ventende" "Indgående opkald" "Indgående opkald med billede" @@ -55,8 +55,8 @@ "Vigtigt opkald med billede, besked og placering" "Vigtigt indgående opkald med vedhæftede filer" "Indgående opkald i forbindelse med arbejde" - "Indgående opkald via Wi-Fi" - "Indgående Wi-Fi-opkald i forbindelse med arbejde" + "Indgående Wi-Fi-opkald" + "Indgående Wi-Fi-opkald i forbindelse med arbejde" "Indgående formodet spamopkald" "Indgående videoanmodning" "Ingen dækning" @@ -73,7 +73,7 @@ "Besvar videoopkald" "Slå Flytilstand fra først for at foretage et opkald." "Ikke registreret på netværk." - "Mobilnetværket er ikke tilgængeligt." + "Mobilnetværket er ikke tilgængeligt." "Indtast et gyldigt nummer for at foretage et opkald." "Kan ikke ringe op." "Starter MMI-sekvens ..." @@ -134,8 +134,8 @@ "Afslut opkald" "Telefonmøde" "Opkald i gang" - "Fortsætter opkaldet med mobildata…" - "Der kan ikke skiftes til Wi-Fi-netværk" - "Videoopkaldet bliver ved med at bruge mobilnetværket. Du skal muligvis betale et standardgebyr for data." + "Opkaldet fortsættes med mobildata…" + "Du kunne ikke skifte til Wi-Fi-netværk" + "Videoopkaldet bliver ved med at bruge mobilnetværket. Du skal muligvis betale et standardgebyr for data." "Vis ikke dette igen" diff --git a/java/com/android/incallui/res/values-de/strings.xml b/java/com/android/incallui/res/values-de/strings.xml index a5f96027b0161900478dbbbbd233e479785cc50e..0dce3452a6d9758c89854aad9523a6cd27ce604a 100644 --- a/java/com/android/incallui/res/values-de/strings.xml +++ b/java/com/android/incallui/res/values-de/strings.xml @@ -33,8 +33,8 @@ "Verpasster Anruf von %s" "Aktueller Anruf" "Aktueller geschäftlicher Anruf" - "Aktiver WLAN-Anruf" - "Aktueller geschäftlicher WLAN-Anruf" + "Aktiver WLAN-Anruf" + "Aktiver geschäftlicher WLAN-Anruf" "Gehaltener Anruf" "Eingehender Anruf" "Eingehender Anruf mit Foto" @@ -55,8 +55,8 @@ "Wichtiger eingehender Anruf mit Foto, Nachricht und Standort" "Wichtiger eingehender Anruf mit Anhängen" "Eingehender geschäftlicher Anruf" - "Eingehender WLAN-Anruf" - "Eingehender geschäftlicher WLAN-Anruf" + "Eingehender WLAN-Anruf" + "Eingehender geschäftlicher WLAN-Anruf" "Verdacht auf eingehenden Spam-Anruf" "Eingehende Videoanfrage" "kein Dienst" @@ -73,7 +73,7 @@ "Videoanruf übernehmen" "Deaktiviere zunächst den Flugmodus, um einen Anruf zu tätigen." "Nicht in Netzwerk registriert." - "Mobilfunknetz nicht verfügbar" + "Mobilfunknetz ist nicht verfügbar." "Gib eine gültige Nummer ein." "Anruf nicht möglich." "MMI-Sequenz wird gestartet..." @@ -134,8 +134,8 @@ "Anruf beenden" "Telefonkonferenz" "Anruf" - "Anruf wird über Mobildaten fortgesetzt…" - "Wechseln zu WLAN nicht möglich" - "Der Videoanruf erfolgt weiter über das Mobilfunknetz. Es können Standardgebühren für die Datenübertragung anfallen." + "Anruf wird über mobile Daten fortgesetzt…" + "Wechseln zu WLAN nicht möglich" + "Der Videoanruf erfolgt weiter über das Mobilfunknetz. Es können Standardgebühren für die Datenübertragung anfallen." "Meldung nicht mehr anzeigen" diff --git a/java/com/android/incallui/res/values-el/strings.xml b/java/com/android/incallui/res/values-el/strings.xml index 8ff6d2f5f6fbd814c34a5c5eb3f44f965b966e81..bc39e2ac998555789ca96b3cc78fa471f4bb7f73 100644 --- a/java/com/android/incallui/res/values-el/strings.xml +++ b/java/com/android/incallui/res/values-el/strings.xml @@ -33,8 +33,8 @@ "Αναπάντητη κλήση από %s" "Κλήση σε εξέλιξη" "Κλήση εργασίας σε εξέλιξη" - "Κλήση Wi-Fi σε εξέλιξη" - "Κλήση εργασίας μέσω Wi-Fi σε εξέλιξη" + "Κλήση Wi-Fi σε εξέλιξη" + "Κλήση εργασίας μέσω Wi-Fi σε εξέλιξη" "Σε αναμονή" "Εισερχόμενη κλήση" "Εισερχόμενη κλήση με φωτογραφία" @@ -55,8 +55,8 @@ "Σημαντική εισερχ. κλήση με φωτο, μήνυμα, τοποθεσία" "Σημαντική εισερχόμενη κλήση με συνημμένα" "Εισερχόμενη κλήση εργασίας" - "Εισερχόμενη κλήση μέσω Wi-Fi" - "Εισερχόμενη κλήση εργασίας μέσω Wi-Fi" + "Εισερχόμενη κλήση μέσω Wi-Fi" + "Εισερχόμενη κλήση εργασίας μέσω Wi-Fi" "Πιθανώς ανεπιθύμητη εισερχόμενη κλήση" "Αίτημα εισερχόμενου βίντεο" "Δίκτυο μη διαθέσιμο" @@ -73,7 +73,7 @@ "Λήψη βιντεοκλήσης" "Για να πραγματοποιήσετε μια κλήση, απενεργοποιήστε πρώτα τη λειτουργία πτήσης." "Δεν έχετε εγγραφεί στο δίκτυο." - "Το δίκτυο κινητής τηλεφωνίας δεν είναι διαθέσιμο." + "Το δίκτυο κινητής τηλεφωνίας δεν είναι διαθέσιμο." "Για να πραγματοποιήσετε μια κλήση, εισαγάγετε έναν έγκυρο αριθμό." "Δεν είναι δυνατή η κλήση." "Έναρξη ακολουθίας MMI..." @@ -134,8 +134,8 @@ "Τερματισμός κλήσης" "Κλήση συνδιάσκεψης" "Σε κλήση" - "Συνέχεια κλήσης με χρήση δεδομένων κινητής τηλεφωνίας…" - "Δεν ήταν δυνατή η εναλλαγή σε δίκτυο Wi-Fi" - "Η βιντεοκλήση θα παραμείνει σε δίκτυο δεδομένων κινητής τηλεφωνίας; Ενδέχεται να ισχύουν βασικές χρεώσεις δεδομένων." + "Συνέχιση κλήσης με χρήση δεδομένων κινητής τηλεφωνίας…" + "Δεν ήταν δυνατή η εναλλαγή σε δίκτυο Wi-Fi" + "Η βιντεοκλήση θα παραμείνει σε δίκτυο δεδομένων κινητής τηλεφωνίας; Ενδέχεται να ισχύουν βασικές χρεώσεις δεδομένων." "Να μην εμφανιστεί ξανά αυτό" diff --git a/java/com/android/incallui/res/values-en-rAU/strings.xml b/java/com/android/incallui/res/values-en-rAU/strings.xml index 5e0d20737f39719a9f1d219383c4afe11c8180d8..68509f0806d3a339f3424e78b912c8b8dc11b72b 100644 --- a/java/com/android/incallui/res/values-en-rAU/strings.xml +++ b/java/com/android/incallui/res/values-en-rAU/strings.xml @@ -33,8 +33,8 @@ "Missed call from %s" "On-going call" "Ongoing work call" - "Ongoing Wi-Fi call" - "Ongoing Wi-Fi work call" + "Ongoing Wi‑Fi call" + "Ongoing Wi‑Fi work call" "On hold" "Incoming call" "Incoming call with photo" @@ -55,15 +55,15 @@ "Important call with photo, message and location" "Important incoming call with attachments" "Incoming work call" - "Incoming Wi-Fi call" - "Incoming Wi-Fi work call" + "Incoming Wi‑Fi call" + "Incoming Wi‑Fi work call" "Incoming suspected spam call" "Incoming video request" "No service" "Selected network (%s) unavailable" "Answer" "Hang up" - "In-stream video" + "Video" "Voice" "Accept" "Decline" @@ -73,7 +73,7 @@ "Take video call" "To place a call, first turn off Aeroplane mode." "Not registered on network." - "Mobile network not available." + "Mobile network not available." "To place a call, enter a valid number." "Can\'t call." "Starting MMI sequence…" @@ -134,8 +134,8 @@ "End call" "Conference call" "On a call" - "Continuing call using mobile data…" - "Couldn\'t switch to Wi-Fi network" - "Video call will remain on mobile network. Standard data charges may apply." + "Continuing call using mobile data…" + "Couldn\'t switch to Wi‑Fi network" + "Video call will remain on the mobile network. Standard data charges may apply." "Do not show this again" diff --git a/java/com/android/incallui/res/values-en-rGB/strings.xml b/java/com/android/incallui/res/values-en-rGB/strings.xml index 5e0d20737f39719a9f1d219383c4afe11c8180d8..68509f0806d3a339f3424e78b912c8b8dc11b72b 100644 --- a/java/com/android/incallui/res/values-en-rGB/strings.xml +++ b/java/com/android/incallui/res/values-en-rGB/strings.xml @@ -33,8 +33,8 @@ "Missed call from %s" "On-going call" "Ongoing work call" - "Ongoing Wi-Fi call" - "Ongoing Wi-Fi work call" + "Ongoing Wi‑Fi call" + "Ongoing Wi‑Fi work call" "On hold" "Incoming call" "Incoming call with photo" @@ -55,15 +55,15 @@ "Important call with photo, message and location" "Important incoming call with attachments" "Incoming work call" - "Incoming Wi-Fi call" - "Incoming Wi-Fi work call" + "Incoming Wi‑Fi call" + "Incoming Wi‑Fi work call" "Incoming suspected spam call" "Incoming video request" "No service" "Selected network (%s) unavailable" "Answer" "Hang up" - "In-stream video" + "Video" "Voice" "Accept" "Decline" @@ -73,7 +73,7 @@ "Take video call" "To place a call, first turn off Aeroplane mode." "Not registered on network." - "Mobile network not available." + "Mobile network not available." "To place a call, enter a valid number." "Can\'t call." "Starting MMI sequence…" @@ -134,8 +134,8 @@ "End call" "Conference call" "On a call" - "Continuing call using mobile data…" - "Couldn\'t switch to Wi-Fi network" - "Video call will remain on mobile network. Standard data charges may apply." + "Continuing call using mobile data…" + "Couldn\'t switch to Wi‑Fi network" + "Video call will remain on the mobile network. Standard data charges may apply." "Do not show this again" diff --git a/java/com/android/incallui/res/values-en-rIN/strings.xml b/java/com/android/incallui/res/values-en-rIN/strings.xml index 5e0d20737f39719a9f1d219383c4afe11c8180d8..68509f0806d3a339f3424e78b912c8b8dc11b72b 100644 --- a/java/com/android/incallui/res/values-en-rIN/strings.xml +++ b/java/com/android/incallui/res/values-en-rIN/strings.xml @@ -33,8 +33,8 @@ "Missed call from %s" "On-going call" "Ongoing work call" - "Ongoing Wi-Fi call" - "Ongoing Wi-Fi work call" + "Ongoing Wi‑Fi call" + "Ongoing Wi‑Fi work call" "On hold" "Incoming call" "Incoming call with photo" @@ -55,15 +55,15 @@ "Important call with photo, message and location" "Important incoming call with attachments" "Incoming work call" - "Incoming Wi-Fi call" - "Incoming Wi-Fi work call" + "Incoming Wi‑Fi call" + "Incoming Wi‑Fi work call" "Incoming suspected spam call" "Incoming video request" "No service" "Selected network (%s) unavailable" "Answer" "Hang up" - "In-stream video" + "Video" "Voice" "Accept" "Decline" @@ -73,7 +73,7 @@ "Take video call" "To place a call, first turn off Aeroplane mode." "Not registered on network." - "Mobile network not available." + "Mobile network not available." "To place a call, enter a valid number." "Can\'t call." "Starting MMI sequence…" @@ -134,8 +134,8 @@ "End call" "Conference call" "On a call" - "Continuing call using mobile data…" - "Couldn\'t switch to Wi-Fi network" - "Video call will remain on mobile network. Standard data charges may apply." + "Continuing call using mobile data…" + "Couldn\'t switch to Wi‑Fi network" + "Video call will remain on the mobile network. Standard data charges may apply." "Do not show this again" diff --git a/java/com/android/incallui/res/values-es-rUS/strings.xml b/java/com/android/incallui/res/values-es-rUS/strings.xml index d0167118f64cdf9eb09cd07b69e72084eab0c9bf..b8584c765db4d037b23746cbc22b69918139c0d3 100644 --- a/java/com/android/incallui/res/values-es-rUS/strings.xml +++ b/java/com/android/incallui/res/values-es-rUS/strings.xml @@ -33,8 +33,8 @@ "Llamada perdida de %s" "Llamada en curso" "Llamada de trabajo en curso" - "Llamada por Wi-Fi en curso" - "Llamada de trabajo con Wi-Fi en curso" + "Llamada Wi-Fi en curso" + "Llamada de trabajo Wi-Fi en curso" "En espera" "Llamada entrante" "Llamada entrante con foto" @@ -55,8 +55,8 @@ "Llamada importante con foto, mensaje y ubicación" "Llamada entrante importante con archivos adjuntos" "Llamada de trabajo entrante" - "Llamada por Wi-Fi entrante" - "Llamada de trabajo con Wi-Fi entrante" + "Llamada Wi-Fi entrante" + "Llamada de trabajo Wi-Fi entrante" "Posible llamada entrante de spam" "Solicitud de videollamada entrante" "Sin servicio" @@ -73,7 +73,7 @@ "Atender videollamada" "Para realizar una llamada, primero debes desactivar el modo avión." "No registrado en la red." - "Red móvil no disponible" + "La red móvil no está disponible." "Para realizar una llamada, ingresa un número válido." "No se puede realizar la llamada." "Iniciar la secuencia de MMI" @@ -134,8 +134,8 @@ "Finalizar llamada" "Conferencia" "En llamada" - "Continuando la llamada con datos móviles…" - "No se pudo cambiar a la red Wi-Fi" - "La videollamada permanecerá en la red móvil. Es posible que se te cobren cargos estándar por el uso de datos." + "Continuando la llamada con datos móviles…" + "No se pudo cambiar a la red Wi-Fi" + "La videollamada permanecerá en la red móvil. Es posible que se te cobren cargos estándar por el uso de datos." "No volver a mostrar esto" diff --git a/java/com/android/incallui/res/values-es/strings.xml b/java/com/android/incallui/res/values-es/strings.xml index 472ea99cbedd615cba12019921429500f1fa6fe7..4dc2d725c57e496b4fae1d451e180ed88b98b93c 100644 --- a/java/com/android/incallui/res/values-es/strings.xml +++ b/java/com/android/incallui/res/values-es/strings.xml @@ -33,8 +33,8 @@ "Llamada perdida de %s" "Llamada en curso" "Llamada de trabajo en curso" - "Llamada Wi-Fi en curso" - "Llamada Wi-Fi de trabajo en curso" + "Llamada por Wi-Fi en curso" + "Llamada de trabajo por Wi-Fi en curso" "En espera" "Llamada entrante" "Llamada entrante con foto" @@ -55,8 +55,8 @@ "Llamada importante con foto, mensaje y ubicación" "Llamada entrante importante con archivos adjuntos" "Llamada de trabajo entrante" - "Llamada Wi-Fi entrante" - "Llamada Wi-Fi de trabajo entrante" + "Llamada por Wi-Fi entrante" + "Llamada de trabajo por Wi-Fi entrante" "Llamada entrante sospechosa de spam" "Solicitud de videollamada entrante" "Sin servicio" @@ -73,7 +73,7 @@ "Atender videollamada" "Para realizar una llamada, primero debes desactivar el modo avión." "No se ha podido conectar a la red" - "La red móvil no está disponible." + "La red móvil no está disponible." "Para realizar una llamada, introduce un número válido." "No se puede establecer la llamada." "Iniciando secuencia MMI..." @@ -134,8 +134,8 @@ "Finalizar llamada" "Conferencia telefónica" "En una llamada" - "Continuando la llamada con datos móviles…" - "No se ha podido cambiar a la red Wi-Fi" - "La videollamada seguirá mediante la red móvil. Es posible que se apliquen cargos por uso de datos." + "Continuando la llamada con los datos móviles…" + "No se ha podido cambiar a la red Wi-Fi" + "La videollamada seguirá a través de la red móvil. Es posible que se apliquen cargos por el uso de datos." "No volver a mostrar" diff --git a/java/com/android/incallui/res/values-et/strings.xml b/java/com/android/incallui/res/values-et/strings.xml index 9eaa65f427b059983daaecdb906ecf0df525710b..ec1b230c52338e6dffa3f1c68b6f3d4fad6e8ede 100644 --- a/java/com/android/incallui/res/values-et/strings.xml +++ b/java/com/android/incallui/res/values-et/strings.xml @@ -33,8 +33,8 @@ "Vastamata kõne helistajalt %s" "Käimasolev kõne" "Käimasolev töökõne" - "Pooleliolev WiFi-kõne" - "Käimasolev töökõne WiFi kaudu" + "Käimasolev WiFi-kõne" + "Käimasolev WiFi-töökõne" "Ootel" "Sissetulev kõne" "Sissetulev kõne koos fotoga" @@ -55,8 +55,8 @@ "Tähtis sisset. kõne koos foto, sõnumi ja asukohaga" "Tähtis sissetulev kõne koos manustega" "Sissetulev töökõne" - "Sissetulev WiFi-kõne" - "Sissetulev töökõne WiFi kaudu" + "Sissetulev WiFi-kõne" + "Sissetulev WiFi-töökõne" "Arvatav sissetulev rämpskõne" "Sissetulev videotaotlus" "Teenus puudub" @@ -73,7 +73,7 @@ "Alusta videokõnet" "Helistamiseks lülitage lennurežiim välja." "Ei ole võrku registreeritud." - "Mobiilsidevõrk pole saadaval." + "Mobiilsidevõrk pole saadaval." "Helistamiseks sisestage kehtiv number." "Ei saa helistada." "MMI-jada alustamine ..." @@ -134,8 +134,8 @@ "Kõne lõpetamine" "Konverentskõne" "Pooleliolev kõne" - "Kõne jätkatakse mobiilse andmeside kaudu …" - "Ei saanud WiFi-võrgule lülitada" - "Videokõne jääb mobiilsidevõrku. Rakenduda võivad tavapärased andmetasud." + "Kõnet jätkatakse mobiilse andmeside kaudu …" + "WiFi-võrgule ei saanud lülituda" + "Videokõne jääb mobiilsidevõrku. Rakenduda võivad tavapärased andmesidetasud." "Ära seda enam näita" diff --git a/java/com/android/incallui/res/values-eu/strings.xml b/java/com/android/incallui/res/values-eu/strings.xml index 4db9e10fee7325871feb4a1ac4980a1b1522d30a..c8fe005afcf401c91148238593cb7887d4bc5564 100644 --- a/java/com/android/incallui/res/values-eu/strings.xml +++ b/java/com/android/incallui/res/values-eu/strings.xml @@ -33,8 +33,8 @@ "Deitzaile honen dei bat galdu duzu: %s" "Abian den deia" "Laneko dei bat abian da" - "Wi-Fi deia abian" - "Wi-Fi bidezko laneko dei bat abian da" + "Wi-Fi bidezko deia" + "Wi-Fi bidezko laneko deia" "Zain" "Sarrerako deia" "Jasotako deia, argazkia duena" @@ -55,8 +55,8 @@ "Jasotako dei garrant., arg., mez. eta kok. dituena" "Jasotako dei garrantzitsua, eranskinak dituena" "Laneko dei bat jaso da" - "Sarrerako Wi-Fi deia" - "Wi-Fi bidezko laneko dei bat jaso da" + "Jasotako Wi-Fi bidezko deia" + "Jasotako Wi-Fi bidezko laneko deia" "Ustezko spam-deia jaso duzu" "Sarrerako bideo-eskaera" "Ez dago zerbitzurik" @@ -73,7 +73,7 @@ "Erantzun bideo-deiari" "Dei bat egiteko, Hegaldi modua desaktibatu behar duzu." "Ez dago sarean erregistratuta." - "Sare mugikorra ez dago erabilgarri." + "Sare mugikorra ez dago erabilgarri." "Deitzeko, idatzi balio duen zenbaki bat." "Ezin da deitu." "MMI sekuentzia hasten…" @@ -134,8 +134,8 @@ "Amaitu deia" "Konferentzia-deia" "Deia abian da" - "Datu-konexioren bidez jarraitzen ari da deia egiten…" - "Ezin izan da aldatu Wi-Fi sarera" - "Datu mugikorren bidez egiten jarraituko da bideo-deia. Baliteke datuak erabiltzearen ondorioz ohiko kostuak kobratzea." + "Datu-konexioaren bidez egiten jarraituko da deia…" + "Ezin izan da aldatu Wi-Fi sarera" + "Datu-konexioaren bidez egiten jarraituko da bideo-deia. Baliteke datuak erabiltzearen ondorioz ohiko kostuak kobratzea." "Ez erakutsi berriro" diff --git a/java/com/android/incallui/res/values-fa/strings.xml b/java/com/android/incallui/res/values-fa/strings.xml index f816bd0638c6522668ef7b7083d88dbf2a472caa..a36d164bb525b2736576ee3abec051d72cc11422 100644 --- a/java/com/android/incallui/res/values-fa/strings.xml +++ b/java/com/android/incallui/res/values-fa/strings.xml @@ -33,8 +33,8 @@ "تماس بی‌پاسخ از %s" "تماس جاری" "تماس کاری خروجی" - "‏تماس از طریق Wi-Fi در حال انجام است" - "‏تماس کاری Wi-Fi خروجی" + "‏تماس Wi-Fi درحال انجام" + "‏تماس کاری Wi-Fi درحال انجام" "در انتظار" "تماس ورودی" "تماس ورودی به همراه عکس" @@ -55,8 +55,8 @@ "تماس ورودی مهم به همراه عکس، پیام و مکان" "تماس ورودی مهم به همراه پیوست" "تماس کاری ورودی" - "‏تماس Wi-Fi ورودی" - "‏تماس کاری Wi-Fi ورودی" + "‏تماس Wi-Fi ورودی" + "‏تماس کاری Wi-Fi ورودی" "تماس هرزنامه احتمالی ورودی" "درخواست تماس ویدئویی ورودی" "بدون سرویس" @@ -73,7 +73,7 @@ "انتقال تماس ویدئویی" "برای برقراری یک تماس، ابتدا حالت هواپیما را خاموش کنید." "در شبکه ثبت نشده است." - "شبکه تلفن همراه در دسترس نیست." + "شبکه تلفن همراه دردسترس نیست." "برای برقراری تماس، یک شماره معتبر وارد کنید." "نمی‌توانید تماس بگیرید." "‏شروع ترتیب MMI..." @@ -134,8 +134,8 @@ "پایان تماس" "تماس کنفرانسی" "در تماس" - "ادامه تماس با استفاده از داده شبکه تلفن همراه..." - "‏به شبکه Wi-Fi جابه‌جا نشد" - "تماس ویدئویی همچنان از شبکه تلفن همراه استفاده می‌کند. هزینه‌های داده استاندارد اعمال می‌شود." + "ادامه تماس با استفاده از داده شبکه همراه…" + "‏جابجایی به شبکه Wi-Fi انجام نشد" + "تماس ویدیویی همچنان ازطریق شبکه تلفن همراه انجام می‌شود. ممکن است هزینه‌های استاندارد داده اعمال شود." "دوباره نشان داده نشود" diff --git a/java/com/android/incallui/res/values-fi/strings.xml b/java/com/android/incallui/res/values-fi/strings.xml index 995e7a32827c042169960d01d47496592512b29e..f13ff26a5f43808c2d0e6d7a9b342cf25e98987e 100644 --- a/java/com/android/incallui/res/values-fi/strings.xml +++ b/java/com/android/incallui/res/values-fi/strings.xml @@ -33,8 +33,8 @@ "Vastaamaton puhelu: %s" "Käynnissä oleva puhelu" "Käynnissä oleva työpuhelu" - "Käynnissä oleva Wi-Fi-puhelu" - "Käynnissä oleva Wi-Fi-työpuhelu" + "Käynnissä oleva Wi-Fi-puhelu" + "Käynnissä oleva Wi-Fi-työpuhelu" "Pidossa" "Saapuva puhelu" "Kuvan sisältävä saapuva puhelu" @@ -55,8 +55,8 @@ "Tärkeä liitteitä sisältävä saapuva puhelu" "Tärkeä liitteitä sisältävä saapuva puhelu" "Saapuva työpuhelu" - "Saapuva Wi-Fi-puhelu" - "Saapuva Wi-Fi-työpuhelu" + "Saapuva Wi-Fi-puhelu" + "Saapuva Wi-Fi-työpuhelu" "Tämä puhelu saattaa olla häirikköpuhelu." "Saapuva videopyyntö" "Katvealueella" @@ -73,7 +73,7 @@ "Vastaa videopuheluun" "Poista lentokonetila käytöstä ennen puhelun soittamista." "Ei rekisteröity verkkoon." - "Matkapuhelinverkko ei ole käytettävissä." + "Mobiilidataverkko ei ole käytettävissä." "Soita antamalla kelvollinen numero." "Puhelua ei voi soittaa." "Aloitetaan MMI-koodisekvenssiä..." @@ -134,8 +134,8 @@ "Päätä puhelu" "Puhelinneuvottelu" "Puhelu käynnissä" - "Jatketaan puhelua mobiilitiedonsiirron avulla…" - "Siirtyminen Wi-Fi-verkkoon epäonnistui." - "Videopuhelu soitetaan matkapuhelinverkon kautta. Operaattori voi veloittaa tiedonsiirrosta hinnastonsa mukaan." + "Jatketaan puhelua mobiilidatayhteydellä…" + "Vaihto Wi-Fi-verkkoon epäonnistui." + "Videopuhelu soitetaan mobiilidatayhteyden kautta. Operaattori voi veloittaa tiedonsiirrosta." "Älä näytä tätä uudelleen" diff --git a/java/com/android/incallui/res/values-fr-rCA/strings.xml b/java/com/android/incallui/res/values-fr-rCA/strings.xml index 6f4d8daa42c8ec08b85a63cc86879b060b8bc981..e83658d14457c01a971030cf3925bb705be10f15 100644 --- a/java/com/android/incallui/res/values-fr-rCA/strings.xml +++ b/java/com/android/incallui/res/values-fr-rCA/strings.xml @@ -33,8 +33,8 @@ "Appel manqué de %s" "Appel en cours" "Appel en cours - travail" - "Appel Wi-Fi en cours" - "Appel Wi-Fi en cours - travail" + "Appel Wi-Fi en cours" + "Appel professionnel Wi-Fi en cours" "En attente" "Appel entrant" "Appel entrant avec photo" @@ -55,8 +55,8 @@ "Appel important avec photo, message et position" "Appel entrant important avec pièces jointes" "Appel entrant - travail" - "Appel Wi-Fi entrant" - "Appel Wi-Fi entrant - travail" + "Appel Wi-Fi entrant" + "Appel professionnel Wi-Fi entrant" "L\'appel entrant est suspect" "Demande de vidéo reçue" "Aucun service" @@ -73,7 +73,7 @@ "Répondre à l\'appel vidéo" "Veuillez désactiver le mode Avion avant de passer un appel." "Non enregistré sur le réseau" - "Réseau cellulaire non disponible." + "Réseau cellulaire non disponible." "Pour faire un appel, entrez un numéro valide." "Impossible d\'appeler." "Lancement de la séquence IHM..." @@ -134,8 +134,8 @@ "Mettre fin à l\'appel" "Conférence téléphonique" "Appel en cours" - "Poursuite de l\'appel à l\'aide de données cellulaires en cours…" - "Impossible de passer à un réseau Wi-Fi" - "L\'appel vidéo restera sur le réseau cellulaire. Des frais de données standards peuvent s\'appliquer." + "Poursuite de l\'appel utilisant des données mobiles en cours…" + "Impossible de passer à un réseau Wi-Fi" + "L\'appel vidéo restera sur le réseau cellulaire. Des frais de données standards peuvent s\'appliquer." "Ne plus afficher" diff --git a/java/com/android/incallui/res/values-fr/strings.xml b/java/com/android/incallui/res/values-fr/strings.xml index c77fc190ebf3cec68f29fb7a29acb09f4ea3f4cf..162c242bd2134c36ea786b3b5b1b868a54ee0ad7 100644 --- a/java/com/android/incallui/res/values-fr/strings.xml +++ b/java/com/android/incallui/res/values-fr/strings.xml @@ -33,8 +33,8 @@ "Appel manqué de %s" "Appel en cours" "Appel professionnel en cours" - "Appel Wi-Fi en cours" - "Appel Wi-Fi professionnel en cours" + "Appel Wi-Fi en cours" + "Appel Wi-Fi professionnel en cours" "En attente" "Appel entrant" "Appel entrant avec photo" @@ -55,8 +55,8 @@ "Appel important avec photo, message et position" "Appel entrant important avec pièces jointes" "Appel professionnel entrant" - "Appel Wi-Fi entrant" - "Appel Wi-Fi professionnel entrant" + "Appel Wi-Fi entrant" + "Appel Wi-Fi professionnel entrant" "Appel entrant indésirable suspecté" "Demande de vidéo reçue" "Aucun service" @@ -73,7 +73,7 @@ "Répondre à l\'appel vidéo" "Veuillez d\'abord désactiver le mode Avion, afin d\'effectuer un appel." "Non enregistré sur le réseau." - "Réseau mobile non disponible." + "Réseau mobile non disponible" "Pour émettre un appel, veuillez saisir un numéro valide." "Impossible d\'émettre l\'appel." "Lancement de la séquence IHM..." @@ -134,8 +134,8 @@ "Mettre fin à l\'appel" "Conférence téléphonique" "Appel en cours" - "Continuer l\'appel en utilisant les données mobiles…" - "Impossible de passer au réseau Wi-Fi" - "L\'appel vidéo va continuer sur le réseau mobile. Des frais standard liés à la consommation de données peuvent être facturés." + "Poursuite de l\'appel via les données mobiles…" + "Impossible de passer au réseau Wi-Fi" + "L\'appel vidéo va continuer sur le réseau mobile. Des frais standards liés à la consommation de données peuvent être facturés." "Ne plus afficher" diff --git a/java/com/android/incallui/res/values-gl/strings.xml b/java/com/android/incallui/res/values-gl/strings.xml index 53278e58ec7fb2be27796fa630ed14f171ec1341..d926b1b1ebb5ee51c6df45ae95774b77419fc085 100644 --- a/java/com/android/incallui/res/values-gl/strings.xml +++ b/java/com/android/incallui/res/values-gl/strings.xml @@ -33,8 +33,8 @@ "Chamada perdida de %s" "Chamada en curso" "Chamada de traballo saínte" - "Chamada wifi saínte" - "Chamada wifi de traballo saínte" + "Chamada saínte por wifi" + "Chamada de traballo saínte por wifi" "En espera" "Chamada entrante" "Chamada entrante con foto" @@ -55,8 +55,8 @@ "Chamada entrante importante con foto, mensaxe e localización" "Chamada entrante importante con anexos" "Chamada de traballo entrante" - "Chamada wifi entrante" - "Chamada wifi de traballo entrante" + "Chamada entrante por wifi" + "Chamada de traballo entrante por wifi" "Chamada entrante sospeitosa de spam" "Solicitude de vídeo entrante" "Sen servizo" @@ -73,7 +73,7 @@ "Responder á videochamada" "Para facer unha chamada, primeiro desactiva o modo avión." "Sen rexistro na rede" - "Rece móbil non dispoñible." + "A rede móbil non está dispoñible." "Para realizar unha chamada, introduce un número válido." "Non se pode chamar." "Iniciando secuencia MMI..." @@ -134,8 +134,8 @@ "Finalizar chamada" "Conferencia telefónica" "Chamada en curso" - "Continuando a chamada con datos móbiles…" - "Non se puido cambiar á rede wifi" - "A videochamada permanecerá na rede móbil. É posible que o operador aplique tarifas de datos estándar." + "Continuando a chamada con datos móbiles…" + "Non se puido cambiar á rede wifi" + "A videochamada permanecerá na rede móbil. É posible que se apliquen tarifas de datos estándar." "Non mostrar de novo" diff --git a/java/com/android/incallui/res/values-gu/strings.xml b/java/com/android/incallui/res/values-gu/strings.xml index 8b1ebe8e0120f7ab51364b5318f106a63dcebeb1..4a90fc5682e67a3d7f35fddff9aa22280fbc7516 100644 --- a/java/com/android/incallui/res/values-gu/strings.xml +++ b/java/com/android/incallui/res/values-gu/strings.xml @@ -33,8 +33,8 @@ "%s નો કૉલ ચૂકી ગયાં" "ચાલી રહેલ કૉલ" "ચાલી રહેલ કાર્ય કૉલ" - "ચાલુ Wi-Fi કૉલ" - "ચાલી રહેલ Wi-Fi કાર્ય કૉલ" + "ચાલી રહેલ Wi-Fi કૉલ" + "ચાલી રહેલ Wi-Fi કાર્ય કૉલ" "હોલ્ડ પર" "ઇનકમિંગ કૉલ" "ફોટો સાથે ઇનકમિંગ કૉલ" @@ -55,8 +55,8 @@ "ફોટો, સંદેશ અને સ્થાન સાથે મહત્વનો ઇનકમિંગ કૉલ" "જોડાણો સાથે મહત્વનો ઇનકમિંગ કૉલ" "ઇનકમિંગ કાર્ય કૉલ" - "ઇનકમિંગ Wi-Fi કૉલ" - "ઇનકમિંગ Wi-Fi કાર્ય કૉલ" + "ઇનકમિંગ Wi-Fi કૉલ" + "ઇનકમિંગ Wi-Fi કાર્ય કૉલ" "ઇનકમિંગ શંકાસ્પદ સ્પામ કૉલ" "આવનાર વિડિઓ વિનંતી" "કોઈ સેવા નથી" @@ -73,7 +73,7 @@ "વિડિઓ કૉલ લો" "કૉલ કરવા માટે, પહેલાં એરપ્લેન મોડને બંધ કરો." "નેટવર્ક પર નોંધણી કરાયેલ નથી." - "સેલ્યુલર નેટવર્ક ઉપલબ્ધ નથી." + "મોબાઇલ નેટવર્ક ઉપલબ્ધ નથી." "કૉલ કરવા માટે, માન્ય નંબર દાખલ કરો." "કૉલ કરી શકાતો નથી." "MMI અનુક્રમ પ્રારંભ કરી રહ્યાં છે…" @@ -134,8 +134,8 @@ "કૉલ સમાપ્ત કરો" "કૉન્ફરન્સ કૉલ" "કૉલમાં" - "સેલ્યુલર ડેટાની મદદથી કૉલ ચાલુ રાખી રહ્યાં છે…" - "Wi-Fi નેટવર્ક પર સ્વિચ કરી શક્યાં નથી" - "વિડિઓ કૉલ સેલ્યુલર નેટવર્ક પર રહેશે. માનક ડેટા શુલ્ક લાગુ થઈ શકે છે." + "મોબાઇલ ડેટાની મદદથી કૉલ ચાલુ રાખી રહ્યાં છે…" + "Wi-Fi નેટવર્ક પર સ્વિચ કરી શક્યાં નથી" + "વિડિઓ કૉલ, મોબાઇલ નેટવર્ક પર રહેશે. માનક ડેટા શુલ્ક લાગુ થઈ શકે છે." "આ ફરીથી બતાવશો નહીં" diff --git a/java/com/android/incallui/res/values-hi/strings.xml b/java/com/android/incallui/res/values-hi/strings.xml index 09563dfc42d14376f53628013325a15eb5604045..d3a4dcfa821676933b853dc5f15f7372f2a9f98a 100644 --- a/java/com/android/incallui/res/values-hi/strings.xml +++ b/java/com/android/incallui/res/values-hi/strings.xml @@ -33,8 +33,8 @@ "%s के छूटे कॉल" "चल रही कॉल" "कार्यस्थल की जारी कॉल" - "चल रहा वाई-फ़ाई कॉल" - "कार्यस्थल की जारी वाई-फ़ाई कॉल" + "जारी Wi‑Fi कॉल" + "जारी Wi‑Fi कार्य कॉल" "होल्ड पर" "इनकमिंग कॉल" "फ़ोटो के साथ इनकमिंग कॉल" @@ -55,8 +55,8 @@ "फोटो, संदेश और स्थान के साथ महत्वपूर्ण इनकमिंग कॉल" "अटैचमेंट के साथ महत्वपूर्ण इनकमिंग कॉल" "कार्यस्थल की आवक कॉल" - "इनकमिंग वाई-फ़ाई कॉल" - "कार्यस्थल की वाई-फ़ाई आवक कॉल" + "इनकमिंग Wi‑Fi कॉल" + "इनकमिंग Wi‑Fi कार्य कॉल" "संदिग्ध आवक स्पैम कॉल" "इनकमिंग वीडियो अनुरोध" "कोई सेवा नहीं" @@ -73,7 +73,7 @@ "वीडियो कॉल लें" "कॉल करने के लिए, पहले विमान मोड बंद करें." "नेटवर्क पर पंजीकृत नहीं." - "सेल्युलर नेटवर्क उपलब्ध नहीं." + "मोबाइल नेटवर्क उपलब्ध नहीं है." "कॉल करने के लिए, मान्‍य नंबर डालें." "कॉल नहीं किया जा सकता." "MMI अनुक्रम प्रारंभ हो रहा है…" @@ -134,8 +134,8 @@ "कॉल समाप्त करें" "कॉन्फ़्रेंस कॉल" "कॉल में" - "सेल्युलर डेटा का उपयोग करके कॉल जारी रखा जा रहा है…" - "वाई-फ़ाई नेटवर्क में नहीं बदला जा सका" - "वीडियो कॉल सेल्यूलर नेटवर्क पर बना रहेगा. मानक डेटा शुल्क लागू हो सकते हैं." + "मोबाइल डेटा का उपयोग करके कॉल जारी रखा जा रहा है…" + "Wi‑Fi नेटवर्क पर स्विच नहीं कर सका" + "वीडियो कॉल मोबाइल नेटवर्क पर बना रहेगा. मानक डेटा शुल्क लागू हो सकते हैं." "इसे दोबारा न दिखाएं" diff --git a/java/com/android/incallui/res/values-hr/strings.xml b/java/com/android/incallui/res/values-hr/strings.xml index 7af16133ab1e62397ce74f40f6be0540223f8c1e..2d389e6664b8dca5a25c49eca0a6a26cc792bd9c 100644 --- a/java/com/android/incallui/res/values-hr/strings.xml +++ b/java/com/android/incallui/res/values-hr/strings.xml @@ -33,8 +33,8 @@ "Propušten poziv kontakta %s" "Poziv u tijeku" "Poslovni poziv u tijeku" - "Wi-Fi poziv u tijeku" - "Poslovni Wi-Fi poziv u tijeku" + "Wi-Fi poziv u tijeku" + "Poslovni Wi-Fi poziv u tijeku" "Na čekanju" "Dolazni poziv" "Dolazni poziv s fotografijom" @@ -55,8 +55,8 @@ "Važan poziv s fotografijom, porukom i lokacijom" "Važan dolazni poziv s privicima" "Dolazni poslovni poziv" - "Dolazni Wi-Fi poziv" - "Dolazni poslovni Wi-Fi poziv" + "Dolazni Wi-Fi poziv" + "Dolazni poslovni Wi-Fi poziv" "Mogući neželjeni dolazni poziv" "Dolazni zahtjev za videopoziv" "Nema usluge" @@ -73,7 +73,7 @@ "Preuzimanje videopoziva" "Da biste uspostavili poziv, prvo isključite način rada u zrakoplovu." "Nije registrirano na mreži." - "Mobilna mreža nije dostupna." + "Mobilna mreža nije dostupna." "Unesite važeći broj da biste uspostavili poziv." "Pozivanje nije moguće." "Pokretanje MMI sekvence…" @@ -134,8 +134,8 @@ "Prekid poziva" "Konferencijski poziv" "Poziv u tijeku" - "Poziv se nastavlja pomoću mobilnih podataka..." - "Prebacivanje na Wi-Fi mrežu nije moguće" - "Videopoziv će ostati na mobilnoj mreži. Možda ćete morati platiti podatkovni promet." + "Poziv se nastavlja pomoću mobilnih podataka..." + "Prebacivanje na Wi-Fi mrežu nije moguće" + "Videopoziv će ostati na mobilnoj mreži. Možda ćete morati platiti podatkovni promet." "Ne prikazuj ponovno" diff --git a/java/com/android/incallui/res/values-hu/strings.xml b/java/com/android/incallui/res/values-hu/strings.xml index 08d374b419d2f04d1ae8628dbd32c68f32b82b05..fe524216c863208dec5480748380ebc6fe99c66e 100644 --- a/java/com/android/incallui/res/values-hu/strings.xml +++ b/java/com/android/incallui/res/values-hu/strings.xml @@ -33,8 +33,8 @@ "Nem fogadott hívás: %s" "Hívás folyamatban" "Folyamatban lévő munkahelyi hívás" - "Folyamatban lévő Wi-Fi-hívás" - "Folyamatban lévő munkahelyi hívás Wi-Fin keresztül" + "Folyamatban lévő Wi-Fi-hívás" + "Folyamatban lévő munkahelyi hívás Wi-Fin keresztül" "Tartásban" "Bejövő hívás" "Bejövő hívás fotóval" @@ -55,8 +55,8 @@ "Fontos bejövő hívás fotóval, üzenettel és hellyel" "Fontos bejövő hívás mellékletekkel" "Bejövő munkahelyi hívás" - "Beérkező Wi-Fi-hívás" - "Bejövő munkahelyi hívás Wi-Fin keresztül" + "Beérkező Wi-Fi-hívás" + "Bejövő munkahelyi hívás Wi-Fin keresztül" "Bejövő gyanús spamhívás" "Bejövő videokérés" "Nincs szolgáltatás" @@ -73,7 +73,7 @@ "Videohívás fogadása" "Híváskezdeményezéshez kapcsolja ki a Repülőgép üzemmódot." "Nincs regisztrálva a hálózaton." - "A mobilhálózat nem érhető el." + "A mobilhálózat nem érhető el." "Hívásindításhoz adjon meg egy érvényes számot." "A hívás sikertelen." "MMI-sorozat indítása..." @@ -134,8 +134,8 @@ "Hívás befejezése" "Konferenciahívás" "Hívásban" - "Hívás folytatása mobil-adatkapcsolaton keresztül…" - "Nem sikerült Wi-Fi-hálózatra váltani" - "A videohívást továbbra is a mobilhálózaton folytatja. A mobilszolgáltató a normál adatforgalmi díjat számítja fel." + "Hívás folytatása mobil-adatkapcsolaton keresztül…" + "Nem sikerült Wi-Fi-hálózatra váltani" + "A videohívást továbbra is a mobilhálózaton folytatja. A mobilszolgáltató a normál adatforgalmi díjat számítja fel." "Ne jelenjen meg többé" diff --git a/java/com/android/incallui/res/values-hy/strings.xml b/java/com/android/incallui/res/values-hy/strings.xml index f6496d14d0923574b095d6fa7a7e6f82a690f1e7..4287820c2638903bdcd52a102d0f3ed0642ae47a 100644 --- a/java/com/android/incallui/res/values-hy/strings.xml +++ b/java/com/android/incallui/res/values-hy/strings.xml @@ -33,8 +33,8 @@ "Բաց թողնված զանգ %s-ից" "Ընթացիկ զանգը" "Ընթացիկ աշխատանքային զանգ" - "Ընթացիկ զանգ Wi-Fi-ի միջոցով" - "Ընթացիկ աշխատանքային Wi-Fi զանգ" + "Ընթացիկ զանգ Wi-Fi-ի միջոցով" + "Ընթացիկ աշխատանքային զանգ Wi-Fi-ի միջոցով" "Սպասում" "Մուտքային զանգ" "Մուտքային զանգ՝ լուսանկարով" @@ -55,8 +55,8 @@ "Կարևոր մուտքային զանգ՝ կցորդներով" "Կարևոր մուտքային զանգ՝ կցորդներով" "Մուտքային աշխատանքային զանգ" - "Մուտքային զանգ Wi-Fi-ի միջոցով" - "Մուտքային աշխատանքային Wi-Fi զանգ" + "Մուտքային զանգ Wi-Fi-ի միջոցով" + "Մուտքային աշխատանքային զանգ Wi-Fi-ի միջոցով" "Մուտքային զանգը հավանաբար լցոն է" "Մուտքային տեսազանգի հայցում" "Ծառայություններ չկան" @@ -73,7 +73,7 @@ "Ընդունել տեսազանգը" "Զանգի կատարման համար նախ անջատեք թռիչքային ռեժիմը:" "Ցանցում գրանցված չէ:" - "Բջջային ցանցն անհասանելի է:" + "Բջջային ցանցն անհասանելի է:" "Զանգ կատարելու համար մուտքագրեք ճիշտ համար:" "Հնարավոր չէ զանգել:" "Մեկնարկում է MMI հաջորդականությունը..." @@ -134,8 +134,8 @@ "Ավարտել զանգը" "Կոնֆերանս զանգ" "Զանգ" - "Զանգն այժմ բջջային ինտերնետով է ընթանում…" - "Չհաջողվեց միանալ Wi-Fi ցանցին" - "Տեսազանգը կշարունակվի բջջային ցանցով: Գանձումը կկատարվի ըստ ձեր սակագնային պլանի:" + "Զանգն այժմ բջջային ինտերնետով է ընթանում…" + "Չհաջողվեց միանալ Wi-Fi ցանցին" + "Տեսազանգը կշարունակվի բջջային ցանցով: Գանձումը կկատարվի ըստ ձեր սակագնային պլանի:" "Այլևս ցույց չտալ" diff --git a/java/com/android/incallui/res/values-in/strings.xml b/java/com/android/incallui/res/values-in/strings.xml index 279e72d21e2fad24b6a0a976d61ab7575d1aa655..6de6136fb649937f314547c39077576e9980024f 100644 --- a/java/com/android/incallui/res/values-in/strings.xml +++ b/java/com/android/incallui/res/values-in/strings.xml @@ -33,8 +33,8 @@ "Panggilan tak terjawab dari %s" "Panggilan yang sedang berlangsung" "Panggilan telepon kerja yang sedang berlangsung" - "Panggilan Wi-Fi keluar" - "Panggilan Wi-Fi kerja yang sedang berlangsung" + "Panggilan Wi-Fi keluar" + "Panggilan kerja Wi-Fi yang berlangsung" "Ditangguhkan" "Panggilan masuk" "Panggilan masuk dengan foto" @@ -55,8 +55,8 @@ "Panggilan penting dengan foto, pesan, dan lokasi" "Panggilan masuk penting dengan lampiran" "Panggilan telepon kerja yang masuk" - "Panggilan Wi-Fi masuk" - "Panggilan telepon Wi-Fi kerja yang masuk" + "Panggilan Wi-Fi masuk" + "Panggilan kerja Wi-Fi masuk" "Panggilan masuk yang diduga spam" "Permintaan video masuk" "Tidak ada layanan" @@ -73,7 +73,7 @@ "Lakukan Video Call" "Untuk melakukan panggilan, pertama-tama matikan mode Pesawat." "Tidak terdaftar pada jaringan." - "Jaringan seluler tidak tersedia." + "Jaringan seluler tidak tersedia." "Untuk melakukan panggilan telepon, masukkan nomor yang valid." "Tidak dapat menelepon." "Memulai urutan MMI..." @@ -134,8 +134,8 @@ "Akhiri panggilan" "Telewicara" "Sedang menelepon" - "Melanjutkan panggilan menggunakan data seluler..." - "Tidak dapat beralih ke jaringan Wi-Fi" - "Video call akan tetap di jaringan seluler. Biaya data standar mungkin berlaku." + "Melanjutkan panggilan menggunakan data seluler..." + "Tidak dapat beralih ke jaringan Wi-Fi" + "Video call akan tetap di jaringan seluler. Tarif data standar mungkin berlaku." "Jangan tampilkan ini lagi" diff --git a/java/com/android/incallui/res/values-is/strings.xml b/java/com/android/incallui/res/values-is/strings.xml index 795e952c6a875dcb82f1ba0fb651a97e57dbc82c..8393510c6540f7b32f70a79a65fdbf23ea846142 100644 --- a/java/com/android/incallui/res/values-is/strings.xml +++ b/java/com/android/incallui/res/values-is/strings.xml @@ -33,8 +33,8 @@ "Ósvarað símtal frá %s" "Samtal í gangi" "Vinnusímtal í gangi" - "Wi-Fi símtal stendur yfir" - "Vinnusímtal í gangi um Wi-Fi" + "Wi-Fi símtal stendur yfir" + "Vinnusímtal í gangi um Wi-Fi" "Í bið" "Móttekið símtal" "Móttekið símtal með mynd" @@ -55,8 +55,8 @@ "Mikilvægt móttekið símtal með mynd, skilaboðum og staðsetningu" "Mikilvægt móttekið símtal með viðhengjum" "Vinnusímtal berst" - "Wi-Fi símtal berst" - "Vinnusímtal berst um Wi-Fi" + "Wi-Fi símtal berst" + "Vinnusímtal berst um Wi-Fi" "Símtal sem berst er hugsanlega úr ruslnúmeri" "Myndbeiðni berst" "Ekkert símasamband" @@ -73,7 +73,7 @@ "Þiggja myndsímtal" "Til að hringja símtal þarftu fyrst að slökkva á flugstillingu." "Ekki skráð á símkerfi." - "Farsímakerfi ekki til staðar." + "Farsímakerfi ekki tiltækt." "Sláðu inn gilt númer til að hringja símtal." "Ekki hægt að hringja." "Ræsir MMI-runu…" @@ -134,8 +134,8 @@ "Ljúka símtali" "Símafundur" "Í símtali" - "Símtal heldur áfram og notar farsímagögn…" - "Ekki var hægt að skipta yfir á Wi-Fi-net" - "Myndsímtal verður áfram á farsímaneti. Stöðluð gjöld fyrir gagnaflutning kunna að eiga við." + "Símtal heldur áfram og notar farsímagögn…" + "Ekki var hægt að skipta yfir á Wi-Fi-net" + "Myndsímtal verður áfram á farsímaneti. Stöðluð gjöld fyrir gagnaflutning kunna að eiga við." "Ekki birta þetta aftur" diff --git a/java/com/android/incallui/res/values-it/strings.xml b/java/com/android/incallui/res/values-it/strings.xml index 836b934525ce78c206f93d184d7b4442168a4e34..ca2b4b14ab190dcc91ac1f8a2b1ee5c4fe568611 100644 --- a/java/com/android/incallui/res/values-it/strings.xml +++ b/java/com/android/incallui/res/values-it/strings.xml @@ -33,8 +33,8 @@ "Chiamata senza risposta da %s" "Chiamata in corso" "Chiamata di lavoro in corso" - "Chiamata Wi-Fi in corso" - "Chiamata di lavoro tramite Wi-Fi in corso" + "Chiamata Wi-Fi in corso" + "Chiamata di lavoro tramite Wi-Fi in corso" "In attesa" "Chiamata in arrivo" "Chiamata in arrivo con foto" @@ -55,8 +55,8 @@ "Chiamata importante in arrivo con foto, messaggio e posizione" "Chiamata importante in arrivo con allegati" "Chiamata di lavoro in arrivo" - "Chiamata Wi-Fi in arrivo" - "Chiamata di lavoro in arrivo tramite Wi-Fi" + "Chiamata Wi-Fi in arrivo" + "Chiamata di lavoro tramite Wi-Fi in arrivo" "Chiamata di presunto spam in arrivo" "Richiesta video in arrivo" "Nessun servizio" @@ -73,7 +73,7 @@ "Ricevi videochiamata" "Per fare una telefonata, disattiva la modalità aereo." "Non registrato sulla rete." - "Rete cellulare non disponibile." + "Rete mobile non disponibile." "Per effettuare una chiamata, inserisci un numero valido." "Impossibile chiamare." "Inizio sequenza MMI..." @@ -134,8 +134,8 @@ "Termina chiamata" "Audioconferenza" "Chiamata in corso" - "Proseguimento della chiamata utilizzando la rete dati…" - "Impossibile passare alla rete Wi-Fi" - "La videochiamata rimarrà sulla rete cellulare. Potrebbero essere applicati costi standard per il traffico dati." + "Proseguimento della chiamata utilizzando i dati mobili…" + "Impossibile passare alla rete Wi-Fi" + "La videochiamata rimarrà sulla rete mobile. Potrebbero essere applicati costi standard per il traffico dati." "Non mostrare più questo messaggio" diff --git a/java/com/android/incallui/res/values-iw/strings.xml b/java/com/android/incallui/res/values-iw/strings.xml index 195cb0f259f35205e9e5649113ce8e51c1e0fe70..326078ae81ab8ac574b1160fcf31fa4edd9bbab7 100644 --- a/java/com/android/incallui/res/values-iw/strings.xml +++ b/java/com/android/incallui/res/values-iw/strings.xml @@ -33,8 +33,8 @@ "שיחה שלא נענתה מאת %s" "שיחה פעילה" "שיחת עבודה פעילה" - "‏שיחת Wi-Fi מתבצעת" - "‏שיחת עבודה פעילה ברשת WiFi" + "‏שיחת Wi-Fi פעילה" + "‏שיחת עבודה פעילה ברשת Wi‑Fi" "בהמתנה" "שיחה נכנסת" "שיחה נכנסת עם תמונה" @@ -55,8 +55,8 @@ "שיחה נכנסת חשובה עם תמונה, הודעה ומיקום" "שיחה נכנסת חשובה עם קבצים מצורפים" "שיחת עבודה נכנסת" - "‏שיחת Wi-Fi נכנסת" - "‏שיחת עבודה נכנסת ברשת WiFi" + "‏שיחת Wi-Fi נכנסת" + "‏שיחת עבודה נכנסת ברשת Wi‑Fi" "השיחה הנכנסת חשודה כספאם" "בקשת וידאו נכנסת" "אין שירות" @@ -73,7 +73,7 @@ "קבל את שיחת הווידאו" "כדי להתקשר, כבה תחילה את מצב טיסה." "לא רשום ברשת." - "רשת סלולרית אינה זמינה." + "הרשת הסלולרית אינה זמינה." "כדי להתקשר, הזן מספר טלפון חוקי." "לא ניתן להתקשר." "‏מתחיל רצף MMI…" @@ -134,8 +134,8 @@ "סיים שיחה" "שיחת ועידה" "בשיחה" - "ממשיך את השיחה באמצעות הרשת הסלולרית..." - "‏לא ניתן לעבור לרשת Wi-Fi" - "שיחת הווידאו תמשיך להיות ברשת הסלולרית. ייתכן שתחויב על ידי הספק הסלולרי בגין צריכת נתונים." + "ממשיך את השיחה באמצעות הרשת הסלולרית…" + "‏לא ניתן לעבור לרשת Wi-Fi" + "שיחת הווידאו תמשיך להיות ברשת הסלולרית. ייתכן שתחויב על שימוש בנתונים." "אל תציג זאת שוב" diff --git a/java/com/android/incallui/res/values-ja/strings.xml b/java/com/android/incallui/res/values-ja/strings.xml index 0e186fa3d02b37a2fe3d42a5fe9047f5b8a4cd76..a54c4e12ab5446395e2ac500a7c3bee4b59101fa 100644 --- a/java/com/android/incallui/res/values-ja/strings.xml +++ b/java/com/android/incallui/res/values-ja/strings.xml @@ -33,8 +33,8 @@ "%s さんからの不在着信" "通話中" "仕事の通話中" - "Wi-Fi通話を発信中" - "仕事の Wi-Fi 通話中" + "Wi-Fi 通話を発信中" + "仕事の Wi-Fi 通話を発信中" "保留中" "通話着信" "着信(写真あり)" @@ -55,8 +55,8 @@ "重要な着信(写真、メッセージ、位置情報あり)" "重要な着信(添付ファイルあり)" "仕事の通話が着信中" - "Wi-Fi通話が着信中" - "仕事の Wi-Fi 通話が着信中" + "Wi-Fi 通話が着信中" + "仕事の Wi-Fi 通話が着信中" "迷惑電話の疑いがある通話を着信しています" "ビデオハングアウトリクエスト着信" "通信サービスなし" @@ -73,7 +73,7 @@ "ビデオハングアウトを引き継ぐ" "機内モードをOFFにしてから発信してください。" "ご加入の通信サービスがありません" - "モバイルネットワークが利用できません。" + "モバイル ネットワークを利用できません。" "発信するには、有効な番号を入力してください。" "発信できません。" "MMIシーケンスを開始中..." @@ -134,8 +134,8 @@ "通話を終了" "グループ通話" "通話中" - "モバイルデータを使用して通話を継続しています…" - "Wi-Fi ネットワークに切り替えることができませんでした" - "引き続きモバイル ネットワークを使用してビデオ通話を続行します。通常のデータ通信料が適用される場合があります。" + "モバイルデータを使用して通話を継続しています…" + "Wi-Fi ネットワークに切り替えることができませんでした" + "引き続きモバイル ネットワークを使用してビデオハングアウトを続行します。通常のデータ通信料が適用される場合があります。" "今後このメッセージを表示しない" diff --git a/java/com/android/incallui/res/values-ka/strings.xml b/java/com/android/incallui/res/values-ka/strings.xml index 6c46bd0c7b3385442b40a4a942e5bdbf685c18dd..fed398b493b31d63eec53ff179493fc70cae2091 100644 --- a/java/com/android/incallui/res/values-ka/strings.xml +++ b/java/com/android/incallui/res/values-ka/strings.xml @@ -33,8 +33,8 @@ "გამოტოვებული ზარი %s-ისგან" "მიმდინარე ზარი" "მიმდინარე ზარი (სამსახური)" - "მიმდინარე Wi-Fi ზარი" - "მიმდინარე Wi-Fi ზარი (სამსახური)" + "მიმდინარე Wi-Fi ზარი" + "მიმდინარე Wi-Fi ზარი (სამსახური)" "შეყოვნების რეჟიმში" "შემომავალი ზარი" "შემომავალი ზარი ფოტოთი" @@ -55,8 +55,8 @@ "ზარი ფოტოთი, შეტყობინებით და მდებარეობით" "მნიშვნელოვანი შემომავალი ზარი დანართებით" "შემომავალი ზარი (სამსახური)" - "შემომავალი Wi-Fi ზარი" - "შემომავალი Wi-Fi ზარი (სამსახური)" + "შემომავალი Wi-Fi ზარი" + "შემომავალი Wi-Fi ზარი (სამსახური)" "შემომავალი ზარი - სავარაუდოდ სპამი" "შემომავალი ვიდეოს მოთხოვნა" "სერვისი არ არის" @@ -73,7 +73,7 @@ "Take ვიდეო ზარი" "ზარის განსახორციელებლად, ჯერ თვითმფრინავის რეჟიმი უნდა გამორთოთ." "ქსელში რეგისტრირებული არ არის." - "ფიჭური ქსელი მიუწვდომელია" + "მობილური ქსელი მიუწვდომელია." "ზარის განხორციელებისათვის, შეიყვანეთ მოქმედი ნომერი." "არ ირეკება." "MMI თანმიმდევრობის დაწყება…" @@ -134,8 +134,8 @@ "ზარის დასრულება" "საკონფერენციო ზარი" "მონაწილეობს ზარში" - "ზარი გრძელდება მობილური ინტერნეტის გამოყენებით…" - "Wi-Fi ქსელზე გადართვა ვერ მოხერხდა" - "ვიდეოზარი ფიჭურ ქსელში დარჩება. შესაძლოა მოგიწიოთ მობილური ინტერნეტის სტანდარტული ფასის გადახდა." + "ზარი გრძელდება მობილური ინტერნეტის გამოყენებით…" + "Wi-Fi ქსელზე გადართვა ვერ მოხერხდა" + "ვიდეოზარი მობილური ინტერნეტის ქსელში დარჩება. შესაძლოა მოგიწიოთ მობილური ინტერნეტის სტანდარტული საფასურის გადახდა." "აღარ მაჩვენო" diff --git a/java/com/android/incallui/res/values-kk/strings.xml b/java/com/android/incallui/res/values-kk/strings.xml index 310ba4d280ad3cb514e9a855021bb406c9ad0e03..42ac9b078ee784a0db50c273163819813ebc288a 100644 --- a/java/com/android/incallui/res/values-kk/strings.xml +++ b/java/com/android/incallui/res/values-kk/strings.xml @@ -33,8 +33,8 @@ "%s қоңырауы өткізіп алынған" "Ағымдағы қоңырау" "Ағымдағы жұмыс қоңырауы" - "Ағымдық Wi-Fi қоңырауы" - "Ағымдағы Wi-Fi жұмыс қоңырауы" + "Қазіргі Wi-Fi қоңырауы" + "Қазіргі Wi-Fi жұмыс қоңырауы" "Күтуде" "Келген қоңырау" "Сурет тіркелген кіріс қоңырау" @@ -55,8 +55,8 @@ "Сурет, хабар және орын дерегі тіркелген маңызды кіріс қоңырау" "Тіркемелері бар маңызды кіріс қоңырау" "Кіріс жұмыс қоңырауы" - "Кіріс Wi-Fi қоңырауы" - "Кіріс Wi-Fi жұмыс қоңырауы" + "Кіріс Wi-Fi қоңырауы" + "Кіріс Wi-Fi жұмыс қоңырауы" "Кіріс қоңырауы спам болуы мүмкін" "Кіріс бейне сұрау" "Қызмет көрсетілмейді" @@ -73,7 +73,7 @@ "Бейне қоңырауды бері бұру" "Қоңырау шалу үшін алдымен Ұшақ режимін өшіріңіз." "Желіде тіркелмеген." - "Ұялы желі қол жетімді емес." + "Мобильдік желі қолжетімсіз." "Қоңырау шалу үшін жарамды нөмірді енгізіңіз." "Қоңырау шалу мүмкін емес." "MMI қатарын бастау…" @@ -134,8 +134,8 @@ "Қоңырауды аяқтау" "Мәжіліс қоңырауы" "Бос емес" - "Қоңырау ұялы дерек арқылы жалғасады..." - "Wi-Fi желісіне қосылу мүмкін болмады" - "Бейне қоңырау ұялы байланыс желісінде қалады. Стандартты деректер ақысы алынуы мүмкін." + "Қоңырау мобильдік желі арқылы жалғасуда…" + "Wi-Fi желісіне қосылу мүмкін болмады" + "Бейне қоңырау мобильдік желіде қалады. Стандартты мобильдік байланыс ақысы алынуы мүмкін." "Мұны қайтадан көрсетпеу" diff --git a/java/com/android/incallui/res/values-km/strings.xml b/java/com/android/incallui/res/values-km/strings.xml index 4fbafef71506feb1fdeefd9cd5ee1eec1e0d658d..c6238de2b47334a2a168e7dfb45a1a3cc0c7065f 100644 --- a/java/com/android/incallui/res/values-km/strings.xml +++ b/java/com/android/incallui/res/values-km/strings.xml @@ -33,8 +33,8 @@ "ខកខាន​ទទួល​ពី %s" "កំពុង​បន្ត​ការ​ហៅ" "ការហៅពីកន្លែងការងារកំពុងដំណើរការ" - "ការហៅតាម Wi-Fi កំពុងបន្ត" - "ការហៅតាម Wi-Fi ពីកន្លែងការងារកំពុងដំណើរការ" + "ការហៅតាម Wi-Fi កំពុង​ដំណើរការ" + "ការហៅតាម Wi-Fi ពីកន្លែងការងារ​កំពុង​ដំណើរការ" "រង់ចាំ" "ការ​ហៅ​ចូល" "ការហៅ​ចូល​​ដែល​មាន​រូបថត" @@ -55,8 +55,8 @@ "ការ​ហៅ​ចូល​ដែល​សំខាន់​មាន​រូបថត សារ និង​ទីតាំង" "ការហៅ​​ចូល​ដែល​សំខាន់​មាន​ឯកសារ​ភ្ជាប់" "កំពុងហៅចូលពីកន្លែងការងារ" - "មានការហៅចូលមកតាម Wi-Fi" - "កំពុងហៅចូលពីកន្លែងការងារតាម Wi-Fi" + "មានការហៅចូលមកតាម Wi-Fi" + "មាន​ការ​ហៅ​ចូល​ពី​កន្លែង​ការងារ​តាម Wi-Fi" "ការ​ហៅ​បន្លំ​​ចូល​​​ដែល​សង្ស័យ" "សំណើ​ការ​ហៅ​ជា​វីដេអូ​ចូល" "គ្មាន​សេវា" @@ -73,7 +73,7 @@ "ទទួល​យក​ការ​ហៅ​វីដេអូ" "ដើម្បី​កំណត់​ការ​ហៅ ដំបូង​ត្រូវ​បិទ​របៀប​នៅ​ពេល​ជិះ​យន្តហោះ។" "មិន​បាន​ចុះ​ឈ្មោះ​នៅ​លើ​បណ្ដាញ។" - "បណ្ដាញ​ចល័ត​មិន​អាច​ប្រើ​បាន។" + "សេវា​ទូរសព្ទ​ចល័ត​មិន​អាច​ប្រើប្រាស់​បាន។" "ដើម្បីធ្វើការហៅ បញ្ចូលលេខដែលមានសុពលភាព។" "មិនអាចហៅបានទេ។" "កំពុង​ចាប់ផ្ដើម​លំដាប់ MMI ..." @@ -134,8 +134,8 @@ "បញ្ចប់ការហៅ" "ហៅជា​សន្និសីទ" "ស្ថិត​​ក្នុង​ការ​ហៅ" - "កំពុង​បន្ត​ហៅ​ទូរស័ព្ទ​ដោយ​ប្រើ​ទិន្នន័យ​ទូរស័ព្ទ​ចល័ត..." - "មិន​អាច​ប្ដូរ​ទៅ​បណ្ដាញ Wi-Fi" - "ការហៅ​ជា​វីដេអូ​នឹង​នៅ​តែ​​ស្ថិត​លើ​បណ្ដាញ​ទូរសព្ទ​ចល័ត។ អាច​​នឹង​​គិតថ្លៃ​ទិន្នន័យ​តាម​តម្លៃ​​ស្តង់ដារ។" + "កំពុង​បន្ត​ការហៅ​ទូរសព្ទ​ ដោយ​ប្រើប្រាស់​ទិន្នន័យ​ចល័ត…" + "មិន​អាច​ប្ដូរ​ទៅ​បណ្ដាញ Wi-Fi បាន​ទេ" + "ការហៅ​តាម​វីដេអូ​នឹង​នៅតែ​មាន​នៅ​លើ​បណ្ដាញ​ទូរសព្ទ។ អាច​នឹង​គិតថ្លៃ​ទិន្នន័យ​តាម​តម្លៃ​ស្តង់ដារ។" "កុំ​បង្ហាញ​វា​ម្ដង​ទៀត" diff --git a/java/com/android/incallui/res/values-kn/strings.xml b/java/com/android/incallui/res/values-kn/strings.xml index 5d47c7e0eaf5e7bc5574717f55a28212b9951bdf..cb47e35d9544a49d3354dfd2f7567592c137b429 100644 --- a/java/com/android/incallui/res/values-kn/strings.xml +++ b/java/com/android/incallui/res/values-kn/strings.xml @@ -33,8 +33,8 @@ "%s ಅವರಿಂದ ಮಿಸ್ಡ್ ಕಾಲ್" "ಚಾಲ್ತಿಯಲ್ಲಿರುವ ಕರೆ" "ಚಾಲ್ತಿಯಲ್ಲಿರುವ ಕೆಲಸದ ಕರೆ" - "ಚಾಲ್ತಿಯಲ್ಲಿರುವ ವೈ-ಫೈ ಕರೆ" - "ಚಾಲ್ತಿಯಲ್ಲಿರುವ ವೈ-ಫೈ ಕೆಲಸದ ಕರೆ" + "ಚಾಲ್ತಿಯಲ್ಲಿರುವ ವೈ-ಫೈ ಕರೆ" + "ಚಾಲ್ತಿಯಲ್ಲಿರುವ ವೈ-ಫೈ ಕೆಲಸದ ಕರೆ" "ತಡೆಹಿಡಿಯಲಾಗಿದೆ" "ಒಳಬರುವ ಕರೆ" "ಫೋಟೋದೊಂದಿಗೆ ಒಳಬರುತ್ತಿರುವ ಕರೆ" @@ -55,8 +55,8 @@ "ಪೋಟೋ, ಸಂದೇಶ ಮತ್ತು ಸ್ಥಳದೊಂದಿಗೆ ಒಳಬರುತ್ತಿರುವ ಪ್ರಮುಖ ಕರೆ" "ಲಗತ್ತುಗಳೊಂದಿಗೆ ಒಳಬರುತ್ತಿರುವ ಪ್ರಮುಖ ಕರೆ" "ಒಳಬರುವ ಕೆಲಸದ ಕರೆ" - "ಒಳಬರುವ ವೈ-ಫೈ ಕರೆ" - "ಒಳಬರುವ ವೈ-ಫೈ ಕೆಲಸದ ಕರೆ" + "ಒಳಬರುವ ವೈ-ಫೈ ಕರೆ" + "ಒಳಬರುವ ವೈ-ಫೈ ಕೆಲಸದ ಕರೆ" "ಒಳಬರುವ ಶಂಕಿತ ಸ್ಪ್ಯಾಮ್ ಕರೆ" "ಒಳಬರುವ ವೀಡಿಯೊ ವಿನಂತಿ" "ಯಾವುದೇ ಸೇವೆಯಿಲ್ಲ" @@ -73,7 +73,7 @@ "ವೀಡಿಯೊ ಕರೆ ತೆಗೆದುಕೊಳ್ಳಿ" "ಕರೆ ಮಾಡಲು, ಮೊದಲು ಏರ್‌ಪ್ಲೇನ್‌‌ ಮೋಡ್‌‌ ಆಫ್‌ ಮಾಡಿ." "ನೆಟ್‌ವರ್ಕ್‌ನಲ್ಲಿ ಇನ್ನೂ ನೋಂದಣಿಯಾಗಿಲ್ಲ." - "ಸೆಲ್ಯುಲಾರ್ ನೆಟ್‌ವರ್ಕ್‌ ಲಭ್ಯವಿಲ್ಲ." + "ಮೊಬೈಲ್‌ ನೆಟ್‌ವರ್ಕ್‌ ಲಭ್ಯವಿಲ್ಲ." "ಕರೆಯನ್ನು ಮಾಡಲು, ಮಾನ್ಯವಾದ ಸಂಖ್ಯೆಯನ್ನು ನಮೂದಿಸಿ." "ಕರೆ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ." "MMI ಅನುಕ್ರಮ ಪ್ರಾರಂಭವಾಗುತ್ತಿದೆ…" @@ -134,8 +134,8 @@ "ಕರೆ ಅಂತ್ಯಗೊಳಿಸಿ" "ಕಾನ್ಫರೆನ್ಸ್ ಕರೆ" "ಕರೆಯಲ್ಲಿ" - "ಸೆಲ್ಯುಲಾರ್ ಡೇಟಾ ಬಳಸಿಕೊಂಡು ಕರೆ ಮುಂದುವರಿಸಲಾಗುತ್ತಿದೆ…" - "ವೈ-ಫೈ ನೆಟ್‍ವರ್ಕ್‌ಗೆ ಬದಲಾಯಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ" - "ಸೆಲ್ಯುಲಾರ್ ನೆಟ್‌ವರ್ಕ್‌ಗೆ ವೀಡಿಯೊ ಕರೆ ಹಾಗೆಯೇ ಉಳಿಯುತ್ತದೆ. ಪ್ರಮಾಣಿತ ಡೇಟಾ ಶುಲ್ಕಗಳು ಅನ್ವಯಿಸಬಹುದು." + "ಮೊಬೈಲ್ ಡೇಟಾ ಬಳಸಿಕೊಂಡು ಕರೆ ಮುಂದುವರಿಸಲಾಗುತ್ತಿದೆ…" + "ವೈ-ಫೈ ನೆಟ್‍ವರ್ಕ್‌ಗೆ ಬದಲಾಯಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ" + "ವೀಡಿಯೊ ಕರೆ ಮೊಬೈಲ್ ನೆಟ್‌ವರ್ಕ್‌ನಲ್ಲಿ ಹಾಗೆಯೇ ಉಳಿಯುತ್ತದೆ. ಪ್ರಮಾಣಿತ ಡೇಟಾ ಶುಲ್ಕಗಳು ಅನ್ವಯಿಸಬಹುದು." "ಮತ್ತೆ ಇದನ್ನು ತೋರಿಸಬೇಡ" diff --git a/java/com/android/incallui/res/values-ko/strings.xml b/java/com/android/incallui/res/values-ko/strings.xml index 44c53389a0348bd90f52ddbd33d40691a66d297d..676ba08f0806f5efcf661facbc9fc1aa5537a8d9 100644 --- a/java/com/android/incallui/res/values-ko/strings.xml +++ b/java/com/android/incallui/res/values-ko/strings.xml @@ -33,8 +33,8 @@ "%s의 부재중 전화" "현재 통화" "발신 업무 전화" - "Wi-Fi 발신 전화" - "발신 Wi-Fi 업무 전화" + "진행 중인 Wi-Fi 통화" + "진행 중인 Wi-Fi 업무 통화" "대기 중" "수신전화" "사진이 있는 수신 전화" @@ -55,8 +55,8 @@ "사진, 메시지, 위치가 있는 중요한 수신 전화" "첨부파일이 있는 중요한 수신 전화" "수신 업무 전화" - "Wi-Fi 수신 전화" - "수신 Wi-Fi 업무 전화" + "수신 Wi-Fi 통화" + "수신 Wi-Fi 업무 통화" "의심스러운 스팸 발신자로부터 온 전화" "수신 동영상 요청" "서비스 불가" @@ -73,7 +73,7 @@ "화상 통화 받기" "전화를 걸려면 먼저 비행기 모드를 해제하세요." "네트워크에서 등록되지 않았습니다." - "사용 가능한 이동통신망이 없습니다." + "모바일 네트워크를 사용할 수 없습니다." "전화를 걸려면 올바른 번호를 입력하세요." "전화를 걸 수 없습니다." "MMI 시퀀스 시작 중..." @@ -134,8 +134,8 @@ "통화 종료" "다자간 통화" "통화 중" - "모바일 데이터를 사용하여 계속 통화 중…" - "Wi-Fi 네트워크로 전환할 수 없습니다." - "화상 통화가 모바일 네트워크에서 유지됩니다. 표준 데이터 요금이 부과될 수 있습니다." + "모바일 데이터를 사용하여 통화를 계속합니다…" + "Wi-Fi 네트워크로 전환할 수 없습니다." + "화상 통화가 모바일 네트워크에서 계속됩니다. 표준 데이터 요금이 부과될 수 있습니다." "다시 표시하지 않음" diff --git a/java/com/android/incallui/res/values-ky/strings.xml b/java/com/android/incallui/res/values-ky/strings.xml index 0f8ee3cd8d2e5aa09fa29b30f2a9d89df79d463b..1f6060412b7fedea7a75bcac79026a56b3eb6cbe 100644 --- a/java/com/android/incallui/res/values-ky/strings.xml +++ b/java/com/android/incallui/res/values-ky/strings.xml @@ -33,8 +33,8 @@ "%s дегенден кабыл алынбаган чалуу" "Учурдагы чалуу" "Учурда болуп жаткан чалуу (жумуш боюнча)" - "Аткаруудагы Wi-Fi чалуу" - "Учурда болуп жаткан Wi-Fi чалуу (жумуш боюнча)" + "Учурдагы Wi-Fi чалуу" + "Учурдагы Wi-Fi чалуу (жумуш боюнча)" "Күтүлүүдө" "Кирүүчү чалуу" "Сүрөтү бар кирүүчү чалуу" @@ -55,8 +55,8 @@ "Сүрөт, билдирүү жана жайгашкан жер бар маанилүү чалуу" "Тиркемелери бар маанилүү кирүүчү чалуу" "Жумуш боюнча келип жаткан чалуу" - "Кирүүчү Wi-Fi чалуу" - "Жумуш боюнча келип жаткан Wi-Fi чалуу" + "Келип жаткан Wi-Fi чалуу" + "Жумуш боюнча келип жаткан Wi-Fi чалуу" "Келип жаткан чалуу спам окшойт" "Келип жаткан видео сурамы" "Байланыш жок" @@ -73,7 +73,7 @@ "Видео чалууну кабыл алуу" "Чалуу үчүн, адегенде учак режимин өчүрүңүз." "Тармакта катталган эмес." - "Мобилдик тармак жеткиликтүү эмес." + "Мобилдик тармак жок." "Чалуу үчүн, жарактуу номер киргизиңиз." "Чалынбай жатат." "MMI кезеги башталууда…" @@ -134,8 +134,8 @@ "Чалууну бүтүрүү" "Конференц-чалуу" "Чалууда" - "Уюлдук дайындарды пайдалануу менен чалууну улантууда..." - "Wi-Fi тармагына туташа албай койдук" - "Видео чалуу уюлдук тармак аркылуу аткарылат. Стандарттык тариф боюнча акы алынышы мүмкүн." + "Мобилдик дайындарды пайдалануу менен чалууну улантууда…" + "Wi-Fi тармагына туташа албай койдук" + "Видео чалуу мобилдик тармак аркылуу аткарылат. Стандарттык тариф боюнча акы алынышы мүмкүн." "Экинчи көрсөтүлбөсүн" diff --git a/java/com/android/incallui/res/values-lo/strings.xml b/java/com/android/incallui/res/values-lo/strings.xml index 56335d416b7b7c60768f9b5f20b05616f5e3fb87..45a2a40891cf15b1fed0376f74e28539cc9af7cd 100644 --- a/java/com/android/incallui/res/values-lo/strings.xml +++ b/java/com/android/incallui/res/values-lo/strings.xml @@ -33,8 +33,8 @@ "ສາຍບໍ່ໄດ້ຮັບຈາກ %s" "ສາຍທີ່ກຳລັງໂທອອກ" "ສາຍໂທອອກຈາກບ່ອນເຮັດວຽກ" - "ການ​ໂທ Wi​-Fi ທີ່ດໍາເນີນຢູ່" - "ສາຍໂທອອກ Wi-Fi ຈາກບ່ອນເຮັດວຽກ" + "ການໂທ Wi-Fi ທີ່ດໍາເນີນຢູ່" + "ການໂທ Wi-Fi ບ່ອນເຮັດວຽກທີ່ດໍາເນີນຢູ່" "ພັກສາຍຊົ່ວຄາວ" "ສາຍໂທເຂົ້າ" "ສາຍໂທເຂົ້າພ້ອມຮູບພາບ" @@ -55,8 +55,8 @@ "ສາຍໂທເຂົ້າສຳຄັນພ້ອມຮູບພາບ, ຂໍ້ຄວາມ ແລະ ສະຖານທີ່" "ສາຍໂທເຂົ້າສຳຄັນພ້ອມໄຟລ໌ແນບ" "ສາຍໂທເຂົ້າຈາກບ່ອນເຮັດວຽກ" - "ສາຍໂທເຂົ້າ Wi-Fi" - "ສາຍໂທເຂົ້າ Wi-Fi ຈາກບ່ອນເຮັດວຽກ" + "ສາຍໂທເຂົ້າ Wi-Fi" + "ສາຍໂທເຂົ້າ Wi-Fi ບ່ອນເຮັດວຽກ" "ມີການໂທທີ່ຄາດວ່າເປັນສະແປມໂທເຂົ້າມາ" "​ຄຳ​ຮ້ອງ​ຂໍ​ວິ​ດີ​ໂອ​ເຂົ້າ​ມາ" "ບໍ່ມີບໍລິການ" @@ -73,7 +73,7 @@ "ຮັບສາຍວິດີໂອ" "ເພື່ອໂທລະສັບ, ໃຫ້ປິດໂໝດຢູ່ເທິງຍົນກ່ອນ." "ບໍ່ໄດ້ລົງທະບຽນໃນເຄືອຂ່າຍ." - "ບໍ່​ມີ​ເຄືອ​ຂ່າຍ​ມື​ຖື​ທີ່​ສາ​ມາດ​ໃຊ້​ໄດ້." + "ເຄືອຂ່າຍມືຖືບໍ່ສາມາດໃຊ້ໄດ້." "ເພື່ອ​ທີ່​ຈະ​ໂທ, ປ້ອນ​ເບີ​ໂທ​ທີ່​ໃຊ້​ໄດ້​ເຂົ້າ​ໄປ." "ບໍ່​ສາ​ມາດ​ໂທ​ໄດ້." "ກຳລັງເລີ່ມຕົ້ນລຳດັບ MMI..." @@ -134,8 +134,8 @@ "ວາງສາຍ" "ການປະຊຸມທາງໂທລະສັບ" "ຢູ່ໃນສາຍ" - "ສືບຕໍ່ການໂທໂດຍໃຊ້ອິນເຕີເນັດມືຖື…" - "ບໍ່ສາມາດສະຫຼັບໄປໃຊ້ເຄືອຂ່າຍ Wi-Fi ໄດ້" - "ການໂທດ້ວຍວິດີໂອຈະຍັງໃຊ້ຜ່ານເຄືອຂ່າຍມືຖືຢູ່ ໂດຍອາດມີການຮຽກເກັບຄ່າບໍລິການຕາມປົກກະຕິ." + "ກຳລັງສືບຕໍ່ສາຍໂດຍໃຊ້ອິນເຕີເນັດມືຖື…" + "ບໍ່ສາມາດສະຫຼັບໄປໃຊ້ເຄືອຂ່າຍ Wi-Fi ໄດ້" + "ການໂທວິດີໂອຈະຍັງຄົງຢູ່ໃນເຄືອຂ່າຍມືຖືຕໍ່ໄປ. ອາດມີການຮຽກເກັບຄ່າບໍລິການມາດຕະຖານ." "ບໍ່ຕ້ອງສະແດງຂໍ້ຄວາມນີ້ອີກ" diff --git a/java/com/android/incallui/res/values-lt/strings.xml b/java/com/android/incallui/res/values-lt/strings.xml index 4d4a0c098a523ebee2f919755818b035d1899595..e63ca7018a3ac77d6f0c3a99dd8f45d709fb2532 100644 --- a/java/com/android/incallui/res/values-lt/strings.xml +++ b/java/com/android/incallui/res/values-lt/strings.xml @@ -33,8 +33,8 @@ "Praleistas skambutis nuo %s" "Vykstantis pokalbis" "Vykstantis darbo skambutis" - "Vykstantis „Wi-Fi“ skambutis" - "Vykstantis „Wi-Fi“ darbo skambutis" + "Vykstantis „Wi-Fi“ skambutis" + "Vykstantis „Wi-Fi“ darbo skambutis" "Sulaikyta" "Gaunamasis skambutis" "Gaunamasis skambutis su nuotrauka" @@ -55,15 +55,15 @@ "Svarbus gaunam. skamb. su nuotr., praneš. ir viet." "Svarbus gaunamasis skambutis su priedais" "Gaunamasis darbo skambutis" - "Gaunamasis „Wi-Fi“ skambutis" - "Gaunamasis „Wi-Fi“ darbo skambutis" + "Gaunamasis „Wi-Fi“ skambutis" + "Gaunamasis „Wi-Fi“ darbo skambutis" "Gaunamasis įtartinas šlamšto skambutis" "Gaunama vaizdo skambučio užklausa" "Nėra paslaugos" "Pasirinktas tinklas (%s) negalimas" "Atsakyti" "Padėti ragelį" - "Vaizdo skambutis" + "Vaizdo skam." "Balsas" "Atsiliepti" "Atmesti" @@ -73,7 +73,7 @@ "Atlikti vaizdo skambutį" "Jei norite skambinti, išjunkite lėktuvo režimą." "Neregistruota tinkle." - "Korinis tinklas nepasiekiamas" + "Mobiliojo ryšio tinklas nepasiekiamas." "Kad galėtumėte paskambinti, įveskite tinkamą numerį." "Nepavyko paskambinti." "Paleidžiama MMI seka..." @@ -134,8 +134,8 @@ "Baigti skambutį" "Konferencinis skambutis" "Skambinant" - "Skambutis tęsiamas naudojant mobiliojo ryšio duomenis…" - "Nepavyko prisijungti prie „Wi-Fi“ tinklo" - "Vaizdo skambutis ir toliau bus vykdomas naudojant mobiliojo ryšio tinklą. Gali būti taikomi įprasti duomenų mokesčiai." + "Skambutis tęsiamas naudojant mobiliojo ryšio duomenis…" + "Nepavyko prisijungti prie „Wi-Fi“ tinklo" + "Vaizdo skambutis ir toliau bus vykdomas naudojant mobiliojo ryšio tinklą. Gali būti taikomi įprasti duomenų mokesčiai." "Daugiau to nerodyti" diff --git a/java/com/android/incallui/res/values-lv/strings.xml b/java/com/android/incallui/res/values-lv/strings.xml index 9be46c4fd8e79bf7fe8a29c8f15490c075bed476..441733a9b74f63e2d2eb941f76f8e029777c3d37 100644 --- a/java/com/android/incallui/res/values-lv/strings.xml +++ b/java/com/android/incallui/res/values-lv/strings.xml @@ -33,8 +33,8 @@ "Neatbildēts zvans no: %s" "Pašreizējā saruna" "Notiekošs darba zvans" - "Notiekošs Wi-Fi zvans" - "Notiekošs darba Wi-Fi zvans" + "Notiekošs Wi-Fi zvans" + "Notiekošs darba Wi-Fi zvans" "Aizturēts" "Ienākošais zvans" "Ienākošais zvans ar fotoattēlu" @@ -55,8 +55,8 @@ "Zvans ar fotoattēlu, ziņojumu un atrašanās vietu" "Svarīgs ienākošais zvans ar pielikumiem" "Ienākošs darba zvans" - "Ienākošs Wi-Fi zvans" - "Ienākošs darba Wi-Fi zvans" + "Ienākošs Wi-Fi zvans" + "Ienākošs darba Wi-Fi zvans" "Ienākošs, iespējams, nevēlams zvans" "Ienākošs video pieprasījums" "Nav pakalpojuma" @@ -73,7 +73,7 @@ "Pārsūtīt videozvanu" "Lai veiktu zvanu, vispirms izslēdziet lidojuma režīmu." "Tīklā nav reģistrēts." - "Mobilais tīkls nav pieejams." + "Mobilais tīkls nav pieejams." "Lai veiktu zvanu, ievadiet derīgu numuru." "Nevar veikt zvanu." "Notiek MMI secības startēšana…" @@ -134,8 +134,8 @@ "Beigt zvanu" "Konferences zvans" "Notiek zvans" - "Zvans tiek turpināts, izmantojot mobilos datus…" - "Nevarēja pārslēgt uz Wi-Fi tīklu" - "Videozvans tiks turpināts mobilo sakaru tīklā. Var tikt piemērota standarta maksa par datu pārraidi." + "Zvans tiek turpināts, izmantojot mobilos datus…" + "Nevarēja pārslēgt uz Wi-Fi tīklu" + "Videozvans tiks turpināts mobilo sakaru tīklā. Var tikt piemērota standarta maksa par datu pārraidi." "Vairs nerādīt šo ziņojumu" diff --git a/java/com/android/incallui/res/values-mk/strings.xml b/java/com/android/incallui/res/values-mk/strings.xml index 03be1d951eb27be4f14adc307c1d00071c1ad0fc..b712fe03218a0864cc677651c00b9bb9fce2e91d 100644 --- a/java/com/android/incallui/res/values-mk/strings.xml +++ b/java/com/android/incallui/res/values-mk/strings.xml @@ -33,8 +33,8 @@ "Пропуштен повик од %s" "Тековен повик" "Тековен работен повик" - "Појдовен повик преку Wi-Fi" - "Тековен работен повик преку Wi-Fi" + "Тековен повик преку Wi-Fi" + "Тековен работен повик преку Wi-Fi" "На чекање" "Дојдовен повик" "Дојдовен повик со фотографија" @@ -55,8 +55,8 @@ "Важен дојдовен повик со фото., порака и локација" "Важен дојдовен повик со прилози" "Дојдовен работен повик" - "Дојдовен повик преку Wi-Fi" - "Дојдовен работен повик преку Wi-Fi" + "Дојдовен повик преку Wi-Fi" + "Дојдовен работен повик преку Wi-Fi" "Дојдовниот повик може да е спам" "Дојдовно побарување за видео" "Нема услуга" @@ -73,7 +73,7 @@ "Прифатете видеоповик" "За да воспоставите повик, прво исклучете режим на работа во авион." "Не е регистриран на мрежа." - "Не е достапна мобилна мрежа." + "Нема достапна мобилна мрежа." "За да повикате, внесете важечки број." "Не може да повика." "Започнува MMI низа..." @@ -134,8 +134,8 @@ "Завршете го повикот" "Конференциски повик" "Повик во тек" - "Повикот ќе продолжи преку мобилен интернет…" - "Не можеше да се префрли на Wi-Fi-мрежа" - "Видеоповикот ќе остане на мобилната мрежа. Може да се наплати за интернет-сообраќај." + "Повикот ќе продолжи преку мобилен интернет…" + "Не можеше да се префрли на Wi-Fi-мрежа" + "Видеоповикот ќе остане на мобилната мрежа. Може да се наплати за мобилен интернет." "Не го прикажувај ова повторно" diff --git a/java/com/android/incallui/res/values-ml/strings.xml b/java/com/android/incallui/res/values-ml/strings.xml index e207ccd455172bca9880327c57b8b21c952f5ae6..db9f5601836bbd16cb9f2178b8a8c04c153baf79 100644 --- a/java/com/android/incallui/res/values-ml/strings.xml +++ b/java/com/android/incallui/res/values-ml/strings.xml @@ -33,8 +33,8 @@ "%s എന്നതിൽ നിന്നുള്ള മിസ്‌ഡ് കോൾ" "കോൾ സജീവമാണ്" "ഓൺഗോയിംഗ് ഔദ്യോഗിക കോൾ" - "ഓൺഗോയിംഗ് വൈഫൈ കോൾ" - "ഓൺഗോയിംഗ് വൈഫൈ ഔദ്യോഗിക കോൾ" + "നിലവിലുള്ള വൈഫൈ കോൾ" + "നിലവിലുള്ള വൈഫൈ ഔദ്യോഗിക കോൾ" "ഹോള്‍ഡിലാണ്" "ഇന്‍കമിംഗ് കോള്‍" "ഫോട്ടോ ഉൾപ്പെട്ട ഇൻകമിംഗ് കോൾ" @@ -55,8 +55,8 @@ "ഫോട്ടോയും സന്ദേശവും ലൊക്കേഷനും ഉൾപ്പെട്ട പ്രധാനപ്പെട്ട ഇൻകമിംഗ് കോൾ" "അറ്റാച്ച്‌മെന്റുകൾ ഉൾപ്പെട്ട പ്രധാനപ്പെട്ട ഇൻകമിംഗ് കോൾ" "ഇൻകമിംഗ് ഔദ്യോഗിക കോൾ" - "ഇൻകമിംഗ് വൈഫൈ കോൾ" - "ഇൻകമിംഗ് വൈഫൈ ഔദ്യോഗിക കോൾ" + "ഇൻകമിംഗ് വൈഫൈ കോൾ" + "ഇൻകമിംഗ് വൈഫൈ ഔദ്യോഗിക കോൾ" "സംശയാസ്‌പദമായ ഇൻകമിംഗ് സ്‌പാം കോൾ" "ഇൻകമിംഗ് വീഡിയോ അഭ്യർത്ഥന" "സേവനമില്ല" @@ -73,7 +73,7 @@ "വീഡിയോ കോൾ അറ്റൻഡ് ചെയ്യുക" "ഒരു കോൾ വിളിക്കാൻ, ആദ്യം ഫ്ലൈറ്റ് മോഡ് ഓഫുചെയ്യുക." "നെറ്റ്‌വർക്കിൽ രജിസ്റ്റർ ചെയ്‌തിട്ടില്ല." - "സെല്ലുലാർ നെറ്റ്‌വർക്ക് ലഭ്യമല്ല." + "മൊബൈൽ നെറ്റ്‌വർക്ക് ലഭ്യമല്ല." "ഒരു കോൾ ചെയ്യുന്നതിന്, സാധുതയുള്ള നമ്പർ നൽകുക." "കോൾ ചെയ്യാനായില്ല." "MMI സീക്വൻസ് ആരംഭിക്കുന്നു…" @@ -134,8 +134,8 @@ "കോള്‍ അവസാനിപ്പിക്കൂ" "കോൺഫറൻസ് കോൾ" "കോളിലാണ്" - "സെല്ലുലാർ ഡാറ്റ ഉപയോഗിച്ച് കോൾ തുടരുന്നു…" - "Wi-Fi നെറ്റ്‌വർക്കിലേക്ക് മാറാനായില്ല" - "സെല്ലുലാർ നെറ്റ്‌വർക്കിൽത്തന്നെ വീഡിയോ കോൾ തുടരും. സാധാരണ ഡാറ്റ നിരക്കുകൾ ബാധകമാകാം." + "മൊബൈൽ ഡാറ്റ ഉപയോഗിച്ച് കോൾ തുടരുന്നു…" + "വൈഫൈ നെറ്റ്‌വർക്കിലേക്ക് മാറാനായില്ല" + "മൊബൈൽ നെറ്റ്‌വർക്കിൽത്തന്നെ വീഡിയോ കോൾ തുടരും. സാധാരണ ഡാറ്റ നിരക്കുകൾ ബാധകമാകാം." "ഇത് വീണ്ടും കാണിക്കരുത്" diff --git a/java/com/android/incallui/res/values-mn/strings.xml b/java/com/android/incallui/res/values-mn/strings.xml index 0e269170bdac0fb6f1f1161c9e4a851fad7bc364..7757af9ac823a43fc695b402b5b82eaf422b09a5 100644 --- a/java/com/android/incallui/res/values-mn/strings.xml +++ b/java/com/android/incallui/res/values-mn/strings.xml @@ -33,8 +33,8 @@ "%s-н аваагүй дуудлага" "Хийгдэж буй дуудлага" "Залгаж буй албаны дуудлага" - "Ярьж буй Wi-Fi дуудлага" - "Залгаж буй Wi-Fi албаны дуудлага" + "Холбогдсон Wi-Fi дуудлага" + "Холбогдсон Wi-Fi албаны дуудлага" "Хүлээлгэнд" "Ирж буй дуудлага" "Зураг бүхий орж ирсэн дуудлага" @@ -55,8 +55,8 @@ "Зураг, зурвас, байршилтай орж ирсэн чухал дуудлага" "Хавсралт бүхий орж ирсэн чухал дуудлага" "Ирж буй албаны дуудлага" - "Орж ирсэн Wi-Fi дуудлага" - "Ирж буй Wi-Fi албаны дуудлага" + "Ирж буй Wi-Fi дуудлага" + "Ирж буй Wi-Fi албаны дуудлага" "Орж ирсэн сэжигтэй спам дуудлага" "Ирж буй видео хүсэлт" "Үйлчилгээ байхгүй" @@ -73,7 +73,7 @@ "Видео дуудлага авах" "Дуудлага хийхийн тулд юуны өмнө Нислэгийн төлвийг идэвхгүйжүүлнэ үү." "Сүлжээнд бүртгэгдээгүй." - "Үүрэн сүлжээ байхгүй." + "Мобайл сүлжээ байхгүй." "Дуудлага хийхийн тулд хүчин төгөлдөр дугаар оруулна уу." "Дуудлага хийх боломжгүй байна." "MMI дарааллыг эхлүүлж байна…" @@ -134,8 +134,8 @@ "Дуудлагыг таслах" "Хурлын дуудлага" "Ярьж байна" - "Үүрэн дата ашиглан дуудлагыг үргэлжлүүлж байна..." - "Wi-Fi сүлжээ рүү сэлгэж чадсангүй" - "Видео дуудлага үүрэн сүлжээнд үлдэнэ. Стандарт датаны төлбөр тооцогдож магадгүй." + "Мобайл дата ашиглан дуудлагыг үргэлжлүүлж байна…" + "Wi-Fi сүлжээ рүү сэлгэж чадсангүй" + "Видео дуудлага мобайл сүлжээнд үлдэнэ. Стандарт датаны төлбөр тооцогдож магадгүй." "Үүнийг дахин бүү үзүүл" diff --git a/java/com/android/incallui/res/values-mr/strings.xml b/java/com/android/incallui/res/values-mr/strings.xml index c56c6101245cafa943da4fdf82597e31bfac9c91..e422897b02c888a86ee4233855d5e05ddd7dc0bf 100644 --- a/java/com/android/incallui/res/values-mr/strings.xml +++ b/java/com/android/incallui/res/values-mr/strings.xml @@ -33,8 +33,8 @@ "%s कडील सुटलेला कॉल" "सुरू असलेला कॉल" "सुरु असलेला कार्य कॉल" - "सुरु असलेला वाय-फाय कॉल" - "सुरु असलेला वाय-फाय कार्य कॉल" + "सुरु असलेला वाय-फाय कॉल" + "सुरु असलेला वाय-फाय कार्य कॉल" "होल्ड वर" "येणारा कॉल" "फोटोसह येणारा कॉल" @@ -55,8 +55,8 @@ "फोटो, संदेश आणि स्थानासह महत्त्वाचा येणारा कॉल" "संलग्नकांसह महत्त्वाचा येणारा कॉल" "येणारा कार्य कॉल" - "येणारा वाय-फाय कॉल" - "येणारा वाय-फाय कार्य कॉल" + "येणारा वाय-फाय कॉल" + "येणारा वाय-फाय कार्य कॉल" "येणारा संशयित स्पॅम कॉल" "येणारी व्हिडिओ विनंती" "सेवा नाही" @@ -73,7 +73,7 @@ "व्हिडिओ कॉल घ्या" "कॉल करण्यासाठी, प्रथम विमान मोड बंद करा." "नेटवर्कवर नोंदणीकृत नाही." - "सेल्युलर नेटवर्क उपलब्ध नाही." + "मोबाइल नेटवर्क उपलब्ध नाही." "कॉल करण्यासाठी, एक वैध नंबर प्रविष्ट करा." "कॉल करू शकत नाही." "MMI क्रम प्रारंभ करीत आहे..." @@ -134,8 +134,8 @@ "कॉल समाप्त करा" "परिषद कॉल" "कॉल मध्ये" - "मोबाइल डेटा वापरून कॉल सुरू ठेवत आहेत…" - "वाय-फाय नेटवर्कवर स्विच करणे शक्य झाले नाही" - "व्हिडिओ कॉल मोबाईल नेटवर्कवर असेल. मानक डेटा शुल्क लागू होऊ शकतात." + "मोबाइल डेटा वापरून कॉल करणे सुरु ठेवत आहे..." + "वाय-फाय नेटवर्कवर स्विच करणे शक्य झाले नाही" + "व्हिडिओ कॉल मोबाइल नेटवर्कवर असेल. मानक डेटा शुल्क लागू शकतात." "हे पुन्हा दर्शवू नका" diff --git a/java/com/android/incallui/res/values-ms/strings.xml b/java/com/android/incallui/res/values-ms/strings.xml index a5be5934d617763210d9e3e1372ca6719446e589..7a5900adbac5e69eaa4d55603fc6321795817a1d 100644 --- a/java/com/android/incallui/res/values-ms/strings.xml +++ b/java/com/android/incallui/res/values-ms/strings.xml @@ -33,8 +33,8 @@ "Panggilan tidak dijawab daripada %s" "Panggilan sedang berjalan" "Panggilan sedang berlangsung daripada tempat kerja" - "Panggilan Wi-Fi sedang berlangsung" - "Panggian Wi-Fi sedang berlangsung daripada tempat kerja" + "Panggilan Wi-Fi sedang berlangsung" + "Panggilan Wi-Fi daripada tempat kerja sedang berlangsung" "Ditunda" "Panggilan masuk" "Panggilan masuk dengan foto" @@ -55,15 +55,15 @@ "Panggilan masuk penting dengan foto, mesej dan lokasi" "Panggilan masuk penting dengan lampiran" "Panggilan masuk daripada tempat kerja" - "Panggilan Wi-Fi masuk" - "Panggilan masuk melalui Wi-Fi daripada tempat kerja" + "Panggilan masuk Wi-Fi" + "Panggilan masuk Wi-Fi daripada tempat kerja" "Disyaki panggilan spam masuk" "Permintaan video masuk" "Tiada perkhidmatan" "Rangkaian pilihan (%s) tidak tersedia" "Jawapan" "Letakkan gagang" - "Video dalam strim" + "Video" "Suara" "Terima" "Tolak" @@ -73,7 +73,7 @@ "Jawab Panggilan Video" "Untuk membuat panggilan, matikan mod Pesawat terlebih dahulu." "Tidak didaftarkan pada rangkaian." - "Rangkaian selular tidak tersedia." + "Rangkaian mudah alih tidak tersedia." "Untuk membuat panggilan, masukkan nombor yang sah." "Tidak dapat memanggil." "Memulakan jujukan MMI..." @@ -134,8 +134,8 @@ "Tamatkan panggilan" "Panggilan sidang" "Dalam panggilan" - "Meneruskan panggilan menggunakan data selular…" - "Tidak dapat beralih ke rangkaian Wi-Fi" - "Panggilan video akan menggunakan rangkaian selular. Caj data standard boleh dikenakan." + "Meneruskan panggilan menggunakan data mudah alih…" + "Tidak dapat beralih ke rangkaian Wi-Fi" + "Panggilan video akan menggunakan rangkaian mudah alih. Caj data standard boleh dikenakan." "Jangan tunjukkan ini lagi" diff --git a/java/com/android/incallui/res/values-my/strings.xml b/java/com/android/incallui/res/values-my/strings.xml index 5cca498743c40485314cb10c3c5eb9eaf6719ea6..5513b79751eacc7e3a2251228f10d391a82be5ca 100644 --- a/java/com/android/incallui/res/values-my/strings.xml +++ b/java/com/android/incallui/res/values-my/strings.xml @@ -33,8 +33,8 @@ "%s မှလွတ်သွားသော ခေါ်ဆိုမှု" "ဆက်သွားနေသော ဖုန်းခေါ်မှု" "ခေါ်နေဆဲ အလုပ်မှ ခေါ်ဆိုမှု" - "ခေါ်နေဆဲ ဝိုင်ဖိုင်ခေါ်ဆိုမှု" - "ခေါ်နေဆဲ Wi-Fi အလုပ်မှ ခေါ်ဆိုမှု" + "လက်ရှိ Wi-Fi ဖုန်းခေါ်ဆိုမှု" + "လက်ရှိ Wi-Fi အလုပ်ဖုန်းခေါ်ဆိုမှု" "ခဏ ကိုင်ထားစဉ်" "အဝင်ခေါ်ဆိုမှု" "ဓာတ်ပုံဖြင့် အဝင်ခေါ်ဆိုမှု" @@ -55,8 +55,8 @@ "ဓာတ်ပုံ၊မက်ဆေ့ဂျ်၊တည်နေရာဖြင့် အရေးကြီးခေါ်ဆိုမှု" "ပူးတွဲပါဖိုင်များဖြင့် အရေးကြီးသော အဝင်ခေါ်ဆိုမှု" "အဝင် ခေါ်ဆိုမှု" - "ဝင်လာသော ဝိုင်ဖိုင်ခေါ်ဆိုမှု" - "Wi-Fi အလုပ်မှ အဝင် ခေါ်ဆိုမှု" + "အဝင် Wi‑Fi ဖုန်းခေါ်ဆိုမှု" + "အဝင် Wi‑Fi အလုပ်ဖုန်းခေါ်ဆိုမှု" "ခေါ်နေသော မသင်္ကာဖွယ်ရာ စပမ်းခေါ်ဆိုမှု" "အသံ ခေါ်ဆိုမှုအဖြစ် တောင်းဆိုမှု" "ဝန်ဆောင်မှု မရှိပါ" @@ -73,7 +73,7 @@ "ဗီဒီယိုခေါ်ဆိုမှုလွှဲယူပါ" "ဖုန်းခေါ်ဆိုမှုပြုရန်, လေယာဥ်ပျံပေါ်အသုံးပြုသောစနစ်ကို ပိတ်ပါ" "ကွန်ယက်ပေါ်မှာ မှတ်ပုံတင်မှု မပြုလုပ်ထားပါ" - "ဆဲလ်လူလာ ကွန်ရက် မရှိပါ။" + "မိုဘိုင်းကွန်ရက် မရနိုင်ပါ" "ဖုန်းခေါ်ရန်အတွက်၊ သင့်လျော်သည့်နံပါတ် ရိုက်ထည့်ပါ။" "မခေါ်ဆိုနိုင်ပါ။" "MMI အမှတ်စဉ်ကို စတင်နေပါသည်…" @@ -134,8 +134,8 @@ "ခေါ်ဆိုမှုအပြီးသတ်ရန်" "အစည်းအဝေးခေါ်ဆိုမှု" "ဖုန်းပြောနေသည်" - "ဆယ်လူလာဒေတာသုံးပြီး ဆက်လက်ခေါ်ဆိုနေသည်…" - "Wi-Fi ကွန်ရက်သို့ မပြောင်းနိုင်ပါ" - "ဗီဒီယိုခေါ်ဆိုမှုသည် ဆယ်လူလာကွန်ရက်တွင် ဆက်ရှိနေပါမည်။ ပုံမှန်ဒေတာသုံးစွဲခများ ကျသင့်နိုင်ပါသည်။" + "မိုဘိုင်းဒေတာသုံးပြီး ဆက်လက်ခေါ်ဆိုနေသည်…" + "Wi‑Fi ကွန်ရက်သို့ မပြောင်းနိုင်ပါ" + "ဗီဒီယိုခေါ်ဆိုမှုသည် မိုဘိုင်းကွန်ရက်တွင် ဆက်ရှိနေပါမည်။ ပုံမှန်ဒေတာသုံးစွဲခများ ကျသင့်နိုင်ပါသည်။" "ဤသည်ကို ထပ်မပြပါနှင့်" diff --git a/java/com/android/incallui/res/values-nb/strings.xml b/java/com/android/incallui/res/values-nb/strings.xml index d0883a2cc84af5f86763af6c9b385f72bde70ef9..4e8d796682ddb893c56a401ef3b358b39decabd2 100644 --- a/java/com/android/incallui/res/values-nb/strings.xml +++ b/java/com/android/incallui/res/values-nb/strings.xml @@ -33,8 +33,8 @@ "Tapt anrop fra %s" "Pågående samtale" "Pågående jobbanrop" - "Pågående Wi-Fi-anrop" - "Pågående jobbanrop via Wi-Fi" + "Pågående Wi-Fi-samtale" + "Pågående jobbsamtale via Wi-Fi" "Parkert" "Innkommende samtale" "Innkommende anrop med bilde" @@ -55,8 +55,8 @@ "Viktig anrop med bilde, melding og posisjon" "Viktig innkommende anrop med vedlegg" "Innkommende jobbanrop" - "Innkommende anrop via Wi-Fi" - "Innkommende jobbanrop via Wi-Fi" + "Innkommende anrop via Wi-Fi" + "Innkommende jobbanrop via Wi-Fi" "Innkommende anrop fra en mulig useriøs oppringer" "Innkommende videoforespørsel" "Ingen tjeneste" @@ -73,7 +73,7 @@ "Svar på videoanropet" "For å ringe, slå av flymodus først." "Ikke registrert på nettverket." - "Mobilnettverket er ikke tilgjengelig." + "Mobilnettverket er ikke tilgjengelig." "Skriv inn et gyldig nummer for å plassere en samtale." "Kan ikke ringe." "Begynner MMI-sekvens…" @@ -134,8 +134,8 @@ "Avslutt samtalen" "Telefonmøte" "Samtale pågår" - "Fortsetter samtalen via mobildata …" - "Kan ikke bytte til Wi-Fi-nettverk" - "Videosamtalen blir værende på mobilnettet. Standard datakostnader kan påløpe." + "Fortsetter samtalen via mobildata …" + "Kunne ikke bytte til Wi-Fi-nettverk" + "Videosamtalen blir værende på mobilnettverket. Standard datakostnader kan påløpe." "Ikke vis dette igjen" diff --git a/java/com/android/incallui/res/values-ne/strings.xml b/java/com/android/incallui/res/values-ne/strings.xml index b5894797cbcfc9323ae8548fcfc34107f158260c..b19c2ae8011a615167a6de3fa20f4ed7ca2956fb 100644 --- a/java/com/android/incallui/res/values-ne/strings.xml +++ b/java/com/android/incallui/res/values-ne/strings.xml @@ -33,8 +33,8 @@ "%s बाट आएको छुटेको कल" "चलिरहेको कल" "चालू रहेको कार्यको कल" - "चालु रहेको WI-Fi कल" - "चालू रहेको Wi-Fi कार्यको कल" + "जारी रहेको WI-Fi कल" + "Wi-Fi मार्फत जारी रहेको कार्यालयको कल" "होल्डमा" "आगमन कल" "तस्बिरसहितको आगमन कल" @@ -55,8 +55,8 @@ "तस्बिर, सन्देश र स्थानसहितको महत्त्वपूर्ण आगमन कल" "समावेश गरिएको वस्तुसहितको महत्त्वपूर्ण आगमन कल" "आगमन कार्यको कल" - "आगमन Wi-Fi कल" - "आगमन Wi-Fi कार्यको कल" + "Wi-Fi मार्फत आगमन कल" + "Wi-Fi मार्फत कार्यालयबाट आएको कल" "शंकास्पद आगमन स्प्याम कल" "आगमन भिडियो अनुरोध" "सेवा छैन" @@ -73,7 +73,7 @@ "भिडियो कल लिनुहोस्" "कल राख्नका लागि, पहिले हवाइजहाज मोड बन्द गर्नुहोस्।" "नेटवर्कमा दर्ता भएको छैन।" - "सेलुलर सञ्जाल उपलब्ध छैन।" + "मोबाइल नेटवर्क उपलब्ध छैन।" "एक कल गर्नको लागि, एक वैध नम्बर प्रविष्ट गर्नुहोस्।" "कल गर्न सक्दैन।" "MMI अनुक्रम सुरु गर्दै..." @@ -134,8 +134,8 @@ "कल अन्त्य गर्नुहोस्" "सम्मेलन कल" "कलमा" - "सेलुलर डेटा प्रयोग गरी कललाई निरन्तरता दिइँदै…" - "Wi-Fi नेटवर्कमा स्विच गर्न सकिएन" - "भिडियो कल सेलुलर नेटवर्कमा रहने छ। मानक डेटा शुल्क लाग्न सक्छ।" + "मोबाइल डेटा प्रयोग गरी कललाई निरन्तरता दिइँदै…" + "Wi-Fi नेटवर्कमा स्विच गर्न सकिएन" + "भिडियो कल मोबाइल नेटवर्कमा रहने छ। मानक डेटा शुल्क लाग्न सक्छ।" "यसलाई फेरि नदेखाउनुहोस्" diff --git a/java/com/android/incallui/res/values-nl/strings.xml b/java/com/android/incallui/res/values-nl/strings.xml index 930acdc86725ecf6d92e14e55a634fdf37feda8c..73508818e879d7868a764bf28be57f3a7e28b638 100644 --- a/java/com/android/incallui/res/values-nl/strings.xml +++ b/java/com/android/incallui/res/values-nl/strings.xml @@ -33,8 +33,8 @@ "Gemiste oproep van %s" "Actieve oproep" "Actieve zakelijke oproep" - "Actieve wifi-oproep" - "Actieve zakelijke oproep via wifi" + "Actieve wifi-oproep" + "Actieve zakelijke oproep via wifi" "In de wacht" "Inkomende oproep" "Inkomende oproep met foto" @@ -55,15 +55,15 @@ "Belangrijke oproep met foto, bericht en locatie" "Belangrijke inkomende oproep met bijlagen" "Inkomende zakelijke oproep" - "Inkomende wifi-oproep" - "Inkomende zakelijke oproep via wifi" + "Inkomende wifi-oproep" + "Inkomende zakelijke oproep via wifi" "Inkomende vermoedelijke spamoproep" "Binnenkomend videoverzoek" "Geen service" "Geselecteerd netwerk (%s) niet beschikbaar" "Antwoord" "Ophangen" - "InStream-video" + "Video" "Spraak" "Accepteren" "Weigeren" @@ -73,7 +73,7 @@ "Videogesprek beantwoorden" "Als je wilt bellen, moet je eerst de Vliegtuigmodus uitschakelen." "Niet geregistreerd op netwerk." - "Mobiel netwerk niet beschikbaar." + "Mobiel netwerk niet beschikbaar." "Als je wilt bellen, moet je een geldig nummer invoeren." "Kan niet bellen." "MMI-reeks starten..." @@ -134,8 +134,8 @@ "Oproep beëindigen" "Telefonische vergadering" "In gesprek" - "Gesprek voortzetten via mobiele data…" - "Overschakelen naar wifi-netwerk mislukt" - "Videogesprek loopt via mobiel netwerk. Er kunnen standaard datakosten in rekening worden gebracht." + "Gesprek voortzetten via mobiele data…" + "Overschakelen naar wifi-netwerk mislukt" + "Videogesprek loopt via mobiel netwerk. Er kunnen standaard datakosten in rekening worden gebracht." "Dit niet meer weergeven" diff --git a/java/com/android/incallui/res/values-no/strings.xml b/java/com/android/incallui/res/values-no/strings.xml index d0883a2cc84af5f86763af6c9b385f72bde70ef9..4e8d796682ddb893c56a401ef3b358b39decabd2 100644 --- a/java/com/android/incallui/res/values-no/strings.xml +++ b/java/com/android/incallui/res/values-no/strings.xml @@ -33,8 +33,8 @@ "Tapt anrop fra %s" "Pågående samtale" "Pågående jobbanrop" - "Pågående Wi-Fi-anrop" - "Pågående jobbanrop via Wi-Fi" + "Pågående Wi-Fi-samtale" + "Pågående jobbsamtale via Wi-Fi" "Parkert" "Innkommende samtale" "Innkommende anrop med bilde" @@ -55,8 +55,8 @@ "Viktig anrop med bilde, melding og posisjon" "Viktig innkommende anrop med vedlegg" "Innkommende jobbanrop" - "Innkommende anrop via Wi-Fi" - "Innkommende jobbanrop via Wi-Fi" + "Innkommende anrop via Wi-Fi" + "Innkommende jobbanrop via Wi-Fi" "Innkommende anrop fra en mulig useriøs oppringer" "Innkommende videoforespørsel" "Ingen tjeneste" @@ -73,7 +73,7 @@ "Svar på videoanropet" "For å ringe, slå av flymodus først." "Ikke registrert på nettverket." - "Mobilnettverket er ikke tilgjengelig." + "Mobilnettverket er ikke tilgjengelig." "Skriv inn et gyldig nummer for å plassere en samtale." "Kan ikke ringe." "Begynner MMI-sekvens…" @@ -134,8 +134,8 @@ "Avslutt samtalen" "Telefonmøte" "Samtale pågår" - "Fortsetter samtalen via mobildata …" - "Kan ikke bytte til Wi-Fi-nettverk" - "Videosamtalen blir værende på mobilnettet. Standard datakostnader kan påløpe." + "Fortsetter samtalen via mobildata …" + "Kunne ikke bytte til Wi-Fi-nettverk" + "Videosamtalen blir værende på mobilnettverket. Standard datakostnader kan påløpe." "Ikke vis dette igjen" diff --git a/java/com/android/incallui/res/values-pa/strings.xml b/java/com/android/incallui/res/values-pa/strings.xml index 22cd7da3b22cf86fbb9ee17d3dfd6dd67a0c7e4f..b21cbd3a6ab9969bc84faa85a14e64d1f4e16a99 100644 --- a/java/com/android/incallui/res/values-pa/strings.xml +++ b/java/com/android/incallui/res/values-pa/strings.xml @@ -33,8 +33,8 @@ "%s ਤੋਂ ਖੁੰਝੀ ਹੋਈ ਕਾਲ" "ਜਾਰੀ ਕਾਲ" "ਕੰਮ ਸਬੰਧਿਤ ਜਾਰੀ ਕਾਲ" - "ਜਾਰੀ Wi-Fi ਕਾਲ" - "ਕੰਮ ਸਬੰਧਿਤ ਜਾਰੀ Wi-Fi ਕਾਲ" + "ਜਾਰੀ Wi‑Fi ਕਾਲ" + "ਕੰਮ ਸਬੰਧੀ ਜਾਰੀ Wi‑Fi ਕਾਲ" "ਹੋਲਡ ਤੇ" "ਇਨਕਮਿੰਗ ਕਾਲ" "ਫ਼ੋਟੋ ਨਾਲ ਇਨਕਮਿੰਗ ਕਾਲ" @@ -55,8 +55,8 @@ "ਫ਼ੋਟੋ, ਸੁਨੇਹੇ ਅਤੇ ਟਿਕਾਣੇ ਨਾਲ ਮਹੱਤਵਪੂਰਨ ਇਨਕਮਿੰਗ ਕਾਲ" "ਅਟੈਚਮੈਂਟਾਂ ਨਾਲ ਮਹੱਤਵਪੂਰਨ ਇਨਕਮਿੰਗ ਕਾਲ" "ਕੰਮ ਸਬੰਧਿਤ ਆ ਰਹੀ ਕਾਲ" - "ਇਨਕਮਿੰਗ Wi-Fi ਕਾਲ" - "ਕੰਮ ਸਬੰਧਿਤ ਆ ਰਹੀ Wi-Fi ਕਾਲ" + "ਆ ਰਹੀ Wi‑Fi ਕਾਲ" + "ਕੰਮ ਸਬੰਧੀ ਆ ਰਹੀ Wi‑Fi ਕਾਲ" "ਸ਼ੱਕੀ ਸਪੈਮ ਕਾਲ ਆ ਰਹੀ ਹੈ" "ਇਨਕਮਿੰਗ ਵੀਡੀਓ ਬੇਨਤੀ" "ਕੋਈ ਸੇਵਾ ਨਹੀਂ" @@ -73,7 +73,7 @@ "ਵੀਡੀਓ ਕਾਲ ਲਓ" "ਇੱਕ ਕਾਲ ਕਰਨ ਲਈ, ਪਹਿਲਾਂ ਏਅਰਪਲੇਨ ਮੋਡ ਬੰਦ ਕਰੋ।" "ਨੈਟਵਰਕ ਤੇ ਰਜਿਸਟਰ ਨਹੀਂ ਕੀਤਾ।" - "ਸੈਲਿਊਲਰ ਨੈਟਵਰਕ ਉਪਲਬਧ ਨਹੀਂ" + "ਮੋਬਾਈਲ ਨੈੱਟਵਰਕ ਉਪਲਬਧ ਨਹੀਂ ਹੈ।" "ਇੱਕ ਕਾਲ ਕਰਨ ਲਈ, ਇੱਕ ਪ੍ਰਮਾਣਿਕ ਨੰਬਰ ਦਰਜ ਕਰੋ।" "ਕਾਲ ਨਹੀਂ ਕਰ ਸਕਦਾ।" "MMI ਕੜੀ ਚਾਲੂ ਕਰ ਰਿਹਾ ਹੈ…" @@ -134,8 +134,8 @@ "ਕਾਲ ਸਮਾਪਤ ਕਰੋ" "ਕਾਨਫਰੰਸ ਕਾਲ" "ਕਾਲ ਵਿੱਚ" - "ਸੈਲਿਊਲਰ ਡੈਟੇ ਦੀ ਵਰਤੋਂ ਨਾਲ ਕਾਲ ਜਾਰੀ ਰੱਖੀ ਜਾ ਰਹੀ ਹੈ…" - "Wi-Fi ਨੈੱਟਵਰਕ \'ਤੇ ਬਦਲੀ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕੀ" - "ਵੀਡੀਓ ਕਾਲ ਸੈਲਿਊਲਰ ਨੈੱਟਵਰਕ \'ਤੇ ਰਹੇਗੀ। ਸਧਾਰਨ ਡੈਟਾ ਖਰਚੇ ਲਾਗੂ ਹੋ ਸਕਦੇ ਹਨ।" + "ਮੋਬਾਈਲ ਡੈਟੇ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਕਾਲ ਜਾਰੀ ਰੱਖੀ ਜਾ ਰਹੀ ਹੈ…" + "Wi‑Fi ਨੈੱਟਵਰਕ \'ਤੇ ਬਦਲੀ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕੀ" + "ਵੀਡੀਓ ਕਾਲ ਮੋਬਾਈਲ ਨੈੱਟਵਰਕ \'ਤੇ ਜਾਰੀ ਰਹੇਗੀ। ਮਿਆਰੀ ਡੈਟਾ ਖਰਚੇ ਲਾਗੂ ਹੋ ਸਕਦੇ ਹਨ।" "ਇਸ ਨੂੰ ਦੁਬਾਰਾ ਨਾ ਵਿਖਾਓ" diff --git a/java/com/android/incallui/res/values-pl/strings.xml b/java/com/android/incallui/res/values-pl/strings.xml index 77c83399f0b569de6d62160578b68542e6de493b..451c8ba73c456998dfe67d4e4132861c0a11357b 100644 --- a/java/com/android/incallui/res/values-pl/strings.xml +++ b/java/com/android/incallui/res/values-pl/strings.xml @@ -33,8 +33,8 @@ "Nieodebrane połączenie od: %s" "Trwa połączenie" "Trwa połączenie służbowe" - "Trwające połączenie przez Wi-Fi" - "Trwa połączenie służbowe przez Wi-Fi" + "Trwające połączenie przez Wi-Fi" + "Trwa połączenie służbowe przez Wi-Fi" "Oczekujące" "Połączenie" "Połączenie przychodzące ze zdjęciem" @@ -55,8 +55,8 @@ "Ważne połączenie przychodzące z załącznikami" "Ważne połączenie przychodzące z załącznikami" "Przychodzące połączenie służbowe" - "Przychodzące połączenie przez Wi-Fi" - "Przychodzące połączenie służbowe przez Wi-Fi" + "Przychodzące połączenie przez Wi-Fi" + "Przychodzące połączenie służbowe przez Wi-Fi" "Przychodzące połączenie podejrzanie o spam" "Przychodzące żądanie wideo" "Brak usługi" @@ -73,7 +73,7 @@ "Odbierz rozmowę wideo" "Aby rozpocząć połączenie, wyłącz najpierw tryb samolotowy" "Nie zarejestrowano w sieci" - "Sieć komórkowa jest niedostępna." + "Sieć komórkowa jest niedostępna." "Aby zadzwonić, wybierz prawidłowy numer." "Nie można dzwonić." "Rozpoczynanie sekwencji MMI..." @@ -134,8 +134,8 @@ "Zakończ połączenie" "Połączenie konferencyjne" "W trakcie rozmowy" - "Kontynuuję rozmowę przy użyciu transmisji danych komórkowych…" - "Nie udało się przełączyć na sieć Wi-Fi" - "Rozmowa wideo pozostanie w sieci komórkowej. Za transfer danych może zostać pobrana opłata." + "Kontynuuję rozmowę przy użyciu mobilnej transmisji danych…" + "Nie udało się przełączyć na sieć Wi-Fi" + "Rozmowa wideo będzie nadal prowadzona przez sieć komórkową. Za transfer danych może zostać pobrana opłata." "Nie pokazuj ponownie tego komunikatu" diff --git a/java/com/android/incallui/res/values-pt-rBR/strings.xml b/java/com/android/incallui/res/values-pt-rBR/strings.xml index b0e46dfa3528ae795c14ff268c5036a8b2a024b1..f3c1b236736223abe6d31c7223878cc5e21940e1 100644 --- a/java/com/android/incallui/res/values-pt-rBR/strings.xml +++ b/java/com/android/incallui/res/values-pt-rBR/strings.xml @@ -33,8 +33,8 @@ "Chamada perdida de %s" "Chamada em andamento" "Chamada de trabalho em andamento" - "Chamada Wi-Fi em andamento" - "Chamada trabalho por Wi-Fi em andamento" + "Chamada por Wi-Fi em andamento" + "Chamada de trabalho por Wi-Fi em andamento" "Em espera" "Chamada recebida" "Chamada recebida com foto" @@ -55,8 +55,8 @@ "Chamada recebida importante com foto, mensagem e local" "Chamada recebida importante com anexos" "Chamada de trabalho recebida" - "Chamada Wi-Fi recebida" - "Chamada de trabalho recebida por Wi-Fi" + "Chamada recebida por Wi-Fi" + "Chamada de trabalho recebida por Wi-Fi" "Chamada recebida suspeita (spam)" "Recebendo solicitação de vídeo" "Sem serviço" @@ -73,7 +73,7 @@ "Atender à videochamada" "Para fazer uma chamada, primeiro desative o modo avião." "Não registrado na rede." - "Rede celular não disponível." + "Rede móvel indisponível." "Para realizar uma chamada, digite um número válido." "Não é possível realizar chamadas." "Iniciando sequência MMI…" @@ -134,8 +134,8 @@ "Encerrar chamada" "Teleconferência" "Em chamada" - "Continuando a chamada com dados da rede celular…" - "Não foi possível alternar para a rede Wi-Fi" - "A videochamada continuará via rede celular. Sujeito a cobranças por uso de dados." + "Continuando chamada por dados móveis…" + "Não foi possível alternar para a rede Wi-Fi" + "A videochamada continuará via rede móvel. O uso de dados está sujeito a cobranças padrão." "Não exibir novamente" diff --git a/java/com/android/incallui/res/values-pt-rPT/strings.xml b/java/com/android/incallui/res/values-pt-rPT/strings.xml index b42b0e56cf11795ebd4c59de1813dd9fdfbfda37..1040432292c1716f7251c9943aef40b8df5777be 100644 --- a/java/com/android/incallui/res/values-pt-rPT/strings.xml +++ b/java/com/android/incallui/res/values-pt-rPT/strings.xml @@ -33,8 +33,8 @@ "Chamada não atendida de %s" "Chamada em curso" "Chamada de trabalho em curso" - "Chamada Wi-Fi em curso" - "Chamada de trabalho por Wi-Fi em curso" + "Chamada por Wi-Fi em curso" + "Chamada de trabalho por Wi-Fi em curso" "Em espera" "Chamada recebida" "Chamada recebida com foto" @@ -55,8 +55,8 @@ "." "Chamada recebida importante com anexos" "Chamada de trabalho recebida" - "Chamada Wi-Fi recebida" - "Chamada de trabalho recebida por Wi-Fi" + "Chamada por Wi-Fi recebida" + "Chamada de trabalho por Wi-Fi recebida" "A receber chamada spam suspeita" "Pedido de vídeo recebido" "Nenhum serviço" @@ -73,7 +73,7 @@ "Aceitar videochamada" "Para efectuar uma chamada, desactive primeiro o modo para Avião." "Sem registo na rede." - "Rede móvel não disponível." + "Rede móvel não disponível." "Para telefonar, introduza um número válido." "Não é possível telefonar." "A iniciar sequência de MMI..." @@ -134,8 +134,8 @@ "Terminar chamada" "Chamada de conferência" "Numa chamada" - "A continuar a chamada com dados móveis…" - "Não foi possível mudar para a rede Wi-Fi" - "As videochamadas continuarão a ser efetuadas através de rede móvel. Poderão ser aplicados custos de dados." + "A continuar a chamada com dados móveis…" + "Não foi possível mudar para a rede Wi-Fi." + "As videochamadas irão continuar a ser efetuadas através da rede móvel. Poderão ser aplicados custos de dados padrão." "Não voltar a mostrar este aviso" diff --git a/java/com/android/incallui/res/values-pt/strings.xml b/java/com/android/incallui/res/values-pt/strings.xml index b0e46dfa3528ae795c14ff268c5036a8b2a024b1..f3c1b236736223abe6d31c7223878cc5e21940e1 100644 --- a/java/com/android/incallui/res/values-pt/strings.xml +++ b/java/com/android/incallui/res/values-pt/strings.xml @@ -33,8 +33,8 @@ "Chamada perdida de %s" "Chamada em andamento" "Chamada de trabalho em andamento" - "Chamada Wi-Fi em andamento" - "Chamada trabalho por Wi-Fi em andamento" + "Chamada por Wi-Fi em andamento" + "Chamada de trabalho por Wi-Fi em andamento" "Em espera" "Chamada recebida" "Chamada recebida com foto" @@ -55,8 +55,8 @@ "Chamada recebida importante com foto, mensagem e local" "Chamada recebida importante com anexos" "Chamada de trabalho recebida" - "Chamada Wi-Fi recebida" - "Chamada de trabalho recebida por Wi-Fi" + "Chamada recebida por Wi-Fi" + "Chamada de trabalho recebida por Wi-Fi" "Chamada recebida suspeita (spam)" "Recebendo solicitação de vídeo" "Sem serviço" @@ -73,7 +73,7 @@ "Atender à videochamada" "Para fazer uma chamada, primeiro desative o modo avião." "Não registrado na rede." - "Rede celular não disponível." + "Rede móvel indisponível." "Para realizar uma chamada, digite um número válido." "Não é possível realizar chamadas." "Iniciando sequência MMI…" @@ -134,8 +134,8 @@ "Encerrar chamada" "Teleconferência" "Em chamada" - "Continuando a chamada com dados da rede celular…" - "Não foi possível alternar para a rede Wi-Fi" - "A videochamada continuará via rede celular. Sujeito a cobranças por uso de dados." + "Continuando chamada por dados móveis…" + "Não foi possível alternar para a rede Wi-Fi" + "A videochamada continuará via rede móvel. O uso de dados está sujeito a cobranças padrão." "Não exibir novamente" diff --git a/java/com/android/incallui/res/values-ro/strings.xml b/java/com/android/incallui/res/values-ro/strings.xml index db8be10e2654585bae2f1f7f304c0d8ede06730e..b78be2e6a2196d877c192fc4b3c68e517e7e354b 100644 --- a/java/com/android/incallui/res/values-ro/strings.xml +++ b/java/com/android/incallui/res/values-ro/strings.xml @@ -33,8 +33,8 @@ "Apel nepreluat de la %s" "Apel în desfășurare" "Apel de serviciu în desfășurare" - "Apel Wi-Fi în desfășurare" - "Apel de serviciu prin Wi-Fi în desfășurare" + "Apel Wi-Fi în desfășurare" + "Apel de serviciu prin Wi-Fi în desfășurare" "În așteptare" "Apel de intrare" "Apel primit cu fotografie" @@ -55,8 +55,8 @@ "Apel primit important cu poză, mesaj și locație" "Apel primit important cu atașamente" "Apel de serviciu primit" - "Apel prin Wi-Fi primit" - "Apel de serviciu prin Wi-Fi primit" + "Apel primit prin Wi-Fi" + "Apel de serviciu primit prin Wi-Fi" "Un apel primit posibil spam" "Solicitare de trecere la apel video" "Fără serviciu" @@ -73,7 +73,7 @@ "Preluați apelul video" "Pentru a efectua un apel, mai întâi dezactivați modul Avion." "Neînregistrat în rețea." - "Rețeaua mobilă nu este disponibilă" + "Rețeaua mobilă nu este disponibilă." "Pentru a apela, introduceți un număr valid." "Nu se poate apela." "Se pornește secvența MMI..." @@ -134,8 +134,8 @@ "Încheiați apelul" "Teleconferință" "Apel în desfășurare" - "Se continuă apelul folosind datele mobile…" - "Nu s-a putut comuta la rețeaua Wi-Fi" - "Apelul video rămâne în rețeaua mobilă. Se pot aplica tarife standard pentru date." + "Se continuă apelul folosind datele mobile…" + "Nu s-a putut comuta la rețeaua Wi-Fi" + "Apelul video continuă prin rețeaua mobilă. Se pot aplica tarife standard pentru date." "Nu mai afișa acest mesaj" diff --git a/java/com/android/incallui/res/values-ru/strings.xml b/java/com/android/incallui/res/values-ru/strings.xml index 8fd924ec6ea468519fd834301e0563692f66b5f3..06276c601f551aa8e9890074bb1fe859db63d4aa 100644 --- a/java/com/android/incallui/res/values-ru/strings.xml +++ b/java/com/android/incallui/res/values-ru/strings.xml @@ -33,8 +33,8 @@ "Пропущенные вызовы от абонента %s" "Текущий вызов" "Текущий звонок (работа)" - "Текущий Wi-Fi-звонок" - "Текущий Wi-Fi-звонок (работа)" + "Текущий вызов по Wi-Fi" + "Текущий вызов по Wi-Fi (работа)" "Ждет ответа" "Входящий вызов" "Входящий вызов с фотографией" @@ -55,8 +55,8 @@ "Важный вызов с фото, сообщением и геоданными" "Важный входящий вызов с прикрепленными файлами" "Входящий звонок (работа)" - "Входящий Wi-Fi-звонок" - "Входящий Wi-Fi-звонок (работа)" + "Входящий вызов по Wi-Fi" + "Входящий вызов по Wi-Fi (работа)" "Входящий вызов: подозрение на спам" "Входящий видеовызов" "Сеть не найдена" @@ -73,7 +73,7 @@ "Продолжить на этом устройстве" "Перед тем как звонить, отключите режим полета." "Нет регистрации в сети." - "Мобильная сеть недоступна." + "Мобильная сеть недоступна." "Недействительный номер." "Не удалось позвонить." "Запуск последовательности MMI..." @@ -134,8 +134,8 @@ "Завершить вызов" "Конференц-вызов" "Вызов" - "Переключение на мобильные данные…" - "Не удалось подключиться к сети Wi-Fi" - "Видеовызов будет выполняться по мобильной сети. Может взиматься стандартная плата за передачу данных." + "Переключение на мобильный Интернет…" + "Не удалось переключиться на сеть Wi-Fi" + "Видеовызов будет выполняться по мобильной сети. Может взиматься стандартная плата за передачу данных." "Больше не показывать" diff --git a/java/com/android/incallui/res/values-si/strings.xml b/java/com/android/incallui/res/values-si/strings.xml index 989879ae0b99ebefe071fc774fd9350dca5b43a2..0497b78313c7cf9d71b3534de7f971ec0810829a 100644 --- a/java/com/android/incallui/res/values-si/strings.xml +++ b/java/com/android/incallui/res/values-si/strings.xml @@ -33,8 +33,8 @@ "%s වෙතින් මඟ හැරුණු ඇමතුම" "කරගෙනය යන ඇමතුම" "කරගෙන යන කාර්යාල ඇමතුම" - "දැනට ක්‍රියාත්මක Wi-Fi ඇමතුම" - "කරගෙන යන Wi-Fi කාර්යාල ඇමතුම" + "කරගෙන යන Wi-Fi ඇමතුම" + "කරගෙන යන Wi-Fi කාර්යාල ඇමතුම" "රඳවා ගනිමින්" "එන ඇමතුම" "ඡායාරූපය සමග එන ඇමතුම" @@ -55,8 +55,8 @@ "ඡායාරූපය, පණිවිඩය සහ ස්ථානය සමග වැදගත් එන ඇමතුම" "ඇමුණුම් සමග වැදගත් එන ඇමතුම" "පැමිණෙන කාර්යාල ඇමතුම" - "පැමිණෙන Wi-Fi ඇමතුම" - "පැමිණෙන Wi-Fi කාර්යාල ඇමතුම" + "එන Wi-Fi ඇමතුම" + "එන Wi-Fi කාර්යාල ඇමතුම" "එන සැකසහිත අයාචිත තැපැල් ඇමතුම" "පැමිණෙන වීඩියෝ ඉල්ලීම" "සේවාව නැත" @@ -73,7 +73,7 @@ "වීඩියෝ ඇමතුම ගන්න" "ඇමතුමක් ගැනීමට, මුලින්ම ගුවන්යානා ආකාරය අක්‍රිය කරන්න." "ජාලය මත ලියාපදිංචි වී නැත." - "සෙලියුලර් ජාලය නොමැත" + "ජංගම ජාලය නොමැත." "ඇමතුමක් ලබාගැනීමට, වලංගු අංකයක් ලබාගන්න." "ඇමතුම් ගැනීමට නොහැක." "MMI අනුපිළිවෙල ආරම්භ කරමින්…" @@ -134,8 +134,8 @@ "ඇමතුම අවසන් කරන්න" "සම්මන්ත්‍රණ ඇමතුම" "ඇමතුමක" - "සෙලියුලර් දත්ත භාවිතයෙන් ඇමතුම දිගටම කරගෙන යමින්…" - "Wi-Fi ජාලය වෙත මාරු කිරීමට නොහැකි විය" - "වීඩියෝ ඇමතුම සෙලියුලර් ජාලයේ පවතිනු ඇත. සම්මත දත්ත ගාස්තු අදාළ විය හැකිය." + "ජංගම දත්ත භාවිතයෙන් ඇමතුම දිගටම කරගෙන යමින්…" + "Wi-Fi ජාලය වෙත මාරු කිරීමට නොහැකි විය" + "වීඩියෝ ඇමතුම ජංගම ජාලයේ පවතිනු ඇත. සම්මත දත්ත ගාස්තු අදාළ විය හැකිය." "නැවත මෙය නොපෙන්වන්න" diff --git a/java/com/android/incallui/res/values-sk/strings.xml b/java/com/android/incallui/res/values-sk/strings.xml index d09ba44d09a222e4d2d9fac7b465aba97d534535..b83cd949b82f4d13981e72082c9fc4ce1824ede6 100644 --- a/java/com/android/incallui/res/values-sk/strings.xml +++ b/java/com/android/incallui/res/values-sk/strings.xml @@ -33,8 +33,8 @@ "Zmeškaný hovor od volajúceho %s" "Prebiehajúci hovor" "Prebiehajúci pracovný hovor" - "Odchádzajúci hovor prostredníctvom siete Wi-Fi" - "Prebiehajúci pracovný hovor cez Wi-Fi" + "Prebiehajúci hovor cez Wi‑Fi" + "Prebiehajúci pracovný hovor cez Wi‑Fi" "Podržaný hovor" "Prichádzajúci hovor" "Prichádzajúci hovor s fotkou" @@ -55,8 +55,8 @@ "Dôležitý prich. hovor s fotkou, správou a polohou" "Dôležitý prichádzajúci hovor s prílohami" "Prichádzajúci pracovný hovor" - "Prichádzajúci hovor prostredníctvom siete Wi-Fi" - "Prichádzajúci pracovný hovor cez Wi-Fi" + "Prichádzajúci hovor cez Wi‑Fi" + "Prichádzajúci pracovný hovor cez Wi‑Fi" "Prichádzajúci hovor, pri ktorom je podozrenie, že ide o spam" "Prichádzajúca žiadosť o video" "Žiadny signál" @@ -73,7 +73,7 @@ "Prevziať videohovor" "Ak chcete telefonovať, vypnite najprv režim v lietadle." "Prihlásenie do siete nebolo úspešné." - "Mobilná sieť nie je k dispozícii." + "Mobilná sieť nie je k dispozícii." "Ak chcete volať, zadajte platné číslo" "Hovor nie je možné uskutočniť" "Prebieha spúšťanie sekvencie MMI..." @@ -134,8 +134,8 @@ "Ukončiť hovor" "Konferenčný hovor" "Prebieha hovor" - "Pokračuje sa v hovore pomocou mobilných dát…" - "Nepodarilo sa prepnúť na sieť Wi-Fi" - "Videohovor bude pokračovať v mobilnej sieti. Môžu sa účtovať štandardné poplatky za prenos dát." + "Pokračuje sa v hovore pomocou mobilných dát…" + "Nepodarilo sa prepnúť na sieť Wi‑Fi" + "Videohovor bude pokračovať v mobilnej sieti. Môžu sa účtovať štandardné poplatky za prenos dát." "Informácie nabudúce nezobrazovať" diff --git a/java/com/android/incallui/res/values-sl/strings.xml b/java/com/android/incallui/res/values-sl/strings.xml index b083e1bae53a14c8221302e4a49175c5c41b7952..cf51ff55b4427ab376291c76789eeba4e9d6a023 100644 --- a/java/com/android/incallui/res/values-sl/strings.xml +++ b/java/com/android/incallui/res/values-sl/strings.xml @@ -33,8 +33,8 @@ "Neodgovorjeni klic od: %s" "Aktivni klic" "Aktivni delovni klic" - "Odhodni klic prek Wi-Fi-ja" - "Aktivni delovni klic prek omrežja Wi-Fi" + "Aktivni klic prek omrežja Wi-Fi" + "Aktivni delovni klic prek omrežja Wi-Fi" "Zadržano" "Dohodni klic" "Dohodni klic s fotografijo" @@ -55,8 +55,8 @@ "Pomemben klic s fotografijo, sporočilom, lokacijo" "Pomemben dohodni klic s prilogami" "Dohodni delovni klic" - "Dohodni klic prek Wi-Fi-ja" - "Dohodni delovni klic prek omrežja Wi-Fi" + "Dohodni klic prek omrežja Wi-Fi" + "Dohodni delovni klic prek omrežja Wi-Fi" "Domnevno neželeni dohodni klic" "Dohodna zahteva za video" "Ni storitve" @@ -73,7 +73,7 @@ "Sprejmi videoklic" "Če želite poklicati, najprej izklopite način za letalo." "Ni registrirano v omrežju." - "Mobilno omrežje ni na voljo." + "Mobilno omrežje ni na voljo." "Če želite opraviti klic, vnesite veljavno številko." "Klicanje ni mogoče." "Začetek zaporedja MMI ..." @@ -134,8 +134,8 @@ "Končaj klic" "Konferenčni klic" "Poteka klic" - "Nadaljevanje klica prek prenosa podatkov v mobilnih omrežjih …" - "Ni bilo mogoče preklopiti v omrežje Wi-Fi" - "Videoklic bo še naprej potekal v mobilnem omrežju. Morda boste morali plačati standardne stroške prenosa podatkov." + "Nadaljevanje klica prek prenosa podatkov v mobilnem omrežju …" + "Ni bilo mogoče preklopiti v omrežje Wi-Fi" + "Videoklic bo še naprej potekal v mobilnem omrežju. Morda boste morali plačati standardne stroške prenosa podatkov." "Tega ne kaži več" diff --git a/java/com/android/incallui/res/values-sq/strings.xml b/java/com/android/incallui/res/values-sq/strings.xml index fd196426607f13fa53d7ed2eb6d9840d6ad28bc2..76bb87b806d9c89113f9c23df03fd0ebd64ac074 100644 --- a/java/com/android/incallui/res/values-sq/strings.xml +++ b/java/com/android/incallui/res/values-sq/strings.xml @@ -33,8 +33,8 @@ "Telefonatë e humbur nga %s" "Telefonatë në vazhdim" "Telefonatë pune dalëse" - "Telefonatë në vazhdim me Wi-Fi" - "Telefonatë pune dalëse përmes Wi-Fi" + "Telefonatë në vazhdim me Wi-Fi" + "Telefonatë pune dalëse me Wi-Fi" "Në pritje" "Telefonatë hyrëse" "Telefonatë hyrëse me fotografi" @@ -55,8 +55,8 @@ "Tel. e rëndësishme me foto, mesazh e vendndodhje" "Telefonatë hyrëse e rëndësishme me bashkëngjitje" "Telefonatë pune hyrëse" - "Telefonatë hyrëse Wi-Fi" - "Telefonatë pune hyrëse përmes Wi-Fi" + "Telefonatë hyrëse me Wi-Fi" + "Telefonatë pune hyrëse me Wi-Fi" "Telefonatë e dyshuar si e padëshiruar" "Kërkesë për video hyrëse" "Nuk ka shërbim" @@ -73,7 +73,7 @@ "Prano telefonatën me video" "Për të kryer telefonatë, së pari çaktivizo modalitetin e aeroplanit." "I paregjistruar në rrjet." - "Rrjeti celular nuk mundësohet." + "Rrjeti celular nuk mundësohet." "Për të kryer një telefonatë, fut një numër të vlefshëm." "Nuk mund të telefonojë." "Po fillon sekuencën MMI…" @@ -134,8 +134,8 @@ "Mbylle telefonatën" "Telefonatë konferencë" "Në telefonatë" - "Po vazhdon telefonatën duke përdorur të dhënat celulare…" - "Nuk mund të kalonte në rrjetin Wi-Fi" - "Telefonata me video do të mbetet në rrjetin celular. Mund të zbatohen tarifat standarde." + "Po vazhdon telefonatën duke përdorur të dhënat celulare…" + "Nuk mund të kalonte në rrjetin Wi-Fi" + "Telefonata me video do të mbetet në rrjetin celular. Mund të zbatohen tarifat standarde të të dhënave." "Mos e shfaq më këtë" diff --git a/java/com/android/incallui/res/values-sr/strings.xml b/java/com/android/incallui/res/values-sr/strings.xml index 4fa7a61335717b901e325181679ab88b519eaa5b..85e76a9e9d37534df3a8f398c9a5428b9c1a1909 100644 --- a/java/com/android/incallui/res/values-sr/strings.xml +++ b/java/com/android/incallui/res/values-sr/strings.xml @@ -33,8 +33,8 @@ "Пропуштен позив од: %s" "Актуелни позив" "Текући позив за Work" - "Текући Wi-Fi позив" - "Текући позив за Work преко Wi-Fi-ја" + "Wi‑Fi позив у току" + "Wi‑Fi пословни позив у току" "На чекању" "Долазни позив" "Долазни позив са сликом" @@ -55,8 +55,8 @@ "Важан долазни позив са сликом, поруком и локацијом" "Важан долазни позив са прилозима" "Долазни позив за Work" - "Долазни Wi-Fi позив" - "Долазни позив за Work преко Wi-Fi-ја" + "Долазни Wi‑Fi позив" + "Долазни Wi‑Fi пословни позив" "Сумња на непожељан долазни позив" "Захтев за долазни видео позив" "Нема услуге" @@ -73,7 +73,7 @@ "Преузми видео позив" "Да бисте упутили позив, прво искључите режим рада у авиону." "Није регистровано на мрежи." - "Мобилна мрежа није доступна." + "Мобилна мрежа није доступна." "Да бисте упутили позив, унесите важећи број." "Позив није успео." "Покретање MMI секвенце" @@ -134,8 +134,8 @@ "Завршите позив" "Конференцијски позив" "У позиву" - "Позив се наставља помоћу мобилних података…" - "Пребацивање на Wi-Fi мрежу није успело" - "Видео позив ће остати на мобилној мрежи. Могу да важе стандардне накнаде за пренос података." + "Позив се наставља помоћу мобилних података…" + "Пребацивање на Wi‑Fi мрежу није успело" + "Видео позив ће остати на мобилној мрежи. Важе стандардне накнаде за пренос података." "Не приказуј ово поново" diff --git a/java/com/android/incallui/res/values-sv/strings.xml b/java/com/android/incallui/res/values-sv/strings.xml index 6d58d90f372016d4630df3b458e8dedc3718b1cd..4bbce1d6a190ec29af2c70e5d8cb55cf8e74a1af 100644 --- a/java/com/android/incallui/res/values-sv/strings.xml +++ b/java/com/android/incallui/res/values-sv/strings.xml @@ -33,8 +33,8 @@ "Missat samtal från %s" "Pågående samtal" "Pågående jobbsamtal" - "Pågående Wi-Fi-samtal" - "Pågående jobbsamtal via Wi-Fi" + "Pågående Wi-Fi-samtal" + "Pågående jobbsamtal på Wi-Fi" "Parkerat" "Inkommande samtal" "Inkommande samtal med foto" @@ -55,8 +55,8 @@ "Viktigt inkommande samtal med foto, meddelande och plats" "Viktigt inkommande samtal med bilagor" "Inkommande jobbsamtal" - "Inkommande Wi-Fi-samtal" - "Inkommande jobbsamtal via Wi-Fi" + "Inkommande Wi-Fi-samtal" + "Inkommande jobbsamtal på Wi-Fi" "Inkommande misstänkt spamsamtal" "Inkommande begäran om videosamtal" "Ingen tjänst" @@ -73,7 +73,7 @@ "Svara på videosamtal" "Om du vill ringa ett samtal måste du först inaktivera flygplansläge." "Inte registrerat på nätverk." - "Det finns inget mobilnät tillgängligt." + "Inga tillgängliga mobilnätverk." "Ange ett giltigt nummer om du vill ringa ett samtal." "Det gick inte att ringa." "Startar sekvens för MMI-kod…" @@ -134,8 +134,8 @@ "Avsluta samtal" "Konferenssamtal" "I samtal" - "Samtalet fortsätter med mobildata …" - "Det gick inte att växla till Wi-Fi-nätverk" - "Videosamtalet förblir i mobilnätverket. Vanliga dataavgifter kan tillkomma." + "Samtalet fortsätter med mobildata …" + "Det gick inte att växla till Wi-Fi-nätverk" + "Videosamtalet förblir i mobilnätverket. Vanliga dataavgifter kan tillkomma." "Visa inte detta igen" diff --git a/java/com/android/incallui/res/values-sw/strings.xml b/java/com/android/incallui/res/values-sw/strings.xml index 0bb1b8cf067ab20d69ddf86f3c517ce41e347183..17c3a52ab6dd083638cbb415e990412b9fcad44c 100644 --- a/java/com/android/incallui/res/values-sw/strings.xml +++ b/java/com/android/incallui/res/values-sw/strings.xml @@ -33,8 +33,8 @@ "Simu ambayo hukujibu kutoka %s" "Simu inayoendelea" "Simu ya kazi inayoendelea" - "Simu ya Wi-Fi inayoendelea" - "Simu ya Wi-Fi ya kazi inayoendelea" + "Simu ya Wi-Fi inaendelea" + "Simu ya Wi-Fi ya kazi inaendelea" "Inangoja" "Unapigiwa simu" "Simu inayoingia yenye picha" @@ -55,8 +55,8 @@ "Simu muhimu yenye picha, ujumbe na mahali" "Simu muhimu inayoingia yenye viambatisho" "Simu ya kazi inayoingia" - "Simu ya Wi-Fi inayoingia" - "Simu ya Wi-Fi ya kazi inayoingia" + "Simu ya Wi-Fi inaingia" + "Simu ya Wi-Fi ya kazi inaingia" "Simu inayoingia inashukiwa kuwa taka" "Ombi linaloingia la video" "Hakuna huduma" @@ -73,7 +73,7 @@ "Pokea Simu ya Video" "Kupiga simu, kwanza zima hali ya ndegeni." "Haijasajiliwa kwa mitandao" - "Mitandao ya simu za mkononi haipatikani" + "Mtandao wa simu haupatikani." "Ili upige simu, weka nambari sahihi." "Haiwezi kupiga simu." "Inaanzisha msururu wa MMI…" @@ -134,8 +134,8 @@ "Kata simu" "Simu ya kongamano" "Mazungumzo ya simu yanaendelea" - "Endelea na mazungumzo ya simu ukitumia data ya kifaa cha mkononi…" - "Imeshindwa kuhamia mtandao wa Wi-Fi" - "Hangout ya video itaendelea kwenye mtandao wa simu. Huenda ukatozwa gharama za kawaida za data." + "Endelea na mazungumzo ya simu ukitumia data ya simu…" + "Imeshindwa kuhamia mtandao wa Wi-Fi" + "Hangout ya video itaendelea kwenye mtandao wa simu. Huenda ukatozwa gharama za kawaida za data." "Usiionyeshe tena" diff --git a/java/com/android/incallui/res/values-ta/strings.xml b/java/com/android/incallui/res/values-ta/strings.xml index bae8d6a6749ac469fc5e3610adccbbe6e19b5a88..bb228a0e2b21d4bcd24fd34020f344d73ddf48bd 100644 --- a/java/com/android/incallui/res/values-ta/strings.xml +++ b/java/com/android/incallui/res/values-ta/strings.xml @@ -33,8 +33,8 @@ "%s இடமிருந்து தவறிய அழைப்பு" "செயலில் இருக்கும் அழைப்பு" "வெளிச்செல்லும் அழைப்பு (பணி)" - "வெளிச்செல்லும் வைஃபை அழைப்பு" - "வெளிச்செல்லும் வைஃபை அழைப்பு (பணி)" + "செயலில் இருக்கும் வைஃபை அழைப்பு" + "செயலில் இருக்கும் வைஃபை அழைப்பு (பணி)" "காத்திருப்பில்" "உள்வரும் அழைப்பு" "படத்துடன் உள்வரும் அழைப்பு" @@ -55,8 +55,8 @@ "படம், செய்தி, இருப்பிடத்துடன் உள்வரும் முக்கியமான அழைப்பு" "இணைப்புகளுடன் உள்வரும் முக்கியமான அழைப்பு" "உள்வரும் அழைப்பு (பணி)" - "உள்வரும் வைஃபை அழைப்பு" - "உள்வரும் வைஃபை அழைப்பு (பணி)" + "உள்வரும் வைஃபை அழைப்பு" + "உள்வரும் வைஃபை அழைப்பு (பணி)" "உள்வரும் சந்தேகத்திற்குரிய ஸ்பேம் அழைப்பு" "உள்வரும் வீடியோ கோரிக்கை" "சேவை இல்லை" @@ -73,7 +73,7 @@ "வீடியோ அழைப்பை எடு" "அழைப்பதற்கு, முதலில் விமானப் பயன்முறையை முடக்கவும்." "நெட்வொர்க்கில் பதிவுசெய்யப்படவில்லை." - "செல்லுலார் நெட்வொர்க் கிடைக்கவில்லை." + "மொபைல் நெட்வொர்க் கிடைக்கவில்லை." "அழைக்க, சரியான எண்ணை உள்ளிடவும்." "அழைக்க முடியாது." "MMI வரிசையைத் தொடங்குகிறது..." @@ -134,8 +134,8 @@ "அழைப்பைத் துண்டிக்கும்" "குழு அழைப்பு" "அழைப்பில்" - "செல்லுலார் தரவைப் பயன்படுத்தி அழைப்பைத் தொடர்கிறது…" - "வைஃபை நெட்வொர்க்கிற்கு மாற முடியவில்லை" - "செல்லுலார் நெட்வொர்க்கைப் பயன்படுத்தி தொடர்ந்து வீடியோ அழைப்பைச் செய்யலாம். வழக்கமான தரவுக் கட்டணங்கள் விதிக்கப்படக்கூடும்." + "மொபைல் தரவைப் பயன்படுத்தி அழைப்பைத் தொடர்கிறது…" + "வைஃபை நெட்வொர்க்கிற்கு மாற முடியவில்லை" + "மொபைல் நெட்வொர்க்கைப் பயன்படுத்தி தொடர்ந்து வீடியோ அழைப்பைச் செய்யலாம். வழக்கமான தரவுக் கட்டணங்கள் விதிக்கப்படக்கூடும்." "இதை மீண்டும் காட்டாதே" diff --git a/java/com/android/incallui/res/values-te/strings.xml b/java/com/android/incallui/res/values-te/strings.xml index 6b833886b2201369357f87c79156338472c33831..a5da32a01fc4f2399e39cb9f7879a83fa978bbf2 100644 --- a/java/com/android/incallui/res/values-te/strings.xml +++ b/java/com/android/incallui/res/values-te/strings.xml @@ -33,8 +33,8 @@ "%s నుండి సమాధానం ఇవ్వని కాల్" "కాల్ కొనసాగుతోంది" "కార్యాలయ కాల్ కొనసాగుతోంది" - "Wi-Fi కాల్ కొనసాగుతోంది" - "Wi-Fi కార్యాలయ కాల్ కొనసాగుతోంది" + "మాట్లాడుతున్న Wi‑Fi కాల్" + "మాట్లాడుతున్న Wi‑Fi కార్యాలయ కాల్" "హోల్డ్‌లో ఉంది" "ఇన్‌కమింగ్ కాల్" "ఫోటోతో ఇన్‌కమింగ్ కాల్" @@ -55,8 +55,8 @@ "ఫోటో, సందేశం, స్థానంతో ముఖ్యమైన ఇన్‌కమింగ్ కాల్" "జోడింపులతో ముఖ్యమైన ఇన్‌కమింగ్ కాల్" "ఇన్‌కమింగ్ కార్యాలయ కాల్" - "Wi-Fi కాల్ వస్తోంది" - "ఇన్‌కమింగ్ Wi-Fi కార్యాలయ కాల్" + "ఇన్‌కమింగ్ Wi-Fi కాల్" + "ఇన్‌కమింగ్ Wi-Fi కార్యాలయ కాల్" "అనుమానాస్పద స్పామ్ కాల్ వస్తోంది" "ఇన్‌కమింగ్ వీడియో అభ్యర్థన" "సేవ లేదు" @@ -73,7 +73,7 @@ "వీడియో కాల్‌ను తీయి" "కాల్ చేయడానికి, మొదట ఎయిర్‌ప్లైన్ మోడ్‌ను ఆపివేయండి." "నెట్‌వర్క్‌లో నమోదు కాలేదు." - "సెల్యులార్ నెట్‌వర్క్ అందుబాటులో లేదు." + "మొబైల్ నెట్‌వర్క్ అందుబాటులో లేదు." "కాల్ చేయడానికి, చెల్లుబాటు అయ్యే నంబర్‌ను నమోదు చేయండి." "కాల్ చేయలేరు." "MMI శ్రేణిని ప్రారంభిస్తోంది…" @@ -134,8 +134,8 @@ "కాల్‌ను ముగిస్తుంది" "కాన్ఫరెన్స్ కాల్" "కాల్‌లో ఉన్నారు" - "సెల్యులార్ డేటాను ఉపయోగించి కాల్‌ను కొనసాగిస్తోంది…" - "Wi-Fi నెట్‌వర్క్‌కి మార్చలేకపోయింది" - "వీడియో కాల్ సెల్యులార్ నెట్‌వర్క్‌లో కొనసాగుతుంది. ప్రామాణిక డేటా ఛార్జీలు వర్తించవచ్చు." + "మొబైల్ డేటాను ఉపయోగించి కాల్‌ను కొనసాగిస్తోంది…" + "Wi-Fi నెట్‌వర్క్‌కి మార్చడం సాధ్యపడలేదు" + "వీడియో కాల్ మొబైల్ నెట్‌వర్క్‌లో కొనసాగుతుంది. ప్రామాణిక డేటా ఛార్జీలు వర్తించవచ్చు." "దీన్ని మళ్లీ చూపవద్దు" diff --git a/java/com/android/incallui/res/values-th/strings.xml b/java/com/android/incallui/res/values-th/strings.xml index 11023b93a015abb446f3e9285725032f0d1c62a7..102faf20adef15c734fcd0f7a35c12652627908b 100644 --- a/java/com/android/incallui/res/values-th/strings.xml +++ b/java/com/android/incallui/res/values-th/strings.xml @@ -33,8 +33,8 @@ "สายที่ไม่ได้รับจาก %s" "โทรต่อเนื่อง" "กำลังอยู่ในสายจากที่ทำงาน" - "กำลังโทรผ่าน Wi-Fi" - "กำลังอยู่ในสายจากที่ทำงานผ่าน Wi-Fi" + "กำลังโทรผ่าน Wi-Fi" + "กำลังอยู่ในสายจากที่ทำงานผ่าน Wi-Fi" "พักสาย" "สายเรียกเข้า" "สายเรียกเข้าพร้อมรูปภาพ" @@ -55,8 +55,8 @@ "สายเรียกเข้าที่สำคัญพร้อมรูปภาพ ข้อความ และตำแหน่ง" "สายเรียกเข้าที่สำคัญพร้อมไฟล์แนบ" "มีสายเรียกเข้าจากที่ทำงาน" - "สายโทรเข้าผ่าน Wi-Fi" - "มีสายเรียกเข้าจากที่ทำงานผ่าน Wi-Fi" + "สายโทรเข้าผ่าน Wi-Fi" + "มีสายเรียกเข้าจากที่ทำงานผ่าน Wi-Fi" "สายเรียกเข้าที่สงสัยว่าเป็นสแปม" "คำขอโทรเข้าเป็นวิดีโอ" "ไม่มีบริการ" @@ -73,7 +73,7 @@ "รับสายแฮงเอาท์วิดีโอ" "หากต้องการโทรออก ให้ปิดโหมดใช้งานบนเครื่องบินก่อน" "ยังไม่ได้ลงทะเบียนบนเครือข่าย" - "เครือข่ายมือถือใช้งานไม่ได้" + "เครือข่ายมือถือใช้งานไม่ได้" "หากต้องการโทรออก โปรดป้อนหมายเลขที่ถูกต้อง" "ไม่สามารถโทรได้" "กำลังเริ่มต้นลำดับ MMI..." @@ -134,8 +134,8 @@ "วางสาย" "การประชุมสาย" "อยู่ในสาย" - "กำลังทำการโทรต่อโดยใช้ข้อมูลเครือข่ายมือถือ…" - "ไม่สามารถเปลี่ยนไปใช้เครือข่าย Wi-Fi" - "แฮงเอาท์วิดีโอจะยังคงอยู่ในเครือข่ายมือถือ อาจมีการเรียกเก็บค่าบริการข้อมูลมาตรฐาน" + "โทรต่อโดยใช้อินเทอร์เน็ตมือถือ..." + "ไม่สามารถเปลี่ยนไปใช้เครือข่าย Wi-Fi" + "แฮงเอาท์วิดีโอจะยังคงอยู่ในเครือข่ายมือถือ อาจมีการเรียกเก็บค่าบริการข้อมูลมาตรฐาน" "อย่าแสดงสิ่งนี้อีก" diff --git a/java/com/android/incallui/res/values-tl/strings.xml b/java/com/android/incallui/res/values-tl/strings.xml index 00a4623b54a68f2d393324b2ac535d394c45a8aa..9cc2f543e73370ad391f68e5c48f0361c891827e 100644 --- a/java/com/android/incallui/res/values-tl/strings.xml +++ b/java/com/android/incallui/res/values-tl/strings.xml @@ -33,8 +33,8 @@ "Hindi nasagot ang tawag mula kay %s" "Kasalukuyang tawag" "Kasalukuyang tawag sa trabaho" - "Isinasagawang tawag sa Wi-Fi" - "Kasalukuyang tawag sa trabaho sa pamamagitan ng Wi-Fi" + "Kasalukuyang isinasagawang tawag sa Wi-Fi" + "Kasalukuyang isinasagawang tawag sa trabaho gamit ang Wi-Fi" "Naka-hold" "Papasok na tawag" "Papasok na tawag na may larawan" @@ -55,8 +55,8 @@ "Mahalagang papasok na tawag na may larawan, mensahe, at lokasyon" "Mahalagang papasok na tawag na may mga attachment" "Papasok na tawag sa trabaho" - "Papasok na tawag sa Wi-Fi" - "Papasok na tawag sa trabaho sa pamamagitan ng Wi-Fi" + "Papasok na tawag sa Wi-Fi" + "Papasok na tawag sa trabaho gamit ang Wi-Fi" "Papasok na pinaghihinalaang spam na tawag" "Papasok na kahilingan ng video" "Walang serbisyo" @@ -73,7 +73,7 @@ "Sagutin ang Video Call" "Upang tumawag, paki-off ang Airplane mode." "Hindi nakarehistro sa network." - "Hindi available ang cellular network" + "Hindi available ang mobile network." "Upang tumawag, maglagay ng wastong numero." "Hindi makatawag." "Sinisimulan ang pagkakasunud-sunod ng MMI…" @@ -134,8 +134,8 @@ "Tapusin ang tawag" "Conference call" "Nasa tawag" - "Ipinagpapatuloy ang tawag gamit ang cellular data…" - "Hindi makalipat sa Wi-Fi network" - "Mananatili sa cellular network ang video call. Maaaring may mga babayaran sa data." + "Ipinagpapatuloy ang tawag gamit ang mobile data…" + "Hindi makalipat sa Wi-Fi network" + "Mananatili sa mobile network ang video call. Maaaring may mga babayaran sa data." "Huwag itong ipakitang muli" diff --git a/java/com/android/incallui/res/values-tr/strings.xml b/java/com/android/incallui/res/values-tr/strings.xml index 9820a6989f1ba8ceba185d36750c84316c0af57a..9126624cf1dc7993252687e3c5b35b9a2bc6a43a 100644 --- a/java/com/android/incallui/res/values-tr/strings.xml +++ b/java/com/android/incallui/res/values-tr/strings.xml @@ -33,8 +33,8 @@ "Cevapsız çağrı: %s" "Devam eden çağrılar" "Süren iş çağrısı" - "Giden kablosuz çağrı" - "Süren kablosuz iş çağrısı" + "Devam eden kablosuz çağrı" + "İşle ilgili devam eden kablosuz çağrı" "Beklemede" "Gelen çağrı" "Fotoğraf eklenmiş gelen çağrı" @@ -55,8 +55,8 @@ "Fotoğraf, mesaj ve konum eklenmiş önemli çağrı" "Ek iliştirilmiş önemli gelen çağrı" "Gelen iş çağrısı" - "Gelen kablosuz çağrı" - "Gelen kablosuz iş çağrısı" + "Gelen kablosuz çağrı" + "İşle ilgili gelen kablosuz çağrı" "Spam olabilecek gelen arama" "Gelen video isteği" "Hizmet yok" @@ -73,7 +73,7 @@ "Video Görüşmesini Al" "Bir çağrı yapmak için öncelikle Uçak modunu kapatın." "Ağda kayıtlı değil." - "Hücresel ağ kullanılamıyor." + "Mobil ağ kullanılamıyor." "Telefon etmek için geçerli bir numara girin." "Arama yapılamıyor." "MMI dizisi başlatılıyor..." @@ -134,8 +134,8 @@ "Çağrı sonlandırılır" "Konferans çağrısı" "Konferans çağrısında" - "Görüşmeye hücresel veri kullanılarak devam ediliyor…" - "Kablosuz ağa geçilemedi" - "Video görüşmesi hücresel ağda devam edecek. Standart veri ücretleri alınabilir." + "Görüşmeye mobil veri kullanılarak devam ediliyor…" + "Kablosuz ağa geçilemedi" + "Görüntülü görüşme mobil ağda devam edecek. Standart veri ücretleri alınabilir." "Bunu bir daha gösterme" diff --git a/java/com/android/incallui/res/values-uk/strings.xml b/java/com/android/incallui/res/values-uk/strings.xml index b3b297dc7b018cf7ca3c2246f5180fa45f295581..30c202c7661abf264d0b7bc14c7b20f3ef3429db 100644 --- a/java/com/android/incallui/res/values-uk/strings.xml +++ b/java/com/android/incallui/res/values-uk/strings.xml @@ -33,8 +33,8 @@ "Пропущений виклик: %s" "Поточний виклик" "Поточний дзвінок на робочий телефон" - "Активний дзвінок через Wi-Fi" - "Поточний дзвінок на робочий телефон через Wi-Fi" + "Поточний дзвінок через Wi-Fi" + "Поточний дзвінок на робочий телефон через Wi-Fi" "Очікує" "Вхідний виклик" "Вхідний дзвінок із фото" @@ -55,8 +55,8 @@ "Важливий дзвінок із фото, повідомленням і адресою" "Важливий вхідний дзвінок із вкладеними файлами" "Вхідний дзвінок на робочий телефон" - "Вхідний дзвінок через Wi-Fi" - "Вхідний дзвінок на робочий телефон через Wi-Fi" + "Вхідний дзвінок через Wi-Fi" + "Вхідний дзвінок на робочий телефон через Wi-Fi" "Цей дзвінок може бути спамом" "Запит на вхідний відеодзвінок" "Нема служби" @@ -73,7 +73,7 @@ "Прийняти відеодзвінок" "Щоб установ. з\'єднання, споч. вимк. режим польоту." "Не зареєстровано в мережі." - "Мобільна мережа недоступна." + "Мобільна мережа недоступна." "Щоб зателефонувати, введіть дійсний номер." "Неможливо зателефонувати." "Запуск ряду MMI..." @@ -134,8 +134,8 @@ "Завершити виклик" "Конференц-зв’язок" "Триває виклик" - "Продовження виклику через мобільний трафік…" - "Не вдалося перейти в мережу Wi-Fi" - "Відеодзвінок продовжиться в мобільній мережі. Діють стандартні тарифи." + "Продовження виклику з використанням мобільного Інтернету…" + "Не вдалося перейти на мережу Wi-Fi" + "Відеодзвінок продовжиться з використанням мобільного Інтернету. Діють стандартні тарифи." "Більше не показувати це" diff --git a/java/com/android/incallui/res/values-ur/strings.xml b/java/com/android/incallui/res/values-ur/strings.xml index e3326a27e9aadf8297779f7cf399e2844e5da0aa..8e70bad8bdca7e18f18af14e4461a59a6b93c3a0 100644 --- a/java/com/android/incallui/res/values-ur/strings.xml +++ b/java/com/android/incallui/res/values-ur/strings.xml @@ -33,8 +33,8 @@ "%s کی جانب سے چھوٹی ہوئی کال" "جاری کال" "کام سے متعلق جاری کال" - "‏Wi-Fi کال جاری ہے" - "‏کام سے متعلق جاری Wi-Fi کال" + "‏جاری Wi-Fi کال" + "‏کام سے متعلق جاری Wi-Fi کال" "ہولڈ پر" "آنے والی کال" "تصویر کے ساتھ آنے والی کال" @@ -55,8 +55,8 @@ "تصویر، پیغام اور مقام کے ساتھ آنے والی اہم کال" "منسلکات کے ساتھ آنے والی اہم کال" "کام سے متعلق آنے والی کال" - "‏Wi-Fi کال آ رہی ہے" - "‏کام سے متعلق آنے والی Wi-Fi کال" + "‏Wi-Fi کال آ رہی ہے" + "‏کام سے متعلق آنے والی Wi-Fi کال" "آنے والی مشتبہ سپام کال" "اِن کمنگ ویڈیو درخواست" "کوئی سروس نہیں ہے" @@ -73,7 +73,7 @@ "ویڈیو کال لیں" "کال کرنے کیلئے، پہلے ہوائی جہاز طرز کو آف کریں۔" "نیٹ ورک پر رجسٹرڈ نہیں ہے۔" - "سیلولر نیٹ ورک دستیاب نہیں ہے۔" + "موبائل نیٹ ورک دستیاب نہیں ہے۔" "کال کرنے کیلئے، ایک درست نمبر درج کریں۔" "کال نہیں کر سکتے۔" "‏MMI ترتیب شروع ہو رہی ہے…" @@ -134,8 +134,8 @@ "کال ختم کریں" "کانفرنس کال" "کال میں" - "سیلولر ڈیٹا استعمال کرکے کال جاری ہے" - "‏Wi-Fi نیٹ ورک پر سوئچ نہیں ہو سکا" - "ویڈیو کال سیلولر نیٹ ورک پر رہے گی۔ ڈیٹا کے معیاری چارجز کا اطلاق ہو سکتا ہے۔" + "موبائل ڈیٹا استعمال کرکے کال جاری ہے" + "‏Wi-Fi نیٹ ورک پر سوئچ نہیں ہو سکا" + "ویڈیو کال موبائل نیٹ ورک پر رہے گی۔ ڈیٹا کے معیاری چارجز کا اطلاق ہو سکتا ہے۔" "اسے دوبارہ مت دکھائیں" diff --git a/java/com/android/incallui/res/values-uz/strings.xml b/java/com/android/incallui/res/values-uz/strings.xml index 38285015a6c1ea4e2607e3459f02341e2cb93264..c460f9504212d137a36eb57a2ae8a9191b185e47 100644 --- a/java/com/android/incallui/res/values-uz/strings.xml +++ b/java/com/android/incallui/res/values-uz/strings.xml @@ -33,10 +33,10 @@ "%s chaqiruvi javobsiz qoldi" "Joriy qo‘ng‘iroq" "Chiquvchi ishchi qo‘ng‘irog‘i" - "Chiquvchi Wi-Fi qo‘ng‘irog‘i" - "Chiquvchi Wi-Fi ishchi qo‘ng‘irog‘i" + "Joriy Wi-Fi qo‘ng‘iroq" + "Joriy Wi-Fi qo‘ng‘iroq (ish)" "Kutmoqda" - "Kiruvchi qo‘ng‘iroq" + "Kiruvchi chaqiruv" "Suratga ega kiruvchi chaqiruv" "Xabarga ega kiruvchi chaqiruv" "Joylashuv axborotiga ega kiruvchi chaqiruv" @@ -55,8 +55,8 @@ "Surat, xabar va joy. ax. ega muhim kiruv. chaqiruv" "Biriktirmalarga ega muhim kiruvchi chaqiruv" "Kiruvchi ishchi qo‘ng‘irog‘i" - "Kiruvchi Wi-Fi qo‘ng‘irog‘i" - "Kiruvchi Wi-Fi ishchi qo‘ng‘irog‘i" + "Kiruvchi Wi-Fi qo‘ng‘iroq" + "Kiruvchi Wi-Fi qo‘ng‘iroq (ish)" "Shubhali kiruvchi qo‘ng‘iroq" "Kiruvchi video so\'rovi" "Xizmat mavjud emas" @@ -73,7 +73,7 @@ "Video qo‘ng‘iroq. qabul qilish" "Qo‘ng‘iroq qilish uchun, avval \"Parvoz rejimi\" o‘chirilishi kerak." "Tarmoqda ro‘yxatdan o‘tmagan." - "Mobil tarmoq mavjud emas." + "Uyali aloqa tarmog‘i mavjud emas." "Qo‘ng‘iroq qilish uchun raqamni to‘g‘ri kiriting." "Qo‘ng‘iroq qilib bo‘lmadi." "MMI tartibi ishga tushmoqda..." @@ -134,8 +134,8 @@ "Qo‘ng‘iroqni tugatish" "Konferens-aloqa" "Qo‘ng‘iroq davom etmoqda" - "Qo‘ng‘iroq mobil internet orqali davom ettirilmoqda…" - "Wi-Fi tarmog‘iga o‘tib bo‘lmadi" - "Video qo‘ng‘iroq uyali tarmoqda davom etilaveradi. Internet uchun operator tarifi bo‘yicha haq olinishi mumkin." + "Qo‘ng‘iroq mobil internetga o‘tkazilmoqda…" + "Wi-Fi tarmog‘iga o‘tib bo‘lmadi" + "Video qo‘ng‘iroq mobil internet orqali davom ettiriladi. Internet uchun operator tarifi bo‘yicha haq olinishi mumkin." "Bu xabar boshqa ko‘rsatilmasin" diff --git a/java/com/android/incallui/res/values-vi/strings.xml b/java/com/android/incallui/res/values-vi/strings.xml index b466b020de75b13f2af99bad205de6181e00d7ec..8c0dbceeb4aaf9552d37554b206b0dafb153a040 100644 --- a/java/com/android/incallui/res/values-vi/strings.xml +++ b/java/com/android/incallui/res/values-vi/strings.xml @@ -33,8 +33,8 @@ "Cuộc gọi nhỡ từ %s" "Cuộc gọi đang thực hiện" "Cuộc gọi đang diễn ra về công việc" - "Cuộc gọi đang diễn ra qua Wi-Fi" - "Cuộc gọi đang diễn ra qua Wi-Fi về công việc" + "Cuộc gọi đang diễn ra qua Wi-Fi" + "Cuộc gọi về công việc đang diễn ra qua Wi-Fi" "Đang chờ" "Cuộc gọi đến" "Cuộc gọi đến có ảnh" @@ -55,8 +55,8 @@ "Cuộc gọi đến quan trọng có ảnh, tin nhắn và vị trí" "Cuộc gọi đến quan trọng có tệp đính kèm" "Cuộc gọi đến về công việc" - "Cuộc gọi đến qua Wi-Fi" - "Cuộc gọi đến qua Wi-Fi về công việc" + "Cuộc gọi đến qua Wi-Fi" + "Cuộc gọi đến về công việc qua Wi-Fi" "Cuộc gọi spam đến bị nghi ngờ" "Yêu cầu video đến" "Không có dịch vụ nào" @@ -73,7 +73,7 @@ "Nhận cuộc gọi điện video" "Để thực hiện cuộc gọi, trước tiên, hãy tắt chế độ trên Máy bay." "Chưa được đăng ký trên mạng." - "Không có mạng di động." + "Mạng di động không khả dụng." "Để thực hiện cuộc gọi, hãy nhập một số hợp lệ." "Không thực hiện được cuộc gọi." "Khởi động chuỗi MMI…" @@ -134,8 +134,8 @@ "Kết thúc cuộc gọi" "Cuộc gọi nhiều bên" "Đang trong cuộc gọi" - "Đang tiếp tục cuộc gọi bằng cách sử dụng dữ liệu di động…" - "Không thể chuyển sang mạng Wi-Fi" - "Cuộc gọi điện video sẽ duy trì trên mạng di động. Có thể áp dụng phí dữ liệu chuẩn." + "Đang tiếp tục cuộc gọi bằng cách sử dụng dữ liệu di động…" + "Không thể chuyển sang mạng Wi-Fi" + "Cuộc gọi điện video sẽ tiếp tục trên mạng di động. Bạn có thể phải trả phí dữ liệu chuẩn." "Không hiển thị lại" diff --git a/java/com/android/incallui/res/values-zh-rCN/strings.xml b/java/com/android/incallui/res/values-zh-rCN/strings.xml index e26ab0ca28a0fd0ef859d8dd6c298fd200f279aa..4ede0cb3ec03568a52bfa9f0397d05bf3da70646 100644 --- a/java/com/android/incallui/res/values-zh-rCN/strings.xml +++ b/java/com/android/incallui/res/values-zh-rCN/strings.xml @@ -33,8 +33,8 @@ "来自%s的未接电话" "当前通话" "工作通话进行中" - "正在进行 WLAN 通话" - "WLAN 工作通话进行中" + "正在进行 WLAN 通话" + "正在进行 WLAN 工作通话" "保持" "来电" "包含照片的来电" @@ -55,8 +55,8 @@ "包含照片、讯息和位置信息的重要来电" "包含附件的重要来电" "工作来电" - "WLAN 来电" - "WLAN 工作来电" + "WLAN 来电" + "WLAN 工作来电" "有疑似骚扰来电" "收到视频通话邀请" "无服务" @@ -73,7 +73,7 @@ "接通视频通话" "要进行呼叫,请先关闭飞行模式。" "尚未注册网络。" - "无法连接到移动网络。" + "无法连接到移动网络。" "要拨打电话,请输入有效的电话号码。" "无法拨打该电话。" "正在启动 MMI 序列..." @@ -134,8 +134,8 @@ "结束通话" "电话会议" "正在通话" - "正在使用移动数据网络继续通话…" - "无法切换到 WLAN 网络" - "系统将使用移动网络继续视频通话。这可能会产生标准数据流量费。" + "正在使用移动数据继续通话…" + "无法切换到 WLAN 网络" + "系统将使用移动网络继续视频通话。这可能会产生标准数据流量费。" "不再显示" diff --git a/java/com/android/incallui/res/values-zh-rHK/strings.xml b/java/com/android/incallui/res/values-zh-rHK/strings.xml index 5eb8892e9973f4a8b6ebd561144aa4229931bbc4..c4934eade7cc4609614db22532412ff4737c9d8c 100644 --- a/java/com/android/incallui/res/values-zh-rHK/strings.xml +++ b/java/com/android/incallui/res/values-zh-rHK/strings.xml @@ -33,8 +33,8 @@ "來自 %s 的未接來電" "通話中" "正在進行工作通話" - "正在進行 Wi-Fi 通話" - "正在進行 Wi-Fi 工作通話" + "正在進行 Wi-Fi 通話" + "正在進行 Wi-Fi 工作通話" "保留通話" "來電" "附有相片的來電" @@ -55,8 +55,8 @@ "附有相片、訊息和位置的重要來電" "附有附件的重要來電" "工作來電" - "Wi-Fi 來電" - "Wi-Fi 工作來電" + "Wi-Fi 來電" + "Wi-Fi 工作來電" "疑似收到垃圾來電" "收到視像要求" "沒有服務" @@ -73,7 +73,7 @@ "接受視像通話" "請先關閉飛行模式後再撥打電話。" "未在網絡上完成註冊。" - "無法連線至流動網絡。" + "無法使用流動網絡。" "要撥打電話,請輸入有效的號碼。" "無法通話。" "開始 MMI 序列..." @@ -134,8 +134,8 @@ "結束通話" "會議通話" "正在通話" - "使用流動數據繼續通話…" - "無法切換為 Wi-Fi 網絡" - "視像通話仍會使用流動網絡 (可能需要支付標準數據用量費用)。" + "使用流動數據繼續通話…" + "無法切換為 Wi-Fi 網絡" + "視像通話仍會使用流動網絡 (可能需要支付標準數據用量費用)。" "不要再顯示此訊息" diff --git a/java/com/android/incallui/res/values-zh-rTW/strings.xml b/java/com/android/incallui/res/values-zh-rTW/strings.xml index 9f028661e950db845ee62818de83da86bd2e5e5c..9b85a2862871c5804fc73a936b5a7cdd37dcfd57 100644 --- a/java/com/android/incallui/res/values-zh-rTW/strings.xml +++ b/java/com/android/incallui/res/values-zh-rTW/strings.xml @@ -33,8 +33,8 @@ "來自 %s 的未接來電" "通話中" "進行中的公司通話" - "撥出的 Wi-Fi 電話" - "進行中的公司通話 (透過 Wi-Fi)" + "進行中的通話 (透過 Wi-Fi)" + "進行中的公司通話 (透過 Wi-Fi)" "通話保留" "來電" "包含相片的來電" @@ -55,8 +55,8 @@ "包含相片、訊息和位置資訊的重要來電" "包含附件的重要來電" "公司來電" - "撥入的 Wi-Fi 電話" - "公司來電 (透過 Wi-Fi)" + "來電 (透過 Wi-Fi)" + "公司來電 (透過 Wi-Fi)" "可疑的騷擾/廣告來電" "收到視訊要求" "沒有服務" @@ -73,7 +73,7 @@ "接聽視訊通話" "撥號前,請先關閉飛航模式。" "尚未註冊網路。" - "無法連線到行動網路。" + "無法使用行動網路。" "如要撥打電話,請輸入有效的號碼。" "無法通話。" "開始 MMI 序列…" @@ -134,8 +134,8 @@ "結束通話" "電話會議" "通話中" - "使用行動數據繼續進行通話…" - "無法切換至 Wi-Fi 網路" - "視訊通話將繼續透過行動網路進行 (可能需支付一般數據傳輸費用)。" + "使用行動網路繼續進行通話…" + "無法切換至 Wi-Fi 網路" + "視訊通話將繼續透過行動網路進行 (可能需支付一般數據傳輸費用)。" "不要再顯示這項說明" diff --git a/java/com/android/incallui/res/values-zu/strings.xml b/java/com/android/incallui/res/values-zu/strings.xml index db415cc4553bd8a9ac44b286690b81d47f270438..bc5a92735820770640cf7e97ec4afca7c501bd37 100644 --- a/java/com/android/incallui/res/values-zu/strings.xml +++ b/java/com/android/incallui/res/values-zu/strings.xml @@ -33,8 +33,8 @@ "Uphuthelwe ikholi kusukela ku-%s" "Ikholi eqhubekayo" "Ikholi yomsebenzi eqhubekayo" - "Ikholi ye-Wi-Fi eqhubekayo" - "Ikholi yomsebenzi eqhubekayo ye-Wi-Fi" + "Ikholi ye-Wi-Fi eqhubekayo" + "Ikholi yomsebenzi eqhubekayo ye-Wi-Fi" "Ibambile" "Ikholi engenayo" "Ikholi engenayo enesithombe" @@ -55,8 +55,8 @@ "Ikholi engenayo ebalulekile enesithombe, umlayezo nendawo" "Ikholi engenayo ebalulekile enokunamathiselwe kwi-imeyili" "Ikholi engenayo yomsebenzi" - "Ikholi ye-Wi-Fi engenayo" - "Ikholi engenayo yomsebenzi ye-Wi-Fi" + "Ikholi ye-Wi-Fi engenayo" + "Ikholi engenayo yomsebenzi ye-Wi-Fi" "Ikholi engenayo osolisayo kagaxekile" "Isicelo sevidiyo engenayo" "Ayikho isevisi" @@ -73,7 +73,7 @@ "Thatha ikholi yevidiyo" "Ukwenza ikholi, vala kuqala imodi Yendiza." "Ayibhalisiwe kwinethiwekhi." - "Inethiwekhi yeselula ayitholakali." + "Inethiwekhi yefoni ayitholakali" "Ukuze wenze ikholi, faka inombolo evumelekile." "Ayikwazi ukushaya." "Iqalisa ukulandelana kwe-MMI..." @@ -134,8 +134,8 @@ "Qeda ikholi" "Ikholi yengqungquthela" "Isecingweni" - "Iqhuba ikholi isebenzisa idatha yeselula…" - "Ayikwazanga ukushintshela kunethiwekhi ye-Wi-Fi" - "Ikholi yevidiyo izohlala kunethiwekhi yeselula. Izindleko zedatha ejwayelekile zingasebenza." + "Iqhubekisa ikholi isebenzisa idatha yeselula…" + "Ayikwazanga ukushintshela kunethiwekhi ye-Wi-Fi" + "Ikholi yevidiyo izohlala ikunethiwekhi yeselula. Amashaji edatha avamile angasebenza." "Ungabonisi lokhu futhi" diff --git a/java/com/android/incallui/res/values/dimens.xml b/java/com/android/incallui/res/values/dimens.xml index 18816f645ba8d25e54c8f7ef2d17b7bcc5391590..56b9ae158ed851401da72c2b86d688344f780588 100644 --- a/java/com/android/incallui/res/values/dimens.xml +++ b/java/com/android/incallui/res/values/dimens.xml @@ -38,7 +38,7 @@ 0dp 20sp 50dp - 36sp + 36dp 10dp @@ -58,6 +58,8 @@ 48dp + 120dp + false diff --git a/java/com/android/incallui/res/values/strings.xml b/java/com/android/incallui/res/values/strings.xml index aede4289b08180cb6094c0c1755a65f2f811ba0a..4113313dff7c676a27fbf9a54f14d58a1a4b3741 100644 --- a/java/com/android/incallui/res/values/strings.xml +++ b/java/com/android/incallui/res/values/strings.xml @@ -78,10 +78,10 @@ Ongoing work call - Ongoing Wi-Fi call + Ongoing Wi\u2011Fi call - Ongoing Wi-Fi work call + Ongoing Wi\u2011Fi work call On hold @@ -126,10 +126,10 @@ Incoming work call - Incoming Wi-Fi call + Incoming Wi\u2011Fi call - Incoming Wi-Fi work call + Incoming Wi\u2011Fi work call Incoming suspected spam call @@ -190,7 +190,7 @@ This string is currently unused (see comments in InCallActivity.java.) --> Not registered on network. - Cellular network not available. + Mobile network not available. To place a call, enter a valid number. @@ -349,11 +349,11 @@ In call - Continuing call using cellular data… + Continuing call using mobile data\u2026 - Couldn\'t switch to Wi-Fi network - Video call will remain on cellular network. Standard + Couldn\'t switch to Wi\u2011Fi network + Video call will remain on the mobile network. Standard data charges may apply. Do not show this again diff --git a/java/com/android/incallui/res/values/styles.xml b/java/com/android/incallui/res/values/styles.xml index 68a38f0b261eba9316540a8a99e48285b74e12ff..3c036c95ff1ae92fc442d7552cdec8a6d604f231 100644 --- a/java/com/android/incallui/res/values/styles.xml +++ b/java/com/android/incallui/res/values/styles.xml @@ -78,4 +78,13 @@ @color/dialer_theme_color + + diff --git a/java/com/android/incallui/sessiondata/MultimediaFragment.java b/java/com/android/incallui/sessiondata/MultimediaFragment.java index 85a60b6e3ae2e949f00e69dba1aecb0782ea14d7..3e6cdbbe00cf6b1285d25697d7ec9eeb0ae7bb7c 100644 --- a/java/com/android/incallui/sessiondata/MultimediaFragment.java +++ b/java/com/android/incallui/sessiondata/MultimediaFragment.java @@ -107,6 +107,7 @@ public class MultimediaFragment extends Fragment implements AvatarPresenter { public View onCreateView( LayoutInflater layoutInflater, @Nullable ViewGroup viewGroup, @Nullable Bundle bundle) { if (isSpam) { + LogUtil.i("MultimediaFragment.onCreateView", "show spam layout"); return layoutInflater.inflate(R.layout.fragment_spam, viewGroup, false); } @@ -116,23 +117,30 @@ public class MultimediaFragment extends Fragment implements AvatarPresenter { if (hasMap && MapsComponent.get(getContext()).getMaps().isAvailable()) { if (hasImage) { if (hasSubject) { + LogUtil.i("MultimediaFragment.onCreateView", "show text, image, location layout"); return layoutInflater.inflate( R.layout.fragment_composer_text_image_frag, viewGroup, false); } else { + LogUtil.i("MultimediaFragment.onCreateView", "show image, location layout"); return layoutInflater.inflate(R.layout.fragment_composer_image_frag, viewGroup, false); } } else if (hasSubject) { + LogUtil.i("MultimediaFragment.onCreateView", "show text, location layout"); return layoutInflater.inflate(R.layout.fragment_composer_text_frag, viewGroup, false); } else { + LogUtil.i("MultimediaFragment.onCreateView", "show location layout"); return layoutInflater.inflate(R.layout.fragment_composer_frag, viewGroup, false); } } else if (hasImage) { if (hasSubject) { + LogUtil.i("MultimediaFragment.onCreateView", "show text, image layout"); return layoutInflater.inflate(R.layout.fragment_composer_text_image, viewGroup, false); } else { + LogUtil.i("MultimediaFragment.onCreateView", "show image layout"); return layoutInflater.inflate(R.layout.fragment_composer_image, viewGroup, false); } } else { + LogUtil.i("MultimediaFragment.onCreateView", "show text layout"); return layoutInflater.inflate(R.layout.fragment_composer_text, viewGroup, false); } } @@ -155,11 +163,11 @@ public class MultimediaFragment extends Fragment implements AvatarPresenter { ((TextView) view.findViewById(R.id.spam_text)).setText(R.string.spam_message_text); } - TextView messageText = (TextView) view.findViewById(R.id.answer_message_text); + TextView messageText = view.findViewById(R.id.answer_message_text); if (messageText != null) { messageText.setText(getSubject()); } - ImageView mainImage = (ImageView) view.findViewById(R.id.answer_message_image); + ImageView mainImage = view.findViewById(R.id.answer_message_image); if (mainImage != null) { Glide.with(this) .load(getImageUri()) @@ -185,6 +193,7 @@ public class MultimediaFragment extends Fragment implements AvatarPresenter { Target target, DataSource dataSource, boolean isFirstResource) { + LogUtil.enterBlock("MultimediaFragment.onResourceReady"); view.findViewById(R.id.loading_spinner).setVisibility(View.GONE); return false; } @@ -192,7 +201,7 @@ public class MultimediaFragment extends Fragment implements AvatarPresenter { .into(mainImage); mainImage.setClipToOutline(true); } - FrameLayout fragmentHolder = (FrameLayout) view.findViewById(R.id.answer_message_frag); + FrameLayout fragmentHolder = view.findViewById(R.id.answer_message_frag); if (fragmentHolder != null) { fragmentHolder.setClipToOutline(true); Fragment mapFragment = @@ -202,7 +211,7 @@ public class MultimediaFragment extends Fragment implements AvatarPresenter { .replace(R.id.answer_message_frag, mapFragment) .commitNow(); } - avatarImageView = ((ImageView) view.findViewById(R.id.answer_message_avatar)); + avatarImageView = view.findViewById(R.id.answer_message_avatar); if (avatarImageView != null) { avatarImageView.setVisibility(showAvatar ? View.VISIBLE : View.GONE); } diff --git a/java/com/android/incallui/sessiondata/res/layout/fragment_composer_image.xml b/java/com/android/incallui/sessiondata/res/layout/fragment_composer_image.xml index ed29e78c4b02a8321dfcc0d65fae1feb894583de..3b3327d4f1a66654c7255a82cb9ddce250b70110 100644 --- a/java/com/android/incallui/sessiondata/res/layout/fragment_composer_image.xml +++ b/java/com/android/incallui/sessiondata/res/layout/fragment_composer_image.xml @@ -24,8 +24,8 @@ + android:scaleType="centerCrop"/> = " - + thresholdForShowing); + "SpamCallListListener.shouldThrottleSpamNotification", + "not showing %d >= %d", + randomNumber, + thresholdForShowing); return true; } } @@ -257,15 +252,23 @@ public class SpamCallListListener implements CallList.Listener { int randomNumber = random.nextInt(100); int thresholdForShowing = Spam.get(context).percentOfNonSpamNotificationsToShow(); if (thresholdForShowing == 0) { - LogUtil.d(TAG, "Not showing non spam notification: percentOfNonSpamNotificationsToShow is 0"); + LogUtil.d( + "SpamCallListListener.shouldThrottleNonSpamNotification", + "not showing non spam notification: percentOfNonSpamNotificationsToShow is 0"); return true; } else if (randomNumber < thresholdForShowing) { LogUtil.d( - TAG, "Showing non spam notification: " + randomNumber + " < " + thresholdForShowing); + "SpamCallListListener.shouldThrottleNonSpamNotification", + "showing non spam notification: %d < %d", + randomNumber, + thresholdForShowing); return false; } else { LogUtil.d( - TAG, "Not showing non spam notification:" + randomNumber + " >= " + thresholdForShowing); + "SpamCallListListener.shouldThrottleNonSpamNotification", + "not showing non spam notification: %d >= %d", + randomNumber, + thresholdForShowing); return true; } } diff --git a/java/com/android/incallui/speakerbuttonlogic/AndroidManifest.xml b/java/com/android/incallui/speakerbuttonlogic/AndroidManifest.xml new file mode 100644 index 0000000000000000000000000000000000000000..9557d0362eef029afae574f51d8c5bbcc446c8d6 --- /dev/null +++ b/java/com/android/incallui/speakerbuttonlogic/AndroidManifest.xml @@ -0,0 +1,18 @@ + + + diff --git a/java/com/android/incallui/speakerbuttonlogic/SpeakerButtonInfo.java b/java/com/android/incallui/speakerbuttonlogic/SpeakerButtonInfo.java new file mode 100644 index 0000000000000000000000000000000000000000..5ab821be0b1bcee5a4699a4b9b7e941238329d46 --- /dev/null +++ b/java/com/android/incallui/speakerbuttonlogic/SpeakerButtonInfo.java @@ -0,0 +1,91 @@ +/* + * Copyright (C) 2017 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License + */ + +package com.android.incallui.speakerbuttonlogic; + +import android.support.annotation.DrawableRes; +import android.support.annotation.IntDef; +import android.support.annotation.StringRes; +import android.telecom.CallAudioState; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +/** Info about how a "Speaker" button should be displayed */ +public class SpeakerButtonInfo { + + // Testing note: most of this is exercised in ReturnToCallTest.java + + /** Preferred size for icons */ + @Retention(RetentionPolicy.SOURCE) + @IntDef({IconSize.SIZE_24_DP, IconSize.SIZE_36_DP}) + public @interface IconSize { + int SIZE_24_DP = 1; + int SIZE_36_DP = 2; + } + + @DrawableRes public final int icon; + @StringRes public final int contentDescription; + @StringRes public final int label; + public final boolean checkable; + public final boolean isChecked; + + public SpeakerButtonInfo(CallAudioState audioState, @IconSize int iconSize) { + if ((audioState.getSupportedRouteMask() & CallAudioState.ROUTE_BLUETOOTH) + == CallAudioState.ROUTE_BLUETOOTH) { + checkable = false; + isChecked = false; + label = R.string.incall_label_audio; + + if ((audioState.getRoute() & CallAudioState.ROUTE_BLUETOOTH) + == CallAudioState.ROUTE_BLUETOOTH) { + icon = + iconSize == IconSize.SIZE_36_DP + ? R.drawable.quantum_ic_bluetooth_audio_white_36 + : R.drawable.quantum_ic_bluetooth_audio_white_24; + contentDescription = R.string.incall_content_description_bluetooth; + } else if ((audioState.getRoute() & CallAudioState.ROUTE_SPEAKER) + == CallAudioState.ROUTE_SPEAKER) { + icon = + iconSize == IconSize.SIZE_36_DP + ? R.drawable.quantum_ic_volume_up_white_36 + : R.drawable.quantum_ic_volume_up_white_24; + contentDescription = R.string.incall_content_description_speaker; + } else if ((audioState.getRoute() & CallAudioState.ROUTE_WIRED_HEADSET) + == CallAudioState.ROUTE_WIRED_HEADSET) { + icon = + iconSize == IconSize.SIZE_36_DP + ? R.drawable.quantum_ic_headset_white_36 + : R.drawable.quantum_ic_headset_white_24; + contentDescription = R.string.incall_content_description_headset; + } else { + icon = + iconSize == IconSize.SIZE_36_DP + ? R.drawable.quantum_ic_phone_in_talk_white_36 + : R.drawable.quantum_ic_phone_in_talk_white_24; + contentDescription = R.string.incall_content_description_earpiece; + } + } else { + checkable = true; + isChecked = audioState.getRoute() == CallAudioState.ROUTE_SPEAKER; + label = R.string.incall_label_speaker; + icon = + iconSize == IconSize.SIZE_36_DP + ? R.drawable.quantum_ic_volume_up_white_36 + : R.drawable.quantum_ic_volume_up_white_24; + contentDescription = R.string.incall_content_description_speaker; + } + } +} diff --git a/java/com/android/incallui/video/impl/SpeakerButtonController.java b/java/com/android/incallui/video/impl/SpeakerButtonController.java index e12032abf7857f64d5cda0b041390cfd6895fe8d..d98545feb25ad1cbb08f2376bbe76730c800d3ad 100644 --- a/java/com/android/incallui/video/impl/SpeakerButtonController.java +++ b/java/com/android/incallui/video/impl/SpeakerButtonController.java @@ -88,7 +88,7 @@ public class SpeakerButtonController implements OnCheckedChangeListener, OnClick icon = R.drawable.quantum_ic_headset_white_36; contentDescriptionResId = R.string.incall_content_description_headset; } else { - icon = R.drawable.ic_phone_audio_white_36dp; + icon = R.drawable.quantum_ic_phone_in_talk_white_36; contentDescriptionResId = R.string.incall_content_description_earpiece; } } else { diff --git a/java/com/android/incallui/video/impl/SurfaceViewVideoCallFragment.java b/java/com/android/incallui/video/impl/SurfaceViewVideoCallFragment.java index b7a960e352457cbe4d2253d074006b75f91dc80b..489f72b7d72897bfc95289a32b281b57f5df389c 100644 --- a/java/com/android/incallui/video/impl/SurfaceViewVideoCallFragment.java +++ b/java/com/android/incallui/video/impl/SurfaceViewVideoCallFragment.java @@ -495,7 +495,7 @@ public class SurfaceViewVideoCallFragment extends Fragment } private View[] getAllPreviewRelatedViews() { - return new View[] {previewRoot}; + return new View[] {previewRoot, mutePreviewOverlay}; } private int getOffsetTop(View view) { @@ -644,12 +644,6 @@ public class SurfaceViewVideoCallFragment extends Fragment updateVideoOffViews(); } - /** - * This method scales the video feed inside the texture view, it doesn't change the texture view's - * size. In the old UI we would change the view size to match the aspect ratio of the video. In - * the new UI the view is always square (with the circular clip) so we have to do additional work - * to make sure the non-square video doesn't look squished. - */ @Override public void onLocalVideoDimensionsChanged() { LogUtil.i("SurfaceViewVideoCallFragment.onLocalVideoDimensionsChanged", null); @@ -833,6 +827,9 @@ public class SurfaceViewVideoCallFragment extends Fragment inCallButtonUiDelegate.setAudioRoute(audioRoute); } + @Override + public void onAudioRouteSelectorDismiss() {} + @Override public void setPrimary(@NonNull PrimaryInfo primaryInfo) { LogUtil.i("SurfaceViewVideoCallFragment.setPrimary", primaryInfo.toString()); diff --git a/java/com/android/incallui/video/impl/VideoCallFragment.java b/java/com/android/incallui/video/impl/VideoCallFragment.java index 8e2f5aefd9103de1eac94b38b561238d1115cd69..609cb691ecf2579835e749b7ebeb81401c0a9532 100644 --- a/java/com/android/incallui/video/impl/VideoCallFragment.java +++ b/java/com/android/incallui/video/impl/VideoCallFragment.java @@ -59,6 +59,7 @@ import android.widget.TextView; import com.android.dialer.common.Assert; import com.android.dialer.common.FragmentUtils; import com.android.dialer.common.LogUtil; +import com.android.dialer.common.concurrent.ThreadUtil; import com.android.dialer.compat.ActivityCompat; import com.android.incallui.audioroute.AudioRouteSelectorDialogFragment; import com.android.incallui.audioroute.AudioRouteSelectorDialogFragment.AudioRouteSelectorPresenter; @@ -121,6 +122,10 @@ public class VideoCallFragment extends Fragment outline.setOval(x - radius, y - radius, x + radius, y + radius); } }; + + // Must use a named method reference as otherwise they do not match. + // https://stackoverflow.com/questions/28190304/two-exact-method-references-are-not-equal + private final Runnable updatePreviewVideoIfSafe = this::updatePreviewVideoScaling; private InCallScreenDelegate inCallScreenDelegate; private VideoCallScreenDelegate videoCallScreenDelegate; private InCallButtonUiDelegate inCallButtonUiDelegate; @@ -349,6 +354,9 @@ public class VideoCallFragment extends Fragment super.onPause(); LogUtil.i("VideoCallFragment.onPause", null); inCallScreenDelegate.onInCallScreenPaused(); + + // If this is scheduled we should remove it + ThreadUtil.getUiThreadHandler().removeCallbacks(updatePreviewVideoIfSafe); } @Override @@ -665,22 +673,14 @@ public class VideoCallFragment extends Fragment updateRemoteVideoScaling(); } - /** - * This method scales the video feed inside the texture view, it doesn't change the texture view's - * size. In the old UI we would change the view size to match the aspect ratio of the video. In - * the new UI the view is always square (with the circular clip) so we have to do additional work - * to make sure the non-square video doesn't look squished. - */ @Override public void onLocalVideoDimensionsChanged() { LogUtil.i("VideoCallFragment.onLocalVideoDimensionsChanged", null); - updatePreviewVideoScaling(); } @Override public void onLocalVideoOrientationChanged() { LogUtil.i("VideoCallFragment.onLocalVideoOrientationChanged", null); - updatePreviewVideoScaling(); } /** Called when the remote video's dimensions change. */ @@ -852,6 +852,9 @@ public class VideoCallFragment extends Fragment inCallButtonUiDelegate.setAudioRoute(audioRoute); } + @Override + public void onAudioRouteSelectorDismiss() {} + @Override public void setPrimary(@NonNull PrimaryInfo primaryInfo) { LogUtil.i("VideoCallFragment.setPrimary", primaryInfo.toString()); @@ -1045,7 +1048,6 @@ public class VideoCallFragment extends Fragment params.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM); previewTextureView.setLayoutParams(params); previewTextureView.setOutlineProvider(circleOutlineProvider); - updatePreviewVideoScaling(); updateOverlayBackground(); contactGridManager.setIsMiddleRowVisible(false); updateMutePreviewOverlayVisibility(); @@ -1053,6 +1055,9 @@ public class VideoCallFragment extends Fragment previewOffBlurredImageView.setLayoutParams(params); previewOffBlurredImageView.setOutlineProvider(circleOutlineProvider); previewOffBlurredImageView.setClipToOutline(true); + + // Wait until the layout pass has finished before updating the scaling + ThreadUtil.postOnUiThread(updatePreviewVideoIfSafe); } private void updateVideoOffViews() { diff --git a/java/com/android/incallui/video/impl/res/layout/frag_videocall_surfaceview.xml b/java/com/android/incallui/video/impl/res/layout/frag_videocall_surfaceview.xml index c672466759f3a8e0dbbb3a07e77bc423df755c9f..1a2bc2429a4ee055ac0d217c4aaa86d6d1a029f1 100644 --- a/java/com/android/incallui/video/impl/res/layout/frag_videocall_surfaceview.xml +++ b/java/com/android/incallui/video/impl/res/layout/frag_videocall_surfaceview.xml @@ -14,7 +14,7 @@ ~ See the License for the specific language governing permissions and ~ limitations under the License --> - - - + + - + diff --git a/java/com/android/incallui/video/impl/res/values-h580dp/dimens.xml b/java/com/android/incallui/video/impl/res/values-h580dp/dimens.xml index a53fb64043ff1313602dfe391676b2a075ff02cc..e9e7f9e8b5620037c70c1f5472baa0a819f041fc 100644 --- a/java/com/android/incallui/video/impl/res/values-h580dp/dimens.xml +++ b/java/com/android/incallui/video/impl/res/values-h580dp/dimens.xml @@ -19,5 +19,5 @@ 72dp 88dp 88dp - 104dp + 116dp diff --git a/java/com/android/incallui/video/impl/res/values-land/dimens.xml b/java/com/android/incallui/video/impl/res/values-land/dimens.xml index 6485735e2bd37fa468a0a19f69309da197c2d0af..d0a5e409ac9afd791be85c33d75eaf06bdf0d5d0 100644 --- a/java/com/android/incallui/video/impl/res/values-land/dimens.xml +++ b/java/com/android/incallui/video/impl/res/values-land/dimens.xml @@ -15,5 +15,5 @@ ~ limitations under the License --> - 92dp + 96dp diff --git a/java/com/android/incallui/video/impl/res/values-land/styles.xml b/java/com/android/incallui/video/impl/res/values-land/styles.xml index a809708df6e3bee13f6326f0842808a6eee58863..f60dbd1d6ac8b955615fadf9717d0c9dc3706ac6 100644 --- a/java/com/android/incallui/video/impl/res/values-land/styles.xml +++ b/java/com/android/incallui/video/impl/res/values-land/styles.xml @@ -16,7 +16,8 @@ -->