diff options
author | SzuWei Lin <szuweilin@google.com> | 2020-09-01 18:23:12 +0800 |
---|---|---|
committer | SzuWei Lin <szuweilin@google.com> | 2020-09-01 18:23:12 +0800 |
commit | dcd75c34276342ea917a989ba082cad120d23a99 (patch) | |
tree | 324888b5bf40a3e6c321e6773417529a1d7a54a6 | |
parent | eacd320e9610dd631043c1e434dfe9ff9d56abbd (diff) | |
parent | c1e75810125391a954328ad7b1c858ccab3188d2 (diff) | |
download | platform_packages_apps_Car_Dialer-android10-gsi.tar.gz platform_packages_apps_Car_Dialer-android10-gsi.tar.bz2 platform_packages_apps_Car_Dialer-android10-gsi.zip |
Merge branch android10-qpr3-releaseandroid10-gsi
Change-Id: If7bb21717dadd95b743dc0d11935a530c0f66903
163 files changed, 2247 insertions, 1188 deletions
diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 481589c0..99cf3888 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -16,6 +16,7 @@ <manifest xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools" package="com.android.car.dialer"> <uses-sdk android:minSdkVersion="24" android:targetSdkVersion='24'/> @@ -38,7 +39,8 @@ android:name=".DialerApplication" android:directBootAware="true" android:label="@string/phone_app_name" - android:icon="@drawable/ic_app_icon"> + android:icon="@drawable/ic_app_icon" + android:supportsRtl="true"> <activity android:name=".ui.TelecomActivity" android:launchMode="singleTask" @@ -109,12 +111,6 @@ android:permission="android.permission.BIND_JOB_SERVICE"> </service> - <!-- BroadcastReceiver for receiving Intents from Notification mechanism. --> - <receiver - android:directBootAware="true" - android:exported="false" - android:name="com.android.car.dialer.notification.NotificationReceiver"/> - <receiver android:directBootAware="true" android:name="com.android.car.dialer.notification.MissedCallReceiver"> @@ -130,5 +126,14 @@ <action android:name="android.bluetooth.device.action.BOND_STATE_CHANGED"/> </intent-filter> </receiver> + + <!-- Workaround for b/113294940, remove when converting to Android.bp --> + <provider + android:name="androidx.lifecycle.ProcessLifecycleOwnerInitializer" + tools:replace="android:authorities" + android:authorities="${applicationId}" + android:exported="false" + android:multiprocess="true" /> + </application> </manifest> diff --git a/res/color/contact_details_icon_tint.xml b/res/color/contact_details_icon_tint.xml new file mode 100644 index 00000000..3d694c32 --- /dev/null +++ b/res/color/contact_details_icon_tint.xml @@ -0,0 +1,26 @@ +<?xml version='1.0' encoding='UTF-8'?> +<!-- + Copyright (C) 2019 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. + --> +<selector xmlns:android="http://schemas.android.com/apk/res/android"> + <item android:color="@color/primary_icon_color" + android:state_enabled="true" + android:state_activated="false"/> + <item android:color="#FFFFFF" + android:state_enabled="true" + android:state_activated="true"/> + <item android:color="#80FFFFFF" + android:state_enabled="false"/> +</selector> diff --git a/res/color/icon_accent_activatable.xml b/res/color/icon_accent_activatable.xml index cf4b9e79..c652f079 100644 --- a/res/color/icon_accent_activatable.xml +++ b/res/color/icon_accent_activatable.xml @@ -16,6 +16,6 @@ <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:color="@color/primary_icon_color" android:state_activated="false"/> - <item android:color="?android:colorAccent" + <item android:color="@color/audio_output_accent" android:state_activated="true"/> </selector> diff --git a/res/color/text_accent_activatable.xml b/res/color/text_accent_activatable.xml deleted file mode 100644 index 4f1dc0fc..00000000 --- a/res/color/text_accent_activatable.xml +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version='1.0' encoding='UTF-8'?> -<!-- Copyright (C) 2019 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. ---> -<selector xmlns:android="http://schemas.android.com/apk/res/android"> - <item android:color="@color/primary_text_color" - android:state_activated="false"/> - <item android:color="?android:colorAccent" - android:state_activated="true"/> -</selector> diff --git a/res/drawable/ic_arrow_right.xml b/res/drawable/ic_arrow_right.xml index 051b6a05..877c510f 100644 --- a/res/drawable/ic_arrow_right.xml +++ b/res/drawable/ic_arrow_right.xml @@ -18,7 +18,8 @@ limitations under the License. android:viewportHeight="48" android:width="@dimen/primary_icon_size" android:height="@dimen/primary_icon_size" - android:tint="@color/icon_tint_state_list"> + android:tint="@color/icon_tint_state_list" + android:autoMirrored="true"> <path android:pathData="M0-.25h48v48H0z"/> <path diff --git a/res/drawable/ic_favorite_activatable.xml b/res/drawable/ic_favorite_activatable.xml index 72855133..d40add41 100644 --- a/res/drawable/ic_favorite_activatable.xml +++ b/res/drawable/ic_favorite_activatable.xml @@ -15,7 +15,11 @@ --> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/ic_favorite_empty" - android:state_activated="false"/> + android:state_activated="false" android:state_enabled="true"/> <item android:drawable="@drawable/ic_favorite" - android:state_activated="true"/> + android:state_activated="true" android:state_enabled="true"/> + <item android:drawable="@drawable/ic_favorite" + android:state_activated="true" android:state_enabled="false"/> + <item android:drawable="@drawable/ic_imported_favorite" + android:state_activated="false" android:state_enabled="false"/> </selector> diff --git a/res/drawable/ic_imported_favorite.xml b/res/drawable/ic_imported_favorite.xml new file mode 100644 index 00000000..c6858bb6 --- /dev/null +++ b/res/drawable/ic_imported_favorite.xml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2020 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. + --> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="@dimen/primary_icon_size" + android:height="@dimen/primary_icon_size" + android:viewportWidth="24.0" + android:viewportHeight="24.0"> + <path android:pathData="M17 3H7c-1.1 0-1.99.9-1.99 2L5 21l7-3 7 3V5c0-1.1-.9-2-2-2z" + android:fillColor="#ff000000"/> +</vector> diff --git a/res/layout-port/dialpad_fragment.xml b/res/layout-port/dialpad_fragment.xml index fffbf707..fd046c1c 100644 --- a/res/layout-port/dialpad_fragment.xml +++ b/res/layout-port/dialpad_fragment.xml @@ -16,16 +16,22 @@ android:layout_width="match_parent" android:layout_height="match_parent"> + <androidx.constraintlayout.widget.Guideline + android:id="@+id/type_down_guideline" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:orientation="horizontal" + app:layout_constraintGuide_percent="@dimen/config_type_down_guideline_percent"/> + <fragment android:id="@+id/dialpad_fragment" android:name="com.android.car.dialer.ui.dialpad.KeypadFragment" android:layout_height="wrap_content" android:layout_width="wrap_content" - android:layout_marginTop="@dimen/keypad_margin" - app:layout_constraintTop_toBottomOf="@+id/title" - app:layout_constraintBottom_toTopOf="@+id/call_button" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintEnd_toEndOf="parent"/> + android:layout_marginStart="@dimen/dialpad_info_margin_start" + app:layout_constraintTop_toBottomOf="@id/type_down_guideline" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toStartOf="parent"/> <TextView android:id="@+id/title" @@ -37,9 +43,8 @@ android:autoSizeMinTextSize="@dimen/dialpad_info_title_text_size_min" android:autoSizeMaxTextSize="@dimen/dialpad_info_title_text_size_max" app:layout_constraintVertical_chainStyle="packed" - app:layout_constraintTop_toTopOf="parent" - app:layout_constraintBottom_toTopOf="@id/dialpad_fragment" - app:layout_constraintStart_toStartOf="@id/dialpad_fragment" + app:layout_constraintTop_toTopOf="@id/dialpad_fragment" + app:layout_constraintStart_toEndOf="@id/dialpad_fragment" app:layout_constraintEnd_toStartOf="@+id/delete_button" app:layout_goneMarginEnd="@dimen/dialpad_info_edge_padding_size"/> @@ -48,19 +53,10 @@ style="@style/DialpadSecondaryButton" android:src="@drawable/ic_backspace" android:layout_marginStart="@dimen/dialpad_info_title_padding_size" - android:layout_marginEnd="@dimen/dialpad_info_edge_padding_size" + android:layout_marginEnd="@dimen/dialpad_info_margin_end" app:layout_constraintTop_toTopOf="@id/title" app:layout_constraintBottom_toBottomOf="@id/title" app:layout_constraintStart_toEndOf="@id/title" - app:layout_constraintEnd_toEndOf="@id/dialpad_fragment"/> - - <include - layout="@layout/dialpad_user_profile" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - app:layout_constraintTop_toBottomOf="@id/title" - app:layout_constraintBottom_toTopOf="@id/dialpad_fragment" - app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent"/> <ImageView @@ -70,7 +66,32 @@ android:layout_height="@dimen/call_button_height" android:src="@drawable/icon_call_button" android:layout_marginBottom="@dimen/call_button_bottom_margin" - app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintBottom_toBottomOf="@id/dialpad_fragment" + app:layout_constraintStart_toEndOf="@id/dialpad_fragment" + app:layout_constraintEnd_toEndOf="parent"/> + + <View + android:layout_width="match_parent" + android:layout_height="@dimen/dialpad_line_divider_height" + android:background="@color/divider_color" + android:layout_marginStart="@dimen/horizontal_divider_inset" + android:layout_marginEnd="@dimen/horizontal_divider_inset" + app:layout_constraintTop_toBottomOf="@id/type_down_guideline"/> + + <include + layout="@layout/dialpad_user_profile" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + app:layout_constraintTop_toBottomOf="@id/title" + app:layout_constraintStart_toEndOf="@id/dialpad_fragment" + app:layout_constraintEnd_toEndOf="parent"/> + + <include + layout="@layout/list_fragment" + android:layout_width="match_parent" + android:layout_height="0dp" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintBottom_toTopOf="@id/type_down_guideline" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent"/> diff --git a/res/layout-w1280dp/type_down_list_item.xml b/res/layout-w1280dp/type_down_list_item.xml new file mode 100644 index 00000000..fec8a538 --- /dev/null +++ b/res/layout-w1280dp/type_down_list_item.xml @@ -0,0 +1,57 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + ~ Copyright (C) 2020 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 + --> + +<androidx.constraintlayout.widget.ConstraintLayout + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:id="@+id/contact_result" + android:foreground="?android:attr/selectableItemBackground" + android:layout_width="match_parent" + android:layout_height="@dimen/type_down_list_item_height"> + + <ImageView + android:id="@+id/contact_picture" + android:layout_width="@dimen/avatar_icon_size" + android:layout_height="@dimen/avatar_icon_size" + android:layout_marginStart="@dimen/contact_result_avatar_margin" + android:scaleType="centerCrop" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toStartOf="parent"/> + + <TextView + android:id="@+id/contact_name" + android:layout_marginStart="@dimen/contact_result_name_margin" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:singleLine="true" + android:textAppearance="@style/TextAppearance.ContactResultTitle" + android:duplicateParentState="true" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintBottom_toTopOf="@+id/phone_number" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toEndOf="parent"/> + + <TextView + android:id="@+id/phone_number" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:singleLine="true" + app:layout_constraintTop_toBottomOf="@id/contact_name" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toStartOf="@id/contact_name"/> +</androidx.constraintlayout.widget.ConstraintLayout> diff --git a/res/layout/add_favorite_number_list_item.xml b/res/layout/add_favorite_number_list_item.xml deleted file mode 100644 index ffe54459..00000000 --- a/res/layout/add_favorite_number_list_item.xml +++ /dev/null @@ -1,60 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2019 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. ---> - -<androidx.constraintlayout.widget.ConstraintLayout - xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:app="http://schemas.android.com/apk/res-auto" - android:layout_width="match_parent" - android:layout_height="@dimen/add_favorite_number_list_height" - android:background="?android:attr/selectableItemBackground" - android:paddingStart="@dimen/add_favorite_number_list_padding" - android:paddingEnd="@dimen/add_favorite_number_list_padding"> - - <TextView - android:id="@+id/phone_number" - android:layout_width="0dp" - android:layout_height="wrap_content" - android:textAppearance="@style/TextAppearance.AddFavoriteNumberTitle" - android:duplicateParentState="true" - app:layout_constraintVertical_chainStyle="packed" - app:layout_constraintTop_toTopOf="parent" - app:layout_constraintBottom_toTopOf="@+id/phone_number_description" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintEnd_toStartOf="@+id/phone_number_checkbox"/> - - <TextView - android:id="@+id/phone_number_description" - android:layout_width="0dp" - android:layout_height="wrap_content" - android:textAppearance="@style/TextAppearance.AddFavoriteNumberSubtitle" - android:duplicateParentState="true" - app:layout_constraintTop_toBottomOf="@id/phone_number" - app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintEnd_toStartOf="@id/phone_number_checkbox"/> - - <ImageView - android:id="@+id/phone_number_checkbox" - android:src="@drawable/ic_favorite_activatable" - android:layout_width="@dimen/primary_icon_size" - android:layout_height="@dimen/primary_icon_size" - android:tint="@color/primary_icon_selector" - android:duplicateParentState="true" - app:layout_constraintTop_toTopOf="parent" - app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintEnd_toEndOf="parent"/> - -</androidx.constraintlayout.widget.ConstraintLayout> diff --git a/res/layout/audio_route_list_item.xml b/res/layout/audio_route_list_item.xml deleted file mode 100644 index c1510ef6..00000000 --- a/res/layout/audio_route_list_item.xml +++ /dev/null @@ -1,49 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2018 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. ---> -<androidx.constraintlayout.widget.ConstraintLayout - xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:app="http://schemas.android.com/apk/res-auto" - android:layout_width="match_parent" - android:layout_height="@dimen/audio_route_height" - android:background="?android:attr/selectableItemBackground" - android:elevation="@dimen/dialer_card_elevation"> - <androidx.constraintlayout.widget.Guideline - android:id="@+id/text_start" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:orientation="vertical" - app:layout_constraintGuide_begin="@dimen/audio_route_constraint_guide_begin"/> - <ImageView - android:id="@+id/icon" - android:layout_width="@dimen/audio_route_icon_size" - android:layout_height="@dimen/audio_route_icon_size" - android:scaleType="fitCenter" - android:layout_marginStart="@dimen/audio_route_content_padding" - android:tint="@color/icon_accent_activatable" - app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent"/> - <TextView - android:id="@+id/body" - android:layout_width="0dp" - android:layout_height="wrap_content" - android:textAppearance="?android:attr/textAppearanceLarge" - android:textColor="@color/text_accent_activatable" - app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintStart_toStartOf="@+id/text_start" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintTop_toTopOf="parent"/> -</androidx.constraintlayout.widget.ConstraintLayout> diff --git a/res/layout/audio_route_switch_dialog.xml b/res/layout/audio_route_switch_dialog.xml deleted file mode 100644 index 7a5013c7..00000000 --- a/res/layout/audio_route_switch_dialog.xml +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2018 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. ---> -<androidx.recyclerview.widget.RecyclerView - xmlns:android="http://schemas.android.com/apk/res/android" - android:id="@+id/list" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:clipChildren="false"/> diff --git a/res/layout/contact_result.xml b/res/layout/contact_result.xml index f6188f70..1e85899e 100644 --- a/res/layout/contact_result.xml +++ b/res/layout/contact_result.xml @@ -39,8 +39,9 @@ android:layout_height="wrap_content" android:singleLine="true" android:textAppearance="@style/TextAppearance.ContactResultTitle" + android:duplicateParentState="true" app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent"/> -</androidx.constraintlayout.widget.ConstraintLayout> +</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file diff --git a/res/layout/dialpad_fragment.xml b/res/layout/dialpad_fragment.xml index 6627e704..a2655185 100644 --- a/res/layout/dialpad_fragment.xml +++ b/res/layout/dialpad_fragment.xml @@ -39,9 +39,8 @@ <FrameLayout android:layout_height="0dp" android:layout_width="0dp" - app:layout_constraintDimensionRatio="W, 1:1" - app:layout_constraintTop_toTopOf="@id/dialpad_fragment" - app:layout_constraintBottom_toBottomOf="@id/dialpad_fragment" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toEndOf="@id/divider" app:layout_constraintEnd_toEndOf="parent"> <include layout="@layout/dialpad_info"/> diff --git a/res/layout/dialpad_info.xml b/res/layout/dialpad_info.xml index f1827219..4219ba92 100644 --- a/res/layout/dialpad_info.xml +++ b/res/layout/dialpad_info.xml @@ -38,17 +38,27 @@ android:autoSizeMaxTextSize="@dimen/dialpad_info_title_text_size_max" app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="@id/dialpad_info_guideline" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintEnd_toStartOf="@+id/delete_button"/> + app:layout_constraintLeft_toLeftOf="parent" + app:layout_constraintRight_toLeftOf="@+id/delete_button"/> <ImageButton android:id="@+id/delete_button" style="@style/DialpadSecondaryButton" android:src="@drawable/ic_backspace" - android:layout_marginStart="@dimen/dialpad_info_title_padding_size" + android:layout_marginLeft="@dimen/dialpad_info_title_padding_size" + android:layout_marginRight="@dimen/dialpad_info_margin_end" app:layout_constraintTop_toTopOf="@id/title" app:layout_constraintBottom_toBottomOf="@id/title" - app:layout_constraintStart_toEndOf="@id/title" + app:layout_constraintLeft_toRightOf="@id/title" + app:layout_constraintRight_toRightOf="parent"/> + + <ImageView + android:id="@+id/call_button" + style="@style/DialpadPrimaryButton" + android:src="@drawable/icon_call_button" + android:layout_marginBottom="@dimen/dialpad_info_edge_padding_size" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent"/> <include @@ -57,15 +67,17 @@ android:layout_height="0dp" android:layout_marginTop="@dimen/dialpad_user_profile_padding" app:layout_constraintTop_toBottomOf="@id/title" - app:layout_constraintBottom_toTopOf="@+id/call_button" + app:layout_constraintBottom_toTopOf="@id/call_button" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent"/> - <ImageView - android:id="@+id/call_button" - style="@style/DialpadPrimaryButton" - android:src="@drawable/icon_call_button" - app:layout_constraintBottom_toBottomOf="parent" + <include + layout="@layout/list_fragment" + android:layout_width="match_parent" + android:layout_height="0dp" + android:layout_marginBottom="@dimen/dialpad_user_profile_padding" + app:layout_constraintTop_toBottomOf="@id/title" + app:layout_constraintBottom_toTopOf="@id/call_button" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent"/> diff --git a/res/layout/favorite_contact_list_item.xml b/res/layout/favorite_contact_list_item.xml index 82002fe1..032a1535 100644 --- a/res/layout/favorite_contact_list_item.xml +++ b/res/layout/favorite_contact_list_item.xml @@ -13,13 +13,12 @@ See the License for the specific language governing permissions and limitations under the License. --> -<LinearLayout +<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/text_container" android:layout_width="match_parent" android:layout_height="wrap_content" - android:orientation="vertical" - android:gravity="center_horizontal" android:background="?android:attr/selectableItemBackground"> <ImageView @@ -27,19 +26,32 @@ android:layout_width="@dimen/large_avatar_icon_size" android:layout_height="@dimen/large_avatar_icon_size" android:layout_marginBottom="@dimen/favorites_avatar_margin_bottom" - android:scaleType="centerCrop"/> + android:scaleType="centerCrop" + app:layout_constraintVertical_chainStyle="packed" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintBottom_toTopOf="@+id/title" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toEndOf="parent"/> <TextView android:id="@+id/title" android:textAppearance="?android:attr/textAppearanceLarge" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:singleLine="true"/> + android:singleLine="true" + app:layout_constraintTop_toBottomOf="@id/icon" + app:layout_constraintBottom_toTopOf="@+id/text" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toEndOf="parent"/> <TextView android:id="@+id/text" android:textAppearance="?android:attr/textAppearanceSmall" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:singleLine="true"/> -</LinearLayout> + android:singleLine="true" + app:layout_constraintTop_toBottomOf="@id/title" + app:layout_constraintBottom_toTopOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toEndOf="parent"/> +</androidx.constraintlayout.widget.ConstraintLayout> diff --git a/res/layout/keypad.xml b/res/layout/keypad.xml index a63b5ae3..7d8d47ca 100644 --- a/res/layout/keypad.xml +++ b/res/layout/keypad.xml @@ -30,8 +30,8 @@ limitations under the License. app:layout_constraintVertical_chainStyle="packed" app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toTopOf="@+id/four" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintEnd_toStartOf="@+id/two"/> + app:layout_constraintLeft_toLeftOf="parent" + app:layout_constraintRight_toLeftOf="@+id/two"/> <com.android.car.dialer.ui.dialpad.KeypadButton android:id="@+id/two" @@ -41,8 +41,8 @@ limitations under the License. app:layout_constraintVertical_chainStyle="packed" app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toTopOf="@+id/five" - app:layout_constraintStart_toEndOf="@id/one" - app:layout_constraintEnd_toStartOf="@+id/three"/> + app:layout_constraintLeft_toRightOf="@id/one" + app:layout_constraintRight_toLeftOf="@+id/three"/> <com.android.car.dialer.ui.dialpad.KeypadButton android:id="@+id/three" @@ -52,8 +52,8 @@ limitations under the License. app:layout_constraintVertical_chainStyle="packed" app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toTopOf="@+id/six" - app:layout_constraintStart_toEndOf="@id/two" - app:layout_constraintEnd_toEndOf="parent"/> + app:layout_constraintLeft_toRightOf="@id/two" + app:layout_constraintRight_toRightOf="parent"/> <!-- Row 2 --> <com.android.car.dialer.ui.dialpad.KeypadButton @@ -64,8 +64,8 @@ limitations under the License. app:layout_constraintHorizontal_chainStyle="packed" app:layout_constraintTop_toBottomOf="@id/one" app:layout_constraintBottom_toTopOf="@+id/seven" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintEnd_toStartOf="@+id/five"/> + app:layout_constraintLeft_toLeftOf="parent" + app:layout_constraintRight_toLeftOf="@+id/five"/> <com.android.car.dialer.ui.dialpad.KeypadButton android:id="@+id/five" @@ -74,8 +74,8 @@ limitations under the License. style="@style/KeypadButtonStyle" app:layout_constraintTop_toBottomOf="@id/two" app:layout_constraintBottom_toTopOf="@+id/eight" - app:layout_constraintStart_toEndOf="@id/four" - app:layout_constraintEnd_toStartOf="@+id/six"/> + app:layout_constraintLeft_toRightOf="@id/four" + app:layout_constraintRight_toLeftOf="@+id/six"/> <com.android.car.dialer.ui.dialpad.KeypadButton android:id="@+id/six" @@ -84,8 +84,8 @@ limitations under the License. style="@style/KeypadButtonStyle" app:layout_constraintTop_toBottomOf="@id/three" app:layout_constraintBottom_toTopOf="@+id/nine" - app:layout_constraintStart_toEndOf="@id/five" - app:layout_constraintEnd_toEndOf="parent"/> + app:layout_constraintLeft_toRightOf="@id/five" + app:layout_constraintRight_toRightOf="parent"/> <!-- Row 3 --> @@ -97,8 +97,8 @@ limitations under the License. app:layout_constraintHorizontal_chainStyle="packed" app:layout_constraintTop_toBottomOf="@id/four" app:layout_constraintBottom_toTopOf="@+id/star" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintEnd_toStartOf="@+id/eight"/> + app:layout_constraintLeft_toLeftOf="parent" + app:layout_constraintRight_toLeftOf="@+id/eight"/> <com.android.car.dialer.ui.dialpad.KeypadButton android:id="@+id/eight" @@ -107,8 +107,8 @@ limitations under the License. style="@style/KeypadButtonStyle" app:layout_constraintTop_toBottomOf="@id/five" app:layout_constraintBottom_toTopOf="@+id/zero" - app:layout_constraintStart_toEndOf="@id/seven" - app:layout_constraintEnd_toStartOf="@+id/nine"/> + app:layout_constraintLeft_toRightOf="@id/seven" + app:layout_constraintRight_toLeftOf="@+id/nine"/> <com.android.car.dialer.ui.dialpad.KeypadButton android:id="@+id/nine" @@ -117,8 +117,8 @@ limitations under the License. style="@style/KeypadButtonStyle" app:layout_constraintTop_toBottomOf="@id/six" app:layout_constraintBottom_toTopOf="@+id/pound" - app:layout_constraintStart_toEndOf="@id/eight" - app:layout_constraintEnd_toEndOf="parent"/> + app:layout_constraintLeft_toRightOf="@id/eight" + app:layout_constraintRight_toRightOf="parent"/> <!-- Row 4 --> <com.android.car.dialer.ui.dialpad.KeypadButton @@ -129,8 +129,8 @@ limitations under the License. app:layout_constraintHorizontal_chainStyle="packed" app:layout_constraintTop_toBottomOf="@id/seven" app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintEnd_toStartOf="@+id/zero"/> + app:layout_constraintLeft_toLeftOf="parent" + app:layout_constraintRight_toLeftOf="@+id/zero"/> <com.android.car.dialer.ui.dialpad.KeypadButton android:id="@+id/zero" @@ -139,8 +139,8 @@ limitations under the License. style="@style/KeypadButtonStyle" app:layout_constraintTop_toBottomOf="@id/eight" app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintStart_toEndOf="@id/star" - app:layout_constraintEnd_toStartOf="@+id/pound"/> + app:layout_constraintLeft_toRightOf="@id/star" + app:layout_constraintRight_toLeftOf="@+id/pound"/> <com.android.car.dialer.ui.dialpad.KeypadButton android:id="@+id/pound" @@ -149,8 +149,8 @@ limitations under the License. style="@style/KeypadButtonStyle" app:layout_constraintTop_toBottomOf="@id/nine" app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintStart_toEndOf="@id/zero" - app:layout_constraintEnd_toEndOf="parent"/> + app:layout_constraintLeft_toRightOf="@id/zero" + app:layout_constraintRight_toRightOf="parent"/> <include layout="@layout/keypad_dividers"/> diff --git a/res/layout/phone_number_list_item.xml b/res/layout/phone_number_list_item.xml deleted file mode 100644 index 04e1b61b..00000000 --- a/res/layout/phone_number_list_item.xml +++ /dev/null @@ -1,43 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2018 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. ---> -<com.android.car.dialer.widget.CheckableRelativeLayout - xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:paddingStart="?android:listPreferredItemPaddingStart" - android:paddingEnd="?android:listPreferredItemPaddingEnd"> - - <RadioButton - android:id="@+id/phone_number_checkbox" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_centerVertical="true" - android:layout_marginEnd="@dimen/phone_number_radio_list_padding"/> - <TextView - android:id="@+id/phone_number" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_toEndOf="@id/phone_number_checkbox" - android:textAppearance="?android:attr/textAppearanceMedium"/> - <TextView - android:id="@+id/phone_number_description" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_below="@id/phone_number" - android:layout_toEndOf="@id/phone_number_checkbox" - android:textAppearance="?android:attr/textAppearanceSmall"/> - -</com.android.car.dialer.widget.CheckableRelativeLayout> diff --git a/res/layout/type_down_list_item.xml b/res/layout/type_down_list_item.xml new file mode 100644 index 00000000..a0476f60 --- /dev/null +++ b/res/layout/type_down_list_item.xml @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + ~ Copyright (C) 2020 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 + --> + +<androidx.constraintlayout.widget.ConstraintLayout + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:id="@+id/contact_result" + android:foreground="?android:attr/selectableItemBackground" + android:layout_width="match_parent" + android:layout_height="@dimen/type_down_list_item_height"> + + <TextView + android:id="@+id/contact_name" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:singleLine="true" + android:textAppearance="@style/TextAppearance.ContactResultTitle" + android:duplicateParentState="true" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintBottom_toTopOf="@+id/phone_number" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toEndOf="parent"/> + + <TextView + android:id="@+id/phone_number" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:singleLine="true" + app:layout_constraintTop_toBottomOf="@id/contact_name" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toStartOf="@id/contact_name"/> +</androidx.constraintlayout.widget.ConstraintLayout> diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml index 1ffe0594..27ae21e2 100644 --- a/res/values-af/strings.xml +++ b/res/values-af/strings.xml @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"Kies \'n foonnommer"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"Net een keer"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"Altyd"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> – Verstek"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> – gunsteling"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g> , verstek"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"Gunsteling – <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"Plaaslike gunsteling – <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"Gunstelinge"</string> + <string name="local_favorites" msgid="4954852813126882412">"Plaaslike gunstelinge"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"Geen foonnommers nie"</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"Kennisgewing van inkomende oproep"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"Inkomende oproep"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"Gemiste Oproep-kennisgewing"</string> @@ -68,4 +72,6 @@ <string name="sort_order_title" msgid="975104366728292702">"Kontakvolgorde"</string> <string name="given_name_first_title" msgid="8072187841056104968">"Voornaam"</string> <string name="family_name_first_title" msgid="7721976826282427987">"Van"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"Voer oproepoudio uit na:"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml index 9ed2cd57..372ac9fb 100644 --- a/res/values-am/strings.xml +++ b/res/values-am/strings.xml @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"ስልክ ቁጥር ይምረጡ"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"አንዴ ብቻ"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"ሁልጊዜ"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> - ነባሪ"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> - ተወዳጅ"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g> ፣ ነባሪ"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"ተወዳጅ - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"አካባቢያዊ ተወዳጅ - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"ተወዳጆች"</string> + <string name="local_favorites" msgid="4954852813126882412">"አካባቢያዊ ተወዳጆች"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"ስልክ ቁጥሮች የሉም"</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"የገቢ ጥሪ ማሳወቂያ"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"ገቢ ጥሪ"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"ያመለጠ ጥሪ ማሳወቂያ"</string> @@ -68,4 +72,6 @@ <string name="sort_order_title" msgid="975104366728292702">"የእውቂያ ቅደም ተከተል"</string> <string name="given_name_first_title" msgid="8072187841056104968">"የመጀመርያ ስም"</string> <string name="family_name_first_title" msgid="7721976826282427987">"የአያት ስም"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"የጥሪ ኦዲዮን በዚህ ያሰሙ፦"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml index 80ad65d0..e051fac4 100644 --- a/res/values-ar/strings.xml +++ b/res/values-ar/strings.xml @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"اختيار رقم هاتف"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"مرّة واحدة فقط"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"دومًا"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> - تلقائي"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> - وضع في المفضَّلة"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g>، تلقائي"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"المفضّلة، <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"النشاط التجاري المحلي المفضّل - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"أرقام الهواتف المفضّلة"</string> + <string name="local_favorites" msgid="4954852813126882412">"الأنشطة التجارية المحلية المفضّلة"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"ليس هناك أرقام هواتف."</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"إشعار مكالمة واردة"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"مكالمة واردة"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"إشعار المكالمة الفائتة"</string> @@ -72,4 +76,6 @@ <string name="sort_order_title" msgid="975104366728292702">"ترتيب جهات الاتصال"</string> <string name="given_name_first_title" msgid="8072187841056104968">"الاسم الأول"</string> <string name="family_name_first_title" msgid="7721976826282427987">"اسم العائلة"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"الاستماع إلى صوت المكالمة لـ:"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-as/strings.xml b/res/values-as/strings.xml index 99dc0f8c..f07f18a1 100644 --- a/res/values-as/strings.xml +++ b/res/values-as/strings.xml @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"এটা ফ’ন নম্বৰ বাছনি কৰক"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"মাত্ৰ এবাৰ"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"সদায়"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> - ডিফ’ল্ট"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> - প্ৰিয়"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g> , ডিফ’ল্ট"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"প্ৰিয় - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"স্থানীয় প্ৰিয় - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"প্ৰিয়সমূহ"</string> + <string name="local_favorites" msgid="4954852813126882412">"স্থানীয় প্ৰিয়সমূহ"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"কোনো ফ\'ন নম্বৰ নাই"</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"অন্তৰ্গামী কলৰ জাননী"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"অন্তৰ্গামী কল"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"মিছড কলৰ জাননী"</string> @@ -68,4 +72,6 @@ <string name="sort_order_title" msgid="975104366728292702">"সম্পৰ্কৰ ক্ৰম"</string> <string name="given_name_first_title" msgid="8072187841056104968">"প্ৰথম নাম"</string> <string name="family_name_first_title" msgid="7721976826282427987">"উপাধি"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"কল অডিঅ\'ৰ বাবে এয়া ব্যৱহাৰ কৰক:"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-az/strings.xml b/res/values-az/strings.xml index 04089fa8..f437a5a5 100644 --- a/res/values-az/strings.xml +++ b/res/values-az/strings.xml @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"Telefon nömrəsi seçin"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"Sadəcə bir dəfə"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"Həmişə"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> - Defolt"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> - Sevimli"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g> , defolt"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"Sevimli - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"Yerli sevimli - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"Sevimlilər"</string> + <string name="local_favorites" msgid="4954852813126882412">"Yerli sevimlilər"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"Telefon nömrəsi yoxdur"</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"Gələn zəng bildirişi"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"Gələn zəng"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"Buraxılmış zəng bildirişi"</string> @@ -68,4 +72,6 @@ <string name="sort_order_title" msgid="975104366728292702">"Kontakt sırası"</string> <string name="given_name_first_title" msgid="8072187841056104968">"Ad"</string> <string name="family_name_first_title" msgid="7721976826282427987">"Soyad"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"Zəng audiosunu buraya göndərin:"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-b+sr+Latn/strings.xml b/res/values-b+sr+Latn/strings.xml index ea9af7ef..1dc46bdb 100644 --- a/res/values-b+sr+Latn/strings.xml +++ b/res/values-b+sr+Latn/strings.xml @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"Odaberite broj telefona"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"Samo jednom"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"Uvek"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> – podrazumevano"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> – Omiljeno"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g>, podrazumevano"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"Favorit – <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"Lokalni favorit – <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"Favoriti"</string> + <string name="local_favorites" msgid="4954852813126882412">"Lokalni favoriti"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"Nema brojeva telefona"</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"Obaveštenje o dolaznom pozivu"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"Dolazni poziv"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"Obaveštenje o propuštenom pozivu"</string> @@ -69,4 +73,6 @@ <string name="sort_order_title" msgid="975104366728292702">"Redosled kontakata"</string> <string name="given_name_first_title" msgid="8072187841056104968">"Ime"</string> <string name="family_name_first_title" msgid="7721976826282427987">"Prezime"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"Izaberite izlaz za zvuk poziva:"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml index 879f7adb..b68f696b 100644 --- a/res/values-be/strings.xml +++ b/res/values-be/strings.xml @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"Выберыце нумар тэлефона"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"Толькі адзін раз"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"Заўсёды"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> – Стандартна"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> – дадаць у абраныя"</string> + <string name="primary_number_description" msgid="1211198148918329509">"Стандартна: <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"Абраны кантакт: <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"Абранае на гэтай прыладзе: <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"Абраныя кантакты"</string> + <string name="local_favorites" msgid="4954852813126882412">"Абранае на гэтай прыладзе"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"Няма нумароў тэлефонаў"</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"Апавяшчэнне аб уваходным выкліку"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"Уваходны выклік"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"Апавяшчэнне аб прапушчаным выкліку"</string> @@ -70,4 +74,6 @@ <string name="sort_order_title" msgid="975104366728292702">"Парадак кантактаў"</string> <string name="given_name_first_title" msgid="8072187841056104968">"Імя"</string> <string name="family_name_first_title" msgid="7721976826282427987">"Прозвішча"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"Вывадзіць гук выкліку на:"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml index dc888505..bde92788 100644 --- a/res/values-bg/strings.xml +++ b/res/values-bg/strings.xml @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"Избиране на телефонен номер"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"Само веднъж"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"Винаги"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> – по подразбиране"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> – Означаване като любимо"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g> – по подразбиране"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"Любим – <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"Любим в локалните – <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"Любими"</string> + <string name="local_favorites" msgid="4954852813126882412">"Любими в локалните"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"Няма телефонни номера"</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"Известие за входящо обаждане"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"Входящо обаждане"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"Известие за пропуснато обаждане"</string> @@ -68,4 +72,6 @@ <string name="sort_order_title" msgid="975104366728292702">"Подредба на контактите"</string> <string name="given_name_first_title" msgid="8072187841056104968">"Собствено име"</string> <string name="family_name_first_title" msgid="7721976826282427987">"Фамилно име"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"Извеждане на аудиото на обаждането до:"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-bn/strings.xml b/res/values-bn/strings.xml index bc25dec5..cc2a5844 100644 --- a/res/values-bn/strings.xml +++ b/res/values-bn/strings.xml @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"কোনও একটি ফোন নম্বর বেছে নিন"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"শুধু একবার"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"সবসময়"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> - ডিফল্ট"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> - পছন্দ"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g> , ডিফল্ট"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"পছন্দসই - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"স্থানীয় পছন্দসই - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"পছন্দসই"</string> + <string name="local_favorites" msgid="4954852813126882412">"স্থানীয় পছন্দসই"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"কোনও ফোন নম্বর নেই"</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"ইনকামিং কলের বিজ্ঞপ্তি"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"ইনকামিং কল"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"মিসড কলের বিজ্ঞপ্তি"</string> @@ -68,4 +72,6 @@ <string name="sort_order_title" msgid="975104366728292702">"পরিচিতির ক্রম"</string> <string name="given_name_first_title" msgid="8072187841056104968">"নাম"</string> <string name="family_name_first_title" msgid="7721976826282427987">"পদবি"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"কলের অডিও এখানে শুনুন:"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-bs/strings.xml b/res/values-bs/strings.xml index 3fa1d2d7..c5743fca 100644 --- a/res/values-bs/strings.xml +++ b/res/values-bs/strings.xml @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"Odaberite broj telefona"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"Samo ovaj put"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"Uvijek"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> – zadano"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> - Dodati u omiljeno"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g> , zadano"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"Omiljeni - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"Lokalni omiljeni - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"Omiljeni"</string> + <string name="local_favorites" msgid="4954852813126882412">"Lokalni omiljeni"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"Nema brojeva telefona"</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"Obavještenja tokom dolaznog poziva"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"Dolazni poziv"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"Obavještenje za propušten poziv"</string> @@ -69,4 +73,6 @@ <string name="sort_order_title" msgid="975104366728292702">"Redoslijed kontakata"</string> <string name="given_name_first_title" msgid="8072187841056104968">"Ime"</string> <string name="family_name_first_title" msgid="7721976826282427987">"Prezime"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"Odaberite izlaz za zvuk poziva:"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml index 20c579d4..2f54f1bb 100644 --- a/res/values-ca/strings.xml +++ b/res/values-ca/strings.xml @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"Tria un número de telèfon"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"Només una vegada"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"Sempre"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g>: predeterminat"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g>: preferit"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g>, predeterminat"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"Preferit: <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"Preferit del lloc: <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"Preferits"</string> + <string name="local_favorites" msgid="4954852813126882412">"Preferits del lloc"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"No hi ha cap número de telèfon"</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"Notificació de trucada entrant"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"Trucada entrant"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"Notificació de trucada perduda"</string> @@ -68,4 +72,6 @@ <string name="sort_order_title" msgid="975104366728292702">"Ordre dels contactes"</string> <string name="given_name_first_title" msgid="8072187841056104968">"Nom"</string> <string name="family_name_first_title" msgid="7721976826282427987">"Cognoms"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"Sortida d\'àudio per a trucades:"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml index 968a2de3..987739ee 100644 --- a/res/values-cs/strings.xml +++ b/res/values-cs/strings.xml @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"Vyberte telefonní číslo"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"Pouze jednou"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"Vždy"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> – výchozí"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> – přidat mezi oblíbené"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g>, výchozí"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"Přidat číslo <xliff:g id="LABEL">%1$s</xliff:g> mezi oblíbené"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"Místní oblíbené číslo – <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"Oblíbené"</string> + <string name="local_favorites" msgid="4954852813126882412">"Místní oblíbená čísla"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"Žádná telefonní čísla"</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"Oznámení o příchozím hovoru"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"Příchozí hovor"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"Zmeškané oznámení o hovoru"</string> @@ -70,4 +74,6 @@ <string name="sort_order_title" msgid="975104366728292702">"Pořadí kontaktů"</string> <string name="given_name_first_title" msgid="8072187841056104968">"Jméno"</string> <string name="family_name_first_title" msgid="7721976826282427987">"Příjmení"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"Směrování zvuku odchozího hovoru:"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml index ec30735a..685c78bf 100644 --- a/res/values-da/strings.xml +++ b/res/values-da/strings.xml @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"Vælg et telefonnummer"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"Kun én gang"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"Altid"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> – standard"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> – favoritnummer"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g> , standard"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"Favorit – <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"Lokal favorit – <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"Favoritter"</string> + <string name="local_favorites" msgid="4954852813126882412">"Lokale favoritter"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"Der er ingen telefonnumre"</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"Notifikation om indgående opkald"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"Indgående opkald"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"Notifikation om ubesvaret opkald"</string> @@ -68,4 +72,6 @@ <string name="sort_order_title" msgid="975104366728292702">"Kontaktrækkefølge"</string> <string name="given_name_first_title" msgid="8072187841056104968">"Fornavn"</string> <string name="family_name_first_title" msgid="7721976826282427987">"Efternavn"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"Send opkaldslyd til:"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml index e18e9a90..3a5ab751 100644 --- a/res/values-de/strings.xml +++ b/res/values-de/strings.xml @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"Telefonnummer auswählen"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"Nur diesmal"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"Immer"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> – Standardeinstellung"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> – Favorit"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g>, Standard"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"Favorit – <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"Lokaler Favorit – <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"Favoriten"</string> + <string name="local_favorites" msgid="4954852813126882412">"Lokale Favoriten"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"Keine Telefonnummern"</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"Benachrichtigung zu eingehendem Anruf"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"Eingehender Anruf"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"Benachrichtigung für verpassten Anruf"</string> @@ -68,4 +72,6 @@ <string name="sort_order_title" msgid="975104366728292702">"Reihenfolge der Kontakte"</string> <string name="given_name_first_title" msgid="8072187841056104968">"Vorname"</string> <string name="family_name_first_title" msgid="7721976826282427987">"Nachname"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"Audio des Anrufs ausgeben an:"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml index ca4739cf..c926fc2a 100644 --- a/res/values-el/strings.xml +++ b/res/values-el/strings.xml @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"Επιλέξτε αριθμό τηλεφώνου"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"Μόνο μία φορά"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"Πάντα"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> - Προεπιλογή"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> - Αγαπημένο"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g> , προεπιλογή"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"Αγαπημένο - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"Τοπικό αγαπημένο - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"Αγαπημένα"</string> + <string name="local_favorites" msgid="4954852813126882412">"Τοπικά αγαπημένα"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"Δεν υπάρχουν αριθμοί τηλεφώνου."</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"Ειδοποίηση εισερχόμενης κλήσης"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"Εισερχόμενη κλήση"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"Ειδοποίηση αναπάντητης κλήσης"</string> @@ -68,4 +72,6 @@ <string name="sort_order_title" msgid="975104366728292702">"Παραγγελία επαφής"</string> <string name="given_name_first_title" msgid="8072187841056104968">"Όνομα"</string> <string name="family_name_first_title" msgid="7721976826282427987">"Επώνυμο"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"Έξοδος ήχου κλήσης σε:"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml index 1a4de3a5..b88763a0 100644 --- a/res/values-en-rAU/strings.xml +++ b/res/values-en-rAU/strings.xml @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"Choose a phone number"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"Just once"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"Always"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> – Default"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> – Favourite"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g> , default"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"Favourite – <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"Local favourite – <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"Favourites"</string> + <string name="local_favorites" msgid="4954852813126882412">"Local favourites"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"No phone numbers"</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"Incoming call notification"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"Incoming call"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"Missed call notification"</string> @@ -68,4 +72,6 @@ <string name="sort_order_title" msgid="975104366728292702">"Contact order"</string> <string name="given_name_first_title" msgid="8072187841056104968">"First name"</string> <string name="family_name_first_title" msgid="7721976826282427987">"Surname"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"Output call audio to:"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-en-rCA/strings.xml b/res/values-en-rCA/strings.xml index 1a4de3a5..b88763a0 100644 --- a/res/values-en-rCA/strings.xml +++ b/res/values-en-rCA/strings.xml @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"Choose a phone number"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"Just once"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"Always"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> – Default"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> – Favourite"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g> , default"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"Favourite – <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"Local favourite – <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"Favourites"</string> + <string name="local_favorites" msgid="4954852813126882412">"Local favourites"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"No phone numbers"</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"Incoming call notification"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"Incoming call"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"Missed call notification"</string> @@ -68,4 +72,6 @@ <string name="sort_order_title" msgid="975104366728292702">"Contact order"</string> <string name="given_name_first_title" msgid="8072187841056104968">"First name"</string> <string name="family_name_first_title" msgid="7721976826282427987">"Surname"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"Output call audio to:"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml index 1a4de3a5..b88763a0 100644 --- a/res/values-en-rGB/strings.xml +++ b/res/values-en-rGB/strings.xml @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"Choose a phone number"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"Just once"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"Always"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> – Default"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> – Favourite"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g> , default"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"Favourite – <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"Local favourite – <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"Favourites"</string> + <string name="local_favorites" msgid="4954852813126882412">"Local favourites"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"No phone numbers"</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"Incoming call notification"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"Incoming call"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"Missed call notification"</string> @@ -68,4 +72,6 @@ <string name="sort_order_title" msgid="975104366728292702">"Contact order"</string> <string name="given_name_first_title" msgid="8072187841056104968">"First name"</string> <string name="family_name_first_title" msgid="7721976826282427987">"Surname"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"Output call audio to:"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml index 1a4de3a5..b88763a0 100644 --- a/res/values-en-rIN/strings.xml +++ b/res/values-en-rIN/strings.xml @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"Choose a phone number"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"Just once"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"Always"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> – Default"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> – Favourite"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g> , default"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"Favourite – <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"Local favourite – <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"Favourites"</string> + <string name="local_favorites" msgid="4954852813126882412">"Local favourites"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"No phone numbers"</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"Incoming call notification"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"Incoming call"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"Missed call notification"</string> @@ -68,4 +72,6 @@ <string name="sort_order_title" msgid="975104366728292702">"Contact order"</string> <string name="given_name_first_title" msgid="8072187841056104968">"First name"</string> <string name="family_name_first_title" msgid="7721976826282427987">"Surname"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"Output call audio to:"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-en-rXC/strings.xml b/res/values-en-rXC/strings.xml index 942fabe0..d5d3f9f8 100644 --- a/res/values-en-rXC/strings.xml +++ b/res/values-en-rXC/strings.xml @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"Choose a phone number"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"Just once"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"Always"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> - Default"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> - Favorite"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g> , default"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"Favorite - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"Local favorite - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"Favorites"</string> + <string name="local_favorites" msgid="4954852813126882412">"Local favorites"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"No phone numbers"</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"Incoming call notification"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"Incoming call"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"Missed call notification"</string> @@ -68,4 +72,6 @@ <string name="sort_order_title" msgid="975104366728292702">"Contact order"</string> <string name="given_name_first_title" msgid="8072187841056104968">"First name"</string> <string name="family_name_first_title" msgid="7721976826282427987">"Last name"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"Output call audio to:"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml index 3079dfbf..7203fb76 100644 --- a/res/values-es-rUS/strings.xml +++ b/res/values-es-rUS/strings.xml @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"Elige un número de teléfono"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"Solo una vez"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"Siempre"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> - predeterminado"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> - Favorito"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g> (predeterminado)"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"Marcar como favorito: <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"Favorito local: <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"Favoritos"</string> + <string name="local_favorites" msgid="4954852813126882412">"Favoritos locales"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"No hay números de teléfono"</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"Notificación de llamada entrante"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"Llamada entrante"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"Notificación de llamada perdida"</string> @@ -68,4 +72,6 @@ <string name="sort_order_title" msgid="975104366728292702">"Orden de los contactos"</string> <string name="given_name_first_title" msgid="8072187841056104968">"Nombre"</string> <string name="family_name_first_title" msgid="7721976826282427987">"Apellido"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"Llamada de audio saliente a:"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml index 73ffc128..81a1c116 100644 --- a/res/values-es/strings.xml +++ b/res/values-es/strings.xml @@ -41,9 +41,9 @@ <string name="call_log_header_today" msgid="2069013936632793214">"Hoy"</string> <string name="call_log_header_yesterday" msgid="4613686845163357847">"Ayer"</string> <string name="call_log_header_older" msgid="3971634717537073179">"Más antiguas"</string> - <string name="call_logs_empty" msgid="3084720078894119049">"No hay elementos recientes"</string> + <string name="call_logs_empty" msgid="3084720078894119049">"No hay nada reciente"</string> <string name="contact_list_empty" msgid="4225504548491888138">"No hay ningún contacto"</string> - <string name="available_after_sync" msgid="33765918799197782">"Estará disponible después de la sincronización. Comprueba que permites compartir contactos en tu teléfono."</string> + <string name="available_after_sync" msgid="33765918799197782">"Esta página estará disponible después de la sincronización. Comprueba que permites compartir contactos en tu teléfono."</string> <string name="favorites_empty" msgid="5794510741132758130">"No hay favoritos"</string> <string name="no_favorites_added" msgid="2359050103464783907">"Aún no has añadido favoritos"</string> <string name="add_favorite_button" msgid="7914955940249767808">"Añadir un favorito"</string> @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"Elige un número de teléfono"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"Solo una vez"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"Siempre"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> ‑ Predeterminado"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> - Favorito"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g> (predeterminado)"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"Favorito - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"Favorito del lugar - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"Favoritos"</string> + <string name="local_favorites" msgid="4954852813126882412">"Favoritos del lugar"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"No hay ningún número de teléfono"</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"Notificación de llamada entrante"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"Llamada entrante"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"Notificación de llamada perdida"</string> @@ -68,4 +72,6 @@ <string name="sort_order_title" msgid="975104366728292702">"Orden de los contactos"</string> <string name="given_name_first_title" msgid="8072187841056104968">"Nombre"</string> <string name="family_name_first_title" msgid="7721976826282427987">"Apellido"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"Salida de audio de las llamadas en:"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-et/strings.xml b/res/values-et/strings.xml index 818c36f5..831bb37e 100644 --- a/res/values-et/strings.xml +++ b/res/values-et/strings.xml @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"Telefoninumbri valimine"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"Ainult üks kord"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"Alati"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> – vaikeseade"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> – lemmik"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g>, vaikenumber"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"Lisa lemmikutesse – <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"Kohalik lemmik – <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"Lemmikud"</string> + <string name="local_favorites" msgid="4954852813126882412">"Kohalikud lemmikud"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"Telefoninumbreid pole"</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"Sissetuleva kõne märguanne"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"Sissetulev kõne"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"Vastamata kõne märguanne"</string> @@ -68,4 +72,6 @@ <string name="sort_order_title" msgid="975104366728292702">"Kontaktide järjestus"</string> <string name="given_name_first_title" msgid="8072187841056104968">"Eesnimi"</string> <string name="family_name_first_title" msgid="7721976826282427987">"Perekonnanimi"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"Kõne heliväljund:"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml index d0e89dee..964b3a97 100644 --- a/res/values-eu/strings.xml +++ b/res/values-eu/strings.xml @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"Aukeratu telefono-zenbaki bat"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"Behin soilik"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"Beti"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> - Lehenetsia"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> - Gogokoa"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g>, lehenetsia"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"Gogokoa - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"Tokiko gogokoak - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"Gogokoak"</string> + <string name="local_favorites" msgid="4954852813126882412">"Tokiko gogokoak"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"Ez dago telefono-zenbakirik"</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"Jasotako dei bati buruzko jakinarazpena"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"Jasotako deia"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"Dei galduaren jakinarazpena"</string> @@ -68,4 +72,6 @@ <string name="sort_order_title" msgid="975104366728292702">"Kontaktuak bistaratzeko ordena"</string> <string name="given_name_first_title" msgid="8072187841056104968">"Izena"</string> <string name="family_name_first_title" msgid="7721976826282427987">"Abizena"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"Deien audioaren irteera:"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml index 899bab97..dcd88b6b 100644 --- a/res/values-fa/strings.xml +++ b/res/values-fa/strings.xml @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"انتخاب شماره تلفن"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"فقط یکبار"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"همیشه"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> - پیشفرض"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> - مورد دلخواه"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g> ، پیشفرض"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"دلخواه - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"کسبوکار محبوب محلی - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"موارد دلخواه"</string> + <string name="local_favorites" msgid="4954852813126882412">"کسبوکارهای محبوب محلی"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"شماره تلفنی وجود ندارد"</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"اعلان تماس ورودی"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"تماس ورودی"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"اعلان تماس بیپاسخ"</string> @@ -68,4 +72,6 @@ <string name="sort_order_title" msgid="975104366728292702">"ترتیب مخاطبین"</string> <string name="given_name_first_title" msgid="8072187841056104968">"نام"</string> <string name="family_name_first_title" msgid="7721976826282427987">"نام خانوادگی"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"خروجی صدای تماس به:"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml index bcd478d8..4793c5c4 100644 --- a/res/values-fi/strings.xml +++ b/res/values-fi/strings.xml @@ -43,7 +43,7 @@ <string name="call_log_header_older" msgid="3971634717537073179">"Vanhemmat"</string> <string name="call_logs_empty" msgid="3084720078894119049">"Ei viimeaikaisia"</string> <string name="contact_list_empty" msgid="4225504548491888138">"Ei yhteystietoja"</string> - <string name="available_after_sync" msgid="33765918799197782">"Saatavilla synkronoinnin jälkeen. Varmista, että olet sallinut yhteystietojen jakamisen puhelimella."</string> + <string name="available_after_sync" msgid="33765918799197782">"Saatavilla synkronoinnin jälkeen. Varmista, että olet sallinut puhelimen yhteystietojen jakamisen."</string> <string name="favorites_empty" msgid="5794510741132758130">"Ei suosikkeja"</string> <string name="no_favorites_added" msgid="2359050103464783907">"Et ole vielä lisännyt suosikkeja"</string> <string name="add_favorite_button" msgid="7914955940249767808">"Lisää suosikki"</string> @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"Valitse puhelinnumero"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"Vain kerran"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"Aina"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> – Oletus"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> – Suosikki"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g>, oletus"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"Suosikki – <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"Paikallinen suosikki – <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"Suosikit"</string> + <string name="local_favorites" msgid="4954852813126882412">"Paikalliset suosikit"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"Ei puhelinnumeroita"</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"Ilmoitus saapuvasta puhelusta"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"Saapuva puhelu"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"Ilmoitus vastaamattomasta puhelusta"</string> @@ -68,4 +72,6 @@ <string name="sort_order_title" msgid="975104366728292702">"Yhteystietojen järjestys"</string> <string name="given_name_first_title" msgid="8072187841056104968">"Etunimi"</string> <string name="family_name_first_title" msgid="7721976826282427987">"Sukunimi"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"Toista puhelun ääni täällä:"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml index 35a46747..9f939963 100644 --- a/res/values-fr-rCA/strings.xml +++ b/res/values-fr-rCA/strings.xml @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"Choisir un numéro de téléphone"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"Une seule fois"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"Toujours"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> – Par défaut"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> – Favoris"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g> , par défaut"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"Favoris – <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"Favoris locaux – <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"Favoris"</string> + <string name="local_favorites" msgid="4954852813126882412">"Favoris locaux"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"Aucun numéro de téléphone"</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"Notification d\'appel entrant"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"Appel entrant"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"Notification d\'appel manqué"</string> @@ -68,4 +72,6 @@ <string name="sort_order_title" msgid="975104366728292702">"Ordre des contacts"</string> <string name="given_name_first_title" msgid="8072187841056104968">"Prénom"</string> <string name="family_name_first_title" msgid="7721976826282427987">"Nom de famille"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"Sortie de l\'appel audio sur :"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml index bf70bf95..02b06a39 100644 --- a/res/values-fr/strings.xml +++ b/res/values-fr/strings.xml @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"Sélectionner un numéro de téléphone"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"Une seule fois"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"Toujours"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> – Par défaut"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> - Favori"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g>, par défaut"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"Favori - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"Favori local - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"Favoris"</string> + <string name="local_favorites" msgid="4954852813126882412">"Favoris locaux"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"Aucun numéro de téléphone"</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"Notification d\'appel entrant"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"Appel entrant"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"Notification d\'appel manqué"</string> @@ -68,4 +72,6 @@ <string name="sort_order_title" msgid="975104366728292702">"Ordre des contacts"</string> <string name="given_name_first_title" msgid="8072187841056104968">"Prénom"</string> <string name="family_name_first_title" msgid="7721976826282427987">"Nom"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"Sortie de l\'appel audio sur :"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-gl/strings.xml b/res/values-gl/strings.xml index 5ed1adc5..fd399e61 100644 --- a/res/values-gl/strings.xml +++ b/res/values-gl/strings.xml @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"Escoller un número de teléfono"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"Só unha vez"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"Sempre"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> (número predeterminado)"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> (favorito)"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g>, predeterminado"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"Favorito (<xliff:g id="LABEL">%1$s</xliff:g>)"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"Favorito do lugar (<xliff:g id="LABEL">%1$s</xliff:g>)"</string> + <string name="phone_favorites" msgid="2257447553252980575">"Favoritos"</string> + <string name="local_favorites" msgid="4954852813126882412">"Favoritos do lugar"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"Non hai ningún número de teléfono"</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"Notificación de chamada entrante"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"Chamada entrante"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"Notificación de chamada perdida"</string> @@ -68,4 +72,6 @@ <string name="sort_order_title" msgid="975104366728292702">"Orde dos contactos"</string> <string name="given_name_first_title" msgid="8072187841056104968">"Nome"</string> <string name="family_name_first_title" msgid="7721976826282427987">"Apelidos"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"Enviar o audio das chamadas a:"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-gu/strings.xml b/res/values-gu/strings.xml index 8c83fd92..9e650668 100644 --- a/res/values-gu/strings.xml +++ b/res/values-gu/strings.xml @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"કોઈ ફોન નંબર પસંદ કરો"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"માત્ર એક વાર"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"હંમેશાં"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> - ડિફૉલ્ટ"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> - મનપસંદ"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g> , ડિફૉલ્ટ"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"મનપસંદ- <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"મનપસંદ સ્થાનિક નંબર - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"મનપસંદ"</string> + <string name="local_favorites" msgid="4954852813126882412">"મનપસંદ સ્થાનિક નંબર"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"કોઈ ફોન નંબર નથી"</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"ઇનકમિંગ કૉલના નોટિફિકેશન"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"ઇનકમિંગ કૉલ"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"ચૂકી ગયેલ કૉલનું નોટિફિકેશન"</string> @@ -68,4 +72,6 @@ <string name="sort_order_title" msgid="975104366728292702">"સંપર્કનો ક્રમ સૉર્ટ કરો"</string> <string name="given_name_first_title" msgid="8072187841056104968">"નામ"</string> <string name="family_name_first_title" msgid="7721976826282427987">"અટક"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"કૉલ ઑડિયોનું આઉટપુટ અહીં આપો:"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-h610dp/dimens.xml b/res/values-h610dp/dimens.xml index 23a95482..7e70374d 100644 --- a/res/values-h610dp/dimens.xml +++ b/res/values-h610dp/dimens.xml @@ -24,6 +24,8 @@ <!-- Control bar bottom padding --> <dimen name="in_call_controller_bar_margin_bottom">@*android:dimen/car_padding_2</dimen> + <dimen name="type_down_list_item_height">@dimen/list_item_height</dimen> + <dimen name="fab_outline_size">104dp</dimen> <dimen name="fab_ripple_radius">52dp</dimen> diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml index 0f442230..f0beea64 100644 --- a/res/values-hi/strings.xml +++ b/res/values-hi/strings.xml @@ -43,7 +43,7 @@ <string name="call_log_header_older" msgid="3971634717537073179">"पहले के"</string> <string name="call_logs_empty" msgid="3084720078894119049">"हाल का कॉल लॉग उपलब्ध नहीं है"</string> <string name="contact_list_empty" msgid="4225504548491888138">"कोई संपर्क नहीं"</string> - <string name="available_after_sync" msgid="33765918799197782">"जानकारी सिंक करने के बाद उपलब्ध हाेगी. पक्का कर लें कि आपने फ़ोन पर संपर्काें काे शेयर करने की अनुमति दी है."</string> + <string name="available_after_sync" msgid="33765918799197782">"सिंक करने के बाद जानकारी उपलब्ध हाेगी. पक्का कर लें कि आपने फ़ोन पर संपर्काें काे शेयर करने की अनुमति दी है."</string> <string name="favorites_empty" msgid="5794510741132758130">"कोई पसंदीदा संपर्क नहीं"</string> <string name="no_favorites_added" msgid="2359050103464783907">"आपने अब तक पसंदीदा संपर्क के तौर पर किसी को नहीं जोड़ा है"</string> <string name="add_favorite_button" msgid="7914955940249767808">"पसंदीदा संपर्क जोड़ें"</string> @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"फ़ोन नंबर चुनें"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"सिर्फ़ एक बार"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"हमेशा"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> - डिफ़ॉल्ट"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> - पसंदीदा"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g> , डिफ़ॉल्ट"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"पसंदीदा नंबर - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"पसंदीदा स्थानीय नंबर - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"पसंदीदा नंबर"</string> + <string name="local_favorites" msgid="4954852813126882412">"पसंदीदा स्थानीय नंबर"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"कोई फ़ोन नंबर उपलब्ध नहीं है"</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"आने वाले कॉल (इनकमिंग) की सूचना"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"आने वाला कॉल (इनकमिंग)"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"मिस्ड कॉल (छूटी हुई कॉल) की सूचना"</string> @@ -68,4 +72,6 @@ <string name="sort_order_title" msgid="975104366728292702">"संपर्कों का क्रम"</string> <string name="given_name_first_title" msgid="8072187841056104968">"नाम"</string> <string name="family_name_first_title" msgid="7721976826282427987">"उपनाम"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"आउटपुट कॉल यहां से सुनाई देगी:"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml index 1f183903..e293c964 100644 --- a/res/values-hr/strings.xml +++ b/res/values-hr/strings.xml @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"Odaberite telefonski broj"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"Samo jednom"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"Uvijek"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> – zadano"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> – favorit"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g> , zadano"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"Favorit – <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"Lokalni favorit – <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"Favoriti"</string> + <string name="local_favorites" msgid="4954852813126882412">"Lokalni favoriti"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"Nema telefonskih brojeva"</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"Obavijest o dolaznom pozivu"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"Dolazni poziv"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"Obavijest o propuštenom pozivu"</string> @@ -69,4 +73,6 @@ <string name="sort_order_title" msgid="975104366728292702">"Redoslijed kontakata"</string> <string name="given_name_first_title" msgid="8072187841056104968">"Ime"</string> <string name="family_name_first_title" msgid="7721976826282427987">"Prezime"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"Odaberite izlaz za zvuk poziva:"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml index 09574e70..5da0ff3b 100644 --- a/res/values-hu/strings.xml +++ b/res/values-hu/strings.xml @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"Telefonszám kiválasztása"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"Csak egyszer"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"Mindig"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> – Alapértelmezett"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> – Kedvenc"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g> , alapértelmezett"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"Kedvenc – <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"Helyi kedvenc – <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"Kedvencek"</string> + <string name="local_favorites" msgid="4954852813126882412">"Helyi kedvencek"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"Nincsenek telefonszámok"</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"Bejövő hívásról szóló értesítés"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"Bejövő hívás"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"Nem fogadott hívásról szóló értesítés"</string> @@ -68,4 +72,6 @@ <string name="sort_order_title" msgid="975104366728292702">"Névjegyek rendezése"</string> <string name="given_name_first_title" msgid="8072187841056104968">"Utónév"</string> <string name="family_name_first_title" msgid="7721976826282427987">"Családnév"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"Hívás hangjának kimenete:"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-hy/strings.xml b/res/values-hy/strings.xml index bad23607..ed81245f 100644 --- a/res/values-hy/strings.xml +++ b/res/values-hy/strings.xml @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"Ընտրեք հեռախոսահամար"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"Միայն այս անգամ"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"Միշտ"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> – կանխադրված"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> – Ընտրանի"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g>, կանխադրված"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"Նախընտրած – <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"Նախընտրած տեղական – <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"Նախընտրած համարներ"</string> + <string name="local_favorites" msgid="4954852813126882412">"Նախընտրած տեղական համարներ"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"Հեռախոսահամարներ չկան"</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"Մուտքային զանգի ծանուցում"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"Մուտքային զանգ"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"Ծանուցում բաց թողնված զանգի մասին"</string> @@ -68,4 +72,6 @@ <string name="sort_order_title" msgid="975104366728292702">"Կոնտակտների հերթականություն"</string> <string name="given_name_first_title" msgid="8072187841056104968">"Անուն"</string> <string name="family_name_first_title" msgid="7721976826282427987">"Ազգանուն"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"Զանգի աուդիոելք՝"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml index 48aeb365..5f3762f2 100644 --- a/res/values-in/strings.xml +++ b/res/values-in/strings.xml @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"Pilih nomor telepon"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"Sekali ini saja"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"Selalu"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> - Default"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> - Favorit"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g> , default"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"Favorit - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"Favorit lokal - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"Favorit"</string> + <string name="local_favorites" msgid="4954852813126882412">"Favorit lokal"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"Nomor telepon tidak ada"</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"Notifikasi panggilan masuk"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"Panggilan masuk"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"Notifikasi panggilan tak terjawab"</string> @@ -68,4 +72,6 @@ <string name="sort_order_title" msgid="975104366728292702">"Urutan kontak"</string> <string name="given_name_first_title" msgid="8072187841056104968">"Nama depan"</string> <string name="family_name_first_title" msgid="7721976826282427987">"Nama belakang"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"Bunyikan audio panggilan telepon ke:"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-is/strings.xml b/res/values-is/strings.xml index d50717db..8cbf98b0 100644 --- a/res/values-is/strings.xml +++ b/res/values-is/strings.xml @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"Veldu símanúmer"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"Bara einu sinni"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"Alltaf"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> – sjálfgefinn"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> - Eftirlæti"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g> , sjálfgefið"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"Eftirlæti - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"Eftirlæti heimamanna - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"Eftirlæti"</string> + <string name="local_favorites" msgid="4954852813126882412">"Eftirlæti heimamanna"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"Engin símanúmer"</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"Tilkynning um móttekið símtal"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"Móttekið símtal"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"Tilkynning um ósvarað símtal"</string> @@ -68,4 +72,6 @@ <string name="sort_order_title" msgid="975104366728292702">"Röðun tengiliða"</string> <string name="given_name_first_title" msgid="8072187841056104968">"Fornafn"</string> <string name="family_name_first_title" msgid="7721976826282427987">"Eftirnafn"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"Senda símtalshljóð í:"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml index 0b840fd0..ffd9e2a0 100644 --- a/res/values-it/strings.xml +++ b/res/values-it/strings.xml @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"Scegli un numero di telefono"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"Solo una volta"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"Sempre"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g>: predefinito"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> - Preferito"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g>, predefinito"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"Preferito - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"Preferito locale - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"Preferiti"</string> + <string name="local_favorites" msgid="4954852813126882412">"Preferiti locali"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"Nessun numero di telefono"</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"Notifica di chiamata in arrivo"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"Chiamata in arrivo"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"Notifica di chiamata senza risposta"</string> @@ -68,4 +72,6 @@ <string name="sort_order_title" msgid="975104366728292702">"Ordine dei contatti"</string> <string name="given_name_first_title" msgid="8072187841056104968">"Nome"</string> <string name="family_name_first_title" msgid="7721976826282427987">"Cognome"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"Uscita audio chiamate su:"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml index bb840194..e737371c 100644 --- a/res/values-iw/strings.xml +++ b/res/values-iw/strings.xml @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"בחירת מספר טלפון"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"פעם אחת בלבד"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"תמיד"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> - ברירת מחדל"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> – מועדף"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g> , ברירת מחדל"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"מועדף - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"פופולרי בסביבה - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"מועדפים"</string> + <string name="local_favorites" msgid="4954852813126882412">"פופולריים בסביבה"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"אין אף מספר טלפון"</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"התראה על שיחה נכנסת"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"שיחה נכנסת"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"התראה על שיחה שלא נענתה"</string> @@ -70,4 +74,6 @@ <string name="sort_order_title" msgid="975104366728292702">"סדר אנשי הקשר"</string> <string name="given_name_first_title" msgid="8072187841056104968">"שם פרטי"</string> <string name="family_name_first_title" msgid="7721976826282427987">"שם משפחה"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"פלט של שיחות אודיו אל:"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml index 13cc40c3..244e7896 100644 --- a/res/values-ja/strings.xml +++ b/res/values-ja/strings.xml @@ -35,7 +35,7 @@ <string name="audio_route_handset" msgid="9133081623895172144">"スマートフォン"</string> <string name="dial_a_number" msgid="7432322177412387160">"電話番号をダイヤル"</string> <string name="favorites_title" msgid="4767723901530488145">"お気に入り"</string> - <string name="call_history_title" msgid="7997887846276371553">"最近"</string> + <string name="call_history_title" msgid="7997887846276371553">"履歴"</string> <string name="contacts_title" msgid="9201954388634537346">"連絡先"</string> <string name="dialpad_title" msgid="3746259645005208554">"ダイヤルパッド"</string> <string name="call_log_header_today" msgid="2069013936632793214">"今日"</string> @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"電話番号の選択"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"1 回のみ"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"常時"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> - デフォルト"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> - お気に入り"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g>、デフォルト"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"お気に入り - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"地元で人気 - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"お気に入り"</string> + <string name="local_favorites" msgid="4954852813126882412">"地元で人気"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"電話番号がありません"</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"着信通知"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"着信"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"不在着信の通知"</string> @@ -68,4 +72,6 @@ <string name="sort_order_title" msgid="975104366728292702">"連絡先の順序"</string> <string name="given_name_first_title" msgid="8072187841056104968">"名"</string> <string name="family_name_first_title" msgid="7721976826282427987">"姓"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"通話音声の出力先:"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-ka/strings.xml b/res/values-ka/strings.xml index b7f8f713..f6bc944e 100644 --- a/res/values-ka/strings.xml +++ b/res/values-ka/strings.xml @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"აირჩიეთ ტელეფონის ნომერი"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"მხოლოდ ერთხელ"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"ყოველთვის"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> - ნაგულისხმევი"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> — რჩეული"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g>, ნაგულისხმევი"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"ფავორიტი — <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"ადგილობრივი ფავორიტი — <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"ფავორიტები"</string> + <string name="local_favorites" msgid="4954852813126882412">"ადგილობრივი ფავორიტები"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"ტელეფონის ნომრები არ არის"</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"შემომავალი ზარის შეტყობინება"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"შემომავალი ზარი"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"გამოტოვებული ზარის შეტყობინება"</string> @@ -68,4 +72,6 @@ <string name="sort_order_title" msgid="975104366728292702">"კონტაქტების თანმიმდევრობა"</string> <string name="given_name_first_title" msgid="8072187841056104968">"სახელი"</string> <string name="family_name_first_title" msgid="7721976826282427987">"გვარი"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"ზარის აუდიოს გამოტანა:"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-kk/strings.xml b/res/values-kk/strings.xml index d4baccad..3188629a 100644 --- a/res/values-kk/strings.xml +++ b/res/values-kk/strings.xml @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"Телефон нөмірін таңдаңыз."</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"Бір рет қана"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"Әрқашан"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> - Әдепкі"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> — таңдаулы"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g> , әдепкі нөмір"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"Таңдаулы нөмір - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"Жергілікті таңдаулы нөмір - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"Таңдаулы нөмірлер"</string> + <string name="local_favorites" msgid="4954852813126882412">"Жергілікті таңдаулы нөмірлер"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"Телефон нөмірлері жоқ"</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"Келген қоңырау туралы хабарландыру"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"Кіріс қоңырау"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"Өткізіп алған қоңырау туралы хабарландыру"</string> @@ -68,4 +72,6 @@ <string name="sort_order_title" msgid="975104366728292702">"Контактілер реті"</string> <string name="given_name_first_title" msgid="8072187841056104968">"Аты"</string> <string name="family_name_first_title" msgid="7721976826282427987">"Тегі"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"Қоңырау дыбысын қабылдайтын құрылғы:"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-km/strings.xml b/res/values-km/strings.xml index 3d183b33..2c387d6c 100644 --- a/res/values-km/strings.xml +++ b/res/values-km/strings.xml @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"ជ្រើសរើសលេខទូរសព្ទ"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"តែម្ដង"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"ជានិច្ច"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> - លំនាំដើម"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> - សំណព្វ"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g> លំនាំដើម"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"សំណព្វ - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"លេខសំណព្វក្នុងតំបន់ - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"សំណព្វ"</string> + <string name="local_favorites" msgid="4954852813126882412">"លេខសំណព្វក្នុងតំបន់"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"មិនមានលេខទូរសព្ទទេ"</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"ការជូនដំណឹងអំពីការហៅចូល"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"ការហៅចូល"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"ការជូនដំណឹងអំពីការខកខានទទួល"</string> @@ -68,4 +72,6 @@ <string name="sort_order_title" msgid="975104366728292702">"លំដាប់ទំនាក់ទំនង"</string> <string name="given_name_first_title" msgid="8072187841056104968">"នាមខ្លួន"</string> <string name="family_name_first_title" msgid="7721976826282427987">"នាមត្រកូល"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"បញ្ចេញសំឡេងហៅទូរសព្ទទៅ៖"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-kn/strings.xml b/res/values-kn/strings.xml index 263b3b3c..01775f2d 100644 --- a/res/values-kn/strings.xml +++ b/res/values-kn/strings.xml @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"ಫೋನ್ ಸಂಖ್ಯೆಯನ್ನು ಆಯ್ಕೆಮಾಡಿ"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"ಒಮ್ಮೆ ಮಾತ್ರ"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"ಯಾವಾಗಲೂ"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> - ಡೀಫಾಲ್ಟ್"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> - ಮೆಚ್ಚಿನದು"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g> , ಡಿಫಾಲ್ಟ್"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"ಮೆಚ್ಚಿನದು - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"ಸ್ಥಳೀಯ ಮೆಚ್ಚಿನದು - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"ಮೆಚ್ಚಿನವುಗಳು"</string> + <string name="local_favorites" msgid="4954852813126882412">"ಸ್ಥಳೀಯ ಮೆಚ್ಚಿನವುಗಳು"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"ಯಾವುದೇ ಫೋನ್ ಸಂಖ್ಯೆಗಳಿಲ್ಲ"</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"ಒಳಬರುವ ಕರೆ ಅಧಿಸೂಚನೆ"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"ಒಳಬರುವ ಕರೆ"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"ಮಿಸ್ಡ್ ಕಾಲ್ ಅಧಿಸೂಚನೆ"</string> @@ -68,4 +72,6 @@ <string name="sort_order_title" msgid="975104366728292702">"ಸಂಪರ್ಕದ ಕ್ರಮ"</string> <string name="given_name_first_title" msgid="8072187841056104968">"ಮೊದಲ ಹೆಸರು"</string> <string name="family_name_first_title" msgid="7721976826282427987">"ಕೊನೆಯ ಹೆಸರು"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"ಇದಕ್ಕೆ ಕರೆಯ ಆಡಿಯೊ ಔಟ್ಪುಟ್:"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml index 4bedbb55..432df79b 100644 --- a/res/values-ko/strings.xml +++ b/res/values-ko/strings.xml @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"전화번호 선택"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"한 번만"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"항상"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> - 기본값"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> - 즐겨찾기"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g>, 기본값"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"즐겨찾는 연락처 - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"즐겨찾는 근처 장소 - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"즐겨찾는 연락처"</string> + <string name="local_favorites" msgid="4954852813126882412">"즐겨찾는 근처 장소"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"전화번호가 없습니다."</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"수신 전화 알림"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"수신 전화"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"부재중 전화 알림림"</string> @@ -68,4 +72,6 @@ <string name="sort_order_title" msgid="975104366728292702">"연락처 순서"</string> <string name="given_name_first_title" msgid="8072187841056104968">"이름"</string> <string name="family_name_first_title" msgid="7721976826282427987">"성"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"다음으로 통화 오디오 출력:"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-ky/strings.xml b/res/values-ky/strings.xml index 6221745f..440d30f4 100644 --- a/res/values-ky/strings.xml +++ b/res/values-ky/strings.xml @@ -25,8 +25,8 @@ <string name="emergency_button_text" msgid="3467659545392931727">"Тез жардам"</string> <string name="emergency_call_description" msgid="6700161437750325693">"Шашылыш чалуу"</string> <string name="error_contact_deleted" msgid="6356539067659368396">"Бул байланыш өчүрүлгөн болушу керек."</string> - <string name="error_invalid_phone_number" msgid="5349049631580646136">"Бул телефон номери терилбей жатат. Аны текшерип, кайра аракет кылыңыз."</string> - <string name="error_telephony_not_available" msgid="8715829862083386178">"Телефонго чалуу мүмкүн эмес. Кийинчерээк кайталаңыз."</string> + <string name="error_invalid_phone_number" msgid="5349049631580646136">"Бул телефон номери терилбей жатат. Аны текшерип, кайталап көрүңүз."</string> + <string name="error_telephony_not_available" msgid="8715829862083386178">"Телефонго чалуу мүмкүн эмес. Бир аздан кийин кайталап көрүңүз."</string> <string name="decline_call" msgid="2505987200485272226">"Баш тартуу"</string> <string name="answer_call" msgid="3272474440561548115">"Жооп берүү"</string> <string name="call_back" msgid="5745638356098600872">"Кайра чалуу"</string> @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"Телефон номерин тандоо"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"Бир жолу гана"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"Ар дайым"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> - Демейки"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> - Сүйүктүүлөргө кошуу"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g> , демейки"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"Сүйүктүү - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"Жергиликтүү сүйүктүү номер - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"Сүйүктүүлөр"</string> + <string name="local_favorites" msgid="4954852813126882412">"Жергиликтүү сүйүктүү номер"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"Телефон номерлери жок"</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"Кириш чалуу билдирмеси"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"Кирүүчү чалуу"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"Жооп берилбеген чалуу жөнүндө билдирүү"</string> @@ -68,4 +72,6 @@ <string name="sort_order_title" msgid="975104366728292702">"Байланыштын ирети"</string> <string name="given_name_first_title" msgid="8072187841056104968">"Аты"</string> <string name="family_name_first_title" msgid="7721976826282427987">"Фамилиясы"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"Төмөнкүгө телефон чалуу:"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-lo/strings.xml b/res/values-lo/strings.xml index 64691e9f..f5cf23ec 100644 --- a/res/values-lo/strings.xml +++ b/res/values-lo/strings.xml @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"ເລືອກເບີໂທລະສັບ"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"ຄັ້ງດຽວ"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"ທຸກເທື່ອ"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> - ຄ່າເລີ່ມຕົ້ນ"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> - ລາຍການທີ່ມັກ"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g> , ຄ່າເລີ່ມຕົ້ນ"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"ເບີຍອດນິຍົມ - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"ເບີຍອດນິຍົມໃນທ້ອງຖິ່ນ - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"ເບີຍອດນິຍົມ"</string> + <string name="local_favorites" msgid="4954852813126882412">"ເບີຍອດນິຍົມໃນທ້ອງຖິ່ນ"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"ບໍ່ມີເບີໂທລະສັບ"</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"ການແຈ້ງເຕືອນສາຍໂທເຂົ້າ"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"ສາຍໂທເຂົ້າ"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"ການແຈ້ງເຕືອນສາຍບໍ່ໄດ້ຮັບ"</string> @@ -68,4 +72,6 @@ <string name="sort_order_title" msgid="975104366728292702">"ລຳດັບລາຍຊື່ຜູ້ຕິດຕໍ່"</string> <string name="given_name_first_title" msgid="8072187841056104968">"ຊື່"</string> <string name="family_name_first_title" msgid="7721976826282427987">"ນາມສະກຸນ"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"ປັບສຽງໂທອອກໄປທີ່:"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml index 73d2fa6f..3fba4666 100644 --- a/res/values-lt/strings.xml +++ b/res/values-lt/strings.xml @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"Pasirinkite telefono numerį"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"Tik kartą"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"Visada"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> – numatytasis"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"„<xliff:g id="LABEL">%1$s</xliff:g>“ – įtraukti į mėgstamiausius"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g>, numatytasis"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"Mėgstamiausias – <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"Vietinis mėgstamiausias – <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"Mėgstamiausi"</string> + <string name="local_favorites" msgid="4954852813126882412">"Vietiniai mėgstamiausi"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"Nėra jokių telefono numerių"</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"Pranešimas apie gaunamąjį skambutį"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"Gaunamasis skambutis"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"Praleisto skambučio pranešimas"</string> @@ -70,4 +74,6 @@ <string name="sort_order_title" msgid="975104366728292702">"Kontaktų rūšiavimo tvarka"</string> <string name="given_name_first_title" msgid="8072187841056104968">"Vardas"</string> <string name="family_name_first_title" msgid="7721976826282427987">"Pavardė"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"Skambučio garso išvestis į:"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml index fdbafef7..3c7e3338 100644 --- a/res/values-lv/strings.xml +++ b/res/values-lv/strings.xml @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"Tālruņa numura izvēle"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"Tikai vienreiz"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"Vienmēr"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> — noklusējums"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> — izlase"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g> (noklusējums)"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"Izlase — <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"Izlase (vietējais) — <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"Izlase"</string> + <string name="local_favorites" msgid="4954852813126882412">"Izlase (vietējie)"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"Nav neviena tālruņa numura"</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"Paziņojums par ienākošu zvanu"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"Ienākošais zvans"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"Paziņojums par neatbildētu zvanu"</string> @@ -69,4 +73,6 @@ <string name="sort_order_title" msgid="975104366728292702">"Kontaktpersonu secība"</string> <string name="given_name_first_title" msgid="8072187841056104968">"Vārds"</string> <string name="family_name_first_title" msgid="7721976826282427987">"Uzvārds"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"Zvana audio izeja:"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-mk/strings.xml b/res/values-mk/strings.xml index d1cb2dd4..7a0e0918 100644 --- a/res/values-mk/strings.xml +++ b/res/values-mk/strings.xml @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"Изберете телефонски број"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"Само еднаш"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"Секогаш"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> - Стандарден"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> - омилен"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g>, стандарден"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"Омилен - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"Локални фаворити - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"Омилени"</string> + <string name="local_favorites" msgid="4954852813126882412">"Локални фаворити"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"Нема телефонски броеви"</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"Известување за дојдовен време"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"Дојдовен повик"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"Известување за пропуштен повик"</string> @@ -68,4 +72,6 @@ <string name="sort_order_title" msgid="975104366728292702">"Подредување контакти"</string> <string name="given_name_first_title" msgid="8072187841056104968">"Име"</string> <string name="family_name_first_title" msgid="7721976826282427987">"Презиме"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"Аудиото на повикот да се слуша на:"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-ml/strings.xml b/res/values-ml/strings.xml index e5812c29..7243f903 100644 --- a/res/values-ml/strings.xml +++ b/res/values-ml/strings.xml @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"ഫോൺ നമ്പർ തിരഞ്ഞെടുക്കുക"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"ഒരിക്കൽ മാത്രം"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"എപ്പോഴും"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> - ഡിഫോൾട്ട്"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> - പ്രിയപ്പെട്ടത്"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g> , ഡിഫോൾട്ട്"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"പ്രിയപ്പെട്ടത് - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"പ്രാദേശികമായി പ്രിയപ്പെട്ടത് - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"പ്രിയപ്പെട്ടവ"</string> + <string name="local_favorites" msgid="4954852813126882412">"പ്രാദേശികമായി പ്രിയപ്പെട്ടവ"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"ഫോൺ നമ്പറുകളൊന്നുമില്ല"</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"ഇൻകമിംഗ് കോൾ അറിയിപ്പ്"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"ഇന്കമിംഗ് കോള്"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"മിസ്ഡ് കോൾ അറിയിപ്പ്"</string> @@ -68,4 +72,6 @@ <string name="sort_order_title" msgid="975104366728292702">"കോൺടാക്റ്റ് ഓർഡർ"</string> <string name="given_name_first_title" msgid="8072187841056104968">"ഫസ്റ്റ് നെയിം"</string> <string name="family_name_first_title" msgid="7721976826282427987">"ലാസ്റ്റ് നെയിം"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"ഇനിപ്പറയുന്നതിലേക്ക് കോൾ ഓഡിയോ ഔട്ട്പുട്ട് ചെയ്യുക:"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-mn/strings.xml b/res/values-mn/strings.xml index c05b6e50..c22eef92 100644 --- a/res/values-mn/strings.xml +++ b/res/values-mn/strings.xml @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"Утасны дугаар сонгоно уу"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"Нэг удаа"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"Байнга"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> - Өгөгдмөл"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> - Дуртай"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g> , өгөгдмөл"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"Дуртай - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"Дотоодын дуртай - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"Дуртай"</string> + <string name="local_favorites" msgid="4954852813126882412">"Дотоодын дуртай дугаарууд"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"Утасны дугаарууд алга"</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"Ирсэн дуудлагын мэдэгдэл"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"Ирсэн дуудлага"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"Аваагүй дуудлагын мэдэгдэл"</string> @@ -68,4 +72,6 @@ <string name="sort_order_title" msgid="975104366728292702">"Харилцагчийн захиалга"</string> <string name="given_name_first_title" msgid="8072187841056104968">"Нэр"</string> <string name="family_name_first_title" msgid="7721976826282427987">"Овог"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"Дуудлагын аудио гаралтын чиглэл:"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-mr/strings.xml b/res/values-mr/strings.xml index 80d225ed..a86ebf99 100644 --- a/res/values-mr/strings.xml +++ b/res/values-mr/strings.xml @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"फोन नंबर निवडा"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"फक्त एकदा"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"नेहमी"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> - डीफॉल्ट"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> - आवडते"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g> , डीफॉल्ट"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"आवडते - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"स्थानिक आवडते - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"आवडते"</string> + <string name="local_favorites" msgid="4954852813126882412">"स्थानिक आवडी"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"कोणतेही फोन नंबर नाहीत"</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"येणाऱ्या कॉलची सूचना"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"येणारा कॉल"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"मिस्ड कॉलची सूचना"</string> @@ -68,4 +72,6 @@ <string name="sort_order_title" msgid="975104366728292702">"संपर्क क्रम"</string> <string name="given_name_first_title" msgid="8072187841056104968">"नाव"</string> <string name="family_name_first_title" msgid="7721976826282427987">"आडनाव"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"आउटपुट कॉल ऑडिओ यावर पाठवा:"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml index 8c5bea5b..e2945639 100644 --- a/res/values-ms/strings.xml +++ b/res/values-ms/strings.xml @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"Pilih nombor telefon"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"Hanya sekali"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"Sentiasa"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> - Lalai"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> - Kegemaran"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g> , lalai"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"Kegemaran - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"Kegemaran tempatan - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"Kegemaran"</string> + <string name="local_favorites" msgid="4954852813126882412">"Kegemaran tempatan"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"Tiada nombor telefon"</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"Pemberitahuan panggilan masuk"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"Panggilan masuk"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"Pemberitahuan panggilan terlepas"</string> @@ -68,4 +72,6 @@ <string name="sort_order_title" msgid="975104366728292702">"Tertib kenalan"</string> <string name="given_name_first_title" msgid="8072187841056104968">"Nama pertama"</string> <string name="family_name_first_title" msgid="7721976826282427987">"Nama keluarga"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"Outputkan audio panggilan ke:"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-my/strings.xml b/res/values-my/strings.xml index 31adf1d5..5edde917 100644 --- a/res/values-my/strings.xml +++ b/res/values-my/strings.xml @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"ဖုန်းနံပါတ် ရွေးချယ်ပါ"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"တစ်ကြိမ်သာ"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"အမြဲတမ်း"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> - မူရင်း"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> - အနှစ်သက်ဆုံး"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g> ၊ မူရင်း"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"အကြိုက်ဆုံး - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"ဒေသတွင်း အကြိုက်ဆုံး - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"အကြိုက်ဆုံးများ"</string> + <string name="local_favorites" msgid="4954852813126882412">"ဒေသတွင်း အကြိုက်ဆုံး"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"ဖုန်းနံပါတ် မရှိပါ"</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"အဝင်ခေါ်ဆိုမှု အကြောင်းကြားချက်"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"အဝင်ခေါ်ဆိုမှု"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"လွတ်သွားသော ခေါ်ဆိုမှု အကြောင်းကြားချက်"</string> @@ -68,4 +72,6 @@ <string name="sort_order_title" msgid="975104366728292702">"အဆက်အသွယ် အစီအစဉ်"</string> <string name="given_name_first_title" msgid="8072187841056104968">"ရှေ့အမည်"</string> <string name="family_name_first_title" msgid="7721976826282427987">"နောက်အမည်"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"ဖုန်းခေါ်ဆိုမှု အသံ ထုတ်ရန်နေရာ-"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml index 16a5b696..92992f2d 100644 --- a/res/values-nb/strings.xml +++ b/res/values-nb/strings.xml @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"Velg et telefonnummer"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"Bare én gang"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"Alltid"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> – Standard"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> – Favoritt"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g>, standard"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"Favoritt – <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"Lokal favoritt – <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"Favoritter"</string> + <string name="local_favorites" msgid="4954852813126882412">"Lokale favoritter"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"Ingen telefonnumre"</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"Varsel om innkommende anrop"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"Innkommende anrop"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"Varsel om tapt anrop"</string> @@ -68,4 +72,6 @@ <string name="sort_order_title" msgid="975104366728292702">"Kontaktrekkefølge"</string> <string name="given_name_first_title" msgid="8072187841056104968">"Fornavn"</string> <string name="family_name_first_title" msgid="7721976826282427987">"Etternavn"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"Send samtalelyd til:"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-ne/strings.xml b/res/values-ne/strings.xml index 0a38f0aa..e65611c6 100644 --- a/res/values-ne/strings.xml +++ b/res/values-ne/strings.xml @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"फोन नम्बर छनौट गर्नुहोस्"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"एक पटक मात्र"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"सधैँ"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> - पूर्वनिर्धारित"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> - मन पर्ने कुराको सूचीमा सार्नु…"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g> , पूर्वनिर्धारित फोन नम्बर"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"मन पर्ने नम्बर - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"स्थानीय मन पर्ने नम्बर - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"मन पर्ने नम्बरहरू"</string> + <string name="local_favorites" msgid="4954852813126882412">"स्थानीय मन पर्ने नम्बरहरू"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"कुनै पनि फोन नम्बर छैन"</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"आगमन कलसम्बन्धी सूचना"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"आगमन कल"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"छुटेको कलसम्बन्धी सूचना"</string> @@ -68,4 +72,6 @@ <string name="sort_order_title" msgid="975104366728292702">"सम्पर्क ठेगानाको क्रम"</string> <string name="given_name_first_title" msgid="8072187841056104968">"नाम"</string> <string name="family_name_first_title" msgid="7721976826282427987">"थर"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"निम्न यन्त्रबाट कलको अडियो सुन्नुहोस्:"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml index 53f20a6c..d773675d 100644 --- a/res/values-nl/strings.xml +++ b/res/values-nl/strings.xml @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"Een telefoonnummer kiezen"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"Eén keer"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"Altijd"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> - Standaard"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> - favoriet"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g>, standaard"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"Favoriet - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"Lokale favoriet - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"Favorieten"</string> + <string name="local_favorites" msgid="4954852813126882412">"Lokale favorieten"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"Geen telefoonnummers"</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"Melding over inkomend gesprek"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"Inkomend gesprek"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"Melding voor gemist gesprek"</string> @@ -68,4 +72,6 @@ <string name="sort_order_title" msgid="975104366728292702">"Contactvolgorde"</string> <string name="given_name_first_title" msgid="8072187841056104968">"Voornaam"</string> <string name="family_name_first_title" msgid="7721976826282427987">"Achternaam"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"Gespreksaudio uitvoeren naar:"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-or/strings.xml b/res/values-or/strings.xml index 159d4942..f4e3b0c1 100644 --- a/res/values-or/strings.xml +++ b/res/values-or/strings.xml @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"ଏକ ଫୋନ୍ ନମ୍ବର ବାଛନ୍ତୁ"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"ଥରେ ମାତ୍ର"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"ସର୍ବଦା"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> - ଡିଫଲ୍ଟ"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> - ପସନ୍ଦ"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g> , ଡିଫଲ୍ଟ"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"ପସନ୍ଦ - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"ସ୍ଥାନୀୟ ପସନ୍ଦ - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"ପସନ୍ଦଗୁଡ଼ିକ"</string> + <string name="local_favorites" msgid="4954852813126882412">"ସ୍ଥାନୀୟ ପସନ୍ଦଗୁଡ଼ିକ"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"କୌଣସି ଫୋନ୍ ନମ୍ବର ନାହିଁ"</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"ଇନ୍କମିଙ୍ଗ୍ କଲ୍ ବିଜ୍ଞପ୍ତି"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"ଇନ୍କମିଂ କଲ୍"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"ମିସ୍ଡ କଲ୍ ବିଜ୍ଞପ୍ତି"</string> @@ -68,4 +72,6 @@ <string name="sort_order_title" msgid="975104366728292702">"ଯୋଗାଯୋଗ କ୍ରମରେ ସଜାନ୍ତୁ"</string> <string name="given_name_first_title" msgid="8072187841056104968">"ପ୍ରଥମ ନାମ"</string> <string name="family_name_first_title" msgid="7721976826282427987">"ଶେଷ ନାମ"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"ଆଉଟପୁଟ୍ କଲ୍ ଏଠାରୁ ଶୁଣାଯିବ:"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-pa/strings.xml b/res/values-pa/strings.xml index 9513e6ca..7f174782 100644 --- a/res/values-pa/strings.xml +++ b/res/values-pa/strings.xml @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"ਇੱਕ ਫ਼ੋਨ ਨੰਬਰ ਚੁਣੋ"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"ਬੱਸ ਇੱਕ ਵਾਰ"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"ਹਮੇਸ਼ਾਂ"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> - ਪੂਰਵ-ਨਿਰਧਾਰਤ"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> - ਮਨਪਸੰਦ"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g> , ਪੂਰਵ-ਨਿਰਧਾਰਤ"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"ਮਨਪਸੰਦ - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"ਸਥਾਨਕ ਮਨਪਸੰਦ - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"ਮਨਪਸੰਦ"</string> + <string name="local_favorites" msgid="4954852813126882412">"ਸਥਾਨਕ ਮਨਪਸੰਦ"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"ਕੋਈ ਫ਼ੋਨ ਨੰਬਰ ਨਹੀਂ"</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"ਇਨਕਮਿੰਗ ਕਾਲ ਦੀ ਸੂਚਨਾ"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"ਇਨਕਮਿੰਗ ਕਾਲ"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"ਮਿਸ ਕਾਲ ਦੀ ਸੂਚਨਾ"</string> @@ -68,4 +72,6 @@ <string name="sort_order_title" msgid="975104366728292702">"ਸੰਪਰਕ ਕ੍ਰਮ"</string> <string name="given_name_first_title" msgid="8072187841056104968">"ਨਾਮ ਦਾ ਪਹਿਲਾ ਭਾਗ"</string> <string name="family_name_first_title" msgid="7721976826282427987">"ਨਾਮ ਦਾ ਆਖਰੀ ਭਾਗ"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"ਇਸ \'ਤੇ ਆਊਟਪੁੱਟ ਕਾਲ ਆਡੀਓ:"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml index a3165692..14096de0 100644 --- a/res/values-pl/strings.xml +++ b/res/values-pl/strings.xml @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"Wybierz numer telefonu"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"Tylko raz"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"Zawsze"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> – numer domyślny"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> – dodaj do ulubionych"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g>, domyślny"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"Ulubiony – <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"Ulubione miejsce – <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"Ulubione"</string> + <string name="local_favorites" msgid="4954852813126882412">"Ulubione miejsca"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"Brak numerów telefonu"</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"Powiadomienie o połączeniu przychodzącym"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"Połączenie przychodzące"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"Powiadomienie o nieodebranym połączeniu"</string> @@ -70,4 +74,6 @@ <string name="sort_order_title" msgid="975104366728292702">"Kolejność kontaktów"</string> <string name="given_name_first_title" msgid="8072187841056104968">"Imię"</string> <string name="family_name_first_title" msgid="7721976826282427987">"Nazwisko"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"Odtwórz dźwięk połączenia na:"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-port/dimens.xml b/res/values-port/dimens.xml index cdb70cfc..5318d568 100644 --- a/res/values-port/dimens.xml +++ b/res/values-port/dimens.xml @@ -22,4 +22,5 @@ <dimen name="keypad_margin">@*android:dimen/car_padding_4</dimen> <dimen name="dialpad_info_title_text_size_max">36sp</dimen> + <dimen name="dialpad_info_margin_start">154dp</dimen> </resources> diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml index d780ac10..326bb10e 100644 --- a/res/values-pt-rPT/strings.xml +++ b/res/values-pt-rPT/strings.xml @@ -41,9 +41,9 @@ <string name="call_log_header_today" msgid="2069013936632793214">"Hoje"</string> <string name="call_log_header_yesterday" msgid="4613686845163357847">"Ontem"</string> <string name="call_log_header_older" msgid="3971634717537073179">"Mais antigas"</string> - <string name="call_logs_empty" msgid="3084720078894119049">"Não existem recentes."</string> + <string name="call_logs_empty" msgid="3084720078894119049">"Não existem contactos recentes."</string> <string name="contact_list_empty" msgid="4225504548491888138">"Não existem contactos."</string> - <string name="available_after_sync" msgid="33765918799197782">"Disponível após a sincronização. Certifique-se de que permitiu a partilha de contactos no seu telemóvel."</string> + <string name="available_after_sync" msgid="33765918799197782">"Disponíveis após a sincronização. Certifique-se de que permitiu a partilha de contactos no seu telemóvel."</string> <string name="favorites_empty" msgid="5794510741132758130">"Não existem favoritos."</string> <string name="no_favorites_added" msgid="2359050103464783907">"Ainda não adicionou nenhum favorito."</string> <string name="add_favorite_button" msgid="7914955940249767808">"Adicionar um favorito"</string> @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"Escolha um número de telefone"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"Apenas uma vez"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"Sempre"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> – Predefinição"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> – favorito"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g>, predefinição"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"Adicionar aos favoritos – <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"Favorito local – <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"Favoritos"</string> + <string name="local_favorites" msgid="4954852813126882412">"Favoritos locais"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"Nenhum número de telefone."</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"Notificação de chamada recebida"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"Chamada recebida"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"Notificação de chamada não atendida"</string> @@ -68,4 +72,6 @@ <string name="sort_order_title" msgid="975104366728292702">"Ordem dos contactos"</string> <string name="given_name_first_title" msgid="8072187841056104968">"Nome próprio"</string> <string name="family_name_first_title" msgid="7721976826282427987">"Apelido"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"Áudio da chamada de saída para:"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml index f41543ab..bef5673a 100644 --- a/res/values-pt/strings.xml +++ b/res/values-pt/strings.xml @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"Escolha um número de telefone"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"Só uma vez"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"Sempre"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> - Padrão"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> (favorito)"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g>, padrão"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"Favorito: <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"Favorito local: <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"Favoritos"</string> + <string name="local_favorites" msgid="4954852813126882412">"Favoritos locais"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"Nenhum número de telefone disponível"</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"Notificação de chamada recebida"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"Chamada recebida"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"Notificação de chamada perdida"</string> @@ -68,4 +72,6 @@ <string name="sort_order_title" msgid="975104366728292702">"Ordem dos contatos"</string> <string name="given_name_first_title" msgid="8072187841056104968">"Nome"</string> <string name="family_name_first_title" msgid="7721976826282427987">"Sobrenome"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"Saída de áudio da chamada:"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml index 064a721f..0140dcab 100644 --- a/res/values-ro/strings.xml +++ b/res/values-ro/strings.xml @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"Alegeți un număr de telefon"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"Numai o dată"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"Mereu"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> – prestabilit"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> – Preferat"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g>, prestabilit"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"Preferat – <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"Preferat local – <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"Preferate"</string> + <string name="local_favorites" msgid="4954852813126882412">"Preferat local"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"Niciun număr de telefon"</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"Notificare de apel primit"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"Apel primit"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"Notificare privind apelul nepreluat"</string> @@ -69,4 +73,6 @@ <string name="sort_order_title" msgid="975104366728292702">"Ordinea persoanelor de contact"</string> <string name="given_name_first_title" msgid="8072187841056104968">"Prenume"</string> <string name="family_name_first_title" msgid="7721976826282427987">"Nume"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"Transmiteți conținutul audio al apelurilor către:"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml index ca2763d8..301bd9b8 100644 --- a/res/values-ru/strings.xml +++ b/res/values-ru/strings.xml @@ -43,7 +43,7 @@ <string name="call_log_header_older" msgid="3971634717537073179">"Раньше"</string> <string name="call_logs_empty" msgid="3084720078894119049">"Нет недавних"</string> <string name="contact_list_empty" msgid="4225504548491888138">"Нет контактов"</string> - <string name="available_after_sync" msgid="33765918799197782">"Будет доступно после синхронизации. Убедитесь, что вы разрешили доступ к списку контактов на телефоне."</string> + <string name="available_after_sync" msgid="33765918799197782">"Данные будут доступны после синхронизации. Убедитесь, что вы разрешили доступ к списку контактов на телефоне."</string> <string name="favorites_empty" msgid="5794510741132758130">"Здесь пока ничего нет"</string> <string name="no_favorites_added" msgid="2359050103464783907">"У вас пока нет избранных контактов"</string> <string name="add_favorite_button" msgid="7914955940249767808">"Настроить быстрый набор"</string> @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"Выберите номер телефона"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"Только сейчас"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"Всегда"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> – по умолчанию"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> (в избранном)"</string> + <string name="primary_number_description" msgid="1211198148918329509">"По умолчанию: <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"Избранный контакт: <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"Избранное на этом устройстве: <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"Избранные контакты"</string> + <string name="local_favorites" msgid="4954852813126882412">"Избранные на этом устройстве"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"Номера телефонов не указаны."</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"Уведомление при входящем вызове"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"Входящий вызов"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"Уведомление о пропущенном вызове"</string> @@ -70,4 +74,6 @@ <string name="sort_order_title" msgid="975104366728292702">"Порядок контактов"</string> <string name="given_name_first_title" msgid="8072187841056104968">"Имя"</string> <string name="family_name_first_title" msgid="7721976826282427987">"По фамилии"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"Вывод звука для вызова:"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-si/strings.xml b/res/values-si/strings.xml index 211f1fe2..1a245545 100644 --- a/res/values-si/strings.xml +++ b/res/values-si/strings.xml @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"දුරකථන අංකයක් තෝරා ගන්න"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"එක් වරක්"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"සැමවිටම"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> - පෙරනිමි"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> - ප්රියතමය"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g> , පෙරනිමි"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"ප්රියතම - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"ප්රදේශයේ ජනප්රිය - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"ප්රියතම"</string> + <string name="local_favorites" msgid="4954852813126882412">"ප්රදේශයේ ජනප්රියතම ඒවා"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"දුරකථන අංක නැත"</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"එන ඇමතුම් දැනුම්දීම"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"එන ඇමතුම"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"මඟ හැරුණු ඇමතුම් දැනුම්දීම"</string> @@ -68,4 +72,6 @@ <string name="sort_order_title" msgid="975104366728292702">"සම්බන්ධතා අනුපිළිවෙළ"</string> <string name="given_name_first_title" msgid="8072187841056104968">"පළමු නම"</string> <string name="family_name_first_title" msgid="7721976826282427987">"අග නම"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"ඇමතුම් ශ්රව්ය ප්රතිදානය කරන්නේ:"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml index d9375de2..78e9edd3 100644 --- a/res/values-sk/strings.xml +++ b/res/values-sk/strings.xml @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"Vyberte telefónne číslo"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"Len raz"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"Vždy"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> – predvolené"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> – zaradiť medzi obľúbené"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g>, predvolené"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"Favorit – <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"Miestni favorit – <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"Favoriti"</string> + <string name="local_favorites" msgid="4954852813126882412">"Miestni favoriti"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"Žiadne telefónne čísla"</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"Upozornenie na prichádzajúci hovor"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"Prichádzajúci hovor"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"Upozornenie na zmeškaný hovor"</string> @@ -70,4 +74,6 @@ <string name="sort_order_title" msgid="975104366728292702">"Poradie kontaktov"</string> <string name="given_name_first_title" msgid="8072187841056104968">"Krstné meno"</string> <string name="family_name_first_title" msgid="7721976826282427987">"Priezvisko"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"Smerovanie zvuku odchádzajúceho hovoru:"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml index 76945bef..d50b936c 100644 --- a/res/values-sl/strings.xml +++ b/res/values-sl/strings.xml @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"Izberite telefonsko številko"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"Samo enkrat"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"Vedno"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> – privzeto"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> – Priljubljena"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g>, privzeta"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"Priljubljena – <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"Lokalna priljubljena – <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"Priljubljene"</string> + <string name="local_favorites" msgid="4954852813126882412">"Lokalne priljubljene"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"Ni telefonskih številk"</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"Obvestilo o dohodnem klicu"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"Dohodni klic"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"Obvestilo o neodgovorjenem klicu"</string> @@ -70,4 +74,6 @@ <string name="sort_order_title" msgid="975104366728292702">"Vrstni red stikov"</string> <string name="given_name_first_title" msgid="8072187841056104968">"Ime"</string> <string name="family_name_first_title" msgid="7721976826282427987">"Priimek"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"Izberite izhod za zvok klica:"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-sq/strings.xml b/res/values-sq/strings.xml index acebdfdf..b86b25fb 100644 --- a/res/values-sq/strings.xml +++ b/res/values-sq/strings.xml @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"Zgjidh një numër telefoni"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"Vetëm një herë"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"Gjithmonë"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> - parazgjedhja"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> - E preferuar"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g> , i parazgjedhur"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"I preferuar - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"I preferuar lokal - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"Të preferuarit"</string> + <string name="local_favorites" msgid="4954852813126882412">"Të preferuarit lokalë"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"Nuk ka numër telefoni"</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"Njoftimi i telefonatës hyrëse"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"Telefonatë hyrëse"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"Njoftimi i telefonatës së humbur"</string> @@ -68,4 +72,6 @@ <string name="sort_order_title" msgid="975104366728292702">"Renditja e kontakteve"</string> <string name="given_name_first_title" msgid="8072187841056104968">"Emri"</string> <string name="family_name_first_title" msgid="7721976826282427987">"Mbiemri"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"Dërgoje audion e telefonatës te:"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml index cb5f26c1..ab6be72e 100644 --- a/res/values-sr/strings.xml +++ b/res/values-sr/strings.xml @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"Одаберите број телефона"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"Само једном"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"Увек"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> – подразумевано"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> – Омиљено"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g>, подразумевано"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"Фаворит – <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"Локални фаворит – <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"Фаворити"</string> + <string name="local_favorites" msgid="4954852813126882412">"Локални фаворити"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"Нема бројева телефона"</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"Обавештење о долазном позиву"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"Долазни позив"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"Обавештење о пропуштеном позиву"</string> @@ -69,4 +73,6 @@ <string name="sort_order_title" msgid="975104366728292702">"Редослед контаката"</string> <string name="given_name_first_title" msgid="8072187841056104968">"Име"</string> <string name="family_name_first_title" msgid="7721976826282427987">"Презиме"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"Изаберите излаз за звук позива:"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml index 2960fe1d..98867368 100644 --- a/res/values-sv/strings.xml +++ b/res/values-sv/strings.xml @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"Välj ett telefonnummer"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"Bara en gång"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"Alltid"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> – standard"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> – markera som favorit"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g>, standardinställning"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"Favorit – <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"Lokal favorit – <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"Favoriter"</string> + <string name="local_favorites" msgid="4954852813126882412">"Lokala favoriter"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"Inga telefonnummer"</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"Avisering om inkommande samtal"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"Inkommande samtal"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"Avisering om missat samtal"</string> @@ -68,4 +72,6 @@ <string name="sort_order_title" msgid="975104366728292702">"Kontaktordning"</string> <string name="given_name_first_title" msgid="8072187841056104968">"Förnamn"</string> <string name="family_name_first_title" msgid="7721976826282427987">"Efternamn"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"Använd följande utgång för samtalsljud:"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml index ebf8dcc9..e7e6a7f9 100644 --- a/res/values-sw/strings.xml +++ b/res/values-sw/strings.xml @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"Chagua nambari ya simu"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"Mara moja tu"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"Kila wakati"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> - Chaguomsingi"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> - Kipendwa"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g>, chaguomsingi"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"Kipendwa - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"Kivutio kilicho karibu - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"Vipendwa"</string> + <string name="local_favorites" msgid="4954852813126882412">"Vivutio vilivyo karibu"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"Hakuna nambari za simu"</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"Arifa ya simu inayoingia"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"Simu inayoingia"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"Arifa ya simu ambayo hukujibu"</string> @@ -68,4 +72,6 @@ <string name="sort_order_title" msgid="975104366728292702">"Mpangilio wa anwani"</string> <string name="given_name_first_title" msgid="8072187841056104968">"Jina la kwanza"</string> <string name="family_name_first_title" msgid="7721976826282427987">"Jina la mwisho"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"Toa sauti ya simu kwenye:"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-ta/strings.xml b/res/values-ta/strings.xml index a8e122eb..21766a94 100644 --- a/res/values-ta/strings.xml +++ b/res/values-ta/strings.xml @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"மொபைல் எண்ணைத் தேர்ந்தெடுக்கவும்"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"இப்போது மட்டும்"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"எப்போதும்"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> - இயல்பு"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> - பிடித்தது"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g> , இயல்பு"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"பிடித்த எண் - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"அறிமுகமானவரில் பிடித்த எண் - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"பிடித்த எண்கள்"</string> + <string name="local_favorites" msgid="4954852813126882412">"அறிமுகமானவரில் பிடித்த எண்கள்"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"மொபைல் எண்கள் இல்லை"</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"உள்வரும் அழைப்புக்கான அறிவிப்பு"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"உள்வரும் அழைப்பு"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"தவறிய அழைப்புக்கான அறிவிப்பு"</string> @@ -68,4 +72,6 @@ <string name="sort_order_title" msgid="975104366728292702">"தொடர்புகளின் வரிசை"</string> <string name="given_name_first_title" msgid="8072187841056104968">"பெயரின் முற்பகுதி"</string> <string name="family_name_first_title" msgid="7721976826282427987">"பெயரின் பிற்பகுதி"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"அழைப்பின் ஆடியோவை இதில் வெளியீடு செய்:"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-te/strings.xml b/res/values-te/strings.xml index 022e4165..5a432b35 100644 --- a/res/values-te/strings.xml +++ b/res/values-te/strings.xml @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"ఒక ఫోన్ నంబర్ను ఎంచుకోండి"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"కేవలం ఒకసారి"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"ఎల్లప్పుడూ"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> - డిఫాల్ట్"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> - ఇష్టమైనది"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g> , డిఫాల్ట్"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"ఇష్టమైనది - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"స్థానికుల ఆదరణ పొందింది - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"ఇష్టమైనవి"</string> + <string name="local_favorites" msgid="4954852813126882412">"స్థానికంగా ఇష్టమైనవి"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"ఫోన్ నంబర్లు లేవు"</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"ఇన్కమింగ్ కాల్ నోటిఫికేషన్"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"ఇన్కమింగ్ కాల్"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"సమాధానమివ్వని కాల్ నోటిఫికేషన్"</string> @@ -68,4 +72,6 @@ <string name="sort_order_title" msgid="975104366728292702">"పరిచయాల క్రమం"</string> <string name="given_name_first_title" msgid="8072187841056104968">"మొదటి పేరు"</string> <string name="family_name_first_title" msgid="7721976826282427987">"చివరి పేరు"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"దీనికి అవుట్పుట్ కాల్ ఆడియో:"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml index 0bf0674b..52905df9 100644 --- a/res/values-th/strings.xml +++ b/res/values-th/strings.xml @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"เลือกหมายเลขโทรศัพท์"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"เฉพาะครั้งนี้"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"ทุกครั้ง"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> - ค่าเริ่มต้น"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> - รายการโปรด"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g> ค่าเริ่มต้น"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"หมายเลขโปรด - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"ยอดนิยมในท้องถิ่น - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"หมายเลขโปรด"</string> + <string name="local_favorites" msgid="4954852813126882412">"ยอดนิยมในท้องถิ่น"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"ไม่มีหมายเลขโทรศัพท์"</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"การแจ้งเตือนสายเรียกเข้า"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"สายเรียกเข้า"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"การแจ้งเตือนสายที่ไม่ได้รับ"</string> @@ -68,4 +72,6 @@ <string name="sort_order_title" msgid="975104366728292702">"ลำดับรายชื่อติดต่อ"</string> <string name="given_name_first_title" msgid="8072187841056104968">"ชื่อ"</string> <string name="family_name_first_title" msgid="7721976826282427987">"นามสกุล"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"เอาต์พุตเสียงโทรศัพท์ไปที่:"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml index a3c3f0f4..a293a9bc 100644 --- a/res/values-tl/strings.xml +++ b/res/values-tl/strings.xml @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"Pumili ng numero ng telepono"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"Isang beses lang"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"Palagi"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> - Default"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> - Paborito"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g> , default"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"Paborito - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"Lokal na paborito - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"Mga Paborito"</string> + <string name="local_favorites" msgid="4954852813126882412">"Mga lokal na paborito"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"Walang numero ng telepono"</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"Notification ng papasok na tawag"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"Papasok na tawag"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"Notification ng hindi nasagot na tawag"</string> @@ -68,4 +72,6 @@ <string name="sort_order_title" msgid="975104366728292702">"Pagkakasunud-sunod ng contact"</string> <string name="given_name_first_title" msgid="8072187841056104968">"Pangalan"</string> <string name="family_name_first_title" msgid="7721976826282427987">"Apelyido"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"Gamiting output ng audio ng tawag ang:"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml index 898af43d..a341b67b 100644 --- a/res/values-tr/strings.xml +++ b/res/values-tr/strings.xml @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"Telefon numarası seçin"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"Yalnızca bir defa"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"Her zaman"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> - Varsayılan"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> - Favori"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g> , varsayılan"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"Favori - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"Yerel favori - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"Favoriler"</string> + <string name="local_favorites" msgid="4954852813126882412">"Yerel favoriler"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"Telefon numarası yok"</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"Gelen arama bildirimi"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"Gelen arama"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"Cevapsız arama bildirimi"</string> @@ -68,4 +72,6 @@ <string name="sort_order_title" msgid="975104366728292702">"Kişi sırası"</string> <string name="given_name_first_title" msgid="8072187841056104968">"Ad"</string> <string name="family_name_first_title" msgid="7721976826282427987">"Soyadı"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"Çağrı sesini şuraya ver:"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml index aa45451b..5ca58c17 100644 --- a/res/values-uk/strings.xml +++ b/res/values-uk/strings.xml @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"Виберіть номер телефону"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"Лише цього разу"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"Завжди"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> (за умовчанням)"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> – вибране"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g> (за умовчанням)"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"Вибраний номер: <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"Вибраний місцевий номер: <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"Вибрані номери"</string> + <string name="local_favorites" msgid="4954852813126882412">"Вибрані місцеві номери"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"Немає номерів телефонів"</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"Сповіщення про вхідні виклики"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"Вхідний виклик"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"Сповіщення про пропущений виклик"</string> @@ -70,4 +74,6 @@ <string name="sort_order_title" msgid="975104366728292702">"Порядок відображення"</string> <string name="given_name_first_title" msgid="8072187841056104968">"Ім\'я"</string> <string name="family_name_first_title" msgid="7721976826282427987">"Прізвище"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"Куди виводити звук виклику:"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-ur/strings.xml b/res/values-ur/strings.xml index 71b12133..c7fd8611 100644 --- a/res/values-ur/strings.xml +++ b/res/values-ur/strings.xml @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"کوئی فون نمبر منتخب کریں"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"بس ایک بار"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"ہمیشہ"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> - ڈیفالٹ"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> - پسندیدہ"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g> ، ڈیفالٹ"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"پسندیدہ - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"مقامی پسندیدہ - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"پسندیدگیاں"</string> + <string name="local_favorites" msgid="4954852813126882412">"مقامی پسندیدگیاں"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"کوئی فون نمبر نہیں ہے"</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"موصول ہونے والی کال کی اطلاع"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"موصول ہونے والی کال"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"چھوٹی ہوئی کال کی اطلاع"</string> @@ -68,4 +72,6 @@ <string name="sort_order_title" msgid="975104366728292702">"رابطہ کی ترتیب"</string> <string name="given_name_first_title" msgid="8072187841056104968">"پہلا نام"</string> <string name="family_name_first_title" msgid="7721976826282427987">"آخری نام"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"آؤٹ پٹ کال آڈیو کے ليے:"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-uz/strings.xml b/res/values-uz/strings.xml index 8d1cec3e..2cddce75 100644 --- a/res/values-uz/strings.xml +++ b/res/values-uz/strings.xml @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"Raqam tanlang"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"Bir marta"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"Har doim"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> – Standart"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> - Saralangan"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g> , asosiy"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"Saralangan – <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"Qurilmada saralangan – <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"Saralanganlar"</string> + <string name="local_favorites" msgid="4954852813126882412">"Qurilmada saralanganlar"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"Hech qanday telefon raqami topilmadi"</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"Kiruvchi chaqiruvlar uchun bildirishnoma"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"Kiruvchi chaqiruv"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"Javobsiz chaqiruv bildirishnomasi"</string> @@ -68,4 +72,6 @@ <string name="sort_order_title" msgid="975104366728292702">"Kontaktlar tartibi"</string> <string name="given_name_first_title" msgid="8072187841056104968">"Ismi"</string> <string name="family_name_first_title" msgid="7721976826282427987">"Familiyalar asosida"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"Chaqiruv audiosi chiqishi:"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml index 80153699..3aafd77d 100644 --- a/res/values-vi/strings.xml +++ b/res/values-vi/strings.xml @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"Chọn một số điện thoại"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"Chỉ một lần"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"Luôn bật"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> - Mặc định"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> – Số điện thoại yêu thích"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g> , mặc định"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"Số điện thoại yêu thích - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"Số của điểm đến ưa thích - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"Các số điện thoại yêu thích"</string> + <string name="local_favorites" msgid="4954852813126882412">"Số của các điểm đến ưa thích"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"Không có số điện thoại"</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"Thông báo khi có cuộc gọi đến"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"Cuộc gọi đến"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"Thông báo cuộc gọi nhỡ"</string> @@ -68,4 +72,6 @@ <string name="sort_order_title" msgid="975104366728292702">"Thứ tự danh bạ"</string> <string name="given_name_first_title" msgid="8072187841056104968">"Tên"</string> <string name="family_name_first_title" msgid="7721976826282427987">"Họ"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"Chuyển âm thanh cuộc gọi sang:"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml index d497a6a6..facd8621 100644 --- a/res/values-zh-rCN/strings.xml +++ b/res/values-zh-rCN/strings.xml @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"选择电话号码"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"仅此一次"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"一律允许"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> - 默认"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> - 收藏"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g>,默认号码"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"常用号码 — <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"本地常用号码 — <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"常用号码"</string> + <string name="local_favorites" msgid="4954852813126882412">"本地常用号码"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"无电话号码"</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"来电通知"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"来电"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"未接电话通知"</string> @@ -68,4 +72,6 @@ <string name="sort_order_title" msgid="975104366728292702">"联系人顺序"</string> <string name="given_name_first_title" msgid="8072187841056104968">"名字"</string> <string name="family_name_first_title" msgid="7721976826282427987">"姓氏"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"将通话音频输出到:"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml index 6b4f72dd..a46e6eb1 100644 --- a/res/values-zh-rHK/strings.xml +++ b/res/values-zh-rHK/strings.xml @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"請選擇電話號碼"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"只此一次"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"一律"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> - 預設"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> - 加入收藏"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g>,預設"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"常用號碼 - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"本地常用號碼 - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"常用號碼"</string> + <string name="local_favorites" msgid="4954852813126882412">"本地常用號碼"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"沒有電話號碼"</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"來電通知"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"來電"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"未接來電通知"</string> @@ -68,4 +72,6 @@ <string name="sort_order_title" msgid="975104366728292702">"聯絡人排序"</string> <string name="given_name_first_title" msgid="8072187841056104968">"名字"</string> <string name="family_name_first_title" msgid="7721976826282427987">"姓氏"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"將通話音訊輸出至:"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml index 3f8c2282..52ecb307 100644 --- a/res/values-zh-rTW/strings.xml +++ b/res/values-zh-rTW/strings.xml @@ -35,7 +35,7 @@ <string name="audio_route_handset" msgid="9133081623895172144">"手機聽筒"</string> <string name="dial_a_number" msgid="7432322177412387160">"撥號"</string> <string name="favorites_title" msgid="4767723901530488145">"常用聯絡人"</string> - <string name="call_history_title" msgid="7997887846276371553">"近期通話記錄"</string> + <string name="call_history_title" msgid="7997887846276371553">"近期通話"</string> <string name="contacts_title" msgid="9201954388634537346">"聯絡人"</string> <string name="dialpad_title" msgid="3746259645005208554">"撥號鍵盤"</string> <string name="call_log_header_today" msgid="2069013936632793214">"今天"</string> @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"選擇電話號碼"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"僅限一次"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"一律允許"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> - 預設"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> - 加入收藏"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g>,預設"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"常用聯絡人 - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"本機常用聯絡人 - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"常用聯絡人"</string> + <string name="local_favorites" msgid="4954852813126882412">"本機常用聯絡人"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"沒有可用的電話號碼"</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"來電通知"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"來電"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"未接來電通知"</string> @@ -68,4 +72,6 @@ <string name="sort_order_title" msgid="975104366728292702">"聯絡人順序"</string> <string name="given_name_first_title" msgid="8072187841056104968">"名字"</string> <string name="family_name_first_title" msgid="7721976826282427987">"姓氏"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"將通話音訊輸出至:"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml index 29c4ad62..c1f09135 100644 --- a/res/values-zu/strings.xml +++ b/res/values-zu/strings.xml @@ -53,8 +53,12 @@ <string name="select_number_dialog_title" msgid="5770700626013782205">"Khetha inombolo yefoni"</string> <string name="select_number_dialog_just_once_button" msgid="1814381354393374660">"Kanye nje"</string> <string name="select_number_dialog_always_button" msgid="6862338683635863764">"Njalo"</string> - <string name="primary_number_description" msgid="7428950659304219592">"<xliff:g id="LABEL">%1$s</xliff:g> - Okuzenzakalelayo"</string> - <string name="favorite_number_description" msgid="6490014728613395653">"<xliff:g id="LABEL">%1$s</xliff:g> - Intandokazi"</string> + <string name="primary_number_description" msgid="1211198148918329509">"<xliff:g id="LABEL">%1$s</xliff:g> , okuzenzakalelayo"</string> + <string name="favorite_number_description" msgid="8175362259853807385">"Intandokazi - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="local_favorite_number_description" msgid="3723823871011997275">"Intandokazi yasendaweni - <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <string name="phone_favorites" msgid="2257447553252980575">"Izintandokazi"</string> + <string name="local_favorites" msgid="4954852813126882412">"Izintandokazi zasendaweni"</string> + <string name="no_phone_numbers" msgid="8738691115921148445">"Azikho izinombolo zefoni"</string> <string name="in_call_notification_channel_name" msgid="1978093630512401778">"Isaziso sekholi engenayo"</string> <string name="notification_incoming_call" msgid="1722904631804432389">"Ikholi engenayo"</string> <string name="missed_call_notification_channel_name" msgid="1135686963409691772">"Isaziso sekholi ephuthiwe"</string> @@ -68,4 +72,6 @@ <string name="sort_order_title" msgid="975104366728292702">"I-oda loxhumana naye"</string> <string name="given_name_first_title" msgid="8072187841056104968">"Igama"</string> <string name="family_name_first_title" msgid="7721976826282427987">"Isibongo"</string> + <string name="audio_route_dialog_title" msgid="2904553846970171054">"Khiphela umsindo wekholi kulokhu:"</string> + <string name="audio_route_dialog_subtitle" msgid="8780526104805330121"></string> </resources> diff --git a/res/values/colors.xml b/res/values/colors.xml index f1aa7b0f..49d2e522 100644 --- a/res/values/colors.xml +++ b/res/values/colors.xml @@ -18,13 +18,11 @@ <color name="phone_call">@*android:color/car_green_700</color> <color name="phone_end_call">@*android:color/car_red_500a</color> <color name="onhold_call_background">@*android:color/car_grey_868</color> + <color name="audio_output_accent">@*android:color/car_accent</color> <!-- Dialpad page --> <color name="call_button_outline">@*android:color/car_green_500</color> - <!--Contact details--> - <color name="contact_details_icon_tint">@color/primary_icon_color</color> - <color name="car_key2">@color/car_key2_dark</color> <color name="car_key2_light">@*android:color/car_grey_400</color> <color name="car_key2_dark">@*android:color/car_grey_700</color> diff --git a/res/values/configs.xml b/res/values/configs.xml index 03bb96ed..03e7a89f 100644 --- a/res/values/configs.xml +++ b/res/values/configs.xml @@ -24,8 +24,6 @@ <item name="config_background_image_alpha" format="float" type="dimen">1.0</item> <item name="config_background_image_error_alpha" format="float" type="dimen">1.0</item> - <bool name="config_show_detailed_user_profile_on_dialpad">false</bool> - <!-- A config determines whether to show divider and callog_action_button for callog items that are not stored as contacts. "true" will show divider and button as disable state and "false" will make divider and button invisible for non contacts. --> @@ -48,4 +46,12 @@ <!-- Config gate the full screen incall ui --> <bool name="config_show_fullscreen_incall_ui">true</bool> + + <!-- A config determines whether to show type down list on Dialpad --> + <bool name="config_show_type_down_list_on_dialpad">true</bool> + <!-- A config determines whether to show user profile for input number only when type down is + not showing. This config works only when config_show_type_down_list_on_dialpad is false. --> + <bool name="config_show_detailed_user_profile_on_dialpad">false</bool> + <!-- A percent determines the size of the area for type down list on Dialpad in portrait mode. --> + <item name="config_type_down_guideline_percent" format="float" type="dimen">0.3</item> </resources> diff --git a/res/values/dimens.xml b/res/values/dimens.xml index 010fca41..16d2ce11 100644 --- a/res/values/dimens.xml +++ b/res/values/dimens.xml @@ -17,13 +17,10 @@ <!-- Dialer --> <dimen name="dialer_card_elevation">2dp</dimen> - <!-- Audio route dimentions --> - <dimen name="audio_route_height">@dimen/control_bar_height</dimen> - <dimen name="audio_route_content_padding">@dimen/list_item_padding</dimen> - <dimen name="audio_route_icon_size">@dimen/primary_icon_size</dimen> + <!-- TODO: UNUSED! REMOVE THIS. b/149125789--> <dimen name="audio_route_constraint_guide_begin">@dimen/list_item_guideline</dimen> - <!-- Call list dimentions --> + <!-- Call list dimensions --> <dimen name="call_history_item_height">@dimen/list_item_height</dimen> <dimen name="call_history_item_padding">@dimen/list_item_padding</dimen> <dimen name="call_history_guideline_begin">@dimen/list_item_guideline_begin</dimen> @@ -88,6 +85,9 @@ <dimen name="dialpad_info_title_text_size_min">24sp</dimen> <dimen name="dialpad_contact_avatar_size">64dp</dimen> <dimen name="dialpad_contact_label_margin">12dp</dimen> + <dimen name="dialpad_info_margin_end">112dp</dimen> + <dimen name="dialpad_info_margin_start">154dp</dimen> + <dimen name="type_down_list_item_height">@dimen/control_bar_height</dimen> <!-- Keypad dimensions --> <dimen name="keypad_minimum_size">@dimen/touch_target_size</dimen> @@ -99,10 +99,6 @@ <dimen name="favorite_card_space_vertical">@*android:dimen/car_padding_2</dimen> <dimen name="favorites_avatar_margin_bottom">@*android:dimen/car_padding_3</dimen> - <!-- Add faovirte flow dimensions --> - <dimen name="add_favorite_number_list_height">@dimen/list_item_height</dimen> - <dimen name="add_favorite_number_list_padding">@dimen/list_item_padding</dimen> - <dimen name="call_fab_elevation">8dp</dimen> <dimen name="bksp_button_width">@dimen/touch_target_size</dimen> @@ -134,6 +130,7 @@ <dimen name="list_item_padding">@*android:dimen/car_keyline_1</dimen> <dimen name="list_divider_inset">@*android:dimen/car_keyline_1</dimen> <dimen name="list_divider_height">@*android:dimen/car_list_divider_height</dimen> + <dimen name="horizontal_divider_inset">@*android:dimen/car_padding_2</dimen> <dimen name="vertical_divider_inset">@*android:dimen/car_padding_2</dimen> <dimen name="vertical_divider_width">2dp</dimen> <dimen name="primary_icon_size">@*android:dimen/car_primary_icon_size</dimen> @@ -145,7 +142,6 @@ <dimen name="touch_target_width">156dp</dimen> <dimen name="subheader_list_height">76dp</dimen> <dimen name="control_bar_height">96dp</dimen> - <dimen name="phone_number_radio_list_padding">@*android:dimen/car_padding_2</dimen> <!-- Loading status view dimensions --> <dimen name="loading_info_icon_size">56dp</dimen> diff --git a/res/values/strings.xml b/res/values/strings.xml index 0418d13f..a890cd17 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -141,14 +141,27 @@ <!-- Description for the default phone number of the contact [CHAR LIMIT=30] --> <string name="primary_number_description"> <xliff:g id="label" example="Mobile">%1$s</xliff:g> - " - Default" + ", default" </string> - <!-- Description for the favorite phone number in add to favorite flow [CHAR LIMIT=30] --> + <!-- Description for the phone favorite number in the add-to-favorite flow [CHAR LIMIT=30] --> <string name="favorite_number_description"> + "Favorite - " <xliff:g id="label" example="Mobile">%1$s</xliff:g> - " - Favorite" </string> + <!-- Description for the local favorite number in the add-to-favorite flow and the contact details page [CHAR LIMIT=30] --> + <string name="local_favorite_number_description"> + "Local favorite - " + <xliff:g id="label" example="Mobile">%1$s</xliff:g> + </string> + + <!-- Header for phone favorite numbers [CHAR LIMIT=30] --> + <string name="phone_favorites">Favorites</string> + <!-- Header for local favorite numbers [CHAR LIMIT=30] --> + <string name="local_favorites">Local favorites</string> + + <!-- Message in the add-to-favorite flow that no phone number available for this contact [CHAR_LIMIT=50] --> + <string name="no_phone_numbers">No phone numbers</string> <!-- Heads Up Notification --> <!-- Name of incoming call notification channel in app info [CHAR LIMIT=50] --> @@ -192,4 +205,8 @@ <string name="given_name_first_title">First name</string> <!-- Title of family name [CHAR LIMIT=40]--> <string name="family_name_first_title">Last name</string> + + <!-- Audio route selection dialog. Placeholder resources for overriding --> + <string name="audio_route_dialog_title">Output call audio to:</string> + <string name="audio_route_dialog_subtitle"></string> </resources> diff --git a/res/values/styles.xml b/res/values/styles.xml index af016275..a7c24a36 100644 --- a/res/values/styles.xml +++ b/res/values/styles.xml @@ -106,7 +106,9 @@ </style> <!-- Contact results --> - <style name="TextAppearance.ContactResultTitle" parent="TextAppearance.Body1"/> + <style name="TextAppearance.ContactResultTitle" parent="TextAppearance.Body1"> + <item name="android:textColor">@color/primary_text_selector</item> + </style> <!-- Add to favorite flow dialog --> <style name="TextAppearance.AddFavoriteNumberTitle" parent="TextAppearance.Body1"> diff --git a/res/values/themes.xml b/res/values/themes.xml index bae1bc3d..11152f4b 100644 --- a/res/values/themes.xml +++ b/res/values/themes.xml @@ -18,6 +18,7 @@ limitations under the License. <style name="Theme.Dialer" parent="Theme.CarUi"> <item name="android:listDivider">@drawable/list_divider</item> <item name="android:buttonStyle">@style/Widget.Dialer.Button</item> + <item name="android:textDirection">locale</item> </style> <style name="Theme.Dialer.Telecom"> diff --git a/src/com/android/car/dialer/Constants.java b/src/com/android/car/dialer/Constants.java index fc86af8f..1011f285 100644 --- a/src/com/android/car/dialer/Constants.java +++ b/src/com/android/car/dialer/Constants.java @@ -34,6 +34,8 @@ public final class Constants { "com.android.car.dialer.EXTRA_ACTION_READ_MISSED"; /** Intent extra flag to show incoming call. */ public static final String EXTRA_SHOW_INCOMING_CALL = "show_incoming_call"; + + public static final String EXTRA_SHOW_DIALPAD = "show_dialpad"; } /** Constants used by {@link androidx.core.app.JobIntentService}s. */ @@ -41,6 +43,6 @@ public final class Constants { public static final int NOTIFICATION_SERVICE = 2019; } - /**See {@link android.content.res.Resources#getIdentifier(String, String, String)}*/ + /** See {@link android.content.res.Resources#getIdentifier(String, String, String)} */ public static int INVALID_RES_ID = 0; } diff --git a/src/com/android/car/dialer/notification/InCallNotificationController.java b/src/com/android/car/dialer/notification/InCallNotificationController.java index e68b35b7..624f104e 100644 --- a/src/com/android/car/dialer/notification/InCallNotificationController.java +++ b/src/com/android/car/dialer/notification/InCallNotificationController.java @@ -171,13 +171,13 @@ public final class InCallNotificationController { private PendingIntent getFullscreenIntent(Call call) { Intent intent = getIntent(NotificationService.ACTION_SHOW_FULLSCREEN_UI, call); - return PendingIntent.getBroadcast(mContext, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); + return PendingIntent.getService(mContext, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); } private Notification.Action getAction(Call call, @StringRes int actionText, String intentAction) { CharSequence text = mContext.getString(actionText); - PendingIntent intent = PendingIntent.getBroadcast( + PendingIntent intent = PendingIntent.getService( mContext, 0, getIntent(intentAction, call), @@ -186,7 +186,7 @@ public final class InCallNotificationController { } private Intent getIntent(String action, Call call) { - Intent intent = new Intent(action, null, mContext, NotificationReceiver.class); + Intent intent = new Intent(action, null, mContext, NotificationService.class); intent.putExtra(NotificationService.EXTRA_CALL_ID, call.getDetails().getTelecomCallId()); return intent; } diff --git a/src/com/android/car/dialer/notification/MissedCallNotificationController.java b/src/com/android/car/dialer/notification/MissedCallNotificationController.java index 5b0fd864..3de1e600 100644 --- a/src/com/android/car/dialer/notification/MissedCallNotificationController.java +++ b/src/com/android/car/dialer/notification/MissedCallNotificationController.java @@ -195,8 +195,8 @@ public final class MissedCallNotificationController { private PendingIntent getDeleteIntent() { Intent intent = new Intent(NotificationService.ACTION_READ_ALL_MISSED, null, mContext, - NotificationReceiver.class); - PendingIntent pendingIntent = PendingIntent.getBroadcast( + NotificationService.class); + PendingIntent pendingIntent = PendingIntent.getService( mContext, 0, intent, @@ -207,7 +207,7 @@ public final class MissedCallNotificationController { private Notification.Action getAction(String phoneNumberString, @StringRes int actionText, String intentAction) { CharSequence text = mContext.getString(actionText); - PendingIntent intent = PendingIntent.getBroadcast( + PendingIntent intent = PendingIntent.getService( mContext, 0, getIntent(intentAction, phoneNumberString), @@ -216,7 +216,7 @@ public final class MissedCallNotificationController { } private Intent getIntent(String action, String phoneNumberString) { - Intent intent = new Intent(action, null, mContext, NotificationReceiver.class); + Intent intent = new Intent(action, null, mContext, NotificationService.class); intent.putExtra(NotificationService.EXTRA_CALL_ID, phoneNumberString); return intent; } diff --git a/src/com/android/car/dialer/notification/NotificationService.java b/src/com/android/car/dialer/notification/NotificationService.java index f7b8a01c..54abe158 100644 --- a/src/com/android/car/dialer/notification/NotificationService.java +++ b/src/com/android/car/dialer/notification/NotificationService.java @@ -16,13 +16,13 @@ package com.android.car.dialer.notification; +import android.app.Service; import android.content.Context; import android.content.Intent; +import android.os.IBinder; import android.telecom.Call; import android.text.TextUtils; -import androidx.core.app.JobIntentService; - import com.android.car.dialer.Constants; import com.android.car.dialer.telecom.UiCallManager; import com.android.car.dialer.ui.activecall.InCallActivity; @@ -31,11 +31,11 @@ import com.android.car.telephony.common.TelecomUtils; import java.util.List; /** - * A {@link JobIntentService} that is used to handle actions from notifications to: + * A {@link Service} that is used to handle actions from notifications to: * <ul><li>answer or inject an incoming call. * <li>call back or message to a missed call. */ -public class NotificationService extends JobIntentService { +public class NotificationService extends Service { static final String ACTION_ANSWER_CALL = "CD.ACTION_ANSWER_CALL"; static final String ACTION_DECLINE_CALL = "CD.ACTION_DECLINE_CALL"; static final String ACTION_SHOW_FULLSCREEN_UI = "CD.ACTION_SHOW_FULLSCREEN_UI"; @@ -44,21 +44,20 @@ public class NotificationService extends JobIntentService { static final String ACTION_READ_ALL_MISSED = "CD.ACTION_READ_ALL_MISSED"; static final String EXTRA_CALL_ID = "CD.EXTRA_CALL_ID"; + @Override + public IBinder onBind(Intent intent) { + return null; + } + /** Create an intent to handle reading all missed call action and schedule for executing. */ public static void readAllMissedCall(Context context) { - Intent readAllMissedCallIntent = new Intent(context, NotificationReceiver.class); + Intent readAllMissedCallIntent = new Intent(context, NotificationService.class); readAllMissedCallIntent.setAction(ACTION_READ_ALL_MISSED); - enqueueWork(context, readAllMissedCallIntent); - } - - /** Enqueue the intent. */ - static void enqueueWork(Context context, Intent intent) { - enqueueWork( - context, NotificationService.class, Constants.JobIds.NOTIFICATION_SERVICE, intent); + context.startService(readAllMissedCallIntent); } @Override - protected void onHandleWork(Intent intent) { + public int onStartCommand(Intent intent, int flags, int startId) { String action = intent.getAction(); String callId = intent.getStringExtra(EXTRA_CALL_ID); switch (action) { @@ -92,6 +91,8 @@ public class NotificationService extends JobIntentService { default: break; } + + return START_NOT_STICKY; } private void answerCall(String callId) { diff --git a/src/com/android/car/dialer/telecom/InCallRouter.java b/src/com/android/car/dialer/telecom/InCallRouter.java index 5e0376d5..4ba91e4b 100644 --- a/src/com/android/car/dialer/telecom/InCallRouter.java +++ b/src/com/android/car/dialer/telecom/InCallRouter.java @@ -22,6 +22,7 @@ import android.telecom.Call; import androidx.annotation.MainThread; +import com.android.car.dialer.Constants; import com.android.car.dialer.R; import com.android.car.dialer.log.L; import com.android.car.dialer.notification.InCallNotificationController; @@ -83,8 +84,10 @@ class InCallRouter { int state = call.getState(); if (state == Call.STATE_RINGING) { routeToNotification(call); - } else { - routeToInCallPage(call); + } else if (state != Call.STATE_DISCONNECTED) { + // Don't launch the in call page if state is disconnected. + // Otherwise, the InCallActivity finishes right after onCreate() and flashes. + routeToInCallPage(false); } } @@ -134,7 +137,11 @@ class InCallRouter { @Override public void onStateChanged(Call call, int state) { L.d(TAG, "Ringing call state changed to %d", state); - routeToInCallPage(call); + if (call.getState() != Call.STATE_DISCONNECTED) { + // Don't launch the in call page if state is disconnected. Otherwise, the + // InCallActivity finishes right after onCreate() and flashes. + routeToInCallPage(false); + } mInCallNotificationController.cancelInCallNotification(call); call.unregisterCallback(this); } @@ -144,16 +151,14 @@ class InCallRouter { /** * Launches {@link InCallActivity} and presents the on going call in the in call page. */ - private void routeToInCallPage(Call call) { + void routeToInCallPage(boolean showDialpad) { // It has been configured not to show the fullscreen incall ui. if (!mShowFullscreenIncallUi) { return; } - // Don't launch the in call page if state is disconnected. Otherwise, the InCallActivity - // finishes right after onCreate() and flashes. - if (call.getState() != Call.STATE_DISCONNECTED) { - Intent launchIntent = new Intent(mContext, InCallActivity.class); - mContext.startActivity(launchIntent); - } + + Intent launchIntent = new Intent(mContext, InCallActivity.class); + launchIntent.putExtra(Constants.Intents.EXTRA_SHOW_INCOMING_CALL, showDialpad); + mContext.startActivity(launchIntent); } } diff --git a/src/com/android/car/dialer/telecom/InCallServiceImpl.java b/src/com/android/car/dialer/telecom/InCallServiceImpl.java index a5faaf6a..d60c9d19 100644 --- a/src/com/android/car/dialer/telecom/InCallServiceImpl.java +++ b/src/com/android/car/dialer/telecom/InCallServiceImpl.java @@ -37,7 +37,8 @@ public class InCallServiceImpl extends InCallService { /** An action which indicates a bind is from local component. */ public static final String ACTION_LOCAL_BIND = "local_bind"; - private CopyOnWriteArrayList<Callback> mCallbacks = new CopyOnWriteArrayList<>(); + private CopyOnWriteArrayList<CallAudioStateCallback> mCallAudioStateCallbacks = + new CopyOnWriteArrayList<>(); private InCallRouter mInCallRouter; @@ -59,6 +60,14 @@ public class InCallServiceImpl extends InCallService { boolean onTelecomCallRemoved(Call telecomCall); } + /** Listens to call audio state changes. Callbacks will be called on the main thread. */ + public interface CallAudioStateCallback { + /** + * Called when the call audio state has changed. + */ + void onCallAudioStateChanged(CallAudioState callAudioState); + } + @Override public void onCreate() { super.onCreate(); @@ -76,21 +85,12 @@ public class InCallServiceImpl extends InCallService { @Override public void onCallAdded(Call telecomCall) { L.d(TAG, "onCallAdded: %s", telecomCall); - - for (Callback callback : mCallbacks) { - callback.onTelecomCallAdded(telecomCall); - } - mInCallRouter.onCallAdded(telecomCall); } @Override public void onCallRemoved(Call telecomCall) { L.d(TAG, "onCallRemoved: %s", telecomCall); - for (Callback callback : mCallbacks) { - callback.onTelecomCallRemoved(telecomCall); - } - mInCallRouter.onCallRemoved(telecomCall); } @@ -113,17 +113,23 @@ public class InCallServiceImpl extends InCallService { @Override public void onCallAudioStateChanged(CallAudioState audioState) { - for (Callback callback : mCallbacks) { + for (CallAudioStateCallback callback : mCallAudioStateCallbacks) { callback.onCallAudioStateChanged(audioState); } } - public void registerCallback(Callback callback) { - mCallbacks.add(callback); + @Override + public void onBringToForeground(boolean showDialpad) { + L.d(TAG, "onBringToForeground: %s", showDialpad); + mInCallRouter.routeToInCallPage(showDialpad); + } + + public void addCallAudioStateChangedCallback(CallAudioStateCallback callback) { + mCallAudioStateCallbacks.add(callback); } - public void unregisterCallback(Callback callback) { - mCallbacks.remove(callback); + public void removeCallAudioStateChangedCallback(CallAudioStateCallback callback) { + mCallAudioStateCallbacks.remove(callback); } public void addActiveCallListChangedCallback(ActiveCallListChangedCallback callback) { @@ -134,15 +140,6 @@ public class InCallServiceImpl extends InCallService { mInCallRouter.unregisterActiveCallHandler(callback); } - @Deprecated - interface Callback { - void onTelecomCallAdded(Call telecomCall); - - void onTelecomCallRemoved(Call telecomCall); - - void onCallAudioStateChanged(CallAudioState audioState); - } - /** * Local binder only available for Car Dialer package. */ diff --git a/src/com/android/car/dialer/telecom/UiCallManager.java b/src/com/android/car/dialer/telecom/UiCallManager.java index 956121cd..6822c2d5 100644 --- a/src/com/android/car/dialer/telecom/UiCallManager.java +++ b/src/com/android/car/dialer/telecom/UiCallManager.java @@ -42,11 +42,6 @@ import com.android.car.telephony.common.TelecomUtils; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.telephony.ITelephony; -import com.google.i18n.phonenumbers.PhoneNumberUtil; -import com.google.i18n.phonenumbers.PhoneNumberUtil.PhoneNumberType; -import com.google.i18n.phonenumbers.PhoneNumberUtil.ValidationResult; -import com.google.i18n.phonenumbers.Phonenumber; - import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -307,24 +302,13 @@ public class UiCallManager { } /** - * Runs basic validation check of a phone number, to verify it is the correct length - * in an internationalized way. Further validation on whether the number actually exists - * is left for the phone carrier. + * Runs basic validation check of a phone number, to verify it is not empty. */ private boolean isValidNumber(String number) { - Phonenumber.PhoneNumber phoneNumber = TelecomUtils.createI18nPhoneNumber(mContext, - number); - if (phoneNumber != null) { - for (PhoneNumberType type : PhoneNumberType.values()) { - ValidationResult result = - PhoneNumberUtil.getInstance().isPossibleNumberForTypeWithReason(phoneNumber, - type); - if (result != ValidationResult.TOO_SHORT && result != ValidationResult.TOO_LONG) { - return true; - } - } + if (TextUtils.isEmpty(number)) { + return false; } - return false; + return true; } public void callVoicemail() { diff --git a/src/com/android/car/dialer/ui/TelecomActivity.java b/src/com/android/car/dialer/ui/TelecomActivity.java index 121aeb2b..50924500 100644 --- a/src/com/android/car/dialer/ui/TelecomActivity.java +++ b/src/com/android/car/dialer/ui/TelecomActivity.java @@ -17,6 +17,7 @@ package com.android.car.dialer.ui; import android.app.SearchManager; +import android.bluetooth.BluetoothDevice; import android.content.Intent; import android.content.SharedPreferences; import android.graphics.drawable.Drawable; @@ -30,7 +31,6 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentActivity; -import androidx.fragment.app.FragmentManager; import androidx.lifecycle.LiveData; import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.ViewModelProviders; @@ -69,8 +69,7 @@ import java.util.List; * <p>Based on call and connectivity status, it will choose the right page to display. */ public class TelecomActivity extends FragmentActivity implements - DialerBaseFragment.DialerFragmentParent, FragmentManager.OnBackStackChangedListener, - Toolbar.OnHeightChangedListener { + DialerBaseFragment.DialerFragmentParent { private static final String TAG = "CD.TelecomActivity"; private LiveData<String> mBluetoothErrorMsgLiveData; private LiveData<Integer> mDialerAppStateLiveData; @@ -78,6 +77,7 @@ public class TelecomActivity extends FragmentActivity implements // View objects for this activity. private TelecomPageTab.Factory mTabFactory; private Toolbar mCarUiToolbar; + private BluetoothDevice mBluetoothDevice; @Override protected void onCreate(Bundle savedInstanceState) { @@ -87,7 +87,6 @@ public class TelecomActivity extends FragmentActivity implements setContentView(R.layout.telecom_activity); mCarUiToolbar = findViewById(R.id.car_ui_toolbar); - mCarUiToolbar.registerToolbarHeightChangeListener(this); setupTabLayout(); @@ -99,6 +98,7 @@ public class TelecomActivity extends FragmentActivity implements dialerAppState -> updateCurrentFragment(dialerAppState)); MutableLiveData<Integer> toolbarTitleMode = viewModel.getToolbarTitleMode(); toolbarTitleMode.setValue(Themes.getAttrInteger(this, R.attr.toolbarTitleMode)); + viewModel.getRefreshTabsLiveData().observe(this, this::refreshTabs); InCallViewModel inCallViewModel = ViewModelProviders.of(this).get(InCallViewModel.class); mOngoingCallListLiveData = inCallViewModel.getOngoingCallList(); @@ -108,25 +108,11 @@ public class TelecomActivity extends FragmentActivity implements handleIntent(); } - @Override - public void onStart() { - getSupportFragmentManager().addOnBackStackChangedListener(this); - onBackStackChanged(); - super.onStart(); - L.d(TAG, "onStart"); - } - - @Override - public void onStop() { - super.onStop(); - L.d(TAG, "onStop"); - getSupportFragmentManager().removeOnBackStackChangedListener(this); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - mCarUiToolbar.unregisterToolbarHeightChangeListener(this); + private void refreshTabs(boolean refreshTabs) { + L.v(TAG, "hfp connected device list Changes."); + if (refreshTabs) { + setupTabLayout(); + } } @Override @@ -269,6 +255,7 @@ public class TelecomActivity extends FragmentActivity implements private void setupTabLayout() { boolean wasContentFragmentRestored = false; mTabFactory = new TelecomPageTab.Factory(this, getSupportFragmentManager()); + mCarUiToolbar.clearAllTabs(); for (int i = 0; i < mTabFactory.getTabCount(); i++) { TelecomPageTab tab = mTabFactory.createTab(getBaseContext(), i); mCarUiToolbar.addTab(tab); @@ -356,25 +343,6 @@ public class TelecomActivity extends FragmentActivity implements } @Override - public void onBackStackChanged() { - L.d(TAG, "onBackStackChanged"); - Fragment topFragment = getSupportFragmentManager().findFragmentById( - R.id.content_fragment_container); - if (topFragment instanceof DialerBaseFragment) { - ((DialerBaseFragment) topFragment).setupToolbar(mCarUiToolbar); - } - } - - @Override - public void onHeightChanged(int height) { - Fragment topFragment = getSupportFragmentManager().findFragmentById( - R.id.content_fragment_container); - if (topFragment instanceof DialerBaseFragment) { - ((DialerBaseFragment) topFragment).setToolbarHeight(height); - } - } - - @Override public boolean onNavigateUp() { if (isBackNavigationAvailable()) { onBackPressed(); diff --git a/src/com/android/car/dialer/ui/TelecomActivityViewModel.java b/src/com/android/car/dialer/ui/TelecomActivityViewModel.java index e28c4ce0..cd16402b 100644 --- a/src/com/android/car/dialer/ui/TelecomActivityViewModel.java +++ b/src/com/android/car/dialer/ui/TelecomActivityViewModel.java @@ -27,11 +27,13 @@ import androidx.lifecycle.AndroidViewModel; import androidx.lifecycle.LiveData; import androidx.lifecycle.MediatorLiveData; import androidx.lifecycle.MutableLiveData; +import androidx.lifecycle.Transformations; import com.android.car.dialer.R; import com.android.car.dialer.livedata.BluetoothHfpStateLiveData; import com.android.car.dialer.livedata.BluetoothPairListLiveData; import com.android.car.dialer.livedata.BluetoothStateLiveData; +import com.android.car.dialer.livedata.HfpDeviceListLiveData; import com.android.car.dialer.log.L; import com.android.car.dialer.telecom.UiBluetoothMonitor; @@ -52,10 +54,13 @@ public class TelecomActivityViewModel extends AndroidViewModel { private final Context mApplicationContext; private final LiveData<String> mErrorStringLiveData; private final MutableLiveData<Integer> mDialerAppStateLiveData; + private final LiveData<Boolean> mRefreshTabsLiveData; private final ToolbarTitleLiveData mToolbarTitleLiveData; private final MutableLiveData<Integer> mToolbarTitleMode; + private BluetoothDevice mBluetoothDevice; + /** * App state indicates if bluetooth is connected or it should just show the content fragments. */ @@ -90,6 +95,22 @@ public class TelecomActivityViewModel extends AndroidViewModel { } mDialerAppStateLiveData = new DialerAppStateLiveData(mErrorStringLiveData); + + HfpDeviceListLiveData hfpDeviceListLiveData = new HfpDeviceListLiveData(getApplication()); + mRefreshTabsLiveData = Transformations.map(hfpDeviceListLiveData, (hfpDeviceList) -> { + if (hfpDeviceList != null && !hfpDeviceList.isEmpty()) { + if (!hfpDeviceList.contains(mBluetoothDevice)) { + mBluetoothDevice = hfpDeviceList.get(0); + return true; + } + } else { + if (mBluetoothDevice != null) { + mBluetoothDevice = null; + return true; + } + } + return false; + }); } /** @@ -108,6 +129,9 @@ public class TelecomActivityViewModel extends AndroidViewModel { return mToolbarTitleMode; } + /** + * Returns the state of Dialer App. + */ public MutableLiveData<Integer> getDialerAppState() { return mDialerAppStateLiveData; } @@ -120,6 +144,13 @@ public class TelecomActivityViewModel extends AndroidViewModel { return mErrorStringLiveData; } + /** + * Returns the live data which monitors whether to refresh Dialer. + */ + public LiveData<Boolean> getRefreshTabsLiveData() { + return mRefreshTabsLiveData; + } + private static class DialerAppStateLiveData extends MediatorLiveData<Integer> { private final LiveData<String> mErrorStringLiveData; @@ -203,16 +234,16 @@ public class TelecomActivityViewModel extends AndroidViewModel { isBluetoothEnabled, hasPairedDevices, isHfpConnected); - if (!isBluetoothEnabled) { + if (isHfpConnected) { + if (!NO_BT_ERROR.equals(getValue())) { + setValue(NO_BT_ERROR); + } + } else if (!isBluetoothEnabled) { setValue(mContext.getString(R.string.bluetooth_disabled)); } else if (!hasPairedDevices) { setValue(mContext.getString(R.string.bluetooth_unpaired)); - } else if (!isHfpConnected) { - setValue(mContext.getString(R.string.no_hfp)); } else { - if (!NO_BT_ERROR.equals(getValue())) { - setValue(NO_BT_ERROR); - } + setValue(mContext.getString(R.string.no_hfp)); } } diff --git a/src/com/android/car/dialer/ui/activecall/InCallActivity.java b/src/com/android/car/dialer/ui/activecall/InCallActivity.java index 015dc085..af438a18 100644 --- a/src/com/android/car/dialer/ui/activecall/InCallActivity.java +++ b/src/com/android/car/dialer/ui/activecall/InCallActivity.java @@ -41,6 +41,7 @@ public class InCallActivity extends FragmentActivity { private Fragment mOngoingCallFragment; private Fragment mIncomingCallFragment; + private InCallViewModel mInCallViewModel; private MutableLiveData<Boolean> mShowIncomingCall; private LiveData<Call> mIncomingCallLiveData; @@ -56,12 +57,12 @@ public class InCallActivity extends FragmentActivity { mIncomingCallFragment = getSupportFragmentManager().findFragmentById( R.id.incoming_call_fragment); - mShowIncomingCall = new MutableLiveData(); - InCallViewModel inCallViewModel = ViewModelProviders.of(this).get(InCallViewModel.class); + mShowIncomingCall = new MutableLiveData<>(); + mInCallViewModel = ViewModelProviders.of(this).get(InCallViewModel.class); mIncomingCallLiveData = LiveDataFunctions.iff(mShowIncomingCall, - inCallViewModel.getIncomingCall()); - LiveDataFunctions.pair(inCallViewModel.getOngoingCallList(), mIncomingCallLiveData).observe( - this, this::updateVisibility); + mInCallViewModel.getIncomingCall()); + LiveDataFunctions.pair(mInCallViewModel.getOngoingCallList(), + mIncomingCallLiveData).observe(this, this::updateVisibility); handleIntent(); } @@ -97,9 +98,11 @@ public class InCallActivity extends FragmentActivity { private void handleIntent() { Intent intent = getIntent(); - if (intent != null && getIntent().getBooleanExtra( - Constants.Intents.EXTRA_SHOW_INCOMING_CALL, false)) { - mShowIncomingCall.setValue(true); + if (intent != null) { + mShowIncomingCall.setValue( + getIntent().getBooleanExtra(Constants.Intents.EXTRA_SHOW_INCOMING_CALL, false)); + mInCallViewModel.getDialpadOpenState().setValue( + getIntent().getBooleanExtra(Constants.Intents.EXTRA_SHOW_DIALPAD, false)); } else { mShowIncomingCall.setValue(false); } diff --git a/src/com/android/car/dialer/ui/activecall/InCallViewModel.java b/src/com/android/car/dialer/ui/activecall/InCallViewModel.java index 328695b5..39210fa2 100644 --- a/src/com/android/car/dialer/ui/activecall/InCallViewModel.java +++ b/src/com/android/car/dialer/ui/activecall/InCallViewModel.java @@ -23,6 +23,7 @@ import android.content.Intent; import android.content.ServiceConnection; import android.os.IBinder; import android.telecom.Call; +import android.telecom.CallAudioState; import androidx.annotation.NonNull; import androidx.core.util.Pair; @@ -53,7 +54,7 @@ import java.util.List; * in call page should use a different ViewModel. */ public class InCallViewModel extends AndroidViewModel implements - InCallServiceImpl.ActiveCallListChangedCallback { + InCallServiceImpl.ActiveCallListChangedCallback, InCallServiceImpl.CallAudioStateCallback { private static final String TAG = "CD.InCallViewModel"; private final MutableLiveData<List<Call>> mCallListLiveData; @@ -68,6 +69,7 @@ public class InCallViewModel extends AndroidViewModel implements private final LiveData<Call> mSecondaryCallLiveData; private final LiveData<CallDetail> mSecondaryCallDetailLiveData; private final LiveData<Integer> mAudioRouteLiveData; + private MutableLiveData<CallAudioState> mCallAudioStateLiveData; private final MutableLiveData<Boolean> mDialpadIsOpen; private final ShowOnholdCallLiveData mShowOnholdCall; private LiveData<Long> mCallConnectTimeLiveData; @@ -86,6 +88,7 @@ public class InCallViewModel extends AndroidViewModel implements } updateCallList(); mInCallService.addActiveCallListChangedCallback(InCallViewModel.this); + mInCallService.addCallAudioStateChangedCallback(InCallViewModel.this); } @Override @@ -114,6 +117,7 @@ public class InCallViewModel extends AndroidViewModel implements mIncomingCallLiveData = new MutableLiveData<>(); mOngoingCallListLiveData = new MutableLiveData<>(); + mCallAudioStateLiveData = new MutableLiveData<>(); mCallComparator = new CallComparator(); mCallListLiveData = new MutableLiveData<List<Call>>() { @Override @@ -231,6 +235,13 @@ public class InCallViewModel extends AndroidViewModel implements return mAudioRouteLiveData; } + /** + * Returns current call audio state. + */ + public MutableLiveData<CallAudioState> getCallAudioState() { + return mCallAudioStateLiveData; + } + /** Return the {@link MutableLiveData} for dialpad open state. */ public MutableLiveData<Boolean> getDialpadOpenState() { return mDialpadIsOpen; @@ -257,6 +268,12 @@ public class InCallViewModel extends AndroidViewModel implements return false; } + @Override + public void onCallAudioStateChanged(CallAudioState callAudioState) { + L.i(TAG, "onCallAudioStateChanged %s %s", callAudioState, this); + mCallAudioStateLiveData.setValue(callAudioState); + } + private void updateCallList() { List<Call> callList = new ArrayList<>(); callList.addAll(mInCallService.getCalls()); @@ -271,6 +288,7 @@ public class InCallViewModel extends AndroidViewModel implements call.unregisterCallback(mCallStateChangedCallback); } mInCallService.removeActiveCallListChangedCallback(this); + mInCallService.removeCallAudioStateChangedCallback(this); } mInCallService = null; } diff --git a/src/com/android/car/dialer/ui/activecall/OnGoingCallControllerBarFragment.java b/src/com/android/car/dialer/ui/activecall/OnGoingCallControllerBarFragment.java index 8a822db5..cda13a45 100644 --- a/src/com/android/car/dialer/ui/activecall/OnGoingCallControllerBarFragment.java +++ b/src/com/android/car/dialer/ui/activecall/OnGoingCallControllerBarFragment.java @@ -17,11 +17,13 @@ package com.android.car.dialer.ui.activecall; import android.app.AlertDialog; -import android.content.Context; +import android.graphics.drawable.Drawable; import android.os.Bundle; import android.telecom.Call; import android.telecom.CallAudioState; import android.telecom.CallAudioState.CallAudioRoute; +import android.text.SpannableString; +import android.text.style.ForegroundColorSpan; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -36,16 +38,19 @@ import androidx.fragment.app.Fragment; import androidx.lifecycle.LiveData; import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.ViewModelProviders; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; import com.android.car.apps.common.util.ViewUtils; import com.android.car.dialer.R; import com.android.car.dialer.log.L; import com.android.car.dialer.telecom.UiCallManager; +import com.android.car.ui.AlertDialogBuilder; +import com.android.car.ui.recyclerview.CarUiContentListItem; +import com.android.car.ui.recyclerview.CarUiListItem; +import com.android.car.ui.recyclerview.CarUiListItemAdapter; import com.google.common.collect.ImmutableMap; +import java.util.ArrayList; import java.util.List; /** A Fragment of the bar which controls on going call. */ @@ -73,7 +78,9 @@ public class OnGoingCallControllerBarFragment extends Fragment { .build(); private AlertDialog mAudioRouteSelectionDialog; - private AudioRouteListAdapter mAudioRouteAdapter; + private List<CarUiListItem> mAudioRouteListItems; + private List<Integer> mAvailableRoutes; + private CarUiListItemAdapter mAudioRouteAdapter; private View mMuteButton; private View mAudioRouteView; private ImageView mAudioRouteButton; @@ -83,24 +90,51 @@ public class OnGoingCallControllerBarFragment extends Fragment { private MutableLiveData<Boolean> mDialpadState; private LiveData<List<Call>> mCallListLiveData; private int mPrimaryCallState; + private int mActiveRoute; + private MutableLiveData<CallAudioState> mCallAudioState; @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); - View dialogView = LayoutInflater.from(getContext()).inflate( - R.layout.audio_route_switch_dialog, null, false); - RecyclerView list = dialogView.findViewById(R.id.list); - list.setLayoutManager(new LinearLayoutManager(getContext())); + mAvailableRoutes = UiCallManager.get().getSupportedAudioRoute(); + mActiveRoute = UiCallManager.get().getAudioRoute(); - mAudioRouteSelectionDialog = new AlertDialog.Builder(getContext()) - .setView(dialogView) - .create(); + if (mAvailableRoutes.contains(CallAudioState.ROUTE_EARPIECE) + && mAvailableRoutes.contains(CallAudioState.ROUTE_WIRED_HEADSET)) { + // Keep either ROUTE_EARPIECE or ROUTE_WIRED_HEADSET, but not both of them. + mAvailableRoutes.remove(CallAudioState.ROUTE_WIRED_HEADSET); + } + + mAudioRouteListItems = new ArrayList<>(); + mAudioRouteAdapter = new CarUiListItemAdapter(mAudioRouteListItems); + + for (Integer audioRoute : mAvailableRoutes) { + CarUiContentListItem item = new CarUiContentListItem(CarUiContentListItem.Action.NONE); + AudioRouteInfo routeInfo = getAudioRouteInfo(audioRoute); + Drawable drawable = getResources().getDrawable(routeInfo.mIcon, null); + drawable.setTintList( + getResources().getColorStateList(R.color.icon_accent_activatable, null)); + item.setIcon(drawable); + item.setOnItemClickedListener((i) -> { + onSetAudioRoute(audioRoute); + }); + String routeTitle = getString(routeInfo.mLabel); + item.setTitle(mActiveRoute == audioRoute ? withAccentColor(routeTitle) : routeTitle); + item.setActivated(mActiveRoute == audioRoute); + mAudioRouteListItems.add(item); + } + + AlertDialogBuilder audioRouteSelectionDialogBuilder = new AlertDialogBuilder(getContext()) + .setAdapter(mAudioRouteAdapter) + .setTitle(getString(R.string.audio_route_dialog_title)); + + String subtitle = getString(R.string.audio_route_dialog_subtitle); + if (!subtitle.isEmpty()) { + audioRouteSelectionDialogBuilder.setSubtitle(subtitle); + } - List<Integer> availableRoutes = UiCallManager.get().getSupportedAudioRoute(); - int activeRoute = UiCallManager.get().getAudioRoute(); - mAudioRouteAdapter = new AudioRouteListAdapter(getContext(), availableRoutes, activeRoute); - list.setAdapter(mAudioRouteAdapter); + mAudioRouteSelectionDialog = audioRouteSelectionDialogBuilder.create(); InCallViewModel inCallViewModel = ViewModelProviders.of(getActivity()).get( InCallViewModel.class); @@ -110,6 +144,7 @@ public class OnGoingCallControllerBarFragment extends Fragment { inCallViewModel.getAudioRoute().observe(this, this::updateViewBasedOnAudioRoute); mDialpadState = inCallViewModel.getDialpadOpenState(); + mCallAudioState = inCallViewModel.getCallAudioState(); mCallListLiveData = inCallViewModel.getAllCallList(); mCallListLiveData.observe(this, v -> updatePauseButtonEnabledState()); @@ -133,6 +168,8 @@ public class OnGoingCallControllerBarFragment extends Fragment { } }); + mCallAudioState.observe(this, state -> mMuteButton.setActivated(state.isMuted())); + View dialPadButton = fragmentView.findViewById(R.id.toggle_dialpad_button); dialPadButton.setOnClickListener(v -> mDialpadState.setValue(!mDialpadState.getValue())); mDialpadState.observe(this, activated -> dialPadButton.setActivated(activated)); @@ -147,7 +184,6 @@ public class OnGoingCallControllerBarFragment extends Fragment { if (audioRoutes.size() > 1) { mAudioRouteView.setOnClickListener((v) -> { mAudioRouteView.setActivated(true); - mAudioRouteAdapter.setActiveAudioRoute(UiCallManager.get().getAudioRoute()); mAudioRouteSelectionDialog.show(); }); } @@ -179,6 +215,26 @@ public class OnGoingCallControllerBarFragment extends Fragment { } } + private void updateAudioRouteListItems() { + for (int i = 0; i < mAvailableRoutes.size(); i++) { + int audioRoute = mAvailableRoutes.get(i); + CarUiContentListItem item = (CarUiContentListItem) mAudioRouteListItems.get(i); + boolean isActiveRoute = audioRoute == mActiveRoute; + String routeTitle = item.getTitle().toString(); + item.setActivated(isActiveRoute); + item.setTitle(isActiveRoute ? withAccentColor(routeTitle) : routeTitle); + } + mAudioRouteAdapter.notifyDataSetChanged(); + } + + private CharSequence withAccentColor(String routeTitle) { + ForegroundColorSpan activeRouteSpan = new ForegroundColorSpan( + getResources().getColor(R.color.audio_output_accent, null)); + SpannableString spannableTitle = new SpannableString(routeTitle); + spannableTitle.setSpan(activeRouteSpan, 0, routeTitle.length(), 0); + return spannableTitle; + } + /** Set the call state and change the view for the pause button accordingly */ private void setCallState(int callState) { L.d(TAG, "Call State: %s", callState); @@ -224,6 +280,8 @@ public class OnGoingCallControllerBarFragment extends Fragment { private void onSetAudioRoute(@CallAudioRoute int audioRoute) { UiCallManager.get().setAudioRoute(audioRoute); + mActiveRoute = audioRoute; + updateAudioRouteListItems(); mAudioRouteSelectionDialog.dismiss(); } @@ -233,6 +291,8 @@ public class OnGoingCallControllerBarFragment extends Fragment { } L.i(TAG, "Audio Route State: " + audioRoute); + mActiveRoute = audioRoute; + updateAudioRouteListItems(); AudioRouteInfo audioRouteInfo = getAudioRouteInfo(audioRoute); if (mAudioRouteButton != null) { mAudioRouteButton.setImageResource(audioRouteInfo.mIconActivatable); @@ -274,64 +334,4 @@ public class OnGoingCallControllerBarFragment extends Fragment { mIconActivatable = iconActivatable; } } - - private class AudioRouteListAdapter extends - RecyclerView.Adapter<AudioRouteItemViewHolder> { - private List<Integer> mSupportedRoutes; - private Context mContext; - private int mActiveAudioRoute; - - AudioRouteListAdapter(Context context, - List<Integer> supportedRoutes, - int activeAudioRoute) { - mSupportedRoutes = supportedRoutes; - mActiveAudioRoute = activeAudioRoute; - mContext = context; - if (mSupportedRoutes.contains(CallAudioState.ROUTE_EARPIECE) - && mSupportedRoutes.contains(CallAudioState.ROUTE_WIRED_HEADSET)) { - // Keep either ROUTE_EARPIECE or ROUTE_WIRED_HEADSET, but not both of them. - mSupportedRoutes.remove(CallAudioState.ROUTE_WIRED_HEADSET); - } - } - - public void setActiveAudioRoute(int route) { - if (mActiveAudioRoute != route) { - mActiveAudioRoute = route; - notifyDataSetChanged(); - } - } - - @Override - public AudioRouteItemViewHolder onCreateViewHolder(ViewGroup container, int position) { - View listItemView = LayoutInflater.from(mContext).inflate( - R.layout.audio_route_list_item, container, false); - return new AudioRouteItemViewHolder(listItemView); - } - - @Override - public void onBindViewHolder(AudioRouteItemViewHolder viewHolder, int position) { - int audioRoute = mSupportedRoutes.get(position); - AudioRouteInfo routeInfo = getAudioRouteInfo(audioRoute); - viewHolder.mBody.setText(routeInfo.mLabel); - viewHolder.mIcon.setImageResource(routeInfo.mIcon); - viewHolder.itemView.setActivated(audioRoute == mActiveAudioRoute); - viewHolder.itemView.setOnClickListener((v) -> onSetAudioRoute(audioRoute)); - } - - @Override - public int getItemCount() { - return mSupportedRoutes.size(); - } - } - - private static class AudioRouteItemViewHolder extends RecyclerView.ViewHolder { - public final ImageView mIcon; - public final TextView mBody; - - public AudioRouteItemViewHolder(View itemView) { - super(itemView); - mIcon = itemView.findViewById(R.id.icon); - mBody = itemView.findViewById(R.id.body); - } - } } diff --git a/src/com/android/car/dialer/ui/calllog/CallHistoryFragment.java b/src/com/android/car/dialer/ui/calllog/CallHistoryFragment.java index 26588854..6595a06d 100644 --- a/src/com/android/car/dialer/ui/calllog/CallHistoryFragment.java +++ b/src/com/android/car/dialer/ui/calllog/CallHistoryFragment.java @@ -42,6 +42,7 @@ public class CallHistoryFragment extends DialerListBaseFragment implements @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); // Don't recreate the adapter if we already have one, so that the list items // will display immediately upon the view being recreated. If they're not displayed // immediately, we won't remember our scroll position. diff --git a/src/com/android/car/dialer/ui/calllog/CallLogViewHolder.java b/src/com/android/car/dialer/ui/calllog/CallLogViewHolder.java index bef477b4..9ffde69a 100644 --- a/src/com/android/car/dialer/ui/calllog/CallLogViewHolder.java +++ b/src/com/android/car/dialer/ui/calllog/CallLogViewHolder.java @@ -31,7 +31,6 @@ import com.android.car.dialer.ui.common.entity.UiCallLog; import com.android.car.dialer.ui.view.ContactAvatarOutputlineProvider; import com.android.car.dialer.widget.CallTypeIconsView; import com.android.car.telephony.common.Contact; -import com.android.car.telephony.common.InMemoryPhoneBook; import com.android.car.telephony.common.PhoneCallLog; import com.android.car.telephony.common.TelecomUtils; @@ -70,12 +69,13 @@ public class CallLogViewHolder extends RecyclerView.ViewHolder { * Binds the view holder with relevant data. */ public void bind(UiCallLog uiCallLog) { + Contact contact = uiCallLog.getContact(); + TelecomUtils.setContactBitmapAsync( mAvatarView.getContext(), mAvatarView, - uiCallLog.getAvatarUri(), - uiCallLog.getInitials(), - uiCallLog.getTitle()); + contact, + uiCallLog.getNumber()); mTitleView.setText(uiCallLog.getTitle()); for (PhoneCallLog.Record record : uiCallLog.getCallRecords()) { @@ -99,7 +99,7 @@ public class CallLogViewHolder extends RecyclerView.ViewHolder { ViewUtils.setOnClickListener(mPlaceCallView, view -> UiCallManager.get().placeCall(uiCallLog.getNumber())); - setUpActionButton(uiCallLog); + setUpActionButton(contact); } /** @@ -110,12 +110,11 @@ public class CallLogViewHolder extends RecyclerView.ViewHolder { ViewUtils.setOnClickListener(mPlaceCallView, null); } - private void setUpActionButton(UiCallLog uiCallLog) { + private void setUpActionButton(Contact contact) { if (mActionButton == null) { return; } - Contact contact = InMemoryPhoneBook.get().lookupContactEntry(uiCallLog.getNumber()); boolean forceShowActionButton = itemView.getResources().getBoolean( R.bool.config_show_calllog_action_button_for_non_contact); diff --git a/src/com/android/car/dialer/ui/common/ContactResultsLiveData.java b/src/com/android/car/dialer/ui/common/ContactResultsLiveData.java new file mode 100644 index 00000000..4f82d7fe --- /dev/null +++ b/src/com/android/car/dialer/ui/common/ContactResultsLiveData.java @@ -0,0 +1,208 @@ +/* + * Copyright (C) 2020 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.car.dialer.ui.common; + +import android.content.Context; +import android.content.SharedPreferences; +import android.database.Cursor; +import android.net.Uri; +import android.provider.ContactsContract; +import android.text.TextUtils; + +import androidx.annotation.Nullable; +import androidx.lifecycle.LiveData; +import androidx.lifecycle.MediatorLiveData; + +import com.android.car.dialer.livedata.SharedPreferencesLiveData; +import com.android.car.dialer.ui.common.entity.ContactSortingInfo; +import com.android.car.telephony.common.Contact; +import com.android.car.telephony.common.InMemoryPhoneBook; +import com.android.car.telephony.common.ObservableAsyncQuery; +import com.android.car.telephony.common.QueryParam; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + +/** + * Represents a list of {@link Contact} based on the search query + */ +public class ContactResultsLiveData extends + MediatorLiveData<List<ContactResultsLiveData.ContactResultListItem>> { + private static final String[] CONTACT_DETAILS_PROJECTION = { + ContactsContract.CommonDataKinds.Phone._ID, + ContactsContract.CommonDataKinds.Phone.LOOKUP_KEY, + ContactsContract.CommonDataKinds.Phone.NUMBER, + }; + private final Context mContext; + private final SearchQueryParamProvider mSearchQueryParamProvider; + private final ObservableAsyncQuery mObservableAsyncQuery; + private final LiveData<String> mSearchQueryLiveData; + private final LiveData<List<Contact>> mContactListLiveData; + private final SharedPreferencesLiveData mSortOrderPreferenceLiveData; + private boolean mShowOnlyOneEntry; + + /** + * @param searchQueryLiveData represents a list of strings that are used to query the data + * @param sortOrderPreferenceLiveData has the information on how to order the acquired contacts. + * @param showOnlyOneEntry determines whether to show only entry per contact. + */ + public ContactResultsLiveData(Context context, + LiveData<String> searchQueryLiveData, + SharedPreferencesLiveData sortOrderPreferenceLiveData, + boolean showOnlyOneEntry) { + mContext = context; + mShowOnlyOneEntry = showOnlyOneEntry; + mSearchQueryParamProvider = new SearchQueryParamProvider(searchQueryLiveData); + mObservableAsyncQuery = new ObservableAsyncQuery(mSearchQueryParamProvider, + context.getContentResolver(), this::onQueryFinished); + + mContactListLiveData = InMemoryPhoneBook.get().getContactsLiveData(); + addSource(mContactListLiveData, this::onContactsChange); + mSearchQueryLiveData = searchQueryLiveData; + addSource(mSearchQueryLiveData, this::onSearchQueryChanged); + + mSortOrderPreferenceLiveData = sortOrderPreferenceLiveData; + addSource(mSortOrderPreferenceLiveData, this::onSortOrderChanged); + } + + /** + * This constructor only allows one entry per contact. + * + * @param searchQueryLiveData represents a list of strings that are used to query the data + * @param sortOrderPreferenceLiveData has the information on how to order the acquired contacts. + */ + public ContactResultsLiveData(Context context, + LiveData<String> searchQueryLiveData, + SharedPreferencesLiveData sortOrderPreferenceLiveData) { + this(context, searchQueryLiveData, sortOrderPreferenceLiveData, true); + } + + private void onContactsChange(List<Contact> contactList) { + if (contactList == null || contactList.isEmpty()) { + mObservableAsyncQuery.stopQuery(); + setValue(Collections.emptyList()); + } else { + onSearchQueryChanged(mSearchQueryLiveData.getValue()); + } + } + + private void onSearchQueryChanged(String searchQuery) { + if (TextUtils.isEmpty(searchQuery)) { + mObservableAsyncQuery.stopQuery(); + setValue(Collections.emptyList()); + } else { + mObservableAsyncQuery.startQuery(); + } + } + + private void onSortOrderChanged(SharedPreferences unusedSharedPreferences) { + setValue(getValue()); + } + + private void onQueryFinished(@Nullable Cursor cursor) { + if (cursor == null) { + setValue(Collections.emptyList()); + return; + } + + List<ContactResultListItem> contactResults = new ArrayList<>(); + while (cursor.moveToNext()) { + int lookupKeyColIdx = cursor.getColumnIndex( + ContactsContract.CommonDataKinds.Phone.LOOKUP_KEY); + int numberIdx = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER); + String lookupKey = cursor.getString(lookupKeyColIdx); + String number = cursor.getString(numberIdx); + List<Contact> lookupResults = InMemoryPhoneBook.get().lookupContactByKey(lookupKey); + for (Contact contact : lookupResults) { + contactResults.add(new ContactResultListItem(contact, number)); + } + } + + if (mShowOnlyOneEntry) { + Set<Contact> set = new HashSet<>(); + contactResults = contactResults.stream() + .filter(o -> set.add(o.getContact())) + .collect(Collectors.toList()); + } + + setValue(contactResults); + cursor.close(); + } + + /** + * Sort and replace null list with empty list. + */ + @Override + public void setValue(List<ContactResultListItem> contactResults) { + if (contactResults != null && !contactResults.isEmpty()) { + Collections.sort(contactResults, (o1, o2) -> ContactSortingInfo.getSortingInfo( + mContext, mSortOrderPreferenceLiveData).first.compare(o1.mContact, + o2.mContact)); + } + super.setValue(contactResults == null ? Collections.EMPTY_LIST : contactResults); + } + + private static class SearchQueryParamProvider implements QueryParam.Provider { + private final LiveData<String> mSearchQueryLiveData; + + private SearchQueryParamProvider(LiveData<String> searchQueryLiveData) { + mSearchQueryLiveData = searchQueryLiveData; + } + + @Nullable + @Override + public QueryParam getQueryParam() { + Uri lookupUri = Uri.withAppendedPath( + ContactsContract.CommonDataKinds.Phone.CONTENT_FILTER_URI, + Uri.encode(mSearchQueryLiveData.getValue())); + return new QueryParam(lookupUri, CONTACT_DETAILS_PROJECTION, null, + /* selectionArgs= */null, /* orderBy= */null); + } + } + + /** + * Represent a contact search result. + */ + public static class ContactResultListItem { + private final Contact mContact; + private final String mNumber; + + public ContactResultListItem(Contact contact, String number) { + mContact = contact; + mNumber = number; + } + + /** + * Returns the contact. + */ + public Contact getContact() { + return mContact; + } + + /** + * Returns the number. It is a string read from column + * {@link ContactsContract.CommonDataKinds.Phone#NUMBER}. + */ + public String getNumber() { + return mNumber; + } + } +} diff --git a/src/com/android/car/dialer/ui/common/DialerBaseFragment.java b/src/com/android/car/dialer/ui/common/DialerBaseFragment.java index 9e7aa7ac..04afb884 100644 --- a/src/com/android/car/dialer/ui/common/DialerBaseFragment.java +++ b/src/com/android/car/dialer/ui/common/DialerBaseFragment.java @@ -18,7 +18,9 @@ package com.android.car.dialer.ui.common; import android.app.Activity; import android.os.Bundle; +import android.view.View; +import androidx.annotation.CallSuper; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.fragment.app.Fragment; @@ -55,6 +57,17 @@ public abstract class DialerBaseFragment extends Fragment { mToolbarHeight = new MutableLiveData<>(); } + @CallSuper + @Override + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + Toolbar toolbar = getActivity().findViewById(R.id.car_ui_toolbar); + // Null check for unit tests to pass + if (toolbar != null) { + setupToolbar(toolbar); + } + } + @Override public void onStart() { super.onStart(); @@ -64,7 +77,7 @@ public abstract class DialerBaseFragment extends Fragment { /** * Customizes the tool bar. Can be overridden in subclasses. */ - public void setupToolbar(@NonNull Toolbar toolbar) { + protected void setupToolbar(@NonNull Toolbar toolbar) { TelecomActivityViewModel viewModel = ViewModelProviders.of(getActivity()).get( TelecomActivityViewModel.class); LiveData<String> toolbarTitleLiveData = viewModel.getToolbarTitle(); @@ -79,7 +92,7 @@ public abstract class DialerBaseFragment extends Fragment { setShowToolbarBackground(true); - setToolbarHeight(toolbar.getHeight()); + setToolbarHeight(toolbar); } /** @@ -106,7 +119,13 @@ public abstract class DialerBaseFragment extends Fragment { /** * Sets the toolbar height. */ - public final void setToolbarHeight(int toolbarHeight) { + protected final void setToolbarHeight(Toolbar toolbar) { + int toolbarFirstRowHeight = getResources().getDimensionPixelSize( + R.dimen.car_ui_toolbar_first_row_height); + int toolbarHeight = toolbar.isTabsInSecondRow() && getToolbarState() == Toolbar.State.HOME + ? toolbarFirstRowHeight + getResources().getDimensionPixelSize( + R.dimen.car_ui_toolbar_second_row_height) + : toolbarFirstRowHeight; mToolbarHeight.setValue(toolbarHeight); } diff --git a/src/com/android/car/dialer/ui/common/DialerUtils.java b/src/com/android/car/dialer/ui/common/DialerUtils.java index 3bcca380..5826e42e 100644 --- a/src/com/android/car/dialer/ui/common/DialerUtils.java +++ b/src/com/android/car/dialer/ui/common/DialerUtils.java @@ -17,6 +17,10 @@ package com.android.car.dialer.ui.common; import android.content.Context; +import android.content.res.Resources; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import com.android.car.dialer.R; import com.android.car.dialer.log.L; @@ -24,6 +28,8 @@ import com.android.car.telephony.common.Contact; import com.android.car.telephony.common.PhoneNumber; import com.android.car.telephony.common.TelecomUtils; import com.android.car.ui.AlertDialogBuilder; +import com.android.car.ui.recyclerview.CarUiRadioButtonListItem; +import com.android.car.ui.recyclerview.CarUiRadioButtonListItemAdapter; import java.util.ArrayList; import java.util.List; @@ -41,8 +47,9 @@ public class DialerUtils { public interface PhoneNumberSelectionCallback { /** * Called when a phone number is chosen. + * * @param phoneNumber The phone number - * @param always Whether the user pressed "aways" or "just once" + * @param always Whether the user pressed "aways" or "just once" */ void onPhoneNumberSelected(PhoneNumber phoneNumber, boolean always); } @@ -54,16 +61,28 @@ public class DialerUtils { public static void showPhoneNumberSelector(Context context, List<PhoneNumber> numbers, PhoneNumberSelectionCallback callback) { + final List<PhoneNumber> selectedPhoneNumber = new ArrayList<>(); + List<CarUiRadioButtonListItem> items = new ArrayList<>(); + CarUiRadioButtonListItemAdapter adapter = new CarUiRadioButtonListItemAdapter(items); + + for (PhoneNumber number : numbers) { + CharSequence readableLabel = number.getReadableLabel(context.getResources()); + CarUiRadioButtonListItem item = new CarUiRadioButtonListItem(); + item.setTitle(number.isPrimary() + ? context.getString(R.string.primary_number_description, readableLabel) + : readableLabel); + item.setBody(number.getNumber()); + item.setOnCheckedChangeListener((i, isChecked) -> { + selectedPhoneNumber.clear(); + selectedPhoneNumber.add(number); + }); + items.add(item); + } + new AlertDialogBuilder(context) .setTitle(R.string.select_number_dialog_title) - .setSingleChoiceItems( - new PhoneNumberListAdapter(context, numbers), - -1, - ((dialog, which) -> { - selectedPhoneNumber.clear(); - selectedPhoneNumber.add(numbers.get(which)); - })) + .setSingleChoiceItems(adapter, null) .setNeutralButton(R.string.select_number_dialog_just_once_button, (dialog, which) -> { if (!selectedPhoneNumber.isEmpty()) { @@ -106,4 +125,23 @@ public class DialerUtils { L.w(TAG, "contact %s doesn't have any phone number", contact.getDisplayName()); } } + + /** + * Returns true if the contact has postal address and show postal address config is true. + */ + private static boolean hasPostalAddress(Resources resources, @NonNull Contact contact) { + boolean showPostalAddress = resources.getBoolean( + R.bool.config_show_postal_address); + return showPostalAddress && (!contact.getPostalAddresses().isEmpty()); + } + + /** + * Returns true if the contact has either phone number or postal address to show. + */ + public static boolean hasContactDetail(Resources resources, @Nullable Contact contact) { + boolean hasContactDetail = contact != null + && (!contact.getNumbers().isEmpty() || DialerUtils.hasPostalAddress( + resources, contact)); + return hasContactDetail; + } } diff --git a/src/com/android/car/dialer/ui/common/FavoritePhoneNumberListAdapter.java b/src/com/android/car/dialer/ui/common/FavoritePhoneNumberListAdapter.java deleted file mode 100644 index 4f93fd04..00000000 --- a/src/com/android/car/dialer/ui/common/FavoritePhoneNumberListAdapter.java +++ /dev/null @@ -1,127 +0,0 @@ -/* - * Copyright (C) 2019 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.car.dialer.ui.common; - -import android.content.Context; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.BaseAdapter; -import android.widget.TextView; - -import com.android.car.dialer.R; -import com.android.car.telephony.common.Contact; -import com.android.car.telephony.common.PhoneNumber; - -import java.util.ArrayList; -import java.util.List; - -/** - * {@link BaseAdapter} that presents the {@link PhoneNumber} and its type as two line list - * item with stars to indicate favorite state or user selection to add to favorite. Currently - * favorite phone number is set to disabled so user can not take any action for an existing favorite - * phone number. - */ -public class FavoritePhoneNumberListAdapter extends BaseAdapter { - private final Context mContext; - private final FavoritePhoneNumberPresenter mFavoritePhoneNumberPresenter; - private final List<PhoneNumber> mPhoneNumbers; - private Contact mContact; - - /** - * A presenter that presents the favorite state for phone number and provides the click - * listener. - */ - public interface FavoritePhoneNumberPresenter { - /** - * Provides the click listener for the given phone number and its present view. - */ - void onItemClicked(PhoneNumber phoneNumber, View itemView); - } - - public FavoritePhoneNumberListAdapter(Context context, - FavoritePhoneNumberPresenter favoritePhoneNumberPresenter) { - mContext = context; - mFavoritePhoneNumberPresenter = favoritePhoneNumberPresenter; - mPhoneNumbers = new ArrayList<>(); - } - - /** - * Sets the phone numbers to display - */ - public void setPhoneNumbers(Contact contact, List<PhoneNumber> phoneNumbers) { - mPhoneNumbers.clear(); - mContact = contact; - mPhoneNumbers.addAll(phoneNumbers); - - notifyDataSetChanged(); - } - - public Contact getContact() { - return mContact; - } - - @Override - public int getCount() { - return mPhoneNumbers.size(); - } - - @Override - public PhoneNumber getItem(int position) { - return mPhoneNumbers.get(position); - } - - @Override - public long getItemId(int position) { - return position; - } - - @Override - public View getView(int position, View convertView, ViewGroup parent) { - View itemView; - if (convertView == null) { - itemView = LayoutInflater.from(mContext).inflate( - R.layout.add_favorite_number_list_item, parent, false); - } else { - itemView = convertView; - } - PhoneNumber phoneNumber = getItem(position); - bind(phoneNumber, itemView); - return itemView; - } - - void bind(PhoneNumber phoneNumber, View itemView) { - TextView phoneNumberView = itemView.findViewById(R.id.phone_number); - TextView phoneNumberDescriptionView = itemView.findViewById(R.id.phone_number_description); - phoneNumberView.setText(phoneNumber.getRawNumber()); - CharSequence readableLabel = phoneNumber.getReadableLabel(itemView.getResources()); - - if (phoneNumber.isFavorite()) { - phoneNumberDescriptionView.setText( - itemView.getResources().getString(R.string.favorite_number_description, - readableLabel)); - itemView.setActivated(true); - itemView.setEnabled(false); - } else { - phoneNumberDescriptionView.setText(readableLabel); - itemView.setActivated(false); - itemView.setEnabled(true); - itemView.setOnClickListener( - view -> mFavoritePhoneNumberPresenter.onItemClicked(phoneNumber, itemView)); - } - } -} diff --git a/src/com/android/car/dialer/ui/common/PhoneNumberListAdapter.java b/src/com/android/car/dialer/ui/common/PhoneNumberListAdapter.java deleted file mode 100644 index 923fb51e..00000000 --- a/src/com/android/car/dialer/ui/common/PhoneNumberListAdapter.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright (C) 2019 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.car.dialer.ui.common; - -import android.content.Context; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ArrayAdapter; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import com.android.car.dialer.R; -import com.android.car.telephony.common.PhoneNumber; - -import java.util.List; - -/** - * {@link ArrayAdapter} that simply presents the {@link PhoneNumber} and its type as two line list - * item. - */ -public class PhoneNumberListAdapter extends ArrayAdapter<PhoneNumber> { - private final Context mContext; - - public PhoneNumberListAdapter(Context context, List<PhoneNumber> phoneNumbers) { - super(context, R.layout.phone_number_list_item, R.id.phone_number, phoneNumbers); - mContext = context; - } - - @Override - public View getView(int position, @Nullable View convertView, - @NonNull ViewGroup parent) { - View view = super.getView(position, convertView, parent); - PhoneNumber phoneNumber = getItem(position); - if (phoneNumber == null) { - return view; - } - TextView phoneNumberView = view.findViewById(R.id.phone_number); - phoneNumberView.setText(phoneNumber.getRawNumber()); - TextView phoneNumberDescriptionView = view.findViewById(R.id.phone_number_description); - CharSequence readableLabel = phoneNumber.getReadableLabel(mContext.getResources()); - if (phoneNumber.isPrimary()) { - phoneNumberDescriptionView.setText( - mContext.getString(R.string.primary_number_description, readableLabel)); - } else { - phoneNumberDescriptionView.setText(readableLabel); - } - return view; - } -} diff --git a/src/com/android/car/dialer/ui/common/UiCallLogLiveData.java b/src/com/android/car/dialer/ui/common/UiCallLogLiveData.java index 5b6d06a7..1c48f1ae 100644 --- a/src/com/android/car/dialer/ui/common/UiCallLogLiveData.java +++ b/src/com/android/car/dialer/ui/common/UiCallLogLiveData.java @@ -16,7 +16,12 @@ package com.android.car.dialer.ui.common; +import android.content.ContentResolver; import android.content.Context; +import android.database.Cursor; +import android.net.Uri; +import android.provider.ContactsContract; +import android.provider.ContactsContract.PhoneLookup; import android.text.TextUtils; import android.text.format.DateUtils; @@ -43,16 +48,21 @@ import java.util.ArrayList; import java.util.Calendar; import java.util.Collections; import java.util.List; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; /** - * Represents a list of {@link UiCallLog}s and label {@link String}s for UI representation. - * This live data gets data source from both call log and contact list. It also refresh - * itself on the relative time in the body text. + * Represents a list of {@link UiCallLog}s and label {@link String}s for UI representation. This + * live data gets data source from both call log and contact list. It also refresh itself on the + * relative time in the body text. */ public class UiCallLogLiveData extends MediatorLiveData<List<Object>> { private static final String TAG = "CD.UiCallLogLiveData"; private static final String TYPE_AND_RELATIVE_TIME_JOINER = ", "; + private final ExecutorService mExecutorService; + private Future<?> mRunnableFuture; private Context mContext; public UiCallLogLiveData(Context context, @@ -60,6 +70,8 @@ public class UiCallLogLiveData extends MediatorLiveData<List<Object>> { CallHistoryLiveData callHistoryLiveData, LiveData<List<Contact>> contactListLiveData) { mContext = context; + mExecutorService = Executors.newSingleThreadExecutor(); + addSource(callHistoryLiveData, this::onCallHistoryChanged); addSource(contactListLiveData, (contacts) -> onCallHistoryChanged(callHistoryLiveData.getValue())); @@ -71,7 +83,14 @@ public class UiCallLogLiveData extends MediatorLiveData<List<Object>> { if (callLogs == null && getValue() == null) { return; } - setValue(convert(callLogs)); + + if (mRunnableFuture != null) { + mRunnableFuture.cancel(true); + } + Runnable runnable = () -> { + postValue(convert(callLogs)); + }; + mRunnableFuture = mExecutorService.submit(runnable); } private void updateRelativeTime() { @@ -133,14 +152,51 @@ public class UiCallLogLiveData extends MediatorLiveData<List<Object>> { String relativeTime = getRelativeTime(phoneCallLog.getLastCallEndTimestamp()); if (TelecomUtils.isVoicemailNumber(mContext, number)) { String title = mContext.getString(R.string.voicemail); - UiCallLog uiCallLog = new UiCallLog(title, relativeTime, number, null, null, + UiCallLog uiCallLog = new UiCallLog(title, relativeTime, number, null, phoneCallLog.getAllCallRecords()); uiCallLogs.add(uiCallLog); continue; } - Contact contact = inMemoryPhoneBook.lookupContactEntry(number); String title; + CharSequence typeLabel = ""; + Contact contact = null; + + // If InMemoryPhoneBook hasn't finished loading, there is still a chance that this + // number can be found there later. So query will not be proceeded now. + // TODO: will move to utils later. + if (inMemoryPhoneBook.isLoaded()) { + contact = inMemoryPhoneBook.lookupContactEntry(number); + if (contact == null && !TextUtils.isEmpty(number)) { + ContentResolver cr = mContext.getContentResolver(); + try (Cursor cursor = cr.query( + Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, + Uri.encode(number)), + new String[]{ + PhoneLookup.LOOKUP_KEY, + PhoneLookup.TYPE, + PhoneLookup.LABEL, + }, + null, null, null)) { + + if (cursor != null && cursor.moveToFirst()) { + int lookupKeyColIdx = cursor.getColumnIndex(PhoneLookup.LOOKUP_KEY); + int typeColumn = cursor.getColumnIndex(PhoneLookup.TYPE); + int labelColumn = cursor.getColumnIndex(PhoneLookup.LABEL); + + List<Contact> lookupResults = + InMemoryPhoneBook.get().lookupContactByKey( + cursor.getString(lookupKeyColIdx)); + contact = lookupResults.size() > 0 ? lookupResults.get(0) : null; + int type = cursor.getInt(typeColumn); + String label = cursor.getString(labelColumn); + typeLabel = ContactsContract.CommonDataKinds.Phone.getTypeLabel( + mContext.getResources(), type, label); + } + } + } + } + if (contact != null && contact.getDisplayName() != null) { title = contact.getDisplayName(); } else if (!TextUtils.isEmpty(number)) { @@ -153,10 +209,11 @@ public class UiCallLogLiveData extends MediatorLiveData<List<Object>> { UiCallLog uiCallLog = new UiCallLog( title, - getSecondaryText(getType(phoneNumber), relativeTime), + getSecondaryText( + TextUtils.isEmpty(typeLabel) ? getType(phoneNumber) : typeLabel, + relativeTime), number, - contact != null ? contact.getInitials() : null, - contact != null ? contact.getAvatarUri() : null, + contact, phoneCallLog.getAllCallRecords()); uiCallLogs.add(uiCallLog); diff --git a/src/com/android/car/dialer/ui/common/entity/ActionButton.java b/src/com/android/car/dialer/ui/common/entity/ActionButton.java new file mode 100644 index 00000000..46dafe9c --- /dev/null +++ b/src/com/android/car/dialer/ui/common/entity/ActionButton.java @@ -0,0 +1,21 @@ +/* + * Copyright (C) 2020 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.car.dialer.ui.common.entity; + +/**Objects stand for buttons.*/ +public final class ActionButton { +} diff --git a/src/com/android/car/dialer/notification/NotificationReceiver.java b/src/com/android/car/dialer/ui/common/entity/Header.java index 8c7d8d73..c184dfe0 100644 --- a/src/com/android/car/dialer/notification/NotificationReceiver.java +++ b/src/com/android/car/dialer/ui/common/entity/Header.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2019 The Android Open Source Project + * Copyright (C) 2020 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. @@ -14,17 +14,22 @@ * limitations under the License. */ -package com.android.car.dialer.notification; +package com.android.car.dialer.ui.common.entity; -import android.content.BroadcastReceiver; -import android.content.Context; -import android.content.Intent; +/** + * Objects stand for headers. + */ +public final class Header { + private final String mHeader; -/** This class is responsible for offloading notification broadcasts to the notification service. */ -public class NotificationReceiver extends BroadcastReceiver { + public Header(String header) { + mHeader = header; + } - @Override - public void onReceive(Context context, Intent intent) { - NotificationService.enqueueWork(context, intent); + /** + * Getter to return the header string. + */ + public String getHeader() { + return mHeader; } } diff --git a/src/com/android/car/dialer/ui/common/entity/UiCallLog.java b/src/com/android/car/dialer/ui/common/entity/UiCallLog.java index 9de97309..35ae2395 100644 --- a/src/com/android/car/dialer/ui/common/entity/UiCallLog.java +++ b/src/com/android/car/dialer/ui/common/entity/UiCallLog.java @@ -16,11 +16,10 @@ package com.android.car.dialer.ui.common.entity; -import android.net.Uri; - import androidx.annotation.Nullable; import com.android.car.dialer.livedata.CallHistoryLiveData; +import com.android.car.telephony.common.Contact; import com.android.car.telephony.common.PhoneCallLog; import java.util.ArrayList; @@ -32,29 +31,26 @@ import java.util.List; */ public class UiCallLog { private final String mTitle; + private String mText; private final String mNumber; @Nullable - private final String mInitials; - private final Uri mAvatarUri; + private final Contact mContact; private final List<PhoneCallLog.Record> mCallRecords; - private String mText; - public UiCallLog(String title, String text, String number, @Nullable String initials, - Uri avatarUri, List<PhoneCallLog.Record> callRecords) { + public UiCallLog(String title, String text, String number, @Nullable Contact contact, + List<PhoneCallLog.Record> callRecords) { mTitle = title; mText = text; mNumber = number; - mInitials = initials; - mAvatarUri = avatarUri; + mContact = contact; mCallRecords = new ArrayList<>(callRecords); } /** - * Returns the initials of a call log item. Returns null if this item is not a contact. + * Updates the body text. */ - @Nullable - public String getInitials() { - return mInitials; + public void setText(String text) { + mText = text; } /** @@ -72,23 +68,18 @@ public class UiCallLog { } /** - * Updates the body text. - */ - public void setText(String text) { - mText = text; - } - - /** * Returns the number of this call log. */ public String getNumber() { return mNumber; } - /** Returns the avatar of the contact associated with the number. */ + /** + * Returns the related contact of a call log item. Returns null if this item is not a contact. + */ @Nullable - public Uri getAvatarUri() { - return mAvatarUri; + public Contact getContact() { + return mContact; } /** diff --git a/src/com/android/car/dialer/ui/contact/ContactDetailsFragment.java b/src/com/android/car/dialer/ui/contact/ContactDetailsFragment.java index a3013931..7f33f462 100644 --- a/src/com/android/car/dialer/ui/contact/ContactDetailsFragment.java +++ b/src/com/android/car/dialer/ui/contact/ContactDetailsFragment.java @@ -94,6 +94,7 @@ public class ContactDetailsFragment extends DialerListBaseFragment implements @Override public void onViewCreated(View view, Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); ContactDetailsAdapter contactDetailsAdapter = new ContactDetailsAdapter(getContext(), mContact, this); getRecyclerView().setAdapter(contactDetailsAdapter); @@ -111,6 +112,10 @@ public class ContactDetailsFragment extends DialerListBaseFragment implements private void onContactChanged(Contact contact) { getArguments().clear(); Toolbar toolbar = getActivity().findViewById(R.id.car_ui_toolbar); + // Null check to have unit tests to pass. + if (toolbar == null) { + return; + } toolbar.setTitle(null); toolbar.setLogo(null); if (mShowActionBarView) { @@ -148,7 +153,7 @@ public class ContactDetailsFragment extends DialerListBaseFragment implements } @Override - public void setupToolbar(@NonNull Toolbar toolbar) { + protected void setupToolbar(@NonNull Toolbar toolbar) { toolbar.setState(getToolbarState()); toolbar.setMenuItems(null); @@ -156,6 +161,8 @@ public class ContactDetailsFragment extends DialerListBaseFragment implements if (!mShowActionBarView) { setShowToolbarBackground(false); } + + setToolbarHeight(toolbar); } @Override diff --git a/src/com/android/car/dialer/ui/contact/ContactDetailsViewHolder.java b/src/com/android/car/dialer/ui/contact/ContactDetailsViewHolder.java index 0ffe3f9a..eec3013e 100644 --- a/src/com/android/car/dialer/ui/contact/ContactDetailsViewHolder.java +++ b/src/com/android/car/dialer/ui/contact/ContactDetailsViewHolder.java @@ -67,7 +67,7 @@ class ContactDetailsViewHolder extends RecyclerView.ViewHolder { @Nullable private final View mCallActionView; @Nullable - private final View mFavoriteActionView; + private final ImageView mFavoriteActionView; // Applies to address items @Nullable @@ -152,26 +152,42 @@ class ContactDetailsViewHolder extends RecyclerView.ViewHolder { } public void bind(Context context, Contact contact, PhoneNumber phoneNumber) { - mTitle.setText(phoneNumber.getRawNumber()); - // Present the phone number type. + // Present the phone number type and local favorite state. CharSequence readableLabel = phoneNumber.getReadableLabel(context.getResources()); + CharSequence favoriteLabel = phoneNumber.isFavorite() ? context.getString( + R.string.local_favorite_number_description, readableLabel) : readableLabel; if (phoneNumber.isPrimary()) { - mText.setText(context.getString(R.string.primary_number_description, readableLabel)); + mText.setText(context.getString(R.string.primary_number_description, favoriteLabel)); mText.setTextAppearance(R.style.TextAppearance_DefaultNumberLabel); } else { - mText.setText(readableLabel); + mText.setText(favoriteLabel); mText.setTextAppearance(R.style.TextAppearance_ContactDetailsListSubtitle); } mCallActionView.setOnClickListener( v -> UiCallManager.get().placeCall(phoneNumber.getRawNumber())); - mFavoriteActionView.setActivated(phoneNumber.isFavorite()); - mFavoriteActionView.setOnClickListener(v -> { - mPhoneNumberPresenter.onClick(contact, phoneNumber); - mFavoriteActionView.setActivated(!mFavoriteActionView.isActivated()); - }); + + if (phoneNumber.isFavorite() || !contact.isStarred()) { + // If the phone number is marked as favorite locally, enable the action button to + // allow users to remove from local favorites. + // If the phone number is not a local favorite or a favorite from phone, allow users + // to mark it as favorite locally. + ViewUtils.setActivated(mFavoriteActionView, phoneNumber.isFavorite()); + ViewUtils.setEnabled(mFavoriteActionView, true); + ViewUtils.setOnClickListener(mFavoriteActionView, v -> { + mPhoneNumberPresenter.onClick(contact, phoneNumber); + mFavoriteActionView.setActivated(!mFavoriteActionView.isActivated()); + }); + } else { + // The contact is favorite contact downloaded from phone. Disable the favorite action + // button so the phone numbers can not be marked as favorite locally as it is not + // necessary. + ViewUtils.setActivated(mFavoriteActionView, false); + ViewUtils.setEnabled(mFavoriteActionView, false); + ViewUtils.setOnClickListener(mFavoriteActionView, null); + } } public void bind(Context context, @NonNull PostalAddress postalAddress) { diff --git a/src/com/android/car/dialer/ui/contact/ContactListFragment.java b/src/com/android/car/dialer/ui/contact/ContactListFragment.java index d638b6c8..954806a5 100644 --- a/src/com/android/car/dialer/ui/contact/ContactListFragment.java +++ b/src/com/android/car/dialer/ui/contact/ContactListFragment.java @@ -42,6 +42,7 @@ public class ContactListFragment extends DialerListBaseFragment implements @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); // Don't recreate the adapter if we already have one, so that the list items // will display immediately upon the view being recreated. If they're not displayed // immediately, we won't remember our scroll position. diff --git a/src/com/android/car/dialer/ui/contact/ContactListViewHolder.java b/src/com/android/car/dialer/ui/contact/ContactListViewHolder.java index 8a35f873..96191516 100644 --- a/src/com/android/car/dialer/ui/contact/ContactListViewHolder.java +++ b/src/com/android/car/dialer/ui/contact/ContactListViewHolder.java @@ -126,8 +126,7 @@ public class ContactListViewHolder extends RecyclerView.ViewHolder { return; } - boolean hasContactDetail = contact != null - && (!contact.getNumbers().isEmpty() || hasPostalAddress(contact)); + boolean hasContactDetail = DialerUtils.hasContactDetail(itemView.getResources(), contact); ViewUtils.setEnabled(mShowContactDetailView, hasContactDetail); ViewUtils.setVisible(mShowContactDetailView, hasContactDetail || forceShowButton); @@ -140,12 +139,6 @@ public class ContactListViewHolder extends RecyclerView.ViewHolder { } } - private boolean hasPostalAddress(@NonNull Contact contact) { - boolean showPostalAddress = itemView.getResources().getBoolean( - R.bool.config_show_postal_address); - return showPostalAddress && (!contact.getPostalAddresses().isEmpty()); - } - /** * Recycles views. */ diff --git a/src/com/android/car/dialer/ui/dialpad/AbstractDialpadFragment.java b/src/com/android/car/dialer/ui/dialpad/AbstractDialpadFragment.java index 2333414b..93cc34bf 100644 --- a/src/com/android/car/dialer/ui/dialpad/AbstractDialpadFragment.java +++ b/src/com/android/car/dialer/ui/dialpad/AbstractDialpadFragment.java @@ -89,6 +89,7 @@ public abstract class AbstractDialpadFragment extends DialerBaseFragment impleme @CallSuper @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); mTitleView = view.findViewById(R.id.title); if (mTitleView != null && getResources().getBoolean(R.bool.config_enable_dial_motion)) { mInputMotionAnimator = (ValueAnimator) AnimatorInflater.loadAnimator(getContext(), diff --git a/src/com/android/car/dialer/ui/dialpad/DialpadFragment.java b/src/com/android/car/dialer/ui/dialpad/DialpadFragment.java index 44389809..3368a81f 100644 --- a/src/com/android/car/dialer/ui/dialpad/DialpadFragment.java +++ b/src/com/android/car/dialer/ui/dialpad/DialpadFragment.java @@ -32,6 +32,7 @@ import android.widget.TextView; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import androidx.lifecycle.ViewModelProviders; import com.android.car.apps.common.util.ViewUtils; import com.android.car.dialer.R; @@ -42,6 +43,7 @@ import com.android.car.telephony.common.Contact; import com.android.car.telephony.common.InMemoryPhoneBook; import com.android.car.telephony.common.PhoneNumber; import com.android.car.telephony.common.TelecomUtils; +import com.android.car.ui.recyclerview.CarUiRecyclerView; import com.android.car.ui.toolbar.Toolbar; import com.google.common.annotations.VisibleForTesting; @@ -77,11 +79,15 @@ public class DialpadFragment extends AbstractDialpadFragment { .put(KeyEvent.KEYCODE_STAR, ToneGenerator.TONE_DTMF_S) .put(KeyEvent.KEYCODE_POUND, ToneGenerator.TONE_DTMF_P) .build(); + private final TypeDownResultsAdapter mAdapter = new TypeDownResultsAdapter(); + private TypeDownResultsViewModel mTypeDownResultsViewModel; private TextView mTitleView; @Nullable private TextView mDisplayName; @Nullable + private CarUiRecyclerView mRecyclerView; + @Nullable private TextView mLabel; @Nullable private ImageView mAvatar; @@ -120,6 +126,11 @@ public class DialpadFragment extends AbstractDialpadFragment { mMode = getArguments().getInt(DIALPAD_MODE_KEY); L.d(TAG, "onCreate mode: %s", mMode); mToneGenerator = new ToneGenerator(AudioManager.STREAM_MUSIC, TONE_RELATIVE_VOLUME); + + mTypeDownResultsViewModel = ViewModelProviders.of(this).get( + TypeDownResultsViewModel.class); + mTypeDownResultsViewModel.getContactSearchResults().observe(this, + contactResults -> mAdapter.setData(contactResults)); } @Override @@ -132,6 +143,8 @@ public class DialpadFragment extends AbstractDialpadFragment { mMode == MODE_EMERGENCY ? R.style.TextAppearance_EmergencyDialNumber : R.style.TextAppearance_DialNumber); mDisplayName = rootView.findViewById(R.id.display_name); + mRecyclerView = rootView.findViewById(R.id.list_view); + mRecyclerView.setAdapter(mAdapter); mLabel = rootView.findViewById(R.id.label); mAvatar = rootView.findViewById(R.id.dialpad_contact_avatar); if (mAvatar != null) { @@ -174,7 +187,7 @@ public class DialpadFragment extends AbstractDialpadFragment { } @Override - public void setupToolbar(Toolbar toolbar) { + protected void setupToolbar(Toolbar toolbar) { // Only setup the actionbar if we're in dial mode. // In all the other modes, there will be another fragment in the activity // at the same time, and we don't want to mess up it's action bar. @@ -238,7 +251,13 @@ public class DialpadFragment extends AbstractDialpadFragment { ViewUtils.setVisible(mDeleteButton, true); } - presentContactInfo(number.toString()); + if (getResources().getBoolean(R.bool.config_show_type_down_list_on_dialpad)) { + resetContactInfo(); + ViewUtils.setVisible(mRecyclerView, true); + mTypeDownResultsViewModel.setSearchQuery(number.toString()); + } else { + presentContactInfo(number.toString()); + } } @Override diff --git a/src/com/android/car/dialer/ui/dialpad/InCallDialpadFragment.java b/src/com/android/car/dialer/ui/dialpad/InCallDialpadFragment.java index 22079c93..8d8e5aa6 100644 --- a/src/com/android/car/dialer/ui/dialpad/InCallDialpadFragment.java +++ b/src/com/android/car/dialer/ui/dialpad/InCallDialpadFragment.java @@ -114,7 +114,7 @@ public class InCallDialpadFragment extends AbstractDialpadFragment { } @Override - public void setupToolbar(Toolbar toolbar) { + protected void setupToolbar(Toolbar toolbar) { // No-op } diff --git a/src/com/android/car/dialer/ui/dialpad/TypeDownResultsAdapter.java b/src/com/android/car/dialer/ui/dialpad/TypeDownResultsAdapter.java new file mode 100644 index 00000000..30ac4f33 --- /dev/null +++ b/src/com/android/car/dialer/ui/dialpad/TypeDownResultsAdapter.java @@ -0,0 +1,47 @@ +/* + * Copyright (C) 2020 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.car.dialer.ui.dialpad; + +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import com.android.car.dialer.R; +import com.android.car.dialer.ui.search.ContactResultViewHolder; +import com.android.car.dialer.ui.search.ContactResultsAdapter; + +/** + * An adapter used for type down functionality. + */ +public class TypeDownResultsAdapter extends ContactResultsAdapter { + + public TypeDownResultsAdapter() { + super(null); + } + + @Override + public ContactResultViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + View view = LayoutInflater.from(parent.getContext()) + .inflate(R.layout.type_down_list_item, parent, false); + return new ContactResultViewHolder(view, null); + } + + @Override + public void onBindViewHolder(ContactResultViewHolder holder, int position) { + holder.bindTypeDownResult(getContactResults().get(position)); + } +} diff --git a/src/com/android/car/dialer/ui/dialpad/TypeDownResultsViewModel.java b/src/com/android/car/dialer/ui/dialpad/TypeDownResultsViewModel.java new file mode 100644 index 00000000..8696fab4 --- /dev/null +++ b/src/com/android/car/dialer/ui/dialpad/TypeDownResultsViewModel.java @@ -0,0 +1,47 @@ +/* + * Copyright (C) 2020 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.car.dialer.ui.dialpad; + +import android.app.Application; + +import androidx.annotation.NonNull; +import androidx.lifecycle.LiveData; + +import com.android.car.dialer.ui.common.ContactResultsLiveData; +import com.android.car.dialer.ui.search.ContactResultsViewModel; + +import java.util.List; + +/** + * {link AndroidViewModel} used for type down functionality. + */ +public class TypeDownResultsViewModel extends ContactResultsViewModel { + + private final ContactResultsLiveData mContactSearchResultsLiveData; + + public TypeDownResultsViewModel(@NonNull Application application) { + super(application); + mContactSearchResultsLiveData = new ContactResultsLiveData(application, + getSearchQueryLiveData(), getSharedPreferencesLiveData(), + /* showOnlyOneEntry */ false); + } + + @Override + public LiveData<List<ContactResultsLiveData.ContactResultListItem>> getContactSearchResults() { + return mContactSearchResultsLiveData; + } +} diff --git a/src/com/android/car/dialer/ui/favorite/AddFavoriteFragment.java b/src/com/android/car/dialer/ui/favorite/AddFavoriteFragment.java index 574cee0c..a45d5bc7 100644 --- a/src/com/android/car/dialer/ui/favorite/AddFavoriteFragment.java +++ b/src/com/android/car/dialer/ui/favorite/AddFavoriteFragment.java @@ -17,18 +17,24 @@ package com.android.car.dialer.ui.favorite; import android.app.AlertDialog; +import android.graphics.drawable.Drawable; import android.os.Bundle; +import android.widget.Toast; import androidx.lifecycle.ViewModelProviders; import com.android.car.dialer.R; -import com.android.car.dialer.ui.common.FavoritePhoneNumberListAdapter; import com.android.car.dialer.ui.search.ContactResultsFragment; import com.android.car.telephony.common.Contact; import com.android.car.telephony.common.PhoneNumber; import com.android.car.ui.AlertDialogBuilder; +import com.android.car.ui.recyclerview.CarUiContentListItem; +import com.android.car.ui.recyclerview.CarUiListItem; +import com.android.car.ui.recyclerview.CarUiListItemAdapter; +import java.util.ArrayList; import java.util.HashSet; +import java.util.List; import java.util.Set; /** @@ -44,7 +50,12 @@ public class AddFavoriteFragment extends ContactResultsFragment { } private AlertDialog mCurrentDialog; - private FavoritePhoneNumberListAdapter mDialogAdapter; + private CarUiListItemAdapter mDialogAdapter; + private List<CarUiListItem> mFavoritePhoneNumberList; + private Set<PhoneNumber> mSelectedNumbers; + private Contact mSelectedContact; + private Drawable mFavoriteIcon; + private Drawable mFavoriteIconEmpty; @Override public void onCreate(Bundle savedInstanceState) { @@ -52,36 +63,77 @@ public class AddFavoriteFragment extends ContactResultsFragment { FavoriteViewModel favoriteViewModel = ViewModelProviders.of(getActivity()).get( FavoriteViewModel.class); - Set<PhoneNumber> selectedNumbers = new HashSet<>(); - - mDialogAdapter = new FavoritePhoneNumberListAdapter(getContext(), - (phoneNumber, itemView) -> { - boolean isActivated = itemView.isActivated(); - itemView.setActivated(!isActivated); - if (isActivated) { - selectedNumbers.remove(phoneNumber); - } else { - selectedNumbers.add(phoneNumber); - } - } - ); + mSelectedNumbers = new HashSet<>(); + + mFavoriteIcon = getResources().getDrawable(R.drawable.ic_favorite_activatable, null); + mFavoriteIcon.setTintList( + getResources().getColorStateList(R.color.primary_icon_selector, null)); + + mFavoritePhoneNumberList = new ArrayList<>(); + mDialogAdapter = new CarUiListItemAdapter(mFavoritePhoneNumberList); mCurrentDialog = new AlertDialogBuilder(getContext()) .setTitle(R.string.select_number_dialog_title) - .setAdapter(mDialogAdapter, null) + .setAdapter(mDialogAdapter) .setNegativeButton(R.string.cancel_add_favorites_dialog, null) .setPositiveButton(R.string.confirm_add_favorites_dialog, (d, which) -> { - for (PhoneNumber number : selectedNumbers) { - favoriteViewModel.addToFavorite(mDialogAdapter.getContact(), + for (PhoneNumber number : mSelectedNumbers) { + favoriteViewModel.addToFavorite(mSelectedContact, number); } - selectedNumbers.clear(); + mSelectedNumbers.clear(); getFragmentManager().popBackStackImmediate(); }) .create(); } + private void setPhoneNumbers(List<PhoneNumber> phoneNumbers) { + mFavoritePhoneNumberList.clear(); + for (PhoneNumber number : phoneNumbers) { + CarUiContentListItem item = new CarUiContentListItem(CarUiContentListItem.Action.ICON); + item.setTitle(number.getNumber()); + item.setSupplementalIcon(mFavoriteIcon.getConstantState().newDrawable()); + setFavoriteItemState(item, number); + + item.setOnItemClickedListener((listItem) -> { + if (mSelectedNumbers.contains(number)) { + mSelectedNumbers.remove(number); + listItem.setActivated(false); + } else { + mSelectedNumbers.add(number); + listItem.setActivated(true); + } + mDialogAdapter.notifyItemChanged(mFavoritePhoneNumberList.indexOf(listItem)); + }); + mFavoritePhoneNumberList.add(item); + } + mDialogAdapter.notifyDataSetChanged(); + } + + private void setFavoriteItemState(CarUiContentListItem item, PhoneNumber number) { + CharSequence readableLabel = number.getReadableLabel(getResources()); + + if (number.isFavorite()) { + // This phone number is marked as favorite locally. Disable the favorite action button. + item.setEnabled(false); + item.setActivated(true); + item.setBody(getResources().getString(R.string.favorite_number_description, + readableLabel)); + } else if (mSelectedContact.isStarred()) { + // This contact is downloaded from phone, all phone numbers under this contact will show + // under the favorite tab. Disable the favorite action button. + item.setActivated(false); + item.setEnabled(false); + item.setBody(getResources().getString(R.string.favorite_number_description, + readableLabel)); + } else { + item.setEnabled(true); + item.setActivated(false); + item.setBody(readableLabel); + } + } + @Override public void onShowContactDetail(Contact contact) { if (contact == null) { @@ -89,7 +141,13 @@ public class AddFavoriteFragment extends ContactResultsFragment { return; } - mDialogAdapter.setPhoneNumbers(contact, contact.getNumbers()); - mCurrentDialog.show(); + mSelectedContact = contact; + if (contact.getNumbers().isEmpty()) { + Toast.makeText(getContext(), R.string.no_phone_numbers, Toast.LENGTH_SHORT).show(); + mCurrentDialog.dismiss(); + } else { + setPhoneNumbers(contact.getNumbers()); + mCurrentDialog.show(); + } } } diff --git a/src/com/android/car/dialer/ui/favorite/BluetoothFavoriteContactsLiveData.java b/src/com/android/car/dialer/ui/favorite/BluetoothFavoriteContactsLiveData.java new file mode 100644 index 00000000..a030b3bd --- /dev/null +++ b/src/com/android/car/dialer/ui/favorite/BluetoothFavoriteContactsLiveData.java @@ -0,0 +1,76 @@ +/* + * Copyright (C) 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.car.dialer.ui.favorite; + +import android.content.Context; +import android.database.Cursor; +import android.provider.ContactsContract; + +import androidx.annotation.NonNull; + +import com.android.car.telephony.common.AsyncQueryLiveData; +import com.android.car.telephony.common.Contact; +import com.android.car.telephony.common.QueryParam; + +import java.util.ArrayList; +import java.util.List; + +/** Presents the favorite contacts downloaded from phone. It reads the contacts provider. */ +class BluetoothFavoriteContactsLiveData extends AsyncQueryLiveData<List<Contact>> { + private final Context mContext; + + BluetoothFavoriteContactsLiveData(Context context) { + super(context, QueryParam.of(new FavoriteQueryParam())); + mContext = context; + } + + @Override + protected List<Contact> convertToEntity(@NonNull Cursor cursor) { + List<Contact> resultList = new ArrayList<>(); + + while (cursor.moveToNext()) { + Contact favoriteEntry = Contact.fromCursor(mContext, cursor); + // If there is already a contact with the same phone number, don't add duplicate + // entries. + boolean alreadyExists = false; + for (Contact contact : resultList) { + if (favoriteEntry.equals(contact) && favoriteEntry.getNumbers().containsAll( + contact.getNumbers())) { + alreadyExists = true; + break; + } + } + if (!alreadyExists) { + resultList.add(favoriteEntry); + } + } + return resultList; + } + + private static class FavoriteQueryParam extends QueryParam { + FavoriteQueryParam() { + super(ContactsContract.Data.CONTENT_URI, + null, + ContactsContract.Data.MIMETYPE + " = ? AND " + + ContactsContract.CommonDataKinds.Phone.STARRED + " = ? ", + new String[]{ + ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE, + String.valueOf(1)}, + ContactsContract.Contacts.DISPLAY_NAME + " ASC "); + } + } +} diff --git a/src/com/android/car/dialer/ui/favorite/FavoriteAdapter.java b/src/com/android/car/dialer/ui/favorite/FavoriteAdapter.java index da7ebe51..a140c0d3 100644 --- a/src/com/android/car/dialer/ui/favorite/FavoriteAdapter.java +++ b/src/com/android/car/dialer/ui/favorite/FavoriteAdapter.java @@ -25,6 +25,7 @@ import androidx.recyclerview.widget.RecyclerView; import com.android.car.dialer.R; import com.android.car.dialer.log.L; import com.android.car.dialer.ui.common.OnItemClickedListener; +import com.android.car.dialer.ui.common.entity.Header; import com.android.car.telephony.common.Contact; import java.util.Collections; @@ -35,21 +36,28 @@ import java.util.List; */ public class FavoriteAdapter extends RecyclerView.Adapter<FavoriteContactViewHolder> { private static final String TAG = "CD.FavoriteAdapter"; - private static final int TYPE_CONTACT = 0; - private static final int TYPE_ADD_FAVORITE = 1; + static final int TYPE_CONTACT = 0; + static final int TYPE_HEADER = 1; + static final int TYPE_ADD_FAVORITE = 2; - /** Listener interface for when the add favorite button is clicked */ + /** + * Listener interface for when the add favorite button is clicked + */ public interface OnAddFavoriteClickedListener { - /** Called when the add favorite button is clicked */ + /** + * Called when the add favorite button is clicked + */ void onAddFavoriteClicked(); } - private List<Contact> mFavoriteContacts = Collections.emptyList(); + private List<Object> mFavoriteContacts = Collections.emptyList(); private OnItemClickedListener<Contact> mListener; private OnAddFavoriteClickedListener mAddFavoriteListener; - /** Sets the favorite contact list. */ - public void setFavoriteContacts(List<Contact> favoriteContacts) { + /** + * Sets the favorite contact list. + */ + public void setFavoriteContacts(List<Object> favoriteContacts) { L.d(TAG, "setFavoriteContacts %s", favoriteContacts); mFavoriteContacts = (favoriteContacts != null) ? favoriteContacts : Collections.emptyList(); notifyDataSetChanged(); @@ -57,42 +65,57 @@ public class FavoriteAdapter extends RecyclerView.Adapter<FavoriteContactViewHol @Override public int getItemCount() { - return mFavoriteContacts.size() + 1; // +1 for the "Add a favorite" button + return mFavoriteContacts.size(); } @Override public int getItemViewType(int position) { - return position < mFavoriteContacts.size() - ? TYPE_CONTACT - : TYPE_ADD_FAVORITE; + Object item = mFavoriteContacts.get(position); + if (item instanceof Contact) { + return TYPE_CONTACT; + } else if (item instanceof Header) { + return TYPE_HEADER; + } else { + return TYPE_ADD_FAVORITE; + } } @Override public FavoriteContactViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { - View view; + int layoutId; if (viewType == TYPE_CONTACT) { - view = LayoutInflater.from(parent.getContext()) - .inflate(R.layout.favorite_contact_list_item, parent, false); + layoutId = R.layout.favorite_contact_list_item; + } else if (viewType == TYPE_HEADER) { + layoutId = R.layout.header_item; } else { - view = LayoutInflater.from(parent.getContext()) - .inflate(R.layout.add_favorite_list_item, parent, false); + layoutId = R.layout.add_favorite_list_item; } + View view = LayoutInflater.from(parent.getContext()).inflate(layoutId, parent, false); return new FavoriteContactViewHolder(view); } @Override public void onBindViewHolder(FavoriteContactViewHolder viewHolder, int position) { - if (getItemViewType(position) == TYPE_CONTACT) { - Contact contact = mFavoriteContacts.get(position); - viewHolder.onBind(contact); - viewHolder.itemView.setOnClickListener((v) -> onItemViewClicked(contact)); - } else { - viewHolder.itemView.setOnClickListener((v) -> { - if (mAddFavoriteListener != null) { - mAddFavoriteListener.onAddFavoriteClicked(); - } - }); + int itemViewType = getItemViewType(position); + switch (itemViewType) { + case TYPE_CONTACT: + Contact contact = (Contact) mFavoriteContacts.get(position); + viewHolder.onBind(contact); + viewHolder.itemView.setOnClickListener(v -> onItemViewClicked(contact)); + break; + case TYPE_HEADER: + Header header = (Header) mFavoriteContacts.get(position); + viewHolder.onBind(header); + viewHolder.itemView.setOnClickListener(null); + break; + case TYPE_ADD_FAVORITE: + viewHolder.itemView.setOnClickListener(v -> { + if (mAddFavoriteListener != null) { + mAddFavoriteListener.onAddFavoriteClicked(); + } + }); + break; } } @@ -110,8 +133,8 @@ public class FavoriteAdapter extends RecyclerView.Adapter<FavoriteContactViewHol } /** - * Sets a {@link OnAddFavoriteClickedListener listener} which will be called when the - * "Add favorite" button is clicked. + * Sets a {@link OnAddFavoriteClickedListener listener} which will be called when the "Add + * favorite" button is clicked. */ public void setOnAddFavoriteClickedListener(OnAddFavoriteClickedListener listener) { mAddFavoriteListener = listener; diff --git a/src/com/android/car/dialer/ui/favorite/FavoriteContactViewHolder.java b/src/com/android/car/dialer/ui/favorite/FavoriteContactViewHolder.java index 137a150f..f9c17e24 100644 --- a/src/com/android/car/dialer/ui/favorite/FavoriteContactViewHolder.java +++ b/src/com/android/car/dialer/ui/favorite/FavoriteContactViewHolder.java @@ -21,10 +21,13 @@ import android.view.View; import android.widget.ImageView; import android.widget.TextView; +import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; +import com.android.car.apps.common.util.ViewUtils; import com.android.car.dialer.R; import com.android.car.dialer.log.L; +import com.android.car.dialer.ui.common.entity.Header; import com.android.car.dialer.ui.view.ContactAvatarOutputlineProvider; import com.android.car.telephony.common.Contact; import com.android.car.telephony.common.PhoneNumber; @@ -32,8 +35,6 @@ import com.android.car.telephony.common.TelecomUtils; import java.util.List; -import javax.annotation.Nonnull; - /** * A {@link RecyclerView.ViewHolder ViewHolder} that will hold layouts for favorite contacts list * items. @@ -58,7 +59,7 @@ class FavoriteContactViewHolder extends RecyclerView.ViewHolder { /** * Binds view with favorite contact. */ - public void onBind(@Nonnull Contact contact) { + public void onBind(@NonNull Contact contact) { Context context = itemView.getContext(); String displayName = contact.getDisplayName(); mTitle.setText(displayName); @@ -85,4 +86,8 @@ class FavoriteContactViewHolder extends RecyclerView.ViewHolder { TelecomUtils.setContactBitmapAsync(context, mIcon, contact); } + + public void onBind(@NonNull Header header) { + ViewUtils.setText(mTitle, header.getHeader()); + } } diff --git a/src/com/android/car/dialer/ui/favorite/FavoriteFragment.java b/src/com/android/car/dialer/ui/favorite/FavoriteFragment.java index 7e76f32e..c870dcf4 100644 --- a/src/com/android/car/dialer/ui/favorite/FavoriteFragment.java +++ b/src/com/android/car/dialer/ui/favorite/FavoriteFragment.java @@ -16,6 +16,7 @@ package com.android.car.dialer.ui.favorite; +import android.content.Context; import android.content.res.Resources; import android.graphics.Rect; import android.os.Bundle; @@ -38,6 +39,7 @@ import com.android.car.telephony.common.Contact; * Contains a list of favorite contacts. */ public class FavoriteFragment extends DialerListBaseFragment { + private FavoriteAdapter mFavoriteAdapter; /** * Constructs a new {@link FavoriteFragment} @@ -48,15 +50,16 @@ public class FavoriteFragment extends DialerListBaseFragment { @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); getRecyclerView().addItemDecoration(new ItemSpacingDecoration()); getRecyclerView().setItemAnimator(null); - FavoriteAdapter adapter = new FavoriteAdapter(); - adapter.setOnAddFavoriteClickedListener(this::onAddFavoriteClicked); + mFavoriteAdapter = new FavoriteAdapter(); + mFavoriteAdapter.setOnAddFavoriteClickedListener(this::onAddFavoriteClicked); FavoriteViewModel favoriteViewModel = ViewModelProviders.of(getActivity()).get( FavoriteViewModel.class); - adapter.setOnListItemClickedListener(this::onItemClicked); + mFavoriteAdapter.setOnListItemClickedListener(this::onItemClicked); favoriteViewModel.getFavoriteContacts().observe(this, contacts -> { if (contacts.isLoading()) { showLoading(); @@ -65,20 +68,18 @@ public class FavoriteFragment extends DialerListBaseFragment { R.string.no_favorites_added, R.string.add_favorite_button, v -> onAddFavoriteClicked(), true); } else { - adapter.setFavoriteContacts(contacts.getData()); + mFavoriteAdapter.setFavoriteContacts(contacts.getData()); showContent(); } }); - getRecyclerView().setAdapter(adapter); + getRecyclerView().setAdapter(mFavoriteAdapter); } @NonNull @Override protected RecyclerView.LayoutManager createLayoutManager() { - int numOfColumn = getContext().getResources().getInteger( - R.integer.favorite_fragment_grid_column); - return new GridLayoutManager(getContext(), numOfColumn); + return new FavoriteLayoutManager(getContext()); } private void onItemClicked(Contact contact) { @@ -110,4 +111,21 @@ public class FavoriteFragment extends DialerListBaseFragment { outRect.set(leftPadding, verticalPadding, 0, verticalPadding); } } + + private class FavoriteLayoutManager extends GridLayoutManager { + private FavoriteLayoutManager(Context context) { + super(context, + context.getResources().getInteger(R.integer.favorite_fragment_grid_column)); + SpanSizeLookup spanSizeLookup = new SpanSizeLookup() { + @Override + public int getSpanSize(int position) { + if (mFavoriteAdapter.getItemViewType(position) == FavoriteAdapter.TYPE_HEADER) { + return getSpanCount(); + } + return 1; + } + }; + setSpanSizeLookup(spanSizeLookup); + } + } } diff --git a/src/com/android/car/dialer/ui/favorite/FavoriteViewModel.java b/src/com/android/car/dialer/ui/favorite/FavoriteViewModel.java index 3f55d424..6e938caa 100644 --- a/src/com/android/car/dialer/ui/favorite/FavoriteViewModel.java +++ b/src/com/android/car/dialer/ui/favorite/FavoriteViewModel.java @@ -20,13 +20,18 @@ import android.app.Application; import androidx.lifecycle.AndroidViewModel; import androidx.lifecycle.LiveData; +import androidx.lifecycle.MediatorLiveData; import com.android.car.arch.common.FutureData; import com.android.car.arch.common.LiveDataFunctions; +import com.android.car.dialer.R; import com.android.car.dialer.storage.FavoriteNumberRepository; +import com.android.car.dialer.ui.common.entity.ActionButton; +import com.android.car.dialer.ui.common.entity.Header; import com.android.car.telephony.common.Contact; import com.android.car.telephony.common.PhoneNumber; +import java.util.ArrayList; import java.util.List; /** @@ -34,18 +39,52 @@ import java.util.List; */ public class FavoriteViewModel extends AndroidViewModel { private final FavoriteNumberRepository mFavoriteNumberRepository; - private final LiveData<FutureData<List<Contact>>> mFavoriteContacts; + private final LiveData<FutureData<List<Object>>> mFavoriteContacts; + private final LiveData<List<Contact>> mBluetoothFavoriteContacts; public FavoriteViewModel(Application application) { super(application); mFavoriteNumberRepository = FavoriteNumberRepository.getRepository(application); + mBluetoothFavoriteContacts = new BluetoothFavoriteContactsLiveData(application); + + MediatorLiveData<List<Object>> favoriteContacts = new MediatorLiveData<>(); + favoriteContacts.addSource(mFavoriteNumberRepository.getFavoriteContacts(), contacts -> { + List<Object> contactList = new ArrayList<>(); + if (mBluetoothFavoriteContacts.getValue() != null + && !mBluetoothFavoriteContacts.getValue().isEmpty()) { + contactList.add(new Header(application.getString(R.string.phone_favorites))); + contactList.addAll(mBluetoothFavoriteContacts.getValue()); + } + contactList.add(new Header(application.getString(R.string.local_favorites))); + if (contacts != null) { + contactList.addAll(contacts); + } + contactList.add(new ActionButton()); + favoriteContacts.setValue(contactList); + }); + favoriteContacts.addSource(mBluetoothFavoriteContacts, contacts -> { + List<Object> contactList = new ArrayList<>(); + if (contacts != null && !contacts.isEmpty()) { + contactList.add(new Header(application.getString(R.string.phone_favorites))); + contactList.addAll(contacts); + } + contactList.add(new Header(application.getString(R.string.local_favorites))); + if (mFavoriteNumberRepository.getFavoriteContacts().getValue() != null) { + contactList.addAll(mFavoriteNumberRepository.getFavoriteContacts().getValue()); + } + contactList.add(new ActionButton()); + favoriteContacts.setValue(contactList); + }); mFavoriteContacts = LiveDataFunctions.loadingSwitchMap( - mFavoriteNumberRepository.getFavoriteContacts(), + favoriteContacts, input -> LiveDataFunctions.dataOf(input == null || input.isEmpty() ? null : input)); + } - /** Returns favorite contact list live data. */ - public LiveData<FutureData<List<Contact>>> getFavoriteContacts() { + /** + * Returns favorite contact list live data. + */ + public LiveData<FutureData<List<Object>>> getFavoriteContacts() { return mFavoriteContacts; } diff --git a/src/com/android/car/dialer/ui/search/ContactResultViewHolder.java b/src/com/android/car/dialer/ui/search/ContactResultViewHolder.java index ad1d1391..19127e9e 100644 --- a/src/com/android/car/dialer/ui/search/ContactResultViewHolder.java +++ b/src/com/android/car/dialer/ui/search/ContactResultViewHolder.java @@ -21,32 +21,46 @@ import android.view.View; import android.widget.ImageView; import android.widget.TextView; +import androidx.annotation.Nullable; import androidx.recyclerview.widget.RecyclerView; +import com.android.car.apps.common.util.ViewUtils; import com.android.car.dialer.R; +import com.android.car.dialer.telecom.UiCallManager; +import com.android.car.dialer.ui.common.ContactResultsLiveData; +import com.android.car.dialer.ui.common.DialerUtils; import com.android.car.dialer.ui.view.ContactAvatarOutputlineProvider; import com.android.car.telephony.common.Contact; import com.android.car.telephony.common.TelecomUtils; +import com.bumptech.glide.Glide; + /** - * A {@link androidx.recyclerview.widget.RecyclerView.ViewHolder} that will parse relevant - * views out of a {@code contact_result} layout. + * A {@link androidx.recyclerview.widget.RecyclerView.ViewHolder} that will parse relevant views out + * of a {@code contact_result} layout. */ public class ContactResultViewHolder extends RecyclerView.ViewHolder { + private static final String TAG = "CD.ContactResultVH"; + private final Context mContext; private final View mContactCard; private final TextView mContactName; + private final TextView mContactNumber; private final ImageView mContactPicture; private final ContactResultsAdapter.OnShowContactDetailListener mOnShowContactDetailListener; public ContactResultViewHolder(View view, - ContactResultsAdapter.OnShowContactDetailListener onShowContactDetailListener) { + @Nullable ContactResultsAdapter.OnShowContactDetailListener + onShowContactDetailListener) { super(view); mContext = view.getContext(); mContactCard = view.findViewById(R.id.contact_result); mContactName = view.findViewById(R.id.contact_name); + mContactNumber = view.findViewById(R.id.phone_number); mContactPicture = view.findViewById(R.id.contact_picture); - mContactPicture.setOutlineProvider(ContactAvatarOutputlineProvider.get()); + if (mContactPicture != null) { + mContactPicture.setOutlineProvider(ContactAvatarOutputlineProvider.get()); + } mOnShowContactDetailListener = onShowContactDetailListener; } @@ -54,11 +68,40 @@ public class ContactResultViewHolder extends RecyclerView.ViewHolder { * Populates the view that is represented by this ViewHolder with the information in the * provided {@link Contact}. */ - public void bind(Contact contact) { - mContactCard.setOnClickListener( - v -> mOnShowContactDetailListener.onShowContactDetail(contact)); + public void bindSearchResult(ContactResultsLiveData.ContactResultListItem contactResult) { + Contact contact = contactResult.getContact(); - mContactName.setText(contact.getDisplayName()); + ViewUtils.setText(mContactName, contact.getDisplayName()); TelecomUtils.setContactBitmapAsync(mContext, mContactPicture, contact); + + if (DialerUtils.hasContactDetail(itemView.getResources(), contact)) { + mContactCard.setOnClickListener( + v -> mOnShowContactDetailListener.onShowContactDetail(contact)); + } else { + itemView.setEnabled(false); + } + } + + /** + * Populates the view that is represented by this ViewHolder with the information in the + * provided {@link Contact}. + */ + public void bindTypeDownResult(ContactResultsLiveData.ContactResultListItem contactResult) { + Contact contact = contactResult.getContact(); + String number = contactResult.getNumber(); + + ViewUtils.setText(mContactNumber, number); + ViewUtils.setText(mContactName, contact.getDisplayName()); + mContactCard.setOnClickListener( + v -> UiCallManager.get().placeCall(mContactNumber.getText().toString())); + TelecomUtils.setContactBitmapAsync(mContext, mContactPicture, contact); + } + + void recycle() { + itemView.setEnabled(true); + mContactCard.setOnClickListener(null); + if (mContactPicture != null) { + Glide.with(mContext).clear(mContactPicture); + } } } diff --git a/src/com/android/car/dialer/ui/search/ContactResultsAdapter.java b/src/com/android/car/dialer/ui/search/ContactResultsAdapter.java index 7b1ac1f0..cb35f2b9 100644 --- a/src/com/android/car/dialer/ui/search/ContactResultsAdapter.java +++ b/src/com/android/car/dialer/ui/search/ContactResultsAdapter.java @@ -24,6 +24,7 @@ import android.view.ViewGroup; import androidx.recyclerview.widget.RecyclerView; import com.android.car.dialer.R; +import com.android.car.dialer.ui.common.ContactResultsLiveData; import com.android.car.telephony.common.Contact; import java.util.ArrayList; @@ -39,7 +40,8 @@ public class ContactResultsAdapter extends RecyclerView.Adapter<ContactResultVie void onShowContactDetail(Contact contact); } - private final List<Contact> mContacts = new ArrayList<>(); + private final List<ContactResultsLiveData.ContactResultListItem> mContactResults = + new ArrayList<>(); private final OnShowContactDetailListener mOnShowContactDetailListener; public ContactResultsAdapter(OnShowContactDetailListener onShowContactDetailListener) { @@ -50,7 +52,7 @@ public class ContactResultsAdapter extends RecyclerView.Adapter<ContactResultVie * Clears all contact results from this adapter. */ public void clear() { - mContacts.clear(); + mContactResults.clear(); notifyDataSetChanged(); } @@ -58,9 +60,9 @@ public class ContactResultsAdapter extends RecyclerView.Adapter<ContactResultVie * Sets the list of contacts that should be displayed. The given {@link Cursor} can be safely * closed after this call. */ - public void setData(List<Contact> data) { - mContacts.clear(); - mContacts.addAll(data); + public void setData(List<ContactResultsLiveData.ContactResultListItem> data) { + mContactResults.clear(); + mContactResults.addAll(data); notifyDataSetChanged(); } @@ -73,7 +75,12 @@ public class ContactResultsAdapter extends RecyclerView.Adapter<ContactResultVie @Override public void onBindViewHolder(ContactResultViewHolder holder, int position) { - holder.bind(mContacts.get(position)); + holder.bindSearchResult(mContactResults.get(position)); + } + + @Override + public void onViewRecycled(ContactResultViewHolder holder) { + holder.recycle(); } @Override @@ -84,6 +91,13 @@ public class ContactResultsAdapter extends RecyclerView.Adapter<ContactResultVie @Override public int getItemCount() { - return mContacts.size(); + return mContactResults.size(); + } + + /** + * Returns contact results. + */ + public List<ContactResultsLiveData.ContactResultListItem> getContactResults() { + return mContactResults; } } diff --git a/src/com/android/car/dialer/ui/search/ContactResultsFragment.java b/src/com/android/car/dialer/ui/search/ContactResultsFragment.java index b35378e9..3603e944 100644 --- a/src/com/android/car/dialer/ui/search/ContactResultsFragment.java +++ b/src/com/android/car/dialer/ui/search/ContactResultsFragment.java @@ -89,6 +89,7 @@ public class ContactResultsFragment extends DialerListBaseFragment implements @Override public void onViewCreated(View view, Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); getRecyclerView().setAdapter(mAdapter); mOnScrollChangeListener = new RecyclerView.OnScrollListener() { @@ -114,7 +115,7 @@ public class ContactResultsFragment extends DialerListBaseFragment implements } @Override - public void setupToolbar(@NonNull Toolbar toolbar) { + protected void setupToolbar(@NonNull Toolbar toolbar) { super.setupToolbar(toolbar); mToolbar = toolbar; mToolbar.registerOnSearchListener(this); diff --git a/src/com/android/car/dialer/ui/search/ContactResultsViewModel.java b/src/com/android/car/dialer/ui/search/ContactResultsViewModel.java index 43969afe..7678da48 100644 --- a/src/com/android/car/dialer/ui/search/ContactResultsViewModel.java +++ b/src/com/android/car/dialer/ui/search/ContactResultsViewModel.java @@ -17,40 +17,23 @@ package com.android.car.dialer.ui.search; import android.app.Application; -import android.content.Context; -import android.content.SharedPreferences; -import android.database.Cursor; -import android.net.Uri; -import android.provider.ContactsContract; import android.text.TextUtils; import androidx.annotation.NonNull; -import androidx.annotation.Nullable; import androidx.lifecycle.AndroidViewModel; import androidx.lifecycle.LiveData; -import androidx.lifecycle.MediatorLiveData; import androidx.lifecycle.MutableLiveData; import com.android.car.dialer.R; import com.android.car.dialer.livedata.SharedPreferencesLiveData; -import com.android.car.dialer.ui.common.entity.ContactSortingInfo; -import com.android.car.telephony.common.Contact; -import com.android.car.telephony.common.InMemoryPhoneBook; -import com.android.car.telephony.common.ObservableAsyncQuery; -import com.android.car.telephony.common.QueryParam; +import com.android.car.dialer.ui.common.ContactResultsLiveData; -import java.util.ArrayList; -import java.util.Collections; import java.util.List; /** * {link AndroidViewModel} used for search functionality. */ public class ContactResultsViewModel extends AndroidViewModel { - private static final String[] CONTACT_DETAILS_PROJECTION = { - ContactsContract.Contacts._ID, - ContactsContract.Contacts.LOOKUP_KEY - }; private final ContactResultsLiveData mContactSearchResultsLiveData; private final MutableLiveData<String> mSearchQueryLiveData; @@ -65,7 +48,10 @@ public class ContactResultsViewModel extends AndroidViewModel { mSearchQueryLiveData, mSharedPreferencesLiveData); } - void setSearchQuery(String searchQuery) { + /** + * Sets search query. + */ + public void setSearchQuery(String searchQuery) { if (TextUtils.equals(mSearchQueryLiveData.getValue(), searchQuery)) { return; } @@ -73,105 +59,31 @@ public class ContactResultsViewModel extends AndroidViewModel { mSearchQueryLiveData.setValue(searchQuery); } - LiveData<List<Contact>> getContactSearchResults() { + /** + * Returns live data of search results. + */ + public LiveData<List<ContactResultsLiveData.ContactResultListItem>> getContactSearchResults() { return mContactSearchResultsLiveData; } - String getSearchQuery() { + /** + * Returns search query. + */ + public String getSearchQuery() { return mSearchQueryLiveData.getValue(); } - private static class ContactResultsLiveData extends MediatorLiveData<List<Contact>> { - private final Context mContext; - private final SearchQueryParamProvider mSearchQueryParamProvider; - private final ObservableAsyncQuery mObservableAsyncQuery; - private final LiveData<String> mSearchQueryLiveData; - private final LiveData<List<Contact>> mContactListLiveData; - private final SharedPreferencesLiveData mSharedPreferencesLiveData; - - ContactResultsLiveData(Context context, - LiveData<String> searchQueryLiveData, - SharedPreferencesLiveData sharedPreferencesLiveData) { - mContext = context; - mSearchQueryParamProvider = new SearchQueryParamProvider(searchQueryLiveData); - mObservableAsyncQuery = new ObservableAsyncQuery(mSearchQueryParamProvider, - context.getContentResolver(), this::onQueryFinished); - - mContactListLiveData = InMemoryPhoneBook.get().getContactsLiveData(); - addSource(mContactListLiveData, this::onContactsChange); - mSearchQueryLiveData = searchQueryLiveData; - addSource(mSearchQueryLiveData, this::onSearchQueryChanged); - - mSharedPreferencesLiveData = sharedPreferencesLiveData; - addSource(mSharedPreferencesLiveData, this::onSortOrderChanged); - } - - private void onContactsChange(List<Contact> contactList) { - if (contactList == null || contactList.isEmpty()) { - mObservableAsyncQuery.stopQuery(); - setValue(Collections.emptyList()); - } else { - onSearchQueryChanged(mSearchQueryLiveData.getValue()); - } - } - - private void onSearchQueryChanged(String searchQuery) { - if (TextUtils.isEmpty(searchQuery)) { - mObservableAsyncQuery.stopQuery(); - List<Contact> contacts = mContactListLiveData.getValue(); - setValue(contacts == null ? Collections.emptyList() : contacts); - } else { - mObservableAsyncQuery.startQuery(); - } - } - - private void onSortOrderChanged(SharedPreferences unusedSharedPreferences) { - setValue(getValue()); - } - - private void onQueryFinished(@Nullable Cursor cursor) { - if (cursor == null) { - setValue(Collections.emptyList()); - return; - } - - List<Contact> contacts = new ArrayList<>(); - while (cursor.moveToNext()) { - int lookupKeyColIdx = cursor.getColumnIndex(ContactsContract.Contacts.LOOKUP_KEY); - List<Contact> lookupResults = InMemoryPhoneBook.get().lookupContactByKey( - cursor.getString(lookupKeyColIdx)); - contacts.addAll(lookupResults); - } - setValue(contacts); - cursor.close(); - } - - @Override - public void setValue(List<Contact> contacts) { - if (contacts != null && !contacts.isEmpty()) { - Collections.sort(contacts, - ContactSortingInfo.getSortingInfo(mContext, - mSharedPreferencesLiveData).first); - } - super.setValue(contacts); - } + /** + * Returns Search Query LiveData. + */ + public MutableLiveData<String> getSearchQueryLiveData() { + return mSearchQueryLiveData; } - private static class SearchQueryParamProvider implements QueryParam.Provider { - private final LiveData<String> mSearchQueryLiveData; - - private SearchQueryParamProvider(LiveData<String> searchQueryLiveData) { - mSearchQueryLiveData = searchQueryLiveData; - } - - @Nullable - @Override - public QueryParam getQueryParam() { - Uri lookupUri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_FILTER_URI, - Uri.encode(mSearchQueryLiveData.getValue())); - return new QueryParam(lookupUri, CONTACT_DETAILS_PROJECTION, - ContactsContract.Contacts.HAS_PHONE_NUMBER + "!=0", - /* selectionArgs= */null, /* orderBy= */null); - } + /** + * Returns Shared Preferences LiveData. + */ + public SharedPreferencesLiveData getSharedPreferencesLiveData() { + return mSharedPreferencesLiveData; } } diff --git a/src/com/android/car/dialer/widget/LoadingFrameLayout.java b/src/com/android/car/dialer/widget/LoadingFrameLayout.java index 1011bed2..0f21a478 100644 --- a/src/com/android/car/dialer/widget/LoadingFrameLayout.java +++ b/src/com/android/car/dialer/widget/LoadingFrameLayout.java @@ -228,7 +228,7 @@ public class LoadingFrameLayout extends FrameLayout { if (mState != state) { L.d(TAG, "Switch to state: %d", state); // Hides, or shows, all the children, including the loading and error views. - setChildVisibility(state == State.CONTENT ? View.VISIBLE : View.GONE); + ViewUtils.setVisible((View) findViewById(R.id.list_view), state == State.CONTENT); // Corrects the visibility setting for error and loading views since they are // shown independently of the views content. @@ -240,13 +240,6 @@ public class LoadingFrameLayout extends FrameLayout { } } - private void setChildVisibility(int visibility) { - int childCount = getChildCount(); - for (int i = 0; i < childCount; i++) { - getChildAt(i).setVisibility(visibility); - } - } - /** * Container for views held by this LoadingFrameLayout. Used for deferring view inflation until * the view is about to be shown. diff --git a/tests/robotests/res/layout/test_activity.xml b/tests/robotests/res/layout/test_activity.xml index e7e82916..0bc280cd 100644 --- a/tests/robotests/res/layout/test_activity.xml +++ b/tests/robotests/res/layout/test_activity.xml @@ -19,7 +19,7 @@ android:layout_width="match_parent" android:layout_height="match_parent"> <com.android.car.ui.toolbar.Toolbar - android:id="@+id/car_ui_toolbar" + android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="wrap_content"/> </FrameLayout> diff --git a/tests/robotests/src/com/android/car/dialer/telecom/InCallServiceImplTest.java b/tests/robotests/src/com/android/car/dialer/telecom/InCallServiceImplTest.java index e0d8a489..f4f54b94 100644 --- a/tests/robotests/src/com/android/car/dialer/telecom/InCallServiceImplTest.java +++ b/tests/robotests/src/com/android/car/dialer/telecom/InCallServiceImplTest.java @@ -33,9 +33,11 @@ import android.car.CarProjectionManager; import android.content.Context; import android.content.Intent; import android.telecom.Call; +import android.telecom.CallAudioState; import com.android.car.dialer.CarDialerRobolectricTestRunner; import com.android.car.dialer.testutils.ShadowCar; +import com.android.car.dialer.ui.activecall.InCallActivity; import org.junit.Before; import org.junit.Test; @@ -47,7 +49,9 @@ import org.robolectric.Robolectric; import org.robolectric.RuntimeEnvironment; import org.robolectric.android.controller.ServiceController; import org.robolectric.annotation.Config; +import org.robolectric.shadows.ShadowApplication; import org.robolectric.shadows.ShadowContextWrapper; +import org.robolectric.shadows.ShadowIntent; import org.robolectric.shadows.ShadowLooper; /** @@ -70,7 +74,9 @@ public class InCallServiceImplTest { @Mock private Call.Details mMockCallDetails; @Mock - private InCallServiceImpl.Callback mCallback; + private CallAudioState mMockCallAudioState; + @Mock + private InCallServiceImpl.CallAudioStateCallback mCallAudioStateCallback; @Mock private InCallServiceImpl.ActiveCallListChangedCallback mActiveCallListChangedCallback; @@ -88,7 +94,6 @@ public class InCallServiceImplTest { inCallServiceController.create().bind(); mInCallServiceImpl = inCallServiceController.get(); - mInCallServiceImpl.registerCallback(mCallback); mInCallServiceImpl.addActiveCallListChangedCallback(mActiveCallListChangedCallback); ShadowLooper.runUiThreadTasksIncludingDelayedTasks(); @@ -102,8 +107,6 @@ public class InCallServiceImplTest { mInCallServiceImpl.onCallAdded(mMockTelecomCall); ArgumentCaptor<Call> callCaptor = ArgumentCaptor.forClass(Call.class); - verify(mCallback).onTelecomCallAdded(callCaptor.capture()); - assertThat(callCaptor.getValue()).isEqualTo(mMockTelecomCall); verify(mActiveCallListChangedCallback).onTelecomCallAdded(callCaptor.capture()); assertThat(callCaptor.getValue()).isEqualTo(mMockTelecomCall); @@ -119,8 +122,6 @@ public class InCallServiceImplTest { mInCallServiceImpl.onCallRemoved(mMockTelecomCall); ArgumentCaptor<Call> callCaptor = ArgumentCaptor.forClass(Call.class); - verify(mCallback).onTelecomCallRemoved(callCaptor.capture()); - assertThat(callCaptor.getValue()).isEqualTo(mMockTelecomCall); verify(mActiveCallListChangedCallback).onTelecomCallRemoved(callCaptor.capture()); assertThat(callCaptor.getValue()).isEqualTo(mMockTelecomCall); @@ -132,8 +133,6 @@ public class InCallServiceImplTest { mInCallServiceImpl.onCallAdded(mMockTelecomCall); ArgumentCaptor<Call> callCaptor = ArgumentCaptor.forClass(Call.class); - verify(mCallback).onTelecomCallAdded(callCaptor.capture()); - assertThat(callCaptor.getValue()).isEqualTo(mMockTelecomCall); verify(mActiveCallListChangedCallback).onTelecomCallAdded(callCaptor.capture()); assertThat(callCaptor.getValue()).isEqualTo(mMockTelecomCall); @@ -148,24 +147,33 @@ public class InCallServiceImplTest { } @Test - public void testUnregisterCallback() { - mInCallServiceImpl.unregisterCallback(mCallback); + public void testRemoveActiveCallListChangedCallback() { + mInCallServiceImpl.removeActiveCallListChangedCallback(mActiveCallListChangedCallback); mInCallServiceImpl.onCallAdded(mMockTelecomCall); - verify(mCallback, never()).onTelecomCallAdded(any()); + verify(mActiveCallListChangedCallback, never()).onTelecomCallAdded(any()); mInCallServiceImpl.onCallRemoved(mMockTelecomCall); - verify(mCallback, never()).onTelecomCallRemoved(any()); + verify(mActiveCallListChangedCallback, never()).onTelecomCallRemoved(any()); } @Test - public void testRemoveActiveCallListChangedCallback() { - mInCallServiceImpl.removeActiveCallListChangedCallback(mActiveCallListChangedCallback); + public void testAddCallAudioStateChangedCallback() { + mInCallServiceImpl.addCallAudioStateChangedCallback(mCallAudioStateCallback); + + mInCallServiceImpl.onCallAudioStateChanged(mMockCallAudioState); + verify(mCallAudioStateCallback).onCallAudioStateChanged(any()); + } + + @Test + public void testOnBringToForeground() { + ShadowApplication shadow = shadowOf(mInCallServiceImpl.getApplication()); mInCallServiceImpl.onCallAdded(mMockTelecomCall); - verify(mActiveCallListChangedCallback, never()).onTelecomCallAdded(any()); + mInCallServiceImpl.onBringToForeground(false); - mInCallServiceImpl.onCallRemoved(mMockTelecomCall); - verify(mActiveCallListChangedCallback, never()).onTelecomCallRemoved(any()); + Intent intent = shadow.getNextStartedActivity(); + ShadowIntent shadowIntent = shadowOf(intent); + assertThat(InCallActivity.class).isEqualTo(shadowIntent.getIntentClass()); } } diff --git a/tests/robotests/src/com/android/car/dialer/ui/activecall/OnGoingCallControllerBarFragmentTest.java b/tests/robotests/src/com/android/car/dialer/ui/activecall/OnGoingCallControllerBarFragmentTest.java index 0af882bd..4eaafa7e 100644 --- a/tests/robotests/src/com/android/car/dialer/ui/activecall/OnGoingCallControllerBarFragmentTest.java +++ b/tests/robotests/src/com/android/car/dialer/ui/activecall/OnGoingCallControllerBarFragmentTest.java @@ -66,6 +66,7 @@ public class OnGoingCallControllerBarFragmentTest { private MutableLiveData<CallDetail> mCallDetailLiveData; private MutableLiveData<Boolean> mDialpadStateLiveData; private MutableLiveData<List<Call>> mCallListLiveData; + private MutableLiveData<CallAudioState> mCallAudioStateLiveData; private List<Call> mCallList; @Mock private Call mMockCall; @@ -89,6 +90,7 @@ public class OnGoingCallControllerBarFragmentTest { mCallDetailLiveData = new MutableLiveData<>(); mDialpadStateLiveData = new MutableLiveData<>(); mCallListLiveData = new MutableLiveData<>(); + mCallAudioStateLiveData = new MutableLiveData<>(); mCallList = new ArrayList<>(); mCallList.add(mMockCall); mCallListLiveData.setValue(mCallList); @@ -238,6 +240,7 @@ public class OnGoingCallControllerBarFragmentTest { when(mMockInCallViewModel.getPrimaryCallState()).thenReturn(mCallStateLiveData); when(mMockInCallViewModel.getDialpadOpenState()).thenReturn(mDialpadStateLiveData); when(mMockInCallViewModel.getAllCallList()).thenReturn(mCallListLiveData); + when(mMockInCallViewModel.getCallAudioState()).thenReturn(mCallAudioStateLiveData); MutableLiveData<Integer> audioRouteLiveData = new MutableLiveData<>(); audioRouteLiveData.setValue(CallAudioState.ROUTE_BLUETOOTH); diff --git a/tests/robotests/src/com/android/car/dialer/ui/calllog/CallHistoryFragmentTest.java b/tests/robotests/src/com/android/car/dialer/ui/calllog/CallHistoryFragmentTest.java index fa7a8f16..8ada4412 100644 --- a/tests/robotests/src/com/android/car/dialer/ui/calllog/CallHistoryFragmentTest.java +++ b/tests/robotests/src/com/android/car/dialer/ui/calllog/CallHistoryFragmentTest.java @@ -21,7 +21,6 @@ import static com.google.common.truth.Truth.assertThat; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; -import android.net.Uri; import android.view.View; import android.widget.TextView; @@ -38,6 +37,7 @@ import com.android.car.dialer.testutils.ShadowAndroidViewModelFactory; import com.android.car.dialer.ui.common.entity.HeaderViewHolder; import com.android.car.dialer.ui.common.entity.UiCallLog; import com.android.car.dialer.widget.CallTypeIconsView; +import com.android.car.telephony.common.Contact; import com.android.car.telephony.common.InMemoryPhoneBook; import com.android.car.telephony.common.PhoneCallLog; import com.android.car.ui.recyclerview.CarUiRecyclerView; @@ -72,9 +72,9 @@ public class CallHistoryFragmentTest { @Mock private UiCallManager mMockUiCallManager; @Mock - private Uri mMockUri; - @Mock private CallHistoryViewModel mMockCallHistoryViewModel; + @Mock + private Contact mMockContact; @Before public void setup() { @@ -87,8 +87,8 @@ public class CallHistoryFragmentTest { CallHistoryLiveData.CallType.INCOMING_TYPE); PhoneCallLog.Record record2 = new PhoneCallLog.Record(TIME_STAMP_2, CallHistoryLiveData.CallType.OUTGOING_TYPE); - UiCallLog uiCallLog = new UiCallLog(UI_CALLOG_TITLE, UI_CALLOG_TEXT, PHONE_NUMBER, null, - mMockUri, Arrays.asList(record1, record2)); + UiCallLog uiCallLog = new UiCallLog(UI_CALLOG_TITLE, UI_CALLOG_TEXT, PHONE_NUMBER, + mMockContact, Arrays.asList(record1, record2)); MutableLiveData<FutureData<List<Object>>> callLog = new MutableLiveData<>(); callLog.setValue(new FutureData<>(false, Arrays.asList(HEADER, uiCallLog))); @@ -103,7 +103,7 @@ public class CallHistoryFragmentTest { CarUiRecyclerView recyclerView = mCallHistoryFragment.getView() .findViewById(R.id.list_view); // set up layout for recyclerView - recyclerView.layoutBothForTesting(0, 0, 100, 1000); + recyclerView.layout(0, 0, 100, 1000); mHeaderViewHolder = recyclerView.findViewHolderForLayoutPosition(0); mCalllogViewHolder = recyclerView.findViewHolderForLayoutPosition(1); } diff --git a/tests/robotests/src/com/android/car/dialer/ui/contact/ContactDetailsFragmentTest.java b/tests/robotests/src/com/android/car/dialer/ui/contact/ContactDetailsFragmentTest.java index 65f00a7c..40af9a4e 100644 --- a/tests/robotests/src/com/android/car/dialer/ui/contact/ContactDetailsFragmentTest.java +++ b/tests/robotests/src/com/android/car/dialer/ui/contact/ContactDetailsFragmentTest.java @@ -116,7 +116,7 @@ public class ContactDetailsFragmentTest { mListView = mContactDetailsFragment.getView().findViewById(R.id.list_view); // Set up layout for recyclerView - mListView.layoutBothForTesting(0, 0, 100, 1000); + mListView.layout(0, 0, 100, 1000); } /** diff --git a/tests/robotests/src/com/android/car/dialer/ui/contact/ContactListFragmentTest.java b/tests/robotests/src/com/android/car/dialer/ui/contact/ContactListFragmentTest.java index 1ae465bd..c5cb8f46 100644 --- a/tests/robotests/src/com/android/car/dialer/ui/contact/ContactListFragmentTest.java +++ b/tests/robotests/src/com/android/car/dialer/ui/contact/ContactListFragmentTest.java @@ -216,7 +216,7 @@ public class ContactListFragmentTest { CarUiRecyclerView recyclerView = mContactListFragment.getView() .findViewById(R.id.list_view); //Force RecyclerView to layout to ensure findViewHolderForLayoutPosition works. - recyclerView.layoutBothForTesting(0, 0, 100, 1000); + recyclerView.layout(0, 0, 100, 1000); mViewHolder = (ContactListViewHolder) recyclerView.findViewHolderForLayoutPosition(0); } diff --git a/tests/robotests/src/com/android/car/dialer/ui/dialpad/DialpadFragmentTest.java b/tests/robotests/src/com/android/car/dialer/ui/dialpad/DialpadFragmentTest.java index 5f7df33d..ae3fb087 100644 --- a/tests/robotests/src/com/android/car/dialer/ui/dialpad/DialpadFragmentTest.java +++ b/tests/robotests/src/com/android/car/dialer/ui/dialpad/DialpadFragmentTest.java @@ -28,13 +28,18 @@ import android.view.View; import android.widget.ImageButton; import android.widget.TextView; +import androidx.lifecycle.MutableLiveData; + import com.android.car.dialer.CarDialerRobolectricTestRunner; import com.android.car.dialer.FragmentTestActivity; import com.android.car.dialer.R; import com.android.car.dialer.TestDialerApplication; import com.android.car.dialer.telecom.UiCallManager; +import com.android.car.dialer.testutils.ShadowAndroidViewModelFactory; import com.android.car.dialer.testutils.ShadowCallLogCalls; import com.android.car.dialer.testutils.ShadowInMemoryPhoneBook; +import com.android.car.dialer.ui.common.ContactResultsLiveData; +import com.android.car.dialer.ui.search.ContactResultsViewModel; import com.android.car.telephony.common.Contact; import com.android.car.telephony.common.InMemoryPhoneBook; import com.android.car.telephony.common.PhoneNumber; @@ -51,8 +56,11 @@ import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; import org.robolectric.shadow.api.Shadow; +import java.util.List; + @RunWith(CarDialerRobolectricTestRunner.class) -@Config(shadows = {ShadowCallLogCalls.class, ShadowInMemoryPhoneBook.class}) +@Config(shadows = {ShadowCallLogCalls.class, ShadowInMemoryPhoneBook.class, + ShadowAndroidViewModelFactory.class}) public class DialpadFragmentTest { private static final String DIAL_NUMBER = "6505551234"; private static final String DIAL_NUMBER_LONG = "650555123465055512346505551234"; @@ -60,7 +68,12 @@ public class DialpadFragmentTest { private static final String SPEC_CHAR = "123=_=%^&"; private static final String DISPALY_NAME = "Display Name"; + private Context mContext; private DialpadFragment mDialpadFragment; + private MutableLiveData<List<ContactResultsLiveData.ContactResultListItem>> + mContactResultsLiveData; + @Mock + private ContactResultsViewModel mMockContactResultsViewModel; @Mock private Contact mMockContact; @@ -68,10 +81,16 @@ public class DialpadFragmentTest { public void setup() { MockitoAnnotations.initMocks(this); - Context context = RuntimeEnvironment.application; - ((TestDialerApplication) context).setupInCallServiceImpl(); - ((TestDialerApplication) context).initUiCallManager(); - InMemoryPhoneBook.init(context); + mContext = RuntimeEnvironment.application; + ((TestDialerApplication) mContext).setupInCallServiceImpl(); + ((TestDialerApplication) mContext).initUiCallManager(); + InMemoryPhoneBook.init(mContext); + + mContactResultsLiveData = new MutableLiveData<>(); + when(mMockContactResultsViewModel.getContactSearchResults()) + .thenReturn(mContactResultsLiveData); + ShadowAndroidViewModelFactory.add( + ContactResultsViewModel.class, mMockContactResultsViewModel); } @After @@ -212,7 +231,13 @@ public class DialpadFragmentTest { mDialpadFragment.setDialedNumber(DIAL_NUMBER); TextView displayName = mDialpadFragment.getView().findViewById(R.id.display_name); - assertThat(displayName.getText()).isEqualTo(DISPALY_NAME); + if (!mContext.getResources().getBoolean(R.bool.config_show_type_down_list_on_dialpad) + && mContext.getResources() + .getBoolean(R.bool.config_show_type_down_list_on_dialpad)) { + assertThat(displayName.getText()).isEqualTo(DISPALY_NAME); + } else { + assertThat(displayName.getText()).isEqualTo(""); + } } private void startPlaceCallActivity() { diff --git a/tests/robotests/src/com/android/car/dialer/ui/favorite/FavoriteFragmentTest.java b/tests/robotests/src/com/android/car/dialer/ui/favorite/FavoriteFragmentTest.java index 5fcb0064..e6c326ee 100644 --- a/tests/robotests/src/com/android/car/dialer/ui/favorite/FavoriteFragmentTest.java +++ b/tests/robotests/src/com/android/car/dialer/ui/favorite/FavoriteFragmentTest.java @@ -71,7 +71,7 @@ public class FavoriteFragmentTest { UiCallManager.set(mMockUiCallManager); when(mMockPhoneNumber.getRawNumber()).thenReturn(RAW_NUMBER); - MutableLiveData<FutureData<List<Contact>>> favoriteContacts = new MutableLiveData<>(); + MutableLiveData<FutureData<List<Object>>> favoriteContacts = new MutableLiveData<>(); favoriteContacts.setValue(new FutureData<>(false, Arrays.asList(mMockContact))); ShadowAndroidViewModelFactory.add(FavoriteViewModel.class, mMockFavoriteViewModel); when(mMockFavoriteViewModel.getFavoriteContacts()).thenReturn(favoriteContacts); @@ -83,7 +83,7 @@ public class FavoriteFragmentTest { CarUiRecyclerView recyclerView = mFavoriteFragment.getView().findViewById(R.id.list_view); // set up layout for recyclerView - recyclerView.layoutBothForTesting(0, 0, 100, 1000); + recyclerView.layout(0, 0, 100, 1000); mViewHolder = (FavoriteContactViewHolder) recyclerView.findViewHolderForLayoutPosition(0); } diff --git a/tests/robotests/src/com/android/car/dialer/ui/search/ContactResultsFragmentTest.java b/tests/robotests/src/com/android/car/dialer/ui/search/ContactResultsFragmentTest.java index 83c8e797..c6f4d1c4 100644 --- a/tests/robotests/src/com/android/car/dialer/ui/search/ContactResultsFragmentTest.java +++ b/tests/robotests/src/com/android/car/dialer/ui/search/ContactResultsFragmentTest.java @@ -33,10 +33,12 @@ import com.android.car.dialer.CarDialerRobolectricTestRunner; import com.android.car.dialer.FragmentTestActivity; import com.android.car.dialer.R; import com.android.car.dialer.testutils.ShadowAndroidViewModelFactory; +import com.android.car.dialer.ui.common.ContactResultsLiveData; import com.android.car.dialer.ui.contact.ContactDetailsFragment; import com.android.car.dialer.ui.contact.ContactDetailsViewModel; import com.android.car.telephony.common.Contact; import com.android.car.telephony.common.InMemoryPhoneBook; +import com.android.car.telephony.common.PhoneNumber; import com.android.car.ui.recyclerview.CarUiRecyclerView; import org.junit.After; @@ -50,6 +52,7 @@ import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; import java.util.Arrays; +import java.util.Collections; import java.util.List; @Config(shadows = {ShadowAndroidViewModelFactory.class}) @@ -62,15 +65,19 @@ public class ContactResultsFragmentTest { private ContactResultsFragment mContactResultsFragment; private FragmentTestActivity mFragmentTestActivity; private CarUiRecyclerView mListView; - private MutableLiveData<List<Contact>> mContactSearchResultsLiveData; + private MutableLiveData<List<ContactResultsLiveData.ContactResultListItem>> + mContactSearchResultsLiveData; @Mock private ContactResultsViewModel mMockContactResultsViewModel; @Mock private ContactDetailsViewModel mMockContactDetailsViewModel; @Mock - private Contact mMockContact; + private Contact mMockContact, mContact1, mContact2, mContact3; @Mock - private Contact mContact1, mContact2, mContact3; + private ContactResultsLiveData.ContactResultListItem mContactResult1, mContactResult2, + mContactResult3; + @Mock + private PhoneNumber mPhoneNumber; @Before public void setUp() { @@ -83,9 +90,15 @@ public class ContactResultsFragmentTest { ShadowAndroidViewModelFactory.add( ContactResultsViewModel.class, mMockContactResultsViewModel); + when(mContactResult1.getContact()).thenReturn(mContact1); when(mContact1.getDisplayName()).thenReturn(DISPLAY_NAMES[0]); + when(mContact1.getNumbers()).thenReturn(Collections.singletonList(mPhoneNumber)); + when(mContactResult2.getContact()).thenReturn(mContact2); when(mContact2.getDisplayName()).thenReturn(DISPLAY_NAMES[1]); + when(mContact2.getNumbers()).thenReturn(Collections.singletonList(mPhoneNumber)); + when(mContactResult3.getContact()).thenReturn(mContact3); when(mContact3.getDisplayName()).thenReturn(DISPLAY_NAMES[2]); + when(mContact3.getNumbers()).thenReturn(Collections.singletonList(mPhoneNumber)); } @After @@ -104,7 +117,7 @@ public class ContactResultsFragmentTest { @Test public void testDisplaySearchResults_multipleResults() { mContactSearchResultsLiveData.setValue( - Arrays.asList(mContact1, mContact2, mContact3)); + Arrays.asList(mContactResult1, mContactResult2, mContactResult3)); mContactResultsFragment = ContactResultsFragment.newInstance(INITIAL_SEARCH_QUERY); setUpFragment(); @@ -117,7 +130,7 @@ public class ContactResultsFragmentTest { @Test public void testClickSearchResult_showContactDetailPage() { mContactSearchResultsLiveData.setValue( - Arrays.asList(mContact1, mContact2, mContact3)); + Arrays.asList(mContactResult1, mContactResult2, mContactResult3)); MutableLiveData<FutureData<Contact>> contactDetailLiveData = new MutableLiveData<>(); contactDetailLiveData.setValue(new FutureData<>(false, mMockContact)); @@ -143,7 +156,7 @@ public class ContactResultsFragmentTest { mListView = mContactResultsFragment.getView().findViewById(R.id.list_view); // Set up layout for recyclerView - mListView.layoutBothForTesting(0, 0, 100, 1000); + mListView.layout(0, 0, 100, 1000); } private void verifyChildAt(int position) { |