diff options
Diffstat (limited to 'InCallUI')
120 files changed, 1305 insertions, 884 deletions
diff --git a/InCallUI/res/drawable-mdpi/ic_sound_off_speakerphone_holo_dark.png b/InCallUI/res/drawable-mdpi/ic_sound_off_speakerphone_holo_dark.png Binary files differdeleted file mode 100644 index adaff6052..000000000 --- a/InCallUI/res/drawable-mdpi/ic_sound_off_speakerphone_holo_dark.png +++ /dev/null diff --git a/InCallUI/res/drawable-mdpi/ic_sound_speakerphone_holo_dark.png b/InCallUI/res/drawable-mdpi/ic_sound_speakerphone_holo_dark.png Binary files differdeleted file mode 100644 index 2b9600b7f..000000000 --- a/InCallUI/res/drawable-mdpi/ic_sound_speakerphone_holo_dark.png +++ /dev/null diff --git a/InCallUI/res/drawable-xhdpi/ic_sound_off_speakerphone_holo_dark.png b/InCallUI/res/drawable-xhdpi/ic_sound_off_speakerphone_holo_dark.png Binary files differdeleted file mode 100644 index 98a449fde..000000000 --- a/InCallUI/res/drawable-xhdpi/ic_sound_off_speakerphone_holo_dark.png +++ /dev/null diff --git a/InCallUI/res/drawable-xhdpi/ic_sound_speakerphone_holo_dark.png b/InCallUI/res/drawable-xhdpi/ic_sound_speakerphone_holo_dark.png Binary files differdeleted file mode 100644 index 71aad9759..000000000 --- a/InCallUI/res/drawable-xhdpi/ic_sound_speakerphone_holo_dark.png +++ /dev/null diff --git a/InCallUI/res/drawable-xxhdpi/ic_sound_off_speakerphone_holo_dark.png b/InCallUI/res/drawable-xxhdpi/ic_sound_off_speakerphone_holo_dark.png Binary files differdeleted file mode 100644 index caf36e02a..000000000 --- a/InCallUI/res/drawable-xxhdpi/ic_sound_off_speakerphone_holo_dark.png +++ /dev/null diff --git a/InCallUI/res/drawable-xxhdpi/ic_sound_speakerphone_holo_dark.png b/InCallUI/res/drawable-xxhdpi/ic_sound_speakerphone_holo_dark.png Binary files differdeleted file mode 100644 index e6e974f8b..000000000 --- a/InCallUI/res/drawable-xxhdpi/ic_sound_speakerphone_holo_dark.png +++ /dev/null diff --git a/InCallUI/res/layout-land/call_card_content.xml b/InCallUI/res/layout-land/call_card_fragment.xml index 496b6b399..aa04840c1 100644 --- a/InCallUI/res/layout-land/call_card_content.xml +++ b/InCallUI/res/layout-land/call_card_fragment.xml @@ -18,7 +18,9 @@ <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" - android:layout_height="match_parent" > + android:layout_height="match_parent" + android:layout_alignParentTop="true" + android:layout_alignParentStart="true" > <LinearLayout android:id="@+id/primary_call_info_container" @@ -37,7 +39,7 @@ <fragment android:name="com.android.incallui.CallButtonFragment" android:id="@+id/callButtonFragment" - android:layout_width="match_parent" + android:layout_width="wrap_content" android:layout_height="wrap_content" /> <FrameLayout @@ -66,6 +68,14 @@ android:background="@android:color/white" android:src="@drawable/img_no_image_automirrored" /> + <fragment android:name="com.android.incallui.VideoCallFragment" + android:id="@+id/videoCallFragment" + android:layout_alignParentTop="true" + android:layout_gravity="top|center_horizontal" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:visibility="gone" /> + <include layout="@layout/manage_conference_call_button" android:layout_width="match_parent" android:layout_height="wrap_content" @@ -91,25 +101,15 @@ android:indeterminate="true" /> </FrameLayout> - <!-- Placeholder for the dialpad which is replaced with the dialpad fragment when shown. --> + <!-- Placeholder for various fragments that are added dynamically underneath the caller info. --> <FrameLayout - android:id="@+id/dialpadFragmentContainer" + android:id="@+id/answer_and_dialpad_container" android:layout_toEndOf="@id/primary_call_info_container" android:layout_gravity="end|center_vertical" android:layout_alignParentEnd="true" android:layout_width="match_parent" android:layout_height="match_parent" /> - <fragment android:name="com.android.incallui.AnswerFragment" - android:id="@+id/answerFragment" - android:layout_toEndOf="@id/primary_call_info_container" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:gravity="start" - android:layout_gravity="end|center_vertical" - android:layout_marginBottom="@dimen/glowpadview_margin_bottom" - android:visibility="gone" /> - <FrameLayout android:id="@+id/floating_end_call_action_button_container" android:layout_width="@dimen/end_call_floating_action_button_diameter" diff --git a/InCallUI/res/layout/answer_fragment.xml b/InCallUI/res/layout/answer_fragment.xml index 7026dd13c..ec6ef30ac 100644 --- a/InCallUI/res/layout/answer_fragment.xml +++ b/InCallUI/res/layout/answer_fragment.xml @@ -15,18 +15,17 @@ ~ limitations under the License --> -<!-- TODO(klp): move out to separate file --> <com.android.incallui.GlowPadWrapper xmlns:android="http://schemas.android.com/apk/res/android" xmlns:dc="http://schemas.android.com/apk/res-auto" android:id="@+id/glow_pad_view" - android:layout_width="wrap_content" - android:layout_height="wrap_content" + android:layout_width="match_parent" + android:layout_height="match_parent" android:focusable="true" android:layout_centerHorizontal="true" android:gravity="center" android:background="@color/glowpad_background_color" - android:visibility="gone" + android:layout_marginBottom="@dimen/glowpadview_margin_bottom" dc:targetDrawables="@array/incoming_call_widget_audio_with_sms_targets" dc:targetDescriptions="@array/incoming_call_widget_audio_with_sms_target_descriptions" diff --git a/InCallUI/res/layout/call_button_fragment.xml b/InCallUI/res/layout/call_button_fragment.xml index e8feca68a..18906dda2 100644 --- a/InCallUI/res/layout/call_button_fragment.xml +++ b/InCallUI/res/layout/call_button_fragment.xml @@ -38,8 +38,7 @@ android:background="@color/button_background_color" android:layout_height="wrap_content" android:layout_alignParentBottom="true" - android:animateLayoutChanges="true" - android:visibility="invisible" > + android:animateLayoutChanges="true" > <LinearLayout android:orientation="horizontal" diff --git a/InCallUI/res/layout/call_card_content.xml b/InCallUI/res/layout/call_card_fragment.xml index 7a42586ea..17906f730 100644 --- a/InCallUI/res/layout/call_card_content.xml +++ b/InCallUI/res/layout/call_card_fragment.xml @@ -18,7 +18,9 @@ <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" - android:layout_height="match_parent"> + android:layout_height="match_parent" + android:layout_alignParentTop="true" + android:layout_alignParentStart="true"> <!-- The main content of the CallCard is either one or two "call info" blocks, depending on whether one or two lines are in use. @@ -98,9 +100,17 @@ android:layout_height="wrap_content" android:layout_alignTop="@id/photo" /> - <!-- Placeholder for the dialpad which is replaced with the dialpad fragment when shown. --> + <fragment android:name="com.android.incallui.VideoCallFragment" + android:layout_alignParentStart="true" + android:layout_gravity="start|center_vertical" + android:id="@+id/videoCallFragment" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:visibility="gone" /> + + <!-- Placeholder for various fragments that are added dynamically underneath the caller info. --> <FrameLayout - android:id="@+id/dialpadFragmentContainer" + android:id="@+id/answer_and_dialpad_container" android:layout_below="@id/primary_call_info_container" android:layout_gravity="bottom|center_horizontal" android:layout_alignParentBottom="true" @@ -108,15 +118,6 @@ android:layout_height="match_parent" android:elevation="@dimen/dialpad_elevation" /> - <fragment android:name="com.android.incallui.AnswerFragment" - android:id="@+id/answerFragment" - android:layout_below="@id/primary_call_info_container" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:layout_gravity="bottom|center_horizontal" - android:layout_marginBottom="@dimen/glowpadview_margin_bottom" - android:visibility="gone" /> - <FrameLayout android:id="@+id/floating_end_call_action_button_container" android:layout_width="@dimen/end_call_floating_action_button_diameter" diff --git a/InCallUI/res/layout/conference_manager_fragment.xml b/InCallUI/res/layout/conference_manager_fragment.xml index 8e55ad762..7350bee14 100644 --- a/InCallUI/res/layout/conference_manager_fragment.xml +++ b/InCallUI/res/layout/conference_manager_fragment.xml @@ -22,9 +22,7 @@ android:background="@color/conference_call_manager_background_color" android:layout_width="match_parent" android:layout_height="match_parent" - android:paddingTop="@dimen/conference_call_manager_padding_top" - android:visibility="gone"> - + android:paddingTop="@dimen/conference_call_manager_padding_top" > <!-- List of conference participants. --> <ListView android:id="@+id/participantList" diff --git a/InCallUI/res/layout/dtmf_twelve_key_dialer_view.xml b/InCallUI/res/layout/dtmf_twelve_key_dialer_view.xml index efd698286..b567dbbf2 100644 --- a/InCallUI/res/layout/dtmf_twelve_key_dialer_view.xml +++ b/InCallUI/res/layout/dtmf_twelve_key_dialer_view.xml @@ -20,11 +20,5 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> - - <view class="com.android.incallui.DialpadFragment$HoverIgnoringLinearLayout" - android:orientation="vertical" - android:layout_width="match_parent" - android:layout_height="match_parent" > - <include layout="@layout/dialpad_view"/> - </view> + <include layout="@layout/dialpad_view"/> </view> diff --git a/InCallUI/res/layout/incall_screen.xml b/InCallUI/res/layout/incall_screen.xml index 9f7569574..d46778c1c 100644 --- a/InCallUI/res/layout/incall_screen.xml +++ b/InCallUI/res/layout/incall_screen.xml @@ -19,21 +19,4 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/main" > - - <fragment android:name="com.android.incallui.CallCardFragment" - android:id="@+id/callCardFragment" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:layout_alignParentTop="true" - android:layout_alignParentStart="true" /> - - <fragment android:name="com.android.incallui.ConferenceManagerFragment" - android:id="@+id/conferenceManagerFragment" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:layout_alignParentTop="true" - android:layout_alignParentStart="true" - android:layout_alignParentBottom="true" - android:layout_alignParentEnd="true" /> - </FrameLayout> diff --git a/InCallUI/res/layout/primary_call_info.xml b/InCallUI/res/layout/primary_call_info.xml index 8f0c0e24d..9f92b07e7 100644 --- a/InCallUI/res/layout/primary_call_info.xml +++ b/InCallUI/res/layout/primary_call_info.xml @@ -117,7 +117,8 @@ android:textColor="@color/incall_call_banner_subtext_color" android:textSize="@dimen/call_label_text_size" android:singleLine="true" - android:textDirection="ltr" /> + android:textDirection="ltr" + android:visibility="gone" /> <TextView android:id="@+id/phoneNumber" android:layout_width="match_parent" @@ -126,7 +127,8 @@ android:textAppearance="?android:attr/textAppearanceSmall" android:textColor="@color/incall_call_banner_subtext_color" android:textSize="@dimen/call_label_text_size" - android:singleLine="true" /> + android:singleLine="true" + android:visibility="gone" /> </LinearLayout> @@ -152,6 +154,7 @@ android:textAppearance="?android:attr/textAppearanceSmall" android:textColor="@color/incall_call_banner_text_color" android:maxLines="1" - android:ellipsize="end" /> + android:ellipsize="end" + android:visibility="gone" /> </LinearLayout> <!-- End of call_banner --> diff --git a/InCallUI/res/values-af/strings.xml b/InCallUI/res/values-af/strings.xml index fc27060fd..5d798f630 100644 --- a/InCallUI/res/values-af/strings.xml +++ b/InCallUI/res/values-af/strings.xml @@ -57,8 +57,10 @@ <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> gemiste oproepe"</string> <string name="notification_missedCallTicker" msgid="504686252427747209">"Gemiste oproep van <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string> <string name="notification_ongoing_call" msgid="7068688957273482989">"Oproep aan die gang"</string> + <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"Voortdurende Wi-Fi-oproep"</string> <string name="notification_on_hold" msgid="3480694969511790465">"Hou aan"</string> <string name="notification_incoming_call" msgid="2820429205043529642">"Inkomende oproep"</string> + <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"Inkomende Wi-Fi-oproep"</string> <string name="notification_incoming_video_call" msgid="7356836933934464805">"Inkomende video-oproep"</string> <string name="notification_requesting_video_call" msgid="1405576812892369451">"Inkomende videoversoek"</string> <string name="notification_voicemail_title" msgid="8933468752045550523">"Nuwe stemboodskap"</string> diff --git a/InCallUI/res/values-am/strings.xml b/InCallUI/res/values-am/strings.xml index 982a65f15..42e482f79 100644 --- a/InCallUI/res/values-am/strings.xml +++ b/InCallUI/res/values-am/strings.xml @@ -45,9 +45,9 @@ <string name="card_title_hanging_up" msgid="3999101620995182450">"በመዝጋት ላይ"</string> <string name="card_title_in_call" msgid="6346543933068225205">"ጥሪ ላይ"</string> <string name="card_title_my_phone_number" msgid="112428362494434191">"ቁጥሬ<xliff:g id="MY_PHONE_NUMBER">%s</xliff:g> ነው"</string> - <string name="card_title_video_call_connecting" msgid="297586766381973954">"ቪዲዮ በማገናኘት ላይ"</string> + <string name="card_title_video_call_connecting" msgid="297586766381973954">"ቪድዮ በማገናኘት ላይ"</string> <string name="card_title_video_call" msgid="5898636679563320218">"የቪዲዮ ጥሪ"</string> - <string name="card_title_video_call_requesting" msgid="4587504939739340937">"ቪዲዮ በመጠየቅ ላይ"</string> + <string name="card_title_video_call_requesting" msgid="4587504939739340937">"ቪድዮ በመጠየቅ ላይ"</string> <string name="card_title_video_call_error" msgid="9000555878389539225">"የቪዲዮ ጥሪን ማገናኘት አልተቻለም"</string> <string name="card_title_callback_number" msgid="7307938207564217293">"የእርስዎ የመልሶ መደወያ ቁጥር\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string> <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"የእርስዎ የድንገተኛ አደጋ መልሶ መደወያ ቁጥር\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string> @@ -57,8 +57,10 @@ <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> ያመለጡ ጥሪዎች"</string> <string name="notification_missedCallTicker" msgid="504686252427747209">"ከ<xliff:g id="MISSED_CALL_FROM">%s</xliff:g> ያመለጠ ጥሪ"</string> <string name="notification_ongoing_call" msgid="7068688957273482989">"እየተካሄደ ያለ ጥሪ"</string> + <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"በሂደት ላይ ያለ የWi-Fi ጥሪ"</string> <string name="notification_on_hold" msgid="3480694969511790465">"ያዝናቆይ"</string> <string name="notification_incoming_call" msgid="2820429205043529642">"ገቢ ጥሪ"</string> + <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"ገቢ የWi-Fi ጥሪ"</string> <string name="notification_incoming_video_call" msgid="7356836933934464805">"ገቢ የቪዲዮ ጥሪ"</string> <string name="notification_requesting_video_call" msgid="1405576812892369451">"ገቢ የቪዲዮ ጥያቄ"</string> <string name="notification_voicemail_title" msgid="8933468752045550523">"አዲስ የድምፅ መልዕክት"</string> @@ -69,10 +71,10 @@ <string name="notification_network_selection_text" msgid="2607085729661923269">"የተመረጠ አውታረመረብ(<xliff:g id="OPERATOR_NAME">%s</xliff:g>) የለም"</string> <string name="notification_action_answer" msgid="6700362365135365143">"መልስ"</string> <string name="notification_action_end_call" msgid="6069460915123531620">"ዝጋ"</string> - <string name="notification_action_answer_video" msgid="7809271910870211729">"ቪዲዮ"</string> + <string name="notification_action_answer_video" msgid="7809271910870211729">"ቪድዮ"</string> <string name="notification_action_answer_voice" msgid="1770796916369437773">"ድምፅ"</string> <string name="notification_action_accept" msgid="2898609801209468429">"ተቀበል"</string> - <string name="notification_action_dismiss" msgid="2679969397930852858">"ያጥፉ"</string> + <string name="notification_action_dismiss" msgid="2679969397930852858">"አሰናብት"</string> <string name="notification_missedCall_call_back" msgid="2684890353590890187">"መልሰህ ደውል"</string> <string name="notification_missedCall_message" msgid="3049928912736917988">"መልዕክት"</string> <string name="incall_error_power_off" msgid="6550191216405193368">"ለመደወል፣ መጀመሪያየአውሮፕላኑን ሁነታ አጥፋ።"</string> @@ -113,7 +115,7 @@ <string name="onscreenVideoCallText" msgid="4800924186056115442">"የቪዲዮ ጥሪ"</string> <string name="onscreenChangeToVoiceText" msgid="5311407863653867937">"ወደ ድምጽ ጥሪ ይለውጡ"</string> <string name="onscreenSwitchCameraText" msgid="5324543493442787798">"ካሜራ ቀይር"</string> - <string name="onscreenPauseVideoText" msgid="5663965924921429203">"ቪዲዮ ለአፍታ አቁም"</string> + <string name="onscreenPauseVideoText" msgid="5663965924921429203">"ቪድዮ ለአፍታ አቁም"</string> <string name="onscreenOverflowText" msgid="2702376562345723132">"ተጨማሪ አማራጮች"</string> <string name="voicemail_provider" msgid="5135942703327136909">"አገልግሎት"</string> <string name="voicemail_settings" msgid="72448049107749316">"አዋቅር"</string> @@ -130,7 +132,7 @@ <string name="description_target_answer" msgid="7205604197797472471">"መልስ"</string> <string name="description_target_send_sms" msgid="2098326025587950144">"SMS ላክ"</string> <string name="description_target_decline" msgid="4789834364389731957">"አትቀበል"</string> - <string name="description_target_answer_video_call" msgid="3495965588512395026">"እንደ ቪዲዮ ጥሪ ይመልሱ"</string> + <string name="description_target_answer_video_call" msgid="3495965588512395026">"እንደ ቪድዮ ጥሪ ይመልሱ"</string> <string name="description_target_answer_audio_call" msgid="8396296303320994450">"እንደ ድምጽ ጥሪ ይመልሱ"</string> <string name="description_target_accept_upgrade_to_video_request" msgid="2894072808324604062">"የቪዲዮ ጥያቄ ተቀበል"</string> <string name="description_target_decline_upgrade_to_video_request" msgid="4093888612888538776">"የቪዲዮ ጥያቄ አትቀበል"</string> diff --git a/InCallUI/res/values-ar/strings.xml b/InCallUI/res/values-ar/strings.xml index 36e5e1986..ce04dc85f 100644 --- a/InCallUI/res/values-ar/strings.xml +++ b/InCallUI/res/values-ar/strings.xml @@ -57,8 +57,10 @@ <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> من المكالمات الفائتة"</string> <string name="notification_missedCallTicker" msgid="504686252427747209">"مكالمة فائتة من <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string> <string name="notification_ongoing_call" msgid="7068688957273482989">"مكالمة حالية"</string> + <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"اتصال جارٍ عبر Wi-Fi"</string> <string name="notification_on_hold" msgid="3480694969511790465">"معلقة"</string> <string name="notification_incoming_call" msgid="2820429205043529642">"مكالمة واردة"</string> + <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"اتصال وارد عبر Wi-Fi"</string> <string name="notification_incoming_video_call" msgid="7356836933934464805">"مكالمة فيديو واردة"</string> <string name="notification_requesting_video_call" msgid="1405576812892369451">"طلب فيديو وارد"</string> <string name="notification_voicemail_title" msgid="8933468752045550523">"بريد صوتي جديد"</string> diff --git a/InCallUI/res/values-az-rAZ/strings.xml b/InCallUI/res/values-az-rAZ/strings.xml index 5f8946b3a..1690af845 100644 --- a/InCallUI/res/values-az-rAZ/strings.xml +++ b/InCallUI/res/values-az-rAZ/strings.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<!-- +<!-- ~ Copyright (C) 2013 The Android Open Source Project ~ ~ Licensed under the Apache License, Version 2.0 (the "License"); @@ -121,33 +121,10 @@ <string name="contactPhoto" msgid="4713193418046639466">"kontakt fotosu"</string> <string name="goPrivate" msgid="865837794424530980">"şəxsi rejimə keçin"</string> <string name="selectContact" msgid="781975788478987237">"kontakt seçin"</string> - <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"İndi danışmaq olmur. Nə olub?"</string> - <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"Özüm zəng edəcəm."</string> - <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Özüm sonra zəng edəcəm."</string> - <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"İndi danışa bilmirəm. Sonra zəng edin."</string> <string name="respond_via_sms_custom_message" msgid="6158880869935281078">"Özünüzünkünü yazın"</string> <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Tez cavablar"</string> - <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Tez cavablara düzəliş edin"</string> - <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string> - <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"Tez cavab"</string> - <string name="respond_via_sms_menu_reset_default_activity" msgid="1461742052902053466">"Defolt tətbiqləri sıfırla"</string> - <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"Mesaj <xliff:g id="PHONE_NUMBER">%s</xliff:g> nömrəsinə göndərildi."</string> - <string name="description_image_button_one" msgid="5502718871331943463">"bir"</string> - <string name="description_image_button_two" msgid="4903738528222924522">"iki"</string> - <string name="description_image_button_three" msgid="5570985408463782329">"üç"</string> - <string name="description_image_button_four" msgid="1697520001239289074">"dörd"</string> - <string name="description_image_button_five" msgid="3450276493026943454">"beş"</string> - <string name="description_image_button_six" msgid="2070376172268675300">"altı"</string> - <string name="description_image_button_seven" msgid="1757351311199993371">"yeddi"</string> - <string name="description_image_button_eight" msgid="4734693919020613227">"səkkiz"</string> - <string name="description_image_button_nine" msgid="5568534122590597040">"doqquz"</string> - <string name="description_image_button_star" msgid="1976280813017254462">"ulduz"</string> - <string name="description_image_button_zero" msgid="4211255756866893605">"sıfır"</string> - <string name="description_image_button_pound" msgid="1716041284529917866">"funt"</string> <string name="description_dial_button" msgid="7459705245418435351">"Yığ"</string> <string name="description_delete_button" msgid="4015842181592283903">"geri düyməsi"</string> - <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"Spikerfon aktivdir."</string> - <string name="accessibility_call_muted" msgid="2776111226185342220">"Səssiz zəng edin."</string> <string name="description_target_answer" msgid="7205604197797472471">"Cavab"</string> <string name="description_target_send_sms" msgid="2098326025587950144">"SMS göndər"</string> <string name="description_target_decline" msgid="4789834364389731957">"Rədd et"</string> diff --git a/InCallUI/res/values-bg/strings.xml b/InCallUI/res/values-bg/strings.xml index 208a27b30..aafc57423 100644 --- a/InCallUI/res/values-bg/strings.xml +++ b/InCallUI/res/values-bg/strings.xml @@ -57,8 +57,10 @@ <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> пропуснати обаждания"</string> <string name="notification_missedCallTicker" msgid="504686252427747209">"Пропуснато обаждане от <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string> <string name="notification_ongoing_call" msgid="7068688957273482989">"Текущо обаждане"</string> + <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"Текущо обаждане през Wi-Fi"</string> <string name="notification_on_hold" msgid="3480694969511790465">"Задържане на обаждането"</string> <string name="notification_incoming_call" msgid="2820429205043529642">"Входящо обаждане"</string> + <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"Входящо обаждане през Wi-Fi"</string> <string name="notification_incoming_video_call" msgid="7356836933934464805">"Входящо видеообаждане"</string> <string name="notification_requesting_video_call" msgid="1405576812892369451">"Входяща заявка за видеовръзка"</string> <string name="notification_voicemail_title" msgid="8933468752045550523">"Нова гласова поща"</string> diff --git a/InCallUI/res/values-bn-rBD/strings.xml b/InCallUI/res/values-bn-rBD/strings.xml index c7fce65aa..4d7fa57b8 100644 --- a/InCallUI/res/values-bn-rBD/strings.xml +++ b/InCallUI/res/values-bn-rBD/strings.xml @@ -57,8 +57,10 @@ <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g>টি মিসড কল"</string> <string name="notification_missedCallTicker" msgid="504686252427747209">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g> এর থেকে মিসড কল"</string> <string name="notification_ongoing_call" msgid="7068688957273482989">"চালু থাকা কল"</string> + <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"চলমান Wi-Fi কল"</string> <string name="notification_on_hold" msgid="3480694969511790465">"সাময়িকভাবে স্থগিত রাখা হয়েছে"</string> <string name="notification_incoming_call" msgid="2820429205043529642">"ইনকামিং কল"</string> + <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"আগত Wi-Fi কল"</string> <string name="notification_incoming_video_call" msgid="7356836933934464805">"ইনকামিং ভিডিও কল"</string> <string name="notification_requesting_video_call" msgid="1405576812892369451">"আগত ভিডিও অনুরোধ"</string> <string name="notification_voicemail_title" msgid="8933468752045550523">"নতুন ভয়েসমেল"</string> diff --git a/InCallUI/res/values-ca/strings.xml b/InCallUI/res/values-ca/strings.xml index 7058a3754..443fc96f5 100644 --- a/InCallUI/res/values-ca/strings.xml +++ b/InCallUI/res/values-ca/strings.xml @@ -57,8 +57,10 @@ <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> trucades perdudes"</string> <string name="notification_missedCallTicker" msgid="504686252427747209">"Trucada perduda de <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string> <string name="notification_ongoing_call" msgid="7068688957273482989">"Trucada en procés"</string> + <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"Trucada Wi-Fi en curs"</string> <string name="notification_on_hold" msgid="3480694969511790465">"En espera"</string> <string name="notification_incoming_call" msgid="2820429205043529642">"Trucada entrant"</string> + <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"Trucada Wi-Fi entrant"</string> <string name="notification_incoming_video_call" msgid="7356836933934464805">"Videotrucada entrant"</string> <string name="notification_requesting_video_call" msgid="1405576812892369451">"Sol·licitud de vídeo entrant"</string> <string name="notification_voicemail_title" msgid="8933468752045550523">"Correu de veu nou"</string> diff --git a/InCallUI/res/values-cs/strings.xml b/InCallUI/res/values-cs/strings.xml index 57135e186..4dfbce8c5 100644 --- a/InCallUI/res/values-cs/strings.xml +++ b/InCallUI/res/values-cs/strings.xml @@ -42,7 +42,7 @@ <string name="card_title_incoming_call" msgid="7364539451234646909">"Příchozí hovor"</string> <string name="card_title_call_ended" msgid="5544730338889702298">"Hovor ukončen"</string> <string name="card_title_on_hold" msgid="821463117892339942">"Přidržený hovor"</string> - <string name="card_title_hanging_up" msgid="3999101620995182450">"Zavěšování"</string> + <string name="card_title_hanging_up" msgid="3999101620995182450">"Ukončování hovoru"</string> <string name="card_title_in_call" msgid="6346543933068225205">"Probíhá hovor"</string> <string name="card_title_my_phone_number" msgid="112428362494434191">"Moje číslo je <xliff:g id="MY_PHONE_NUMBER">%s</xliff:g>"</string> <string name="card_title_video_call_connecting" msgid="297586766381973954">"Navazování spojení pro video"</string> @@ -57,8 +57,10 @@ <string name="notification_missedCallsMsg" msgid="4575787816055205600">"Zmeškané hovory: <xliff:g id="NUM_MISSED_CALLS">%s</xliff:g>."</string> <string name="notification_missedCallTicker" msgid="504686252427747209">"Zmeškaný hovor od volajícího <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>."</string> <string name="notification_ongoing_call" msgid="7068688957273482989">"Probíhající hovor"</string> + <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"Probíhající volání přes Wi-Fi"</string> <string name="notification_on_hold" msgid="3480694969511790465">"Přidržený hovor"</string> <string name="notification_incoming_call" msgid="2820429205043529642">"Příchozí hovor"</string> + <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"Příchozí volání přes Wi-Fi"</string> <string name="notification_incoming_video_call" msgid="7356836933934464805">"Příchozí videohovor"</string> <string name="notification_requesting_video_call" msgid="1405576812892369451">"Příchozí žádost o videohovor"</string> <string name="notification_voicemail_title" msgid="8933468752045550523">"Nová hlasová zpráva"</string> diff --git a/InCallUI/res/values-da/strings.xml b/InCallUI/res/values-da/strings.xml index bf7c62f9b..dc6fea772 100644 --- a/InCallUI/res/values-da/strings.xml +++ b/InCallUI/res/values-da/strings.xml @@ -57,8 +57,10 @@ <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> ubesvarede opkald"</string> <string name="notification_missedCallTicker" msgid="504686252427747209">"Ubesvarede opkald fra <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string> <string name="notification_ongoing_call" msgid="7068688957273482989">"Igangværende opkald"</string> + <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"Igangværende opkald via Wi-Fi"</string> <string name="notification_on_hold" msgid="3480694969511790465">"Ventende"</string> <string name="notification_incoming_call" msgid="2820429205043529642">"Indgående opkald"</string> + <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"Indgående opkald via Wi-Fi"</string> <string name="notification_incoming_video_call" msgid="7356836933934464805">"Indgående videoopkald"</string> <string name="notification_requesting_video_call" msgid="1405576812892369451">"Indgående videoanmodning"</string> <string name="notification_voicemail_title" msgid="8933468752045550523">"Ny telefonsvarerbesked"</string> diff --git a/InCallUI/res/values-de/strings.xml b/InCallUI/res/values-de/strings.xml index 8d4f04410..7349e5c69 100644 --- a/InCallUI/res/values-de/strings.xml +++ b/InCallUI/res/values-de/strings.xml @@ -57,8 +57,10 @@ <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> entgangene Anrufe"</string> <string name="notification_missedCallTicker" msgid="504686252427747209">"Entgangener Anruf von <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string> <string name="notification_ongoing_call" msgid="7068688957273482989">"Aktueller Anruf"</string> + <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"Aktiver WLAN-Anruf"</string> <string name="notification_on_hold" msgid="3480694969511790465">"Gehaltener Anruf"</string> <string name="notification_incoming_call" msgid="2820429205043529642">"Eingehender Anruf"</string> + <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"Eingehender WLAN-Anruf"</string> <string name="notification_incoming_video_call" msgid="7356836933934464805">"Eingehender Videoanruf"</string> <string name="notification_requesting_video_call" msgid="1405576812892369451">"Eingehende Videoanfrage"</string> <string name="notification_voicemail_title" msgid="8933468752045550523">"Neue Nachricht"</string> diff --git a/InCallUI/res/values-el/strings.xml b/InCallUI/res/values-el/strings.xml index e668ddf93..a236fa58c 100644 --- a/InCallUI/res/values-el/strings.xml +++ b/InCallUI/res/values-el/strings.xml @@ -57,8 +57,10 @@ <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> αναπάντητες κλήσεις"</string> <string name="notification_missedCallTicker" msgid="504686252427747209">"Αναπάντητη κλήση από <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string> <string name="notification_ongoing_call" msgid="7068688957273482989">"Κλήση σε εξέλιξη"</string> + <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"Κλήση Wi-Fi σε εξέλιξη"</string> <string name="notification_on_hold" msgid="3480694969511790465">"Σε αναμονή"</string> <string name="notification_incoming_call" msgid="2820429205043529642">"Εισερχόμενη κλήση"</string> + <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"Εισερχόμενη κλήση μέσω Wi-Fi"</string> <string name="notification_incoming_video_call" msgid="7356836933934464805">"Εισερχόμενη βιντεοκλήση"</string> <string name="notification_requesting_video_call" msgid="1405576812892369451">"Αίτημα εισερχόμενου βίντεο"</string> <string name="notification_voicemail_title" msgid="8933468752045550523">"Νέο μήνυμα στον αυτόματο τηλεφωνητή"</string> diff --git a/InCallUI/res/values-en-rAU/strings.xml b/InCallUI/res/values-en-rAU/strings.xml new file mode 100644 index 000000000..e68ff2fb4 --- /dev/null +++ b/InCallUI/res/values-en-rAU/strings.xml @@ -0,0 +1,153 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ~ Copyright (C) 2013 The Android Open Source Project + ~ + ~ Licensed under the Apache License, Version 2.0 (the "License"); + ~ you may not use this file except in compliance with the License. + ~ You may obtain a copy of the License at + ~ + ~ http://www.apache.org/licenses/LICENSE-2.0 + ~ + ~ Unless required by applicable law or agreed to in writing, software + ~ distributed under the License is distributed on an "AS IS" BASIS, + ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + ~ See the License for the specific language governing permissions and + ~ limitations under the License + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="phoneAppLabel" product="default" msgid="906161039445636857">"Phone"</string> + <string name="onHold" msgid="9035493194749959955">"On hold"</string> + <string name="unknown" msgid="6878797917991465859">"Unknown"</string> + <string name="private_num" msgid="6713286113000232309">"Private number"</string> + <string name="payphone" msgid="4793877574636445118">"Payphone"</string> + <string name="confCall" msgid="1904840547188336828">"Conference call"</string> + <string name="call_lost" msgid="6183862117003999578">"Call dropped"</string> + <string name="audio_mode_speaker" msgid="27649582100085266">"Speaker"</string> + <string name="audio_mode_earpiece" msgid="4156527186373869107">"Handset earpiece"</string> + <string name="audio_mode_wired_headset" msgid="1465350758489175975">"Wired headset"</string> + <string name="audio_mode_bluetooth" msgid="3047641300848211128">"Bluetooth"</string> + <string name="wait_prompt_str" msgid="7601815427707856238">"Send the following tones?\n"</string> + <string name="pause_prompt_str" msgid="1789964702154314806">"Sending tones\n"</string> + <string name="send_button" msgid="4106860097497818751">"Send"</string> + <string name="pause_prompt_yes" msgid="3564467212025151797">"Yes"</string> + <string name="pause_prompt_no" msgid="6686238803236884877">"No"</string> + <string name="wild_prompt_str" msgid="5543521676355533577">"Replace wild character with"</string> + <string name="caller_manage_header" msgid="3231519674734638786">"Conference call <xliff:g id="CONF_CALL_TIME">%s</xliff:g>"</string> + <string name="voicemail_settings_number_label" msgid="8524164258691887790">"Voicemail number"</string> + <string name="card_title_dialing" msgid="5769417478498348054">"Dialling"</string> + <string name="card_title_redialing" msgid="8253487008234167266">"Redialling"</string> + <string name="card_title_conf_call" msgid="1162980346189744501">"Conference call"</string> + <string name="card_title_incoming_call" msgid="7364539451234646909">"Incoming call"</string> + <string name="card_title_call_ended" msgid="5544730338889702298">"Call ended"</string> + <string name="card_title_on_hold" msgid="821463117892339942">"On hold"</string> + <string name="card_title_hanging_up" msgid="3999101620995182450">"Hanging up"</string> + <string name="card_title_in_call" msgid="6346543933068225205">"In call"</string> + <string name="card_title_my_phone_number" msgid="112428362494434191">"My number is <xliff:g id="MY_PHONE_NUMBER">%s</xliff:g>"</string> + <string name="card_title_video_call_connecting" msgid="297586766381973954">"Connecting video"</string> + <string name="card_title_video_call" msgid="5898636679563320218">"Video call"</string> + <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Requesting video"</string> + <string name="card_title_video_call_error" msgid="9000555878389539225">"Can\'t connect video call"</string> + <string name="card_title_callback_number" msgid="7307938207564217293">"Your callback number\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string> + <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Your emergency callback number\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string> + <string name="notification_dialing" msgid="2107666444937350731">"Dialling"</string> + <string name="notification_missedCallTitle" msgid="7554385905572364535">"Missed call"</string> + <string name="notification_missedCallsTitle" msgid="1361677948941502522">"Missed calls"</string> + <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> missed calls"</string> + <string name="notification_missedCallTicker" msgid="504686252427747209">"Missed call from <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string> + <string name="notification_ongoing_call" msgid="7068688957273482989">"On-going call"</string> + <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"Ongoing Wi-Fi call"</string> + <string name="notification_on_hold" msgid="3480694969511790465">"On hold"</string> + <string name="notification_incoming_call" msgid="2820429205043529642">"Incoming call"</string> + <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"Incoming Wi-Fi call"</string> + <string name="notification_incoming_video_call" msgid="7356836933934464805">"Incoming video call"</string> + <string name="notification_requesting_video_call" msgid="1405576812892369451">"Incoming video request"</string> + <string name="notification_voicemail_title" msgid="8933468752045550523">"New voicemail"</string> + <string name="notification_voicemail_title_count" msgid="4366360747660929916">"New voicemail (<xliff:g id="COUNT">%d</xliff:g>)"</string> + <string name="notification_voicemail_text_format" msgid="4447323569453981685">"Dial <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string> + <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"Voicemail number unknown"</string> + <string name="notification_network_selection_title" msgid="4224455487793492772">"No service"</string> + <string name="notification_network_selection_text" msgid="2607085729661923269">"Selected network (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) unavailable"</string> + <string name="notification_action_answer" msgid="6700362365135365143">"Answer"</string> + <string name="notification_action_end_call" msgid="6069460915123531620">"Hang up"</string> + <string name="notification_action_answer_video" msgid="7809271910870211729">"In-stream video"</string> + <string name="notification_action_answer_voice" msgid="1770796916369437773">"Voice"</string> + <string name="notification_action_accept" msgid="2898609801209468429">"Accept"</string> + <string name="notification_action_dismiss" msgid="2679969397930852858">"Dismiss"</string> + <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Call back"</string> + <string name="notification_missedCall_message" msgid="3049928912736917988">"Message"</string> + <string name="incall_error_power_off" msgid="6550191216405193368">"To place a call, first turn off Aeroplane mode."</string> + <string name="incall_error_emergency_only" msgid="4678640422710818317">"Not registered on network."</string> + <string name="incall_error_out_of_service" msgid="4100065333878929223">"Mobile network not available."</string> + <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"To place a call, enter a valid number."</string> + <string name="incall_error_call_failed" msgid="6302746943230078197">"Can\'t call."</string> + <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"Starting MMI sequence…"</string> + <string name="incall_error_supp_service_unknown" msgid="323435289607131929">"Service not supported."</string> + <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"Can\'t switch calls."</string> + <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"Can\'t separate call."</string> + <string name="incall_error_supp_service_transfer" msgid="7235952238189391438">"Can\'t transfer."</string> + <string name="incall_error_supp_service_conference" msgid="7010354362202271726">"Can\'t conference."</string> + <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Can\'t reject call."</string> + <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Can\'t release call(s)."</string> + <string name="incall_call_type_label_sip" msgid="4931428719494190371">"SIP call"</string> + <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Emergency call"</string> + <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Turning on radio…"</string> + <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"No service. Trying again…"</string> + <string name="dial_emergency_error" msgid="1509085166367420355">"Can\'t call. <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> is not an emergency number."</string> + <string name="dial_emergency_empty_error" msgid="9130194953830414638">"Can\'t call. Dial an emergency number."</string> + <string name="dialerKeyboardHintText" msgid="9192914825413747792">"Use keyboard to dial"</string> + <string name="overflowHoldMenuItemText" msgid="7382457697092158039">"Hold call"</string> + <string name="overflowResumeMenuItemText" msgid="8826360006222366843">"Resume call"</string> + <string name="overflowAddMenuItemText" msgid="5605615101930811453">"Add call"</string> + <string name="overflowMergeMenuItemText" msgid="6305762210377655389">"Merge calls"</string> + <string name="overflowSwapMenuItemText" msgid="6603717809137071603">"Swap calls"</string> + <string name="onscreenHoldText" msgid="2285258239691145872">"Hold"</string> + <string name="onscreenEndCallText" msgid="4403855834875398585">"End"</string> + <string name="onscreenShowDialpadText" msgid="8561805492659639893">"Dial pad"</string> + <string name="onscreenMuteText" msgid="5011369181754261374">"Mute"</string> + <string name="onscreenAddCallText" msgid="5140385634712287403">"Add call"</string> + <string name="onscreenMergeCallsText" msgid="6640195098064538950">"Merge calls"</string> + <string name="onscreenSwapCallsText" msgid="1602990689244030047">"Swap"</string> + <string name="onscreenManageCallsText" msgid="5473231160123254154">"Manage calls"</string> + <string name="onscreenManageConferenceText" msgid="6801708317570467407">"Manage conference call"</string> + <string name="onscreenAudioText" msgid="1710087112800041743">"Audio"</string> + <string name="onscreenVideoCallText" msgid="4800924186056115442">"Video call"</string> + <string name="onscreenChangeToVoiceText" msgid="5311407863653867937">"Change to voice call"</string> + <string name="onscreenSwitchCameraText" msgid="5324543493442787798">"Switch camera"</string> + <string name="onscreenPauseVideoText" msgid="5663965924921429203">"Pause video"</string> + <string name="onscreenOverflowText" msgid="2702376562345723132">"More options"</string> + <string name="voicemail_provider" msgid="5135942703327136909">"Service"</string> + <string name="voicemail_settings" msgid="72448049107749316">"Setup"</string> + <string name="voicemail_number_not_set" msgid="6724904736891087856">"<Not set>"</string> + <string name="other_settings" msgid="3672912580359716394">"Other call settings"</string> + <string name="calling_via_template" msgid="4839419581866928142">"Calling via <xliff:g id="PROVIDER_NAME">%s</xliff:g>"</string> + <string name="incoming_via_template" msgid="1696993226115570960">"Incoming via <xliff:g id="PROVIDER_NAME">%s</xliff:g>"</string> + <string name="contactPhoto" msgid="4713193418046639466">"contact photo"</string> + <string name="goPrivate" msgid="865837794424530980">"go private"</string> + <string name="selectContact" msgid="781975788478987237">"select contact"</string> + <string name="respond_via_sms_custom_message" msgid="6158880869935281078">"Write your own..."</string> + <string name="custom_message_cancel" msgid="7516406059429609296">"Cancel"</string> + <string name="custom_message_send" msgid="5795754217085747742">"Send"</string> + <string name="description_target_answer" msgid="7205604197797472471">"Answer"</string> + <string name="description_target_send_sms" msgid="2098326025587950144">"Send SMS"</string> + <string name="description_target_decline" msgid="4789834364389731957">"Decline"</string> + <string name="description_target_answer_video_call" msgid="3495965588512395026">"Answer as video call"</string> + <string name="description_target_answer_audio_call" msgid="8396296303320994450">"Answer as audio call"</string> + <string name="description_target_accept_upgrade_to_video_request" msgid="2894072808324604062">"Accept video request"</string> + <string name="description_target_decline_upgrade_to_video_request" msgid="4093888612888538776">"Decline video request"</string> + <string name="description_direction_up" msgid="4441409581444516690">"Slide up for <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_left" msgid="7129873384376533287">"Slide left for <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_right" msgid="2122584234531957308">"Slide right for <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_down" msgid="4317245625565166742">"Slide down for <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Vibrate"</string> + <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Vibrate"</string> + <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Sound"</string> + <string name="default_notification_description" msgid="78174796906240970">"Default sound (<xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g>)"</string> + <string name="ringtone_title" msgid="6374978286202084684">"Phone ringtone"</string> + <string name="vibrate_on_ring_title" msgid="9197564612065258960">"Vibrate when ringing"</string> + <string name="dial_pad_autocomplete" msgid="7683489952557536398">"Dialpad auto-complete"</string> + <string name="preference_category_ringtone" msgid="5197960752529332721">"Ringtone & Vibrate"</string> + <string name="manageConferenceLabel" msgid="4691922394301969053">"Manage conference call"</string> + <string name="emergency_call_dialog_number_for_display" msgid="8373041754188879871">"Emergency number"</string> +</resources> diff --git a/InCallUI/res/values-en-rGB/strings.xml b/InCallUI/res/values-en-rGB/strings.xml index 3cc0c31b5..e68ff2fb4 100644 --- a/InCallUI/res/values-en-rGB/strings.xml +++ b/InCallUI/res/values-en-rGB/strings.xml @@ -57,8 +57,10 @@ <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> missed calls"</string> <string name="notification_missedCallTicker" msgid="504686252427747209">"Missed call from <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string> <string name="notification_ongoing_call" msgid="7068688957273482989">"On-going call"</string> + <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"Ongoing Wi-Fi call"</string> <string name="notification_on_hold" msgid="3480694969511790465">"On hold"</string> <string name="notification_incoming_call" msgid="2820429205043529642">"Incoming call"</string> + <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"Incoming Wi-Fi call"</string> <string name="notification_incoming_video_call" msgid="7356836933934464805">"Incoming video call"</string> <string name="notification_requesting_video_call" msgid="1405576812892369451">"Incoming video request"</string> <string name="notification_voicemail_title" msgid="8933468752045550523">"New voicemail"</string> diff --git a/InCallUI/res/values-en-rIN/strings.xml b/InCallUI/res/values-en-rIN/strings.xml index 3cc0c31b5..e68ff2fb4 100644 --- a/InCallUI/res/values-en-rIN/strings.xml +++ b/InCallUI/res/values-en-rIN/strings.xml @@ -57,8 +57,10 @@ <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> missed calls"</string> <string name="notification_missedCallTicker" msgid="504686252427747209">"Missed call from <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string> <string name="notification_ongoing_call" msgid="7068688957273482989">"On-going call"</string> + <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"Ongoing Wi-Fi call"</string> <string name="notification_on_hold" msgid="3480694969511790465">"On hold"</string> <string name="notification_incoming_call" msgid="2820429205043529642">"Incoming call"</string> + <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"Incoming Wi-Fi call"</string> <string name="notification_incoming_video_call" msgid="7356836933934464805">"Incoming video call"</string> <string name="notification_requesting_video_call" msgid="1405576812892369451">"Incoming video request"</string> <string name="notification_voicemail_title" msgid="8933468752045550523">"New voicemail"</string> diff --git a/InCallUI/res/values-es-rUS/strings.xml b/InCallUI/res/values-es-rUS/strings.xml index 7fcd85d75..f13b65741 100644 --- a/InCallUI/res/values-es-rUS/strings.xml +++ b/InCallUI/res/values-es-rUS/strings.xml @@ -57,8 +57,10 @@ <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> llamadas perdidas"</string> <string name="notification_missedCallTicker" msgid="504686252427747209">"Se perdieron las llamadas de <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string> <string name="notification_ongoing_call" msgid="7068688957273482989">"Llamada en curso"</string> + <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"Llamada por Wi-Fi en curso"</string> <string name="notification_on_hold" msgid="3480694969511790465">"En espera"</string> <string name="notification_incoming_call" msgid="2820429205043529642">"Llamada entrante"</string> + <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"Llamada por Wi-Fi entrante"</string> <string name="notification_incoming_video_call" msgid="7356836933934464805">"Videollamada entrante"</string> <string name="notification_requesting_video_call" msgid="1405576812892369451">"Solicitud de videollamada entrante"</string> <string name="notification_voicemail_title" msgid="8933468752045550523">"Correo de voz nuevo"</string> diff --git a/InCallUI/res/values-es/strings.xml b/InCallUI/res/values-es/strings.xml index 70f0beaa3..0a5ef90de 100644 --- a/InCallUI/res/values-es/strings.xml +++ b/InCallUI/res/values-es/strings.xml @@ -57,8 +57,10 @@ <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> llamadas perdidas"</string> <string name="notification_missedCallTicker" msgid="504686252427747209">"Llamada perdida de <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string> <string name="notification_ongoing_call" msgid="7068688957273482989">"Llamada en curso"</string> + <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"Llamada Wi-Fi en curso"</string> <string name="notification_on_hold" msgid="3480694969511790465">"En espera"</string> <string name="notification_incoming_call" msgid="2820429205043529642">"Llamada entrante"</string> + <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"Llamada Wi-Fi entrante"</string> <string name="notification_incoming_video_call" msgid="7356836933934464805">"Videollamada entrante"</string> <string name="notification_requesting_video_call" msgid="1405576812892369451">"Solicitud de videollamada entrante"</string> <string name="notification_voicemail_title" msgid="8933468752045550523">"Nuevo mensaje de voz"</string> diff --git a/InCallUI/res/values-et-rEE/strings.xml b/InCallUI/res/values-et-rEE/strings.xml index 64dcc175a..cea6a3198 100644 --- a/InCallUI/res/values-et-rEE/strings.xml +++ b/InCallUI/res/values-et-rEE/strings.xml @@ -57,8 +57,10 @@ <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> vastamata kõnet"</string> <string name="notification_missedCallTicker" msgid="504686252427747209">"Vastamata kõne helistajalt <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string> <string name="notification_ongoing_call" msgid="7068688957273482989">"Käimasolev kõne"</string> + <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"Pooleliolev WiFi-kõne"</string> <string name="notification_on_hold" msgid="3480694969511790465">"Ootel"</string> <string name="notification_incoming_call" msgid="2820429205043529642">"Sissetulev kõne"</string> + <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"Sissetulev WiFi-kõne"</string> <string name="notification_incoming_video_call" msgid="7356836933934464805">"Sissetulev videokõne"</string> <string name="notification_requesting_video_call" msgid="1405576812892369451">"Sissetulev videotaotlus"</string> <string name="notification_voicemail_title" msgid="8933468752045550523">"Uus kõnepost"</string> diff --git a/InCallUI/res/values-eu-rES/strings.xml b/InCallUI/res/values-eu-rES/strings.xml index 525d60749..be58bb6c7 100644 --- a/InCallUI/res/values-eu-rES/strings.xml +++ b/InCallUI/res/values-eu-rES/strings.xml @@ -57,8 +57,10 @@ <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> dei galdu"</string> <string name="notification_missedCallTicker" msgid="504686252427747209">"Deitzaile honen dei galdua: <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string> <string name="notification_ongoing_call" msgid="7068688957273482989">"Abian den deia"</string> + <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"Wi-Fi deia abian"</string> <string name="notification_on_hold" msgid="3480694969511790465">"Zain"</string> <string name="notification_incoming_call" msgid="2820429205043529642">"Sarrerako deia"</string> + <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"Sarrerako Wi-Fi deia"</string> <string name="notification_incoming_video_call" msgid="7356836933934464805">"Sarrerako bideo-deia"</string> <string name="notification_requesting_video_call" msgid="1405576812892369451">"Sarrerako bideo-eskaera"</string> <string name="notification_voicemail_title" msgid="8933468752045550523">"Ahots-mezu berria"</string> diff --git a/InCallUI/res/values-fa/strings.xml b/InCallUI/res/values-fa/strings.xml index c3529dc52..dbd82e514 100644 --- a/InCallUI/res/values-fa/strings.xml +++ b/InCallUI/res/values-fa/strings.xml @@ -57,8 +57,10 @@ <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> تماس بی پاسخ"</string> <string name="notification_missedCallTicker" msgid="504686252427747209">"تماس بی پاسخ از <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string> <string name="notification_ongoing_call" msgid="7068688957273482989">"تماس جاری"</string> + <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"تماس از طریق Wi-Fi در حال انجام است"</string> <string name="notification_on_hold" msgid="3480694969511790465">"در انتظار"</string> <string name="notification_incoming_call" msgid="2820429205043529642">"تماس ورودی"</string> + <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"تماس Wi-Fi ورودی"</string> <string name="notification_incoming_video_call" msgid="7356836933934464805">"تماس ویدیویی ورودی"</string> <string name="notification_requesting_video_call" msgid="1405576812892369451">"درخواست تماس ویدیویی ورودی"</string> <string name="notification_voicemail_title" msgid="8933468752045550523">"پست صوتی جدید"</string> diff --git a/InCallUI/res/values-fi/strings.xml b/InCallUI/res/values-fi/strings.xml index 2bef85284..6e8915f19 100644 --- a/InCallUI/res/values-fi/strings.xml +++ b/InCallUI/res/values-fi/strings.xml @@ -57,8 +57,10 @@ <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> vastaamatonta puhelua"</string> <string name="notification_missedCallTicker" msgid="504686252427747209">"Vastaamatta jäänyt puhelu numerosta <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string> <string name="notification_ongoing_call" msgid="7068688957273482989">"Käynnissä oleva puhelu"</string> + <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"Käynnissä oleva Wi-Fi-puhelu"</string> <string name="notification_on_hold" msgid="3480694969511790465">"Pidossa"</string> <string name="notification_incoming_call" msgid="2820429205043529642">"Uusi puhelu"</string> + <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"Saapuva Wi-Fi-puhelu"</string> <string name="notification_incoming_video_call" msgid="7356836933934464805">"Saapuva videopuhelu"</string> <string name="notification_requesting_video_call" msgid="1405576812892369451">"Saapuva videopyyntö"</string> <string name="notification_voicemail_title" msgid="8933468752045550523">"Uusia viestejä vastaajassa"</string> diff --git a/InCallUI/res/values-fr-rCA/strings.xml b/InCallUI/res/values-fr-rCA/strings.xml index 083d5bb50..434589f4a 100644 --- a/InCallUI/res/values-fr-rCA/strings.xml +++ b/InCallUI/res/values-fr-rCA/strings.xml @@ -57,8 +57,10 @@ <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> appels manqués"</string> <string name="notification_missedCallTicker" msgid="504686252427747209">"Appel manqué de <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string> <string name="notification_ongoing_call" msgid="7068688957273482989">"Appel en cours"</string> + <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"Appel Wi-Fi en cours"</string> <string name="notification_on_hold" msgid="3480694969511790465">"En attente"</string> <string name="notification_incoming_call" msgid="2820429205043529642">"Appel entrant"</string> + <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"Appel Wi-Fi entrant"</string> <string name="notification_incoming_video_call" msgid="7356836933934464805">"Appel vidéo entrant"</string> <string name="notification_requesting_video_call" msgid="1405576812892369451">"Demande de vidéo reçue"</string> <string name="notification_voicemail_title" msgid="8933468752045550523">"Nouveau message vocal"</string> diff --git a/InCallUI/res/values-fr/strings.xml b/InCallUI/res/values-fr/strings.xml index 1b17782e9..2114dcdfc 100644 --- a/InCallUI/res/values-fr/strings.xml +++ b/InCallUI/res/values-fr/strings.xml @@ -57,8 +57,10 @@ <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> appels manqués"</string> <string name="notification_missedCallTicker" msgid="504686252427747209">"Appel manqué de <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string> <string name="notification_ongoing_call" msgid="7068688957273482989">"Appel en cours"</string> + <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"Appel Wi-Fi en cours"</string> <string name="notification_on_hold" msgid="3480694969511790465">"En attente"</string> <string name="notification_incoming_call" msgid="2820429205043529642">"Appel entrant"</string> + <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"Appel Wi-Fi entrant"</string> <string name="notification_incoming_video_call" msgid="7356836933934464805">"Appel vidéo entrant"</string> <string name="notification_requesting_video_call" msgid="1405576812892369451">"Demande de vidéo reçue"</string> <string name="notification_voicemail_title" msgid="8933468752045550523">"Nouveau message vocal"</string> diff --git a/InCallUI/res/values-gl-rES/strings.xml b/InCallUI/res/values-gl-rES/strings.xml index 80dae5bad..671e5f10a 100644 --- a/InCallUI/res/values-gl-rES/strings.xml +++ b/InCallUI/res/values-gl-rES/strings.xml @@ -57,8 +57,10 @@ <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> chamadas perdidas"</string> <string name="notification_missedCallTicker" msgid="504686252427747209">"Chamada perdida de <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string> <string name="notification_ongoing_call" msgid="7068688957273482989">"Chamada en curso"</string> + <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"Chamada wifi saínte"</string> <string name="notification_on_hold" msgid="3480694969511790465">"En espera"</string> <string name="notification_incoming_call" msgid="2820429205043529642">"Chamada entrante"</string> + <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"Chamada wifi entrante"</string> <string name="notification_incoming_video_call" msgid="7356836933934464805">"Videochamada entrante"</string> <string name="notification_requesting_video_call" msgid="1405576812892369451">"Solicitude de vídeo entrante"</string> <string name="notification_voicemail_title" msgid="8933468752045550523">"Novo correo de voz"</string> diff --git a/InCallUI/res/values-hi/strings.xml b/InCallUI/res/values-hi/strings.xml index 47ac317df..d36d2d6a2 100644 --- a/InCallUI/res/values-hi/strings.xml +++ b/InCallUI/res/values-hi/strings.xml @@ -57,8 +57,10 @@ <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> छूटी कॉल"</string> <string name="notification_missedCallTicker" msgid="504686252427747209">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g> की कॉल छूटी"</string> <string name="notification_ongoing_call" msgid="7068688957273482989">"चल रही कॉल"</string> + <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"चल रहा वाई-फ़ाई कॉल"</string> <string name="notification_on_hold" msgid="3480694969511790465">"होल्ड पर"</string> <string name="notification_incoming_call" msgid="2820429205043529642">"इनकमिंग कॉल"</string> + <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"इनकमिंग वाई-फ़ाई कॉल"</string> <string name="notification_incoming_video_call" msgid="7356836933934464805">"इनकमिंग वीडियो कॉल"</string> <string name="notification_requesting_video_call" msgid="1405576812892369451">"इनकमिंग वीडियो अनुरोध"</string> <string name="notification_voicemail_title" msgid="8933468752045550523">"नया वॉयस मेल"</string> diff --git a/InCallUI/res/values-hr/strings.xml b/InCallUI/res/values-hr/strings.xml index 35d96a2da..5d82bd573 100644 --- a/InCallUI/res/values-hr/strings.xml +++ b/InCallUI/res/values-hr/strings.xml @@ -57,8 +57,10 @@ <string name="notification_missedCallsMsg" msgid="4575787816055205600">"Broj propuštenih poziva: <xliff:g id="NUM_MISSED_CALLS">%s</xliff:g>"</string> <string name="notification_missedCallTicker" msgid="504686252427747209">"Propušten poziv kontakta <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string> <string name="notification_ongoing_call" msgid="7068688957273482989">"Poziv u tijeku"</string> + <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"Wi-Fi poziv u tijeku"</string> <string name="notification_on_hold" msgid="3480694969511790465">"Na čekanju"</string> <string name="notification_incoming_call" msgid="2820429205043529642">"Dolazni poziv"</string> + <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"Dolazni Wi-Fi poziv"</string> <string name="notification_incoming_video_call" msgid="7356836933934464805">"Dolazni videopoziv"</string> <string name="notification_requesting_video_call" msgid="1405576812892369451">"Dolazni zahtjev za videopoziv"</string> <string name="notification_voicemail_title" msgid="8933468752045550523">"Nova govorna pošta"</string> diff --git a/InCallUI/res/values-hu/strings.xml b/InCallUI/res/values-hu/strings.xml index 67be5aa0a..39aa05ae1 100644 --- a/InCallUI/res/values-hu/strings.xml +++ b/InCallUI/res/values-hu/strings.xml @@ -57,8 +57,10 @@ <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> nem fogadott hívás"</string> <string name="notification_missedCallTicker" msgid="504686252427747209">"Nem fogadott hívás: <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string> <string name="notification_ongoing_call" msgid="7068688957273482989">"Hívás folyamatban"</string> + <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"Folyamatban lévő Wi-Fi-hívás"</string> <string name="notification_on_hold" msgid="3480694969511790465">"Tartásban"</string> <string name="notification_incoming_call" msgid="2820429205043529642">"Bejövő hívás"</string> + <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"Beérkező Wi-Fi-hívás"</string> <string name="notification_incoming_video_call" msgid="7356836933934464805">"Bejövő videohívás"</string> <string name="notification_requesting_video_call" msgid="1405576812892369451">"Bejövő videokérés"</string> <string name="notification_voicemail_title" msgid="8933468752045550523">"Új hangposta"</string> diff --git a/InCallUI/res/values-hy-rAM/strings.xml b/InCallUI/res/values-hy-rAM/strings.xml index 301bd1e61..411539b10 100644 --- a/InCallUI/res/values-hy-rAM/strings.xml +++ b/InCallUI/res/values-hy-rAM/strings.xml @@ -57,8 +57,10 @@ <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> բաց թողնված զանգ"</string> <string name="notification_missedCallTicker" msgid="504686252427747209">"Բաց թողնված զանգ <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>-ից"</string> <string name="notification_ongoing_call" msgid="7068688957273482989">"Ընթացիկ զանգը"</string> + <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"Ընթացիկ զանգ Wi-Fi-ի միջոցով"</string> <string name="notification_on_hold" msgid="3480694969511790465">"Սպասում"</string> <string name="notification_incoming_call" msgid="2820429205043529642">"Մուտքային զանգ"</string> + <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"Մուտքային զանգ Wi-Fi-ի միջոցով"</string> <string name="notification_incoming_video_call" msgid="7356836933934464805">"Մուտքային տեսազանգ"</string> <string name="notification_requesting_video_call" msgid="1405576812892369451">"Մուտքային տեսազանգի հայցում"</string> <string name="notification_voicemail_title" msgid="8933468752045550523">"Նոր ձայնային հաղորդագրություն"</string> diff --git a/InCallUI/res/values-in/strings.xml b/InCallUI/res/values-in/strings.xml index a5819c683..778c52e48 100644 --- a/InCallUI/res/values-in/strings.xml +++ b/InCallUI/res/values-in/strings.xml @@ -57,8 +57,10 @@ <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> panggilan tak terjawab"</string> <string name="notification_missedCallTicker" msgid="504686252427747209">"Panggilan tak terjawab dari <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string> <string name="notification_ongoing_call" msgid="7068688957273482989">"Panggilan yang sedang berlangsung"</string> + <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"Panggilan Wi-Fi keluar"</string> <string name="notification_on_hold" msgid="3480694969511790465">"Ditangguhkan"</string> <string name="notification_incoming_call" msgid="2820429205043529642">"Panggilan masuk"</string> + <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"Panggilan Wi-Fi masuk"</string> <string name="notification_incoming_video_call" msgid="7356836933934464805">"Video call masuk"</string> <string name="notification_requesting_video_call" msgid="1405576812892369451">"Permintaan video masuk"</string> <string name="notification_voicemail_title" msgid="8933468752045550523">"Kotak pesan baru"</string> diff --git a/InCallUI/res/values-is-rIS/strings.xml b/InCallUI/res/values-is-rIS/strings.xml index ed262ab92..ce81e74e4 100644 --- a/InCallUI/res/values-is-rIS/strings.xml +++ b/InCallUI/res/values-is-rIS/strings.xml @@ -57,8 +57,10 @@ <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> ósvöruð símtöl"</string> <string name="notification_missedCallTicker" msgid="504686252427747209">"Ósvarað símtal frá <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string> <string name="notification_ongoing_call" msgid="7068688957273482989">"Samtal í gangi"</string> + <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"Wi-Fi símtal stendur yfir"</string> <string name="notification_on_hold" msgid="3480694969511790465">"Í bið"</string> <string name="notification_incoming_call" msgid="2820429205043529642">"Símtal berst"</string> + <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"Wi-Fi símtal berst"</string> <string name="notification_incoming_video_call" msgid="7356836933934464805">"Myndsímtal berst"</string> <string name="notification_requesting_video_call" msgid="1405576812892369451">"Myndbeiðni berst"</string> <string name="notification_voicemail_title" msgid="8933468752045550523">"Ný skilaboð í talhólfinu"</string> diff --git a/InCallUI/res/values-it/strings.xml b/InCallUI/res/values-it/strings.xml index 0cca18e27..650c29d5d 100644 --- a/InCallUI/res/values-it/strings.xml +++ b/InCallUI/res/values-it/strings.xml @@ -57,8 +57,10 @@ <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> chiamate senza risposta"</string> <string name="notification_missedCallTicker" msgid="504686252427747209">"Chiamata senza risposta da <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string> <string name="notification_ongoing_call" msgid="7068688957273482989">"Chiamata in corso"</string> + <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"Chiamata Wi-Fi in corso"</string> <string name="notification_on_hold" msgid="3480694969511790465">"In attesa"</string> <string name="notification_incoming_call" msgid="2820429205043529642">"Chiamata ricevuta"</string> + <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"Chiamata Wi-Fi in arrivo"</string> <string name="notification_incoming_video_call" msgid="7356836933934464805">"Videochiamata in arrivo"</string> <string name="notification_requesting_video_call" msgid="1405576812892369451">"Richiesta video in arrivo"</string> <string name="notification_voicemail_title" msgid="8933468752045550523">"Nuovo msg vocale"</string> diff --git a/InCallUI/res/values-iw/strings.xml b/InCallUI/res/values-iw/strings.xml index 5a6350ac0..846163e38 100644 --- a/InCallUI/res/values-iw/strings.xml +++ b/InCallUI/res/values-iw/strings.xml @@ -57,8 +57,10 @@ <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> שיחות שלא נענו"</string> <string name="notification_missedCallTicker" msgid="504686252427747209">"שיחה שלא נענתה מאת <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string> <string name="notification_ongoing_call" msgid="7068688957273482989">"שיחה פעילה"</string> + <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"שיחת Wi-Fi מתבצעת"</string> <string name="notification_on_hold" msgid="3480694969511790465">"בהמתנה"</string> <string name="notification_incoming_call" msgid="2820429205043529642">"שיחה נכנסת"</string> + <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"שיחת Wi-Fi נכנסת"</string> <string name="notification_incoming_video_call" msgid="7356836933934464805">"שיחת וידאו נכנסת"</string> <string name="notification_requesting_video_call" msgid="1405576812892369451">"בקשת וידאו נכנסת"</string> <string name="notification_voicemail_title" msgid="8933468752045550523">"דואר קולי חדש"</string> diff --git a/InCallUI/res/values-ja/strings.xml b/InCallUI/res/values-ja/strings.xml index 2c32df514..cff626d3c 100644 --- a/InCallUI/res/values-ja/strings.xml +++ b/InCallUI/res/values-ja/strings.xml @@ -57,8 +57,10 @@ <string name="notification_missedCallsMsg" msgid="4575787816055205600">"不在着信<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g>件"</string> <string name="notification_missedCallTicker" msgid="504686252427747209">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g>さんからの不在着信"</string> <string name="notification_ongoing_call" msgid="7068688957273482989">"通話中"</string> + <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"Wi-Fi通話を発信中"</string> <string name="notification_on_hold" msgid="3480694969511790465">"保留中"</string> <string name="notification_incoming_call" msgid="2820429205043529642">"通話着信"</string> + <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"Wi-Fi通話が着信中"</string> <string name="notification_incoming_video_call" msgid="7356836933934464805">"ビデオハングアウト着信"</string> <string name="notification_requesting_video_call" msgid="1405576812892369451">"ビデオハングアウトリクエスト着信"</string> <string name="notification_voicemail_title" msgid="8933468752045550523">"新しいボイスメール"</string> diff --git a/InCallUI/res/values-ka-rGE/strings.xml b/InCallUI/res/values-ka-rGE/strings.xml index 5355539f2..988b2d0cf 100644 --- a/InCallUI/res/values-ka-rGE/strings.xml +++ b/InCallUI/res/values-ka-rGE/strings.xml @@ -57,8 +57,10 @@ <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> გამოტოვებული ზარები"</string> <string name="notification_missedCallTicker" msgid="504686252427747209">"გამოტოვებული ზარი <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>-ისგან"</string> <string name="notification_ongoing_call" msgid="7068688957273482989">"მიმდინარე ზარი"</string> + <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"მიმდინარე Wi-Fi ზარი"</string> <string name="notification_on_hold" msgid="3480694969511790465">"შეყოვნების რეჟიმში"</string> <string name="notification_incoming_call" msgid="2820429205043529642">"შემომავალი ზარი"</string> + <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"შემომავალი Wi-Fi ზარი"</string> <string name="notification_incoming_video_call" msgid="7356836933934464805">"შემომავალი ვიდეოზარი"</string> <string name="notification_requesting_video_call" msgid="1405576812892369451">"შემომავალი ვიდეოს მოთხოვნა"</string> <string name="notification_voicemail_title" msgid="8933468752045550523">"ახალი ხმოვანი ფოსტა"</string> diff --git a/InCallUI/res/values-kk-rKZ/strings.xml b/InCallUI/res/values-kk-rKZ/strings.xml index 72ac63208..664ce9332 100644 --- a/InCallUI/res/values-kk-rKZ/strings.xml +++ b/InCallUI/res/values-kk-rKZ/strings.xml @@ -57,8 +57,10 @@ <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> қабылданбаған қоңыраулар"</string> <string name="notification_missedCallTicker" msgid="504686252427747209">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g> қоңырауы қабылданбаған"</string> <string name="notification_ongoing_call" msgid="7068688957273482989">"Ағымдағы қоңырау"</string> + <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"Ағымдық Wi-Fi қоңырауы"</string> <string name="notification_on_hold" msgid="3480694969511790465">"Күтуде"</string> <string name="notification_incoming_call" msgid="2820429205043529642">"Келген қоңырау"</string> + <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"Кіріс Wi-Fi қоңырауы"</string> <string name="notification_incoming_video_call" msgid="7356836933934464805">"Кіріс бейне қоңырау"</string> <string name="notification_requesting_video_call" msgid="1405576812892369451">"Кіріс бейне сұрау"</string> <string name="notification_voicemail_title" msgid="8933468752045550523">"Жаңа дауыс хабары"</string> diff --git a/InCallUI/res/values-km-rKH/strings.xml b/InCallUI/res/values-km-rKH/strings.xml index cf371ad38..72db0163b 100644 --- a/InCallUI/res/values-km-rKH/strings.xml +++ b/InCallUI/res/values-km-rKH/strings.xml @@ -57,8 +57,10 @@ <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> ខកខានការទទួល"</string> <string name="notification_missedCallTicker" msgid="504686252427747209">"ខកខានទទួលពី <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string> <string name="notification_ongoing_call" msgid="7068688957273482989">"កំពុងបន្តការហៅ"</string> + <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"ការហៅតាម Wi-Fi កំពុងបន្ត"</string> <string name="notification_on_hold" msgid="3480694969511790465">"រង់ចាំ"</string> <string name="notification_incoming_call" msgid="2820429205043529642">"ការហៅចូល"</string> + <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"មានការហៅចូលមកតាម Wi-Fi"</string> <string name="notification_incoming_video_call" msgid="7356836933934464805">"ការហៅចូលជាវីដេអូ"</string> <string name="notification_requesting_video_call" msgid="1405576812892369451">"សំណើការហៅជាវីដេអូចូល"</string> <string name="notification_voicemail_title" msgid="8933468752045550523">"សារជាសំឡេងថ្មី"</string> diff --git a/InCallUI/res/values-kn-rIN/strings.xml b/InCallUI/res/values-kn-rIN/strings.xml index 27d3aea97..69e55db9b 100644 --- a/InCallUI/res/values-kn-rIN/strings.xml +++ b/InCallUI/res/values-kn-rIN/strings.xml @@ -57,8 +57,10 @@ <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> ತಪ್ಪಿದ ಕರೆಗಳು"</string> <string name="notification_missedCallTicker" msgid="504686252427747209">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g> ಅವರಿಂದ ಮಿಸ್ಡ್ ಕಾಲ್"</string> <string name="notification_ongoing_call" msgid="7068688957273482989">"ಚಾಲ್ತಿಯಲ್ಲಿರುವ ಕರೆ"</string> + <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"ಚಾಲ್ತಿಯಲ್ಲಿರುವ ವೈ-ಫೈ ಕರೆ"</string> <string name="notification_on_hold" msgid="3480694969511790465">"ತಡೆಹಿಡಿಯಲಾಗಿದೆ"</string> <string name="notification_incoming_call" msgid="2820429205043529642">"ಒಳಬರುವ ಕರೆ"</string> + <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"ಒಳಬರುವ ವೈ-ಫೈ ಕರೆ"</string> <string name="notification_incoming_video_call" msgid="7356836933934464805">"ಒಳಬರುವ ವೀಡಿಯೊ ಕರೆ"</string> <string name="notification_requesting_video_call" msgid="1405576812892369451">"ಒಳಬರುವ ವೀಡಿಯೊ ವಿನಂತಿ"</string> <string name="notification_voicemail_title" msgid="8933468752045550523">"ಹೊಸ ಧ್ವನಿಮೇಲ್"</string> diff --git a/InCallUI/res/values-ko/strings.xml b/InCallUI/res/values-ko/strings.xml index 9e0b18f2e..46eb46974 100644 --- a/InCallUI/res/values-ko/strings.xml +++ b/InCallUI/res/values-ko/strings.xml @@ -57,8 +57,10 @@ <string name="notification_missedCallsMsg" msgid="4575787816055205600">"부재중 통화 <xliff:g id="NUM_MISSED_CALLS">%s</xliff:g>통"</string> <string name="notification_missedCallTicker" msgid="504686252427747209">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g>의 부재중 전화"</string> <string name="notification_ongoing_call" msgid="7068688957273482989">"현재 통화"</string> + <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"Wi-Fi 발신 전화"</string> <string name="notification_on_hold" msgid="3480694969511790465">"대기 중"</string> <string name="notification_incoming_call" msgid="2820429205043529642">"수신 전화"</string> + <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"Wi-Fi 수신 전화"</string> <string name="notification_incoming_video_call" msgid="7356836933934464805">"수신 화상 통화"</string> <string name="notification_requesting_video_call" msgid="1405576812892369451">"수신 동영상 요청"</string> <string name="notification_voicemail_title" msgid="8933468752045550523">"새 음성사서함"</string> diff --git a/InCallUI/res/values-ky-rKG/strings.xml b/InCallUI/res/values-ky-rKG/strings.xml index 1a6fdd14c..bae92cb1c 100644 --- a/InCallUI/res/values-ky-rKG/strings.xml +++ b/InCallUI/res/values-ky-rKG/strings.xml @@ -83,10 +83,12 @@ <!-- no translation found for notification_missedCallTicker (504686252427747209) --> <skip /> <string name="notification_ongoing_call" msgid="7068688957273482989">"Учурдагы чалуу"</string> + <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"Аткаруудагы Wi-Fi чалуу"</string> <!-- no translation found for notification_on_hold (3480694969511790465) --> <skip /> <!-- no translation found for notification_incoming_call (2820429205043529642) --> <skip /> + <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"Кирүүчү Wi-Fi чалуу"</string> <string name="notification_incoming_video_call" msgid="7356836933934464805">"Келип жаткан видео чалуу"</string> <string name="notification_requesting_video_call" msgid="1405576812892369451">"Келип жаткан видео сурамы"</string> <!-- no translation found for notification_voicemail_title (8933468752045550523) --> diff --git a/InCallUI/res/values-lo-rLA/strings.xml b/InCallUI/res/values-lo-rLA/strings.xml index b316bef2c..0a7a0e124 100644 --- a/InCallUI/res/values-lo-rLA/strings.xml +++ b/InCallUI/res/values-lo-rLA/strings.xml @@ -57,8 +57,10 @@ <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> ສາຍບໍ່ໄດ້ຮັບ"</string> <string name="notification_missedCallTicker" msgid="504686252427747209">"ສາຍທີ່ບໍ່ໄດ້ຮັບຈາກ <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string> <string name="notification_ongoing_call" msgid="7068688957273482989">"ສາຍທີ່ກຳລັງໂທອອກ"</string> + <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"ການໂທ Wi-Fi ທີ່ດໍາເນີນຢູ່"</string> <string name="notification_on_hold" msgid="3480694969511790465">"ພັກສາຍຊົ່ວຄາວ"</string> <string name="notification_incoming_call" msgid="2820429205043529642">"ສາຍໂທເຂົ້າ"</string> + <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"ສາຍໂທເຂົ້າ Wi-Fi"</string> <string name="notification_incoming_video_call" msgid="7356836933934464805">"ສາຍວິດີໂອເຂົ້າ"</string> <string name="notification_requesting_video_call" msgid="1405576812892369451">"ຄຳຮ້ອງຂໍວິດີໂອເຂົ້າມາ"</string> <string name="notification_voicemail_title" msgid="8933468752045550523">"ຂໍ້ຄວາມສຽງໃໝ່"</string> diff --git a/InCallUI/res/values-lt/strings.xml b/InCallUI/res/values-lt/strings.xml index 1e2596019..d62d832b0 100644 --- a/InCallUI/res/values-lt/strings.xml +++ b/InCallUI/res/values-lt/strings.xml @@ -57,8 +57,10 @@ <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> praleisti (-ų) skambučiai (-ų)"</string> <string name="notification_missedCallTicker" msgid="504686252427747209">"praleistas skambutis nuo <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string> <string name="notification_ongoing_call" msgid="7068688957273482989">"Vykstantis pokalbis"</string> + <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"Vykstantis „Wi-Fi“ skambutis"</string> <string name="notification_on_hold" msgid="3480694969511790465">"Sulaikyta"</string> <string name="notification_incoming_call" msgid="2820429205043529642">"Skambina"</string> + <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"Gaunamasis „Wi-Fi“ skambutis"</string> <string name="notification_incoming_video_call" msgid="7356836933934464805">"Gaunamas vaizdo skambutis"</string> <string name="notification_requesting_video_call" msgid="1405576812892369451">"Gaunama vaizdo skambučio užklausa"</string> <string name="notification_voicemail_title" msgid="8933468752045550523">"Naujas balso pašto pranešimas"</string> diff --git a/InCallUI/res/values-lv/strings.xml b/InCallUI/res/values-lv/strings.xml index 01719241d..f41909093 100644 --- a/InCallUI/res/values-lv/strings.xml +++ b/InCallUI/res/values-lv/strings.xml @@ -57,8 +57,10 @@ <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> neatbildēts(-i) zvans(-i)"</string> <string name="notification_missedCallTicker" msgid="504686252427747209">"Neatbildēts zvans no: <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string> <string name="notification_ongoing_call" msgid="7068688957273482989">"Pašreizējā saruna"</string> + <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"Notiekošs Wi-Fi zvans"</string> <string name="notification_on_hold" msgid="3480694969511790465">"Aizturēts"</string> <string name="notification_incoming_call" msgid="2820429205043529642">"Ienākošs zvans"</string> + <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"Ienākošs Wi-Fi zvans"</string> <string name="notification_incoming_video_call" msgid="7356836933934464805">"Ienākošs videozvans"</string> <string name="notification_requesting_video_call" msgid="1405576812892369451">"Ienākošs video pieprasījums"</string> <string name="notification_voicemail_title" msgid="8933468752045550523">"Jauns balss pasts"</string> diff --git a/InCallUI/res/values-mk-rMK/strings.xml b/InCallUI/res/values-mk-rMK/strings.xml index 6081ac9f8..1a8ba271d 100644 --- a/InCallUI/res/values-mk-rMK/strings.xml +++ b/InCallUI/res/values-mk-rMK/strings.xml @@ -57,8 +57,10 @@ <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> пропуштени повици"</string> <string name="notification_missedCallTicker" msgid="504686252427747209">"Пропуштен повик од <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string> <string name="notification_ongoing_call" msgid="7068688957273482989">"Тековен повик"</string> + <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"Појдовен повик преку Wi-Fi"</string> <string name="notification_on_hold" msgid="3480694969511790465">"На чекање"</string> <string name="notification_incoming_call" msgid="2820429205043529642">"Дојдовен повик"</string> + <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"Дојдовен повик преку Wi-Fi"</string> <string name="notification_incoming_video_call" msgid="7356836933934464805">"Дојдовен видеоповик"</string> <string name="notification_requesting_video_call" msgid="1405576812892369451">"Дојдовно побарување за видео"</string> <string name="notification_voicemail_title" msgid="8933468752045550523">"Нова говорна пошта"</string> diff --git a/InCallUI/res/values-ml-rIN/strings.xml b/InCallUI/res/values-ml-rIN/strings.xml index 18ab1f4da..26a0a4c6a 100644 --- a/InCallUI/res/values-ml-rIN/strings.xml +++ b/InCallUI/res/values-ml-rIN/strings.xml @@ -57,8 +57,10 @@ <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> മിസ്ഡ് കോളുകൾ"</string> <string name="notification_missedCallTicker" msgid="504686252427747209">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g> എന്നതിൽ നിന്നുള്ള മിസ്ഡ് കോൾ"</string> <string name="notification_ongoing_call" msgid="7068688957273482989">"കോൾ സജീവമാണ്"</string> + <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"ഓൺഗോയിംഗ് Wi-Fi കോൾ"</string> <string name="notification_on_hold" msgid="3480694969511790465">"ഹോള്ഡിലാണ്"</string> <string name="notification_incoming_call" msgid="2820429205043529642">"ഇന്കമിംഗ് കോള്"</string> + <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"ഇൻകമിംഗ് Wi-Fi കോൾ"</string> <string name="notification_incoming_video_call" msgid="7356836933934464805">"ഇൻകമിംഗ് വീഡിയോ കോൾ"</string> <string name="notification_requesting_video_call" msgid="1405576812892369451">"ഇൻകമിംഗ് വീഡിയോ അഭ്യർത്ഥന"</string> <string name="notification_voicemail_title" msgid="8933468752045550523">"പുതിയ വോയ്സ്മെയിൽ"</string> diff --git a/InCallUI/res/values-mn-rMN/strings.xml b/InCallUI/res/values-mn-rMN/strings.xml index c4646d08f..79d025028 100644 --- a/InCallUI/res/values-mn-rMN/strings.xml +++ b/InCallUI/res/values-mn-rMN/strings.xml @@ -57,8 +57,10 @@ <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> аваагүй дуудлага"</string> <string name="notification_missedCallTicker" msgid="504686252427747209">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g>-н аваагүй дуудлага"</string> <string name="notification_ongoing_call" msgid="7068688957273482989">"Хийгдэж буй дуудлага"</string> + <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"Ярьж буй Wi-Fi дуудлага"</string> <string name="notification_on_hold" msgid="3480694969511790465">"Хүлээлгэнд"</string> <string name="notification_incoming_call" msgid="2820429205043529642">"Ирж буй дуудлага"</string> + <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"Орж ирсэн Wi-Fi дуудлага"</string> <string name="notification_incoming_video_call" msgid="7356836933934464805">"Ирж буй видео дуудлага"</string> <string name="notification_requesting_video_call" msgid="1405576812892369451">"Ирж буй видео хүсэлт"</string> <string name="notification_voicemail_title" msgid="8933468752045550523">"Шинэ дуут шуудан"</string> diff --git a/InCallUI/res/values-mr-rIN/strings.xml b/InCallUI/res/values-mr-rIN/strings.xml index b4dbeef0f..d3319f21e 100644 --- a/InCallUI/res/values-mr-rIN/strings.xml +++ b/InCallUI/res/values-mr-rIN/strings.xml @@ -57,8 +57,10 @@ <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> सुटलेले कॉल"</string> <string name="notification_missedCallTicker" msgid="504686252427747209">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g> कडील सुटलेला कॉल"</string> <string name="notification_ongoing_call" msgid="7068688957273482989">"सुरू असलेला कॉल"</string> + <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"सुरु असलेला वाय-फाय कॉल"</string> <string name="notification_on_hold" msgid="3480694969511790465">"होल्ड वर"</string> <string name="notification_incoming_call" msgid="2820429205043529642">"येणारा कॉल"</string> + <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"येणारा वाय-फाय कॉल"</string> <string name="notification_incoming_video_call" msgid="7356836933934464805">"येणारा व्हिडिओ कॉल"</string> <string name="notification_requesting_video_call" msgid="1405576812892369451">"येणारी व्हिडिओ विनंती"</string> <string name="notification_voicemail_title" msgid="8933468752045550523">"नवीन व्हॉइसमेल"</string> diff --git a/InCallUI/res/values-ms-rMY/strings.xml b/InCallUI/res/values-ms-rMY/strings.xml index 3bbc8364a..c0ef2328a 100644 --- a/InCallUI/res/values-ms-rMY/strings.xml +++ b/InCallUI/res/values-ms-rMY/strings.xml @@ -57,8 +57,10 @@ <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> panggilan tidak dijawab"</string> <string name="notification_missedCallTicker" msgid="504686252427747209">"Panggilan tidak dijawab daripada <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string> <string name="notification_ongoing_call" msgid="7068688957273482989">"Panggilan sedang berjalan"</string> + <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"Panggilan Wi-Fi sedang berlangsung"</string> <string name="notification_on_hold" msgid="3480694969511790465">"Ditunda"</string> <string name="notification_incoming_call" msgid="2820429205043529642">"Panggilan masuk"</string> + <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"Panggilan Wi-Fi masuk"</string> <string name="notification_incoming_video_call" msgid="7356836933934464805">"Panggilan video masuk"</string> <string name="notification_requesting_video_call" msgid="1405576812892369451">"Permintaan video masuk"</string> <string name="notification_voicemail_title" msgid="8933468752045550523">"Mel suara baru"</string> diff --git a/InCallUI/res/values-my-rMM/strings.xml b/InCallUI/res/values-my-rMM/strings.xml index a9cde2e7b..6582ea52d 100644 --- a/InCallUI/res/values-my-rMM/strings.xml +++ b/InCallUI/res/values-my-rMM/strings.xml @@ -57,8 +57,10 @@ <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> လွဲသွားသော ဖုန်းခေါ်မှုများ"</string> <string name="notification_missedCallTicker" msgid="504686252427747209">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g> က ဖုန်းခေါ်မှုကို မကိုင်မိပါ"</string> <string name="notification_ongoing_call" msgid="7068688957273482989">"ဆက်သွားနေသော ဖုန်းခေါ်မှု"</string> + <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"ခေါ်နေဆဲ ဝိုင်ဖိုင်ခေါ်ဆိုမှု"</string> <string name="notification_on_hold" msgid="3480694969511790465">"ခဏ ကိုင်ထားစဉ်"</string> <string name="notification_incoming_call" msgid="2820429205043529642">"အဝင်ခေါ်ဆိုမှု"</string> + <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"ဝင်လာသော ဝိုင်ဖိုင်ခေါ်ဆိုမှု"</string> <string name="notification_incoming_video_call" msgid="7356836933934464805">"ဝင်လာသည့် ဗီဒီယို ခေါ်ဆိုမှု"</string> <string name="notification_requesting_video_call" msgid="1405576812892369451">"အသံ ခေါ်ဆိုမှုအဖြစ် တောင်းဆိုမှု"</string> <string name="notification_voicemail_title" msgid="8933468752045550523">"အသံမေးလ်အသစ်"</string> diff --git a/InCallUI/res/values-nb/strings.xml b/InCallUI/res/values-nb/strings.xml index 6604a530c..26e118f20 100644 --- a/InCallUI/res/values-nb/strings.xml +++ b/InCallUI/res/values-nb/strings.xml @@ -57,8 +57,10 @@ <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> tapte anrop"</string> <string name="notification_missedCallTicker" msgid="504686252427747209">"Tapt anrop fra <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string> <string name="notification_ongoing_call" msgid="7068688957273482989">"Pågående samtale"</string> + <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"Pågående Wi-Fi-anrop"</string> <string name="notification_on_hold" msgid="3480694969511790465">"Parkert"</string> <string name="notification_incoming_call" msgid="2820429205043529642">"Innkommende samtale"</string> + <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"Innkommende anrop via Wi-Fi"</string> <string name="notification_incoming_video_call" msgid="7356836933934464805">"Innkommende videoanrop"</string> <string name="notification_requesting_video_call" msgid="1405576812892369451">"Innkommende videoforespørsel"</string> <string name="notification_voicemail_title" msgid="8933468752045550523">"Nye beskjeder på telefonsvarer"</string> diff --git a/InCallUI/res/values-ne-rNP/strings.xml b/InCallUI/res/values-ne-rNP/strings.xml index 5acaad9a4..ad45bdd46 100644 --- a/InCallUI/res/values-ne-rNP/strings.xml +++ b/InCallUI/res/values-ne-rNP/strings.xml @@ -27,7 +27,7 @@ <string name="audio_mode_speaker" msgid="27649582100085266">"स्पिकर"</string> <string name="audio_mode_earpiece" msgid="4156527186373869107">"ह्यान्डसेट इयरपिस"</string> <string name="audio_mode_wired_headset" msgid="1465350758489175975">"तारसहितको हेडसेट"</string> - <string name="audio_mode_bluetooth" msgid="3047641300848211128">"ब्लुटुथ"</string> + <string name="audio_mode_bluetooth" msgid="3047641300848211128">"ब्लुटूथ"</string> <string name="wait_prompt_str" msgid="7601815427707856238">"निम्न टोनहरू पठाउने? \n"</string> <string name="pause_prompt_str" msgid="1789964702154314806">"टोनहरू \n पठाउँदै"</string> <string name="send_button" msgid="4106860097497818751">"पठाउनुहोस्"</string> @@ -57,8 +57,10 @@ <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> छुटेका कलहरू"</string> <string name="notification_missedCallTicker" msgid="504686252427747209">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g>बाट छुटेका कल"</string> <string name="notification_ongoing_call" msgid="7068688957273482989">"चलिरहेको कल"</string> + <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"चालु रहेको WI-Fi कल"</string> <string name="notification_on_hold" msgid="3480694969511790465">"होल्डमा"</string> <string name="notification_incoming_call" msgid="2820429205043529642">"आगमन कल"</string> + <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"आगमन Wi-Fi कल"</string> <string name="notification_incoming_video_call" msgid="7356836933934464805">"आगमन भिडियो कल"</string> <string name="notification_requesting_video_call" msgid="1405576812892369451">"आगमन भिडियो अनुरोध"</string> <string name="notification_voicemail_title" msgid="8933468752045550523">"नयाँ भ्वाइस मेल"</string> diff --git a/InCallUI/res/values-nl/strings.xml b/InCallUI/res/values-nl/strings.xml index 9b32a0373..91c881e5e 100644 --- a/InCallUI/res/values-nl/strings.xml +++ b/InCallUI/res/values-nl/strings.xml @@ -57,8 +57,10 @@ <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> gemiste oproepen"</string> <string name="notification_missedCallTicker" msgid="504686252427747209">"Gemiste oproep van <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string> <string name="notification_ongoing_call" msgid="7068688957273482989">"Actieve oproep"</string> + <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"Actieve wifi-oproep"</string> <string name="notification_on_hold" msgid="3480694969511790465">"In de wacht"</string> <string name="notification_incoming_call" msgid="2820429205043529642">"Inkomende oproep"</string> + <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"Inkomende wifi-oproep"</string> <string name="notification_incoming_video_call" msgid="7356836933934464805">"Binnenkomend videogesprek"</string> <string name="notification_requesting_video_call" msgid="1405576812892369451">"Binnenkomend videoverzoek"</string> <string name="notification_voicemail_title" msgid="8933468752045550523">"Nieuwe voicemail"</string> @@ -75,7 +77,7 @@ <string name="notification_action_dismiss" msgid="2679969397930852858">"Sluiten"</string> <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Terugbellen"</string> <string name="notification_missedCall_message" msgid="3049928912736917988">"Bericht"</string> - <string name="incall_error_power_off" msgid="6550191216405193368">"Als u wilt bellen, moet u eerst de Vliegmodus uitschakelen."</string> + <string name="incall_error_power_off" msgid="6550191216405193368">"Als u wilt bellen, moet u eerst de Vliegtuigmodus uitschakelen."</string> <string name="incall_error_emergency_only" msgid="4678640422710818317">"Niet geregistreerd op netwerk."</string> <string name="incall_error_out_of_service" msgid="4100065333878929223">"Mobiel netwerk niet beschikbaar."</string> <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Als u wilt bellen, moet u een geldig nummer invoeren."</string> diff --git a/InCallUI/res/values-pl/strings.xml b/InCallUI/res/values-pl/strings.xml index 8f0835b55..c7e7f8701 100644 --- a/InCallUI/res/values-pl/strings.xml +++ b/InCallUI/res/values-pl/strings.xml @@ -57,8 +57,10 @@ <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> nieodebranych połączeń"</string> <string name="notification_missedCallTicker" msgid="504686252427747209">"Nieodebrane połączenie z <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string> <string name="notification_ongoing_call" msgid="7068688957273482989">"Trwa połączenie"</string> + <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"Trwające połączenie przez Wi-Fi"</string> <string name="notification_on_hold" msgid="3480694969511790465">"Oczekujące"</string> <string name="notification_incoming_call" msgid="2820429205043529642">"Połączenie przychodzące"</string> + <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"Przychodzące połączenie przez Wi-Fi"</string> <string name="notification_incoming_video_call" msgid="7356836933934464805">"Przychodząca rozmowa wideo"</string> <string name="notification_requesting_video_call" msgid="1405576812892369451">"Przychodzące żądanie wideo"</string> <string name="notification_voicemail_title" msgid="8933468752045550523">"Nowa poczta głosowa"</string> diff --git a/InCallUI/res/values-pt-rPT/strings.xml b/InCallUI/res/values-pt-rPT/strings.xml index 7821436a3..824ea7113 100644 --- a/InCallUI/res/values-pt-rPT/strings.xml +++ b/InCallUI/res/values-pt-rPT/strings.xml @@ -57,8 +57,10 @@ <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> chamadas não atendidas"</string> <string name="notification_missedCallTicker" msgid="504686252427747209">"Chamada não atendida de <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string> <string name="notification_ongoing_call" msgid="7068688957273482989">"Chamada em curso"</string> + <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"Chamada Wi-Fi em curso"</string> <string name="notification_on_hold" msgid="3480694969511790465">"Em espera"</string> <string name="notification_incoming_call" msgid="2820429205043529642">"Chamada recebida"</string> + <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"Chamada Wi-Fi recebida"</string> <string name="notification_incoming_video_call" msgid="7356836933934464805">"A receber videochamada"</string> <string name="notification_requesting_video_call" msgid="1405576812892369451">"Pedido de vídeo recebido"</string> <string name="notification_voicemail_title" msgid="8933468752045550523">"Novo correio de voz"</string> diff --git a/InCallUI/res/values-pt/strings.xml b/InCallUI/res/values-pt/strings.xml index df32188b1..3eb7234f3 100644 --- a/InCallUI/res/values-pt/strings.xml +++ b/InCallUI/res/values-pt/strings.xml @@ -57,8 +57,10 @@ <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> chamadas perdidas"</string> <string name="notification_missedCallTicker" msgid="504686252427747209">"Chamada perdida de <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string> <string name="notification_ongoing_call" msgid="7068688957273482989">"Chamada em andamento"</string> + <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"Chamada Wi-Fi em andamento"</string> <string name="notification_on_hold" msgid="3480694969511790465">"Em espera"</string> <string name="notification_incoming_call" msgid="2820429205043529642">"Recebendo chamada"</string> + <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"Chamada Wi-Fi recebida"</string> <string name="notification_incoming_video_call" msgid="7356836933934464805">"Recebendo vídeo chamada"</string> <string name="notification_requesting_video_call" msgid="1405576812892369451">"Recebendo solicitação de vídeo"</string> <string name="notification_voicemail_title" msgid="8933468752045550523">"Novo correio de voz"</string> diff --git a/InCallUI/res/values-ro/strings.xml b/InCallUI/res/values-ro/strings.xml index 20516263d..ee9f02f9e 100644 --- a/InCallUI/res/values-ro/strings.xml +++ b/InCallUI/res/values-ro/strings.xml @@ -57,8 +57,10 @@ <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> (de) apeluri nepreluate"</string> <string name="notification_missedCallTicker" msgid="504686252427747209">"Apel nepreluat de la <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string> <string name="notification_ongoing_call" msgid="7068688957273482989">"Apel în desfăşurare"</string> + <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"Apel Wi-Fi în desfășurare"</string> <string name="notification_on_hold" msgid="3480694969511790465">"În aşteptare"</string> <string name="notification_incoming_call" msgid="2820429205043529642">"Apel de intrare"</string> + <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"Apel prin Wi-Fi primit"</string> <string name="notification_incoming_video_call" msgid="7356836933934464805">"Apel video primit"</string> <string name="notification_requesting_video_call" msgid="1405576812892369451">"Solicitare de trecere la apel video"</string> <string name="notification_voicemail_title" msgid="8933468752045550523">"Mesaj vocal nou"</string> diff --git a/InCallUI/res/values-ru/strings.xml b/InCallUI/res/values-ru/strings.xml index e0e072464..ea7b99653 100644 --- a/InCallUI/res/values-ru/strings.xml +++ b/InCallUI/res/values-ru/strings.xml @@ -57,8 +57,10 @@ <string name="notification_missedCallsMsg" msgid="4575787816055205600">"Пропущенных вызовов: <xliff:g id="NUM_MISSED_CALLS">%s</xliff:g>"</string> <string name="notification_missedCallTicker" msgid="504686252427747209">"Пропущенные вызовы от абонента <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string> <string name="notification_ongoing_call" msgid="7068688957273482989">"Текущий вызов"</string> + <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"Текущий Wi-Fi-звонок"</string> <string name="notification_on_hold" msgid="3480694969511790465">"На удержании"</string> <string name="notification_incoming_call" msgid="2820429205043529642">"Входящий вызов"</string> + <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"Входящий Wi-Fi-звонок"</string> <string name="notification_incoming_video_call" msgid="7356836933934464805">"Входящий видеовызов"</string> <string name="notification_requesting_video_call" msgid="1405576812892369451">"Входящий видеовызов"</string> <string name="notification_voicemail_title" msgid="8933468752045550523">"Новое сообщение голосовой почты"</string> diff --git a/InCallUI/res/values-si-rLK/strings.xml b/InCallUI/res/values-si-rLK/strings.xml index e440b7c75..99ce93648 100644 --- a/InCallUI/res/values-si-rLK/strings.xml +++ b/InCallUI/res/values-si-rLK/strings.xml @@ -57,8 +57,10 @@ <string name="notification_missedCallsMsg" msgid="4575787816055205600">"මඟ හැරුණු ඇමතුම් <xliff:g id="NUM_MISSED_CALLS">%s</xliff:g>"</string> <string name="notification_missedCallTicker" msgid="504686252427747209">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g> වෙතින් මඟ හැරුණු ඇමතුම්"</string> <string name="notification_ongoing_call" msgid="7068688957273482989">"කරගෙනය යන ඇමතුම"</string> + <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"දැනට ක්රියාත්මක Wi-Fi ඇමතුම"</string> <string name="notification_on_hold" msgid="3480694969511790465">"රඳවා ගනිමින්"</string> <string name="notification_incoming_call" msgid="2820429205043529642">"එන ඇමතුම"</string> + <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"පැමිණෙන Wi-Fi ඇමතුම"</string> <string name="notification_incoming_video_call" msgid="7356836933934464805">"පැමිණෙන වීඩියෝ ඇමතුම"</string> <string name="notification_requesting_video_call" msgid="1405576812892369451">"පැමිණෙන වීඩියෝ ඉල්ලීම"</string> <string name="notification_voicemail_title" msgid="8933468752045550523">"නව හඬතැපෑල"</string> diff --git a/InCallUI/res/values-sk/strings.xml b/InCallUI/res/values-sk/strings.xml index b6b3c3e3c..393a14d7a 100644 --- a/InCallUI/res/values-sk/strings.xml +++ b/InCallUI/res/values-sk/strings.xml @@ -57,8 +57,10 @@ <string name="notification_missedCallsMsg" msgid="4575787816055205600">"Zmeškané hovory: <xliff:g id="NUM_MISSED_CALLS">%s</xliff:g>."</string> <string name="notification_missedCallTicker" msgid="504686252427747209">"Zmeškaný hovor od volajúceho <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string> <string name="notification_ongoing_call" msgid="7068688957273482989">"Prebiehajúci hovor"</string> + <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"Odchádzajúci hovor prostredníctvom siete Wi-Fi"</string> <string name="notification_on_hold" msgid="3480694969511790465">"Podržaný hovor"</string> <string name="notification_incoming_call" msgid="2820429205043529642">"Prichádzajúci hovor"</string> + <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"Prichádzajúci hovor prostredníctvom siete Wi-Fi"</string> <string name="notification_incoming_video_call" msgid="7356836933934464805">"Prichádzajúci videohovor"</string> <string name="notification_requesting_video_call" msgid="1405576812892369451">"Prichádzajúca žiadosť o video"</string> <string name="notification_voicemail_title" msgid="8933468752045550523">"Nová hlasová správa"</string> diff --git a/InCallUI/res/values-sl/strings.xml b/InCallUI/res/values-sl/strings.xml index c59ec6fc8..35d999df2 100644 --- a/InCallUI/res/values-sl/strings.xml +++ b/InCallUI/res/values-sl/strings.xml @@ -57,8 +57,10 @@ <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> neodgovorjenih klicev"</string> <string name="notification_missedCallTicker" msgid="504686252427747209">"Neodgovorjeni klic od <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string> <string name="notification_ongoing_call" msgid="7068688957273482989">"Aktivni klic"</string> + <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"Odhodni klic prek Wi-Fi-ja"</string> <string name="notification_on_hold" msgid="3480694969511790465">"Zadržano"</string> <string name="notification_incoming_call" msgid="2820429205043529642">"Dohodni klic"</string> + <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"Dohodni klic prek Wi-Fi-ja"</string> <string name="notification_incoming_video_call" msgid="7356836933934464805">"Dohodni videoklic"</string> <string name="notification_requesting_video_call" msgid="1405576812892369451">"Dohodna zahteva za video"</string> <string name="notification_voicemail_title" msgid="8933468752045550523">"Nova glasovna pošta"</string> diff --git a/InCallUI/res/values-sr/strings.xml b/InCallUI/res/values-sr/strings.xml index d25ce6004..0f0fb5307 100644 --- a/InCallUI/res/values-sr/strings.xml +++ b/InCallUI/res/values-sr/strings.xml @@ -57,8 +57,10 @@ <string name="notification_missedCallsMsg" msgid="4575787816055205600">"Број пропуштених позива: <xliff:g id="NUM_MISSED_CALLS">%s</xliff:g>"</string> <string name="notification_missedCallTicker" msgid="504686252427747209">"Пропуштен позив од: <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string> <string name="notification_ongoing_call" msgid="7068688957273482989">"Актуелни позив"</string> + <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"Текући Wi-Fi позив"</string> <string name="notification_on_hold" msgid="3480694969511790465">"На чекању"</string> <string name="notification_incoming_call" msgid="2820429205043529642">"Долазни позив"</string> + <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"Долазни Wi-Fi позив"</string> <string name="notification_incoming_video_call" msgid="7356836933934464805">"Долазни видео позив"</string> <string name="notification_requesting_video_call" msgid="1405576812892369451">"Захтев за долазни видео позив"</string> <string name="notification_voicemail_title" msgid="8933468752045550523">"Нова говорна пошта"</string> diff --git a/InCallUI/res/values-sv/strings.xml b/InCallUI/res/values-sv/strings.xml index f0244767e..8b59eb5b2 100644 --- a/InCallUI/res/values-sv/strings.xml +++ b/InCallUI/res/values-sv/strings.xml @@ -57,8 +57,10 @@ <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> missade samtal"</string> <string name="notification_missedCallTicker" msgid="504686252427747209">"Missat samtal från <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string> <string name="notification_ongoing_call" msgid="7068688957273482989">"Pågående samtal"</string> + <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"Pågående Wi-Fi-samtal"</string> <string name="notification_on_hold" msgid="3480694969511790465">"Parkerat"</string> <string name="notification_incoming_call" msgid="2820429205043529642">"Inkommande samtal"</string> + <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"Inkommande Wi-Fi-samtal"</string> <string name="notification_incoming_video_call" msgid="7356836933934464805">"Inkommande videosamtal"</string> <string name="notification_requesting_video_call" msgid="1405576812892369451">"Inkommande begäran om videosamtal"</string> <string name="notification_voicemail_title" msgid="8933468752045550523">"Nytt röstmeddelande"</string> diff --git a/InCallUI/res/values-sw/strings.xml b/InCallUI/res/values-sw/strings.xml index e3f3cc880..d14b4fef1 100644 --- a/InCallUI/res/values-sw/strings.xml +++ b/InCallUI/res/values-sw/strings.xml @@ -57,8 +57,10 @@ <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> simu ambazo hazijajibiwa"</string> <string name="notification_missedCallTicker" msgid="504686252427747209">"Simu isiyojibiwa kutoka <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string> <string name="notification_ongoing_call" msgid="7068688957273482989">"Simu inayoendelea"</string> + <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"Simu ya Wi-Fi inayoendelea"</string> <string name="notification_on_hold" msgid="3480694969511790465">"Inangoja"</string> <string name="notification_incoming_call" msgid="2820429205043529642">"Simu inayoingia"</string> + <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"Simu ya Wi-Fi inayoingia"</string> <string name="notification_incoming_video_call" msgid="7356836933934464805">"Hangout ya Video inayoingia"</string> <string name="notification_requesting_video_call" msgid="1405576812892369451">"Ombi linaloingia la video"</string> <string name="notification_voicemail_title" msgid="8933468752045550523">"Ujumbe mpya wa sauti"</string> diff --git a/InCallUI/res/values-ta-rIN/strings.xml b/InCallUI/res/values-ta-rIN/strings.xml index c1e17bf0b..670e410ed 100644 --- a/InCallUI/res/values-ta-rIN/strings.xml +++ b/InCallUI/res/values-ta-rIN/strings.xml @@ -57,8 +57,10 @@ <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> தவறிய அழைப்புகள்"</string> <string name="notification_missedCallTicker" msgid="504686252427747209">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g> இடமிருந்து தவறிய அழைப்பு"</string> <string name="notification_ongoing_call" msgid="7068688957273482989">"செயலில் இருக்கும் அழைப்பு"</string> + <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"வெளிச்செல்லும் வைஃபை அழைப்பு"</string> <string name="notification_on_hold" msgid="3480694969511790465">"காத்திருப்பில்"</string> <string name="notification_incoming_call" msgid="2820429205043529642">"உள்வரும் அழைப்பு"</string> + <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"உள்வரும் வைஃபை அழைப்பு"</string> <string name="notification_incoming_video_call" msgid="7356836933934464805">"உள்வரும் வீடியோ அழைப்பு"</string> <string name="notification_requesting_video_call" msgid="1405576812892369451">"உள்வரும் வீடியோ கோரிக்கை"</string> <string name="notification_voicemail_title" msgid="8933468752045550523">"புதிய குரலஞ்சல்"</string> diff --git a/InCallUI/res/values-te-rIN/strings.xml b/InCallUI/res/values-te-rIN/strings.xml index dc26f434d..3ae848d57 100644 --- a/InCallUI/res/values-te-rIN/strings.xml +++ b/InCallUI/res/values-te-rIN/strings.xml @@ -57,8 +57,10 @@ <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> సమాధానం ఇవ్వని కాల్లు"</string> <string name="notification_missedCallTicker" msgid="504686252427747209">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g> నుండి సమాధానం ఇవ్వని కాల్"</string> <string name="notification_ongoing_call" msgid="7068688957273482989">"కాల్ కొనసాగుతోంది"</string> + <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"Wi-Fi కాల్ కొనసాగుతోంది"</string> <string name="notification_on_hold" msgid="3480694969511790465">"హోల్డ్లో ఉంది"</string> <string name="notification_incoming_call" msgid="2820429205043529642">"ఇన్కమింగ్ కాల్"</string> + <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"Wi-Fi కాల్ వస్తోంది"</string> <string name="notification_incoming_video_call" msgid="7356836933934464805">"ఇన్కమింగ్ వీడియో కాల్"</string> <string name="notification_requesting_video_call" msgid="1405576812892369451">"ఇన్కమింగ్ వీడియో అభ్యర్థన"</string> <string name="notification_voicemail_title" msgid="8933468752045550523">"కొత్త వాయిస్ మెయిల్"</string> diff --git a/InCallUI/res/values-th/strings.xml b/InCallUI/res/values-th/strings.xml index 1709dc4b5..452e6075c 100644 --- a/InCallUI/res/values-th/strings.xml +++ b/InCallUI/res/values-th/strings.xml @@ -57,8 +57,10 @@ <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> สายที่ไม่ได้รับ"</string> <string name="notification_missedCallTicker" msgid="504686252427747209">"สายที่ไม่ได้รับจาก <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string> <string name="notification_ongoing_call" msgid="7068688957273482989">"โทรต่อเนื่อง"</string> + <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"กำลังโทรผ่าน Wi-Fi"</string> <string name="notification_on_hold" msgid="3480694969511790465">"พักสาย"</string> <string name="notification_incoming_call" msgid="2820429205043529642">"สายเรียกเข้า"</string> + <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"สายโทรเข้าผ่าน Wi-Fi"</string> <string name="notification_incoming_video_call" msgid="7356836933934464805">"แฮงเอาท์วิดีโอเรียกเข้า"</string> <string name="notification_requesting_video_call" msgid="1405576812892369451">"คำขอโทรเข้าเป็นวิดีโอ"</string> <string name="notification_voicemail_title" msgid="8933468752045550523">"ข้อความเสียงใหม่"</string> @@ -66,7 +68,7 @@ <string name="notification_voicemail_text_format" msgid="4447323569453981685">"หมุนหมายเลข <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string> <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"ไม่ทราบหมายเลขข้อความเสียง"</string> <string name="notification_network_selection_title" msgid="4224455487793492772">"ไม่มีบริการ"</string> - <string name="notification_network_selection_text" msgid="2607085729661923269">"เครือข่ายที่เลือกไว้ (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) ใช้งานไม่ได้"</string> + <string name="notification_network_selection_text" msgid="2607085729661923269">"เครือข่ายที่เลือกไว้ (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) ไม่พร้อมใช้งาน"</string> <string name="notification_action_answer" msgid="6700362365135365143">"ตอบ"</string> <string name="notification_action_end_call" msgid="6069460915123531620">"วางสาย"</string> <string name="notification_action_answer_video" msgid="7809271910870211729">"วิดีโอ"</string> diff --git a/InCallUI/res/values-tl/strings.xml b/InCallUI/res/values-tl/strings.xml index cf2efed2e..f6db3ee0b 100644 --- a/InCallUI/res/values-tl/strings.xml +++ b/InCallUI/res/values-tl/strings.xml @@ -57,8 +57,10 @@ <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> (na) hindi nasagot na tawag"</string> <string name="notification_missedCallTicker" msgid="504686252427747209">"Hindi nasagot na tawag mula kay <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string> <string name="notification_ongoing_call" msgid="7068688957273482989">"Kasalukuyang tawag"</string> + <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"Isinasagawang tawag sa Wi-Fi"</string> <string name="notification_on_hold" msgid="3480694969511790465">"Naka-hold"</string> <string name="notification_incoming_call" msgid="2820429205043529642">"Papasok na tawag"</string> + <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"Papasok na tawag sa Wi-Fi"</string> <string name="notification_incoming_video_call" msgid="7356836933934464805">"Papasok na video call"</string> <string name="notification_requesting_video_call" msgid="1405576812892369451">"Papasok na kahilingan ng video"</string> <string name="notification_voicemail_title" msgid="8933468752045550523">"Bagong voicemail"</string> diff --git a/InCallUI/res/values-tr/strings.xml b/InCallUI/res/values-tr/strings.xml index 2782092bc..a8e6f70ab 100644 --- a/InCallUI/res/values-tr/strings.xml +++ b/InCallUI/res/values-tr/strings.xml @@ -57,8 +57,10 @@ <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> cevapsız çağrı"</string> <string name="notification_missedCallTicker" msgid="504686252427747209">"Cevapsız çağrı: <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string> <string name="notification_ongoing_call" msgid="7068688957273482989">"Devam eden çağrılar"</string> + <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"Giden kablosuz çağrı"</string> <string name="notification_on_hold" msgid="3480694969511790465">"Beklemede"</string> <string name="notification_incoming_call" msgid="2820429205043529642">"Gelen çağrı"</string> + <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"Gelen kablosuz çağrı"</string> <string name="notification_incoming_video_call" msgid="7356836933934464805">"Gelen video görüşmesi isteği"</string> <string name="notification_requesting_video_call" msgid="1405576812892369451">"Gelen video isteği"</string> <string name="notification_voicemail_title" msgid="8933468752045550523">"Yeni sesli mesaj"</string> diff --git a/InCallUI/res/values-uk/strings.xml b/InCallUI/res/values-uk/strings.xml index d05fc424d..16f40cceb 100644 --- a/InCallUI/res/values-uk/strings.xml +++ b/InCallUI/res/values-uk/strings.xml @@ -57,8 +57,10 @@ <string name="notification_missedCallsMsg" msgid="4575787816055205600">"Пропущ. дзвінк: <xliff:g id="NUM_MISSED_CALLS">%s</xliff:g>"</string> <string name="notification_missedCallTicker" msgid="504686252427747209">"Пропущ. виклик від <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string> <string name="notification_ongoing_call" msgid="7068688957273482989">"Поточний виклик"</string> + <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"Активний дзвінок через Wi-Fi"</string> <string name="notification_on_hold" msgid="3480694969511790465">"Очікує"</string> <string name="notification_incoming_call" msgid="2820429205043529642">"Вхідний дзвінок"</string> + <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"Вхідний дзвінок через Wi-Fi"</string> <string name="notification_incoming_video_call" msgid="7356836933934464805">"Вхідний відеодзвінок"</string> <string name="notification_requesting_video_call" msgid="1405576812892369451">"Запит на вхідний відеодзвінок"</string> <string name="notification_voicemail_title" msgid="8933468752045550523">"Нова голос. пошта"</string> diff --git a/InCallUI/res/values-ur-rPK/strings.xml b/InCallUI/res/values-ur-rPK/strings.xml index 2f84bd383..024468948 100644 --- a/InCallUI/res/values-ur-rPK/strings.xml +++ b/InCallUI/res/values-ur-rPK/strings.xml @@ -57,8 +57,10 @@ <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> چھوٹی ہوئی کالیں"</string> <string name="notification_missedCallTicker" msgid="504686252427747209">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g> کی جانب سے چھوٹی ہوئی کال"</string> <string name="notification_ongoing_call" msgid="7068688957273482989">"جاری کال"</string> + <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"Wi-Fi کال جاری ہے"</string> <string name="notification_on_hold" msgid="3480694969511790465">"ہولڈ پر"</string> <string name="notification_incoming_call" msgid="2820429205043529642">"آنے والی کال"</string> + <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"Wi-Fi کال آ رہی ہے"</string> <string name="notification_incoming_video_call" msgid="7356836933934464805">"اِن کمنگ ویڈیو کال"</string> <string name="notification_requesting_video_call" msgid="1405576812892369451">"اِن کمنگ ویڈیو درخواست"</string> <string name="notification_voicemail_title" msgid="8933468752045550523">"نیا صوتی میل"</string> diff --git a/InCallUI/res/values-uz-rUZ/strings.xml b/InCallUI/res/values-uz-rUZ/strings.xml index bece8a9a9..b1cd89ef2 100644 --- a/InCallUI/res/values-uz-rUZ/strings.xml +++ b/InCallUI/res/values-uz-rUZ/strings.xml @@ -57,8 +57,10 @@ <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> ta javobsiz qo‘ng‘iroq"</string> <string name="notification_missedCallTicker" msgid="504686252427747209">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g>dan javobsiz qo‘ng‘iroq"</string> <string name="notification_ongoing_call" msgid="7068688957273482989">"Joriy qo‘ng‘iroq"</string> + <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"Chiquvchi Wi-Fi qo‘ng‘irog‘i"</string> <string name="notification_on_hold" msgid="3480694969511790465">"Kutmoqda"</string> <string name="notification_incoming_call" msgid="2820429205043529642">"Kiruvchi qo‘ng‘iroq"</string> + <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"Kiruvchi Wi-Fi qo‘ng‘irog‘i"</string> <string name="notification_incoming_video_call" msgid="7356836933934464805">"Kiruvchi videoqo‘ng‘iroq"</string> <string name="notification_requesting_video_call" msgid="1405576812892369451">"Kiruvchi video so\'rovi"</string> <string name="notification_voicemail_title" msgid="8933468752045550523">"Yangi ovozli xabar"</string> diff --git a/InCallUI/res/values-vi/strings.xml b/InCallUI/res/values-vi/strings.xml index 7e7a694ee..0aed27d0d 100644 --- a/InCallUI/res/values-vi/strings.xml +++ b/InCallUI/res/values-vi/strings.xml @@ -57,8 +57,10 @@ <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> cuộc gọi nhỡ"</string> <string name="notification_missedCallTicker" msgid="504686252427747209">"Cuộc gọi nhỡ từ <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string> <string name="notification_ongoing_call" msgid="7068688957273482989">"Cuộc gọi đang thực hiện"</string> + <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"Cuộc gọi đang diễn ra qua Wi-Fi"</string> <string name="notification_on_hold" msgid="3480694969511790465">"Đang chờ"</string> <string name="notification_incoming_call" msgid="2820429205043529642">"Cuộc gọi đến"</string> + <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"Cuộc gọi đến qua Wi-Fi"</string> <string name="notification_incoming_video_call" msgid="7356836933934464805">"Cuộc gọi điện video đến"</string> <string name="notification_requesting_video_call" msgid="1405576812892369451">"Yêu cầu video đến"</string> <string name="notification_voicemail_title" msgid="8933468752045550523">"Thư thoại mới"</string> diff --git a/InCallUI/res/values-zh-rCN/strings.xml b/InCallUI/res/values-zh-rCN/strings.xml index be2ac76e5..28a838764 100644 --- a/InCallUI/res/values-zh-rCN/strings.xml +++ b/InCallUI/res/values-zh-rCN/strings.xml @@ -57,8 +57,10 @@ <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> 个未接电话"</string> <string name="notification_missedCallTicker" msgid="504686252427747209">"来自<xliff:g id="MISSED_CALL_FROM">%s</xliff:g>的未接电话"</string> <string name="notification_ongoing_call" msgid="7068688957273482989">"当前通话"</string> + <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"正在进行 WLAN 通话"</string> <string name="notification_on_hold" msgid="3480694969511790465">"保持"</string> <string name="notification_incoming_call" msgid="2820429205043529642">"来电"</string> + <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"WLAN 来电"</string> <string name="notification_incoming_video_call" msgid="7356836933934464805">"有视频通话来电"</string> <string name="notification_requesting_video_call" msgid="1405576812892369451">"收到视频通话邀请"</string> <string name="notification_voicemail_title" msgid="8933468752045550523">"新语音邮件"</string> diff --git a/InCallUI/res/values-zh-rHK/strings.xml b/InCallUI/res/values-zh-rHK/strings.xml index b067eee04..19909cb74 100644 --- a/InCallUI/res/values-zh-rHK/strings.xml +++ b/InCallUI/res/values-zh-rHK/strings.xml @@ -57,8 +57,10 @@ <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> 未接電話"</string> <string name="notification_missedCallTicker" msgid="504686252427747209">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g>打來的未接來電"</string> <string name="notification_ongoing_call" msgid="7068688957273482989">"通話中"</string> + <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"正在進行 Wi-Fi 通話"</string> <string name="notification_on_hold" msgid="3480694969511790465">"保留通話"</string> <string name="notification_incoming_call" msgid="2820429205043529642">"來電"</string> + <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"Wi-Fi 來電"</string> <string name="notification_incoming_video_call" msgid="7356836933934464805">"視像通話來電"</string> <string name="notification_requesting_video_call" msgid="1405576812892369451">"收到視像要求"</string> <string name="notification_voicemail_title" msgid="8933468752045550523">"新留言"</string> diff --git a/InCallUI/res/values-zh-rTW/strings.xml b/InCallUI/res/values-zh-rTW/strings.xml index 724fd9140..294b08dff 100644 --- a/InCallUI/res/values-zh-rTW/strings.xml +++ b/InCallUI/res/values-zh-rTW/strings.xml @@ -57,8 +57,10 @@ <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> 通未接來電"</string> <string name="notification_missedCallTicker" msgid="504686252427747209">"來自 <xliff:g id="MISSED_CALL_FROM">%s</xliff:g> 的未接來電"</string> <string name="notification_ongoing_call" msgid="7068688957273482989">"通話中"</string> + <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"撥出的 Wi-Fi 電話"</string> <string name="notification_on_hold" msgid="3480694969511790465">"通話保留"</string> <string name="notification_incoming_call" msgid="2820429205043529642">"來電"</string> + <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"撥入的 Wi-Fi 電話"</string> <string name="notification_incoming_video_call" msgid="7356836933934464805">"視訊通話來電"</string> <string name="notification_requesting_video_call" msgid="1405576812892369451">"收到視訊要求"</string> <string name="notification_voicemail_title" msgid="8933468752045550523">"新留言"</string> @@ -72,7 +74,7 @@ <string name="notification_action_answer_video" msgid="7809271910870211729">"視訊"</string> <string name="notification_action_answer_voice" msgid="1770796916369437773">"語音"</string> <string name="notification_action_accept" msgid="2898609801209468429">"接受"</string> - <string name="notification_action_dismiss" msgid="2679969397930852858">"關閉"</string> + <string name="notification_action_dismiss" msgid="2679969397930852858">"拒絶"</string> <string name="notification_missedCall_call_back" msgid="2684890353590890187">"回撥"</string> <string name="notification_missedCall_message" msgid="3049928912736917988">"簡訊"</string> <string name="incall_error_power_off" msgid="6550191216405193368">"撥號前,請先關閉飛航模式。"</string> diff --git a/InCallUI/res/values-zu/strings.xml b/InCallUI/res/values-zu/strings.xml index 370d84ce0..7c25cddd7 100644 --- a/InCallUI/res/values-zu/strings.xml +++ b/InCallUI/res/values-zu/strings.xml @@ -57,8 +57,10 @@ <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> amakholi akulahlekele"</string> <string name="notification_missedCallTicker" msgid="504686252427747209">"Uphuthelwe ikholi ephuma ku-<xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string> <string name="notification_ongoing_call" msgid="7068688957273482989">"Ikholi eqhubekayo"</string> + <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"Ikholi ye-Wi-Fi eqhubekayo"</string> <string name="notification_on_hold" msgid="3480694969511790465">"Ibambile"</string> <string name="notification_incoming_call" msgid="2820429205043529642">"Ikholi engenayo"</string> + <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"Ikholi ye-Wi-Fi engenayo"</string> <string name="notification_incoming_video_call" msgid="7356836933934464805">"Ikholi yevidiyo engenayo"</string> <string name="notification_requesting_video_call" msgid="1405576812892369451">"Isicelo sevidiyo engenayo"</string> <string name="notification_voicemail_title" msgid="8933468752045550523">"Umlayezo wezwi omusha"</string> diff --git a/InCallUI/res/values/ids.xml b/InCallUI/res/values/ids.xml index c6ad2099c..accb8fb73 100644 --- a/InCallUI/res/values/ids.xml +++ b/InCallUI/res/values/ids.xml @@ -16,4 +16,5 @@ <resources> <item type="id" name="fadeState" /> + <item type="id" name="view_tag_callcard_actual_height" /> </resources> diff --git a/InCallUI/res/values/styles.xml b/InCallUI/res/values/styles.xml index e16d72cb4..11d636261 100644 --- a/InCallUI/res/values/styles.xml +++ b/InCallUI/res/values/styles.xml @@ -70,43 +70,12 @@ <item name="android:textOff">@null</item> </style> - <style name="InCallAnimationStyle" parent="@android:style/Animation.Activity"> - <!-- Suppress task-to-task animation happening during the transition from - OutgoingCallBroadcaster (and SipOptionHandler) to InCallActivity. - The transition unexpectedly happens during the transition (inside the phone task), - because InCallActivity is using android:launchMode="singleInstance". - - - taskOpenEnterAnimation/taskOpenExitAnimation is used for the first time - InCallActivity instance is created. - - - taskToFrontEnterAnimation/taskToFrontExitAnimation is used when InCallActivity - is already available. - (Note that InCallActivity won't be destroyed once it is created) - - TODO: try removing the flag instead --> - <item name="android:taskOpenEnterAnimation">@null</item> - <item name="android:taskOpenExitAnimation">@anim/activity_open_exit</item> - <item name="android:taskToFrontEnterAnimation">@anim/activity_open_enter</item> - <item name="android:taskToFrontExitAnimation">@anim/activity_open_exit</item> - </style> - - <style name="OutgoingCallAnimationStyle" parent="@android:style/Animation.Activity"> - <item name="android:taskOpenEnterAnimation">@null</item> - <item name="android:taskOpenExitAnimation">@null</item> - <item name="android:activityOpenEnterAnimation">@null</item> - <item name="android:activityOpenExitAnimation">@null</item> - <item name="android:activityCloseEnterAnimation">@null</item> - <item name="android:activityCloseExitAnimation">@null</item> - <item name="android:taskToFrontEnterAnimation">@null</item> - <item name="android:taskToFrontExitAnimation">@null</item> - </style> - <!-- Theme for the InCallActivity activity. Should have a transparent background for the circular reveal animation for a new outgoing call to work correctly. We don't just use Theme.Black.NoTitleBar directly, since we want any popups or dialogs from the InCallActivity to have the correct Material style. --> <style name="Theme.InCallScreen" parent="@android:style/Theme.Material.Light"> - <item name="android:windowAnimationStyle">@style/InCallAnimationStyle</item> + <item name="android:windowAnimationStyle">@null</item> <item name="android:windowIsTranslucent">true</item> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:windowContentOverlay">@null</item> @@ -116,15 +85,7 @@ <item name="android:popupMenuStyle">@style/InCallPopupMenuStyle</item> <item name="android:actionBarStyle">@style/InCallActionBarStyle</item> <item name="android:buttonStyleToggle">@style/InCallCompoundButton</item> - </style> - - <style name="Theme.CircularRevealAnimation" parent="@android:style/Theme.Material.Light"> - <item name="android:windowIsTranslucent">true</item> - <item name="android:windowContentOverlay">@null</item> - <item name="android:windowNoTitle">true</item> - <item name="android:colorPrimaryDark">@color/dialer_theme_color_dark</item> - <item name="android:windowBackground">@android:color/transparent</item> - <item name="android:windowAnimationStyle">@null</item> + <item name="android:alertDialogTheme">@android:style/Theme.Material.Light.Dialog.Alert</item> </style> <style name="InCallPopupMenuStyle" parent="@android:style/Theme.Material.Light"> diff --git a/InCallUI/src/com/android/incallui/AccelerometerListener.java b/InCallUI/src/com/android/incallui/AccelerometerListener.java index 1a7077866..ca8e7d0a4 100644 --- a/InCallUI/src/com/android/incallui/AccelerometerListener.java +++ b/InCallUI/src/com/android/incallui/AccelerometerListener.java @@ -120,7 +120,7 @@ public final class AccelerometerListener { if (x == 0.0 || y == 0.0 || z == 0.0) return; // magnitude of the acceleration vector projected onto XY plane - final double xy = Math.sqrt(x*x + y*y); + final double xy = Math.hypot(x, y); // compute the vertical angle double angle = Math.atan2(xy, z); // convert to degrees @@ -131,16 +131,19 @@ public final class AccelerometerListener { } SensorEventListener mSensorListener = new SensorEventListener() { + @Override public void onSensorChanged(SensorEvent event) { onSensorEvent(event.values[0], event.values[1], event.values[2]); } + @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { // ignore } }; Handler mHandler = new Handler() { + @Override public void handleMessage(Message msg) { switch (msg.what) { case ORIENTATION_CHANGED: diff --git a/InCallUI/src/com/android/incallui/AnswerFragment.java b/InCallUI/src/com/android/incallui/AnswerFragment.java index 29747dabd..8cbce10c6 100644 --- a/InCallUI/src/com/android/incallui/AnswerFragment.java +++ b/InCallUI/src/com/android/incallui/AnswerFragment.java @@ -76,7 +76,7 @@ public class AnswerFragment extends BaseFragment<AnswerPresenter, AnswerPresente @Override public AnswerPresenter createPresenter() { - return new AnswerPresenter(); + return InCallPresenter.getInstance().getAnswerPresenter(); } @Override @@ -108,11 +108,9 @@ public class AnswerFragment extends BaseFragment<AnswerPresenter, AnswerPresente } @Override - public void showAnswerUi(boolean show) { - getView().setVisibility(show ? View.VISIBLE : View.GONE); - - Log.d(this, "Show answer UI: " + show); - if (show) { + public void onShowAnswerUi(boolean shown) { + Log.d(this, "Show answer UI: " + shown); + if (shown) { mGlowpad.startPing(); } else { mGlowpad.stopPing(); @@ -247,7 +245,7 @@ public class AnswerFragment extends BaseFragment<AnswerPresenter, AnswerPresente } } - public void dismissPendingDialogues() { + public void dismissPendingDialogs() { if (isCannedResponsePopupShowing()) { dismissCannedResponsePopup(); } diff --git a/InCallUI/src/com/android/incallui/AnswerPresenter.java b/InCallUI/src/com/android/incallui/AnswerPresenter.java index e579d643a..cc95e0190 100644 --- a/InCallUI/src/com/android/incallui/AnswerPresenter.java +++ b/InCallUI/src/com/android/incallui/AnswerPresenter.java @@ -17,15 +17,23 @@ package com.android.incallui; import android.content.Context; -import android.telecom.TelecomManager; + +import com.android.incallui.InCallPresenter.InCallState; import java.util.List; /** - * Presenter for the Incoming call widget. + * Presenter for the Incoming call widget. The {@link AnswerPresenter} handles the logic during + * incoming calls. It is also in charge of responding to incoming calls, so there needs to be + * an instance alive so that it can receive onIncomingCall callbacks. + * + * An instance of {@link AnswerPresenter} is created by InCallPresenter at startup, registers + * for callbacks via InCallPresenter, and shows/hides the {@link AnswerFragment} via IncallActivity. + * */ public class AnswerPresenter extends Presenter<AnswerPresenter.AnswerUi> - implements CallList.CallUpdateListener, CallList.Listener { + implements CallList.CallUpdateListener, InCallPresenter.InCallUiListener, + InCallPresenter.IncomingCallListener { private static final String TAG = AnswerPresenter.class.getSimpleName(); @@ -34,57 +42,33 @@ public class AnswerPresenter extends Presenter<AnswerPresenter.AnswerUi> private boolean mHasTextMessages = false; @Override - public void onUiReady(AnswerUi ui) { - super.onUiReady(ui); - - final CallList calls = CallList.getInstance(); - Call call; - call = calls.getIncomingCall(); - if (call != null) { - processIncomingCall(call); - } - call = calls.getVideoUpgradeRequestCall(); - if (call != null) { - processVideoUpgradeRequestCall(call); - } - - // Listen for incoming calls. - calls.addListener(this); - } - - @Override - public void onUiUnready(AnswerUi ui) { - super.onUiUnready(ui); - - CallList.getInstance().removeListener(this); - - // This is necessary because the activity can be destroyed while an incoming call exists. - // This happens when back button is pressed while incoming call is still being shown. - if (mCallId != null) { - CallList.getInstance().removeCallUpdateListener(mCallId, this); + public void onUiShowing(boolean showing) { + if (showing) { + final CallList calls = CallList.getInstance(); + Call call; + call = calls.getIncomingCall(); + if (call != null) { + processIncomingCall(call); + } + call = calls.getVideoUpgradeRequestCall(); + if (call != null) { + processVideoUpgradeRequestCall(call); + } + } else { + // This is necessary because the activity can be destroyed while an incoming call exists. + // This happens when back button is pressed while incoming call is still being shown. + if (mCallId != null) { + CallList.getInstance().removeCallUpdateListener(mCallId, this); + } } } @Override - public void onCallListChange(CallList callList) { - // no-op - } - - @Override - public void onDisconnect(Call call) { - // no-op - } - - @Override - public void onIncomingCall(Call call) { - // TODO: Ui is being destroyed when the fragment detaches. Need clean up step to stop - // getting updates here. + public void onIncomingCall(InCallState oldState, InCallState newState, Call call) { Log.d(this, "onIncomingCall: " + this); - if (getUi() != null) { - if (!call.getId().equals(mCallId)) { - // A new call is coming in. - processIncomingCall(call); - } + if (!call.getId().equals(mCallId)) { + // A new call is coming in. + processIncomingCall(call); } } @@ -96,9 +80,20 @@ public class AnswerPresenter extends Presenter<AnswerPresenter.AnswerUi> CallList.getInstance().addCallUpdateListener(mCallId, this); Log.d(TAG, "Showing incoming for call id: " + mCallId + " " + this); - final List<String> textMsgs = CallList.getInstance().getTextResponses(call.getId()); - getUi().showAnswerUi(true); - configureAnswerTargetsForSms(call, textMsgs); + if (showAnswerUi(true)) { + final List<String> textMsgs = CallList.getInstance().getTextResponses(call.getId()); + configureAnswerTargetsForSms(call, textMsgs); + } + } + + private boolean showAnswerUi(boolean show) { + final InCallActivity activity = InCallPresenter.getInstance().getActivity(); + if (activity != null) { + activity.showAnswerFragment(show); + return true; + } else { + return false; + } } private void processVideoUpgradeRequestCall(Call call) { @@ -107,7 +102,7 @@ public class AnswerPresenter extends Presenter<AnswerPresenter.AnswerUi> // Listen for call updates for the current call. CallList.getInstance().addCallUpdateListener(mCallId, this); - getUi().showAnswerUi(true); + showAnswerUi(true); getUi().showTargets(AnswerFragment.TARGET_SET_FOR_VIDEO_UPGRADE_REQUEST); } @@ -119,7 +114,7 @@ public class AnswerPresenter extends Presenter<AnswerPresenter.AnswerUi> // Stop listening for updates. CallList.getInstance().removeCallUpdateListener(mCallId, this); - getUi().showAnswerUi(false); + showAnswerUi(false); // mCallId will hold the state of the call. We don't clear the mCall variable here as // it may be useful for sending text messages after phone disconnects. @@ -175,6 +170,10 @@ public class AnswerPresenter extends Presenter<AnswerPresenter.AnswerUi> } private void configureAnswerTargetsForSms(Call call, List<String> textMsgs) { + if (getUi() == null) { + return; + } + final Context context = getUi().getContext(); mHasTextMessages = textMsgs != null; @@ -199,7 +198,7 @@ public class AnswerPresenter extends Presenter<AnswerPresenter.AnswerUi> } interface AnswerUi extends Ui { - public void showAnswerUi(boolean show); + public void onShowAnswerUi(boolean shown); public void showTargets(int targetSet); public void showMessageDialog(); public void configureMessageDialog(List<String> textResponses); diff --git a/InCallUI/src/com/android/incallui/AudioModeProvider.java b/InCallUI/src/com/android/incallui/AudioModeProvider.java index c823fda3c..a26766126 100644 --- a/InCallUI/src/com/android/incallui/AudioModeProvider.java +++ b/InCallUI/src/com/android/incallui/AudioModeProvider.java @@ -26,7 +26,7 @@ import java.util.List; /** * Proxy class for getting and setting the audio mode. */ -/* package */ class AudioModeProvider implements InCallPhoneListener { +public class AudioModeProvider implements InCallPhoneListener { static final int AUDIO_MODE_INVALID = 0; diff --git a/InCallUI/src/com/android/incallui/BaseFragment.java b/InCallUI/src/com/android/incallui/BaseFragment.java index 1ef3b1513..037c2455f 100644 --- a/InCallUI/src/com/android/incallui/BaseFragment.java +++ b/InCallUI/src/com/android/incallui/BaseFragment.java @@ -16,6 +16,7 @@ package com.android.incallui; +import android.app.Activity; import android.app.Fragment; import android.os.Bundle; @@ -24,6 +25,8 @@ import android.os.Bundle; */ public abstract class BaseFragment<T extends Presenter<U>, U extends Ui> extends Fragment { + private static final String KEY_FRAGMENT_HIDDEN = "key_fragment_hidden"; + private T mPresenter; abstract T createPresenter(); @@ -54,6 +57,9 @@ public abstract class BaseFragment<T extends Presenter<U>, U extends Ui> extends super.onCreate(savedInstanceState); if (savedInstanceState != null) { mPresenter.onRestoreInstanceState(savedInstanceState); + if (savedInstanceState.getBoolean(KEY_FRAGMENT_HIDDEN)) { + getFragmentManager().beginTransaction().hide(this).commit(); + } } } @@ -67,5 +73,12 @@ public abstract class BaseFragment<T extends Presenter<U>, U extends Ui> extends public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); mPresenter.onSaveInstanceState(outState); + outState.putBoolean(KEY_FRAGMENT_HIDDEN, isHidden()); + } + + @Override + public void onAttach(Activity activity) { + super.onAttach(activity); + ((FragmentDisplayManager) activity).onFragmentAttached(this); } } diff --git a/InCallUI/src/com/android/incallui/Call.java b/InCallUI/src/com/android/incallui/Call.java index fd06e53b3..9a5228f7e 100644 --- a/InCallUI/src/com/android/incallui/Call.java +++ b/InCallUI/src/com/android/incallui/Call.java @@ -17,9 +17,11 @@ package com.android.incallui; import com.android.contacts.common.CallUtil; +import com.android.contacts.common.testing.NeededForTesting; import android.content.Context; import android.net.Uri; +import android.os.Bundle; import android.telecom.CallProperties; import android.telecom.DisconnectCause; import android.telecom.GatewayInfo; @@ -34,7 +36,8 @@ import java.util.Locale; /** * Describes a single call and its state. */ -public final class Call { +@NeededForTesting +public class Call { /* Defines different states of this call */ public static class State { public static final int INVALID = 0; @@ -178,7 +181,7 @@ public final class Call { } }; - private final android.telecom.Call mTelecommCall; + private android.telecom.Call mTelecommCall; private final String mId; private int mState = State.INVALID; private DisconnectCause mDisconnectCause; @@ -187,6 +190,16 @@ public final class Call { private InCallVideoCallListener mVideoCallListener; + /** + * Used only to create mock calls for testing + */ + @NeededForTesting + Call(int state) { + mTelecommCall = null; + mId = ID_PREFIX + Integer.toString(sIdCounter++); + setState(state); + } + public Call(android.telecom.Call telecommCall) { mTelecommCall = telecommCall; mId = ID_PREFIX + Integer.toString(sIdCounter++); @@ -258,6 +271,9 @@ public final class Call { } public String getNumber() { + if (mTelecommCall == null) { + return null; + } if (mTelecommCall.getDetails().getGatewayInfo() != null) { return mTelecommCall.getDetails().getGatewayInfo() .getOriginalAddress().getSchemeSpecificPart(); @@ -266,11 +282,11 @@ public final class Call { } public Uri getHandle() { - return mTelecommCall.getDetails().getHandle(); + return mTelecommCall == null ? null : mTelecommCall.getDetails().getHandle(); } public int getState() { - if (mTelecommCall.getParent() != null) { + if (mTelecommCall != null && mTelecommCall.getParent() != null) { return State.CONFERENCED; } else { return mState; @@ -282,15 +298,21 @@ public final class Call { } public int getNumberPresentation() { - return getTelecommCall().getDetails().getHandlePresentation(); + return mTelecommCall == null ? null : mTelecommCall.getDetails().getHandlePresentation(); } public int getCnapNamePresentation() { - return getTelecommCall().getDetails().getCallerDisplayNamePresentation(); + return mTelecommCall == null ? null + : mTelecommCall.getDetails().getCallerDisplayNamePresentation(); } public String getCnapName() { - return getTelecommCall().getDetails().getCallerDisplayName(); + return mTelecommCall == null ? null + : getTelecommCall().getDetails().getCallerDisplayName(); + } + + public Bundle getExtras() { + return mTelecommCall == null ? null : mTelecommCall.getDetails().getExtras(); } /** Returns call disconnect cause, defined by {@link DisconnectCause}. */ @@ -343,15 +365,15 @@ public final class Call { } public GatewayInfo getGatewayInfo() { - return mTelecommCall.getDetails().getGatewayInfo(); + return mTelecommCall == null ? null : mTelecommCall.getDetails().getGatewayInfo(); } public PhoneAccountHandle getAccountHandle() { - return mTelecommCall.getDetails().getAccountHandle(); + return mTelecommCall == null ? null : mTelecommCall.getDetails().getAccountHandle(); } public VideoCall getVideoCall() { - return mTelecommCall.getVideoCall(); + return mTelecommCall == null ? null : mTelecommCall.getVideoCall(); } public List<String> getChildCallIds() { @@ -405,6 +427,12 @@ public final class Call { @Override public String toString() { + if (mTelecommCall == null) { + // This should happen only in testing since otherwise we would never have a null + // Telecom call. + return String.valueOf(mId); + } + return String.format(Locale.US, "[%s, %s, %s, children:%s, parent:%s, conferenceable:%s, " + "videoState:%d]", mId, diff --git a/InCallUI/src/com/android/incallui/CallButtonFragment.java b/InCallUI/src/com/android/incallui/CallButtonFragment.java index b2d109a6a..78956cbb9 100644 --- a/InCallUI/src/com/android/incallui/CallButtonFragment.java +++ b/InCallUI/src/com/android/incallui/CallButtonFragment.java @@ -312,10 +312,6 @@ public class CallButtonFragment @Override public void setEnabled(boolean isEnabled) { mIsEnabled = isEnabled; - View view = getView(); - if (view.getVisibility() != View.VISIBLE) { - view.setVisibility(View.VISIBLE); - } mAudioButton.setEnabled(isEnabled); mChangeToVoiceButton.setEnabled(isEnabled); @@ -773,7 +769,7 @@ public class CallButtonFragment public void displayDialpad(boolean value, boolean animate) { mShowDialpadButton.setSelected(value); if (getActivity() != null && getActivity() instanceof InCallActivity) { - ((InCallActivity) getActivity()).displayDialpad(value, animate); + ((InCallActivity) getActivity()).showDialpadFragment(value, animate); } } diff --git a/InCallUI/src/com/android/incallui/CallCardFragment.java b/InCallUI/src/com/android/incallui/CallCardFragment.java index 6550eecdc..94e4ef161 100644 --- a/InCallUI/src/com/android/incallui/CallCardFragment.java +++ b/InCallUI/src/com/android/incallui/CallCardFragment.java @@ -24,20 +24,18 @@ import android.animation.ObjectAnimator; import android.app.Activity; import android.content.Context; import android.content.res.Configuration; -import android.graphics.Point; import android.graphics.drawable.AnimationDrawable; import android.graphics.drawable.Drawable; import android.os.Bundle; +import android.os.Trace; import android.telecom.DisconnectCause; import android.telecom.VideoProfile; import android.telephony.PhoneNumberUtils; import android.text.TextUtils; import android.text.format.DateUtils; -import android.view.Display; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnLayoutChangeListener; -import android.view.ViewAnimationUtils; import android.view.ViewGroup; import android.view.ViewPropertyAnimator; import android.view.ViewTreeObserver; @@ -51,7 +49,6 @@ import android.widget.TextView; import com.android.contacts.common.util.MaterialColorMapUtils.MaterialPalette; import com.android.contacts.common.widget.FloatingActionButtonController; -import com.android.incallui.service.PhoneNumberService; import com.android.phone.common.animation.AnimUtils; import java.util.List; @@ -61,9 +58,9 @@ import java.util.List; */ public class CallCardFragment extends BaseFragment<CallCardPresenter, CallCardPresenter.CallCardUi> implements CallCardPresenter.CallCardUi { + private static final String TAG = "CallCardFragment"; private AnimatorSet mAnimatorSet; - private int mRevealAnimationDuration; private int mShrinkAnimationDuration; private int mFabNormalDiameter; private int mFabSmallDiameter; @@ -109,9 +106,6 @@ public class CallCardFragment extends BaseFragment<CallCardPresenter, CallCardPr private ImageButton mFloatingActionButton; private int mFloatingActionButtonVerticalOffset; - // Cached DisplayMetrics density. - private float mDensity; - private float mTranslationOffset; private Animation mPulseAnimation; @@ -133,7 +127,6 @@ public class CallCardFragment extends BaseFragment<CallCardPresenter, CallCardPr public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - mRevealAnimationDuration = getResources().getInteger(R.integer.reveal_animation_duration); mShrinkAnimationDuration = getResources().getInteger(R.integer.shrink_animation_duration); mVideoAnimationDuration = getResources().getInteger(R.integer.video_animation_duration); mFloatingActionButtonVerticalOffset = getResources().getDimensionPixelOffset( @@ -144,7 +137,6 @@ public class CallCardFragment extends BaseFragment<CallCardPresenter, CallCardPr R.dimen.end_call_floating_action_button_small_diameter); } - @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); @@ -157,13 +149,12 @@ public class CallCardFragment extends BaseFragment<CallCardPresenter, CallCardPr @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - super.onCreateView(inflater, container, savedInstanceState); - - mDensity = getResources().getDisplayMetrics().density; + Trace.beginSection(TAG + " onCreate"); mTranslationOffset = getResources().getDimensionPixelSize(R.dimen.call_card_anim_translate_y_offset); - - return inflater.inflate(R.layout.call_card_content, container, false); + final View view = inflater.inflate(R.layout.call_card_fragment, container, false); + Trace.endSection(); + return view; } @Override @@ -226,12 +217,15 @@ public class CallCardFragment extends BaseFragment<CallCardPresenter, CallCardPr @Override public void onClick(View v) { InCallActivity activity = (InCallActivity) getActivity(); - activity.showConferenceCallManager(true); + activity.showConferenceFragment(true); } }); mPrimaryName.setElegantTextHeight(false); mCallStateLabel.setElegantTextHeight(false); + + final LayoutTransition transition = mPrimaryCallInfo.getLayoutTransition(); + transition.enableTransitionType(LayoutTransition.CHANGING); } @Override @@ -370,7 +364,17 @@ public class CallCardFragment extends BaseFragment<CallCardPresenter, CallCardPr if (mIsLandscape) { return getView().getWidth() - mPrimaryCallCardContainer.getWidth(); } else { - return getView().getHeight() - mPrimaryCallCardContainer.getHeight(); + final int callCardHeight; + // Retrieve the actual height of the call card, independent of whether or not the + // outgoing call animation is in progress. The animation does not run in landscape mode + // so this only needs to be done for portrait. + if (mPrimaryCallCardContainer.getTag(R.id.view_tag_callcard_actual_height) != null) { + callCardHeight = (int) mPrimaryCallCardContainer.getTag( + R.id.view_tag_callcard_actual_height); + } else { + callCardHeight = mPrimaryCallCardContainer.getHeight(); + } + return getView().getHeight() - callCardHeight; } } @@ -380,7 +384,7 @@ public class CallCardFragment extends BaseFragment<CallCardPresenter, CallCardPr mPrimaryName.setText(null); } else { mPrimaryName.setText(nameIsNumber - ? PhoneNumberUtils.ttsSpanAsPhoneNumber(name) + ? PhoneNumberUtils.getPhoneTtsSpannable(name) : name); // Set direction of the name field @@ -406,7 +410,7 @@ public class CallCardFragment extends BaseFragment<CallCardPresenter, CallCardPr mPhoneNumber.setText(null); mPhoneNumber.setVisibility(View.GONE); } else { - mPhoneNumber.setText(PhoneNumberUtils.ttsSpanAsPhoneNumber(number)); + mPhoneNumber.setText(PhoneNumberUtils.getPhoneTtsSpannable(number)); mPhoneNumber.setVisibility(View.VISIBLE); mPhoneNumber.setTextDirection(View.TEXT_DIRECTION_LTR); } @@ -427,7 +431,6 @@ public class CallCardFragment extends BaseFragment<CallCardPresenter, CallCardPr public void setPrimary(String number, String name, boolean nameIsNumber, String label, Drawable photo, boolean isSipCall) { Log.d(this, "Setting primary call"); - // set the name field. setPrimaryName(name, nameIsNumber); @@ -464,7 +467,7 @@ public class CallCardFragment extends BaseFragment<CallCardPresenter, CallCardPr mSecondaryCallConferenceCallIcon.setVisibility(isConference ? View.VISIBLE : View.GONE); mSecondaryCallName.setText(nameIsNumber - ? PhoneNumberUtils.ttsSpanAsPhoneNumber(name) + ? PhoneNumberUtils.getPhoneTtsSpannable(name) : name); if (hasProvider) { mSecondaryCallProviderLabel.setText(providerLabel); @@ -852,13 +855,14 @@ public class CallCardFragment extends BaseFragment<CallCardPresenter, CallCardPr } } - public void animateForNewOutgoingCall(final Point touchPoint, - final boolean showCircularReveal) { + @Override + public void animateForNewOutgoingCall() { final ViewGroup parent = (ViewGroup) mPrimaryCallCardContainer.getParent(); final ViewTreeObserver observer = getView().getViewTreeObserver(); - mPrimaryCallInfo.getLayoutTransition().disableTransitionType(LayoutTransition.CHANGING); + final LayoutTransition transition = mPrimaryCallInfo.getLayoutTransition(); + transition.disableTransitionType(LayoutTransition.CHANGING); observer.addOnGlobalLayoutListener(new OnGlobalLayoutListener() { @Override @@ -872,25 +876,29 @@ public class CallCardFragment extends BaseFragment<CallCardPresenter, CallCardPr final LayoutIgnoringListener listener = new LayoutIgnoringListener(); mPrimaryCallCardContainer.addOnLayoutChangeListener(listener); - // Prepare the state of views before the circular reveal animation + // Prepare the state of views before the slide animation final int originalHeight = mPrimaryCallCardContainer.getHeight(); + mPrimaryCallCardContainer.setTag(R.id.view_tag_callcard_actual_height, + originalHeight); mPrimaryCallCardContainer.setBottom(parent.getHeight()); // Set up FAB. mFloatingActionButtonContainer.setVisibility(View.GONE); mFloatingActionButtonController.setScreenWidth(parent.getWidth()); + mCallButtonsContainer.setAlpha(0); mCallStateLabel.setAlpha(0); mPrimaryName.setAlpha(0); mCallTypeLabel.setAlpha(0); mCallNumberAndLabel.setAlpha(0); - final Animator animator = getOutgoingCallAnimator(touchPoint, - parent.getHeight(), originalHeight, showCircularReveal); + final Animator animator = getShrinkAnimator(parent.getHeight(), originalHeight); animator.addListener(new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { + mPrimaryCallCardContainer.setTag(R.id.view_tag_callcard_actual_height, + null); setViewStatePostAnimation(listener); } }); @@ -899,7 +907,7 @@ public class CallCardFragment extends BaseFragment<CallCardPresenter, CallCardPr }); } - public void onDialpadVisiblityChange(boolean isShown) { + public void onDialpadVisibilityChange(boolean isShown) { mIsDialpadShowing = isShown; updateFabPosition(); } @@ -969,7 +977,7 @@ public class CallCardFragment extends BaseFragment<CallCardPresenter, CallCardPr } observer.removeOnGlobalLayoutListener(this); - onDialpadVisiblityChange(mIsDialpadShowing); + onDialpadVisibilityChange(mIsDialpadShowing); } }); } @@ -1000,41 +1008,6 @@ public class CallCardFragment extends BaseFragment<CallCardPresenter, CallCardPr return shrinkAnimator; } - private Animator getRevealAnimator(Point touchPoint) { - final Activity activity = getActivity(); - final View view = activity.getWindow().getDecorView(); - final Display display = activity.getWindowManager().getDefaultDisplay(); - final Point size = new Point(); - display.getSize(size); - - int startX = size.x / 2; - int startY = size.y / 2; - if (touchPoint != null) { - startX = touchPoint.x; - startY = touchPoint.y; - } - - final Animator valueAnimator = ViewAnimationUtils.createCircularReveal(view, - startX, startY, 0, Math.max(size.x, size.y)); - valueAnimator.setDuration(mRevealAnimationDuration); - return valueAnimator; - } - - private Animator getOutgoingCallAnimator(Point touchPoint, int startHeight, int endHeight, - boolean showCircularReveal) { - - final Animator shrinkAnimator = getShrinkAnimator(startHeight, endHeight); - - if (!showCircularReveal) { - return shrinkAnimator; - } - - final Animator revealAnimator = getRevealAnimator(touchPoint); - final AnimatorSet animatorSet = new AnimatorSet(); - animatorSet.playSequentially(revealAnimator, shrinkAnimator); - return animatorSet; - } - private void assignTranslateAnimation(View view, int offset) { view.setTranslationY(mTranslationOffset * offset); view.animate().translationY(0).alpha(1).withLayer() @@ -1055,7 +1028,10 @@ public class CallCardFragment extends BaseFragment<CallCardPresenter, CallCardPr setViewStatePostAnimation(mCallStateIcon); mPrimaryCallCardContainer.removeOnLayoutChangeListener(layoutChangeListener); - mPrimaryCallInfo.getLayoutTransition().enableTransitionType(LayoutTransition.CHANGING); + + final LayoutTransition transition = mPrimaryCallInfo.getLayoutTransition(); + transition.enableTransitionType(LayoutTransition.CHANGING); + mFloatingActionButtonController.scaleIn(AnimUtils.NO_DELAY); } diff --git a/InCallUI/src/com/android/incallui/CallCardPresenter.java b/InCallUI/src/com/android/incallui/CallCardPresenter.java index 3a4c46a60..59263270d 100644 --- a/InCallUI/src/com/android/incallui/CallCardPresenter.java +++ b/InCallUI/src/com/android/incallui/CallCardPresenter.java @@ -17,6 +17,8 @@ package com.android.incallui; import android.Manifest; +import android.app.Activity; +import android.app.FragmentManager; import android.content.Context; import android.content.Intent; import android.content.pm.ApplicationInfo; @@ -35,6 +37,7 @@ import android.telephony.PhoneNumberUtils; import android.telephony.TelephonyManager; import android.text.TextUtils; +import com.android.incallui.CircularRevealFragment.OnCircularRevealCompleteListener; import com.android.incallui.ContactInfoCache.ContactCacheEntry; import com.android.incallui.ContactInfoCache.ContactInfoCacheCallback; import com.android.incallui.InCallPresenter.InCallDetailsListener; @@ -119,6 +122,8 @@ public class CallCardPresenter extends Presenter<CallCardPresenter.CallCardUi> updateContactEntry(null, true); } } + + onStateChange(null, InCallPresenter.getInstance().getInCallState(), CallList.getInstance()); } @Override @@ -677,9 +682,10 @@ public class CallCardPresenter extends Presenter<CallCardPresenter.CallCardUi> } Log.i(this, "Disconnecting call: " + mPrimary); + final String callId = mPrimary.getId(); mPrimary.setState(Call.State.DISCONNECTING); CallList.getInstance().onUpdate(mPrimary); - TelecomAdapter.getInstance().disconnectCall(mPrimary.getId()); + TelecomAdapter.getInstance().disconnectCall(callId); } private String getNumberFromHandle(Uri handle) { @@ -749,5 +755,6 @@ public class CallCardPresenter extends Presenter<CallCardPresenter.CallCardUi> void showHdAudioIndicator(boolean visible); void showManageConferenceCallButton(boolean visible); boolean isManageConferenceVisible(); + void animateForNewOutgoingCall(); } } diff --git a/InCallUI/src/com/android/incallui/CircularRevealActivity.java b/InCallUI/src/com/android/incallui/CircularRevealActivity.java deleted file mode 100644 index 7a9b7ccbf..000000000 --- a/InCallUI/src/com/android/incallui/CircularRevealActivity.java +++ /dev/null @@ -1,169 +0,0 @@ -/* - * Copyright (C) 2014 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.animation.Animator; -import android.animation.AnimatorListenerAdapter; -import android.app.Activity; -import android.content.BroadcastReceiver; -import android.content.Context; -import android.content.Intent; -import android.content.IntentFilter; -import android.graphics.Outline; -import android.graphics.Point; -import android.os.Bundle; -import android.support.v4.content.LocalBroadcastManager; -import android.view.Display; -import android.view.View; -import android.view.ViewAnimationUtils; -import android.view.ViewOutlineProvider; -import android.view.ViewTreeObserver; -import android.view.ViewTreeObserver.OnPreDrawListener; - -import com.android.contacts.common.interactions.TouchPointManager; -import com.android.contacts.common.util.MaterialColorMapUtils.MaterialPalette; - -/** - * Lightweight activity used to display a circular reveal while InCallActivity is starting up. - * A BroadcastReceiver is used to listen to broadcasts from a LocalBroadcastManager to finish - * the activity at suitable times. - */ -public class CircularRevealActivity extends Activity { - private static final int REVEAL_DURATION = 333; - public static final String EXTRA_THEME_COLORS = "extra_theme_colors"; - public static final String ACTION_CLEAR_DISPLAY = "action_clear_display"; - - final BroadcastReceiver mClearDisplayReceiver = new BroadcastReceiver( ) { - @Override - public void onReceive(Context context, Intent intent) { - clearDisplay(); - } - }; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - overridePendingTransition(0, 0); - setContentView(R.layout.outgoing_call_animation); - final Point touchPoint = getIntent().getParcelableExtra(TouchPointManager.TOUCH_POINT); - final MaterialPalette palette = getIntent().getParcelableExtra(EXTRA_THEME_COLORS); - setupDecorView(touchPoint, palette); - } - - @Override - protected void onStart() { - super.onStart(); - if (!InCallPresenter.getInstance().isServiceBound()) { - clearDisplay(); - } - final IntentFilter filter = new IntentFilter(); - filter.addAction(ACTION_CLEAR_DISPLAY); - LocalBroadcastManager.getInstance(this).registerReceiver(mClearDisplayReceiver, filter); - } - - @Override - protected void onStop() { - LocalBroadcastManager.getInstance(this).unregisterReceiver(mClearDisplayReceiver); - super.onStop(); - } - - private void setupDecorView(final Point touchPoint, MaterialPalette palette) { - final View view = getWindow().getDecorView(); - - // The circle starts from an initial size of 0 so clip it such that it is invisible. When - // the animation later starts, this clip will be clobbered by the circular reveal clip. - // See ViewAnimationUtils.createCircularReveal. - view.setOutlineProvider(new ViewOutlineProvider() { - @Override - public void getOutline(View view, Outline outline) { - // Using (0, 0, 0, 0) will not work since the outline will simply be treated as - // an empty outline. - outline.setOval(-1, -1, 0, 0); - } - }); - view.setClipToOutline(true); - - if (palette != null) { - view.findViewById(R.id.outgoing_call_animation_circle).setBackgroundColor( - palette.mPrimaryColor); - getWindow().setStatusBarColor(palette.mSecondaryColor); - } - - view.getViewTreeObserver().addOnPreDrawListener(new OnPreDrawListener() { - @Override - public boolean onPreDraw() { - final ViewTreeObserver vto = view.getViewTreeObserver(); - if (vto.isAlive()) { - vto.removeOnPreDrawListener(this); - } - final Animator animator = getRevealAnimator(touchPoint); - // Since this animator is a RenderNodeAnimator (native animator), add an arbitary - // start delay to force the onAnimationStart callback to happen later on the UI - // thread. Otherwise it would happen right away inside animator.start() - animator.setStartDelay(5); - animator.addListener(new AnimatorListenerAdapter() { - @Override - public void onAnimationStart(Animator animation) { - InCallPresenter.getInstance().onCircularRevealStarted( - CircularRevealActivity.this); - } - - @Override - public void onAnimationEnd(Animator animation) { - view.setClipToOutline(false); - super.onAnimationEnd(animation); - } - }); - animator.start(); - return false; - } - }); - } - - private void clearDisplay() { - getWindow().getDecorView().setVisibility(View.INVISIBLE); - finish(); - } - - @Override - public void onBackPressed() { - return; - } - - public static void sendClearDisplayBroadcast(Context context) { - LocalBroadcastManager.getInstance(context).sendBroadcast(new Intent(ACTION_CLEAR_DISPLAY)); - } - - private Animator getRevealAnimator(Point touchPoint) { - final View view = getWindow().getDecorView(); - final Display display = getWindowManager().getDefaultDisplay(); - final Point size = new Point(); - display.getSize(size); - - int startX = size.x / 2; - int startY = size.y / 2; - if (touchPoint != null) { - startX = touchPoint.x; - startY = touchPoint.y; - } - - final Animator valueAnimator = ViewAnimationUtils.createCircularReveal(view, - startX, startY, 0, Math.max(size.x, size.y)); - valueAnimator.setDuration(REVEAL_DURATION); - return valueAnimator; - } -} diff --git a/InCallUI/src/com/android/incallui/CircularRevealFragment.java b/InCallUI/src/com/android/incallui/CircularRevealFragment.java new file mode 100644 index 000000000..f8cc424fe --- /dev/null +++ b/InCallUI/src/com/android/incallui/CircularRevealFragment.java @@ -0,0 +1,164 @@ +/* + * Copyright (C) 2014 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.animation.Animator; +import android.animation.AnimatorListenerAdapter; +import android.app.Activity; +import android.app.Fragment; +import android.app.FragmentManager; +import android.graphics.Outline; +import android.graphics.Point; +import android.os.Bundle; +import android.view.Display; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewAnimationUtils; +import android.view.ViewGroup; +import android.view.ViewOutlineProvider; +import android.view.ViewTreeObserver; +import android.view.ViewTreeObserver.OnPreDrawListener; + +import com.android.contacts.common.util.MaterialColorMapUtils.MaterialPalette; + +public class CircularRevealFragment extends Fragment { + static final String TAG = "CircularRevealFragment"; + + private Point mTouchPoint; + private OnCircularRevealCompleteListener mListener; + private boolean mAnimationStarted; + + interface OnCircularRevealCompleteListener { + public void onCircularRevealComplete(FragmentManager fm); + } + + public static void startCircularReveal(FragmentManager fm, Point touchPoint, + OnCircularRevealCompleteListener listener) { + if (fm.findFragmentByTag(TAG) == null) { + fm.beginTransaction().add(R.id.main, + new CircularRevealFragment(touchPoint, listener), TAG) + .commitAllowingStateLoss(); + } else { + Log.w(TAG, "An instance of CircularRevealFragment already exists"); + } + } + + public static void endCircularReveal(FragmentManager fm) { + final Fragment fragment = fm.findFragmentByTag(TAG); + if (fragment != null) { + fm.beginTransaction().remove(fragment).commitAllowingStateLoss(); + } + } + + /** + * Empty constructor used only by the {@link FragmentManager}. + */ + public CircularRevealFragment() {} + + public CircularRevealFragment(Point touchPoint, OnCircularRevealCompleteListener listener) { + mTouchPoint = touchPoint; + mListener = listener; + } + + @Override + public void onResume() { + super.onResume(); + if (!mAnimationStarted) { + // Only run the animation once for each instance of the fragment + startOutgoingAnimation(InCallPresenter.getInstance().getThemeColors()); + } + mAnimationStarted = true; + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + return inflater.inflate(R.layout.outgoing_call_animation, container, false); + } + + public void startOutgoingAnimation(MaterialPalette palette) { + final Activity activity = getActivity(); + if (activity == null) { + Log.w(this, "Asked to do outgoing call animation when not attached"); + return; + } + + final View view = activity.getWindow().getDecorView(); + + // The circle starts from an initial size of 0 so clip it such that it is invisible. + // Otherwise the first frame is drawn with a fully opaque screen which causes jank. When + // the animation later starts, this clip will be clobbered by the circular reveal clip. + // See ViewAnimationUtils.createCircularReveal. + view.setOutlineProvider(new ViewOutlineProvider() { + @Override + public void getOutline(View view, Outline outline) { + // Using (0, 0, 0, 0) will not work since the outline will simply be treated as + // an empty outline. + outline.setOval(-1, -1, 0, 0); + } + }); + view.setClipToOutline(true); + + if (palette != null) { + view.findViewById(R.id.outgoing_call_animation_circle).setBackgroundColor( + palette.mPrimaryColor); + activity.getWindow().setStatusBarColor(palette.mSecondaryColor); + } + + view.getViewTreeObserver().addOnPreDrawListener(new OnPreDrawListener() { + @Override + public boolean onPreDraw() { + final ViewTreeObserver vto = view.getViewTreeObserver(); + if (vto.isAlive()) { + vto.removeOnPreDrawListener(this); + } + final Animator animator = getRevealAnimator(mTouchPoint); + animator.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + view.setClipToOutline(false); + if (mListener != null) { + mListener.onCircularRevealComplete(getFragmentManager()); + } + } + }); + animator.start(); + return false; + } + }); + } + + private Animator getRevealAnimator(Point touchPoint) { + final Activity activity = getActivity(); + final View view = activity.getWindow().getDecorView(); + final Display display = activity.getWindowManager().getDefaultDisplay(); + final Point size = new Point(); + display.getSize(size); + + int startX = size.x / 2; + int startY = size.y / 2; + if (touchPoint != null) { + startX = touchPoint.x; + startY = touchPoint.y; + } + + final Animator valueAnimator = ViewAnimationUtils.createCircularReveal(view, + startX, startY, 0, Math.max(size.x, size.y)); + valueAnimator.setDuration(getResources().getInteger(R.integer.reveal_animation_duration)); + return valueAnimator; + } +} diff --git a/InCallUI/src/com/android/incallui/ConferenceManagerFragment.java b/InCallUI/src/com/android/incallui/ConferenceManagerFragment.java index 163954b2d..6b232c934 100644 --- a/InCallUI/src/com/android/incallui/ConferenceManagerFragment.java +++ b/InCallUI/src/com/android/incallui/ConferenceManagerFragment.java @@ -29,22 +29,25 @@ import com.android.contacts.common.ContactPhotoManager; import java.util.List; /** - * Fragment for call control buttons + * Fragment that allows the user to manage a conference call. */ public class ConferenceManagerFragment extends BaseFragment<ConferenceManagerPresenter, ConferenceManagerPresenter.ConferenceManagerUi> implements ConferenceManagerPresenter.ConferenceManagerUi { + private static final String KEY_IS_VISIBLE = "key_conference_is_visible"; + private ListView mConferenceParticipantList; private int mActionBarElevation; private ContactPhotoManager mContactPhotoManager; private LayoutInflater mInflater; private ConferenceParticipantListAdapter mConferenceParticipantListAdapter; + private boolean mIsVisible; + private boolean mIsRecreating; @Override ConferenceManagerPresenter createPresenter() { - // having a singleton instance. return new ConferenceManagerPresenter(); } @@ -56,6 +59,10 @@ public class ConferenceManagerFragment @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + if (savedInstanceState != null) { + mIsRecreating = true; + mIsVisible = savedInstanceState.getBoolean(KEY_IS_VISIBLE); + } } @Override @@ -75,15 +82,23 @@ public class ConferenceManagerFragment } @Override - public void onActivityCreated(Bundle savedInstanceState) { - super.onActivityCreated(savedInstanceState); + public void onResume() { + super.onResume(); + if (mIsRecreating) { + onVisibilityChanged(mIsVisible); + } } @Override - public void setVisible(boolean on) { - ActionBar actionBar = getActivity().getActionBar(); + public void onSaveInstanceState(Bundle outState) { + outState.putBoolean(KEY_IS_VISIBLE, mIsVisible); + super.onSaveInstanceState(outState); + } - if (on) { + public void onVisibilityChanged(boolean isVisible) { + mIsVisible = isVisible; + ActionBar actionBar = getActivity().getActionBar(); + if (isVisible) { actionBar.setTitle(R.string.manageConferenceLabel); actionBar.setElevation(mActionBarElevation); actionBar.setHideOffset(0); @@ -91,13 +106,10 @@ public class ConferenceManagerFragment final CallList calls = CallList.getInstance(); getPresenter().init(getActivity(), calls); - getView().setVisibility(View.VISIBLE); // Request focus on the list of participants for accessibility purposes. This ensures // that once the list of participants is shown, the first participant is announced. mConferenceParticipantList.requestFocus(); } else { - getView().setVisibility(View.GONE); - actionBar.setElevation(0); actionBar.setHideOffset(actionBar.getHeight()); } diff --git a/InCallUI/src/com/android/incallui/ConferenceManagerPresenter.java b/InCallUI/src/com/android/incallui/ConferenceManagerPresenter.java index 86fc18ff3..6fb6e5dda 100644 --- a/InCallUI/src/com/android/incallui/ConferenceManagerPresenter.java +++ b/InCallUI/src/com/android/incallui/ConferenceManagerPresenter.java @@ -137,7 +137,6 @@ public class ConferenceManagerPresenter } public interface ConferenceManagerUi extends Ui { - void setVisible(boolean on); boolean isFragmentVisible(); void update(Context context, List<Call> participants, boolean parentCanSeparate); void refreshCall(Call call); diff --git a/InCallUI/src/com/android/incallui/ConferenceParticipantListAdapter.java b/InCallUI/src/com/android/incallui/ConferenceParticipantListAdapter.java index 7825dc1ad..62c1214c7 100644 --- a/InCallUI/src/com/android/incallui/ConferenceParticipantListAdapter.java +++ b/InCallUI/src/com/android/incallui/ConferenceParticipantListAdapter.java @@ -418,7 +418,7 @@ public class ConferenceParticipantListAdapter extends BaseAdapter { numberTypeTextView.setVisibility(View.GONE); } else { numberTextView.setVisibility(View.VISIBLE); - numberTextView.setText(PhoneNumberUtils.ttsSpanAsPhoneNumber(callerNumber)); + numberTextView.setText(PhoneNumberUtils.getPhoneTtsSpannable(callerNumber)); numberTypeTextView.setVisibility(View.VISIBLE); numberTypeTextView.setText(callerNumberType); } diff --git a/InCallUI/src/com/android/incallui/DialpadFragment.java b/InCallUI/src/com/android/incallui/DialpadFragment.java index da3f0cb74..5a02b8b0e 100644 --- a/InCallUI/src/com/android/incallui/DialpadFragment.java +++ b/InCallUI/src/com/android/incallui/DialpadFragment.java @@ -29,13 +29,11 @@ import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; -import android.view.ViewTreeObserver; import android.view.accessibility.AccessibilityManager; import android.widget.EditText; import android.widget.LinearLayout; import android.widget.TextView; -import com.android.contacts.common.util.MaterialColorMapUtils.MaterialPalette; import com.android.phone.common.dialpad.DialpadKeyButton; import com.android.phone.common.dialpad.DialpadView; @@ -83,30 +81,6 @@ public class DialpadFragment extends BaseFragment<DialpadPresenter, DialpadPrese } } - /** - * LinearLayout that always returns true for onHoverEvent callbacks, to fix - * problems with accessibility due to the dialpad overlaying other fragments. - */ - public static class HoverIgnoringLinearLayout extends LinearLayout { - - public HoverIgnoringLinearLayout(Context context) { - super(context); - } - - public HoverIgnoringLinearLayout(Context context, AttributeSet attrs) { - super(context, attrs); - } - - public HoverIgnoringLinearLayout(Context context, AttributeSet attrs, int defStyle) { - super(context, attrs, defStyle); - } - - @Override - public boolean onHoverEvent(MotionEvent event) { - return true; - } - } - private EditText mDtmfDialerField; /** Hash Map to map a view id to a character*/ @@ -445,11 +419,6 @@ public class DialpadFragment extends BaseFragment<DialpadPresenter, DialpadPrese } @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - } - - @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { final View parent = inflater.inflate( @@ -514,7 +483,7 @@ public class DialpadFragment extends BaseFragment<DialpadPresenter, DialpadPrese * @param text Text to set Dialpad EditText to. */ public void setDtmfText(String text) { - mDtmfDialerField.setText(PhoneNumberUtils.ttsSpanAsPhoneNumber(text)); + mDtmfDialerField.setText(PhoneNumberUtils.getPhoneTtsSpannable(text)); } @Override diff --git a/InCallUI/src/com/android/incallui/FragmentDisplayManager.java b/InCallUI/src/com/android/incallui/FragmentDisplayManager.java new file mode 100644 index 000000000..045d999a0 --- /dev/null +++ b/InCallUI/src/com/android/incallui/FragmentDisplayManager.java @@ -0,0 +1,23 @@ +/* + * 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.incallui; + +import android.app.Fragment; + +interface FragmentDisplayManager { + public void onFragmentAttached(Fragment fragment); +} diff --git a/InCallUI/src/com/android/incallui/InCallActivity.java b/InCallUI/src/com/android/incallui/InCallActivity.java index f75c33b23..5a572d583 100644 --- a/InCallUI/src/com/android/incallui/InCallActivity.java +++ b/InCallUI/src/com/android/incallui/InCallActivity.java @@ -18,7 +18,9 @@ package com.android.incallui; import android.app.ActionBar; import android.app.Activity; +import android.app.ActivityManager; import android.app.AlertDialog; +import android.app.Fragment; import android.app.FragmentManager; import android.app.FragmentTransaction; import android.content.Context; @@ -27,14 +29,11 @@ import android.content.DialogInterface.OnClickListener; import android.content.DialogInterface.OnCancelListener; import android.content.Intent; import android.content.res.Configuration; -import android.content.res.Resources; import android.graphics.Point; -import android.net.Uri; import android.os.Bundle; +import android.os.Trace; import android.telecom.DisconnectCause; import android.telecom.PhoneAccountHandle; -import android.telecom.TelecomManager; -import android.telephony.PhoneNumberUtils; import android.text.TextUtils; import android.view.MenuItem; import android.view.animation.Animation; @@ -48,8 +47,6 @@ import android.view.accessibility.AccessibilityEvent; import com.android.phone.common.animation.AnimUtils; import com.android.phone.common.animation.AnimationListenerAdapter; import com.android.contacts.common.interactions.TouchPointManager; -import com.android.contacts.common.util.MaterialColorMapUtils; -import com.android.contacts.common.util.MaterialColorMapUtils.MaterialPalette; import com.android.contacts.common.widget.SelectPhoneAccountDialogFragment; import com.android.contacts.common.widget.SelectPhoneAccountDialogFragment.SelectPhoneAccountListener; import com.android.incallui.Call.State; @@ -59,14 +56,20 @@ import java.util.List; import java.util.Locale; /** - * Phone app "in call" screen. + * Main activity that the user interacts with while in a live call. */ -public class InCallActivity extends Activity { +public class InCallActivity extends Activity implements FragmentDisplayManager { + + public static final String TAG = InCallActivity.class.getSimpleName(); public static final String SHOW_DIALPAD_EXTRA = "InCallActivity.show_dialpad"; public static final String DIALPAD_TEXT_EXTRA = "InCallActivity.dialpad_text"; public static final String NEW_OUTGOING_CALL_EXTRA = "InCallActivity.new_outgoing_call"; - public static final String SHOW_CIRCULAR_REVEAL_EXTRA = "InCallActivity.show_circular_reveal"; + + private static final String TAG_DIALPAD_FRAGMENT = "tag_dialpad_fragment"; + private static final String TAG_CONFERENCE_FRAGMENT = "tag_conference_manager_fragment"; + private static final String TAG_CALLCARD_FRAGMENT = "tag_callcard_fragment"; + private static final String TAG_ANSWER_FRAGMENT = "tag_answer_fragment"; private CallButtonFragment mCallButtonFragment; private CallCardFragment mCallCardFragment; @@ -100,7 +103,7 @@ public class InCallActivity extends Activity { AnimationListenerAdapter mSlideOutListener = new AnimationListenerAdapter() { @Override public void onAnimationEnd(Animation animation) { - showDialpad(false); + showFragment(TAG_DIALPAD_FRAGMENT, false, true); } }; @@ -136,11 +139,8 @@ public class InCallActivity extends Activity { // TODO(klp): Do we need to add this back when prox sensor is not available? // lp.inputFeatures |= WindowManager.LayoutParams.INPUT_FEATURE_DISABLE_USER_ACTIVITY; - // Inflate everything in incall_screen.xml and add it to the screen. setContentView(R.layout.incall_screen); - initializeInCall(); - internalResolveIntent(getIntent()); mCurrentOrientation = getResources().getConfiguration().orientation; @@ -179,6 +179,7 @@ public class InCallActivity extends Activity { @Override protected void onSaveInstanceState(Bundle out) { + // TODO: The dialpad fragment should handle this as part of its own state out.putBoolean(SHOW_DIALPAD_EXTRA, mCallButtonFragment.isDialpadVisible()); if (mDialpadFragment != null) { out.putString(DIALPAD_TEXT_EXTRA, mDialpadFragment.getDtmfText()); @@ -255,37 +256,45 @@ public class InCallActivity extends Activity { } /** + * When fragments have a parent fragment, onAttachFragment is not called on the parent + * activity. To fix this, register our own callback instead that is always called for + * all fragments. + * + * @see {@link BaseFragment#onAttach(Activity)} + */ + @Override + public void onFragmentAttached(Fragment fragment) { + if (fragment instanceof DialpadFragment) { + mDialpadFragment = (DialpadFragment) fragment; + } else if (fragment instanceof AnswerFragment) { + mAnswerFragment = (AnswerFragment) fragment; + } else if (fragment instanceof CallCardFragment) { + mCallCardFragment = (CallCardFragment) fragment; + mChildFragmentManager = mCallCardFragment.getChildFragmentManager(); + } else if (fragment instanceof ConferenceManagerFragment) { + mConferenceManagerFragment = (ConferenceManagerFragment) fragment; + } else if (fragment instanceof CallButtonFragment) { + mCallButtonFragment = (CallButtonFragment) fragment; + } + } + + /** * Returns true when theActivity is in foreground (between onResume and onPause). */ /* package */ boolean isForegroundActivity() { return mIsForegroundActivity; } - private boolean hasPendingErrorDialog() { - return mDialog != null; + private boolean hasPendingDialogs() { + return mDialog != null || (mAnswerFragment != null && mAnswerFragment.hasPendingDialogs()); } - /** - * Dismisses the in-call screen. - * - * We never *really* finish() the InCallActivity, since we don't want to get destroyed and then - * have to be re-created from scratch for the next call. Instead, we just move ourselves to the - * back of the activity stack. - * - * This also means that we'll no longer be reachable via the BACK button (since moveTaskToBack() - * puts us behind the Home app, but the home app doesn't allow the BACK key to move you any - * farther down in the history stack.) - * - * (Since the Phone app itself is never killed, this basically means that we'll keep a single - * InCallActivity instance around for the entire uptime of the device. This noticeably improves - * the UI responsiveness for incoming calls.) - */ @Override public void finish() { Log.i(this, "finish(). Dialog showing: " + (mDialog != null)); // skip finish if we are still showing a dialog. - if (!hasPendingErrorDialog() && !mAnswerFragment.hasPendingDialogs()) { + if (!hasPendingDialogs()) { super.finish(); } } @@ -318,22 +327,23 @@ public class InCallActivity extends Activity { // BACK is also used to exit out of any "special modes" of the // in-call UI: - if (!mConferenceManagerFragment.isVisible() && !mCallCardFragment.isVisible()) { + if ((mConferenceManagerFragment == null || !mConferenceManagerFragment.isVisible()) + && !mCallCardFragment.isVisible()) { return; } if (mDialpadFragment != null && mDialpadFragment.isVisible()) { mCallButtonFragment.displayDialpad(false /* show */, true /* animate */); return; - } else if (mConferenceManagerFragment.isVisible()) { - showConferenceCallManager(false); + } else if (mConferenceManagerFragment != null && mConferenceManagerFragment.isVisible()) { + showConferenceFragment(false); return; } // Always disable the Back key while an incoming call is ringing final Call call = CallList.getInstance().getIncomingCall(); if (call != null) { - Log.d(this, "Consume Back press for an incoming call"); + Log.i(this, "Consume Back press for an incoming call"); return; } @@ -429,13 +439,6 @@ public class InCallActivity extends Activity { // key events to the DTMFDialer's onDialerKeyDown. if (mDialpadFragment != null && mDialpadFragment.isVisible()) { return mDialpadFragment.onDialerKeyDown(event); - - // TODO: If the dialpad isn't currently visible, maybe - // consider automatically bringing it up right now? - // (Just to make sure the user sees the digits widget...) - // But this probably isn't too critical since it's awkward to - // use the hard keyboard while in-call in the first place, - // especially now that the in-call UI is portrait-only... } return false; @@ -465,10 +468,13 @@ public class InCallActivity extends Activity { return mCallCardFragment; } + public AnswerFragment getAnswerFragment() { + return mAnswerFragment; + } + private void internalResolveIntent(Intent intent) { final String action = intent.getAction(); - - if (action.equals(intent.ACTION_MAIN)) { + if (action.equals(Intent.ACTION_MAIN)) { // This action is the normal way to bring up the in-call UI. // // But we do check here for one extra that can come along with the @@ -485,6 +491,7 @@ public class InCallActivity extends Activity { relaunchedFromDialer(showDialpad); } + boolean newOutgoingCall = false; if (intent.getBooleanExtra(NEW_OUTGOING_CALL_EXTRA, false)) { intent.removeExtra(NEW_OUTGOING_CALL_EXTRA); Call call = CallList.getInstance().getOutgoingCall(); @@ -512,12 +519,9 @@ public class InCallActivity extends Activity { } } - // This is only true in the case where an outgoing call is initiated by tapping - // on the "Select account dialog", in which case we skip the initial animation. In - // most other cases the circular reveal is done by OutgoingCallAnimationActivity. - final boolean showCircularReveal = - intent.getBooleanExtra(SHOW_CIRCULAR_REVEAL_EXTRA, false); - mCallCardFragment.animateForNewOutgoingCall(touchPoint, showCircularReveal); + // Start animation for new outgoing call + CircularRevealFragment.startCircularReveal(getFragmentManager(), touchPoint, + InCallPresenter.getInstance()); // InCallActivity is responsible for disconnecting a new outgoing call if there // is no way of making it (i.e. no valid call capable accounts) @@ -526,11 +530,12 @@ public class InCallActivity extends Activity { } dismissKeyguard(true); + newOutgoingCall = true; } Call pendingAccountSelectionCall = CallList.getInstance().getWaitingForAccountCall(); if (pendingAccountSelectionCall != null) { - mCallCardFragment.setVisible(false); + showCallCardFragment(false); Bundle extras = pendingAccountSelectionCall .getTelecommCall().getDetails().getExtras(); @@ -558,8 +563,8 @@ public class InCallActivity extends Activity { SelectPhoneAccountDialogFragment.showAccountDialog(getFragmentManager(), R.string.select_phone_account_for_calls, true, phoneAccountHandles, listener); - } else { - mCallCardFragment.setVisible(true); + } else if (!newOutgoingCall) { + showCallCardFragment(true); } return; @@ -580,40 +585,6 @@ public class InCallActivity extends Activity { } } - private void initializeInCall() { - if (mCallCardFragment == null) { - mCallCardFragment = (CallCardFragment) getFragmentManager() - .findFragmentById(R.id.callCardFragment); - } - - mChildFragmentManager = mCallCardFragment.getChildFragmentManager(); - - if (mCallButtonFragment == null) { - mCallButtonFragment = (CallButtonFragment) mChildFragmentManager - .findFragmentById(R.id.callButtonFragment); - mCallButtonFragment.getView().setVisibility(View.INVISIBLE); - } - - if (mAnswerFragment == null) { - mAnswerFragment = (AnswerFragment) mChildFragmentManager - .findFragmentById(R.id.answerFragment); - } - - if (mConferenceManagerFragment == null) { - mConferenceManagerFragment = (ConferenceManagerFragment) getFragmentManager() - .findFragmentById(R.id.conferenceManagerFragment); - mConferenceManagerFragment.getView().setVisibility(View.INVISIBLE); - } - } - - /** - * Simulates a user click to hide the dialpad. This will update the UI to show the call card, - * update the checked state of the dialpad button, and update the proximity sensor state. - */ - public void hideDialpadForDisconnect() { - mCallButtonFragment.displayDialpad(false /* show */, true /* animate */); - } - public void dismissKeyguard(boolean dismiss) { if (mDismissKeyguard == dismiss) { return; @@ -626,67 +597,134 @@ public class InCallActivity extends Activity { } } - private void showDialpad(boolean showDialpad) { - // If the dialpad is being shown and it has not already been loaded, replace the dialpad - // placeholder with the actual fragment before continuing. - if (mDialpadFragment == null && showDialpad) { - final FragmentTransaction loadTransaction = mChildFragmentManager.beginTransaction(); - View fragmentContainer = findViewById(R.id.dialpadFragmentContainer); - mDialpadFragment = new DialpadFragment(); - loadTransaction.replace(fragmentContainer.getId(), mDialpadFragment, - DialpadFragment.class.getName()); - loadTransaction.commitAllowingStateLoss(); - mChildFragmentManager.executePendingTransactions(); + private void showFragment(String tag, boolean show, boolean executeImmediately) { + Trace.beginSection("showFragment - " + tag); + final FragmentManager fm = getFragmentManagerForTag(tag); + + if (fm == null) { + Log.w(TAG, "Fragment manager is null for : " + tag); + return; } - final FragmentTransaction ft = mChildFragmentManager.beginTransaction(); - if (showDialpad) { - ft.show(mDialpadFragment); + Fragment fragment = fm.findFragmentByTag(tag); + if (!show && fragment == null) { + // Nothing to show, so bail early. + return; + } + + final FragmentTransaction transaction = fm.beginTransaction(); + if (show) { + if (fragment == null) { + fragment = createNewFragmentForTag(tag); + transaction.add(getContainerIdForFragment(tag), fragment, tag); + } else { + transaction.show(fragment); + } } else { - ft.hide(mDialpadFragment); + transaction.hide(fragment); } - ft.commitAllowingStateLoss(); + + transaction.commitAllowingStateLoss(); + if (executeImmediately) { + fm.executePendingTransactions(); + } + Trace.endSection(); } - public void displayDialpad(boolean showDialpad, boolean animate) { + private Fragment createNewFragmentForTag(String tag) { + if (TAG_DIALPAD_FRAGMENT.equals(tag)) { + mDialpadFragment = new DialpadFragment(); + return mDialpadFragment; + } else if (TAG_ANSWER_FRAGMENT.equals(tag)) { + mAnswerFragment = new AnswerFragment(); + return mAnswerFragment; + } else if (TAG_CONFERENCE_FRAGMENT.equals(tag)) { + mConferenceManagerFragment = new ConferenceManagerFragment(); + return mConferenceManagerFragment; + } else if (TAG_CALLCARD_FRAGMENT.equals(tag)) { + mCallCardFragment = new CallCardFragment(); + return mCallCardFragment; + } + throw new IllegalStateException("Unexpected fragment: " + tag); + } + + private FragmentManager getFragmentManagerForTag(String tag) { + if (TAG_DIALPAD_FRAGMENT.equals(tag)) { + return mChildFragmentManager; + } else if (TAG_ANSWER_FRAGMENT.equals(tag)) { + return mChildFragmentManager; + } else if (TAG_CONFERENCE_FRAGMENT.equals(tag)) { + return getFragmentManager(); + } else if (TAG_CALLCARD_FRAGMENT.equals(tag)) { + return getFragmentManager(); + } + throw new IllegalStateException("Unexpected fragment: " + tag); + } + + private int getContainerIdForFragment(String tag) { + if (TAG_DIALPAD_FRAGMENT.equals(tag)) { + return R.id.answer_and_dialpad_container; + } else if (TAG_ANSWER_FRAGMENT.equals(tag)) { + return R.id.answer_and_dialpad_container; + } else if (TAG_CONFERENCE_FRAGMENT.equals(tag)) { + return R.id.main; + } else if (TAG_CALLCARD_FRAGMENT.equals(tag)) { + return R.id.main; + } + throw new IllegalStateException("Unexpected fragment: " + tag); + } + + public void showDialpadFragment(boolean show, boolean animate) { // If the dialpad is already visible, don't animate in. If it's gone, don't animate out. - if ((showDialpad && isDialpadVisible()) || (!showDialpad && !isDialpadVisible())) { + if ((show && isDialpadVisible()) || (!show && !isDialpadVisible())) { return; } // We don't do a FragmentTransaction on the hide case because it will be dealt with when // the listener is fired after an animation finishes. if (!animate) { - showDialpad(showDialpad); + showFragment(TAG_DIALPAD_FRAGMENT, show, true); } else { - if (showDialpad) { - showDialpad(true); + if (show) { + showFragment(TAG_DIALPAD_FRAGMENT, true, true); mDialpadFragment.animateShowDialpad(); } - mCallCardFragment.onDialpadVisiblityChange(showDialpad); - mDialpadFragment.getView().startAnimation(showDialpad ? mSlideIn : mSlideOut); + mCallCardFragment.onDialpadVisibilityChange(show); + mDialpadFragment.getView().startAnimation(show ? mSlideIn : mSlideOut); } - InCallPresenter.getInstance().getProximitySensor().onDialpadVisible(showDialpad); + final ProximitySensor sensor = InCallPresenter.getInstance().getProximitySensor(); + if (sensor != null) { + sensor.onDialpadVisible(show); + } } public boolean isDialpadVisible() { return mDialpadFragment != null && mDialpadFragment.isVisible(); } + public void showCallCardFragment(boolean show) { + showFragment(TAG_CALLCARD_FRAGMENT, show, true); + } + /** * Hides or shows the conference manager fragment. * * @param show {@code true} if the conference manager should be shown, {@code false} if it * should be hidden. */ - public void showConferenceCallManager(boolean show) { - mConferenceManagerFragment.setVisible(show); + public void showConferenceFragment(boolean show) { + showFragment(TAG_CONFERENCE_FRAGMENT, show, true); + mConferenceManagerFragment.onVisibilityChanged(show); // Need to hide the call card fragment to ensure that accessibility service does not try to // give focus to the call card when the conference manager is visible. mCallCardFragment.getView().setVisibility(show ? View.GONE : View.VISIBLE); } + public void showAnswerFragment(boolean show) { + showFragment(TAG_ANSWER_FRAGMENT, show, true); + } + public void showPostCharWaitDialog(String callId, String chars) { if (isForegroundActivity()) { final PostCharDialogFragment fragment = new PostCharDialogFragment(callId, chars); @@ -725,7 +763,9 @@ public class InCallActivity extends Activity { mDialog.dismiss(); mDialog = null; } - mAnswerFragment.dismissPendingDialogues(); + if (mAnswerFragment != null) { + mAnswerFragment.dismissPendingDialogs(); + } } /** diff --git a/InCallUI/src/com/android/incallui/InCallPresenter.java b/InCallUI/src/com/android/incallui/InCallPresenter.java index 7c71d2c86..225b1a259 100644 --- a/InCallUI/src/com/android/incallui/InCallPresenter.java +++ b/InCallUI/src/com/android/incallui/InCallPresenter.java @@ -16,14 +16,13 @@ package com.android.incallui; -import android.app.Activity; +import android.app.FragmentManager; import android.content.Context; import android.content.Intent; import android.content.pm.ActivityInfo; import android.graphics.Point; import android.net.Uri; import android.os.Bundle; -import android.os.Handler; import android.telecom.DisconnectCause; import android.telecom.PhoneAccount; import android.telecom.Phone; @@ -38,6 +37,7 @@ import android.view.View; import com.google.common.base.Preconditions; import com.android.contacts.common.interactions.TouchPointManager; +import com.android.contacts.common.testing.NeededForTesting; import com.android.contacts.common.util.MaterialColorMapUtils.MaterialPalette; import com.android.incalluibind.ObjectFactory; @@ -57,7 +57,8 @@ import java.util.concurrent.CopyOnWriteArrayList; * that want to listen in on the in-call state changes. * TODO: This class has become more of a state machine at this point. Consider renaming. */ -public class InCallPresenter implements CallList.Listener, InCallPhoneListener { +public class InCallPresenter implements CallList.Listener, InCallPhoneListener, + CircularRevealFragment.OnCircularRevealCompleteListener { private static final String EXTRA_FIRST_TIME_SHOWN = "com.android.incallui.intent.extra.FIRST_TIME_SHOWN"; @@ -96,6 +97,17 @@ public class InCallPresenter implements CallList.Listener, InCallPhoneListener { private boolean mServiceConnected = false; private boolean mAccountSelectionCancelled = false; private InCallCameraManager mInCallCameraManager = null; + private AnswerPresenter mAnswerPresenter = new AnswerPresenter(); + + /** + * Whether or not we are currently bound and waiting for Telecom to send us a new call. + */ + private boolean mBoundAndWaitingForOutgoingCall; + /** + * If there is no actual call currently in the call list, this will be used as a fallback + * to determine the theme color for InCallUI. + */ + private PhoneAccountHandle mPendingPhoneAccountHandle; private final Phone.Listener mPhoneListener = new Phone.Listener() { @Override @@ -105,6 +117,9 @@ public class InCallPresenter implements CallList.Listener, InCallPhoneListener { } @Override public void onCallAdded(Phone phone, android.telecom.Call call) { + // Since a call has been added we are no longer waiting for Telecom to send us a + // call. + setBoundAndWaitingForOutgoingCall(false, null); call.addListener(mCallListener); } @Override @@ -123,8 +138,7 @@ public class InCallPresenter implements CallList.Listener, InCallPhoneListener { new android.telecom.Call.Listener() { @Override public void onPostDialWait(android.telecom.Call call, String remainingPostDialSequence) { - onPostDialCharWait( - CallList.getInstance().getCallByTelecommCall(call).getId(), + onPostDialCharWait(mCallList.getCallByTelecommCall(call).getId(), remainingPostDialSequence); } @@ -132,7 +146,7 @@ public class InCallPresenter implements CallList.Listener, InCallPhoneListener { public void onDetailsChanged(android.telecom.Call call, android.telecom.Call.Details details) { for (InCallDetailsListener listener : mDetailsListeners) { - listener.onDetailsChanged(CallList.getInstance().getCallByTelecommCall(call), + listener.onDetailsChanged(mCallList.getCallByTelecommCall(call), details); } } @@ -142,7 +156,7 @@ public class InCallPresenter implements CallList.Listener, InCallPhoneListener { android.telecom.Call call, List<android.telecom.Call> conferenceableCalls) { Log.i(this, "onConferenceableCallsChanged: " + call); for (InCallDetailsListener listener : mDetailsListeners) { - listener.onDetailsChanged(CallList.getInstance().getCallByTelecommCall(call), + listener.onDetailsChanged(mCallList.getCallByTelecommCall(call), call.getDetails()); } } @@ -156,20 +170,6 @@ public class InCallPresenter implements CallList.Listener, InCallPhoneListener { */ private boolean mIsActivityPreviouslyStarted = false; - - /** - * Whether or not to wait for the circular reveal animation to be started, to avoid stopping - * the circular reveal animation activity before the animation is initiated. - */ - private boolean mWaitForRevealAnimationStart = false; - - /** - * Whether or not the CircularRevealAnimationActivity has started. - */ - private boolean mCircularRevealActivityStarted = false; - - private boolean mShowDialpadOnStart = false; - /** * Whether or not InCallService is bound to Telecom. */ @@ -177,8 +177,6 @@ public class InCallPresenter implements CallList.Listener, InCallPhoneListener { private Phone mPhone; - private Handler mHandler = new Handler(); - /** Display colors for the UI. Consists of a primary color and secondary (darker) color */ private MaterialPalette mThemeColors; @@ -191,6 +189,11 @@ public class InCallPresenter implements CallList.Listener, InCallPhoneListener { return sInCallPresenter; } + @NeededForTesting + static synchronized void setInstance(InCallPresenter inCallPresenter) { + sInCallPresenter = inCallPresenter; + } + @Override public void setPhone(Phone phone) { mPhone = phone; @@ -211,7 +214,12 @@ public class InCallPresenter implements CallList.Listener, InCallPhoneListener { return mCallList; } - public void setUp(Context context, CallList callList, AudioModeProvider audioModeProvider) { + public void setUp(Context context, + CallList callList, + AudioModeProvider audioModeProvider, + StatusBarNotifier statusBarNotifier, + ContactInfoCache contactInfoCache, + ProximitySensor proximitySensor) { if (mServiceConnected) { Log.i(this, "New service connection replacing existing one."); // retain the current resources, no need to create new ones. @@ -224,14 +232,14 @@ public class InCallPresenter implements CallList.Listener, InCallPhoneListener { Preconditions.checkNotNull(context); mContext = context; - mContactInfoCache = ContactInfoCache.getInstance(context); + mContactInfoCache = contactInfoCache; - mStatusBarNotifier = new StatusBarNotifier(context, mContactInfoCache); + mStatusBarNotifier = statusBarNotifier; addListener(mStatusBarNotifier); mAudioModeProvider = audioModeProvider; - mProximitySensor = new ProximitySensor(context, mAudioModeProvider); + mProximitySensor = proximitySensor; addListener(mProximitySensor); mCallList = callList; @@ -261,13 +269,6 @@ public class InCallPresenter implements CallList.Listener, InCallPhoneListener { } private void attemptFinishActivity() { - mWaitForRevealAnimationStart = false; - - Context context = mContext != null ? mContext : mInCallActivity; - if (context != null) { - CircularRevealActivity.sendClearDisplayBroadcast(context); - } - final boolean doFinish = (mInCallActivity != null && isActivityStarted()); Log.i(this, "Hide in call UI: " + doFinish); if (doFinish) { @@ -443,11 +444,10 @@ public class InCallPresenter implements CallList.Listener, InCallPhoneListener { */ @Override public void onDisconnect(Call call) { - hideDialpadForDisconnect(); maybeShowErrorDialogOnDisconnect(call); // We need to do the run the same code as onCallListChange. - onCallListChange(CallList.getInstance()); + onCallListChange(mCallList); if (isActivityStarted()) { mInCallActivity.dismissKeyguard(false); @@ -457,7 +457,7 @@ public class InCallPresenter implements CallList.Listener, InCallPhoneListener { /** * Given the call list, return the state in which the in-call screen should be. */ - public static InCallState getPotentialStateFromCallList(CallList callList) { + public InCallState getPotentialStateFromCallList(CallList callList) { InCallState newState = InCallState.NO_CALLS; @@ -479,9 +479,41 @@ public class InCallPresenter implements CallList.Listener, InCallPhoneListener { newState = InCallState.INCALL; } + if (newState == InCallState.NO_CALLS) { + if (mBoundAndWaitingForOutgoingCall) { + return InCallState.OUTGOING; + } + } + return newState; } + public boolean isBoundAndWaitingForOutgoingCall() { + return mBoundAndWaitingForOutgoingCall; + } + + public void setBoundAndWaitingForOutgoingCall(boolean isBound, PhoneAccountHandle handle) { + // NOTE: It is possible for there to be a race and have handle become null before + // the circular reveal starts. This should not cause any problems because CallCardFragment + // should fallback to the actual call in the CallList at that point in time to determine + // the theme color. + Log.i(this, "setBoundAndWaitingForOutgoingCall: " + isBound); + mBoundAndWaitingForOutgoingCall = isBound; + mPendingPhoneAccountHandle = handle; + if (isBound && mInCallState == InCallState.NO_CALLS) { + mInCallState = InCallState.OUTGOING; + } + } + + @Override + public void onCircularRevealComplete(FragmentManager fm) { + if (mInCallActivity != null) { + mInCallActivity.showCallCardFragment(true); + mInCallActivity.getCallCardFragment().animateForNewOutgoingCall(); + CircularRevealFragment.endCircularReveal(mInCallActivity.getFragmentManager()); + } + } + public void addIncomingCallListener(IncomingCallListener listener) { Preconditions.checkNotNull(listener); mIncomingCallListeners.add(listener); @@ -714,8 +746,6 @@ public class InCallPresenter implements CallList.Listener, InCallPhoneListener { if (showing) { mIsActivityPreviouslyStarted = true; - } else { - CircularRevealActivity.sendClearDisplayBroadcast(mContext); } for (InCallUiListener listener : mInCallUiListeners) { @@ -767,7 +797,7 @@ public class InCallPresenter implements CallList.Listener, InCallPhoneListener { /** * INCOMING CALL */ - final CallList calls = CallList.getInstance(); + final CallList calls = mCallList; final Call incomingCall = calls.getIncomingCall(); Log.v(this, "incomingCall: " + incomingCall); @@ -864,15 +894,6 @@ public class InCallPresenter implements CallList.Listener, InCallPhoneListener { } /** - * Hides the dialpad. Called when a call is disconnected (Requires hiding dialpad). - */ - private void hideDialpadForDisconnect() { - if (isActivityStarted()) { - mInCallActivity.hideDialpadForDisconnect(); - } - } - - /** * When the state of in-call changes, this is the first method to get called. It determines if * the UI needs to be started or finished depending on the new state and does it. */ @@ -910,8 +931,9 @@ public class InCallPresenter implements CallList.Listener, InCallPhoneListener { // [ AND NOW YOU'RE IN THE CALL. voila! ] // // Our app is started using a fullScreen notification. We need to do this whenever - // we get an incoming call. - final boolean startStartupSequence = (InCallState.INCOMING == newState); + // we get an incoming call. Depending on the current context of the device, either a + // incoming call HUN or the actual InCallActivity will be shown. + final boolean startIncomingCallSequence = (InCallState.INCOMING == newState); // A dialog to show on top of the InCallUI to select a PhoneAccount final boolean showAccountPicker = (InCallState.WAITING_FOR_ACCOUNT == newState); @@ -944,7 +966,7 @@ public class InCallPresenter implements CallList.Listener, InCallPhoneListener { // machine. Telecom should also be the component responsible for disconnecting a call // with no valid accounts. showCallUi |= InCallState.PENDING_OUTGOING == newState && mainUiNotVisible - && isCallWithNoValidAccounts(CallList.getInstance().getPendingOutgoingCall()); + && isCallWithNoValidAccounts(mCallList.getPendingOutgoingCall()); // The only time that we have an instance of mInCallActivity and it isn't started is // when it is being destroyed. In that case, lets avoid bringing up another instance of @@ -959,7 +981,7 @@ public class InCallPresenter implements CallList.Listener, InCallPhoneListener { if (showCallUi || showAccountPicker) { Log.i(this, "Start in call UI"); showInCall(false /* showDialpad */, !showAccountPicker /* newOutgoingCall */); - } else if (startStartupSequence) { + } else if (startIncomingCallSequence) { Log.i(this, "Start Full Screen in call UI"); // We're about the bring up the in-call UI for an incoming call. If we still have @@ -993,7 +1015,7 @@ public class InCallPresenter implements CallList.Listener, InCallPhoneListener { */ public static boolean isCallWithNoValidAccounts(Call call) { if (call != null && !isEmergencyCall(call)) { - Bundle extras = call.getTelecommCall().getDetails().getExtras(); + Bundle extras = call.getExtras(); if (extras == null) { extras = EMPTY_EXTRAS; @@ -1125,41 +1147,8 @@ public class InCallPresenter implements CallList.Listener, InCallPhoneListener { } public void showInCall(final boolean showDialpad, final boolean newOutgoingCall) { - if (mCircularRevealActivityStarted) { - mWaitForRevealAnimationStart = true; - mShowDialpadOnStart = showDialpad; - Log.i(this, "Waiting for circular reveal completion to show InCallActivity"); - } else { - Log.i(this, "Showing InCallActivity immediately"); - mContext.startActivity(getInCallIntent(showDialpad, newOutgoingCall, - newOutgoingCall /* showCircularReveal */)); - } - } - - public void onCircularRevealStarted(final Activity activity) { - mCircularRevealActivityStarted = false; - if (mWaitForRevealAnimationStart) { - mWaitForRevealAnimationStart = false; - mHandler.post(new Runnable() { - @Override - public void run() { - if (mContext == null) { - Log.e(this, "Setup did not occur before showing the InCallActivity."); - activity.finish(); - return; - } - - Log.i(this, "Showing InCallActivity after circular reveal"); - final Intent intent = - getInCallIntent(mShowDialpadOnStart, true, false, false); - activity.startActivity(intent); - mShowDialpadOnStart = false; - } - }); - } else if (!mServiceBound) { - CircularRevealActivity.sendClearDisplayBroadcast(mContext); - return; - } + Log.i(this, "Showing InCallActivity"); + mContext.startActivity(getInCallIntent(showDialpad, newOutgoingCall)); } public void onServiceBind() { @@ -1167,6 +1156,7 @@ public class InCallPresenter implements CallList.Listener, InCallPhoneListener { } public void onServiceUnbind() { + InCallPresenter.getInstance().setBoundAndWaitingForOutgoingCall(false, null); mServiceBound = false; } @@ -1191,43 +1181,26 @@ public class InCallPresenter implements CallList.Listener, InCallPhoneListener { final PhoneAccountHandle accountHandle = intent.getParcelableExtra(TelecomManager.EXTRA_PHONE_ACCOUNT_HANDLE); - final MaterialPalette colors = getColorsFromPhoneAccountHandle(accountHandle); final Point touchPoint = extras.getParcelable(TouchPointManager.TOUCH_POINT); - mCircularRevealActivityStarted = true; - mContext.startActivity(getAnimationIntent(touchPoint, colors)); - } - - private Intent getAnimationIntent(Point touchPoint, MaterialPalette palette) { - final Intent intent = new Intent(mContext, CircularRevealActivity.class); - intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK - | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS - | Intent.FLAG_ACTIVITY_NO_USER_ACTION); - intent.putExtra(TouchPointManager.TOUCH_POINT, touchPoint); - intent.putExtra(CircularRevealActivity.EXTRA_THEME_COLORS, palette); - return intent; - } + InCallPresenter.getInstance().setBoundAndWaitingForOutgoingCall(true, accountHandle); - public Intent getInCallIntent(boolean showDialpad, boolean newOutgoingCall, - boolean showCircularReveal) { - return getInCallIntent(showDialpad, newOutgoingCall, showCircularReveal, true); + final Intent incallIntent = getInCallIntent(false, true); + incallIntent.putExtra(TouchPointManager.TOUCH_POINT, touchPoint); + mContext.startActivity(incallIntent); } - public Intent getInCallIntent(boolean showDialpad, boolean newOutgoingCall, - boolean showCircularReveal, boolean newTask) { + public Intent getInCallIntent(boolean showDialpad, boolean newOutgoingCall) { final Intent intent = new Intent(Intent.ACTION_MAIN, null); intent.setFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS - | Intent.FLAG_ACTIVITY_NO_USER_ACTION); - if (newTask) { - intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - } + | Intent.FLAG_ACTIVITY_NO_USER_ACTION + | Intent.FLAG_ACTIVITY_NEW_TASK); intent.setClass(mContext, InCallActivity.class); if (showDialpad) { intent.putExtra(InCallActivity.SHOW_DIALPAD_EXTRA, true); } intent.putExtra(InCallActivity.NEW_OUTGOING_CALL_EXTRA, newOutgoingCall); - intent.putExtra(InCallActivity.SHOW_CIRCULAR_REVEAL_EXTRA, showCircularReveal); return intent; } @@ -1292,6 +1265,10 @@ public class InCallPresenter implements CallList.Listener, InCallPhoneListener { * and landscape. {@Code False} if the in-call UI should be locked in portrait. */ public void setInCallAllowsOrientationChange(boolean allowOrientationChange) { + if (mInCallActivity == null) { + return; + } + if (!allowOrientationChange) { mInCallActivity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR); } else { @@ -1305,7 +1282,10 @@ public class InCallPresenter implements CallList.Listener, InCallPhoneListener { * @return The space beside the call card. */ public float getSpaceBesideCallCard() { - return mInCallActivity.getCallCardFragment().getSpaceBesideCallCard(); + if (mInCallActivity != null && mInCallActivity.getCallCardFragment() != null) { + return mInCallActivity.getCallCardFragment().getSpaceBesideCallCard(); + } + return 0; } /** @@ -1314,7 +1294,7 @@ public class InCallPresenter implements CallList.Listener, InCallPhoneListener { * @return True if the call card fragment is visible. */ public boolean getCallCardFragmentVisible() { - if (mInCallActivity != null) { + if (mInCallActivity != null && mInCallActivity.getCallCardFragment() != null) { return mInCallActivity.getCallCardFragment().isVisible(); } return false; @@ -1331,7 +1311,7 @@ public class InCallPresenter implements CallList.Listener, InCallPhoneListener { return; } - mInCallActivity.showConferenceCallManager(show); + mInCallActivity.showConferenceFragment(show); } /** @@ -1348,7 +1328,7 @@ public class InCallPresenter implements CallList.Listener, InCallPhoneListener { */ public void setThemeColors() { // This method will set the background to default if the color is PhoneAccount.NO_COLOR. - mThemeColors = getColorsFromCall(CallList.getInstance().getFirstCall()); + mThemeColors = getColorsFromCall(mCallList.getFirstCall()); if (mInCallActivity == null) { return; @@ -1365,7 +1345,11 @@ public class InCallPresenter implements CallList.Listener, InCallPhoneListener { } private MaterialPalette getColorsFromCall(Call call) { - return getColorsFromPhoneAccountHandle(call == null ? null : call.getAccountHandle()); + if (call == null) { + return getColorsFromPhoneAccountHandle(mPendingPhoneAccountHandle); + } else { + return getColorsFromPhoneAccountHandle(call.getAccountHandle()); + } } private MaterialPalette getColorsFromPhoneAccountHandle(PhoneAccountHandle phoneAccountHandle) { @@ -1397,10 +1381,20 @@ public class InCallPresenter implements CallList.Listener, InCallPhoneListener { return mTelecomManager; } + InCallActivity getActivity() { + return mInCallActivity; + } + + AnswerPresenter getAnswerPresenter() { + return mAnswerPresenter; + } + /** * Private constructor. Must use getInstance() to get this singleton. */ private InCallPresenter() { + addIncomingCallListener(mAnswerPresenter); + addInCallUiListener(mAnswerPresenter); } /** diff --git a/InCallUI/src/com/android/incallui/InCallServiceImpl.java b/InCallUI/src/com/android/incallui/InCallServiceImpl.java index 17f4e174d..adb069784 100644 --- a/InCallUI/src/com/android/incallui/InCallServiceImpl.java +++ b/InCallUI/src/com/android/incallui/InCallServiceImpl.java @@ -16,6 +16,7 @@ package com.android.incallui; +import android.content.Context; import android.content.Intent; import android.os.IBinder; import android.telecom.InCallService; @@ -53,10 +54,16 @@ public class InCallServiceImpl extends InCallService { @Override public IBinder onBind(Intent intent) { + final Context context = getApplicationContext(); + final ContactInfoCache contactInfoCache = ContactInfoCache.getInstance(context); InCallPresenter.getInstance().setUp( getApplicationContext(), CallList.getInstance(), - AudioModeProvider.getInstance()); + AudioModeProvider.getInstance(), + new StatusBarNotifier(context, contactInfoCache), + contactInfoCache, + new ProximitySensor(context, AudioModeProvider.getInstance()) + ); InCallPresenter.getInstance().onServiceBind(); InCallPresenter.getInstance().maybeStartRevealAnimation(intent); return super.onBind(intent); diff --git a/InCallUI/src/com/android/incallui/InCallUIMaterialColorMapUtils.java b/InCallUI/src/com/android/incallui/InCallUIMaterialColorMapUtils.java index 1f61070ed..d65580efe 100644 --- a/InCallUI/src/com/android/incallui/InCallUIMaterialColorMapUtils.java +++ b/InCallUI/src/com/android/incallui/InCallUIMaterialColorMapUtils.java @@ -45,8 +45,8 @@ public class InCallUIMaterialColorMapUtils extends MaterialColorMapUtils { } public static MaterialPalette getDefaultPrimaryAndSecondaryColors(Resources resources) { - final int primaryColor = resources.getColor(R.color.dialer_theme_color); - final int secondaryColor = resources.getColor(R.color.dialer_theme_color_dark); + final int primaryColor = resources.getColor(R.color.dialer_theme_color, null); + final int secondaryColor = resources.getColor(R.color.dialer_theme_color_dark, null); return new MaterialPalette(primaryColor, secondaryColor); } }
\ No newline at end of file diff --git a/InCallUI/src/com/android/incallui/InCallVideoCallListener.java b/InCallUI/src/com/android/incallui/InCallVideoCallListener.java index 245fc7316..4ba2bd993 100644 --- a/InCallUI/src/com/android/incallui/InCallVideoCallListener.java +++ b/InCallUI/src/com/android/incallui/InCallVideoCallListener.java @@ -135,7 +135,9 @@ public class InCallVideoCallListener extends VideoCall.Listener { */ @Override public void onCameraCapabilitiesChanged(CameraCapabilities cameraCapabilities) { - InCallVideoCallListenerNotifier.getInstance().cameraDimensionsChanged( - mCall, cameraCapabilities.getWidth(), cameraCapabilities.getHeight()); + if (cameraCapabilities != null) { + InCallVideoCallListenerNotifier.getInstance().cameraDimensionsChanged( + mCall, cameraCapabilities.getWidth(), cameraCapabilities.getHeight()); + } } } diff --git a/InCallUI/src/com/android/incallui/PostCharDialogFragment.java b/InCallUI/src/com/android/incallui/PostCharDialogFragment.java index e1edbc75b..09b626a92 100644 --- a/InCallUI/src/com/android/incallui/PostCharDialogFragment.java +++ b/InCallUI/src/com/android/incallui/PostCharDialogFragment.java @@ -62,7 +62,6 @@ public class PostCharDialogFragment extends DialogFragment { }); final AlertDialog dialog = builder.create(); - dialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND); return dialog; } diff --git a/InCallUI/src/com/android/incallui/SmallerHitTargetTouchListener.java b/InCallUI/src/com/android/incallui/SmallerHitTargetTouchListener.java deleted file mode 100644 index 83feaf54a..000000000 --- a/InCallUI/src/com/android/incallui/SmallerHitTargetTouchListener.java +++ /dev/null @@ -1,114 +0,0 @@ -/* - * Copyright (C) 2012 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.view.MotionEvent; -import android.view.View; - -/** - * OnTouchListener used to shrink the "hit target" of some onscreen buttons. - * - * We do this for a few specific buttons which are vulnerable to - * "false touches" because either (1) they're near the edge of the - * screen and might be unintentionally touched while holding the - * device in your hand, (2) they're in the upper corners and might - * be touched by the user's ear before the prox sensor has a chance to - * kick in, or (3) they are close to other buttons. - */ -public class SmallerHitTargetTouchListener implements View.OnTouchListener { - private static final String TAG = "SmallerHitTargetTouchListener"; - - /** - * Edge dimensions where a touch does not register an action (in DIP). - */ - private static final int HIT_TARGET_EDGE_IGNORE_DP_X = 30; - private static final int HIT_TARGET_EDGE_IGNORE_DP_Y = 10; - private static final int HIT_TARGET_MIN_SIZE_DP_X = HIT_TARGET_EDGE_IGNORE_DP_X * 3; - private static final int HIT_TARGET_MIN_SIZE_DP_Y = HIT_TARGET_EDGE_IGNORE_DP_Y * 3; - - // True if the most recent DOWN event was a "hit". - boolean mDownEventHit; - - /** - * Called when a touch event is dispatched to a view. This allows listeners to - * get a chance to respond before the target view. - * - * @return True if the listener has consumed the event, false otherwise. - * (In other words, we return true when the touch is *outside* - * the "smaller hit target", which will prevent the actual - * button from handling these events.) - */ - @Override - public boolean onTouch(View v, MotionEvent event) { - // if (DBG) log("SmallerHitTargetTouchListener: " + v + ", event " + event); - - if (event.getAction() == MotionEvent.ACTION_DOWN) { - // Note that event.getX() and event.getY() are already - // translated into the View's coordinates. (In other words, - // "0,0" is a touch on the upper-left-most corner of the view.) - final int touchX = (int) event.getX(); - final int touchY = (int) event.getY(); - - final int viewWidth = v.getWidth(); - final int viewHeight = v.getHeight(); - - final float pixelDensity = v.getResources().getDisplayMetrics().density; - final int targetMinSizeX = (int) (HIT_TARGET_MIN_SIZE_DP_X * pixelDensity); - final int targetMinSizeY = (int) (HIT_TARGET_MIN_SIZE_DP_Y * pixelDensity); - - int edgeIgnoreX = (int) (HIT_TARGET_EDGE_IGNORE_DP_X * pixelDensity); - int edgeIgnoreY = (int) (HIT_TARGET_EDGE_IGNORE_DP_Y * pixelDensity); - - // If we are dealing with smaller buttons where the dead zone defined by - // HIT_TARGET_EDGE_IGNORE_DP_[X|Y] is too large. - if (viewWidth < targetMinSizeX || viewHeight < targetMinSizeY) { - // This really should not happen given our two use cases (as of this writing) - // in the call edge button and secondary calling card. However, we leave - // this is as a precautionary measure. - Log.w(TAG, "onTouch: view is too small for SmallerHitTargetTouchListener"); - edgeIgnoreX = 0; - edgeIgnoreY = 0; - } - - final int minTouchX = edgeIgnoreX; - final int maxTouchX = viewWidth - edgeIgnoreX; - final int minTouchY = edgeIgnoreY; - final int maxTouchY = viewHeight - edgeIgnoreY; - - if (touchX < minTouchX || touchX > maxTouchX || - touchY < minTouchY || touchY > maxTouchY) { - // Missed! - // if (DBG) log(" -> MISSED!"); - mDownEventHit = false; - return true; // Consume this event; don't let the button see it - } else { - // Hit! - // if (DBG) log(" -> HIT!"); - mDownEventHit = true; - return false; // Let this event through to the actual button - } - } else { - // This is a MOVE, UP or CANCEL event. - // - // We only do the "smaller hit target" check on DOWN events. - // For the subsequent MOVE/UP/CANCEL events, we let them - // through to the actual button IFF the previous DOWN event - // got through to the actual button (i.e. it was a "hit".) - return !mDownEventHit; - } - } -} diff --git a/InCallUI/src/com/android/incallui/StatusBarNotifier.java b/InCallUI/src/com/android/incallui/StatusBarNotifier.java index 006339ce1..c5a0b7f4c 100644 --- a/InCallUI/src/com/android/incallui/StatusBarNotifier.java +++ b/InCallUI/src/com/android/incallui/StatusBarNotifier.java @@ -641,8 +641,7 @@ public class StatusBarNotifier implements InCallPresenter.InCallStateListener { private PendingIntent createLaunchPendingIntent() { final Intent intent = InCallPresenter.getInstance().getInCallIntent( - false /* showDialpad */, false /* newOutgoingCall */, - false /* showCircularReveal */); + false /* showDialpad */, false /* newOutgoingCall */); // PendingIntent that can be used to launch the InCallActivity. The // system fires off this intent if the user pulls down the windowshade diff --git a/InCallUI/src/com/android/incallui/VideoCallFragment.java b/InCallUI/src/com/android/incallui/VideoCallFragment.java index 7859a17bc..2b0ddd534 100644 --- a/InCallUI/src/com/android/incallui/VideoCallFragment.java +++ b/InCallUI/src/com/android/incallui/VideoCallFragment.java @@ -34,6 +34,8 @@ import android.view.ViewTreeObserver; */ public class VideoCallFragment extends BaseFragment<VideoCallPresenter, VideoCallPresenter.VideoCallUi> implements VideoCallPresenter.VideoCallUi { + private static final String TAG = VideoCallFragment.class.getSimpleName(); + private static final boolean DEBUG = false; /** * Used to indicate that the surface dimensions are not set. @@ -138,6 +140,14 @@ public class VideoCallFragment extends BaseFragment<VideoCallPresenter, * @param view The {@link TextureView}. */ public void recreateView(TextureView view) { + if (DEBUG) { + Log.i(TAG, "recreateView: " + view); + } + + if (mTextureView == view) { + return; + } + mTextureView = view; mTextureView.setSurfaceTextureListener(this); mTextureView.setOnClickListener(this); @@ -159,6 +169,9 @@ public class VideoCallFragment extends BaseFragment<VideoCallPresenter, public void onSurfaceTextureAvailable(SurfaceTexture surfaceTexture, int width, int height) { boolean surfaceCreated; + if (DEBUG) { + Log.i(TAG, "onSurfaceTextureAvailable: " + surfaceTexture); + } // Where there is no saved {@link SurfaceTexture} available, use the newly created one. // If a saved {@link SurfaceTexture} is available, we are re-creating after an // orientation change. @@ -330,33 +343,10 @@ public class VideoCallFragment extends BaseFragment<VideoCallPresenter, @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - super.onCreateView(inflater, container, savedInstanceState); final View view = inflater.inflate(R.layout.video_call_fragment, container, false); - // Attempt to center the incoming video view, if it is in the layout. - final ViewTreeObserver observer = view.getViewTreeObserver(); - observer.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { - @Override - public void onGlobalLayout() { - // Check if the layout includes the incoming video surface -- this will only be the - // case for a video call. - View displayVideo = view.findViewById(R.id.incomingVideo); - if (displayVideo != null) { - centerDisplayView(displayVideo); - } - - mIsLayoutComplete = true; - - // Remove the listener so we don't continually re-layout. - ViewTreeObserver observer = view.getViewTreeObserver(); - if (observer.isAlive()) { - observer.removeOnGlobalLayoutListener(this); - } - } - }); - return view; } @@ -375,7 +365,6 @@ public class VideoCallFragment extends BaseFragment<VideoCallPresenter, // In a right-to-left locale, the space for the video view is to the left of the call card // so we need to translate it in the -X direction. final boolean isLayoutRtl = InCallPresenter.isRtl(); - float spaceBesideCallCard = InCallPresenter.getInstance().getSpaceBesideCallCard(); if (mIsLandscape) { float videoViewTranslation = displayVideo.getWidth() / 2 @@ -564,6 +553,27 @@ public class VideoCallFragment extends BaseFragment<VideoCallPresenter, sPreviewSurface.recreateView((TextureView) mVideoViews.findViewById( R.id.previewVideo)); } + + // Attempt to center the incoming video view, if it is in the layout. + final ViewTreeObserver observer = mVideoViews.getViewTreeObserver(); + observer.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { + @Override + public void onGlobalLayout() { + // Check if the layout includes the incoming video surface -- this will only be the + // case for a video call. + View displayVideo = mVideoViews.findViewById(R.id.incomingVideo); + if (displayVideo != null) { + centerDisplayView(displayVideo); + } + mIsLayoutComplete = true; + + // Remove the listener so we don't continually re-layout. + ViewTreeObserver observer = mVideoViews.getViewTreeObserver(); + if (observer.isAlive()) { + observer.removeOnGlobalLayoutListener(this); + } + } + }); } } diff --git a/InCallUI/src/com/android/incallui/VideoCallPresenter.java b/InCallUI/src/com/android/incallui/VideoCallPresenter.java index 38d7c9556..d63c6e8b1 100644 --- a/InCallUI/src/com/android/incallui/VideoCallPresenter.java +++ b/InCallUI/src/com/android/incallui/VideoCallPresenter.java @@ -62,6 +62,10 @@ public class VideoCallPresenter extends Presenter<VideoCallPresenter.VideoCallUi InCallDetailsListener, SurfaceChangeListener, VideoEventListener, InCallVideoCallListenerNotifier.SessionModificationListener { + private static final String TAG = VideoCallPresenter.class.getSimpleName(); + + public static final boolean DEBUG = false; + /** * Determines the device orientation (portrait/lanscape). */ @@ -213,6 +217,9 @@ public class VideoCallPresenter extends Presenter<VideoCallPresenter.VideoCallUi * @param surface The surface which was created. */ public void onSurfaceCreated(int surface) { + if (DEBUG) { + Log.i(TAG, "onSurfaceCreated: " + surface); + } final VideoCallUi ui = getUi(); if (ui == null || mVideoCall == null) { @@ -402,6 +409,9 @@ public class VideoCallPresenter extends Presenter<VideoCallPresenter.VideoCallUi * TODO(vt): Need to adjust size and orientation of preview surface here. */ private void enterVideoMode() { + if (DEBUG) { + Log.i(TAG, "enterVideoMode"); + } VideoCallUi ui = getUi(); if (ui == null) { return; @@ -424,7 +434,9 @@ public class VideoCallPresenter extends Presenter<VideoCallPresenter.VideoCallUi getInCallCameraManager(); mVideoCall.setCamera(cameraManager.getActiveCameraId()); mVideoCall.requestCameraCapabilities(); - + if (DEBUG) { + Log.i(TAG, "isDisplayVideoSurfacedCreated: " + ui.isDisplayVideoSurfaceCreated()); + } if (ui.isDisplayVideoSurfaceCreated()) { mVideoCall.setDisplaySurface(ui.getDisplayVideoSurface()); } diff --git a/InCallUI/src/com/android/incallui/widget/multiwaveview/GlowPadView.java b/InCallUI/src/com/android/incallui/widget/multiwaveview/GlowPadView.java index fe008f3df..812e883c0 100644 --- a/InCallUI/src/com/android/incallui/widget/multiwaveview/GlowPadView.java +++ b/InCallUI/src/com/android/incallui/widget/multiwaveview/GlowPadView.java @@ -881,7 +881,7 @@ public class GlowPadView extends View { // tx and ty are relative to wave center float tx = eventX - mWaveCenterX; float ty = eventY - mWaveCenterY; - float touchRadius = (float) Math.sqrt(dist2(tx, ty)); + float touchRadius = (float) Math.hypot(tx, ty); final float scale = touchRadius > mOuterRadius ? mOuterRadius / touchRadius : 1.0f; float limitX = tx * scale; float limitY = ty * scale; diff --git a/InCallUI/src/com/android/incallui/widget/multiwaveview/PointCloud.java b/InCallUI/src/com/android/incallui/widget/multiwaveview/PointCloud.java index 77aac2bda..07a2cb964 100644 --- a/InCallUI/src/com/android/incallui/widget/multiwaveview/PointCloud.java +++ b/InCallUI/src/com/android/incallui/widget/multiwaveview/PointCloud.java @@ -20,7 +20,6 @@ import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.drawable.Drawable; -import android.util.FloatMath; import android.util.Log; import java.util.ArrayList; @@ -151,8 +150,8 @@ public class PointCloud { float eta = PI/2.0f; float dEta = 2.0f * PI / pointsInBand; for (int i = 0; i < pointsInBand; i++) { - float x = r * FloatMath.cos(eta); - float y = r * FloatMath.sin(eta); + float x = r * (float) Math.cos(eta); + float y = r * (float) Math.sin(eta); eta += dEta; mPointCloud.add(new Point(x, y, r)); } @@ -168,7 +167,7 @@ public class PointCloud { } private static float hypot(float x, float y) { - return FloatMath.sqrt(x*x + y*y); + return (float) Math.hypot(x, y); } private static float max(float a, float b) { @@ -181,8 +180,8 @@ public class PointCloud { float glowAlpha = 0.0f; if (glowDistance < glowManager.radius) { - float cosf = FloatMath.cos(PI * 0.25f * glowDistance / glowManager.radius); - glowAlpha = glowManager.alpha * max(0.0f, (float) Math.pow(cosf, 10.0f)); + double cos = Math.cos(Math.PI * 0.25d * glowDistance / glowManager.radius); + glowAlpha = glowManager.alpha * max(0.0f, (float) Math.pow(cos, 10.0d)); } // Compute contribution from Wave @@ -190,8 +189,8 @@ public class PointCloud { float distanceToWaveRing = (radius - waveManager.radius); float waveAlpha = 0.0f; if (distanceToWaveRing < waveManager.width * 0.5f && distanceToWaveRing < 0.0f) { - float cosf = FloatMath.cos(PI * 0.25f * distanceToWaveRing / waveManager.width); - waveAlpha = waveManager.alpha * max(0.0f, (float) Math.pow(cosf, 20.0f)); + double cos = Math.cos(Math.PI * 0.25d * distanceToWaveRing / waveManager.width); + waveAlpha = waveManager.alpha * max(0.0f, (float) Math.pow(cos, 20.0d)); } return (int) (max(glowAlpha, waveAlpha) * 255); diff --git a/InCallUI/tests/src/com/android/incallui/CallerInfoUtilsTest.java b/InCallUI/tests/src/com/android/incallui/CallerInfoUtilsTest.java new file mode 100644 index 000000000..5baabce1b --- /dev/null +++ b/InCallUI/tests/src/com/android/incallui/CallerInfoUtilsTest.java @@ -0,0 +1,29 @@ +/* + * 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.incallui; + +import android.test.AndroidTestCase; + +public class CallerInfoUtilsTest extends AndroidTestCase { + public void testToLogSafeNumber_email() { + assertEquals("xxx@xxx.xxx", CallerInfoUtils.toLogSafePhoneNumber("foo@foo.com")); + } + + public void testToLogSafeNumber_phoneNumber() { + assertEquals("xxx-xxx-xxxx", CallerInfoUtils.toLogSafePhoneNumber("123-456-6789")); + } +} diff --git a/InCallUI/tests/src/com/android/incallui/InCallPresenterTest.java b/InCallUI/tests/src/com/android/incallui/InCallPresenterTest.java new file mode 100644 index 000000000..55ab1e1dd --- /dev/null +++ b/InCallUI/tests/src/com/android/incallui/InCallPresenterTest.java @@ -0,0 +1,213 @@ +/* + * 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.incallui; + +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +import android.content.Context; +import android.content.Intent; +import android.telecom.PhoneAccountHandle; +import android.test.InstrumentationTestCase; + +import com.android.incallui.InCallPresenter.InCallState; + +import org.mockito.Mock; +import org.mockito.Mockito; +import org.mockito.MockitoAnnotations; + +public class InCallPresenterTest extends InstrumentationTestCase { + private Call mIncomingCall; + private Call mActiveCall; + private Call mConnectingCall; + private Call mWaitingForAccountsCall; + private Call mDisconnectedCall; + + @Mock private InCallActivity mInCallActivity; + @Mock private AudioModeProvider mAudioModeProvider; + @Mock private CallList mCallList; + @Mock private StatusBarNotifier mStatusBarNotifier; + @Mock private ContactInfoCache mContactInfoCache; + @Mock private ProximitySensor mProximitySensor; + + InCallPresenter mInCallPresenter; + @Mock private Context mContext; + + @Override + protected void setUp() throws Exception { + super.setUp(); + System.setProperty("dexmaker.dexcache", + getInstrumentation().getTargetContext().getCacheDir().getPath()); + MockitoAnnotations.initMocks(this); + + mIncomingCall = getMockCall(Call.State.INCOMING); + mActiveCall = getMockCall(Call.State.ACTIVE); + mConnectingCall = getMockCall(Call.State.CONNECTING); + mWaitingForAccountsCall = getMockCall(Call.State.PRE_DIAL_WAIT, false); + mDisconnectedCall = getMockCall(Call.State.DISCONNECTED); + + mInCallPresenter = InCallPresenter.getInstance(); + mInCallPresenter.setUp(mContext, mCallList, mAudioModeProvider, mStatusBarNotifier, + mContactInfoCache, mProximitySensor); + } + + @Override + protected void tearDown() throws Exception { + // The tear down method needs to run in the main thread since there is an explicit check + // inside TelecomAdapter.getInstance(). + getInstrumentation().runOnMainSync(new Runnable() { + @Override + public void run() { + mInCallPresenter.unsetActivity(mInCallActivity); + mInCallPresenter.tearDown(); + InCallPresenter.setInstance(null); + } + }); + } + + public void testOnActivitySet_finishesActivityWhenNoCalls() { + mInCallPresenter.setActivity(mInCallActivity); + + verify(mInCallActivity).finish(); + } + + public void testOnCallListChange_sendsNotificationWhenInCall() { + when(mCallList.getIncomingCall()).thenReturn(mIncomingCall); + + mInCallPresenter.onCallListChange(mCallList); + + verify(mStatusBarNotifier).updateNotification(InCallState.INCOMING, mCallList); + verifyInCallActivityNotStarted(); + } + + /** + * This behavior is required to ensure that the screen is turned on again by the restarting + * activity. + */ + public void testOnCallListChange_handlesCallWaitingWhenScreenOffShouldRestartActivity() { + when(mCallList.getActiveCall()).thenReturn(mActiveCall); + + mInCallPresenter.onCallListChange(mCallList); + mInCallPresenter.setActivity(mInCallActivity); + + // Pretend that there is a call waiting and the screen is off + when(mInCallActivity.isDestroyed()).thenReturn(false); + when(mInCallActivity.isFinishing()).thenReturn(false); + when(mProximitySensor.isScreenReallyOff()).thenReturn(true); + when(mCallList.getIncomingCall()).thenReturn(mIncomingCall); + + mInCallPresenter.onCallListChange(mCallList); + verify(mInCallActivity).finish(); + } + + /** + * Verifies that the PENDING_OUTGOING -> IN_CALL transition brings up InCallActivity so + * that it can display an error dialog. + */ + public void testOnCallListChange_pendingOutgoingToInCallTransitionShowsUiForErrorDialog() { + when(mCallList.getPendingOutgoingCall()).thenReturn(mConnectingCall); + + mInCallPresenter.onCallListChange(mCallList); + + when(mCallList.getPendingOutgoingCall()).thenReturn(null); + when(mCallList.getActiveCall()).thenReturn(mActiveCall); + + mInCallPresenter.onCallListChange(mCallList); + + verify(mContext).startActivity(InCallPresenter.getInstance().getInCallIntent(false, false)); + verifyIncomingCallNotificationNotSent(); + } + + /** + * Verifies that if there is a call in the PRE_DIAL_WAIT state, InCallActivity is displayed + * to display the account picker. + */ + public void testOnCallListChange_noAccountProvidedForCallShowsUiForAccountPicker() { + when(mCallList.getWaitingForAccountCall()).thenReturn(mWaitingForAccountsCall); + mInCallPresenter.onCallListChange(mCallList); + + verify(mContext).startActivity(InCallPresenter.getInstance().getInCallIntent(false, false)); + verifyIncomingCallNotificationNotSent(); + } + + /** + * Verifies that for an expected call state change (e.g. NO_CALLS -> PENDING_OUTGOING), + * InCallActivity is not displayed. + */ + public void testOnCallListChange_noCallsToPendingOutgoingDoesNotShowUi() { + when(mCallList.getPendingOutgoingCall()).thenReturn(mConnectingCall); + mInCallPresenter.onCallListChange(mCallList); + + verifyInCallActivityNotStarted(); + verifyIncomingCallNotificationNotSent(); + } + + public void testOnCallListChange_LastCallDisconnectedNoCallsLeftFinishesUi() { + when(mCallList.getDisconnectedCall()).thenReturn(mDisconnectedCall); + mInCallPresenter.onCallListChange(mCallList); + + mInCallPresenter.setActivity(mInCallActivity); + + verify(mInCallActivity, never()).finish(); + + // Last remaining disconnected call is removed from CallList, activity should shut down. + when(mCallList.getDisconnectedCall()).thenReturn(null); + mInCallPresenter.onCallListChange(mCallList); + verify(mInCallActivity).finish(); + } + + + //TODO + public void testCircularReveal_startsCircularRevealForOutgoingCalls() { + + } + + public void testCircularReveal_waitTillCircularRevealSentBeforeShowingCallCard() { + } + + public void testHangupOngoingCall_disconnectsCallCorrectly() { + } + + public void testAnswerIncomingCall() { + } + + public void testDeclineIncomingCall() { + } + + private void verifyInCallActivityNotStarted() { + verify(mContext, never()).startActivity(Mockito.any(Intent.class)); + } + + private void verifyIncomingCallNotificationNotSent() { + verify(mStatusBarNotifier, never()).updateNotification(Mockito.any(InCallState.class), + Mockito.any(CallList.class)); + } + + private static Call getMockCall(int state) { + return getMockCall(state, true); + } + + private static Call getMockCall(int state, boolean hasAccountHandle) { + final Call call = Mockito.mock(Call.class); + when(call.getState()).thenReturn(Integer.valueOf(state)); + if (hasAccountHandle) { + when(call.getAccountHandle()).thenReturn(new PhoneAccountHandle(null, null)); + } + return call; + } +} |