diff options
105 files changed, 1228 insertions, 612 deletions
diff --git a/InCallUI/res/drawable-hdpi/ic_hd_18dp.png b/InCallUI/res/drawable-hdpi/ic_hd_18dp.png Binary files differdeleted file mode 100644 index ade1788c1..000000000 --- a/InCallUI/res/drawable-hdpi/ic_hd_18dp.png +++ /dev/null diff --git a/InCallUI/res/drawable-xhdpi/ic_hd_18dp.png b/InCallUI/res/drawable-hdpi/ic_hd_24dp.png Binary files differindex 35bf51a4f..35bf51a4f 100644 --- a/InCallUI/res/drawable-xhdpi/ic_hd_18dp.png +++ b/InCallUI/res/drawable-hdpi/ic_hd_24dp.png diff --git a/InCallUI/res/drawable-mdpi/ic_hd_18dp.png b/InCallUI/res/drawable-mdpi/ic_hd_18dp.png Binary files differdeleted file mode 100644 index 82c972646..000000000 --- a/InCallUI/res/drawable-mdpi/ic_hd_18dp.png +++ /dev/null diff --git a/InCallUI/res/drawable-mdpi/ic_hd_24dp.png b/InCallUI/res/drawable-mdpi/ic_hd_24dp.png Binary files differnew file mode 100644 index 000000000..30938fe4d --- /dev/null +++ b/InCallUI/res/drawable-mdpi/ic_hd_24dp.png diff --git a/InCallUI/res/drawable-xhdpi/ic_hd_24dp.png b/InCallUI/res/drawable-xhdpi/ic_hd_24dp.png Binary files differnew file mode 100644 index 000000000..4c954d86f --- /dev/null +++ b/InCallUI/res/drawable-xhdpi/ic_hd_24dp.png diff --git a/InCallUI/res/drawable-xxhdpi/ic_hd_18dp.png b/InCallUI/res/drawable-xxhdpi/ic_hd_18dp.png Binary files differdeleted file mode 100644 index 510aa6e8b..000000000 --- a/InCallUI/res/drawable-xxhdpi/ic_hd_18dp.png +++ /dev/null diff --git a/InCallUI/res/drawable-xxxhdpi/ic_hd_18dp.png b/InCallUI/res/drawable-xxhdpi/ic_hd_24dp.png Binary files differindex dd08bbbec..dd08bbbec 100644 --- a/InCallUI/res/drawable-xxxhdpi/ic_hd_18dp.png +++ b/InCallUI/res/drawable-xxhdpi/ic_hd_24dp.png diff --git a/InCallUI/res/drawable-xxxhdpi/ic_hd_24dp.png b/InCallUI/res/drawable-xxxhdpi/ic_hd_24dp.png Binary files differnew file mode 100644 index 000000000..3f87b882e --- /dev/null +++ b/InCallUI/res/drawable-xxxhdpi/ic_hd_24dp.png diff --git a/InCallUI/res/layout/call_button_fragment.xml b/InCallUI/res/layout/call_button_fragment.xml index 7f429c76e..0cdaf23f7 100644 --- a/InCallUI/res/layout/call_button_fragment.xml +++ b/InCallUI/res/layout/call_button_fragment.xml @@ -69,13 +69,6 @@ android:background="@drawable/btn_compound_audio" android:contentDescription="@string/audio_mode_speaker" /> - <!-- "Change to audio call" for video calls. --> - <ImageButton android:id="@+id/changeToVoiceButton" - style="@style/InCallButton" - android:background="@drawable/btn_change_to_voice" - android:contentDescription="@string/onscreenChangeToVoiceText" - android:visibility="gone" /> - <!-- MIDDLE LEFT SLOT ================================================================== --> <!-- "Mute" --> @@ -129,6 +122,13 @@ <!-- This slot is either "Add" or "Merge", depending on the state of the call. One or the other of these must always be set to GONE. --> + <!-- "Turn off camera" for video calls. --> + <ToggleButton android:id="@+id/pauseVideoButton" + style="@style/InCallCompoundButton" + android:background="@drawable/btn_compound_video_off" + android:contentDescription="@string/onscreenPauseVideoText" + android:visibility="gone" /> + <!-- "Add Call" --> <ImageButton android:id="@+id/addButton" style="@style/InCallButton" @@ -145,13 +145,6 @@ android:contentDescription="@string/onscreenMergeCallsText" android:visibility="gone" /> - <!-- "Switch camera" for video calls. --> - <ToggleButton android:id="@+id/pauseVideoButton" - style="@style/InCallCompoundButton" - android:background="@drawable/btn_compound_video_off" - android:contentDescription="@string/onscreenPauseVideoText" - android:visibility="gone" /> - <!-- "Overflow" --> <ImageButton android:id="@+id/overflowButton" style="@style/InCallButton" diff --git a/InCallUI/res/layout/call_card_fragment.xml b/InCallUI/res/layout/call_card_fragment.xml index 1971c9c70..537eb5119 100644 --- a/InCallUI/res/layout/call_card_fragment.xml +++ b/InCallUI/res/layout/call_card_fragment.xml @@ -80,6 +80,13 @@ </FrameLayout> + <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" /> + <!-- Progress spinner, useful for indicating pending operations such as upgrade to video. --> <FrameLayout android:id="@+id/progressSpinner" @@ -109,14 +116,6 @@ android:layout_height="wrap_content" android:layout_below="@id/primary_call_info_container" /> - <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/answer_and_dialpad_container" diff --git a/InCallUI/res/layout/primary_call_info.xml b/InCallUI/res/layout/primary_call_info.xml index 1dc4e78d8..7127d9815 100644 --- a/InCallUI/res/layout/primary_call_info.xml +++ b/InCallUI/res/layout/primary_call_info.xml @@ -42,13 +42,12 @@ <!-- Subscription provider or WiFi calling icon displayed to the left of the label --> <ImageView android:id="@+id/callStateIcon" - android:layout_width="16dp" + android:layout_width="24dp" android:layout_height="match_parent" - android:layout_marginStart="6dp" android:layout_marginEnd="10dp" android:tint="@color/incall_accent_color" android:alpha="0.0" - android:scaleType="center" + android:scaleType="fitCenter" android:visibility="gone" /> <ImageView android:id="@+id/videoCallIcon" @@ -97,12 +96,12 @@ android:clipToPadding="false"> <ImageView android:id="@+id/hdAudioIcon" - android:src="@drawable/ic_hd_18dp" - android:layout_width="16dp" + android:src="@drawable/ic_hd_24dp" + android:layout_width="24dp" android:layout_height="match_parent" android:layout_marginEnd="8dp" android:tint="@color/incall_call_banner_subtext_color" - android:scaleType="center" + android:scaleType="fitCenter" android:visibility="gone" /> <!-- Label (like "Mobile" or "Work", if present) and phone number, side by side --> diff --git a/InCallUI/res/layout/video_call_views.xml b/InCallUI/res/layout/video_call_views.xml index 8961ea4bf..b0c6ce2ad 100644 --- a/InCallUI/res/layout/video_call_views.xml +++ b/InCallUI/res/layout/video_call_views.xml @@ -26,10 +26,41 @@ android:layout_width="match_parent" android:layout_height="match_parent" /> <!-- The width and height are replaced at runtime based on the selected camera. --> - <TextureView - android:id="@+id/previewVideo" - android:layout_gravity="bottom|right" - android:layout_margin="@dimen/video_preview_margin" + <FrameLayout + android:id="@+id/previewVideoContainer" android:layout_width="70dp" - android:layout_height="120dp" /> + android:layout_height="120dp" + android:layout_gravity="bottom|right" + android:layout_margin="@dimen/video_preview_margin" > + + <!-- The video preview surface, where the user's outgoing video is shown. --> + <TextureView + android:id="@+id/previewVideo" + android:layout_width="match_parent" + android:layout_height="match_parent" /> + + <!-- The user's profile photo, shown when the user's camera is shut off. --> + <ImageView + android:id="@+id/previewProfilePhoto" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:scaleType="centerInside" + android:adjustViewBounds="false" + android:contentDescription="@string/profile_photo_description" + android:background="@android:color/black" + android:visibility="gone" /> + + <!-- The "camera off" icon, shown when the user's camera is shut off. --> + <ImageView + android:id="@+id/previewCameraOff" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="bottom|right" + android:layout_marginEnd="10dp" + android:layout_marginBottom="10dp" + android:scaleType="centerCrop" + android:contentDescription="@string/camera_off_description" + android:src="@drawable/ic_toolbar_video_off" + android:visibility="gone" /> + </FrameLayout> </FrameLayout> diff --git a/InCallUI/res/values-af/strings.xml b/InCallUI/res/values-af/strings.xml index 8017dc92e..0d37ec2fa 100644 --- a/InCallUI/res/values-af/strings.xml +++ b/InCallUI/res/values-af/strings.xml @@ -49,7 +49,8 @@ <string name="card_title_video_call" msgid="5898636679563320218">"Video-oproep"</string> <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Versoek tans video"</string> <string name="card_title_video_call_error" msgid="9000555878389539225">"Kan nie video-oproep koppel nie"</string> - <string name="card_title_video_call_paused" msgid="3753261320787432731">"Video-oproep (Wag tans)"</string> + <!-- no translation found for card_title_video_call_rejected (462358296694719787) --> + <skip /> <string name="card_title_callback_number" msgid="7307938207564217293">"Jou terugbelnommer\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string> <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Jou noodterugbelnommer\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string> <string name="notification_dialing" msgid="2107666444937350731">"Bel"</string> @@ -167,4 +168,8 @@ <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> uur</item> <item quantity="one">1 uur</item> </plurals> + <!-- no translation found for profile_photo_description (5609894336203315400) --> + <skip /> + <!-- no translation found for camera_off_description (5689494614359429889) --> + <skip /> </resources> diff --git a/InCallUI/res/values-am/strings.xml b/InCallUI/res/values-am/strings.xml index 1c4d7292d..48bc3d054 100644 --- a/InCallUI/res/values-am/strings.xml +++ b/InCallUI/res/values-am/strings.xml @@ -49,7 +49,8 @@ <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_error" msgid="9000555878389539225">"የቪዲዮ ጥሪን ማገናኘት አልተቻለም"</string> - <string name="card_title_video_call_paused" msgid="3753261320787432731">"የቪዲዮ ጥሪ (ላፍታ ቆሟል)"</string> + <!-- no translation found for card_title_video_call_rejected (462358296694719787) --> + <skip /> <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> <string name="notification_dialing" msgid="2107666444937350731">"በመደወል ላይ"</string> @@ -167,4 +168,8 @@ <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> ሰዓቶች</item> <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> ሰዓቶች</item> </plurals> + <!-- no translation found for profile_photo_description (5609894336203315400) --> + <skip /> + <!-- no translation found for camera_off_description (5689494614359429889) --> + <skip /> </resources> diff --git a/InCallUI/res/values-ar/strings.xml b/InCallUI/res/values-ar/strings.xml index e19866677..58db1e355 100644 --- a/InCallUI/res/values-ar/strings.xml +++ b/InCallUI/res/values-ar/strings.xml @@ -49,7 +49,7 @@ <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_error" msgid="9000555878389539225">"يتعذر إجراء مكالمة فيديو"</string> - <string name="card_title_video_call_paused" msgid="3753261320787432731">"مكالمة فيديو (تم إيقافها مؤقتًا)"</string> + <string name="card_title_video_call_rejected" msgid="462358296694719787">"تم رفض طلب مكالمة الفيديو"</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> <string name="notification_dialing" msgid="2107666444937350731">"جارٍ الطلب"</string> @@ -179,4 +179,6 @@ <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> من الساعات</item> <item quantity="one">ساعة واحدة</item> </plurals> + <string name="profile_photo_description" msgid="5609894336203315400">"صورة الملف الشخصي"</string> + <string name="camera_off_description" msgid="5689494614359429889">"تم إيقاف الكاميرا"</string> </resources> diff --git a/InCallUI/res/values-bg/strings.xml b/InCallUI/res/values-bg/strings.xml index 4f4a39a70..82515a595 100644 --- a/InCallUI/res/values-bg/strings.xml +++ b/InCallUI/res/values-bg/strings.xml @@ -49,7 +49,8 @@ <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_error" msgid="9000555878389539225">"Видеообаждането не може да се осъществи"</string> - <string name="card_title_video_call_paused" msgid="3753261320787432731">"Видеообаждане (на пауза)"</string> + <!-- no translation found for card_title_video_call_rejected (462358296694719787) --> + <skip /> <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> <string name="notification_dialing" msgid="2107666444937350731">"Набира се"</string> @@ -167,4 +168,8 @@ <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> часа</item> <item quantity="one">1 час</item> </plurals> + <!-- no translation found for profile_photo_description (5609894336203315400) --> + <skip /> + <!-- no translation found for camera_off_description (5689494614359429889) --> + <skip /> </resources> diff --git a/InCallUI/res/values-bn-rBD/strings.xml b/InCallUI/res/values-bn-rBD/strings.xml index 66c7927e1..e370b6457 100644 --- a/InCallUI/res/values-bn-rBD/strings.xml +++ b/InCallUI/res/values-bn-rBD/strings.xml @@ -49,7 +49,8 @@ <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_error" msgid="9000555878389539225">"ভিডিও কলে সংযোগ করা যাচ্ছে না"</string> - <string name="card_title_video_call_paused" msgid="3753261320787432731">"ভিডিও কল (বিরাম দেওয়া হয়েছে)"</string> + <!-- no translation found for card_title_video_call_rejected (462358296694719787) --> + <skip /> <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> <string name="notification_dialing" msgid="2107666444937350731">"ডায়াল করা হচ্ছে"</string> @@ -167,4 +168,8 @@ <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> ঘন্টা</item> <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> ঘন্টা</item> </plurals> + <!-- no translation found for profile_photo_description (5609894336203315400) --> + <skip /> + <!-- no translation found for camera_off_description (5689494614359429889) --> + <skip /> </resources> diff --git a/InCallUI/res/values-ca/strings.xml b/InCallUI/res/values-ca/strings.xml index 45fbe2cab..27b41e130 100644 --- a/InCallUI/res/values-ca/strings.xml +++ b/InCallUI/res/values-ca/strings.xml @@ -49,7 +49,8 @@ <string name="card_title_video_call" msgid="5898636679563320218">"Videotrucada"</string> <string name="card_title_video_call_requesting" msgid="4587504939739340937">"S\'està sol·licitant el vídeo"</string> <string name="card_title_video_call_error" msgid="9000555878389539225">"No es pot connectar la videotrucada"</string> - <string name="card_title_video_call_paused" msgid="3753261320787432731">"Videotrucada (en pausa)"</string> + <!-- no translation found for card_title_video_call_rejected (462358296694719787) --> + <skip /> <string name="card_title_callback_number" msgid="7307938207564217293">"Número de devolució de trucada\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string> <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Número de devolució de trucada d\'emergència\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string> <string name="notification_dialing" msgid="2107666444937350731">"Marcatge"</string> @@ -167,4 +168,8 @@ <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> hores</item> <item quantity="one">1 hora</item> </plurals> + <!-- no translation found for profile_photo_description (5609894336203315400) --> + <skip /> + <!-- no translation found for camera_off_description (5689494614359429889) --> + <skip /> </resources> diff --git a/InCallUI/res/values-cs/strings.xml b/InCallUI/res/values-cs/strings.xml index 942ae14f2..c428dccc7 100644 --- a/InCallUI/res/values-cs/strings.xml +++ b/InCallUI/res/values-cs/strings.xml @@ -49,7 +49,8 @@ <string name="card_title_video_call" msgid="5898636679563320218">"Videohovor"</string> <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Požadování videa"</string> <string name="card_title_video_call_error" msgid="9000555878389539225">"Videohovor nelze zahájit"</string> - <string name="card_title_video_call_paused" msgid="3753261320787432731">"Videohovor (pozastaveno)"</string> + <!-- no translation found for card_title_video_call_rejected (462358296694719787) --> + <skip /> <string name="card_title_callback_number" msgid="7307938207564217293">"Vaše číslo pro zpětné volání\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string> <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Vaše číslo pro tísňové zpětné volání\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string> <string name="notification_dialing" msgid="2107666444937350731">"Vytáčení"</string> @@ -173,4 +174,8 @@ <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> hodin</item> <item quantity="one">1 hodina</item> </plurals> + <!-- no translation found for profile_photo_description (5609894336203315400) --> + <skip /> + <!-- no translation found for camera_off_description (5689494614359429889) --> + <skip /> </resources> diff --git a/InCallUI/res/values-da/strings.xml b/InCallUI/res/values-da/strings.xml index 6e37a36f9..4c8536dd4 100644 --- a/InCallUI/res/values-da/strings.xml +++ b/InCallUI/res/values-da/strings.xml @@ -49,7 +49,8 @@ <string name="card_title_video_call" msgid="5898636679563320218">"Videoopkald"</string> <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Anmoder om video"</string> <string name="card_title_video_call_error" msgid="9000555878389539225">"Kan ikke forbinde videoopkald"</string> - <string name="card_title_video_call_paused" msgid="3753261320787432731">"Videoopkald (på pause)"</string> + <!-- no translation found for card_title_video_call_rejected (462358296694719787) --> + <skip /> <string name="card_title_callback_number" msgid="7307938207564217293">"Dit tilbagekaldsnummer\n<xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string> <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Dit tilbagekaldsnummer til nødopkald\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string> <string name="notification_dialing" msgid="2107666444937350731">"Ringer op"</string> @@ -167,4 +168,8 @@ <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> timer</item> <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> timer</item> </plurals> + <!-- no translation found for profile_photo_description (5609894336203315400) --> + <skip /> + <!-- no translation found for camera_off_description (5689494614359429889) --> + <skip /> </resources> diff --git a/InCallUI/res/values-de/strings.xml b/InCallUI/res/values-de/strings.xml index 9b61c4e91..fb79d6421 100644 --- a/InCallUI/res/values-de/strings.xml +++ b/InCallUI/res/values-de/strings.xml @@ -49,7 +49,8 @@ <string name="card_title_video_call" msgid="5898636679563320218">"Videoanruf"</string> <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Videoanfrage wird gesendet."</string> <string name="card_title_video_call_error" msgid="9000555878389539225">"Videoanruf kann nicht verbunden werden."</string> - <string name="card_title_video_call_paused" msgid="3753261320787432731">"Videoanruf (pausiert)"</string> + <!-- no translation found for card_title_video_call_rejected (462358296694719787) --> + <skip /> <string name="card_title_callback_number" msgid="7307938207564217293">"Ihre Rückrufnummer:\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string> <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Ihre Notrufnummer:\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string> <string name="notification_dialing" msgid="2107666444937350731">"Verbindung wird aufgebaut..."</string> @@ -167,4 +168,8 @@ <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> Stunden</item> <item quantity="one">1 Stunde</item> </plurals> + <!-- no translation found for profile_photo_description (5609894336203315400) --> + <skip /> + <!-- no translation found for camera_off_description (5689494614359429889) --> + <skip /> </resources> diff --git a/InCallUI/res/values-el/strings.xml b/InCallUI/res/values-el/strings.xml index b2e6c9216..3a8a36b39 100644 --- a/InCallUI/res/values-el/strings.xml +++ b/InCallUI/res/values-el/strings.xml @@ -49,7 +49,8 @@ <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_error" msgid="9000555878389539225">"Δεν είναι δυνατή η σύνδεση βιντεοκλησης"</string> - <string name="card_title_video_call_paused" msgid="3753261320787432731">"Βιντεοκλήση (Παύση)"</string> + <!-- no translation found for card_title_video_call_rejected (462358296694719787) --> + <skip /> <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> <string name="notification_dialing" msgid="2107666444937350731">"Κλήση"</string> @@ -167,4 +168,8 @@ <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> ώρες</item> <item quantity="one">1 ώρα</item> </plurals> + <!-- no translation found for profile_photo_description (5609894336203315400) --> + <skip /> + <!-- no translation found for camera_off_description (5689494614359429889) --> + <skip /> </resources> diff --git a/InCallUI/res/values-en-rAU/strings.xml b/InCallUI/res/values-en-rAU/strings.xml index d16d85afd..5d2aa84c9 100644 --- a/InCallUI/res/values-en-rAU/strings.xml +++ b/InCallUI/res/values-en-rAU/strings.xml @@ -49,7 +49,7 @@ <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_video_call_paused" msgid="3753261320787432731">"Video call (Paused)"</string> + <string name="card_title_video_call_rejected" msgid="462358296694719787">"Video request rejected"</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> @@ -167,4 +167,6 @@ <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> hours</item> <item quantity="one">1 hour</item> </plurals> + <string name="profile_photo_description" msgid="5609894336203315400">"Profile photo"</string> + <string name="camera_off_description" msgid="5689494614359429889">"Camera off"</string> </resources> diff --git a/InCallUI/res/values-en-rGB/strings.xml b/InCallUI/res/values-en-rGB/strings.xml index d16d85afd..5d2aa84c9 100644 --- a/InCallUI/res/values-en-rGB/strings.xml +++ b/InCallUI/res/values-en-rGB/strings.xml @@ -49,7 +49,7 @@ <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_video_call_paused" msgid="3753261320787432731">"Video call (Paused)"</string> + <string name="card_title_video_call_rejected" msgid="462358296694719787">"Video request rejected"</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> @@ -167,4 +167,6 @@ <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> hours</item> <item quantity="one">1 hour</item> </plurals> + <string name="profile_photo_description" msgid="5609894336203315400">"Profile photo"</string> + <string name="camera_off_description" msgid="5689494614359429889">"Camera off"</string> </resources> diff --git a/InCallUI/res/values-en-rIN/strings.xml b/InCallUI/res/values-en-rIN/strings.xml index d16d85afd..5d2aa84c9 100644 --- a/InCallUI/res/values-en-rIN/strings.xml +++ b/InCallUI/res/values-en-rIN/strings.xml @@ -49,7 +49,7 @@ <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_video_call_paused" msgid="3753261320787432731">"Video call (Paused)"</string> + <string name="card_title_video_call_rejected" msgid="462358296694719787">"Video request rejected"</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> @@ -167,4 +167,6 @@ <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> hours</item> <item quantity="one">1 hour</item> </plurals> + <string name="profile_photo_description" msgid="5609894336203315400">"Profile photo"</string> + <string name="camera_off_description" msgid="5689494614359429889">"Camera off"</string> </resources> diff --git a/InCallUI/res/values-es-rUS/strings.xml b/InCallUI/res/values-es-rUS/strings.xml index 5c717810d..18a19d37e 100644 --- a/InCallUI/res/values-es-rUS/strings.xml +++ b/InCallUI/res/values-es-rUS/strings.xml @@ -49,7 +49,8 @@ <string name="card_title_video_call" msgid="5898636679563320218">"Videollamada"</string> <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Solicitando video"</string> <string name="card_title_video_call_error" msgid="9000555878389539225">"No se puede conectar la videollamada."</string> - <string name="card_title_video_call_paused" msgid="3753261320787432731">"Videollamada (pausada)"</string> + <!-- no translation found for card_title_video_call_rejected (462358296694719787) --> + <skip /> <string name="card_title_callback_number" msgid="7307938207564217293">"Número de devolución de llamada\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string> <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Número de devolución de llamada de emergencia\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string> <string name="notification_dialing" msgid="2107666444937350731">"Marcando"</string> @@ -167,4 +168,8 @@ <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> horas</item> <item quantity="one">1 hora</item> </plurals> + <!-- no translation found for profile_photo_description (5609894336203315400) --> + <skip /> + <!-- no translation found for camera_off_description (5689494614359429889) --> + <skip /> </resources> diff --git a/InCallUI/res/values-es/strings.xml b/InCallUI/res/values-es/strings.xml index a17a1fc04..87e4960fd 100644 --- a/InCallUI/res/values-es/strings.xml +++ b/InCallUI/res/values-es/strings.xml @@ -49,7 +49,8 @@ <string name="card_title_video_call" msgid="5898636679563320218">"Videollamada"</string> <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Solicitando videollamada"</string> <string name="card_title_video_call_error" msgid="9000555878389539225">"No se puede establecer la videollamada"</string> - <string name="card_title_video_call_paused" msgid="3753261320787432731">"Videollamada (en pausa)"</string> + <!-- no translation found for card_title_video_call_rejected (462358296694719787) --> + <skip /> <string name="card_title_callback_number" msgid="7307938207564217293">"Tu número de devolución de llamada\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string> <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Tu número de devolución de llamada de emergencia\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string> <string name="notification_dialing" msgid="2107666444937350731">"Llamando..."</string> @@ -167,4 +168,8 @@ <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> horas</item> <item quantity="one">1 hora</item> </plurals> + <!-- no translation found for profile_photo_description (5609894336203315400) --> + <skip /> + <!-- no translation found for camera_off_description (5689494614359429889) --> + <skip /> </resources> diff --git a/InCallUI/res/values-et-rEE/strings.xml b/InCallUI/res/values-et-rEE/strings.xml index 27b9f9313..204f59852 100644 --- a/InCallUI/res/values-et-rEE/strings.xml +++ b/InCallUI/res/values-et-rEE/strings.xml @@ -49,7 +49,8 @@ <string name="card_title_video_call" msgid="5898636679563320218">"Videokõne"</string> <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Video taotlemine"</string> <string name="card_title_video_call_error" msgid="9000555878389539225">"Videokõnet ei õnnestu ühendada"</string> - <string name="card_title_video_call_paused" msgid="3753261320787432731">"Videokõne (peatatud)"</string> + <!-- no translation found for card_title_video_call_rejected (462358296694719787) --> + <skip /> <string name="card_title_callback_number" msgid="7307938207564217293">"Teie tagasihelistamise number\n<xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string> <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Teie hädaabikõne tagasihelistamise number\n<xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string> <string name="notification_dialing" msgid="2107666444937350731">"Valimine"</string> @@ -167,4 +168,8 @@ <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> tundi</item> <item quantity="one">1 tund</item> </plurals> + <!-- no translation found for profile_photo_description (5609894336203315400) --> + <skip /> + <!-- no translation found for camera_off_description (5689494614359429889) --> + <skip /> </resources> diff --git a/InCallUI/res/values-eu-rES/strings.xml b/InCallUI/res/values-eu-rES/strings.xml index b83267beb..90837488e 100644 --- a/InCallUI/res/values-eu-rES/strings.xml +++ b/InCallUI/res/values-eu-rES/strings.xml @@ -49,7 +49,8 @@ <string name="card_title_video_call" msgid="5898636679563320218">"Bideo-deia"</string> <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Bideoa eskatzen"</string> <string name="card_title_video_call_error" msgid="9000555878389539225">"Ezin da konektatu bideo-deia"</string> - <string name="card_title_video_call_paused" msgid="3753261320787432731">"Bideo-deia (pausatuta)"</string> + <!-- no translation found for card_title_video_call_rejected (462358296694719787) --> + <skip /> <string name="card_title_callback_number" msgid="7307938207564217293">"Deiak itzultzeko zenbakia:\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string> <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Larrialdi-deiak itzultzeko zenbakia:\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string> <string name="notification_dialing" msgid="2107666444937350731">"Markatzen"</string> @@ -167,4 +168,8 @@ <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> ordu</item> <item quantity="one">ordubete</item> </plurals> + <!-- no translation found for profile_photo_description (5609894336203315400) --> + <skip /> + <!-- no translation found for camera_off_description (5689494614359429889) --> + <skip /> </resources> diff --git a/InCallUI/res/values-fa/strings.xml b/InCallUI/res/values-fa/strings.xml index db36fa520..297ee15f0 100644 --- a/InCallUI/res/values-fa/strings.xml +++ b/InCallUI/res/values-fa/strings.xml @@ -49,7 +49,8 @@ <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_error" msgid="9000555878389539225">"اتصال تماس ویدیویی ممکن نیست"</string> - <string name="card_title_video_call_paused" msgid="3753261320787432731">"تماس ویدیویی (موقتاً متوقف شد)"</string> + <!-- no translation found for card_title_video_call_rejected (462358296694719787) --> + <skip /> <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> <string name="notification_dialing" msgid="2107666444937350731">"شمارهگیری"</string> @@ -167,4 +168,8 @@ <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> ساعت</item> <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> ساعت</item> </plurals> + <!-- no translation found for profile_photo_description (5609894336203315400) --> + <skip /> + <!-- no translation found for camera_off_description (5689494614359429889) --> + <skip /> </resources> diff --git a/InCallUI/res/values-fi/strings.xml b/InCallUI/res/values-fi/strings.xml index dab9656d2..c7fd6d473 100644 --- a/InCallUI/res/values-fi/strings.xml +++ b/InCallUI/res/values-fi/strings.xml @@ -49,7 +49,8 @@ <string name="card_title_video_call" msgid="5898636679563320218">"Videopuhelu"</string> <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Videota pyydetään"</string> <string name="card_title_video_call_error" msgid="9000555878389539225">"Videopuhelua ei voi soittaa"</string> - <string name="card_title_video_call_paused" msgid="3753261320787432731">"Videopuhelu (keskeytetty)"</string> + <!-- no translation found for card_title_video_call_rejected (462358296694719787) --> + <skip /> <string name="card_title_callback_number" msgid="7307938207564217293">"Takaisinsoittonumerosi\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string> <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Hätäpuhelujen takaisinsoittonumero\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string> <string name="notification_dialing" msgid="2107666444937350731">"Soitetaan"</string> @@ -167,4 +168,8 @@ <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> tuntia</item> <item quantity="one">1 tunti</item> </plurals> + <!-- no translation found for profile_photo_description (5609894336203315400) --> + <skip /> + <!-- no translation found for camera_off_description (5689494614359429889) --> + <skip /> </resources> diff --git a/InCallUI/res/values-fr-rCA/strings.xml b/InCallUI/res/values-fr-rCA/strings.xml index 22788b339..54b8305ff 100644 --- a/InCallUI/res/values-fr-rCA/strings.xml +++ b/InCallUI/res/values-fr-rCA/strings.xml @@ -49,7 +49,8 @@ <string name="card_title_video_call" msgid="5898636679563320218">"Appel vidéo"</string> <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Demande de vidéo en cours"</string> <string name="card_title_video_call_error" msgid="9000555878389539225">"Impossible de connecter l\'appel vidéo"</string> - <string name="card_title_video_call_paused" msgid="3753261320787432731">"Appel vidéo (en pause)"</string> + <!-- no translation found for card_title_video_call_rejected (462358296694719787) --> + <skip /> <string name="card_title_callback_number" msgid="7307938207564217293">"Votre numéro de rappel :\n<xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string> <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Votre numéro de rappel d\'urgence :\n<xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string> <string name="notification_dialing" msgid="2107666444937350731">"Numérotation en cours…"</string> @@ -167,4 +168,8 @@ <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> heure</item> <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> heures</item> </plurals> + <!-- no translation found for profile_photo_description (5609894336203315400) --> + <skip /> + <!-- no translation found for camera_off_description (5689494614359429889) --> + <skip /> </resources> diff --git a/InCallUI/res/values-fr/strings.xml b/InCallUI/res/values-fr/strings.xml index 634722dbc..e9798de0f 100644 --- a/InCallUI/res/values-fr/strings.xml +++ b/InCallUI/res/values-fr/strings.xml @@ -49,7 +49,8 @@ <string name="card_title_video_call" msgid="5898636679563320218">"Appel vidéo"</string> <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Demande de vidéo en cours…"</string> <string name="card_title_video_call_error" msgid="9000555878389539225">"Impossible d\'établir la connexion de l\'appel vidéo."</string> - <string name="card_title_video_call_paused" msgid="3753261320787432731">"Appel vidéo (interrompu)"</string> + <!-- no translation found for card_title_video_call_rejected (462358296694719787) --> + <skip /> <string name="card_title_callback_number" msgid="7307938207564217293">"Votre numéro de rappel\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string> <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Votre numéro de rappel d\'urgence\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string> <string name="notification_dialing" msgid="2107666444937350731">"Numérotation en cours…"</string> @@ -167,4 +168,8 @@ <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> heure</item> <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> heures</item> </plurals> + <!-- no translation found for profile_photo_description (5609894336203315400) --> + <skip /> + <!-- no translation found for camera_off_description (5689494614359429889) --> + <skip /> </resources> diff --git a/InCallUI/res/values-gl-rES/strings.xml b/InCallUI/res/values-gl-rES/strings.xml index 6800d1b8c..36dc02475 100644 --- a/InCallUI/res/values-gl-rES/strings.xml +++ b/InCallUI/res/values-gl-rES/strings.xml @@ -49,7 +49,8 @@ <string name="card_title_video_call" msgid="5898636679563320218">"Videochamada"</string> <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Solicitando vídeo"</string> <string name="card_title_video_call_error" msgid="9000555878389539225">"Non se pode conectar a videochamada"</string> - <string name="card_title_video_call_paused" msgid="3753261320787432731">"Videochamada (pausada)"</string> + <!-- no translation found for card_title_video_call_rejected (462358296694719787) --> + <skip /> <string name="card_title_callback_number" msgid="7307938207564217293">"Número de devolución de chamada\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string> <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Número de devolución de chamada de emerxencia\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string> <string name="notification_dialing" msgid="2107666444937350731">"Marcación"</string> @@ -167,4 +168,8 @@ <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> horas</item> <item quantity="one">Unha hora</item> </plurals> + <!-- no translation found for profile_photo_description (5609894336203315400) --> + <skip /> + <!-- no translation found for camera_off_description (5689494614359429889) --> + <skip /> </resources> diff --git a/InCallUI/res/values-hi/strings.xml b/InCallUI/res/values-hi/strings.xml index 0361d7bec..447e6ee18 100644 --- a/InCallUI/res/values-hi/strings.xml +++ b/InCallUI/res/values-hi/strings.xml @@ -49,7 +49,8 @@ <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_error" msgid="9000555878389539225">"वीडियो कॉल कनेक्ट नहीं किया जा सकता"</string> - <string name="card_title_video_call_paused" msgid="3753261320787432731">"वीडियो काॅल (रोका गया)"</string> + <!-- no translation found for card_title_video_call_rejected (462358296694719787) --> + <skip /> <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> <string name="notification_dialing" msgid="2107666444937350731">"डायल हो रहा है"</string> @@ -167,4 +168,8 @@ <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> घंटे</item> <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> घंटे</item> </plurals> + <!-- no translation found for profile_photo_description (5609894336203315400) --> + <skip /> + <!-- no translation found for camera_off_description (5689494614359429889) --> + <skip /> </resources> diff --git a/InCallUI/res/values-hr/strings.xml b/InCallUI/res/values-hr/strings.xml index ed5e82344..0ee8d4e41 100644 --- a/InCallUI/res/values-hr/strings.xml +++ b/InCallUI/res/values-hr/strings.xml @@ -49,7 +49,8 @@ <string name="card_title_video_call" msgid="5898636679563320218">"Videopoziv"</string> <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Zahtijevanje videopiziva"</string> <string name="card_title_video_call_error" msgid="9000555878389539225">"Videopoziv nije uspostavljen"</string> - <string name="card_title_video_call_paused" msgid="3753261320787432731">"Videopoziv (pauziran)"</string> + <!-- no translation found for card_title_video_call_rejected (462358296694719787) --> + <skip /> <string name="card_title_callback_number" msgid="7307938207564217293">"Vaš broj za povratni poziv\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string> <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Vaš broj za povratni poziv za hitne službe\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string> <string name="notification_dialing" msgid="2107666444937350731">"Biranje broja"</string> @@ -170,4 +171,8 @@ <item quantity="few"><xliff:g id="COUNT">%d</xliff:g> sata</item> <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> sati</item> </plurals> + <!-- no translation found for profile_photo_description (5609894336203315400) --> + <skip /> + <!-- no translation found for camera_off_description (5689494614359429889) --> + <skip /> </resources> diff --git a/InCallUI/res/values-hu/strings.xml b/InCallUI/res/values-hu/strings.xml index d3da90b7d..c280fc023 100644 --- a/InCallUI/res/values-hu/strings.xml +++ b/InCallUI/res/values-hu/strings.xml @@ -49,7 +49,8 @@ <string name="card_title_video_call" msgid="5898636679563320218">"Videohívás"</string> <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Videohívást kér"</string> <string name="card_title_video_call_error" msgid="9000555878389539225">"A videohívás létesítése sikertelen"</string> - <string name="card_title_video_call_paused" msgid="3753261320787432731">"Videohívás (szüneteltetve)"</string> + <!-- no translation found for card_title_video_call_rejected (462358296694719787) --> + <skip /> <string name="card_title_callback_number" msgid="7307938207564217293">"Visszahívható telefonszáma\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string> <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Vészhelyzet esetén visszahívható telefonszáma\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string> <string name="notification_dialing" msgid="2107666444937350731">"Tárcsázás"</string> @@ -167,4 +168,8 @@ <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> óra</item> <item quantity="one">1 óra</item> </plurals> + <!-- no translation found for profile_photo_description (5609894336203315400) --> + <skip /> + <!-- no translation found for camera_off_description (5689494614359429889) --> + <skip /> </resources> diff --git a/InCallUI/res/values-hy-rAM/strings.xml b/InCallUI/res/values-hy-rAM/strings.xml index f30dc5b6f..de0021614 100644 --- a/InCallUI/res/values-hy-rAM/strings.xml +++ b/InCallUI/res/values-hy-rAM/strings.xml @@ -49,7 +49,8 @@ <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_error" msgid="9000555878389539225">"Հնարավոր չէ կապակցել տեսազանգը"</string> - <string name="card_title_video_call_paused" msgid="3753261320787432731">"Տեսազանգ (դադարեցված)"</string> + <!-- no translation found for card_title_video_call_rejected (462358296694719787) --> + <skip /> <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> <string name="notification_dialing" msgid="2107666444937350731">"Համարարկում է"</string> @@ -167,4 +168,8 @@ <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> ժամ</item> <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> ժամ</item> </plurals> + <!-- no translation found for profile_photo_description (5609894336203315400) --> + <skip /> + <!-- no translation found for camera_off_description (5689494614359429889) --> + <skip /> </resources> diff --git a/InCallUI/res/values-in/strings.xml b/InCallUI/res/values-in/strings.xml index 43ae54a4b..941679620 100644 --- a/InCallUI/res/values-in/strings.xml +++ b/InCallUI/res/values-in/strings.xml @@ -49,7 +49,7 @@ <string name="card_title_video_call" msgid="5898636679563320218">"Video call"</string> <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Meminta video"</string> <string name="card_title_video_call_error" msgid="9000555878389539225">"Tidak dapat menyambungkan video call"</string> - <string name="card_title_video_call_paused" msgid="3753261320787432731">"Video call (Dijeda)"</string> + <string name="card_title_video_call_rejected" msgid="462358296694719787">"Permintaan video ditolak"</string> <string name="card_title_callback_number" msgid="7307938207564217293">"Nomor panggilan balik Anda\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string> <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Nomor panggilan balik darurat Anda\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string> <string name="notification_dialing" msgid="2107666444937350731">"Memanggil"</string> @@ -167,4 +167,6 @@ <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> jam</item> <item quantity="one">1 jam</item> </plurals> + <string name="profile_photo_description" msgid="5609894336203315400">"Foto profil"</string> + <string name="camera_off_description" msgid="5689494614359429889">"Kamera tidak aktif"</string> </resources> diff --git a/InCallUI/res/values-is-rIS/strings.xml b/InCallUI/res/values-is-rIS/strings.xml index 5f665d063..a45111ce0 100644 --- a/InCallUI/res/values-is-rIS/strings.xml +++ b/InCallUI/res/values-is-rIS/strings.xml @@ -49,7 +49,8 @@ <string name="card_title_video_call" msgid="5898636679563320218">"Myndsímtal"</string> <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Biður um myndskeið"</string> <string name="card_title_video_call_error" msgid="9000555878389539225">"Ekki tókst að tengja myndsímtal"</string> - <string name="card_title_video_call_paused" msgid="3753261320787432731">"Myndsímtal (í bið)"</string> + <!-- no translation found for card_title_video_call_rejected (462358296694719787) --> + <skip /> <string name="card_title_callback_number" msgid="7307938207564217293">"Svarhringinúmerið þitt\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string> <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Svarhringinúmerið þitt í neyð\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string> <string name="notification_dialing" msgid="2107666444937350731">"Hringir"</string> @@ -167,4 +168,8 @@ <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> klukkustund</item> <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> klukkustundir</item> </plurals> + <!-- no translation found for profile_photo_description (5609894336203315400) --> + <skip /> + <!-- no translation found for camera_off_description (5689494614359429889) --> + <skip /> </resources> diff --git a/InCallUI/res/values-it/strings.xml b/InCallUI/res/values-it/strings.xml index dc4980332..53c64788c 100644 --- a/InCallUI/res/values-it/strings.xml +++ b/InCallUI/res/values-it/strings.xml @@ -49,7 +49,8 @@ <string name="card_title_video_call" msgid="5898636679563320218">"Videochiamata"</string> <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Richiesta video..."</string> <string name="card_title_video_call_error" msgid="9000555878389539225">"Impossibile effettuare una videochiamata"</string> - <string name="card_title_video_call_paused" msgid="3753261320787432731">"Videochiamata (in pausa)"</string> + <!-- no translation found for card_title_video_call_rejected (462358296694719787) --> + <skip /> <string name="card_title_callback_number" msgid="7307938207564217293">"Il numero da richiamare\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string> <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Numero da richiamare in caso di emergenza\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string> <string name="notification_dialing" msgid="2107666444937350731">"Chiamata in corso"</string> @@ -167,4 +168,8 @@ <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> ore</item> <item quantity="one">1 ora</item> </plurals> + <!-- no translation found for profile_photo_description (5609894336203315400) --> + <skip /> + <!-- no translation found for camera_off_description (5689494614359429889) --> + <skip /> </resources> diff --git a/InCallUI/res/values-iw/strings.xml b/InCallUI/res/values-iw/strings.xml index ba80fc269..680b3f228 100644 --- a/InCallUI/res/values-iw/strings.xml +++ b/InCallUI/res/values-iw/strings.xml @@ -49,7 +49,8 @@ <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_error" msgid="9000555878389539225">"לא ניתן לחבר שיחת וידאו"</string> - <string name="card_title_video_call_paused" msgid="3753261320787432731">"שיחת וידאו (מושהית)"</string> + <!-- no translation found for card_title_video_call_rejected (462358296694719787) --> + <skip /> <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> <string name="notification_dialing" msgid="2107666444937350731">"מחייג"</string> @@ -173,4 +174,8 @@ <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> שעות</item> <item quantity="one">שעה אחת</item> </plurals> + <!-- no translation found for profile_photo_description (5609894336203315400) --> + <skip /> + <!-- no translation found for camera_off_description (5689494614359429889) --> + <skip /> </resources> diff --git a/InCallUI/res/values-ja/strings.xml b/InCallUI/res/values-ja/strings.xml index 7f731bf35..eecf2fc9c 100644 --- a/InCallUI/res/values-ja/strings.xml +++ b/InCallUI/res/values-ja/strings.xml @@ -49,7 +49,8 @@ <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_error" msgid="9000555878389539225">"ビデオハングアウトを接続できません"</string> - <string name="card_title_video_call_paused" msgid="3753261320787432731">"ビデオハングアウト(一時停止)"</string> + <!-- no translation found for card_title_video_call_rejected (462358296694719787) --> + <skip /> <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> <string name="notification_dialing" msgid="2107666444937350731">"発信中"</string> @@ -167,4 +168,8 @@ <item quantity="other"><xliff:g id="COUNT">%d</xliff:g>時間</item> <item quantity="one">1時間</item> </plurals> + <!-- no translation found for profile_photo_description (5609894336203315400) --> + <skip /> + <!-- no translation found for camera_off_description (5689494614359429889) --> + <skip /> </resources> diff --git a/InCallUI/res/values-ka-rGE/strings.xml b/InCallUI/res/values-ka-rGE/strings.xml index 39d74ce75..24a7204d4 100644 --- a/InCallUI/res/values-ka-rGE/strings.xml +++ b/InCallUI/res/values-ka-rGE/strings.xml @@ -49,7 +49,7 @@ <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_error" msgid="9000555878389539225">"ვერ ხორციელდება ვიდეო ზარით დაკავშირება"</string> - <string name="card_title_video_call_paused" msgid="3753261320787432731">"ვიდეოზარი (დაპაუზებული)"</string> + <string name="card_title_video_call_rejected" msgid="462358296694719787">"ვიდეო მოთხოვნა არ დაკმაყოფილდა"</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> <string name="notification_dialing" msgid="2107666444937350731">"აკრეფვა"</string> @@ -167,4 +167,6 @@ <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> საათი</item> <item quantity="one">1 საათი</item> </plurals> + <string name="profile_photo_description" msgid="5609894336203315400">"პროფილის ფოტო"</string> + <string name="camera_off_description" msgid="5689494614359429889">"კამერა გამორთულია"</string> </resources> diff --git a/InCallUI/res/values-kk-rKZ/strings.xml b/InCallUI/res/values-kk-rKZ/strings.xml index c96d13d38..26c179883 100644 --- a/InCallUI/res/values-kk-rKZ/strings.xml +++ b/InCallUI/res/values-kk-rKZ/strings.xml @@ -49,7 +49,8 @@ <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_error" msgid="9000555878389539225">"Бейне қоңырауға қосылу мүмкін емес"</string> - <string name="card_title_video_call_paused" msgid="3753261320787432731">"Бейне қоңырауы (кідіртілген)"</string> + <!-- no translation found for card_title_video_call_rejected (462358296694719787) --> + <skip /> <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> <string name="notification_dialing" msgid="2107666444937350731">"Теру"</string> @@ -167,4 +168,8 @@ <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> сағат</item> <item quantity="one">1 сағат</item> </plurals> + <!-- no translation found for profile_photo_description (5609894336203315400) --> + <skip /> + <!-- no translation found for camera_off_description (5689494614359429889) --> + <skip /> </resources> diff --git a/InCallUI/res/values-km-rKH/strings.xml b/InCallUI/res/values-km-rKH/strings.xml index fe00a4f84..8f533fe9e 100644 --- a/InCallUI/res/values-km-rKH/strings.xml +++ b/InCallUI/res/values-km-rKH/strings.xml @@ -49,7 +49,8 @@ <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_error" msgid="9000555878389539225">"មិនអាចភ្ជាប់ការហៅជាវីដេអូបានទេ"</string> - <string name="card_title_video_call_paused" msgid="3753261320787432731">"ការហៅជាវីដេអូ (បានផ្អាក)"</string> + <!-- no translation found for card_title_video_call_rejected (462358296694719787) --> + <skip /> <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> <string name="notification_dialing" msgid="2107666444937350731">"ហៅ"</string> @@ -167,4 +168,8 @@ <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> ម៉ោង</item> <item quantity="one">1 ម៉ោង</item> </plurals> + <!-- no translation found for profile_photo_description (5609894336203315400) --> + <skip /> + <!-- no translation found for camera_off_description (5689494614359429889) --> + <skip /> </resources> diff --git a/InCallUI/res/values-kn-rIN/strings.xml b/InCallUI/res/values-kn-rIN/strings.xml index 361d33678..a9d2e92f6 100644 --- a/InCallUI/res/values-kn-rIN/strings.xml +++ b/InCallUI/res/values-kn-rIN/strings.xml @@ -49,7 +49,8 @@ <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_error" msgid="9000555878389539225">"ವೀಡಿಯೊ ಕರೆಯನ್ನು ಸಂಪರ್ಕಪಡಿಸಲಾಗುವುದಿಲ್ಲ"</string> - <string name="card_title_video_call_paused" msgid="3753261320787432731">"ವೀಡಿಯೊ ಕರೆ (ವಿರಾಮಗೊಳಿಸಲಾಗಿದೆ)"</string> + <!-- no translation found for card_title_video_call_rejected (462358296694719787) --> + <skip /> <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> <string name="notification_dialing" msgid="2107666444937350731">"ಡಯಲ್ ಮಾಡಲಾಗುತ್ತಿದೆ"</string> @@ -167,4 +168,8 @@ <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> ಗಂಟೆಗಳು</item> <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> ಗಂಟೆಗಳು</item> </plurals> + <!-- no translation found for profile_photo_description (5609894336203315400) --> + <skip /> + <!-- no translation found for camera_off_description (5689494614359429889) --> + <skip /> </resources> diff --git a/InCallUI/res/values-ko/strings.xml b/InCallUI/res/values-ko/strings.xml index 79cf9be14..ff55c7f12 100644 --- a/InCallUI/res/values-ko/strings.xml +++ b/InCallUI/res/values-ko/strings.xml @@ -49,7 +49,8 @@ <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_error" msgid="9000555878389539225">"화상 통화를 연결할 수 없습니다."</string> - <string name="card_title_video_call_paused" msgid="3753261320787432731">"화상 통화(일시중지됨)"</string> + <!-- no translation found for card_title_video_call_rejected (462358296694719787) --> + <skip /> <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> <string name="notification_dialing" msgid="2107666444937350731">"전화 거는 중"</string> @@ -167,4 +168,8 @@ <item quantity="other"><xliff:g id="COUNT">%d</xliff:g>시간</item> <item quantity="one">1시간</item> </plurals> + <!-- no translation found for profile_photo_description (5609894336203315400) --> + <skip /> + <!-- no translation found for camera_off_description (5689494614359429889) --> + <skip /> </resources> diff --git a/InCallUI/res/values-ky-rKG/strings.xml b/InCallUI/res/values-ky-rKG/strings.xml index 6f850197b..04af9e253 100644 --- a/InCallUI/res/values-ky-rKG/strings.xml +++ b/InCallUI/res/values-ky-rKG/strings.xml @@ -71,7 +71,8 @@ <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_error" msgid="9000555878389539225">"Видео чалууга туташуу мүмкүн болбой жатат"</string> - <string name="card_title_video_call_paused" msgid="3753261320787432731">"Видео чалуу (Тындырылган)"</string> + <!-- no translation found for card_title_video_call_rejected (462358296694719787) --> + <skip /> <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> <string name="notification_dialing" msgid="2107666444937350731">"Терилүүдө"</string> @@ -218,4 +219,8 @@ <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> саат</item> <item quantity="one">1 саат</item> </plurals> + <!-- no translation found for profile_photo_description (5609894336203315400) --> + <skip /> + <!-- no translation found for camera_off_description (5689494614359429889) --> + <skip /> </resources> diff --git a/InCallUI/res/values-lo-rLA/strings.xml b/InCallUI/res/values-lo-rLA/strings.xml index 407859fc4..db3ba0ab7 100644 --- a/InCallUI/res/values-lo-rLA/strings.xml +++ b/InCallUI/res/values-lo-rLA/strings.xml @@ -49,7 +49,7 @@ <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_error" msgid="9000555878389539225">"ບໍ່ສາມາດເຊື່ອມຕໍ່ການໂທເຫັນພາບໄດ້"</string> - <string name="card_title_video_call_paused" msgid="3753261320787432731">"ໂທເຫັນພາບ (ຢຸດແລ້ວ)"</string> + <string name="card_title_video_call_rejected" msgid="462358296694719787">"ປະຕິເສດການຂໍວິດີໂອແລ້ວ"</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> <string name="notification_dialing" msgid="2107666444937350731">"ກຳລັງໂທ"</string> @@ -167,4 +167,6 @@ <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> ຊົ່ວໂມງ</item> <item quantity="one">1 ຊົ່ວໂມງ</item> </plurals> + <string name="profile_photo_description" msgid="5609894336203315400">"ຮູບໂປຣໄຟລ໌"</string> + <string name="camera_off_description" msgid="5689494614359429889">"ກ້ອງຖ່າຍຮູບປິດ"</string> </resources> diff --git a/InCallUI/res/values-lt/strings.xml b/InCallUI/res/values-lt/strings.xml index 0b703a7a0..359516b0b 100644 --- a/InCallUI/res/values-lt/strings.xml +++ b/InCallUI/res/values-lt/strings.xml @@ -49,7 +49,8 @@ <string name="card_title_video_call" msgid="5898636679563320218">"Vaizdo skambutis"</string> <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Pateikiama vaizdo skambučio užklausa"</string> <string name="card_title_video_call_error" msgid="9000555878389539225">"Nepavyko prijungti vaizdo įrašo skambučio"</string> - <string name="card_title_video_call_paused" msgid="3753261320787432731">"Vaizdo skambutis (pristabdytas)"</string> + <!-- no translation found for card_title_video_call_rejected (462358296694719787) --> + <skip /> <string name="card_title_callback_number" msgid="7307938207564217293">"Atskambinimo numeris\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string> <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Atskambinimo numeris, kuriuos skambina pagalbos tarnyba\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string> <string name="notification_dialing" msgid="2107666444937350731">"Renkamas numeris"</string> @@ -173,4 +174,8 @@ <item quantity="many"><xliff:g id="COUNT">%d</xliff:g> valandos</item> <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> valandų</item> </plurals> + <!-- no translation found for profile_photo_description (5609894336203315400) --> + <skip /> + <!-- no translation found for camera_off_description (5689494614359429889) --> + <skip /> </resources> diff --git a/InCallUI/res/values-lv/strings.xml b/InCallUI/res/values-lv/strings.xml index bb8eaf31d..3cbd39a52 100644 --- a/InCallUI/res/values-lv/strings.xml +++ b/InCallUI/res/values-lv/strings.xml @@ -49,7 +49,8 @@ <string name="card_title_video_call" msgid="5898636679563320218">"Videozvans"</string> <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Notiek video pieprasīšana"</string> <string name="card_title_video_call_error" msgid="9000555878389539225">"Nevar veikt videozvanu"</string> - <string name="card_title_video_call_paused" msgid="3753261320787432731">"Videozvans (pārtraukts)"</string> + <!-- no translation found for card_title_video_call_rejected (462358296694719787) --> + <skip /> <string name="card_title_callback_number" msgid="7307938207564217293">"Jūsu atzvana numurs\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string> <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Jūsu ārkārtas atzvana numurs\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string> <string name="notification_dialing" msgid="2107666444937350731">"Notiek numura sastādīšana"</string> @@ -170,4 +171,8 @@ <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> stunda</item> <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> stundas</item> </plurals> + <!-- no translation found for profile_photo_description (5609894336203315400) --> + <skip /> + <!-- no translation found for camera_off_description (5689494614359429889) --> + <skip /> </resources> diff --git a/InCallUI/res/values-mk-rMK/strings.xml b/InCallUI/res/values-mk-rMK/strings.xml index 93768da9f..0dd0ba34a 100644 --- a/InCallUI/res/values-mk-rMK/strings.xml +++ b/InCallUI/res/values-mk-rMK/strings.xml @@ -49,7 +49,8 @@ <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_error" msgid="9000555878389539225">"Не може да поврзе видеоповик"</string> - <string name="card_title_video_call_paused" msgid="3753261320787432731">"Видеоповик (Паузирано)"</string> + <!-- no translation found for card_title_video_call_rejected (462358296694719787) --> + <skip /> <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> <string name="notification_dialing" msgid="2107666444937350731">"Бирање"</string> @@ -167,4 +168,8 @@ <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> час</item> <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> часа</item> </plurals> + <!-- no translation found for profile_photo_description (5609894336203315400) --> + <skip /> + <!-- no translation found for camera_off_description (5689494614359429889) --> + <skip /> </resources> diff --git a/InCallUI/res/values-ml-rIN/strings.xml b/InCallUI/res/values-ml-rIN/strings.xml index f5c396fd3..69bce29d2 100644 --- a/InCallUI/res/values-ml-rIN/strings.xml +++ b/InCallUI/res/values-ml-rIN/strings.xml @@ -49,7 +49,8 @@ <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_error" msgid="9000555878389539225">"വീഡിയോ കോളുമായി കണക്റ്റുചെയ്യാനാവില്ല"</string> - <string name="card_title_video_call_paused" msgid="3753261320787432731">"വീഡിയോ കോൾ (താൽക്കാലികമായി നിർത്തി)"</string> + <!-- no translation found for card_title_video_call_rejected (462358296694719787) --> + <skip /> <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> <string name="notification_dialing" msgid="2107666444937350731">"ഡയൽ ചെയ്യുന്നു"</string> @@ -167,4 +168,8 @@ <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> മണിക്കൂർ</item> <item quantity="one">1 മണിക്കൂർ</item> </plurals> + <!-- no translation found for profile_photo_description (5609894336203315400) --> + <skip /> + <!-- no translation found for camera_off_description (5689494614359429889) --> + <skip /> </resources> diff --git a/InCallUI/res/values-mn-rMN/strings.xml b/InCallUI/res/values-mn-rMN/strings.xml index 95a3d8128..f3ce27af4 100644 --- a/InCallUI/res/values-mn-rMN/strings.xml +++ b/InCallUI/res/values-mn-rMN/strings.xml @@ -49,7 +49,8 @@ <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_error" msgid="9000555878389539225">"Видео дуудлага амжилтгүй боллоо"</string> - <string name="card_title_video_call_paused" msgid="3753261320787432731">"Видео дуудлага (түр зогсоосон)"</string> + <!-- no translation found for card_title_video_call_rejected (462358296694719787) --> + <skip /> <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> <string name="notification_dialing" msgid="2107666444937350731">"Залгаж байна"</string> @@ -167,4 +168,8 @@ <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> цаг</item> <item quantity="one">1 цаг</item> </plurals> + <!-- no translation found for profile_photo_description (5609894336203315400) --> + <skip /> + <!-- no translation found for camera_off_description (5689494614359429889) --> + <skip /> </resources> diff --git a/InCallUI/res/values-mr-rIN/strings.xml b/InCallUI/res/values-mr-rIN/strings.xml index 86528d73b..f3b1b0fa9 100644 --- a/InCallUI/res/values-mr-rIN/strings.xml +++ b/InCallUI/res/values-mr-rIN/strings.xml @@ -49,7 +49,8 @@ <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_error" msgid="9000555878389539225">"व्हिडिओ कॉल कनेक्ट करू शकत नाही"</string> - <string name="card_title_video_call_paused" msgid="3753261320787432731">"व्हिडिओ कॉल (विराम दिला)"</string> + <!-- no translation found for card_title_video_call_rejected (462358296694719787) --> + <skip /> <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> <string name="notification_dialing" msgid="2107666444937350731">"डायल करीत आहे"</string> @@ -167,4 +168,8 @@ <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> तास</item> <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> तास</item> </plurals> + <!-- no translation found for profile_photo_description (5609894336203315400) --> + <skip /> + <!-- no translation found for camera_off_description (5689494614359429889) --> + <skip /> </resources> diff --git a/InCallUI/res/values-ms-rMY/strings.xml b/InCallUI/res/values-ms-rMY/strings.xml index 7de6a11a0..502e55d79 100644 --- a/InCallUI/res/values-ms-rMY/strings.xml +++ b/InCallUI/res/values-ms-rMY/strings.xml @@ -49,7 +49,8 @@ <string name="card_title_video_call" msgid="5898636679563320218">"Pgln video"</string> <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Meminta video"</string> <string name="card_title_video_call_error" msgid="9000555878389539225">"Tidak dapat menyambungkan panggilan video"</string> - <string name="card_title_video_call_paused" msgid="3753261320787432731">"Panggilan video (Dijeda)"</string> + <!-- no translation found for card_title_video_call_rejected (462358296694719787) --> + <skip /> <string name="card_title_callback_number" msgid="7307938207564217293">"Nombor panggil balik anda\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string> <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Nombor panggil balik kecemasan anda\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string> <string name="notification_dialing" msgid="2107666444937350731">"Mendail"</string> @@ -167,4 +168,8 @@ <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> jam</item> <item quantity="one">1 jam</item> </plurals> + <!-- no translation found for profile_photo_description (5609894336203315400) --> + <skip /> + <!-- no translation found for camera_off_description (5689494614359429889) --> + <skip /> </resources> diff --git a/InCallUI/res/values-my-rMM/strings.xml b/InCallUI/res/values-my-rMM/strings.xml index 1cecb5558..0b7bf83e1 100644 --- a/InCallUI/res/values-my-rMM/strings.xml +++ b/InCallUI/res/values-my-rMM/strings.xml @@ -49,7 +49,7 @@ <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_error" msgid="9000555878389539225">"ဗွီဒီယို ခေါ်ဆိုမှု မပြုနိုင်။"</string> - <string name="card_title_video_call_paused" msgid="3753261320787432731">"ဗီဒီယိုခေါ်ဆိုမှု (ရပ်ထားသည်)"</string> + <string name="card_title_video_call_rejected" msgid="462358296694719787">"ဗီဒီယို တောင်းဆိုချက် ပယ်ချ၏"</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> <string name="notification_dialing" msgid="2107666444937350731">"ဖုန်းခေါ်နေစဉ်"</string> @@ -167,4 +167,6 @@ <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> နာရီများ</item> <item quantity="one">၁ နာရီ</item> </plurals> + <string name="profile_photo_description" msgid="5609894336203315400">"ပရိုဖိုင် ဓာတ်ပုံ"</string> + <string name="camera_off_description" msgid="5689494614359429889">"ကင်မရာ ပိတ်ရန်"</string> </resources> diff --git a/InCallUI/res/values-nb/strings.xml b/InCallUI/res/values-nb/strings.xml index 23d3efaa2..b3b6a8236 100644 --- a/InCallUI/res/values-nb/strings.xml +++ b/InCallUI/res/values-nb/strings.xml @@ -49,7 +49,8 @@ <string name="card_title_video_call" msgid="5898636679563320218">"Videoanrop"</string> <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Ber om video"</string> <string name="card_title_video_call_error" msgid="9000555878389539225">"Kan ikke koble til videosamtale"</string> - <string name="card_title_video_call_paused" msgid="3753261320787432731">"Videosamtale (satt på pause)"</string> + <!-- no translation found for card_title_video_call_rejected (462358296694719787) --> + <skip /> <string name="card_title_callback_number" msgid="7307938207564217293">"Ditt tilbakeringingsnummer\n<xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string> <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Ditt tilbakeringingsnummer for nødsamtaler\n<xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string> <string name="notification_dialing" msgid="2107666444937350731">"Slår nummeret"</string> @@ -167,4 +168,8 @@ <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> timer</item> <item quantity="one">1 time</item> </plurals> + <!-- no translation found for profile_photo_description (5609894336203315400) --> + <skip /> + <!-- no translation found for camera_off_description (5689494614359429889) --> + <skip /> </resources> diff --git a/InCallUI/res/values-ne-rNP/strings.xml b/InCallUI/res/values-ne-rNP/strings.xml index 186b02495..bebc3812b 100644 --- a/InCallUI/res/values-ne-rNP/strings.xml +++ b/InCallUI/res/values-ne-rNP/strings.xml @@ -49,7 +49,8 @@ <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_error" msgid="9000555878389539225">"भिडियो कल जडान गर्न सक्दैन"</string> - <string name="card_title_video_call_paused" msgid="3753261320787432731">"भिडियो कल (पज गरिएको)"</string> + <!-- no translation found for card_title_video_call_rejected (462358296694719787) --> + <skip /> <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> <string name="notification_dialing" msgid="2107666444937350731">"डायल गर्ने"</string> @@ -167,4 +168,8 @@ <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> घन्टा</item> <item quantity="one">१ घन्टा</item> </plurals> + <!-- no translation found for profile_photo_description (5609894336203315400) --> + <skip /> + <!-- no translation found for camera_off_description (5689494614359429889) --> + <skip /> </resources> diff --git a/InCallUI/res/values-nl/strings.xml b/InCallUI/res/values-nl/strings.xml index c48805e62..366bccd8b 100644 --- a/InCallUI/res/values-nl/strings.xml +++ b/InCallUI/res/values-nl/strings.xml @@ -49,7 +49,8 @@ <string name="card_title_video_call" msgid="5898636679563320218">"Videogesprek"</string> <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Video aanvragen"</string> <string name="card_title_video_call_error" msgid="9000555878389539225">"Kan geen videogesprek starten"</string> - <string name="card_title_video_call_paused" msgid="3753261320787432731">"Videogesprek (onderbreken)"</string> + <!-- no translation found for card_title_video_call_rejected (462358296694719787) --> + <skip /> <string name="card_title_callback_number" msgid="7307938207564217293">"Uw terugbelnummer\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string> <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Uw terugbelnummer bij alarm\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string> <string name="notification_dialing" msgid="2107666444937350731">"Kiezen"</string> @@ -167,4 +168,8 @@ <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> uur</item> <item quantity="one">1 uur</item> </plurals> + <!-- no translation found for profile_photo_description (5609894336203315400) --> + <skip /> + <!-- no translation found for camera_off_description (5689494614359429889) --> + <skip /> </resources> diff --git a/InCallUI/res/values-pl/strings.xml b/InCallUI/res/values-pl/strings.xml index 10721145d..7d99cc220 100644 --- a/InCallUI/res/values-pl/strings.xml +++ b/InCallUI/res/values-pl/strings.xml @@ -49,7 +49,8 @@ <string name="card_title_video_call" msgid="5898636679563320218">"Rozmowa wideo"</string> <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Wysyłanie żądania wideo"</string> <string name="card_title_video_call_error" msgid="9000555878389539225">"Nie można nawiązać połączenia wideo"</string> - <string name="card_title_video_call_paused" msgid="3753261320787432731">"Rozmowa wideo (wstrzymana)"</string> + <!-- no translation found for card_title_video_call_rejected (462358296694719787) --> + <skip /> <string name="card_title_callback_number" msgid="7307938207564217293">"Twój numer oddzwaniania\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string> <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Twój numer oddzwaniania dla połączeń alarmowych\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string> <string name="notification_dialing" msgid="2107666444937350731">"Trwa wybieranie numeru"</string> @@ -173,4 +174,8 @@ <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> godziny</item> <item quantity="one">1 godzina</item> </plurals> + <!-- no translation found for profile_photo_description (5609894336203315400) --> + <skip /> + <!-- no translation found for camera_off_description (5689494614359429889) --> + <skip /> </resources> diff --git a/InCallUI/res/values-pt-rPT/strings.xml b/InCallUI/res/values-pt-rPT/strings.xml index 83560ef95..eec97db54 100644 --- a/InCallUI/res/values-pt-rPT/strings.xml +++ b/InCallUI/res/values-pt-rPT/strings.xml @@ -49,7 +49,8 @@ <string name="card_title_video_call" msgid="5898636679563320218">"Videochamada"</string> <string name="card_title_video_call_requesting" msgid="4587504939739340937">"A solicitar vídeo"</string> <string name="card_title_video_call_error" msgid="9000555878389539225">"Não é possível ligar a videochamada"</string> - <string name="card_title_video_call_paused" msgid="3753261320787432731">"Videochamada (em pausa)"</string> + <!-- no translation found for card_title_video_call_rejected (462358296694719787) --> + <skip /> <string name="card_title_callback_number" msgid="7307938207564217293">"O seu número de retorno de chamada\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string> <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"O seu número de retorno de chamadas de emergência\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string> <string name="notification_dialing" msgid="2107666444937350731">"A marcar"</string> @@ -167,4 +168,8 @@ <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> horas</item> <item quantity="one">1 hora</item> </plurals> + <!-- no translation found for profile_photo_description (5609894336203315400) --> + <skip /> + <!-- no translation found for camera_off_description (5689494614359429889) --> + <skip /> </resources> diff --git a/InCallUI/res/values-pt/strings.xml b/InCallUI/res/values-pt/strings.xml index 9f9309796..db185ee0f 100644 --- a/InCallUI/res/values-pt/strings.xml +++ b/InCallUI/res/values-pt/strings.xml @@ -49,7 +49,8 @@ <string name="card_title_video_call" msgid="5898636679563320218">"Vídeo chamada"</string> <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Solicitando vídeo"</string> <string name="card_title_video_call_error" msgid="9000555878389539225">"Não é possível conectar a vídeo chamada"</string> - <string name="card_title_video_call_paused" msgid="3753261320787432731">"Vídeo chamada (pausada)"</string> + <!-- no translation found for card_title_video_call_rejected (462358296694719787) --> + <skip /> <string name="card_title_callback_number" msgid="7307938207564217293">"Seu número de retorno de chamada\n<xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string> <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Seu número de retorno de chamada de emergência\n<xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string> <string name="notification_dialing" msgid="2107666444937350731">"Discando"</string> @@ -167,4 +168,8 @@ <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> horas</item> <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> horas</item> </plurals> + <!-- no translation found for profile_photo_description (5609894336203315400) --> + <skip /> + <!-- no translation found for camera_off_description (5689494614359429889) --> + <skip /> </resources> diff --git a/InCallUI/res/values-ro/strings.xml b/InCallUI/res/values-ro/strings.xml index 768c3916d..83af1e0a5 100644 --- a/InCallUI/res/values-ro/strings.xml +++ b/InCallUI/res/values-ro/strings.xml @@ -49,7 +49,8 @@ <string name="card_title_video_call" msgid="5898636679563320218">"Apel video"</string> <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Se solicită video"</string> <string name="card_title_video_call_error" msgid="9000555878389539225">"Nu se poate conecta apelul video"</string> - <string name="card_title_video_call_paused" msgid="3753261320787432731">"Apel video (întrerupt)"</string> + <!-- no translation found for card_title_video_call_rejected (462358296694719787) --> + <skip /> <string name="card_title_callback_number" msgid="7307938207564217293">"Numărul de apelare inversă\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string> <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Numărul de apelare inversă de urgență\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string> <string name="notification_dialing" msgid="2107666444937350731">"Apelează"</string> @@ -170,4 +171,8 @@ <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> de ore</item> <item quantity="one">O oră</item> </plurals> + <!-- no translation found for profile_photo_description (5609894336203315400) --> + <skip /> + <!-- no translation found for camera_off_description (5689494614359429889) --> + <skip /> </resources> diff --git a/InCallUI/res/values-ru/strings.xml b/InCallUI/res/values-ru/strings.xml index a690a32ef..89428528f 100644 --- a/InCallUI/res/values-ru/strings.xml +++ b/InCallUI/res/values-ru/strings.xml @@ -49,7 +49,8 @@ <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_error" msgid="9000555878389539225">"Не удалось совершить видеовызов"</string> - <string name="card_title_video_call_paused" msgid="3753261320787432731">"Видеозвонок (на паузе)"</string> + <!-- no translation found for card_title_video_call_rejected (462358296694719787) --> + <skip /> <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> <string name="notification_dialing" msgid="2107666444937350731">"Набор номера"</string> @@ -173,4 +174,8 @@ <item quantity="many"><xliff:g id="COUNT">%d</xliff:g> часов</item> <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> часа</item> </plurals> + <!-- no translation found for profile_photo_description (5609894336203315400) --> + <skip /> + <!-- no translation found for camera_off_description (5689494614359429889) --> + <skip /> </resources> diff --git a/InCallUI/res/values-si-rLK/strings.xml b/InCallUI/res/values-si-rLK/strings.xml index f3329023f..c6034607d 100644 --- a/InCallUI/res/values-si-rLK/strings.xml +++ b/InCallUI/res/values-si-rLK/strings.xml @@ -49,7 +49,7 @@ <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_error" msgid="9000555878389539225">"වීඩියෝ ඇමතුම සම්බන්ධ කළ නොහැක"</string> - <string name="card_title_video_call_paused" msgid="3753261320787432731">"වීඩියෝ ඇමතුම (විරාමය)"</string> + <string name="card_title_video_call_rejected" msgid="462358296694719787">"වීඩියෝ ඉල්ලීම ප්රතික්ෂේප කරන ලදී"</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> <string name="notification_dialing" msgid="2107666444937350731">"අමතමින්"</string> @@ -167,4 +167,6 @@ <item quantity="one">පැය <xliff:g id="COUNT">%d</xliff:g></item> <item quantity="other">පැය <xliff:g id="COUNT">%d</xliff:g></item> </plurals> + <string name="profile_photo_description" msgid="5609894336203315400">"පැතිකඩ ඡායාරූපය"</string> + <string name="camera_off_description" msgid="5689494614359429889">"කැමරාව ක්රියාවිරහිතයි"</string> </resources> diff --git a/InCallUI/res/values-sk/strings.xml b/InCallUI/res/values-sk/strings.xml index de12d0ca1..2f32560ec 100644 --- a/InCallUI/res/values-sk/strings.xml +++ b/InCallUI/res/values-sk/strings.xml @@ -49,7 +49,8 @@ <string name="card_title_video_call" msgid="5898636679563320218">"Videohovor"</string> <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Žiada sa video"</string> <string name="card_title_video_call_error" msgid="9000555878389539225">"Videohovor nie je možné pripojiť"</string> - <string name="card_title_video_call_paused" msgid="3753261320787432731">"Videohovor (pozastavený)"</string> + <!-- no translation found for card_title_video_call_rejected (462358296694719787) --> + <skip /> <string name="card_title_callback_number" msgid="7307938207564217293">"Vaše číslo na spätné volanie\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string> <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Vaše číslo na spätné tiesňové volanie\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string> <string name="notification_dialing" msgid="2107666444937350731">"Vytáčanie"</string> @@ -173,4 +174,8 @@ <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> hodín</item> <item quantity="one">1 hodina</item> </plurals> + <!-- no translation found for profile_photo_description (5609894336203315400) --> + <skip /> + <!-- no translation found for camera_off_description (5689494614359429889) --> + <skip /> </resources> diff --git a/InCallUI/res/values-sl/strings.xml b/InCallUI/res/values-sl/strings.xml index 58675e974..364ace542 100644 --- a/InCallUI/res/values-sl/strings.xml +++ b/InCallUI/res/values-sl/strings.xml @@ -49,7 +49,8 @@ <string name="card_title_video_call" msgid="5898636679563320218">"Videoklic"</string> <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Zahtevanje videa"</string> <string name="card_title_video_call_error" msgid="9000555878389539225">"Videoklica ni mogoče vzpostaviti"</string> - <string name="card_title_video_call_paused" msgid="3753261320787432731">"Videoklic (zaustavljen)"</string> + <!-- no translation found for card_title_video_call_rejected (462358296694719787) --> + <skip /> <string name="card_title_callback_number" msgid="7307938207564217293">"Vaša številka za povratni klic:\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string> <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Vaša številka za povratni klic v sili:\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string> <string name="notification_dialing" msgid="2107666444937350731">"Klicanje"</string> @@ -173,4 +174,8 @@ <item quantity="few"><xliff:g id="COUNT">%d</xliff:g> ure</item> <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> ur</item> </plurals> + <!-- no translation found for profile_photo_description (5609894336203315400) --> + <skip /> + <!-- no translation found for camera_off_description (5689494614359429889) --> + <skip /> </resources> diff --git a/InCallUI/res/values-sr/strings.xml b/InCallUI/res/values-sr/strings.xml index c20f2fba5..5571bb375 100644 --- a/InCallUI/res/values-sr/strings.xml +++ b/InCallUI/res/values-sr/strings.xml @@ -49,7 +49,8 @@ <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_error" msgid="9000555878389539225">"Повезивање видео позива није успело"</string> - <string name="card_title_video_call_paused" msgid="3753261320787432731">"Видео позив (паузиран)"</string> + <!-- no translation found for card_title_video_call_rejected (462358296694719787) --> + <skip /> <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> <string name="notification_dialing" msgid="2107666444937350731">"Бирање"</string> @@ -170,4 +171,8 @@ <item quantity="few"><xliff:g id="COUNT">%d</xliff:g> сата</item> <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> сати</item> </plurals> + <!-- no translation found for profile_photo_description (5609894336203315400) --> + <skip /> + <!-- no translation found for camera_off_description (5689494614359429889) --> + <skip /> </resources> diff --git a/InCallUI/res/values-sv/strings.xml b/InCallUI/res/values-sv/strings.xml index 4ee298e08..12d315ad8 100644 --- a/InCallUI/res/values-sv/strings.xml +++ b/InCallUI/res/values-sv/strings.xml @@ -49,7 +49,8 @@ <string name="card_title_video_call" msgid="5898636679563320218">"Videosamtal"</string> <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Begär video"</string> <string name="card_title_video_call_error" msgid="9000555878389539225">"Det gick inte att ansluta till videosamtalet"</string> - <string name="card_title_video_call_paused" msgid="3753261320787432731">"Videosamtal (pausat)"</string> + <!-- no translation found for card_title_video_call_rejected (462358296694719787) --> + <skip /> <string name="card_title_callback_number" msgid="7307938207564217293">"Ditt nummer för återuppringning\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string> <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Ditt nödnummer för återuppringning\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string> <string name="notification_dialing" msgid="2107666444937350731">"Ringer"</string> @@ -167,4 +168,8 @@ <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> timmar</item> <item quantity="one">1 timme</item> </plurals> + <!-- no translation found for profile_photo_description (5609894336203315400) --> + <skip /> + <!-- no translation found for camera_off_description (5689494614359429889) --> + <skip /> </resources> diff --git a/InCallUI/res/values-sw/strings.xml b/InCallUI/res/values-sw/strings.xml index 3801c91c5..806ab398d 100644 --- a/InCallUI/res/values-sw/strings.xml +++ b/InCallUI/res/values-sw/strings.xml @@ -49,7 +49,8 @@ <string name="card_title_video_call" msgid="5898636679563320218">"Hangout ya Video"</string> <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Inaomba video"</string> <string name="card_title_video_call_error" msgid="9000555878389539225">"Haiwezi kuunganisha Hangout ya video"</string> - <string name="card_title_video_call_paused" msgid="3753261320787432731">"Hangout ya video (Imesitishwa)"</string> + <!-- no translation found for card_title_video_call_rejected (462358296694719787) --> + <skip /> <string name="card_title_callback_number" msgid="7307938207564217293">"Nambari yako ya kupigiwa simu\n<xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string> <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Nambari yako ya dharura ya kupigiwa simu\n<xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string> <string name="notification_dialing" msgid="2107666444937350731">"Inapiga"</string> @@ -167,4 +168,8 @@ <item quantity="other">Saa <xliff:g id="COUNT">%d</xliff:g></item> <item quantity="one">Saa 1</item> </plurals> + <!-- no translation found for profile_photo_description (5609894336203315400) --> + <skip /> + <!-- no translation found for camera_off_description (5689494614359429889) --> + <skip /> </resources> diff --git a/InCallUI/res/drawable/btn_change_to_voice.xml b/InCallUI/res/values-sw410dp/config.xml index 86a7f21d5..a57f86784 100644 --- a/InCallUI/res/drawable/btn_change_to_voice.xml +++ b/InCallUI/res/values-sw410dp/config.xml @@ -1,7 +1,5 @@ -<?xml version="1.0" encoding="utf-8"?> - <!-- - ~ Copyright (C) 2014 The Android Open Source Project + ~ 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. @@ -16,16 +14,8 @@ ~ limitations under the License --> -<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> - - <item android:id="@+id/backgroundItem" - android:drawable="@drawable/btn_background" /> - - <item> - <bitmap android:src="@drawable/ic_toolbar_audio_phone" - android:gravity="center" - android:tint="@color/selectable_icon_tint" - android:autoMirrored="true" /> - </item> - -</layer-list>
\ No newline at end of file +<resources> + <!-- Determines the maximum number of buttons visible on the call card. Any buttons over this + count are put into the overflow menu. --> + <integer name="call_card_max_buttons">6</integer> +</resources>
\ No newline at end of file diff --git a/InCallUI/res/values-ta-rIN/strings.xml b/InCallUI/res/values-ta-rIN/strings.xml index 935a81372..1d3994125 100644 --- a/InCallUI/res/values-ta-rIN/strings.xml +++ b/InCallUI/res/values-ta-rIN/strings.xml @@ -49,7 +49,8 @@ <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_error" msgid="9000555878389539225">"வீடியோ அழைப்பை இணைக்க முடியாது"</string> - <string name="card_title_video_call_paused" msgid="3753261320787432731">"வீடியோ அழைப்பு (இடைநிறுத்தப்பட்டது)"</string> + <!-- no translation found for card_title_video_call_rejected (462358296694719787) --> + <skip /> <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> <string name="notification_dialing" msgid="2107666444937350731">"அழைக்கிறது"</string> @@ -167,4 +168,8 @@ <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> மணிநேரம்</item> <item quantity="one">1 மணிநேரம்</item> </plurals> + <!-- no translation found for profile_photo_description (5609894336203315400) --> + <skip /> + <!-- no translation found for camera_off_description (5689494614359429889) --> + <skip /> </resources> diff --git a/InCallUI/res/values-te-rIN/strings.xml b/InCallUI/res/values-te-rIN/strings.xml index 87a47e2b5..757dffdaa 100644 --- a/InCallUI/res/values-te-rIN/strings.xml +++ b/InCallUI/res/values-te-rIN/strings.xml @@ -49,7 +49,8 @@ <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_error" msgid="9000555878389539225">"వీడియో కాల్ను కనెక్ట్ చేయలేరు"</string> - <string name="card_title_video_call_paused" msgid="3753261320787432731">"వీడియో కాల్ (పాజ్ చేయబడింది)"</string> + <!-- no translation found for card_title_video_call_rejected (462358296694719787) --> + <skip /> <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> <string name="notification_dialing" msgid="2107666444937350731">"డయల్ చేస్తోంది"</string> @@ -167,4 +168,8 @@ <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> గంటలు</item> <item quantity="one">1 గంట</item> </plurals> + <!-- no translation found for profile_photo_description (5609894336203315400) --> + <skip /> + <!-- no translation found for camera_off_description (5689494614359429889) --> + <skip /> </resources> diff --git a/InCallUI/res/values-th/strings.xml b/InCallUI/res/values-th/strings.xml index 53ac19167..7c59a56a4 100644 --- a/InCallUI/res/values-th/strings.xml +++ b/InCallUI/res/values-th/strings.xml @@ -49,7 +49,8 @@ <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_error" msgid="9000555878389539225">"ไม่สามารถเชื่อมต่อแฮงเอาท์วิดีโอได้"</string> - <string name="card_title_video_call_paused" msgid="3753261320787432731">"แฮงเอาท์วิดีโอ (หยุดชั่วคราว)"</string> + <!-- no translation found for card_title_video_call_rejected (462358296694719787) --> + <skip /> <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> <string name="notification_dialing" msgid="2107666444937350731">"กำลังโทรออก"</string> @@ -167,4 +168,8 @@ <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> ชั่วโมง</item> <item quantity="one">1 ชั่วโมง</item> </plurals> + <!-- no translation found for profile_photo_description (5609894336203315400) --> + <skip /> + <!-- no translation found for camera_off_description (5689494614359429889) --> + <skip /> </resources> diff --git a/InCallUI/res/values-tl/strings.xml b/InCallUI/res/values-tl/strings.xml index a228dc8f5..cf8d3ec48 100644 --- a/InCallUI/res/values-tl/strings.xml +++ b/InCallUI/res/values-tl/strings.xml @@ -49,7 +49,8 @@ <string name="card_title_video_call" msgid="5898636679563320218">"Video call"</string> <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Humihiling ng video"</string> <string name="card_title_video_call_error" msgid="9000555878389539225">"Hindi makakonekta sa video call"</string> - <string name="card_title_video_call_paused" msgid="3753261320787432731">"Video call (Naka-pause)"</string> + <!-- no translation found for card_title_video_call_rejected (462358296694719787) --> + <skip /> <string name="card_title_callback_number" msgid="7307938207564217293">"Ang iyong numero ng callback\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string> <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Ang iyong emergency na numero ng callback\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string> <string name="notification_dialing" msgid="2107666444937350731">"Dina-dial"</string> @@ -167,4 +168,8 @@ <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> oras</item> <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> na oras</item> </plurals> + <!-- no translation found for profile_photo_description (5609894336203315400) --> + <skip /> + <!-- no translation found for camera_off_description (5689494614359429889) --> + <skip /> </resources> diff --git a/InCallUI/res/values-tr/strings.xml b/InCallUI/res/values-tr/strings.xml index e398e366b..3d041306f 100644 --- a/InCallUI/res/values-tr/strings.xml +++ b/InCallUI/res/values-tr/strings.xml @@ -49,7 +49,8 @@ <string name="card_title_video_call" msgid="5898636679563320218">"Video görüşmesi"</string> <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Video isteniyor"</string> <string name="card_title_video_call_error" msgid="9000555878389539225">"Video görüşmesi bağlantısı yapılamıyor"</string> - <string name="card_title_video_call_paused" msgid="3753261320787432731">"Video görüşmesi (Duraklatıldı)"</string> + <!-- no translation found for card_title_video_call_rejected (462358296694719787) --> + <skip /> <string name="card_title_callback_number" msgid="7307938207564217293">"Geri arama numaranız\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string> <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Acil durum geri arama numaranız\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string> <string name="notification_dialing" msgid="2107666444937350731">"Çevriliyor"</string> @@ -167,4 +168,8 @@ <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> saat</item> <item quantity="one">1 saat</item> </plurals> + <!-- no translation found for profile_photo_description (5609894336203315400) --> + <skip /> + <!-- no translation found for camera_off_description (5689494614359429889) --> + <skip /> </resources> diff --git a/InCallUI/res/values-uk/strings.xml b/InCallUI/res/values-uk/strings.xml index 71f7de09f..2acb148ee 100644 --- a/InCallUI/res/values-uk/strings.xml +++ b/InCallUI/res/values-uk/strings.xml @@ -49,7 +49,8 @@ <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_error" msgid="9000555878389539225">"Неможливо здійснити відеодзвінок"</string> - <string name="card_title_video_call_paused" msgid="3753261320787432731">"Відеодзвінок (призупинено)"</string> + <!-- no translation found for card_title_video_call_rejected (462358296694719787) --> + <skip /> <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> <string name="notification_dialing" msgid="2107666444937350731">"Набір"</string> @@ -173,4 +174,8 @@ <item quantity="many"><xliff:g id="COUNT">%d</xliff:g> годин</item> <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> години</item> </plurals> + <!-- no translation found for profile_photo_description (5609894336203315400) --> + <skip /> + <!-- no translation found for camera_off_description (5689494614359429889) --> + <skip /> </resources> diff --git a/InCallUI/res/values-ur-rPK/strings.xml b/InCallUI/res/values-ur-rPK/strings.xml index c07cf9ccc..d4f6c515d 100644 --- a/InCallUI/res/values-ur-rPK/strings.xml +++ b/InCallUI/res/values-ur-rPK/strings.xml @@ -49,7 +49,8 @@ <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_error" msgid="9000555878389539225">"ویڈیو کال منسلک نہیں کر سکتا"</string> - <string name="card_title_video_call_paused" msgid="3753261320787432731">"ویڈیو کال (موقوف)"</string> + <!-- no translation found for card_title_video_call_rejected (462358296694719787) --> + <skip /> <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> <string name="notification_dialing" msgid="2107666444937350731">"ڈائل ہو رہا ہے"</string> @@ -167,4 +168,8 @@ <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> گھنٹے</item> <item quantity="one">1 گھنٹہ</item> </plurals> + <!-- no translation found for profile_photo_description (5609894336203315400) --> + <skip /> + <!-- no translation found for camera_off_description (5689494614359429889) --> + <skip /> </resources> diff --git a/InCallUI/res/values-uz-rUZ/strings.xml b/InCallUI/res/values-uz-rUZ/strings.xml index cbacaac2e..914467971 100644 --- a/InCallUI/res/values-uz-rUZ/strings.xml +++ b/InCallUI/res/values-uz-rUZ/strings.xml @@ -35,7 +35,7 @@ <string name="pause_prompt_no" msgid="6686238803236884877">"Yo‘q"</string> <string name="wild_prompt_str" msgid="5543521676355533577">"Belgilarni quyidagilar bilan almashtiring:"</string> <string name="caller_manage_header" msgid="3231519674734638786">"Konferensiya qo‘ng‘irog‘i <xliff:g id="CONF_CALL_TIME">%s</xliff:g>"</string> - <string name="voicemail_settings_number_label" msgid="8524164258691887790">"Ovozli xabar raqami"</string> + <string name="voicemail_settings_number_label" msgid="8524164258691887790">"Ovozli pochta raqami"</string> <string name="card_title_dialing" msgid="5769417478498348054">"Raqam terilmoqda"</string> <string name="card_title_redialing" msgid="8253487008234167266">"Qayta terilmoqda"</string> <string name="card_title_conf_call" msgid="1162980346189744501">"Konferensiya qo‘ng‘irog‘i"</string> @@ -49,14 +49,14 @@ <string name="card_title_video_call" msgid="5898636679563320218">"Video qo‘ng‘iroq"</string> <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Video so\'ralmoqda"</string> <string name="card_title_video_call_error" msgid="9000555878389539225">"Video qo‘ng‘iroqqa ulanib bo‘lmadi"</string> - <string name="card_title_video_call_paused" msgid="3753261320787432731">"Video qo‘ng‘iroqlar (to‘xtatildi)"</string> + <string name="card_title_video_call_rejected" msgid="462358296694719787">"Video qo‘ng‘iroq so‘rovi rad etildi"</string> <string name="card_title_callback_number" msgid="7307938207564217293">"Teskari qo‘ng‘iroq raqamingiz\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string> <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Favqulodda holatlar uchun teskari qo‘ng‘iroq raqamingiz\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string> <string name="notification_dialing" msgid="2107666444937350731">"Terilmoqda"</string> - <string name="notification_missedCallTitle" msgid="7554385905572364535">"Javob berilmagan qo‘ng‘iroq"</string> + <string name="notification_missedCallTitle" msgid="7554385905572364535">"Javobsiz qo‘ng‘iroq"</string> <string name="notification_missedCallsTitle" msgid="1361677948941502522">"Javobsiz qo‘ng‘iroqlar"</string> <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_missedCallTicker" msgid="504686252427747209">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g> qo‘ng‘irog‘i javobsiz qoldirildi"</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> @@ -67,7 +67,7 @@ <string name="notification_voicemail_title" msgid="8933468752045550523">"Yangi ovozli xabar"</string> <string name="notification_voicemail_title_count" msgid="4366360747660929916">"Yangi ovozli xabar (<xliff:g id="COUNT">%d</xliff:g>)"</string> <string name="notification_voicemail_text_format" msgid="4447323569453981685">"<xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>ni terish"</string> - <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"Ovozli qo‘ng‘iroq raqami noma’lum"</string> + <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"Ovozli pochta raqami noma’lum"</string> <string name="notification_network_selection_title" msgid="4224455487793492772">"Xizmat mavjud emas"</string> <string name="notification_network_selection_text" msgid="2607085729661923269">"Tanlangan tarmoq (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) mavjud emas"</string> <string name="notification_action_answer" msgid="6700362365135365143">"Javob berish"</string> @@ -76,8 +76,8 @@ <string name="notification_action_answer_voice" msgid="1770796916369437773">"Ovoz"</string> <string name="notification_action_accept" msgid="2898609801209468429">"Roziman"</string> <string name="notification_action_dismiss" msgid="2679969397930852858">"Yopish"</string> - <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Teskari qo‘ng‘iroq"</string> - <string name="notification_missedCall_message" msgid="3049928912736917988">"Xabar"</string> + <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Qo‘ng‘iroq"</string> + <string name="notification_missedCall_message" msgid="3049928912736917988">"SMS"</string> <string name="incall_error_power_off" msgid="6550191216405193368">"Qo‘ng‘iroq qilish uchun, avval \"Parvoz rejimi\" o‘chirilishi kerak."</string> <string name="incall_error_emergency_only" msgid="4678640422710818317">"Tarmoqda ro‘yxatdan o‘tmagan."</string> <string name="incall_error_out_of_service" msgid="4100065333878929223">"Mobil tarmoq mavjud emas."</string> @@ -121,7 +121,7 @@ <string name="unknown_call_session_event" msgid="2431061946920253582">"Noma’lum qo‘ng‘iroq sessiyasi hodisasi"</string> <string name="voicemail_provider" msgid="5135942703327136909">"Xizmat"</string> <string name="voicemail_settings" msgid="72448049107749316">"Moslash"</string> - <string name="voicemail_number_not_set" msgid="6724904736891087856">"<O‘rnatilmagan>"</string> + <string name="voicemail_number_not_set" msgid="6724904736891087856">"<Ko‘rsatilmagan>"</string> <string name="other_settings" msgid="3672912580359716394">"Boshqa qo‘ng‘iroq sozlamalari"</string> <string name="calling_via_template" msgid="4839419581866928142">"<xliff:g id="PROVIDER_NAME">%s</xliff:g> orqali qo‘ng‘rioq qilinmoqda"</string> <string name="incoming_via_template" msgid="1696993226115570960">"Kiruvchi qo‘ng‘iroqlar <xliff:g id="PROVIDER_NAME">%s</xliff:g> orqali"</string> @@ -150,7 +150,7 @@ <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Tebratish"</string> <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Ovoz"</string> <string name="default_notification_description" msgid="78174796906240970">"Standart ovoz (<xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g>)"</string> - <string name="ringtone_title" msgid="6374978286202084684">"Telefon qo‘ng‘iroq ohangi"</string> + <string name="ringtone_title" msgid="6374978286202084684">"Telefon ringtoni"</string> <string name="vibrate_on_ring_title" msgid="9197564612065258960">"Jiringlash vaqtida tebranish"</string> <string name="preference_category_ringtone" msgid="5197960752529332721">"Qo‘ng‘iroq ohangi & tebranish"</string> <string name="manageConferenceLabel" msgid="4691922394301969053">"Konferensiya qo‘ng‘irog‘ini boshqarish"</string> @@ -167,4 +167,6 @@ <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> soat</item> <item quantity="one">1 soat</item> </plurals> + <string name="profile_photo_description" msgid="5609894336203315400">"Profil rasmi"</string> + <string name="camera_off_description" msgid="5689494614359429889">"Kamera o‘chiq"</string> </resources> diff --git a/InCallUI/res/values-vi/strings.xml b/InCallUI/res/values-vi/strings.xml index 5d62c6058..adecdbd1d 100644 --- a/InCallUI/res/values-vi/strings.xml +++ b/InCallUI/res/values-vi/strings.xml @@ -49,7 +49,8 @@ <string name="card_title_video_call" msgid="5898636679563320218">"Cuộc gọi điện video"</string> <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Đang yêu cầu video"</string> <string name="card_title_video_call_error" msgid="9000555878389539225">"Không kết nối được cuộc gọi điện video"</string> - <string name="card_title_video_call_paused" msgid="3753261320787432731">"Cuộc gọi điện video (tạm dừng)"</string> + <!-- no translation found for card_title_video_call_rejected (462358296694719787) --> + <skip /> <string name="card_title_callback_number" msgid="7307938207564217293">"Số gọi lại của bạn\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string> <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Số gọi lại khẩn cấp của bạn\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string> <string name="notification_dialing" msgid="2107666444937350731">"Đang gọi"</string> @@ -167,4 +168,8 @@ <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> giờ</item> <item quantity="one">1 giờ</item> </plurals> + <!-- no translation found for profile_photo_description (5609894336203315400) --> + <skip /> + <!-- no translation found for camera_off_description (5689494614359429889) --> + <skip /> </resources> diff --git a/InCallUI/res/values-zh-rCN/strings.xml b/InCallUI/res/values-zh-rCN/strings.xml index e55425b46..56c03f87d 100644 --- a/InCallUI/res/values-zh-rCN/strings.xml +++ b/InCallUI/res/values-zh-rCN/strings.xml @@ -49,7 +49,8 @@ <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_error" msgid="9000555878389539225">"无法连接视频通话"</string> - <string name="card_title_video_call_paused" msgid="3753261320787432731">"视频通话(已暂停)"</string> + <!-- no translation found for card_title_video_call_rejected (462358296694719787) --> + <skip /> <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> <string name="notification_dialing" msgid="2107666444937350731">"正在拨号"</string> @@ -167,4 +168,8 @@ <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> 小时</item> <item quantity="one">1 小时</item> </plurals> + <!-- no translation found for profile_photo_description (5609894336203315400) --> + <skip /> + <!-- no translation found for camera_off_description (5689494614359429889) --> + <skip /> </resources> diff --git a/InCallUI/res/values-zh-rHK/strings.xml b/InCallUI/res/values-zh-rHK/strings.xml index 72d85b546..6b68a83d2 100644 --- a/InCallUI/res/values-zh-rHK/strings.xml +++ b/InCallUI/res/values-zh-rHK/strings.xml @@ -49,7 +49,7 @@ <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_error" msgid="9000555878389539225">"無法連接視像通話"</string> - <string name="card_title_video_call_paused" msgid="3753261320787432731">"視像通話 (已暫停)"</string> + <string name="card_title_video_call_rejected" msgid="462358296694719787">"視像通話要求被拒"</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> <string name="notification_dialing" msgid="2107666444937350731">"撥號中"</string> @@ -167,4 +167,6 @@ <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> 小時</item> <item quantity="one">1 小時</item> </plurals> + <string name="profile_photo_description" msgid="5609894336203315400">"個人檔案相片"</string> + <string name="camera_off_description" msgid="5689494614359429889">"攝影機已關閉"</string> </resources> diff --git a/InCallUI/res/values-zh-rTW/strings.xml b/InCallUI/res/values-zh-rTW/strings.xml index ab835075c..2b8f8b232 100644 --- a/InCallUI/res/values-zh-rTW/strings.xml +++ b/InCallUI/res/values-zh-rTW/strings.xml @@ -49,7 +49,8 @@ <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_error" msgid="9000555878389539225">"無法建立視訊通話連線"</string> - <string name="card_title_video_call_paused" msgid="3753261320787432731">"視訊通話 (已暫停)"</string> + <!-- no translation found for card_title_video_call_rejected (462358296694719787) --> + <skip /> <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> <string name="notification_dialing" msgid="2107666444937350731">"撥號中"</string> @@ -167,4 +168,8 @@ <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> 小時</item> <item quantity="one">1 小時</item> </plurals> + <!-- no translation found for profile_photo_description (5609894336203315400) --> + <skip /> + <!-- no translation found for camera_off_description (5689494614359429889) --> + <skip /> </resources> diff --git a/InCallUI/res/values-zu/strings.xml b/InCallUI/res/values-zu/strings.xml index 8d6233b04..16b280082 100644 --- a/InCallUI/res/values-zu/strings.xml +++ b/InCallUI/res/values-zu/strings.xml @@ -49,7 +49,8 @@ <string name="card_title_video_call" msgid="5898636679563320218">"Ikholi yevidiyo"</string> <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Icela ividiyo"</string> <string name="card_title_video_call_error" msgid="9000555878389539225">"Ayikwazi ukuxhuma ikholi yevidiyo"</string> - <string name="card_title_video_call_paused" msgid="3753261320787432731">"Ikholi yevidiyo (Imiswe isikhashana)"</string> + <!-- no translation found for card_title_video_call_rejected (462358296694719787) --> + <skip /> <string name="card_title_callback_number" msgid="7307938207564217293">"Inombolo yakho okumele ishayelwe futhi ngu-\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string> <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Inombolo yakho yesimo esiphuthumayo okumele iphinde ishayelwe ngu-\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string> <string name="notification_dialing" msgid="2107666444937350731">"Iyadayela"</string> @@ -167,4 +168,8 @@ <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> amahora</item> <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> amahora</item> </plurals> + <!-- no translation found for profile_photo_description (5609894336203315400) --> + <skip /> + <!-- no translation found for camera_off_description (5689494614359429889) --> + <skip /> </resources> diff --git a/InCallUI/res/values/array.xml b/InCallUI/res/values/array.xml index 2e38c2c46..7877ec8f3 100644 --- a/InCallUI/res/values/array.xml +++ b/InCallUI/res/values/array.xml @@ -112,61 +112,24 @@ <item>@string/description_direction_down</item> </array> - - <!-- For upgrade to video from VOLTE to VT (Tx/Rx/Bidirectional) in an active video call. + <!-- For accept/reject upgrade to video in active video call - Accept upgrade to video request (drag right) - - Decline upgrade to video request (drag left) - - Answer as audio call (drag down) --> - <array name="incoming_call_widget_video_upgrade_request_targets"> + - Decline upgrade to video request (drag left)--> + <array name="incoming_call_widget_video_request_targets"> <item>@drawable/ic_lockscreen_answer_video</item> - <item>@null</item> - <item>@drawable/ic_lockscreen_decline</item> - <item>@drawable/ic_lockscreen_answer</item> + <item>@drawable/ic_lockscreen_decline_video</item> </array> - <array name="incoming_call_widget_video_upgrade_request_target_descriptions"> + + <array name="incoming_call_widget_video_request_target_descriptions"> <item>@string/description_target_accept_upgrade_to_video_request</item> <item>@null</item> <item>@string/description_target_decline_upgrade_to_video_request</item> <item>@null</item>" </array> - <array name="incoming_call_widget_video_upgrade_request_target_direction_descriptions"> + <array name="incoming_call_widget_video_request_target_direction_descriptions"> <item>@string/description_direction_right</item> <item>@null</item> <item>@string/description_direction_left</item> <item>@null</item> </array> - - <!-- For accept/reject upgrade to video in active video call - - Accept upgrade to video request (drag right) - - Decline upgrade to video request (drag left)--> - <array name="incoming_call_widget_bidirectional_video_accept_reject_request_targets"> - <item>@drawable/ic_lockscreen_answer_video</item> - <item>@drawable/ic_lockscreen_decline</item> - </array> - - <!-- For accept/reject upgrade to video transmit in active video call - - Accept upgrade to video request (drag right) - - Decline upgrade to video request (drag left) - TODO: This should be automatically rejected in the lower layers --> - <array name="incoming_call_widget_video_transmit_accept_reject_request_targets"> - <item>@drawable/ic_lockscreen_answer_video</item> - <item>@drawable/ic_lockscreen_decline</item> - </array> - <array name="incoming_call_widget_video_transmit_request_target_descriptions"> - <item>@string/description_target_accept_upgrade_to_video_request</item> - <item>@string/description_target_decline_upgrade_to_video_request</item> - </array> - - <!-- For accept/reject upgrade to video receive in active video call - - Accept upgrade to video request (drag right) - - Decline upgrade to video request (drag left)--> - <array name="incoming_call_widget_video_receive_accept_reject_request_targets"> - <item>@drawable/ic_lockscreen_answer_video</item> - <item>@drawable/ic_lockscreen_decline</item> - </array> - <array name="incoming_call_widget_video_receive_request_target_descriptions"> - <item>@string/description_target_accept_upgrade_to_video_request</item> - <item>@string/description_target_decline_upgrade_to_video_request</item> - </array> - </resources> diff --git a/InCallUI/res/values/config.xml b/InCallUI/res/values/config.xml new file mode 100644 index 000000000..b81ba3ca0 --- /dev/null +++ b/InCallUI/res/values/config.xml @@ -0,0 +1,27 @@ +<!-- + ~ 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 + --> +<resources> + <!-- Determines the maximum number of buttons visible on the call card. Any buttons over this + count are put into the overflow menu. --> + <integer name="call_card_max_buttons">5</integer> + + <!-- Determines video calls will automatically enter fullscreen mode after the start of the + call. --> + <bool name="video_call_auto_fullscreen">true</bool> + <!-- The number of milliseconds after which a video call will automatically enter fullscreen + mode (requires video_call_auto_fullscreen to be true). --> + <integer name="video_call_auto_fullscreen_timeout">5000</integer> +</resources>
\ No newline at end of file diff --git a/InCallUI/res/values/strings.xml b/InCallUI/res/values/strings.xml index c3ccc141c..c985a8cc7 100644 --- a/InCallUI/res/values/strings.xml +++ b/InCallUI/res/values/strings.xml @@ -114,8 +114,8 @@ <string name="card_title_video_call_requesting">Requesting video</string> <!-- In-call screen: status label when there is a problem connecting a video call. --> <string name="card_title_video_call_error">Can\'t connect video call</string> - <!-- In-call screen: status label when in a paused video call. --> - <string name="card_title_video_call_paused">Video call (Paused)</string> + <!-- In-call screen: status label when the remote party rejects a video call request. --> + <string name="card_title_video_call_rejected">Video request rejected</string> <!-- In-call screen: string shown to the user when their outgoing number is different than the number reported by TelephonyManager#getLine1Number() --> @@ -294,13 +294,6 @@ <!-- Text for the onscreen overflow button, to see additional actions which can be done. --> <string name="onscreenOverflowText">More options</string> - <!-- STOPSHIP - For test only - In-call screen: Modify Call Options for IMS call --> - <string name="modify_call_option_title" translatable="false">Which type of call?</string> - <string name="modify_call_option_vt" translatable="false">Video bidirectional</string> - <string name="modify_call_option_vt_tx" translatable="false">Video transmit</string> - <string name="modify_call_option_vt_rx" translatable="false">Video receive</string> - <string name="modify_call_option_voice" translatable="false">Voice Only</string> - <!-- Message indicating that Video Started flowing for IMS-VT calls --> <string name="player_started">Player Started</string> <!-- Message indicating that Video Stopped flowing for IMS-VT calls --> @@ -440,17 +433,6 @@ <!-- This can be used in any application wanting to disable the text "Emergency number" --> <string name="emergency_call_dialog_number_for_display">Emergency number</string> - <!-- Video quality changed message --> - <string name="video_quality_changed" translatable="false">Video quality changed to \u0020</string> - <!-- Video quality High --> - <string name="video_quality_high" translatable="false">High</string> - <!-- Video quality Medium --> - <string name="video_quality_medium" translatable="false">Medium</string> - <!-- Video quality Low --> - <string name="video_quality_low" translatable="false">Low</string> - <!-- Video quality Unknown --> - <string name="video_quality_unknown" translatable="false">Unknown</string> - <!-- Phrase describing a time duration using seconds [CHAR LIMIT=16] --> <plurals name="duration_seconds"> <item quantity="one">1 second</item> @@ -466,4 +448,12 @@ <item quantity="one">1 hour</item> <item quantity="other"><xliff:g id="count">%d</xliff:g> hours</item> </plurals> + + <!-- Description of the profile photo shown when the device's camera is disabled udring a video + call. [CHAR LIMIT=NONE] --> + <string name="profile_photo_description">Profile photo</string> + + <!-- Description of the "camera off" icon displayed when the device's camera is disabled during + a video call. [CHAR LIMIT=NONE] --> + <string name="camera_off_description">Camera off</string> </resources> diff --git a/InCallUI/src/com/android/incallui/AnswerFragment.java b/InCallUI/src/com/android/incallui/AnswerFragment.java index 07cbfd573..d68a316c9 100644 --- a/InCallUI/src/com/android/incallui/AnswerFragment.java +++ b/InCallUI/src/com/android/incallui/AnswerFragment.java @@ -21,6 +21,7 @@ import android.app.Dialog; import android.content.Context; import android.content.DialogInterface; import android.os.Bundle; +import android.telecom.VideoProfile; import android.text.Editable; import android.text.TextWatcher; import android.view.LayoutInflater; @@ -49,10 +50,7 @@ public class AnswerFragment extends BaseFragment<AnswerPresenter, AnswerPresente public static final int TARGET_SET_FOR_AUDIO_WITH_SMS = 1; public static final int TARGET_SET_FOR_VIDEO_WITHOUT_SMS = 2; public static final int TARGET_SET_FOR_VIDEO_WITH_SMS = 3; - public static final int TARGET_SET_FOR_VIDEO_UPGRADE_REQUEST = 4; - public static final int TARGET_SET_FOR_BIDIRECTIONAL_VIDEO_ACCEPT_REJECT_REQUEST = 5; - public static final int TARGET_SET_FOR_VIDEO_TRANSMIT_ACCEPT_REJECT_REQUEST = 6; - public static final int TARGET_SET_FOR_VIDEO_RECEIVE_ACCEPT_REJECT_REQUEST = 7; + public static final int TARGET_SET_FOR_VIDEO_ACCEPT_REJECT_REQUEST = 4; /** * The popup showing the list of canned responses. @@ -124,12 +122,21 @@ public class AnswerFragment extends BaseFragment<AnswerPresenter, AnswerPresente * Sets targets on the glowpad according to target set identified by the parameter. * @param targetSet Integer identifying the set of targets to use. */ - @Override public void showTargets(int targetSet) { + showTargets(targetSet, VideoProfile.VideoState.BIDIRECTIONAL); + } + + /** + * Sets targets on the glowpad according to target set identified by the parameter. + * @param targetSet Integer identifying the set of targets to use. + */ + @Override + public void showTargets(int targetSet, int videoState) { final int targetResourceId; final int targetDescriptionsResourceId; final int directionDescriptionsResourceId; final int handleDrawableResourceId; + mGlowpad.setVideoState(videoState); switch (targetSet) { case TARGET_SET_FOR_AUDIO_WITH_SMS: @@ -156,39 +163,13 @@ public class AnswerFragment extends BaseFragment<AnswerPresenter, AnswerPresente R.array.incoming_call_widget_video_with_sms_direction_descriptions; handleDrawableResourceId = R.drawable.ic_incall_video_handle; break; - case TARGET_SET_FOR_VIDEO_UPGRADE_REQUEST: - targetResourceId = R.array.incoming_call_widget_video_upgrade_request_targets; - targetDescriptionsResourceId = - R.array.incoming_call_widget_video_upgrade_request_target_descriptions; - directionDescriptionsResourceId = R.array - .incoming_call_widget_video_upgrade_request_target_direction_descriptions; - handleDrawableResourceId = R.drawable.ic_incall_video_handle; - break; - case TARGET_SET_FOR_BIDIRECTIONAL_VIDEO_ACCEPT_REJECT_REQUEST: + case TARGET_SET_FOR_VIDEO_ACCEPT_REJECT_REQUEST: targetResourceId = - R.array.incoming_call_widget_bidirectional_video_accept_reject_request_targets; + R.array.incoming_call_widget_video_request_targets; targetDescriptionsResourceId = - R.array.incoming_call_widget_video_upgrade_request_target_descriptions; + R.array.incoming_call_widget_video_request_target_descriptions; directionDescriptionsResourceId = R.array - .incoming_call_widget_video_upgrade_request_target_direction_descriptions; - handleDrawableResourceId = R.drawable.ic_incall_video_handle; - break; - case TARGET_SET_FOR_VIDEO_TRANSMIT_ACCEPT_REJECT_REQUEST: - targetResourceId = - R.array.incoming_call_widget_video_transmit_accept_reject_request_targets; - targetDescriptionsResourceId = - R.array.incoming_call_widget_video_transmit_request_target_descriptions; - directionDescriptionsResourceId = R.array - .incoming_call_widget_video_upgrade_request_target_direction_descriptions; - handleDrawableResourceId = R.drawable.ic_incall_video_handle; - break; - case TARGET_SET_FOR_VIDEO_RECEIVE_ACCEPT_REJECT_REQUEST: - targetResourceId = - R.array.incoming_call_widget_video_receive_accept_reject_request_targets; - targetDescriptionsResourceId = - R.array.incoming_call_widget_video_receive_request_target_descriptions; - directionDescriptionsResourceId = R.array - .incoming_call_widget_video_upgrade_request_target_direction_descriptions; + .incoming_call_widget_video_request_target_direction_descriptions; handleDrawableResourceId = R.drawable.ic_incall_video_handle; break; case TARGET_SET_FOR_AUDIO_WITHOUT_SMS: @@ -376,6 +357,11 @@ public class AnswerFragment extends BaseFragment<AnswerPresenter, AnswerPresente } @Override + public void onDeclineUpgradeRequest(Context context) { + InCallPresenter.getInstance().declineUpgradeRequest(context); + } + + @Override public void onText() { getPresenter().onText(); } diff --git a/InCallUI/src/com/android/incallui/AnswerPresenter.java b/InCallUI/src/com/android/incallui/AnswerPresenter.java index 33cdba4c0..9decb7b21 100644 --- a/InCallUI/src/com/android/incallui/AnswerPresenter.java +++ b/InCallUI/src/com/android/incallui/AnswerPresenter.java @@ -98,6 +98,17 @@ public class AnswerPresenter extends Presenter<AnswerPresenter.AnswerUi> public void onDisconnect(Call call) { // no-op } + + public void onSessionModificationStateChange(int sessionModificationState) { + boolean isUpgradePending = sessionModificationState == + Call.SessionModificationState.RECEIVED_UPGRADE_TO_VIDEO_REQUEST; + + if (!isUpgradePending) { + // Stop listening for updates. + CallList.getInstance().removeCallUpdateListener(mCallId, this); + showAnswerUi(false); + } + } private boolean isVideoUpgradePending(Call call) { return call.getSessionModificationState() @@ -167,27 +178,15 @@ public class AnswerPresenter extends Presenter<AnswerPresenter.AnswerUi> return; } - showAnswerUi(true); - getUi().showTargets(getUiTarget(currentVideoState, modifyToVideoState)); - - } + AnswerUi ui = getUi(); - private int getUiTarget(int currentVideoState, int modifyToVideoState) { - if (showVideoUpgradeOptions(currentVideoState, modifyToVideoState)) { - return AnswerFragment.TARGET_SET_FOR_VIDEO_UPGRADE_REQUEST; - } else if (isEnabled(modifyToVideoState, VideoProfile.VideoState.BIDIRECTIONAL)) { - return AnswerFragment.TARGET_SET_FOR_BIDIRECTIONAL_VIDEO_ACCEPT_REJECT_REQUEST; - } else if (isEnabled(modifyToVideoState, VideoProfile.VideoState.TX_ENABLED)) { - return AnswerFragment.TARGET_SET_FOR_VIDEO_TRANSMIT_ACCEPT_REJECT_REQUEST; - } else if (isEnabled(modifyToVideoState, VideoProfile.VideoState.RX_ENABLED)) { - return AnswerFragment.TARGET_SET_FOR_VIDEO_RECEIVE_ACCEPT_REJECT_REQUEST; + if (ui == null) { + Log.e(this, "Ui is null. Can't process upgrade request"); + return; } - return AnswerFragment.TARGET_SET_FOR_VIDEO_UPGRADE_REQUEST; - } - - private boolean showVideoUpgradeOptions(int currentVideoState, int modifyToVideoState) { - return currentVideoState == VideoProfile.VideoState.AUDIO_ONLY && - isEnabled(modifyToVideoState, VideoProfile.VideoState.BIDIRECTIONAL); + showAnswerUi(true); + ui.showTargets(AnswerFragment.TARGET_SET_FOR_VIDEO_ACCEPT_REJECT_REQUEST, + modifyToVideoState); } private boolean isEnabled(int videoState, int mask) { @@ -221,15 +220,16 @@ public class AnswerPresenter extends Presenter<AnswerPresenter.AnswerUi> } public void onAnswer(int videoState, Context context) { - Log.d(this, "onAnswer mCallId=" + mCallId + " videoState=" + videoState); if (mCallId == null) { return; } if (mCall.getSessionModificationState() == Call.SessionModificationState.RECEIVED_UPGRADE_TO_VIDEO_REQUEST) { + Log.d(this, "onAnswer (upgradeCall) mCallId=" + mCallId + " videoState=" + videoState); InCallPresenter.getInstance().acceptUpgradeRequest(videoState, context); } else { + Log.d(this, "onAnswer (answerCall) mCallId=" + mCallId + " videoState=" + videoState); TelecomAdapter.getInstance().answerCall(mCall.getId(), videoState); } } @@ -267,17 +267,14 @@ 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; boolean withSms = call.can(android.telecom.Call.Details.CAPABILITY_RESPOND_VIA_TEXT) && mHasTextMessages; - if (call.isVideoCall(context)) { + + // Only present the user with the option to answer as a video call if the incoming call is + // a bi-directional video call. + if (VideoProfile.VideoState.isBidirectional((call.getVideoState()))) { if (withSms) { getUi().showTargets(AnswerFragment.TARGET_SET_FOR_VIDEO_WITH_SMS); getUi().configureMessageDialog(textMsgs); @@ -297,6 +294,7 @@ public class AnswerPresenter extends Presenter<AnswerPresenter.AnswerUi> interface AnswerUi extends Ui { public void onShowAnswerUi(boolean shown); public void showTargets(int targetSet); + public void showTargets(int targetSet, int videoState); public void showMessageDialog(); public void configureMessageDialog(List<String> textResponses); public Context getContext(); diff --git a/InCallUI/src/com/android/incallui/Call.java b/InCallUI/src/com/android/incallui/Call.java index 5cf0f9b1a..9f58fbed5 100644 --- a/InCallUI/src/com/android/incallui/Call.java +++ b/InCallUI/src/com/android/incallui/Call.java @@ -124,6 +124,7 @@ public class Call { public static final int REQUEST_FAILED = 2; public static final int RECEIVED_UPGRADE_TO_VIDEO_REQUEST = 3; public static final int UPGRADE_TO_VIDEO_REQUEST_TIMED_OUT = 4; + public static final int REQUEST_REJECTED = 5; } public static class VideoSettings { @@ -509,11 +510,8 @@ public class Call { mSessionModificationState = state; Log.d(this, "setSessionModificationState " + state + " mSessionModificationState=" + mSessionModificationState); - if (state != Call.SessionModificationState.WAITING_FOR_RESPONSE) { - setModifyToVideoState(VideoProfile.VideoState.AUDIO_ONLY); - } if (hasChanged) { - update(); + CallList.getInstance().onSessionModificationStateChange(this, state); } } @@ -549,7 +547,7 @@ public class Call { } return String.format(Locale.US, "[%s, %s, %s, children:%s, parent:%s, conferenceable:%s, " + - "videoState:%d, mSessionModificationState:%d, VideoSettings:%s]", + "videoState:%s, mSessionModificationState:%d, VideoSettings:%s]", mId, State.toString(getState()), android.telecom.Call.Details @@ -557,7 +555,8 @@ public class Call { mChildCallIds, getParentId(), this.mTelecommCall.getConferenceableCalls(), - mTelecommCall.getDetails().getVideoState(), + VideoProfile.VideoState.videoStateToString( + mTelecommCall.getDetails().getVideoState()), mSessionModificationState, getVideoSettings()); } diff --git a/InCallUI/src/com/android/incallui/CallButtonFragment.java b/InCallUI/src/com/android/incallui/CallButtonFragment.java index b3cadcfec..9def35694 100644 --- a/InCallUI/src/com/android/incallui/CallButtonFragment.java +++ b/InCallUI/src/com/android/incallui/CallButtonFragment.java @@ -18,9 +18,7 @@ package com.android.incallui; import static com.android.incallui.CallButtonFragment.Buttons.*; -import android.app.AlertDialog; import android.content.Context; -import android.content.DialogInterface; import android.content.res.ColorStateList; import android.content.res.Resources; import android.graphics.drawable.Drawable; @@ -30,8 +28,6 @@ import android.graphics.drawable.RippleDrawable; import android.graphics.drawable.StateListDrawable; import android.os.Bundle; import android.telecom.AudioState; -import android.telecom.TelecomManager; -import android.telecom.VideoProfile; import android.util.SparseIntArray; import android.view.ContextThemeWrapper; import android.view.HapticFeedbackConstants; @@ -43,12 +39,10 @@ import android.view.ViewGroup; import android.widget.CompoundButton; import android.widget.ImageButton; import android.widget.PopupMenu; -import android.widget.Toast; import android.widget.PopupMenu.OnDismissListener; import android.widget.PopupMenu.OnMenuItemClickListener; import com.android.contacts.common.util.MaterialColorMapUtils.MaterialPalette; -import java.util.ArrayList; /** * Fragment for call control buttons @@ -58,7 +52,7 @@ public class CallButtonFragment implements CallButtonPresenter.CallButtonUi, OnMenuItemClickListener, OnDismissListener, View.OnClickListener { private static final int INVALID_INDEX = -1; - private static final int BUTTON_MAX_VISIBLE = 5; + private int mButtonMaxVisible; // The button is currently visible in the UI private static final int BUTTON_VISIBLE = 1; // The button is hidden in the UI @@ -68,24 +62,22 @@ public class CallButtonFragment public interface Buttons { public static final int BUTTON_AUDIO = 0; - public static final int BUTTON_DOWNGRADE_TO_VOICE = 1; - public static final int BUTTON_MUTE = 2; - public static final int BUTTON_DIALPAD = 3; - public static final int BUTTON_HOLD = 4; - public static final int BUTTON_SWAP = 5; - public static final int BUTTON_UPGRADE_TO_VIDEO = 6; - public static final int BUTTON_SWITCH_CAMERA = 7; - public static final int BUTTON_ADD_CALL = 8; - public static final int BUTTON_MERGE = 9; - public static final int BUTTON_PAUSE_VIDEO = 10; - public static final int BUTTON_MANAGE_VIDEO_CONFERENCE = 11; - public static final int BUTTON_COUNT = 12; + public static final int BUTTON_MUTE = 1; + public static final int BUTTON_DIALPAD = 2; + public static final int BUTTON_HOLD = 3; + public static final int BUTTON_SWAP = 4; + public static final int BUTTON_UPGRADE_TO_VIDEO = 5; + public static final int BUTTON_SWITCH_CAMERA = 6; + public static final int BUTTON_ADD_CALL = 7; + public static final int BUTTON_MERGE = 8; + public static final int BUTTON_PAUSE_VIDEO = 9; + public static final int BUTTON_MANAGE_VIDEO_CONFERENCE = 10; + public static final int BUTTON_COUNT = 11; } private SparseIntArray mButtonVisibilityMap = new SparseIntArray(BUTTON_COUNT); private CompoundButton mAudioButton; - private ImageButton mChangeToVoiceButton; private CompoundButton mMuteButton; private CompoundButton mShowDialpadButton; private CompoundButton mHoldButton; @@ -129,6 +121,8 @@ public class CallButtonFragment for (int i = 0; i < BUTTON_COUNT; i++) { mButtonVisibilityMap.put(i, BUTTON_HIDDEN); } + + mButtonMaxVisible = getResources().getInteger(R.integer.call_card_max_buttons); } @Override @@ -138,8 +132,6 @@ public class CallButtonFragment mAudioButton = (CompoundButton) parent.findViewById(R.id.audioButton); mAudioButton.setOnClickListener(this); - mChangeToVoiceButton = (ImageButton) parent.findViewById(R.id.changeToVoiceButton); - mChangeToVoiceButton. setOnClickListener(this); mMuteButton = (CompoundButton) parent.findViewById(R.id.muteButton); mMuteButton.setOnClickListener(this); mShowDialpadButton = (CompoundButton) parent.findViewById(R.id.dialpadButton); @@ -196,10 +188,6 @@ public class CallButtonFragment case R.id.addButton: getPresenter().addCallClicked(); break; - case R.id.changeToVoiceButton: - // STOPSHIP One way video options - getPresenter().displayModifyCallOptions(); - break; case R.id.muteButton: { getPresenter().muteClicked(!mMuteButton.isSelected()); break; @@ -219,8 +207,7 @@ public class CallButtonFragment getPresenter().showDialpadClicked(!mShowDialpadButton.isSelected()); break; case R.id.changeToVideoButton: - // STOPSHIP One way video options - getPresenter().displayModifyCallOptions(); + getPresenter().changeToVideoClicked(); break; case R.id.switchCameraButton: getPresenter().switchCameraClicked( @@ -271,7 +258,6 @@ public class CallButtonFragment } ImageButton[] normalButtons = { - mChangeToVoiceButton, mSwapButton, mChangeToVideoButton, mAddCallButton, @@ -358,7 +344,6 @@ public class CallButtonFragment mIsEnabled = isEnabled; mAudioButton.setEnabled(isEnabled); - mChangeToVoiceButton.setEnabled(isEnabled); mMuteButton.setEnabled(isEnabled); mShowDialpadButton.setEnabled(isEnabled); mHoldButton.setEnabled(isEnabled); @@ -389,8 +374,6 @@ public class CallButtonFragment switch (id) { case BUTTON_AUDIO: return mAudioButton; - case BUTTON_DOWNGRADE_TO_VOICE: - return mChangeToVoiceButton; case BUTTON_MUTE: return mMuteButton; case BUTTON_DIALPAD: @@ -444,74 +427,6 @@ public class CallButtonFragment } } - /**The function is called when Modify Call button gets pressed. The function creates and - * displays modify call options. - */ - @Override - public void displayModifyCallOptions() { - CallButtonPresenter.CallButtonUi ui = getUi(); - if (ui == null) { - Log.e(this, "Cannot display ModifyCallOptions as ui is null"); - return; - } - - Context context = getContext(); - - final ArrayList<CharSequence> items = new ArrayList<CharSequence>(); - final ArrayList<Integer> itemToCallType = new ArrayList<Integer>(); - final Resources res = ui.getContext().getResources(); - // Prepare the string array and mapping. - items.add(res.getText(R.string.modify_call_option_voice)); - itemToCallType.add(VideoProfile.VideoState.AUDIO_ONLY); - - items.add(res.getText(R.string.modify_call_option_vt_rx)); - itemToCallType.add(VideoProfile.VideoState.RX_ENABLED); - - items.add(res.getText(R.string.modify_call_option_vt_tx)); - itemToCallType.add(VideoProfile.VideoState.TX_ENABLED); - - items.add(res.getText(R.string.modify_call_option_vt)); - itemToCallType.add(VideoProfile.VideoState.BIDIRECTIONAL); - - AlertDialog.Builder builder = new AlertDialog.Builder(getUi().getContext()); - builder.setTitle(R.string.modify_call_option_title); - final AlertDialog alert; - - DialogInterface.OnClickListener listener = new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int item) { - Toast.makeText(getUi().getContext(), items.get(item), Toast.LENGTH_SHORT).show(); - final int selCallType = itemToCallType.get(item); - Log.v(this, "Videocall: ModifyCall: upgrade/downgrade to " - + fromCallType(selCallType)); - VideoProfile videoProfile = new VideoProfile(selCallType); - getPresenter().changeToVideoClicked(videoProfile); - dialog.dismiss(); - } - }; - int currVideoState = getPresenter().getCurrentVideoState(); - int currUnpausedVideoState = CallUtils.getUnPausedVideoState(currVideoState); - int index = itemToCallType.indexOf(currUnpausedVideoState); - if (index == INVALID_INDEX) { - return; - } - builder.setSingleChoiceItems(items.toArray(new CharSequence[0]), index, listener); - alert = builder.create(); - alert.show(); - } - - public static String fromCallType(int callType) { - switch (callType) { - case VideoProfile.VideoState.BIDIRECTIONAL: - return "VT"; - case VideoProfile.VideoState.TX_ENABLED: - return "VT_TX"; - case VideoProfile.VideoState.RX_ENABLED: - return "VT_RX"; - } - return ""; - } - private void addToOverflowMenu(int id, View button, PopupMenu menu) { button.setVisibility(View.GONE); menu.getMenu().add(Menu.NONE, id, Menu.NONE, button.getContentDescription()); @@ -539,7 +454,7 @@ public class CallButtonFragment final View button = getButtonById(i); if (visibility == BUTTON_VISIBLE) { visibleCount++; - if (visibleCount <= BUTTON_MAX_VISIBLE) { + if (visibleCount <= mButtonMaxVisible) { button.setVisibility(View.VISIBLE); prevVisibleButton = button; prevVisibleId = i; diff --git a/InCallUI/src/com/android/incallui/CallButtonPresenter.java b/InCallUI/src/com/android/incallui/CallButtonPresenter.java index 82c576f79..d788a1097 100644 --- a/InCallUI/src/com/android/incallui/CallButtonPresenter.java +++ b/InCallUI/src/com/android/incallui/CallButtonPresenter.java @@ -79,6 +79,7 @@ public class CallButtonPresenter extends Presenter<CallButtonPresenter.CallButto InCallPresenter.getInstance().removeIncomingCallListener(this); InCallPresenter.getInstance().removeDetailsListener(this); InCallPresenter.getInstance().getInCallCameraManager().removeCameraSelectionListener(this); + InCallPresenter.getInstance().removeCanAddCallListener(this); } @Override @@ -258,20 +259,16 @@ public class CallButtonPresenter extends Presenter<CallButtonPresenter.CallButto getUi().displayDialpad(checked /* show */, true /* animate */); } - public void displayModifyCallOptions() { - getUi().displayModifyCallOptions(); - } - - public int getCurrentVideoState() { - return mCall.getVideoState(); - } - - public void changeToVideoClicked(VideoProfile videoProfile) { + public void changeToVideoClicked() { VideoCall videoCall = mCall.getVideoCall(); if (videoCall == null) { return; } + int currVideoState = mCall.getVideoState(); + int currUnpausedVideoState = CallUtils.getUnPausedVideoState(currVideoState); + currUnpausedVideoState |= VideoProfile.VideoState.BIDIRECTIONAL; + VideoProfile videoProfile = new VideoProfile(currUnpausedVideoState); videoCall.sendSessionModifyRequest(videoProfile); mCall.setSessionModificationState(Call.SessionModificationState.WAITING_FOR_RESPONSE); } @@ -316,15 +313,16 @@ public class CallButtonPresenter extends Presenter<CallButtonPresenter.CallButto if (pause) { videoCall.setCamera(null); VideoProfile videoProfile = new VideoProfile( - mCall.getVideoState() | VideoProfile.VideoState.PAUSED); + mCall.getVideoState() & ~VideoProfile.VideoState.TX_ENABLED); videoCall.sendSessionModifyRequest(videoProfile); } else { InCallCameraManager cameraManager = InCallPresenter.getInstance(). getInCallCameraManager(); videoCall.setCamera(cameraManager.getActiveCameraId()); VideoProfile videoProfile = new VideoProfile( - mCall.getVideoState() & ~VideoProfile.VideoState.PAUSED); + mCall.getVideoState() | VideoProfile.VideoState.TX_ENABLED); videoCall.sendSessionModifyRequest(videoProfile); + mCall.setSessionModificationState(Call.SessionModificationState.WAITING_FOR_RESPONSE); } getUi().setVideoPaused(pause); } @@ -354,7 +352,7 @@ public class CallButtonPresenter extends Presenter<CallButtonPresenter.CallButto * @param call The active call. */ private void updateButtonsState(Call call) { - Log.v(this, "Showing buttons for voice call."); + Log.v(this, "updateButtonsState"); final CallButtonUi ui = getUi(); final boolean isVideo = CallUtils.isVideoCall(call); @@ -373,9 +371,7 @@ public class CallButtonPresenter extends Presenter<CallButtonPresenter.CallButto final boolean showAddCall = TelecomAdapter.getInstance().canAddCall(); final boolean showMerge = call.can( android.telecom.Call.Details.CAPABILITY_MERGE_CONFERENCE); - // TODO: This button is currently being used for both upgrade and downgrade scenarios. - // It should be split into BUTTON_DOWNGRADE_TO_VOICE AND BUTTON_UPGRADE_TO_VIDEO - final boolean showUpgradeToVideo = isVideo || + final boolean showUpgradeToVideo = !isVideo && (call.can(android.telecom.Call.Details.CAPABILITY_SUPPORTS_VT_LOCAL_TX) && call.can(android.telecom.Call.Details.CAPABILITY_SUPPORTS_VT_REMOTE_RX)); @@ -388,7 +384,6 @@ public class CallButtonPresenter extends Presenter<CallButtonPresenter.CallButto ui.showButton(BUTTON_MUTE, showMute); ui.showButton(BUTTON_ADD_CALL, showAddCall); ui.showButton(BUTTON_UPGRADE_TO_VIDEO, showUpgradeToVideo); - ui.showButton(BUTTON_DOWNGRADE_TO_VOICE, false); ui.showButton(BUTTON_SWITCH_CAMERA, isVideo); ui.showButton(BUTTON_PAUSE_VIDEO, isVideo); ui.showButton(BUTTON_DIALPAD, !isVideo); @@ -436,7 +431,6 @@ public class CallButtonPresenter extends Presenter<CallButtonPresenter.CallButto void setAudio(int mode); void setSupportedAudio(int mask); void displayDialpad(boolean on, boolean animate); - void displayModifyCallOptions(); boolean isDialpadVisible(); /** diff --git a/InCallUI/src/com/android/incallui/CallCardFragment.java b/InCallUI/src/com/android/incallui/CallCardFragment.java index 691589ca0..499f46417 100644 --- a/InCallUI/src/com/android/incallui/CallCardFragment.java +++ b/InCallUI/src/com/android/incallui/CallCardFragment.java @@ -31,6 +31,8 @@ import android.graphics.drawable.Drawable; import android.graphics.drawable.GradientDrawable; import android.os.Bundle; import android.os.Trace; +import android.os.Handler; +import android.os.Looper; import android.telecom.DisconnectCause; import android.telecom.VideoProfile; import android.telephony.PhoneNumberUtils; @@ -63,6 +65,38 @@ public class CallCardFragment extends BaseFragment<CallCardPresenter, CallCardPr implements CallCardPresenter.CallCardUi { private static final String TAG = "CallCardFragment"; + /** + * Internal class which represents the call state label which is to be applied. + */ + private class CallStateLabel { + private CharSequence mCallStateLabel; + private boolean mIsAutoDismissing; + + public CallStateLabel(CharSequence callStateLabel, boolean isAutoDismissing) { + mCallStateLabel = callStateLabel; + mIsAutoDismissing = isAutoDismissing; + } + + public CharSequence getCallStateLabel() { + return mCallStateLabel; + } + + /** + * Determines if the call state label should auto-dismiss. + * + * @return {@code true} if the call state label should auto-dismiss. + */ + public boolean isAutoDismissing() { + return mIsAutoDismissing; + } + }; + + /** + * The duration of time (in milliseconds) a call state label should remain visible before + * resetting to its previous value. + */ + private static final long CALL_STATE_LABEL_RESET_DELAY_MS = 3000; + private AnimatorSet mAnimatorSet; private int mShrinkAnimationDuration; private int mFabNormalDiameter; @@ -119,6 +153,13 @@ public class CallCardFragment extends BaseFragment<CallCardPresenter, CallCardPr private MaterialPalette mCurrentThemeColors; + /** + * Call state label to set when an auto-dismissing call state label is dismissed. + */ + private CharSequence mPostResetCallStateLabel; + private boolean mCallStateLabelResetPending = false; + private Handler mHandler; + @Override public CallCardPresenter.CallCardUi getUi() { return this; @@ -133,6 +174,7 @@ public class CallCardFragment extends BaseFragment<CallCardPresenter, CallCardPr public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + mHandler = new Handler(Looper.getMainLooper()); mShrinkAnimationDuration = getResources().getInteger(R.integer.shrink_animation_duration); mVideoAnimationDuration = getResources().getInteger(R.integer.video_animation_duration); mFloatingActionButtonVerticalOffset = getResources().getDimensionPixelOffset( @@ -269,6 +311,9 @@ public class CallCardFragment extends BaseFragment<CallCardPresenter, CallCardPr // Retrieve here since at fragment creation time the incoming video view is not inflated. final View videoView = getView().findViewById(R.id.incomingVideo); + if (videoView == null) { + return; + } // Determine how much space there is below or to the side of the call card. final float spaceBesideCallCard = getSpaceBesideCallCard(); @@ -492,15 +537,16 @@ public class CallCardFragment extends BaseFragment<CallCardPresenter, CallCardPr boolean isWifi, boolean isConference) { boolean isGatewayCall = !TextUtils.isEmpty(gatewayNumber); - CharSequence callStateLabel = getCallStateLabelFromState(state, videoState, + CallStateLabel callStateLabel = getCallStateLabelFromState(state, videoState, sessionModificationState, disconnectCause, connectionLabel, isGatewayCall, isWifi, isConference); - Log.v(this, "setCallState " + callStateLabel); + Log.v(this, "setCallState " + callStateLabel.getCallStateLabel()); + Log.v(this, "AutoDismiss " + callStateLabel.isAutoDismissing()); Log.v(this, "DisconnectCause " + disconnectCause.toString()); Log.v(this, "gateway " + connectionLabel + gatewayNumber); - if (TextUtils.equals(callStateLabel, mCallStateLabel.getText())) { + if (TextUtils.equals(callStateLabel.getCallStateLabel(), mCallStateLabel.getText())) { // Nothing to do if the labels are the same if (state == Call.State.ACTIVE || state == Call.State.CONFERENCED) { mCallStateLabel.clearAnimation(); @@ -510,24 +556,13 @@ public class CallCardFragment extends BaseFragment<CallCardPresenter, CallCardPr } // Update the call state label and icon. - if (!TextUtils.isEmpty(callStateLabel)) { - mCallStateLabel.setText(callStateLabel); - mCallStateLabel.setAlpha(1); - mCallStateLabel.setVisibility(View.VISIBLE); - + setCallStateLabel(callStateLabel); + if (!TextUtils.isEmpty(callStateLabel.getCallStateLabel())) { if (state == Call.State.ACTIVE || state == Call.State.CONFERENCED) { mCallStateLabel.clearAnimation(); } else { mCallStateLabel.startAnimation(mPulseAnimation); } - } else { - Animation callStateLabelAnimation = mCallStateLabel.getAnimation(); - if (callStateLabelAnimation != null) { - callStateLabelAnimation.cancel(); - } - mCallStateLabel.setText(null); - mCallStateLabel.setAlpha(0); - mCallStateLabel.setVisibility(View.GONE); } if (callStateIcon != null) { @@ -538,7 +573,7 @@ public class CallCardFragment extends BaseFragment<CallCardPresenter, CallCardPr mCallStateIcon.setImageDrawable(callStateIcon); if (state == Call.State.ACTIVE || state == Call.State.CONFERENCED - || TextUtils.isEmpty(callStateLabel)) { + || TextUtils.isEmpty(callStateLabel.getCallStateLabel())) { mCallStateIcon.clearAnimation(); } else { mCallStateIcon.startAnimation(mPulseAnimation); @@ -569,7 +604,7 @@ public class CallCardFragment extends BaseFragment<CallCardPresenter, CallCardPr if (state == Call.State.INCOMING) { if (callStateLabel != null) { - getView().announceForAccessibility(callStateLabel); + getView().announceForAccessibility(callStateLabel.getCallStateLabel()); } if (mPrimaryName.getText() != null) { getView().announceForAccessibility(mPrimaryName.getText()); @@ -577,6 +612,50 @@ public class CallCardFragment extends BaseFragment<CallCardPresenter, CallCardPr } } + private void setCallStateLabel(CallStateLabel callStateLabel) { + Log.v(this, "setCallStateLabel : label = " + callStateLabel.getCallStateLabel()); + + if (callStateLabel.isAutoDismissing()) { + mCallStateLabelResetPending = true; + mHandler.postDelayed(new Runnable() { + @Override + public void run() { + Log.v(this, "restoringCallStateLabel : label = " + + mPostResetCallStateLabel); + changeCallStateLabel(mPostResetCallStateLabel); + mCallStateLabelResetPending = false; + } + }, CALL_STATE_LABEL_RESET_DELAY_MS); + + changeCallStateLabel(callStateLabel.getCallStateLabel()); + } else { + // Keep track of the current call state label; used when resetting auto dismissing + // call state labels. + mPostResetCallStateLabel = callStateLabel.getCallStateLabel(); + + if (!mCallStateLabelResetPending) { + changeCallStateLabel(callStateLabel.getCallStateLabel()); + } + } + } + + private void changeCallStateLabel(CharSequence callStateLabel) { + Log.v(this, "changeCallStateLabel : label = " + callStateLabel); + if (!TextUtils.isEmpty(callStateLabel)) { + mCallStateLabel.setText(callStateLabel); + mCallStateLabel.setAlpha(1); + mCallStateLabel.setVisibility(View.VISIBLE); + } else { + Animation callStateLabelAnimation = mCallStateLabel.getAnimation(); + if (callStateLabelAnimation != null) { + callStateLabelAnimation.cancel(); + } + mCallStateLabel.setText(null); + mCallStateLabel.setAlpha(0); + mCallStateLabel.setVisibility(View.GONE); + } + } + @Override public void setCallbackNumber(String callbackNumber, boolean isEmergencyCall) { if (mInCallMessageLabel == null) { @@ -670,7 +749,7 @@ public class CallCardFragment extends BaseFragment<CallCardPresenter, CallCardPr * * TODO: Move this to the CallCardPresenter. */ - private CharSequence getCallStateLabelFromState(int state, int videoState, + private CallStateLabel getCallStateLabelFromState(int state, int videoState, int sessionModificationState, DisconnectCause disconnectCause, String label, boolean isGatewayCall, boolean isWifi, boolean isConference) { final Context context = getView().getContext(); @@ -678,6 +757,7 @@ public class CallCardFragment extends BaseFragment<CallCardPresenter, CallCardPr boolean hasSuggestedLabel = label != null; boolean isAccount = hasSuggestedLabel && !isGatewayCall; + boolean isAutoDismissing = false; switch (state) { case Call.State.IDLE: @@ -689,15 +769,20 @@ public class CallCardFragment extends BaseFragment<CallCardPresenter, CallCardPr if ((isAccount || isWifi || isConference) && hasSuggestedLabel) { callStateLabel = label; } else if (sessionModificationState + == Call.SessionModificationState.REQUEST_REJECTED) { + callStateLabel = context.getString(R.string.card_title_video_call_rejected); + isAutoDismissing = true; + } else if (sessionModificationState == Call.SessionModificationState.REQUEST_FAILED) { callStateLabel = context.getString(R.string.card_title_video_call_error); + isAutoDismissing = true; } else if (sessionModificationState == Call.SessionModificationState.WAITING_FOR_RESPONSE) { callStateLabel = context.getString(R.string.card_title_video_call_requesting); - } else if (CallUtils.isVideoCall(videoState) && - VideoProfile.VideoState.isPaused(videoState)) { - callStateLabel = context.getString(R.string.card_title_video_call_paused); - } else if (VideoProfile.VideoState.isBidirectional(videoState)) { + } else if (sessionModificationState + == Call.SessionModificationState.RECEIVED_UPGRADE_TO_VIDEO_REQUEST) { + callStateLabel = context.getString(R.string.card_title_video_call_requesting); + } else if (CallUtils.isVideoCall(videoState)) { callStateLabel = context.getString(R.string.card_title_video_call); } break; @@ -721,7 +806,8 @@ public class CallCardFragment extends BaseFragment<CallCardPresenter, CallCardPr callStateLabel = label; } else if (isAccount) { callStateLabel = context.getString(R.string.incoming_via_template, label); - } else if (VideoProfile.VideoState.isBidirectional(videoState)) { + } else if (VideoProfile.VideoState.isTransmissionEnabled(videoState) || + VideoProfile.VideoState.isReceptionEnabled(videoState)) { callStateLabel = context.getString(R.string.notification_incoming_video_call); } else { callStateLabel = context.getString(R.string.card_title_incoming_call); @@ -748,7 +834,7 @@ public class CallCardFragment extends BaseFragment<CallCardPresenter, CallCardPr default: Log.wtf(this, "updateCallStateWidgets: unexpected call: " + state); } - return callStateLabel; + return new CallStateLabel(callStateLabel, isAutoDismissing); } private void showAndInitializeSecondaryCallInfo(boolean hasProvider) { diff --git a/InCallUI/src/com/android/incallui/CallCardPresenter.java b/InCallUI/src/com/android/incallui/CallCardPresenter.java index ee13e061f..b233ad56b 100644 --- a/InCallUI/src/com/android/incallui/CallCardPresenter.java +++ b/InCallUI/src/com/android/incallui/CallCardPresenter.java @@ -48,6 +48,7 @@ import com.android.incallui.InCallPresenter.IncomingCallListener; import com.android.incalluibind.ObjectFactory; import java.lang.ref.WeakReference; +import java.util.Objects; import com.google.common.base.Preconditions; @@ -58,7 +59,7 @@ import com.google.common.base.Preconditions; */ public class CallCardPresenter extends Presenter<CallCardPresenter.CallCardUi> implements InCallStateListener, IncomingCallListener, InCallDetailsListener, - InCallEventListener { + InCallEventListener, CallList.CallUpdateListener { public interface EmergencyCallListener { public void onCallUpdated(BaseFragment fragment, boolean isEmergency); @@ -75,8 +76,8 @@ public class CallCardPresenter extends Presenter<CallCardPresenter.CallCardUi> private ContactCacheEntry mPrimaryContactInfo; private ContactCacheEntry mSecondaryContactInfo; private CallTimer mCallTimer; - private Context mContext; + private boolean mSpinnerShowing = false; public static class ContactLookupCallback implements ContactInfoCacheCallback { private final WeakReference<CallCardPresenter> mCallCardPresenter; @@ -121,6 +122,7 @@ public class CallCardPresenter extends Presenter<CallCardPresenter.CallCardUi> // Call may be null if disconnect happened already. if (call != null) { mPrimary = call; + CallList.getInstance().addCallUpdateListener(call.getId(), this); // start processing lookups right away. if (!call.isConferenceCall()) { @@ -158,6 +160,9 @@ public class CallCardPresenter extends Presenter<CallCardPresenter.CallCardUi> InCallPresenter.getInstance().removeIncomingCallListener(this); InCallPresenter.getInstance().removeDetailsListener(this); InCallPresenter.getInstance().removeInCallEventListener(this); + if (mPrimary != null) { + CallList.getInstance().removeCallUpdateListener(mPrimary.getId(), this); + } mPrimary = null; mPrimaryContactInfo = null; @@ -204,6 +209,7 @@ public class CallCardPresenter extends Presenter<CallCardPresenter.CallCardUi> final boolean secondaryChanged = !Call.areSame(mSecondary, secondary); mSecondary = secondary; + Call previousPrimary = mPrimary; mPrimary = primary; // Refresh primary call information if either: @@ -212,6 +218,11 @@ public class CallCardPresenter extends Presenter<CallCardPresenter.CallCardUi> if (mPrimary != null && (primaryChanged || ui.isManageConferenceVisible() != shouldShowManageConference())) { // primary call has changed + if (previousPrimary != null) { + CallList.getInstance().removeCallUpdateListener(previousPrimary.getId(), this); + } + CallList.getInstance().addCallUpdateListener(mPrimary.getId(), this); + mPrimaryContactInfo = ContactInfoCache.buildCacheEntryFromCall(mContext, mPrimary, mPrimary.getState() == Call.State.INCOMING); updatePrimaryDisplayInfo(); @@ -262,7 +273,6 @@ public class CallCardPresenter extends Presenter<CallCardPresenter.CallCardUi> } maybeShowManageConferenceCallButton(); - maybeShowProgressSpinner(); // Hide the end call button instantly if we're receiving an incoming call. getUi().setEndCallButtonEnabled(shouldShowEndCallButton(mPrimary, callState), @@ -279,6 +289,32 @@ public class CallCardPresenter extends Presenter<CallCardPresenter.CallCardUi> } } + @Override + public void onCallChanged(Call call) { + // No-op; specific call updates handled elsewhere. + } + + /** + * Handles a change to the session modification state for a call. Triggers showing the progress + * spinner, as well as updating the call state label. + * + * @param sessionModificationState The new session modification state. + */ + @Override + public void onSessionModificationStateChange(int sessionModificationState) { + Log.d(this, "onSessionModificationStateChange : sessionModificationState = " + + sessionModificationState); + + if (mPrimary == null) { + return; + } + maybeShowProgressSpinner(mPrimary.getState(), sessionModificationState); + getUi().setEndCallButtonEnabled(sessionModificationState != + Call.SessionModificationState.RECEIVED_UPGRADE_TO_VIDEO_REQUEST, + true /* shouldAnimate */); + updatePrimaryCallState(); + } + private String getSubscriptionNumber() { // If it's an emergency call, and they're not populating the callback number, // then try to fall back to the phone sub info (to hopefully get the SIM's @@ -322,11 +358,21 @@ public class CallCardPresenter extends Presenter<CallCardPresenter.CallCardUi> getUi().showManageConferenceCallButton(shouldShowManageConference()); } - private void maybeShowProgressSpinner() { - final boolean show = mPrimary != null && mPrimary.getSessionModificationState() - == Call.SessionModificationState.WAITING_FOR_RESPONSE - && mPrimary.getState() == Call.State.ACTIVE; - getUi().setProgressSpinnerVisible(show); + /** + * Determines if a pending session modification exists for the current call. If so, the + * progress spinner is shown, and the call state is updated. + * + * @param callState The call state. + * @param sessionModificationState The session modification state. + */ + private void maybeShowProgressSpinner(int callState, int sessionModificationState) { + final boolean show = sessionModificationState == + Call.SessionModificationState.WAITING_FOR_RESPONSE + && callState == Call.State.ACTIVE; + if (show != mSpinnerShowing) { + getUi().setProgressSpinnerVisible(show); + mSpinnerShowing = show; + } } /** @@ -657,7 +703,7 @@ public class CallCardPresenter extends Presenter<CallCardPresenter.CallCardUi> } private boolean hasOutgoingGatewayCall() { - // We only display the gateway information while STATE_DIALING so return false for any othe + // We only display the gateway information while STATE_DIALING so return false for any other // call state. // TODO: mPrimary can be null because this is called from updatePrimaryDisplayInfo which // is also called after a contact search completes (call is not present yet). Split the diff --git a/InCallUI/src/com/android/incallui/CallList.java b/InCallUI/src/com/android/incallui/CallList.java index d89fead9a..bec81ec57 100644 --- a/InCallUI/src/com/android/incallui/CallList.java +++ b/InCallUI/src/com/android/incallui/CallList.java @@ -142,6 +142,21 @@ public class CallList { Trace.endSection(); } + /** + * Called when a single call has changed session modification state. + * + * @param call The call. + * @param sessionModificationState The new session modification state. + */ + public void onSessionModificationStateChange(Call call, int sessionModificationState) { + final List<CallUpdateListener> listeners = mCallUpdateListenerMap.get(call.getId()); + if (listeners != null) { + for (CallUpdateListener listener : listeners) { + listener.onSessionModificationStateChange(sessionModificationState); + } + } + } + public void notifyCallUpdateListeners(Call call) { final List<CallUpdateListener> listeners = mCallUpdateListenerMap.get(call.getId()); if (listeners != null) { @@ -501,7 +516,12 @@ public class CallList { */ public void notifyCallsOfDeviceRotation(int rotation) { for (Call call : mCallById.values()) { - if (call.getVideoCall() != null) { + // First, ensure a VideoCall is set on the call so that the change can be sent to the + // provider (a VideoCall can be present for a call that does not currently have video, + // but can be upgraded to video). + // Second, ensure that the call videoState has video enabled (there is no need to set + // device orientation on a voice call which has not yet been upgraded to video). + if (call.getVideoCall() != null && CallUtils.isVideoCall(call)) { call.getVideoCall().setDeviceOrientation(rotation); } } @@ -556,10 +576,19 @@ public class CallList { * that will get called upon disconnection. */ public void onDisconnect(Call call); + + } public interface CallUpdateListener { // TODO: refactor and limit arg to be call state. Caller info is not needed. public void onCallChanged(Call call); + + /** + * Notifies of a change to the session modification state for a call. + * + * @param sessionModificationState The new session modification state. + */ + public void onSessionModificationStateChange(int sessionModificationState); } } diff --git a/InCallUI/src/com/android/incallui/CallUtils.java b/InCallUI/src/com/android/incallui/CallUtils.java index 79cf4c7e7..0e0c4c6f5 100644 --- a/InCallUI/src/com/android/incallui/CallUtils.java +++ b/InCallUI/src/com/android/incallui/CallUtils.java @@ -39,9 +39,8 @@ public class CallUtils { } public static boolean isVideoCall(int videoState) { - return VideoProfile.VideoState.isBidirectional(videoState) - && VideoProfile.VideoState.isTransmissionEnabled(videoState) - && VideoProfile.VideoState.isReceptionEnabled(videoState); + return VideoProfile.VideoState.isTransmissionEnabled(videoState) + || VideoProfile.VideoState.isReceptionEnabled(videoState); } public static boolean isIncomingVideoCall(Call call) { diff --git a/InCallUI/src/com/android/incallui/GlowPadWrapper.java b/InCallUI/src/com/android/incallui/GlowPadWrapper.java index 58a5f30ea..177669668 100644 --- a/InCallUI/src/com/android/incallui/GlowPadWrapper.java +++ b/InCallUI/src/com/android/incallui/GlowPadWrapper.java @@ -49,6 +49,7 @@ public class GlowPadWrapper extends GlowPadView implements GlowPadView.OnTrigger private AnswerListener mAnswerListener; private boolean mPingEnabled = true; private boolean mTargetTriggered = false; + private int mVideoState = VideoProfile.VideoState.BIDIRECTIONAL; public GlowPadWrapper(Context context) { super(context); @@ -125,11 +126,11 @@ public class GlowPadWrapper extends GlowPadView implements GlowPadView.OnTrigger break; case R.drawable.ic_videocam: case R.drawable.ic_lockscreen_answer_video: - mAnswerListener.onAnswer(VideoProfile.VideoState.BIDIRECTIONAL, getContext()); + mAnswerListener.onAnswer(mVideoState, getContext()); mTargetTriggered = true; break; - case R.drawable.ic_toolbar_video_off: - InCallPresenter.getInstance().declineUpgradeRequest(getContext()); + case R.drawable.ic_lockscreen_decline_video: + mAnswerListener.onDeclineUpgradeRequest(getContext()); mTargetTriggered = true; break; default: @@ -152,9 +153,19 @@ public class GlowPadWrapper extends GlowPadView implements GlowPadView.OnTrigger mAnswerListener = listener; } + /** + * Sets the video state represented by the "video" icon on the glow pad. + * + * @param videoState The new video state. + */ + public void setVideoState(int videoState) { + mVideoState = videoState; + } + public interface AnswerListener { void onAnswer(int videoState, Context context); void onDecline(Context context); + void onDeclineUpgradeRequest(Context context); void onText(); } } diff --git a/InCallUI/src/com/android/incallui/InCallActivity.java b/InCallUI/src/com/android/incallui/InCallActivity.java index 5ecb96e3f..289bf6388 100644 --- a/InCallUI/src/com/android/incallui/InCallActivity.java +++ b/InCallUI/src/com/android/incallui/InCallActivity.java @@ -24,19 +24,21 @@ import android.app.DialogFragment; import android.app.Fragment; import android.app.FragmentManager; import android.app.FragmentTransaction; -import android.content.Context; import android.content.DialogInterface; import android.content.DialogInterface.OnClickListener; import android.content.DialogInterface.OnCancelListener; import android.content.Intent; import android.content.res.Configuration; import android.graphics.Point; +import android.hardware.SensorManager; import android.os.Bundle; import android.os.Trace; import android.telecom.DisconnectCause; import android.telecom.PhoneAccountHandle; import android.text.TextUtils; +import android.view.Display; import android.view.MenuItem; +import android.view.OrientationEventListener; import android.view.animation.Animation; import android.view.animation.AnimationUtils; import android.view.KeyEvent; @@ -122,10 +124,13 @@ public class InCallActivity extends Activity implements FragmentDisplayManager { } }; + /** Listener for orientation changes. */ + private OrientationEventListener mOrientationEventListener; + /** - * Used to determine if a change in orientation has occurred. + * Used to determine if a change in rotation has occurred. */ - private static int sCurrentOrientation = Configuration.ORIENTATION_UNDEFINED; + private static int sPreviousRotation = -1; @Override protected void onCreate(Bundle icicle) { @@ -193,6 +198,28 @@ public class InCallActivity extends Activity implements FragmentDisplayManager { dialogFragment.setListener(mSelectAcctListener); } } + + mOrientationEventListener = new OrientationEventListener(this, + SensorManager.SENSOR_DELAY_NORMAL) { + @Override + public void onOrientationChanged(int orientation) { + // Orientation is the current device orientation in degrees. Ultimately we want + // the rotation (in fixed 90 degree intervals). + Display display = getWindowManager().getDefaultDisplay(); + int newRotation = display.getRotation(); + if (newRotation != sPreviousRotation) { + doOrientationChanged(newRotation); + } + } + }; + + if (mOrientationEventListener.canDetectOrientation()) { + Log.v(this, "Orientation detection enabled."); + mOrientationEventListener.enable(); + } else { + Log.v(this, "Orientation detection disabled."); + mOrientationEventListener.disable(); + } Log.d(this, "onCreate(): exit"); } @@ -215,9 +242,6 @@ public class InCallActivity extends Activity implements FragmentDisplayManager { // setting activity should be last thing in setup process InCallPresenter.getInstance().setActivity(this); - // It is possible that the activity restarted because orientation changed. - // Notify listeners if orientation changed. - doOrientationChanged(getResources().getConfiguration().orientation); InCallPresenter.getInstance().onActivityStarted(); } @@ -357,7 +381,7 @@ public class InCallActivity extends Activity implements FragmentDisplayManager { // in-call UI: if ((mConferenceManagerFragment == null || !mConferenceManagerFragment.isVisible()) - && !mCallCardFragment.isVisible()) { + && (mCallCardFragment == null || !mCallCardFragment.isVisible())) { return; } @@ -474,20 +498,19 @@ public class InCallActivity extends Activity implements FragmentDisplayManager { } /** - * Handles changes in device orientation. + * Handles changes in device rotation. * - * @param orientation The new device orientation. + * @param rotation The new device rotation. */ - private void doOrientationChanged(int orientation) { - Log.d(this, "doOrientationChanged prevOrientation=" + sCurrentOrientation + - " newOrientation=" + orientation); - // Check to see if the orientation changed to prevent triggering orientation change events + private void doOrientationChanged(int rotation) { + Log.d(this, "doOrientationChanged prevOrientation=" + sPreviousRotation + + " newOrientation=" + rotation); + // Check to see if the rotation changed to prevent triggering rotation change events // for other configuration changes. - if (orientation != sCurrentOrientation) { - sCurrentOrientation = orientation; - InCallPresenter.getInstance().onDeviceRotationChange( - getWindowManager().getDefaultDisplay().getRotation()); - InCallPresenter.getInstance().onDeviceOrientationChange(sCurrentOrientation); + if (rotation != sPreviousRotation) { + sPreviousRotation = rotation; + InCallPresenter.getInstance().onDeviceRotationChange(rotation); + InCallPresenter.getInstance().onDeviceOrientationChange(sPreviousRotation); } } diff --git a/InCallUI/src/com/android/incallui/InCallVideoCallCallback.java b/InCallUI/src/com/android/incallui/InCallVideoCallCallback.java index ba4ab660d..ede1129cd 100644 --- a/InCallUI/src/com/android/incallui/InCallVideoCallCallback.java +++ b/InCallUI/src/com/android/incallui/InCallVideoCallCallback.java @@ -80,6 +80,19 @@ public class InCallVideoCallCallback extends VideoCall.Callback { Log.d(this, "onSessionModifyResponseReceived status=" + status + " requestedProfile=" + requestedProfile + " responseProfile=" + responseProfile); if (status != VideoProvider.SESSION_MODIFY_REQUEST_SUCCESS) { + // Report the reason the upgrade failed as the new session modification state. + if (status == VideoProvider.SESSION_MODIFY_REQUEST_TIMED_OUT) { + mCall.setSessionModificationState( + Call.SessionModificationState.UPGRADE_TO_VIDEO_REQUEST_TIMED_OUT); + } else { + if (status == VideoProvider.SESSION_MODIFY_REQUEST_REJECTED_BY_REMOTE) { + mCall.setSessionModificationState( + Call.SessionModificationState.REQUEST_REJECTED); + } else { + mCall.setSessionModificationState( + Call.SessionModificationState.REQUEST_FAILED); + } + } InCallVideoCallCallbackNotifier.getInstance().upgradeToVideoFail(status, mCall); } else if (requestedProfile != null && responseProfile != null) { boolean modifySucceeded = requestedProfile.getVideoState() == @@ -95,6 +108,8 @@ public class InCallVideoCallCallback extends VideoCall.Callback { } else { Log.d(this, "onSessionModifyResponseReceived request and response Profiles are null"); } + // Finally clear the outstanding request. + mCall.setSessionModificationState(Call.SessionModificationState.NO_REQUEST); } /** diff --git a/InCallUI/src/com/android/incallui/StatusBarNotifier.java b/InCallUI/src/com/android/incallui/StatusBarNotifier.java index 86f997575..a54536ce6 100644 --- a/InCallUI/src/com/android/incallui/StatusBarNotifier.java +++ b/InCallUI/src/com/android/incallui/StatusBarNotifier.java @@ -45,7 +45,9 @@ import com.android.incallui.InCallPresenter.InCallState; /** * This class adds Notifications to the status bar for the in-call experience. */ -public class StatusBarNotifier implements InCallPresenter.InCallStateListener { +public class StatusBarNotifier implements InCallPresenter.InCallStateListener, + CallList.CallUpdateListener { + // notification types private static final int IN_CALL_NOTIFICATION = 1; @@ -58,6 +60,8 @@ public class StatusBarNotifier implements InCallPresenter.InCallStateListener { private int mSavedContent = 0; private Bitmap mSavedLargeIcon; private String mSavedContentTitle; + private String mCallId = null; + private InCallState mInCallState; public StatusBarNotifier(Context context, ContactInfoCache contactInfoCache) { Preconditions.checkNotNull(context); @@ -74,7 +78,7 @@ public class StatusBarNotifier implements InCallPresenter.InCallStateListener { @Override public void onStateChange(InCallState oldState, InCallState newState, CallList callList) { Log.d(this, "onStateChange"); - + mInCallState = newState; updateNotification(newState, callList); } @@ -146,6 +150,12 @@ public class StatusBarNotifier implements InCallPresenter.InCallStateListener { final boolean isIncoming = (call.getState() == Call.State.INCOMING || call.getState() == Call.State.CALL_WAITING); + if (mCallId != null) { + CallList.getInstance().removeCallUpdateListener(mCallId, this); + } + mCallId = call.getId(); + CallList.getInstance().addCallUpdateListener(call.getId(), this); + // we make a call to the contact info cache to query for supplemental data to what the // call provides. This includes the contact name and photo. // This callback will always get called immediately and synchronously with whatever data @@ -187,7 +197,7 @@ public class StatusBarNotifier implements InCallPresenter.InCallStateListener { // Check if data has changed; if nothing is different, don't issue another notification. final int iconResId = getIconToDisplay(call); - final Bitmap largeIcon = getLargeIconToDisplay(contactInfo, call); + Bitmap largeIcon = getLargeIconToDisplay(contactInfo, call); final int contentResId = getContentString(call); final String contentTitle = getContentTitle(contactInfo, call); @@ -195,6 +205,10 @@ public class StatusBarNotifier implements InCallPresenter.InCallStateListener { return; } + if (largeIcon != null) { + largeIcon = getRoundedIcon(largeIcon); + } + /* * Nothing more to check...build and send it. */ @@ -342,15 +356,18 @@ public class StatusBarNotifier implements InCallPresenter.InCallStateListener { if (contactInfo.photo != null && (contactInfo.photo instanceof BitmapDrawable)) { largeIcon = ((BitmapDrawable) contactInfo.photo).getBitmap(); } + return largeIcon; + } - if (largeIcon != null) { - final int height = (int) mContext.getResources().getDimension( - android.R.dimen.notification_large_icon_height); - final int width = (int) mContext.getResources().getDimension( - android.R.dimen.notification_large_icon_width); - largeIcon = BitmapUtil.getRoundedBitmap(largeIcon, width, height); + private Bitmap getRoundedIcon(Bitmap bitmap) { + if (bitmap == null) { + return null; } - return largeIcon; + final int height = (int) mContext.getResources().getDimension( + android.R.dimen.notification_large_icon_height); + final int width = (int) mContext.getResources().getDimension( + android.R.dimen.notification_large_icon_width); + return BitmapUtil.getRoundedBitmap(bitmap, width, height); } /** @@ -574,4 +591,25 @@ public class StatusBarNotifier implements InCallPresenter.InCallStateListener { return PendingIntent.getBroadcast(context, 0, intent, 0); } + @Override + public void onCallChanged(Call call) { + // no-op + } + + /** + * Responds to changes in the session modification state for the call by dismissing the + * status bar notification as required. + * + * @param sessionModificationState The new session modification state. + */ + @Override + public void onSessionModificationStateChange(int sessionModificationState) { + if (sessionModificationState == Call.SessionModificationState.NO_REQUEST) { + if (mCallId != null) { + CallList.getInstance().removeCallUpdateListener(mCallId, this); + } + + updateNotification(mInCallState, CallList.getInstance()); + } + } } diff --git a/InCallUI/src/com/android/incallui/VideoCallFragment.java b/InCallUI/src/com/android/incallui/VideoCallFragment.java index c285ff3fe..24e9e8d76 100644 --- a/InCallUI/src/com/android/incallui/VideoCallFragment.java +++ b/InCallUI/src/com/android/incallui/VideoCallFragment.java @@ -16,15 +16,10 @@ package com.android.incallui; -import android.content.Context; -import android.content.res.Configuration; -import android.content.res.Resources; import android.graphics.Matrix; import android.graphics.Point; import android.graphics.SurfaceTexture; import android.os.Bundle; -import android.telecom.Connection; -import android.telecom.VideoProfile; import android.view.Display; import android.view.LayoutInflater; import android.view.Surface; @@ -33,7 +28,8 @@ import android.view.View; import android.view.ViewGroup; import android.view.ViewStub; import android.view.ViewTreeObserver; -import android.widget.Toast; +import android.widget.FrameLayout; +import android.widget.ImageView; import com.google.common.base.Objects; @@ -65,12 +61,6 @@ public class VideoCallFragment extends BaseFragment<VideoCallPresenter, */ public static final int ORIENTATION_UNKNOWN = -1; - /** - * Invalid resource id. - */ - public static final int INVALID_RESOURCE_ID = -1; - - // Static storage used to retain the video surfaces across Activity restart. // TextureViews are not parcelable, so it is not possible to store them in the saved state. private static boolean sVideoSurfacesInUse = false; @@ -91,6 +81,21 @@ public class VideoCallFragment extends BaseFragment<VideoCallPresenter, private View mVideoViews; /** + * The {@link FrameLayout} containing the preview surface. + */ + private View mPreviewVideoContainer; + + /** + * Icon shown to indicate that the outgoing camera has been turned off. + */ + private View mCameraOff; + + /** + * {@link ImageView} containing the user's profile photo. + */ + private ImageView mPreviewPhoto; + + /** * {@code True} when the layout of the activity has been completed. */ private boolean mIsLayoutComplete = false; @@ -534,19 +539,21 @@ public class VideoCallFragment extends BaseFragment<VideoCallPresenter, } /** - * Show or hide preview and incoming video views + * Hides and shows the incoming video view and changes the outgoing video view's state based on + * whether outgoing view is enabled or not. */ - public void showVideoViews(boolean showPreview, boolean showIncoming) { + public void showVideoViews(boolean previewPaused, boolean showIncoming) { inflateVideoUi(true); View incomingVideoView = mVideoViews.findViewById(R.id.incomingVideo); - View previewVideoView = mVideoViews.findViewById(R.id.previewVideo); - if (incomingVideoView != null) { incomingVideoView.setVisibility(showIncoming ? View.VISIBLE : View.INVISIBLE); } - if (previewVideoView != null) { - previewVideoView.setVisibility(showPreview ? View.VISIBLE : View.INVISIBLE); + if (mCameraOff != null) { + mCameraOff.setVisibility(!previewPaused ? View.VISIBLE : View.INVISIBLE); + } + if (mPreviewPhoto != null) { + mPreviewPhoto.setVisibility(!previewPaused ? View.VISIBLE : View.INVISIBLE); } } @@ -558,43 +565,6 @@ public class VideoCallFragment extends BaseFragment<VideoCallPresenter, } /** - * Displays a message on the UI that the video call quality has changed. - * - */ - @Override - public void showVideoQualityChanged(int videoQuality) { - Log.d(this, "showVideoQualityChanged. Video quality changed to " + videoQuality); - - final Context context = getActivity(); - if (context == null) { - Log.e(this, "showVideoQualityChanged - Activity is null. Return"); - return; - } - - final Resources resources = context.getResources(); - - int videoQualityResourceId = R.string.video_quality_unknown; - switch (videoQuality) { - case VideoProfile.QUALITY_HIGH: - videoQualityResourceId = R.string.video_quality_high; - break; - case VideoProfile.QUALITY_MEDIUM: - videoQualityResourceId = R.string.video_quality_medium; - break; - case VideoProfile.QUALITY_LOW: - videoQualityResourceId = R.string.video_quality_low; - break; - default: - break; - } - - String videoQualityChangedText = resources.getString(R.string.video_quality_changed) + - resources.getString(videoQualityResourceId); - - Toast.makeText(context, videoQualityChangedText, Toast.LENGTH_SHORT).show(); - } - - /** * Cleans up the video telephony surfaces. Used when the presenter indicates a change to an * audio-only state. Since the surfaces are static, it is important to ensure they are cleaned * up promptly. @@ -613,6 +583,11 @@ public class VideoCallFragment extends BaseFragment<VideoCallPresenter, sVideoSurfacesInUse = false; } + @Override + public ImageView getPreviewPhotoView() { + return mPreviewPhoto; + } + private void onPresenterChanged(VideoCallPresenter presenter) { Log.d(this, "onPresenterChanged: Presenter=" + presenter); if (sDisplaySurface != null) { @@ -678,11 +653,19 @@ public class VideoCallFragment extends BaseFragment<VideoCallPresenter, return; } + // Set the dimensions of both the video surface and the FrameLayout containing it. ViewGroup.LayoutParams params = preview.getLayoutParams(); params.width = width; params.height = height; preview.setLayoutParams(params); + if (mPreviewVideoContainer != null) { + ViewGroup.LayoutParams containerParams = mPreviewVideoContainer.getLayoutParams(); + containerParams.width = width; + containerParams.height = height; + mPreviewVideoContainer.setLayoutParams(containerParams); + } + // The width and height are interchanged outside of this method based on the current // orientation, so we can transform using "width", which will be either the width or // the height. @@ -739,47 +722,6 @@ public class VideoCallFragment extends BaseFragment<VideoCallPresenter, } /** - * Sets the call's data usage value - * - * @param context the current context - * @param dataUsage the data usage value - */ - @Override - public void setCallDataUsage(Context context, long dataUsage) { - Log.d(this, "setDataUsage: dataUsage = " + dataUsage); - Toast.makeText(context, "dataUsage=" + dataUsage, Toast.LENGTH_LONG).show(); - } - - private int fromCallSessionEvent(int event) { - switch (event) { - case Connection.VideoProvider.SESSION_EVENT_RX_PAUSE: - return R.string.player_stopped; - case Connection.VideoProvider.SESSION_EVENT_RX_RESUME: - return R.string.player_started; - case Connection.VideoProvider.SESSION_EVENT_CAMERA_FAILURE: - return R.string.camera_not_ready; - case Connection.VideoProvider.SESSION_EVENT_CAMERA_READY: - return R.string.camera_ready; - default: - return R.string.unknown_call_session_event; - } - } - - /** - * Sets the call's data usage value - * - * @param context the current context - * @param event the call session event - */ - @Override - public void displayCallSessionEvent(int event) { - Log.d(this, "displayCallSessionEvent: event = " + event); - Context context = getActivity(); - String msg = context.getResources().getString(fromCallSessionEvent(event)); - Toast.makeText(context, msg, Toast.LENGTH_SHORT).show(); - } - - /** * Determines the size of the device screen. * * @return {@link Point} specifying the width and height of the screen. @@ -818,6 +760,10 @@ public class VideoCallFragment extends BaseFragment<VideoCallPresenter, } if (mVideoViews != null) { + mPreviewVideoContainer = mVideoViews.findViewById(R.id.previewVideoContainer); + mCameraOff = mVideoViews.findViewById(R.id.previewCameraOff); + mPreviewPhoto = (ImageView) mVideoViews.findViewById(R.id.previewProfilePhoto); + TextureView displaySurface = (TextureView) mVideoViews.findViewById(R.id.incomingVideo); Log.d(this, "inflateVideoCallViews: sVideoSurfacesInUse=" + sVideoSurfacesInUse); diff --git a/InCallUI/src/com/android/incallui/VideoCallPresenter.java b/InCallUI/src/com/android/incallui/VideoCallPresenter.java index f11f328e6..ba82c01fc 100644 --- a/InCallUI/src/com/android/incallui/VideoCallPresenter.java +++ b/InCallUI/src/com/android/incallui/VideoCallPresenter.java @@ -18,8 +18,13 @@ package com.android.incallui; import android.content.Context; import android.content.res.Configuration; +import android.database.Cursor; import android.graphics.Point; +import android.net.Uri; +import android.os.AsyncTask; import android.os.Handler; +import android.os.Looper; +import android.provider.ContactsContract; import android.telecom.AudioState; import android.telecom.CameraCapabilities; import android.telecom.Connection; @@ -27,15 +32,17 @@ import android.telecom.Connection.VideoProvider; import android.telecom.InCallService.VideoCall; import android.telecom.VideoProfile; import android.view.Surface; +import android.view.View; +import android.widget.ImageView; import com.android.contacts.common.CallUtil; +import com.android.contacts.common.ContactPhotoManager; import com.android.incallui.InCallPresenter.InCallDetailsListener; import com.android.incallui.InCallPresenter.InCallOrientationListener; import com.android.incallui.InCallPresenter.InCallStateListener; import com.android.incallui.InCallPresenter.IncomingCallListener; import com.android.incallui.InCallVideoCallCallbackNotifier.SurfaceChangeListener; import com.android.incallui.InCallVideoCallCallbackNotifier.VideoEventListener; -import com.google.common.base.Preconditions; import java.util.Objects; @@ -70,6 +77,22 @@ public class VideoCallPresenter extends Presenter<VideoCallPresenter.VideoCallUi public static final boolean DEBUG = false; /** + * Runnable which is posted to schedule automatically entering fullscreen mode. + */ + private Runnable mAutoFullscreenRunnable = new Runnable() { + @Override + public void run() { + if (mAutoFullScreenPending) { + Log.v(this, "Automatically entering fullscreen mode."); + setFullScreen(true); + mAutoFullScreenPending = false; + } else { + Log.v(this, "Skipping scheduled fullscreen mode."); + } + } + }; + + /** * Determines the device orientation (portrait/lanscape). */ public int getDeviceOrientation() { @@ -158,9 +181,38 @@ public class VideoCallPresenter extends Presenter<VideoCallPresenter.VideoCallUi private static boolean mIsVideoMode = false; - /** Handler which resets request state to NO_REQUEST after an interval. */ - private Handler mSessionModificationResetHandler; - private static final long SESSION_MODIFICATION_RESET_DELAY_MS = 3000; + /** + * Contact photo manager to retrieve cached contact photo information. + */ + private ContactPhotoManager mContactPhotoManager = null; + + /** + * The URI for the user's profile photo, or {@code null} if not specified. + */ + private ContactInfoCache.ContactCacheEntry mProfileInfo = null; + + /** + * UI thread handler used for delayed task execution. + */ + private Handler mHandler; + + /** + * Determines whether video calls should automatically enter full screen mode after + * {@link #mAutoFullscreenTimeoutMillis} milliseconds. + */ + private boolean mIsAutoFullscreenEnabled = false; + + /** + * Determines the number of milliseconds after which a video call will automatically enter + * fullscreen mode. Requires {@link #mIsAutoFullscreenEnabled} to be {@code true}. + */ + private int mAutoFullscreenTimeoutMillis = 0; + + /** + * Determines if the countdown is currently running to automatically enter full screen video + * mode. + */ + private boolean mAutoFullScreenPending = false; /** * Initializes the presenter. @@ -168,10 +220,14 @@ public class VideoCallPresenter extends Presenter<VideoCallPresenter.VideoCallUi * @param context The current context. */ public void init(Context context) { - mContext = Preconditions.checkNotNull(context); + mContext = context; mMinimumVideoDimension = mContext.getResources().getDimension( R.dimen.video_preview_small_dimension); - mSessionModificationResetHandler = new Handler(); + mHandler = new Handler(Looper.getMainLooper()); + mIsAutoFullscreenEnabled = mContext.getResources() + .getBoolean(R.bool.video_call_auto_fullscreen); + mAutoFullscreenTimeoutMillis = mContext.getResources().getInteger( + R.integer.video_call_auto_fullscreen_timeout); } /** @@ -315,6 +371,26 @@ public class VideoCallPresenter extends Presenter<VideoCallPresenter.VideoCallUi private void toggleFullScreen() { mIsFullScreen = !mIsFullScreen; + Log.v(this, "toggleFullScreen = " + mIsFullScreen); + // Ensure we cancel any scheduled auto activation of fullscreen mode as the user's setting + // should override any automatic operation. + cancelAutoFullScreen(); + InCallPresenter.getInstance().setFullScreenVideoState(mIsFullScreen); + } + + /** + * Sets the current full screen mode. + * + * @param isFullScreen {@code true} if full screen mode should be active, {@code false} + * otherwise. + */ + public void setFullScreen(boolean isFullScreen) { + Log.v(this, "setFullScreen = " + isFullScreen); + if (mIsFullScreen == isFullScreen) { + Log.v(this, "setFullScreen ignored as already in that state."); + return; + } + mIsFullScreen = isFullScreen; InCallPresenter.getInstance().setFullScreenVideoState(mIsFullScreen); } @@ -367,21 +443,29 @@ public class VideoCallPresenter extends Presenter<VideoCallPresenter.VideoCallUi // Determine the primary active call). Call primary = null; + + // Determine the call which is the focus of the user's attention. In the case of an + // incoming call waiting call, the primary call is still the active video call, however + // the determination of whether we should be in fullscreen mode is based on the type of the + // incoming call, not the active video call. + Call currentCall = null; + if (newState == InCallPresenter.InCallState.INCOMING) { // We don't want to replace active video call (primary call) // with a waiting call, since user may choose to ignore/decline the waiting call and // this should have no impact on current active video call, that is, we should not // change the camera or UI unless the waiting VT call becomes active. primary = callList.getActiveCall(); + currentCall = callList.getIncomingCall(); if (!CallUtils.isActiveVideoCall(primary)) { primary = callList.getIncomingCall(); } } else if (newState == InCallPresenter.InCallState.OUTGOING) { - primary = callList.getOutgoingCall(); + currentCall = primary = callList.getOutgoingCall(); } else if (newState == InCallPresenter.InCallState.PENDING_OUTGOING) { - primary = callList.getPendingOutgoingCall(); + currentCall = primary = callList.getPendingOutgoingCall(); } else if (newState == InCallPresenter.InCallState.INCALL) { - primary = callList.getActiveCall(); + currentCall = primary = callList.getActiveCall(); } final boolean primaryChanged = !Objects.equals(mPrimaryCall, primary); @@ -390,10 +474,17 @@ public class VideoCallPresenter extends Presenter<VideoCallPresenter.VideoCallUi Log.d(this, "onStateChange mPrimaryCall = " + mPrimaryCall); if (primaryChanged) { onPrimaryCallChanged(primary); - } else if(mPrimaryCall!=null) { + } else if (mPrimaryCall != null) { updateVideoCall(primary); } updateCallCache(primary); + + // If the call context changed, potentially exit fullscreen or schedule auto enter of + // fullscreen mode. + // If the current call context is no longer a video call, exit fullscreen mode. + maybeExitFullscreen(currentCall); + // Schedule auto-enter of fullscreen mode if the current call context is a video call + maybeAutoEnterFullscreen(currentCall); } private void checkForVideoStateChange(Call call) { @@ -401,8 +492,10 @@ public class VideoCallPresenter extends Presenter<VideoCallPresenter.VideoCallUi final boolean hasVideoStateChanged = mCurrentVideoState != call.getVideoState(); Log.d(this, "checkForVideoStateChange: isVideoCall= " + isVideoCall - + " hasVideoStateChanged=" + - hasVideoStateChanged + " isVideoMode=" + isVideoMode()); + + " hasVideoStateChanged=" + hasVideoStateChanged + " isVideoMode=" + + isVideoMode() + " previousVideoState: " + + VideoProfile.VideoState.videoStateToString(mCurrentVideoState) + " newVideoState: " + + VideoProfile.VideoState.videoStateToString(call.getVideoState())); if (!hasVideoStateChanged) { return; @@ -610,6 +703,8 @@ public class VideoCallPresenter extends Presenter<VideoCallPresenter.VideoCallUi updateAudioMode(true); mIsVideoMode = true; + + maybeAutoEnterFullscreen(call); } //TODO: Move this into Telecom. InCallUI should not be this close to audio functionality. @@ -624,7 +719,7 @@ public class VideoCallPresenter extends Presenter<VideoCallPresenter.VideoCallUi sPrevVideoAudioMode != AudioModeProvider.AUDIO_MODE_INVALID; Log.d(this, "Is previous audio mode valid = " + isPrevAudioModeValid + " enableSpeaker is " - + enableSpeaker); + + enableSpeaker); // Set audio mode to previous mode if enableSpeaker is false. if (isPrevAudioModeValid && !enableSpeaker) { @@ -682,9 +777,7 @@ public class VideoCallPresenter extends Presenter<VideoCallPresenter.VideoCallUi enableCamera(mVideoCall, false); Log.d(this, "exitVideoMode mIsFullScreen: " + mIsFullScreen); - if (mIsFullScreen) { - toggleFullScreen(); - } + setFullScreen(false); mIsVideoMode = false; } @@ -712,6 +805,7 @@ public class VideoCallPresenter extends Presenter<VideoCallPresenter.VideoCallUi ui.showVideoViews(true, false); } else if (VideoProfile.VideoState.isReceptionEnabled(videoState)) { ui.showVideoViews(false, !isPaused && isCallActive); + loadProfilePhotoAsync(); } else { ui.hideVideoUi(); } @@ -770,18 +864,7 @@ public class VideoCallPresenter extends Presenter<VideoCallPresenter.VideoCallUi */ @Override public void onVideoQualityChanged(Call call, int videoQuality) { - if (!call.equals(mPrimaryCall)) { - return; - } - - VideoCallUi ui = getUi(); - if (ui == null) { - Log.e(this, "Error VideoCallUi is null. Return."); - return; - } - - // Display a video quality changed message on UI. - ui.showVideoQualityChanged(videoQuality); + // No-op } /** @@ -851,13 +934,28 @@ public class VideoCallPresenter extends Presenter<VideoCallPresenter.VideoCallUi */ @Override public void onCallSessionEvent(int event) { - Log.d(this, "onCallSessionEvent event =" + event); - VideoCallUi ui = getUi(); - if (ui == null) { - Log.e(this, "onCallSessionEvent: VideoCallUi is null"); - return; + StringBuilder sb = new StringBuilder(); + sb.append("onCallSessionEvent = "); + + switch (event) { + case Connection.VideoProvider.SESSION_EVENT_RX_PAUSE: + sb.append("rx_pause"); + break; + case Connection.VideoProvider.SESSION_EVENT_RX_RESUME: + sb.append("rx_resume"); + break; + case Connection.VideoProvider.SESSION_EVENT_CAMERA_FAILURE: + sb.append("camera_failure"); + break; + case Connection.VideoProvider.SESSION_EVENT_CAMERA_READY: + sb.append("camera_ready"); + break; + default: + sb.append("unknown event = "); + sb.append(event); + break; } - ui.displayCallSessionEvent(event); + Log.d(this, sb.toString()); } /** @@ -868,12 +966,6 @@ public class VideoCallPresenter extends Presenter<VideoCallPresenter.VideoCallUi @Override public void onCallDataUsageChange(long dataUsage) { Log.d(this, "onCallDataUsageChange dataUsage=" + dataUsage); - VideoCallUi ui = getUi(); - if (ui == null) { - Log.e(this, "onCallDataUsageChange: VideoCallUi is null"); - return; - } - ui.setCallDataUsage(mContext, dataUsage); } /** @@ -917,8 +1009,6 @@ public class VideoCallPresenter extends Presenter<VideoCallPresenter.VideoCallUi if (call == null) { return; } - - call.setSessionModificationState(Call.SessionModificationState.NO_REQUEST); } @Override @@ -931,25 +1021,6 @@ public class VideoCallPresenter extends Presenter<VideoCallPresenter.VideoCallUi if (call == null) { return; } - - if (status == VideoProvider.SESSION_MODIFY_REQUEST_TIMED_OUT) { - call.setSessionModificationState( - Call.SessionModificationState.UPGRADE_TO_VIDEO_REQUEST_TIMED_OUT); - } else { - call.setSessionModificationState(Call.SessionModificationState.REQUEST_FAILED); - - final Call modifyCall = call; - // Start handler to change state from REQUEST_FAILED to NO_REQUEST after an interval. - mSessionModificationResetHandler.postDelayed(new Runnable() { - @Override - public void run() { - if (modifyCall != null) { - modifyCall - .setSessionModificationState(Call.SessionModificationState.NO_REQUEST); - } - } - }, SESSION_MODIFICATION_RESET_DELAY_MS); - } } @Override @@ -991,7 +1062,6 @@ public class VideoCallPresenter extends Presenter<VideoCallPresenter.VideoCallUi * @param width peer width * @param height peer height */ - private void setDisplayVideoSize(int width, int height) { Log.d(this, "setDisplayVideoSize:Received peer width=" + width + " peer height=" + height); VideoCallUi ui = getUi(); @@ -1013,6 +1083,65 @@ public class VideoCallPresenter extends Presenter<VideoCallPresenter.VideoCallUi ui.setDisplayVideoSize(size.x, size.y); } + /** + * Exits fullscreen mode if the current call context has changed to a non-video call. + * + * @param call The call. + */ + protected void maybeExitFullscreen(Call call) { + if (call == null) { + return; + } + + if (!CallUtils.isVideoCall(call) || call.getState() == Call.State.INCOMING) { + setFullScreen(false); + } + } + + /** + * Schedules auto-entering of fullscreen mode. + * Will not enter full screen mode if any of the following conditions are met: + * 1. No call + * 2. Call is not active + * 3. Call is not video call + * 4. Already in fullscreen mode + * + * @param call The current call. + */ + protected void maybeAutoEnterFullscreen(Call call) { + if (!mIsAutoFullscreenEnabled) { + return; + } + + if (call == null || ( + call != null && (call.getState() != Call.State.ACTIVE || + !CallUtils.isVideoCall(call)) || mIsFullScreen)) { + // Ensure any previously scheduled attempt to enter fullscreen is cancelled. + cancelAutoFullScreen(); + return; + } + + if (mAutoFullScreenPending) { + Log.v(this, "maybeAutoEnterFullscreen : already pending."); + return; + } + Log.v(this, "maybeAutoEnterFullscreen : scheduled"); + mAutoFullScreenPending = true; + mHandler.postDelayed(mAutoFullscreenRunnable, mAutoFullscreenTimeoutMillis); + } + + /** + * Cancels pending auto fullscreen mode. + */ + public void cancelAutoFullScreen() { + if (!mAutoFullScreenPending) { + Log.v(this, "cancelAutoFullScreen : none pending."); + return; + } + Log.v(this, "cancelAutoFullScreen : cancelling pending"); + mAutoFullScreenPending = false; + } + private static boolean isAudioRouteEnabled(int audioRoute, int audioRouteMask) { return ((audioRoute & audioRouteMask) != 0); } @@ -1101,12 +1230,87 @@ public class VideoCallPresenter extends Presenter<VideoCallPresenter.VideoCallUi } /** + * Starts an asynchronous load of the user's profile photo. + */ + public void loadProfilePhotoAsync() { + final VideoCallUi ui = getUi(); + if (ui == null) { + return; + } + + final AsyncTask<Void, Void, Void> task = new AsyncTask<Void, Void, Void>() { + /** + * Performs asynchronous load of the user profile information. + * + * @param params The parameters of the task. + * + * @return {@code null}. + */ + @Override + protected Void doInBackground(Void... params) { + if (mProfileInfo == null) { + // Try and read the photo URI from the local profile. + mProfileInfo = new ContactInfoCache.ContactCacheEntry(); + final Cursor cursor = mContext.getContentResolver().query( + ContactsContract.Profile.CONTENT_URI, new String[]{ + ContactsContract.CommonDataKinds.Phone._ID, + ContactsContract.CommonDataKinds.Phone.PHOTO_URI, + ContactsContract.CommonDataKinds.Phone.LOOKUP_KEY, + ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, + }, null, null, null); + if (cursor != null) { + try { + if (cursor.moveToFirst()) { + mProfileInfo.lookupKey = cursor.getString(cursor.getColumnIndex( + ContactsContract.CommonDataKinds.Phone.LOOKUP_KEY)); + String photoUri = cursor.getString(cursor.getColumnIndex( + ContactsContract.CommonDataKinds.Phone.PHOTO_URI)); + mProfileInfo.displayPhotoUri = photoUri == null ? null + : Uri.parse(photoUri); + mProfileInfo.name = cursor.getString(cursor.getColumnIndex( + ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)); + } + } finally { + cursor.close(); + } + } + } + return null; + } + + @Override + protected void onPostExecute(Void result) { + // If user profile information was found, issue an async request to load the user's + // profile photo. + if (mProfileInfo != null) { + if (mContactPhotoManager == null) { + mContactPhotoManager = ContactPhotoManager.getInstance(mContext); + } + ContactPhotoManager.DefaultImageRequest imageRequest = (mProfileInfo != null) + ? null : + new ContactPhotoManager.DefaultImageRequest(mProfileInfo.name, + mProfileInfo.lookupKey, false /* isCircularPhoto */); + + ImageView photoView = ui.getPreviewPhotoView(); + if (photoView == null) { + return; + } + mContactPhotoManager.loadDirectoryPhoto(photoView, + mProfileInfo.displayPhotoUri, + false /* darkTheme */, false /* isCircular */, imageRequest); + } + } + }; + + task.execute(); + } + + /** * Defines the VideoCallUI interactions. */ public interface VideoCallUi extends Ui { void showVideoViews(boolean showPreview, boolean showIncoming); void hideVideoUi(); - void showVideoQualityChanged(int videoQuality); boolean isDisplayVideoSurfaceCreated(); boolean isPreviewVideoSurfaceCreated(); Surface getDisplayVideoSurface(); @@ -1115,10 +1319,9 @@ public class VideoCallPresenter extends Presenter<VideoCallPresenter.VideoCallUi void setPreviewSize(int width, int height); void setPreviewSurfaceSize(int width, int height); void setDisplayVideoSize(int width, int height); - void setCallDataUsage(Context context, long dataUsage); - void displayCallSessionEvent(int event); Point getScreenSize(); Point getPreviewSize(); void cleanupSurfaces(); + ImageView getPreviewPhotoView(); } } diff --git a/InCallUI/src/com/android/incallui/widget/multiwaveview/GlowPadView.java b/InCallUI/src/com/android/incallui/widget/multiwaveview/GlowPadView.java index 812e883c0..4bd27db9c 100644 --- a/InCallUI/src/com/android/incallui/widget/multiwaveview/GlowPadView.java +++ b/InCallUI/src/com/android/incallui/widget/multiwaveview/GlowPadView.java @@ -637,11 +637,15 @@ public class GlowPadView extends View { } /** - * Sets teh handle drawable to the drawable specified by the resource ID. + * Sets the handle drawable to the drawable specified by the resource ID. * @param resourceId */ public void setHandleDrawable(int resourceId) { - mHandleDrawable = new TargetDrawable(getResources(), resourceId, 2); + if (mHandleDrawable != null) { + mHandleDrawable.setDrawable(getResources(), resourceId); + } else { + mHandleDrawable = new TargetDrawable(getResources(), resourceId, 1); + } mHandleDrawable.setState(TargetDrawable.STATE_INACTIVE); } |