DO NOT MERGE Workaround for java.lang.IllegalArgumentException in android.util.ArrayMap am: a94a117971
am: 6819cc2f0e  -s ours

* commit '6819cc2f0e31da6e768139d26970ff4796a0e9d1':
  DO NOT MERGE Workaround for java.lang.IllegalArgumentException in android.util.ArrayMap
diff --git a/InCallUI/res/drawable-hdpi/ab_transparent_dark_holo.9.png b/InCallUI/res/drawable-hdpi/ab_transparent_dark_holo.9.png
deleted file mode 100644
index 0eff695..0000000
--- a/InCallUI/res/drawable-hdpi/ab_transparent_dark_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/InCallUI/res/drawable-hdpi/ic_business_white_24dp.png b/InCallUI/res/drawable-hdpi/ic_business_white_24dp.png
new file mode 100644
index 0000000..d10ebb7
--- /dev/null
+++ b/InCallUI/res/drawable-hdpi/ic_business_white_24dp.png
Binary files differ
diff --git a/InCallUI/res/drawable-hdpi/ic_location_on_white_24dp.png b/InCallUI/res/drawable-hdpi/ic_location_on_white_24dp.png
new file mode 100644
index 0000000..7c281c3
--- /dev/null
+++ b/InCallUI/res/drawable-hdpi/ic_location_on_white_24dp.png
Binary files differ
diff --git a/InCallUI/res/drawable-hdpi/ic_lockscreen_handle_pressed.png b/InCallUI/res/drawable-hdpi/ic_lockscreen_handle_pressed.png
deleted file mode 100644
index 58a5f16..0000000
--- a/InCallUI/res/drawable-hdpi/ic_lockscreen_handle_pressed.png
+++ /dev/null
Binary files differ
diff --git a/InCallUI/res/drawable-hdpi/ic_schedule_white_24dp.png b/InCallUI/res/drawable-hdpi/ic_schedule_white_24dp.png
new file mode 100644
index 0000000..f3581d1
--- /dev/null
+++ b/InCallUI/res/drawable-hdpi/ic_schedule_white_24dp.png
Binary files differ
diff --git a/InCallUI/res/drawable-mdpi/ab_transparent_dark_holo.9.png b/InCallUI/res/drawable-mdpi/ab_transparent_dark_holo.9.png
deleted file mode 100644
index ad980b1..0000000
--- a/InCallUI/res/drawable-mdpi/ab_transparent_dark_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/InCallUI/res/drawable-mdpi/ic_business_white_24dp.png b/InCallUI/res/drawable-mdpi/ic_business_white_24dp.png
new file mode 100644
index 0000000..7b9227c
--- /dev/null
+++ b/InCallUI/res/drawable-mdpi/ic_business_white_24dp.png
Binary files differ
diff --git a/InCallUI/res/drawable-mdpi/ic_location_on_white_24dp.png b/InCallUI/res/drawable-mdpi/ic_location_on_white_24dp.png
new file mode 100644
index 0000000..933eb51
--- /dev/null
+++ b/InCallUI/res/drawable-mdpi/ic_location_on_white_24dp.png
Binary files differ
diff --git a/InCallUI/res/drawable-mdpi/ic_lockscreen_answer_normal.png b/InCallUI/res/drawable-mdpi/ic_lockscreen_answer_normal.png
deleted file mode 100644
index da15c33..0000000
--- a/InCallUI/res/drawable-mdpi/ic_lockscreen_answer_normal.png
+++ /dev/null
Binary files differ
diff --git a/InCallUI/res/drawable-mdpi/ic_lockscreen_decline_activated.png b/InCallUI/res/drawable-mdpi/ic_lockscreen_decline_activated.png
deleted file mode 100644
index 6496626..0000000
--- a/InCallUI/res/drawable-mdpi/ic_lockscreen_decline_activated.png
+++ /dev/null
Binary files differ
diff --git a/InCallUI/res/drawable-mdpi/ic_lockscreen_decline_normal.png b/InCallUI/res/drawable-mdpi/ic_lockscreen_decline_normal.png
deleted file mode 100644
index 27fe093..0000000
--- a/InCallUI/res/drawable-mdpi/ic_lockscreen_decline_normal.png
+++ /dev/null
Binary files differ
diff --git a/InCallUI/res/drawable-mdpi/ic_lockscreen_handle_pressed.png b/InCallUI/res/drawable-mdpi/ic_lockscreen_handle_pressed.png
deleted file mode 100644
index 0187a02..0000000
--- a/InCallUI/res/drawable-mdpi/ic_lockscreen_handle_pressed.png
+++ /dev/null
Binary files differ
diff --git a/InCallUI/res/drawable-mdpi/ic_schedule_white_24dp.png b/InCallUI/res/drawable-mdpi/ic_schedule_white_24dp.png
new file mode 100644
index 0000000..501ee84
--- /dev/null
+++ b/InCallUI/res/drawable-mdpi/ic_schedule_white_24dp.png
Binary files differ
diff --git a/InCallUI/res/drawable-xhdpi/ab_transparent_dark_holo.9.png b/InCallUI/res/drawable-xhdpi/ab_transparent_dark_holo.9.png
deleted file mode 100644
index 719b923..0000000
--- a/InCallUI/res/drawable-xhdpi/ab_transparent_dark_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/InCallUI/res/drawable-xhdpi/ic_business_white_24dp.png b/InCallUI/res/drawable-xhdpi/ic_business_white_24dp.png
new file mode 100644
index 0000000..e563045
--- /dev/null
+++ b/InCallUI/res/drawable-xhdpi/ic_business_white_24dp.png
Binary files differ
diff --git a/InCallUI/res/drawable-xhdpi/ic_location_on_white_24dp.png b/InCallUI/res/drawable-xhdpi/ic_location_on_white_24dp.png
new file mode 100644
index 0000000..814ca8d
--- /dev/null
+++ b/InCallUI/res/drawable-xhdpi/ic_location_on_white_24dp.png
Binary files differ
diff --git a/InCallUI/res/drawable-xhdpi/ic_lockscreen_answer_normal.png b/InCallUI/res/drawable-xhdpi/ic_lockscreen_answer_normal.png
deleted file mode 100644
index 983d5d9..0000000
--- a/InCallUI/res/drawable-xhdpi/ic_lockscreen_answer_normal.png
+++ /dev/null
Binary files differ
diff --git a/InCallUI/res/drawable-xhdpi/ic_lockscreen_decline_activated.png b/InCallUI/res/drawable-xhdpi/ic_lockscreen_decline_activated.png
deleted file mode 100644
index 317b329..0000000
--- a/InCallUI/res/drawable-xhdpi/ic_lockscreen_decline_activated.png
+++ /dev/null
Binary files differ
diff --git a/InCallUI/res/drawable-xhdpi/ic_lockscreen_decline_normal.png b/InCallUI/res/drawable-xhdpi/ic_lockscreen_decline_normal.png
deleted file mode 100644
index 2cb03e7..0000000
--- a/InCallUI/res/drawable-xhdpi/ic_lockscreen_decline_normal.png
+++ /dev/null
Binary files differ
diff --git a/InCallUI/res/drawable-xhdpi/ic_lockscreen_handle_pressed.png b/InCallUI/res/drawable-xhdpi/ic_lockscreen_handle_pressed.png
deleted file mode 100644
index 2d28009..0000000
--- a/InCallUI/res/drawable-xhdpi/ic_lockscreen_handle_pressed.png
+++ /dev/null
Binary files differ
diff --git a/InCallUI/res/drawable-xhdpi/ic_schedule_white_24dp.png b/InCallUI/res/drawable-xhdpi/ic_schedule_white_24dp.png
new file mode 100644
index 0000000..2e27936
--- /dev/null
+++ b/InCallUI/res/drawable-xhdpi/ic_schedule_white_24dp.png
Binary files differ
diff --git a/InCallUI/res/drawable-xxhdpi/ab_transparent_dark_holo.9.png b/InCallUI/res/drawable-xxhdpi/ab_transparent_dark_holo.9.png
deleted file mode 100644
index 84155cc..0000000
--- a/InCallUI/res/drawable-xxhdpi/ab_transparent_dark_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/InCallUI/res/drawable-xxhdpi/ic_business_white_24dp.png b/InCallUI/res/drawable-xxhdpi/ic_business_white_24dp.png
new file mode 100644
index 0000000..7dfc8dc
--- /dev/null
+++ b/InCallUI/res/drawable-xxhdpi/ic_business_white_24dp.png
Binary files differ
diff --git a/InCallUI/res/drawable-xxhdpi/ic_location_on_white_24dp.png b/InCallUI/res/drawable-xxhdpi/ic_location_on_white_24dp.png
new file mode 100644
index 0000000..078b10d
--- /dev/null
+++ b/InCallUI/res/drawable-xxhdpi/ic_location_on_white_24dp.png
Binary files differ
diff --git a/InCallUI/res/drawable-xxhdpi/ic_lockscreen_answer_normal.png b/InCallUI/res/drawable-xxhdpi/ic_lockscreen_answer_normal.png
deleted file mode 100644
index fcf4367..0000000
--- a/InCallUI/res/drawable-xxhdpi/ic_lockscreen_answer_normal.png
+++ /dev/null
Binary files differ
diff --git a/InCallUI/res/drawable-xxhdpi/ic_lockscreen_decline_activated.png b/InCallUI/res/drawable-xxhdpi/ic_lockscreen_decline_activated.png
deleted file mode 100644
index 74b6cf0..0000000
--- a/InCallUI/res/drawable-xxhdpi/ic_lockscreen_decline_activated.png
+++ /dev/null
Binary files differ
diff --git a/InCallUI/res/drawable-xxhdpi/ic_lockscreen_decline_normal.png b/InCallUI/res/drawable-xxhdpi/ic_lockscreen_decline_normal.png
deleted file mode 100644
index 54b7965..0000000
--- a/InCallUI/res/drawable-xxhdpi/ic_lockscreen_decline_normal.png
+++ /dev/null
Binary files differ
diff --git a/InCallUI/res/drawable-xxhdpi/ic_lockscreen_handle_pressed.png b/InCallUI/res/drawable-xxhdpi/ic_lockscreen_handle_pressed.png
deleted file mode 100644
index 7528064..0000000
--- a/InCallUI/res/drawable-xxhdpi/ic_lockscreen_handle_pressed.png
+++ /dev/null
Binary files differ
diff --git a/InCallUI/res/drawable-xxhdpi/ic_schedule_white_24dp.png b/InCallUI/res/drawable-xxhdpi/ic_schedule_white_24dp.png
new file mode 100644
index 0000000..bfc7273
--- /dev/null
+++ b/InCallUI/res/drawable-xxhdpi/ic_schedule_white_24dp.png
Binary files differ
diff --git a/InCallUI/res/drawable-xxxhdpi/fab_green.png b/InCallUI/res/drawable-xxxhdpi/fab_green.png
deleted file mode 100644
index aa8849e..0000000
--- a/InCallUI/res/drawable-xxxhdpi/fab_green.png
+++ /dev/null
Binary files differ
diff --git a/InCallUI/res/drawable-xxxhdpi/ic_business_white_24dp.png b/InCallUI/res/drawable-xxxhdpi/ic_business_white_24dp.png
new file mode 100644
index 0000000..c9aea72
--- /dev/null
+++ b/InCallUI/res/drawable-xxxhdpi/ic_business_white_24dp.png
Binary files differ
diff --git a/InCallUI/res/drawable-xxxhdpi/ic_location_on_white_24dp.png b/InCallUI/res/drawable-xxxhdpi/ic_location_on_white_24dp.png
new file mode 100644
index 0000000..8bcb6f6
--- /dev/null
+++ b/InCallUI/res/drawable-xxxhdpi/ic_location_on_white_24dp.png
Binary files differ
diff --git a/InCallUI/res/drawable-xxxhdpi/ic_schedule_white_24dp.png b/InCallUI/res/drawable-xxxhdpi/ic_schedule_white_24dp.png
new file mode 100644
index 0000000..b94f4df
--- /dev/null
+++ b/InCallUI/res/drawable-xxxhdpi/ic_schedule_white_24dp.png
Binary files differ
diff --git a/InCallUI/res/drawable/ic_lockscreen_answer_activated_layer.xml b/InCallUI/res/drawable/ic_lockscreen_answer_activated_layer.xml
index c615295..f22b87e 100644
--- a/InCallUI/res/drawable/ic_lockscreen_answer_activated_layer.xml
+++ b/InCallUI/res/drawable/ic_lockscreen_answer_activated_layer.xml
@@ -14,7 +14,7 @@
      limitations under the License.
 -->
 <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:drawable="@drawable/fab_blue" />
+    <item android:drawable="@drawable/fab_green"/>
     <item>
         <bitmap
             android:gravity="center"
diff --git a/InCallUI/res/drawable/ic_lockscreen_decline_video_normal_layer.xml b/InCallUI/res/drawable/ic_lockscreen_decline_video_normal_layer.xml
index e247f0a..e3b89b9 100644
--- a/InCallUI/res/drawable/ic_lockscreen_decline_video_normal_layer.xml
+++ b/InCallUI/res/drawable/ic_lockscreen_decline_video_normal_layer.xml
@@ -28,7 +28,7 @@
         <bitmap
             android:gravity="center"
             android:src="@drawable/ic_toolbar_video_off"
-            android:tint="@color/glowpad_call_widget_normal_tint"
+            android:tint="@color/glowpad_end_call_widget_normal_tint"
             android:autoMirrored="true" />
     </item>
 </layer-list>
diff --git a/InCallUI/res/drawable/incoming_sms_background.xml b/InCallUI/res/drawable/incoming_sms_background.xml
new file mode 100644
index 0000000..81ff21c
--- /dev/null
+++ b/InCallUI/res/drawable/incoming_sms_background.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<shape
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <corners
+        android:topLeftRadius="@dimen/person_contact_context_message_background_main_radius"
+        android:topRightRadius="@dimen/person_contact_context_message_background_main_radius"
+        android:bottomRightRadius="@dimen/person_contact_context_message_background_main_radius"
+        android:bottomLeftRadius="@dimen/person_contact_context_message_background_accent_radius"/>
+    <solid android:color="@color/person_contact_context_message_background_color" />
+</shape>
diff --git a/InCallUI/res/drawable/outgoing_sms_background.xml b/InCallUI/res/drawable/outgoing_sms_background.xml
new file mode 100644
index 0000000..e4f868f
--- /dev/null
+++ b/InCallUI/res/drawable/outgoing_sms_background.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<shape
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <corners
+        android:topLeftRadius="@dimen/person_contact_context_message_background_main_radius"
+        android:topRightRadius="@dimen/person_contact_context_message_background_main_radius"
+        android:bottomLeftRadius="@dimen/person_contact_context_message_background_main_radius"
+        android:bottomRightRadius="@dimen/person_contact_context_message_background_accent_radius"/>
+    <solid android:color="@color/person_contact_context_message_background_color" />
+</shape>
diff --git a/InCallUI/res/layout-land/call_card_fragment.xml b/InCallUI/res/layout-land/call_card_fragment.xml
index c02af1b..c71cf07 100644
--- a/InCallUI/res/layout-land/call_card_fragment.xml
+++ b/InCallUI/res/layout-land/call_card_fragment.xml
@@ -16,18 +16,17 @@
   ~ limitations under the License
   -->
 
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    android:layout_alignParentTop="true"
-    android:layout_alignParentStart="true" >
+    android:orientation="horizontal">
 
     <LinearLayout
         android:id="@+id/primary_call_info_container"
-        android:layout_alignParentStart="true"
         android:layout_centerVertical="true"
-        android:layout_width="wrap_content"
+        android:layout_width="0dp"
         android:layout_height="match_parent"
+        android:layout_weight="1"
         android:orientation="vertical"
         android:elevation="@dimen/primary_call_elevation"
         android:background="@drawable/rounded_call_card_background"
@@ -39,104 +38,121 @@
 
         <include layout="@layout/primary_call_info" />
 
-        <FrameLayout
+        <fragment android:name="com.android.incallui.CallButtonFragment"
+            android:id="@+id/callButtonFragment"
             android:layout_width="wrap_content"
-            android:layout_height="match_parent" >
+            android:layout_height="wrap_content"
+            android:layout_gravity="bottom|center_horizontal"
+            android:layout_marginBottom="@dimen/call_buttons_bottom_margin" />
 
-            <fragment android:name="com.android.incallui.CallButtonFragment"
-                android:id="@+id/callButtonFragment"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_gravity="bottom"
-                android:layout_marginBottom="@dimen/call_buttons_bottom_margin" />
-            <!-- Secondary "Call info" block, for the background ("on hold") call. -->
-            <include layout="@layout/secondary_call_info"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:layout_gravity="bottom" />
-
-        </FrameLayout>
+        <!-- Secondary "Call info" block, for the background ("on hold") call. -->
+        <include layout="@layout/secondary_call_info"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_gravity="bottom" />
 
     </LinearLayout>
 
     <FrameLayout
         android:layout_height="match_parent"
-        android:layout_width="match_parent"
-        android:layout_below="@id/primary_call_info_container"
-        android:id="@+id/call_card_content">
+        android:layout_width="0dp"
+        android:layout_weight="1">
 
-        <ImageView android:id="@+id/photo"
-            android:layout_toEndOf="@id/primary_call_info_container"
+        <FrameLayout
+            android:layout_height="match_parent"
             android:layout_width="match_parent"
+            android:id="@+id/call_card_content">
+
+            <ImageView android:id="@+id/photoLarge"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:scaleType="centerCrop"
+                android:contentDescription="@string/contactPhoto"
+                android:background="@color/incall_photo_background_color"
+                android:src="@drawable/img_no_image_automirrored" />
+
+            <!-- Call context -->
+            <LinearLayout
+                android:id="@+id/contact_context"
+                android:layout_height="match_parent"
+                android:layout_width="match_parent"
+                android:orientation="vertical"
+                android:background="@color/incall_background_color"
+                android:visibility="gone">
+                <TextView android:id="@+id/contactContextTitle"
+                    android:textSize="@dimen/contact_context_title_text_size"
+                    android:textColor="@color/contact_context_title_text_color"
+                    android:fontFamily="sans-serif-medium"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_gravity="center_horizontal"
+                    android:layout_marginBottom="@dimen/contact_context_title_margin_bottom" />
+                <ListView android:id="@+id/contactContextInfo"
+                     android:layout_width="match_parent"
+                     android:layout_height="match_parent"
+                     android:divider="@null"
+                     android:dividerHeight="@dimen/contact_context_list_item_padding" />
+            </LinearLayout>
+
+        </FrameLayout>
+
+        <include layout="@layout/manage_conference_call_button"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_alignTop="@id/photoLarge" />
+
+        <!-- Progress spinner, useful for indicating pending operations such as upgrade to video. -->
+        <FrameLayout
+            android:id="@+id/progressSpinner"
+            android:background="#63000000"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:layout_centerHorizontal="true"
+            android:layout_centerVertical="true"
+            android:visibility="gone" >
+
+            <ProgressBar
+                android:id="@+id/progress_bar"
+                style="@android:style/Widget.Material.ProgressBar"
+                android:layout_gravity="center"
+                android:layout_width="48dp"
+                android:layout_height="48dp"
+                android:indeterminate="true" />
+
+        </FrameLayout>
+
+        <fragment android:name="com.android.incallui.VideoCallFragment"
+            android:layout_alignParentStart="true"
             android:layout_gravity="start|center_vertical"
-            android:layout_height="match_parent"
-            android:gravity="start|center_vertical"
-            android:scaleType="centerCrop"
-            android:contentDescription="@string/contactPhoto"
-            android:background="@android:color/white"
-            android:src="@drawable/img_no_image_automirrored" />
-
-    </FrameLayout>
-
-    <include layout="@layout/manage_conference_call_button"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_alignTop="@id/photo" />
-
-    <!-- Progress spinner, useful for indicating pending operations such as upgrade to video. -->
-    <FrameLayout
-        android:id="@+id/progressSpinner"
-        android:layout_toEndOf="@id/primary_call_info_container"
-        android:background="#63000000"
-        android:layout_width="fill_parent"
-        android:layout_height="fill_parent"
-        android:layout_centerHorizontal="true"
-        android:layout_centerVertical="true"
-        android:visibility="gone" >
-
-        <ProgressBar
-            android:id="@+id/progress_bar"
-            style="@android:style/Widget.Material.ProgressBar"
-            android:layout_gravity="center"
-            android:layout_width="48dp"
-            android:layout_height="48dp"
-            android:indeterminate="true" />
-
-    </FrameLayout>
-
-    <fragment android:name="com.android.incallui.VideoCallFragment"
-        android:layout_alignParentStart="true"
-        android:layout_gravity="start|center_vertical"
-        android:id="@+id/videoCallFragment"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent" />
-
-    <!-- Placeholder for the dialpad which is replaced with the dialpad fragment when shown. -->
-    <FrameLayout
-        android:id="@+id/answer_and_dialpad_container"
-        android:layout_toEndOf="@id/primary_call_info_container"
-        android:layout_gravity="end|center_vertical"
-        android:layout_alignParentEnd="true"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent" />
-
-    <FrameLayout
-        android:id="@+id/floating_end_call_action_button_container"
-        android:layout_width="@dimen/end_call_floating_action_button_diameter"
-        android:layout_height="@dimen/end_call_floating_action_button_diameter"
-        android:background="@drawable/fab_red"
-        android:layout_centerHorizontal="true"
-        android:layout_marginBottom="@dimen/end_call_button_margin_bottom"
-        android:layout_alignParentBottom="true" >
-
-        <ImageButton android:id="@+id/floating_end_call_action_button"
+            android:id="@+id/videoCallFragment"
             android:layout_width="match_parent"
-            android:layout_height="match_parent"
-            android:background="@drawable/end_call_background"
-            android:src="@drawable/fab_ic_end_call"
-            android:scaleType="center"
-            android:contentDescription="@string/onscreenEndCallText" />
+            android:layout_height="match_parent" />
+
+        <!-- Placeholder for the dialpad which is replaced with the dialpad fragment when shown. -->
+        <FrameLayout
+            android:id="@+id/answer_and_dialpad_container"
+            android:layout_gravity="bottom"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent" />
+
+        <FrameLayout
+            android:id="@+id/floating_end_call_action_button_container"
+            android:layout_width="@dimen/end_call_floating_action_button_diameter"
+            android:layout_height="@dimen/end_call_floating_action_button_diameter"
+            android:background="@drawable/fab_red"
+            android:layout_gravity="bottom|center_horizontal"
+            android:layout_marginBottom="@dimen/end_call_button_margin_bottom">
+
+            <ImageButton android:id="@+id/floating_end_call_action_button"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:background="@drawable/end_call_background"
+                android:src="@drawable/fab_ic_end_call"
+                android:scaleType="center"
+                android:contentDescription="@string/onscreenEndCallText" />
+
+        </FrameLayout>
 
     </FrameLayout>
 
-</RelativeLayout>
+</LinearLayout>
diff --git a/InCallUI/res/layout-land/video_call_views.xml b/InCallUI/res/layout-land/video_call_views.xml
deleted file mode 100644
index 8961ea4..0000000
--- a/InCallUI/res/layout-land/video_call_views.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<!--
-  ~ Copyright (C) 2014 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent" >
-
-    <TextureView
-        android:id="@+id/incomingVideo"
-        android:layout_gravity="center"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent" />
-    <!-- The width and height are replaced at runtime based on the selected camera. -->
-    <TextureView
-        android:id="@+id/previewVideo"
-        android:layout_gravity="bottom|right"
-        android:layout_margin="@dimen/video_preview_margin"
-        android:layout_width="70dp"
-        android:layout_height="120dp" />
-</FrameLayout>
diff --git a/InCallUI/res/layout/accessible_answer_fragment.xml b/InCallUI/res/layout/accessible_answer_fragment.xml
new file mode 100644
index 0000000..90fe577
--- /dev/null
+++ b/InCallUI/res/layout/accessible_answer_fragment.xml
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+~ Copyright (C) 2013 The Android Open Source Project
+~
+~ Licensed under the Apache License, Version 2.0 (the "License");
+~ you may not use this file except in compliance with the License.
+~ You may obtain a copy of the License at
+~
+~      http://www.apache.org/licenses/LICENSE-2.0
+~
+~ Unless required by applicable law or agreed to in writing, software
+~ distributed under the License is distributed on an "AS IS" BASIS,
+~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+~ See the License for the specific language governing permissions and
+~ limitations under the License
+-->
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:gravity="center_horizontal"
+    android:background="@color/glowpad_background_color">
+    <RelativeLayout
+        android:id="@+id/accessible_answer_fragment_answer"
+        android:orientation="vertical"
+        android:layout_width="120dp"
+        android:layout_height="120dp"
+        android:focusable="true"
+        android:focusableInTouchMode="true"
+        android:clickable="true"
+        android:layout_alignParentRight="true"
+        android:layout_centerVertical="true"
+        android:layout_marginLeft="16dp"
+        android:layout_marginRight="16dp">
+        <ImageView
+            android:layout_width="64dp"
+            android:layout_height="64dp"
+            android:src="@drawable/ic_lockscreen_answer_activated_layer"
+            android:layout_centerInParent="true">
+        </ImageView>
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="@string/description_target_answer"
+            android:textSize="12sp"
+            android:textColor="@color/accessible_answer_hint_text_color"
+            android:layout_alignParentBottom="true"
+            android:layout_centerHorizontal="true"
+            android:layout_marginBottom="8dp"/>
+    </RelativeLayout>
+    <RelativeLayout
+        android:id="@+id/accessible_answer_fragment_decline"
+        android:orientation="vertical"
+        android:layout_width="120dp"
+        android:layout_height="120dp"
+        android:focusable="true"
+        android:focusableInTouchMode="true"
+        android:clickable="true"
+        android:layout_alignParentLeft="true"
+        android:layout_centerVertical="true"
+        android:layout_marginLeft="16dp"
+        android:layout_marginRight="16dp">
+        <ImageView
+            android:layout_width="64dp"
+            android:layout_height="64dp"
+            android:src="@drawable/ic_lockscreen_decline_activated_layer"
+            android:layout_centerInParent="true">
+        </ImageView>
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="@string/description_target_decline"
+            android:textSize="12sp"
+            android:textColor="@color/accessible_answer_hint_text_color"
+            android:layout_alignParentBottom="true"
+            android:layout_centerHorizontal="true"
+            android:layout_marginBottom="8dp"/>
+    </RelativeLayout>
+    <LinearLayout
+        android:id="@+id/accessible_answer_fragment_text"
+        android:orientation="vertical"
+        android:layout_width="92dp"
+        android:layout_height="92dp"
+        android:focusable="true"
+        android:focusableInTouchMode="true"
+        android:clickable="true"
+        android:layout_alignParentEnd="false"
+        android:layout_alignParentStart="false"
+        android:layout_above="@+id/accessible_answer_fragment_decline"
+        android:layout_alignWithParentIfMissing="false"
+        android:layout_alignParentTop="false"
+        android:layout_alignParentLeft="false"
+        android:layout_alignParentBottom="false"
+        android:layout_alignParentRight="false"
+        android:layout_centerHorizontal="true"
+        android:contentDescription="@string/description_target_send_sms"
+        android:gravity="center">
+        <ImageView
+            android:layout_width="64dp"
+            android:layout_height="64dp"
+            android:src="@drawable/ic_lockscreen_text">
+        </ImageView>
+    </LinearLayout>
+
+</RelativeLayout>
\ No newline at end of file
diff --git a/InCallUI/res/layout/business_contact_context_list_header.xml b/InCallUI/res/layout/business_contact_context_list_header.xml
new file mode 100644
index 0000000..9052118
--- /dev/null
+++ b/InCallUI/res/layout/business_contact_context_list_header.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+     android:layout_width="match_parent"
+     android:layout_height="wrap_content"
+     android:orientation="horizontal"
+     android:paddingEnd="@dimen/business_contact_context_end_padding">
+     <ImageView android:id="@+id/icon"
+         android:layout_width="@dimen/contact_context_title_image_size"
+         android:layout_height="@dimen/contact_context_title_image_size"
+         android:layout_marginLeft="@dimen/contact_context_title_image_side_padding"
+         android:layout_marginRight="@dimen/contact_context_title_image_side_padding"
+         android:layout_gravity="center"
+         android:scaleType="center"
+         android:src="@drawable/ic_business_white_24dp"
+         android:tint="@color/business_contact_context_text_color"
+         android:alpha="0.8"
+         android:importantForAccessibility="no"/>
+     <TextView android:id="@+id/title"
+         android:layout_width="match_parent"
+         android:layout_height="wrap_content"
+         android:layout_gravity="center_vertical"
+         android:text="@string/business_contact_context_title"
+         android:textSize="@dimen/business_contact_context_detail_font_size"
+         android:textColor="@color/business_contact_context_text_color"
+         android:fontFamily="sans-serif-medium"/>
+ </LinearLayout>
\ No newline at end of file
diff --git a/InCallUI/res/layout/business_context_info_list_item.xml b/InCallUI/res/layout/business_context_info_list_item.xml
new file mode 100644
index 0000000..616d219
--- /dev/null
+++ b/InCallUI/res/layout/business_context_info_list_item.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+     android:layout_width="match_parent"
+     android:layout_height="wrap_content"
+     android:orientation="horizontal"
+     android:paddingEnd="@dimen/business_contact_context_end_padding">
+     <ImageView android:id="@+id/icon"
+         android:layout_width="@dimen/business_contact_context_image_size"
+         android:layout_height="@dimen/business_contact_context_image_size"
+         android:layout_marginLeft="@dimen/business_contact_context_image_padding"
+         android:layout_marginRight="@dimen/business_contact_context_image_padding"
+         android:layout_gravity="center"
+         android:scaleType="centerCrop"
+         android:tint="@color/business_contact_context_text_color"
+         android:alpha="0.8"/>
+     <LinearLayout
+         android:layout_width="match_parent"
+         android:layout_height="wrap_content"
+         android:layout_gravity="center"
+         android:orientation="vertical">
+         <TextView android:id="@+id/heading"
+             android:layout_width="match_parent"
+             android:layout_height="wrap_content"
+             android:textSize="@dimen/business_contact_context_heading_font_size"
+             android:textColor="@color/business_contact_context_text_color"
+             android:fontFamily="sans-serif-medium"/>
+         <TextView android:id="@+id/detail"
+             android:layout_width="match_parent"
+             android:layout_height="wrap_content"
+             android:textSize="@dimen/business_contact_context_detail_font_size"
+             android:textColor="@color/business_contact_context_text_color"
+             android:fontFamily="sans-serif-medium"/>
+     </LinearLayout>
+ </LinearLayout>
\ No newline at end of file
diff --git a/InCallUI/res/layout/call_card_fragment.xml b/InCallUI/res/layout/call_card_fragment.xml
index dabba76..760e4e2 100644
--- a/InCallUI/res/layout/call_card_fragment.xml
+++ b/InCallUI/res/layout/call_card_fragment.xml
@@ -18,131 +18,150 @@
 
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:layout_alignParentTop="true"
-    android:layout_alignParentStart="true">
-
-    <!-- The main content of the CallCard is either one or two "call info"
-         blocks, depending on whether one or two lines are in use.
-
-         The call_info blocks are stacked vertically inside a CallCard (LinearLayout),
-         each with layout_weight="1".  If only one line is in use (i.e. the
-         common case) then the 2nd call info will be GONE and thus the 1st one
-         will expand to fill the full height of the CallCard. -->
-
-    <!-- Primary "call card" block, for the foreground call. -->
+    android:layout_height="match_parent">
     <LinearLayout
-        android:id="@+id/primary_call_info_container"
         android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:orientation="vertical"
-        android:elevation="@dimen/primary_call_elevation"
-        android:layout_centerHorizontal="true"
-        android:background="@color/incall_call_banner_background_color"
-        android:paddingTop="@dimen/call_banner_primary_call_container_top_padding"
-        android:clipChildren="false"
-        android:clipToPadding="false">
+        android:layout_height="match_parent"
+        android:orientation="vertical">
 
-        <include layout="@layout/primary_call_info" />
-
-        <fragment android:name="com.android.incallui.CallButtonFragment"
-            android:id="@+id/callButtonFragment"
+        <!-- Primary "call card" block, for the foreground call. -->
+        <LinearLayout
+            android:id="@+id/primary_call_info_container"
             android:layout_width="match_parent"
-            android:layout_height="wrap_content" />
+            android:layout_height="0dp"
+            android:layout_weight="1"
+            android:orientation="vertical"
+            android:elevation="@dimen/primary_call_elevation"
+            android:background="@color/incall_call_banner_background_color"
+            android:paddingTop="@dimen/call_banner_primary_call_container_top_padding"
+            android:clipChildren="false"
+            android:clipToPadding="false"
+            android:gravity="bottom">
 
-        <TextView android:id="@+id/connectionServiceMessage"
+            <include layout="@layout/primary_call_info"
+                android:layout_centerHorizontal="true" />
+
+            <fragment android:name="com.android.incallui.CallButtonFragment"
+                android:id="@+id/callButtonFragment"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content" />
+
+            <TextView android:id="@+id/connectionServiceMessage"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:textAppearance="?android:attr/textAppearanceMedium"
+                android:visibility="gone"
+                android:padding="@dimen/call_banner_side_padding"
+                android:background="@android:color/white" />
+
+        </LinearLayout>
+
+        <RelativeLayout
             android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:textAppearance="?android:attr/textAppearanceMedium"
-            android:visibility="gone"
-            android:padding="@dimen/call_banner_side_padding"
-            android:background="@android:color/white" />
+            android:layout_height="0dp"
+            android:layout_weight="2">
+
+            <FrameLayout
+                android:layout_height="match_parent"
+                android:layout_width="match_parent"
+                android:id="@+id/call_card_content">
+
+                <!-- Contact photo for primary call info -->
+                <ImageView android:id="@+id/photoLarge"
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent"
+                    android:scaleType="centerCrop"
+                    android:importantForAccessibility="no"
+                    android:background="@color/incall_photo_background_color"
+                    android:src="@drawable/img_no_image_automirrored" />
+
+                <!-- Call context -->
+                <LinearLayout
+                    android:id="@+id/contact_context"
+                    android:layout_height="match_parent"
+                    android:layout_width="match_parent"
+                    android:orientation="vertical"
+                    android:background="@color/incall_background_color"
+                    android:visibility="gone">
+                    <TextView android:id="@+id/contactContextTitle"
+                        android:textSize="@dimen/contact_context_title_text_size"
+                        android:textColor="@color/contact_context_title_text_color"
+                        android:fontFamily="sans-serif-medium"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_gravity="center_horizontal"
+                        android:layout_marginBottom="@dimen/contact_context_title_margin_bottom"/>
+                    <ListView android:id="@+id/contactContextInfo"
+                         android:layout_width="match_parent"
+                         android:layout_height="match_parent"
+                         android:divider="@null"
+                         android:dividerHeight="@dimen/contact_context_list_item_padding"/>
+                </LinearLayout>
+            </FrameLayout>
+
+            <fragment android:name="com.android.incallui.VideoCallFragment"
+                android:id="@+id/videoCallFragment"
+                android:layout_alignParentTop="true"
+                android:layout_gravity="top|center_horizontal"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent" />
+
+            <!-- Progress spinner, useful for indicating pending operations such as upgrade to video. -->
+            <FrameLayout
+                android:id="@+id/progressSpinner"
+                android:background="#63000000"
+                android:layout_width="fill_parent"
+                android:layout_height="fill_parent"
+                android:layout_centerHorizontal="true"
+                android:layout_centerVertical="true"
+                android:visibility="gone">
+
+                <ProgressBar
+                    android:id="@+id/progress_bar"
+                    style="@android:style/Widget.Material.ProgressBar"
+                    android:layout_gravity="center"
+                    android:layout_width="48dp"
+                    android:layout_height="48dp"
+                    android:indeterminate="true" />
+
+            </FrameLayout>
+
+
+            <include layout="@layout/manage_conference_call_button"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content" />
+
+            <!-- Placeholder for various fragments that are added dynamically underneath the caller info. -->
+            <FrameLayout
+                android:id="@+id/answer_and_dialpad_container"
+                android:layout_gravity="bottom|center_horizontal"
+                android:layout_alignParentBottom="true"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:elevation="@dimen/dialpad_elevation" />
+
+            <FrameLayout
+                android:id="@+id/floating_end_call_action_button_container"
+                android:layout_width="@dimen/end_call_floating_action_button_diameter"
+                android:layout_height="@dimen/end_call_floating_action_button_diameter"
+                android:background="@drawable/fab_red"
+                android:layout_alignParentBottom="true"
+                android:layout_centerHorizontal="true"
+                android:layout_marginBottom="@dimen/end_call_button_margin_bottom">
+
+                <ImageButton android:id="@+id/floating_end_call_action_button"
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent"
+                    android:background="@drawable/end_call_background"
+                    android:src="@drawable/fab_ic_end_call"
+                    android:scaleType="center"
+                    android:contentDescription="@string/onscreenEndCallText" />
+
+            </FrameLayout>
+
+        </RelativeLayout>
 
     </LinearLayout>
-
-    <FrameLayout
-        android:layout_height="match_parent"
-        android:layout_width="match_parent"
-        android:layout_below="@id/primary_call_info_container"
-        android:id="@+id/call_card_content">
-
-        <!-- Contact photo for primary call info -->
-        <ImageView android:id="@+id/photo"
-            android:layout_below="@id/primary_call_info_container"
-            android:layout_width="match_parent"
-            android:layout_height="match_parent"
-            android:layout_gravity="center_vertical"
-            android:gravity="top|center_horizontal"
-            android:scaleType="centerCrop"
-            android:importantForAccessibility="no"
-            android:background="@android:color/white"
-            android:src="@drawable/img_no_image_automirrored" />
-
-    </FrameLayout>
-
-    <fragment android:name="com.android.incallui.VideoCallFragment"
-        android:id="@+id/videoCallFragment"
-        android:layout_alignParentTop="true"
-        android:layout_gravity="top|center_horizontal"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent" />
-
-    <!-- Progress spinner, useful for indicating pending operations such as upgrade to video. -->
-    <FrameLayout
-        android:id="@+id/progressSpinner"
-        android:layout_below="@id/primary_call_info_container"
-        android:background="#63000000"
-        android:layout_width="fill_parent"
-        android:layout_height="fill_parent"
-        android:layout_centerHorizontal="true"
-        android:layout_centerVertical="true"
-        android:visibility="gone">
-
-        <ProgressBar
-            android:id="@+id/progress_bar"
-            style="@android:style/Widget.Material.ProgressBar"
-            android:layout_gravity="center"
-            android:layout_width="48dp"
-            android:layout_height="48dp"
-            android:indeterminate="true" />
-
-    </FrameLayout>
-
     <!-- Secondary "Call info" block, for the background ("on hold") call. -->
     <include layout="@layout/secondary_call_info" />
-
-    <include layout="@layout/manage_conference_call_button"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_below="@id/primary_call_info_container" />
-
-    <!-- Placeholder for various fragments that are added dynamically underneath the caller info. -->
-    <FrameLayout
-        android:id="@+id/answer_and_dialpad_container"
-        android:layout_below="@id/primary_call_info_container"
-        android:layout_gravity="bottom|center_horizontal"
-        android:layout_alignParentBottom="true"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:elevation="@dimen/dialpad_elevation" />
-
-    <FrameLayout
-        android:id="@+id/floating_end_call_action_button_container"
-        android:layout_width="@dimen/end_call_floating_action_button_diameter"
-        android:layout_height="@dimen/end_call_floating_action_button_diameter"
-        android:background="@drawable/fab_red"
-        android:layout_centerHorizontal="true"
-        android:layout_marginBottom="@dimen/end_call_button_margin_bottom"
-        android:layout_alignParentBottom="true" >
-
-        <ImageButton android:id="@+id/floating_end_call_action_button"
-            android:layout_width="match_parent"
-            android:layout_height="match_parent"
-            android:background="@drawable/end_call_background"
-            android:src="@drawable/fab_ic_end_call"
-            android:scaleType="center"
-            android:contentDescription="@string/onscreenEndCallText" />
-
-    </FrameLayout>
-
-</RelativeLayout>
+</RelativeLayout>
\ No newline at end of file
diff --git a/InCallUI/res/layout/incall_screen.xml b/InCallUI/res/layout/incall_screen.xml
index d46778c..3922ea0 100644
--- a/InCallUI/res/layout/incall_screen.xml
+++ b/InCallUI/res/layout/incall_screen.xml
@@ -18,5 +18,6 @@
 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
+    android:background="@android:color/black"
     android:id="@+id/main" >
 </FrameLayout>
diff --git a/InCallUI/res/layout/person_context_info_list_item.xml b/InCallUI/res/layout/person_context_info_list_item.xml
new file mode 100644
index 0000000..4f973d5
--- /dev/null
+++ b/InCallUI/res/layout/person_context_info_list_item.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+     android:layout_width="match_parent"
+     android:layout_height="match_parent"
+     android:paddingRight="@dimen/person_contact_context_horizontal_padding"
+     android:paddingLeft="@dimen/person_contact_context_horizontal_padding">
+     <TextView android:id="@+id/message"
+         android:layout_width="wrap_content"
+         android:layout_height="wrap_content"
+         android:paddingLeft="@dimen/person_contact_context_message_horizontal_padding"
+         android:paddingRight="@dimen/person_contact_context_message_horizontal_padding"
+         android:paddingTop="@dimen/person_contact_context_message_vertical_padding"
+         android:paddingBottom="@dimen/person_contact_context_message_vertical_padding"
+         android:textSize="@dimen/person_contact_context_message_text_size"
+         android:textColor="@color/person_contact_context_message_text_color"
+         android:fontFamily="sans-serif-medium"
+         android:background="@drawable/incoming_sms_background"/>
+      <TextView android:id="@+id/detail"
+         android:layout_width="wrap_content"
+         android:layout_height="wrap_content"
+         android:paddingTop="@dimen/person_contact_context_detail_padding_top"
+         android:textSize="@dimen/person_contact_context_detail_text_size"
+         android:textColor="@color/person_contact_context_detail_text_color"
+         android:fontFamily="sans-serif-medium"
+         android:layout_below="@id/message"/>
+</RelativeLayout>
\ No newline at end of file
diff --git a/InCallUI/res/layout/primary_call_info.xml b/InCallUI/res/layout/primary_call_info.xml
index 8f78440..629d220 100644
--- a/InCallUI/res/layout/primary_call_info.xml
+++ b/InCallUI/res/layout/primary_call_info.xml
@@ -21,178 +21,201 @@
     other status info.  This info is shown as a "banner" overlaid across the top of contact photo.
     -->
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/primary_call_banner"
     android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:orientation="vertical"
+    android:layout_height="0dp"
+    android:layout_weight="1"
+    android:orientation="horizontal"
     android:minHeight="@dimen/call_banner_height"
     android:paddingStart="@dimen/call_banner_side_padding"
     android:paddingEnd="@dimen/call_banner_side_padding"
-    android:clipChildren="false"
-    android:clipToPadding="false"
     android:animateLayoutChanges="true"
     android:gravity="center">
 
-    <LinearLayout android:id="@+id/callSubjectLayout"
-                  android:layout_width="match_parent"
-                  android:layout_height="wrap_content"
-                  android:orientation="horizontal"
-                  android:clipChildren="false"
-                  android:clipToPadding="false">
-
-        <TextView android:id="@+id/callSubject"
-                  android:layout_width="wrap_content"
-                  android:layout_height="wrap_content"
-                  android:textAlignment="viewStart"
-                  android:textAppearance="?android:attr/textAppearanceSmall"
-                  android:textColor="@color/incall_call_banner_background_color"
-                  android:textSize="@dimen/call_label_text_size"
-                  android:background="@drawable/subject_bubble"
-                  android:maxLines="2"
-                  android:ellipsize="end"
-                  android:singleLine="false"
-                  android:visibility="gone" />
-    </LinearLayout>
-
-    <LinearLayout android:id="@+id/callStateButton"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:orientation="horizontal"
+    <LinearLayout
+        android:id="@+id/primary_call_banner"
+        android:layout_width="0dp"
+        android:layout_height="match_parent"
+        android:layout_weight="1"
+        android:orientation="vertical"
         android:clipChildren="false"
-        android:clipToPadding="false">
+        android:clipToPadding="false"
+        android:gravity="center">
 
-        <!-- Subscription provider or WiFi calling icon displayed to the left of the label -->
-        <ImageView android:id="@+id/callStateIcon"
-            android:layout_width="24dp"
-            android:layout_height="match_parent"
-            android:layout_marginEnd="10dp"
-            android:tint="@color/incall_accent_color"
-            android:alpha="0.0"
-            android:scaleType="fitCenter"
-            android:visibility="gone" />
+        <LinearLayout android:id="@+id/callSubjectLayout"
+                      android:layout_width="match_parent"
+                      android:layout_height="wrap_content"
+                      android:orientation="horizontal"
+                      android:clipChildren="false"
+                      android:clipToPadding="false">
 
-        <ImageView android:id="@+id/videoCallIcon"
-            android:src="@drawable/ic_toolbar_video"
-            android:layout_width="16dp"
-            android:layout_height="match_parent"
-            android:layout_marginEnd="16dp"
-            android:baselineAlignBottom="true"
-            android:tint="@color/incall_accent_color"
-            android:scaleType="center"
-            android:visibility="gone" />
+            <TextView android:id="@+id/callSubject"
+                      android:layout_width="wrap_content"
+                      android:layout_height="wrap_content"
+                      android:textAlignment="viewStart"
+                      android:textAppearance="?android:attr/textAppearanceSmall"
+                      android:textColor="@color/incall_call_banner_background_color"
+                      android:textSize="@dimen/call_label_text_size"
+                      android:background="@drawable/subject_bubble"
+                      android:maxLines="2"
+                      android:ellipsize="end"
+                      android:singleLine="false"
+                      android:visibility="gone" />
+        </LinearLayout>
 
-        <com.android.phone.common.widget.ResizingTextTextView
-            xmlns:ex="http://schemas.android.com/apk/res-auto"
-            android:id="@+id/callStateLabel"
+        <LinearLayout android:id="@+id/callStateButton"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:textAlignment="viewStart"
-            android:textAppearance="?android:attr/textAppearanceLarge"
-            android:textColor="@color/incall_accent_color"
-            android:textSize="@dimen/call_status_text_size"
-            android:alpha="0.7"
-            android:singleLine="true"
-            android:gravity="start"
-            android:ellipsize="end"
-            ex:resizing_text_min_size="@dimen/call_status_text_min_size" />
+            android:orientation="horizontal"
+            android:clipChildren="false"
+            android:clipToPadding="false">
 
-    </LinearLayout>
+            <!-- Subscription provider or WiFi calling icon displayed to the left of the label -->
+            <ImageView android:id="@+id/callStateIcon"
+                android:layout_width="24dp"
+                android:layout_height="match_parent"
+                android:layout_marginEnd="10dp"
+                android:tint="@color/incall_accent_color"
+                android:alpha="0.0"
+                android:scaleType="fitCenter"
+                android:visibility="gone" />
 
-    <!-- Name (or the phone number, if we don't have a name to display). -->
-    <com.android.phone.common.widget.ResizingTextTextView
-        xmlns:ex="http://schemas.android.com/apk/res-auto"
-        android:id="@+id/name"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_marginTop="-5dp"
-        android:fontFamily="sans-serif-light"
-        android:textAlignment="viewStart"
-        android:textAppearance="?android:attr/textAppearanceLarge"
-        android:textSize="@dimen/call_name_text_size"
-        android:singleLine="true"
-        ex:resizing_text_min_size="@dimen/call_name_text_min_size" />
+            <ImageView android:id="@+id/videoCallIcon"
+                android:src="@drawable/ic_toolbar_video"
+                android:layout_width="16dp"
+                android:layout_height="match_parent"
+                android:layout_marginEnd="16dp"
+                android:baselineAlignBottom="true"
+                android:tint="@color/incall_accent_color"
+                android:scaleType="center"
+                android:visibility="gone" />
 
+            <com.android.phone.common.widget.ResizingTextTextView
+                xmlns:ex="http://schemas.android.com/apk/res-auto"
+                android:id="@+id/callStateLabel"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:textAlignment="viewStart"
+                android:textAppearance="?android:attr/textAppearanceLarge"
+                android:textColor="@color/incall_accent_color"
+                android:textSize="@dimen/call_status_text_size"
+                android:alpha="0.7"
+                android:singleLine="true"
+                android:gravity="start"
+                android:ellipsize="end"
+                ex:resizing_text_min_size="@dimen/call_status_text_min_size" />
 
-    <LinearLayout
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:orientation="horizontal"
-        android:clipChildren="false"
-        android:clipToPadding="false">
+        </LinearLayout>
 
-        <ImageView android:id="@+id/hdAudioIcon"
-            android:src="@drawable/ic_hd_24dp"
-            android:layout_width="24dp"
-            android:layout_height="match_parent"
-            android:layout_marginEnd="8dp"
-            android:tint="@color/incall_call_banner_subtext_color"
-            android:scaleType="fitCenter"
-            android:visibility="gone" />
+        <RelativeLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content">
 
-        <ImageView android:id="@+id/forwardIcon"
-            android:src="@drawable/ic_forward_white_24dp"
-            android:layout_width="24dp"
-            android:layout_height="match_parent"
-            android:layout_marginEnd="8dp"
-            android:tint="@color/incall_call_banner_subtext_color"
-            android:scaleType="fitCenter"
-            android:visibility="gone" />
+            <!-- Name (or the phone number, if we don't have a name to display). -->
+            <com.android.phone.common.widget.ResizingTextTextView
+                xmlns:ex="http://schemas.android.com/apk/res-auto"
+                android:id="@+id/name"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="-5dp"
+                android:fontFamily="sans-serif-light"
+                android:textAlignment="viewStart"
+                android:textAppearance="?android:attr/textAppearanceLarge"
+                android:textSize="@dimen/call_name_text_size"
+                android:singleLine="true"
+                ex:resizing_text_min_size="@dimen/call_name_text_min_size" />
 
-        <!-- Label (like "Mobile" or "Work", if present) and phone number, side by side -->
-        <LinearLayout android:id="@+id/labelAndNumber"
-            android:layout_width="wrap_content"
+            <!-- Contact photo for primary call info -->
+            <ImageView android:id="@+id/photoSmall"
+                android:layout_width="@dimen/contact_context_small_photo_size"
+                android:layout_height="@dimen/contact_context_small_photo_size"
+                android:layout_centerVertical="true"
+                android:layout_alignParentEnd="true"
+                android:scaleType="centerCrop"
+                android:importantForAccessibility="no"
+                android:src="@drawable/img_no_image_automirrored" />
+        </RelativeLayout>
+
+        <LinearLayout
+            android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:layout_weight="1"
-            android:orientation="horizontal">
+            android:orientation="horizontal"
+            android:clipChildren="false"
+            android:clipToPadding="false">
 
-            <TextView android:id="@+id/label"
+            <ImageView android:id="@+id/hdAudioIcon"
+                android:src="@drawable/ic_hd_24dp"
+                android:layout_width="24dp"
+                android:layout_height="match_parent"
+                android:layout_marginEnd="8dp"
+                android:tint="@color/incall_call_banner_subtext_color"
+                android:scaleType="fitCenter"
+                android:visibility="gone" />
+
+            <ImageView android:id="@+id/forwardIcon"
+                android:src="@drawable/ic_forward_white_24dp"
+                android:layout_width="24dp"
+                android:layout_height="match_parent"
+                android:layout_marginEnd="8dp"
+                android:tint="@color/incall_call_banner_subtext_color"
+                android:scaleType="fitCenter"
+                android:visibility="gone" />
+
+            <!-- Label (like "Mobile" or "Work", if present) and phone number, side by side -->
+            <LinearLayout android:id="@+id/labelAndNumber"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_weight="1"
+                android:orientation="horizontal">
+
+                <TextView android:id="@+id/label"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="0"
+                    android:textAppearance="?android:attr/textAppearanceSmall"
+                    android:textColor="@color/incall_call_banner_subtext_color"
+                    android:textSize="@dimen/call_label_text_size"
+                    android:singleLine="true"
+                    android:textDirection="ltr"
+                    android:visibility="gone" />
+
+                <TextView android:id="@+id/phoneNumber"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="1"
+                    android:layout_marginStart="6dp"
+                    android:textAlignment="viewStart"
+                    android:textAppearance="?android:attr/textAppearanceSmall"
+                    android:textColor="@color/incall_call_banner_subtext_color"
+                    android:textSize="@dimen/call_label_text_size"
+                    android:singleLine="false"
+                    android:visibility="gone" />
+
+            </LinearLayout>
+
+            <!-- Elapsed time indication for a call in progress. -->
+            <TextView android:id="@+id/elapsedTime"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:layout_weight="0"
+                android:textAlignment="viewEnd"
                 android:textAppearance="?android:attr/textAppearanceSmall"
                 android:textColor="@color/incall_call_banner_subtext_color"
                 android:textSize="@dimen/call_label_text_size"
                 android:singleLine="true"
-                android:textDirection="ltr"
-                android:visibility="gone" />
-
-            <TextView android:id="@+id/phoneNumber"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_weight="1"
-                android:layout_marginStart="6dp"
-                android:textAlignment="viewStart"
-                android:textAppearance="?android:attr/textAppearanceSmall"
-                android:textColor="@color/incall_call_banner_subtext_color"
-                android:textSize="@dimen/call_label_text_size"
-                android:singleLine="false"
                 android:visibility="gone" />
 
         </LinearLayout>
 
-        <!-- Elapsed time indication for a call in progress. -->
-        <TextView android:id="@+id/elapsedTime"
+        <!-- Call type indication: a special label and/or branding
+         for certain kinds of calls (like "SIP call" for a SIP call.) -->
+        <TextView android:id="@+id/callTypeLabel"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:layout_weight="0"
-            android:textAlignment="viewEnd"
             android:textAppearance="?android:attr/textAppearanceSmall"
-            android:textColor="@color/incall_call_banner_subtext_color"
-            android:textSize="@dimen/call_label_text_size"
-            android:singleLine="true"
+            android:textColor="@color/incall_call_banner_text_color"
+            android:maxLines="1"
+            android:ellipsize="end"
             android:visibility="gone" />
 
     </LinearLayout>
-
-    <!-- Call type indication: a special label and/or branding
-     for certain kinds of calls (like "SIP call" for a SIP call.) -->
-    <TextView android:id="@+id/callTypeLabel"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:textAppearance="?android:attr/textAppearanceSmall"
-        android:textColor="@color/incall_call_banner_text_color"
-        android:maxLines="1"
-        android:ellipsize="end"
-        android:visibility="gone" />
-
 </LinearLayout>  <!-- End of call_banner -->
diff --git a/InCallUI/res/values-af/strings.xml b/InCallUI/res/values-af/strings.xml
index 345cf91..12aeb4f 100644
--- a/InCallUI/res/values-af/strings.xml
+++ b/InCallUI/res/values-af/strings.xml
@@ -49,7 +49,7 @@
     <string name="card_title_video_call" msgid="5898636679563320218">"Video-oproep"</string>
     <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Versoek tans video"</string>
     <string name="card_title_video_call_error" msgid="9000555878389539225">"Kan nie video-oproep koppel nie"</string>
-    <string name="card_title_video_call_paused" msgid="3753261320787432731">"Video-oproep (Wag tans)"</string>
+    <string name="card_title_video_call_rejected" msgid="462358296694719787">"Videoversoek is verwerp"</string>
     <string name="card_title_callback_number" msgid="7307938207564217293">"Jou terugbelnommer\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Jou noodterugbelnommer\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="notification_dialing" msgid="2107666444937350731">"Bel"</string>
@@ -152,7 +152,6 @@
     <string name="default_notification_description" msgid="78174796906240970">"Verstek klank (<xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g>)"</string>
     <string name="ringtone_title" msgid="6374978286202084684">"Foon-luitoon"</string>
     <string name="vibrate_on_ring_title" msgid="9197564612065258960">"Vibreer wanneer lui"</string>
-    <string name="dial_pad_autocomplete" msgid="7683489952557536398">"Belblad-outovoltooi"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Luitoon en vibreer"</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"Bestuur konferensie-oproep"</string>
     <string name="emergency_call_dialog_number_for_display" msgid="8373041754188879871">"Noodnommer"</string>
@@ -168,4 +167,21 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> uur</item>
       <item quantity="one">1 uur</item>
     </plurals>
+    <string name="profile_photo_description" msgid="5609894336203315400">"Profielfoto"</string>
+    <string name="camera_off_description" msgid="5689494614359429889">"Kamera af"</string>
+    <string name="child_number" msgid="7437330400723805538">"via <xliff:g id="CHILD_NUMBER">%s</xliff:g>"</string>
+    <string name="note_sent" msgid="3548700178238244595">"Nota is gestuur"</string>
+    <string name="person_contact_context_title" msgid="723266617256740572">"Onlangse boodskappe"</string>
+    <string name="business_contact_context_title" msgid="5334864183374669765">"Besigheidinligting"</string>
+    <string name="distance_imperial_away" msgid="437508440176409037">"<xliff:g id="DISTANCE">%.1f</xliff:g> myl ver"</string>
+    <string name="distance_metric_away" msgid="166931929505893599">"<xliff:g id="DISTANCE">%.1f</xliff:g> km ver"</string>
+    <string name="display_address" msgid="7307400970699471708">"<xliff:g id="STREET_ADDRESS">%1$s</xliff:g>, <xliff:g id="LOCALITY">%2$s</xliff:g>"</string>
+    <string name="open_time_span" msgid="6709726401179550381">"<xliff:g id="OPEN_TIME">%1$s</xliff:g> – <xliff:g id="CLOSE_TIME">%2$s</xliff:g>"</string>
+    <string name="opening_hours" msgid="8524931350345922176">"<xliff:g id="EARLIER_TIMES">%1$s</xliff:g>, <xliff:g id="LATER_TIME">%2$s</xliff:g>"</string>
+    <string name="opens_tomorrow_at" msgid="9168271983241323946">"Maak môre om <xliff:g id="OPEN_TIME">%s</xliff:g> oop"</string>
+    <string name="opens_today_at" msgid="9011139983701379907">"Maak vandag om <xliff:g id="OPEN_TIME">%s</xliff:g> oop"</string>
+    <string name="closes_today_at" msgid="2623384032475495193">"Maak om <xliff:g id="CLOSE_TIME">%s</xliff:g> toe"</string>
+    <string name="closed_today_at" msgid="324294933330883529">"Het vandag om <xliff:g id="CLOSE_TIME">%s</xliff:g> toegemaak"</string>
+    <string name="open_now" msgid="6439301193613349163">"Nou oop"</string>
+    <string name="closed_now" msgid="9175774453982778909">"Nou gesluit"</string>
 </resources>
diff --git a/InCallUI/res/values-am/strings.xml b/InCallUI/res/values-am/strings.xml
index 4a321d4..44e71c0 100644
--- a/InCallUI/res/values-am/strings.xml
+++ b/InCallUI/res/values-am/strings.xml
@@ -49,7 +49,7 @@
     <string name="card_title_video_call" msgid="5898636679563320218">"የቪዲዮ ጥሪ"</string>
     <string name="card_title_video_call_requesting" msgid="4587504939739340937">"ቪድዮ በመጠየቅ ላይ"</string>
     <string name="card_title_video_call_error" msgid="9000555878389539225">"የቪዲዮ ጥሪን ማገናኘት አልተቻለም"</string>
-    <string name="card_title_video_call_paused" msgid="3753261320787432731">"የቪዲዮ ጥሪ (ላፍታ ቆሟል)"</string>
+    <string name="card_title_video_call_rejected" msgid="462358296694719787">"የቪዲዮ ጥያቄ ውድቅ ተደርጓል"</string>
     <string name="card_title_callback_number" msgid="7307938207564217293">"የእርስዎ የመልሶ መደወያ ቁጥር\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"የእርስዎ የድንገተኛ አደጋ መልሶ መደወያ ቁጥር\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="notification_dialing" msgid="2107666444937350731">"በመደወል ላይ"</string>
@@ -152,7 +152,6 @@
     <string name="default_notification_description" msgid="78174796906240970">"ነባሪ ድምጽ (<xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g>)"</string>
     <string name="ringtone_title" msgid="6374978286202084684">"የስልክ ጥሪ ድምፅ"</string>
     <string name="vibrate_on_ring_title" msgid="9197564612065258960">"በሚደወልበት ጊዜ ንዘር"</string>
-    <string name="dial_pad_autocomplete" msgid="7683489952557536398">"የስልክ ሰሌዳ ራስ-አጠናቅቅ"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"የደወል ቅላጼ እና ንዘረት"</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"የስብሰባስልክ ጥሪ አደራጅ"</string>
     <string name="emergency_call_dialog_number_for_display" msgid="8373041754188879871">"የአደጋ ጊዜ ቁጥር"</string>
@@ -168,4 +167,21 @@
       <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> ሰዓቶች</item>
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> ሰዓቶች</item>
     </plurals>
+    <string name="profile_photo_description" msgid="5609894336203315400">"መገለጫ ፎቶ"</string>
+    <string name="camera_off_description" msgid="5689494614359429889">"ካሜራ ጠፍቷል"</string>
+    <string name="child_number" msgid="7437330400723805538">"በ<xliff:g id="CHILD_NUMBER">%s</xliff:g> በኩል"</string>
+    <string name="note_sent" msgid="3548700178238244595">"ማስታወሻ ተልኳል"</string>
+    <string name="person_contact_context_title" msgid="723266617256740572">"የቅርብ ጊዜ መልዕክቶች"</string>
+    <string name="business_contact_context_title" msgid="5334864183374669765">"የንግድ መረጃ"</string>
+    <string name="distance_imperial_away" msgid="437508440176409037">"<xliff:g id="DISTANCE">%.1f</xliff:g> ማይል ርቀት ላይ"</string>
+    <string name="distance_metric_away" msgid="166931929505893599">"<xliff:g id="DISTANCE">%.1f</xliff:g> ኪሜ ርቀት ላይ"</string>
+    <string name="display_address" msgid="7307400970699471708">"<xliff:g id="STREET_ADDRESS">%1$s</xliff:g>፣ <xliff:g id="LOCALITY">%2$s</xliff:g>"</string>
+    <string name="open_time_span" msgid="6709726401179550381">"<xliff:g id="OPEN_TIME">%1$s</xliff:g> - <xliff:g id="CLOSE_TIME">%2$s</xliff:g>"</string>
+    <string name="opening_hours" msgid="8524931350345922176">"<xliff:g id="EARLIER_TIMES">%1$s</xliff:g>፣ <xliff:g id="LATER_TIME">%2$s</xliff:g>"</string>
+    <string name="opens_tomorrow_at" msgid="9168271983241323946">"ነገ <xliff:g id="OPEN_TIME">%s</xliff:g> ላይ ይከፈታል"</string>
+    <string name="opens_today_at" msgid="9011139983701379907">"ዛሬ <xliff:g id="OPEN_TIME">%s</xliff:g> ላይ ይከፈታል"</string>
+    <string name="closes_today_at" msgid="2623384032475495193">"<xliff:g id="CLOSE_TIME">%s</xliff:g> ላይ ይዘጋል"</string>
+    <string name="closed_today_at" msgid="324294933330883529">"ዛሬ <xliff:g id="CLOSE_TIME">%s</xliff:g> ላይ ተዘግቷል"</string>
+    <string name="open_now" msgid="6439301193613349163">"አሁን ክፍት ነው"</string>
+    <string name="closed_now" msgid="9175774453982778909">"አሁን ዝግ ነው"</string>
 </resources>
diff --git a/InCallUI/res/values-ar/strings.xml b/InCallUI/res/values-ar/strings.xml
index 06bb7e2..a9fcb64 100644
--- a/InCallUI/res/values-ar/strings.xml
+++ b/InCallUI/res/values-ar/strings.xml
@@ -49,7 +49,7 @@
     <string name="card_title_video_call" msgid="5898636679563320218">"مكالمة فيديو"</string>
     <string name="card_title_video_call_requesting" msgid="4587504939739340937">"جارٍ طلب الفيديو"</string>
     <string name="card_title_video_call_error" msgid="9000555878389539225">"يتعذر إجراء مكالمة فيديو"</string>
-    <string name="card_title_video_call_paused" msgid="3753261320787432731">"مكالمة فيديو (تم إيقافها مؤقتًا)"</string>
+    <string name="card_title_video_call_rejected" msgid="462358296694719787">"تم رفض طلب مكالمة الفيديو"</string>
     <string name="card_title_callback_number" msgid="7307938207564217293">"رقم معاودة الاتصال\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"رقم معاودة اتصال الطوارئ\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="notification_dialing" msgid="2107666444937350731">"جارٍ الطلب"</string>
@@ -152,7 +152,6 @@
     <string name="default_notification_description" msgid="78174796906240970">"الصوت الافتراضي (<xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g>)"</string>
     <string name="ringtone_title" msgid="6374978286202084684">"نغمة رنين الهاتف"</string>
     <string name="vibrate_on_ring_title" msgid="9197564612065258960">"اهتزاز عند الرنين"</string>
-    <string name="dial_pad_autocomplete" msgid="7683489952557536398">"الإكمال التلقائي للوحة الطلب"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"نغمة الرنين والاهتزاز"</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"إدارة مكالمة جماعية"</string>
     <string name="emergency_call_dialog_number_for_display" msgid="8373041754188879871">"رقم الطوارئ"</string>
@@ -180,4 +179,21 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> من الساعات</item>
       <item quantity="one">ساعة واحدة</item>
     </plurals>
+    <string name="profile_photo_description" msgid="5609894336203315400">"صورة الملف الشخصي"</string>
+    <string name="camera_off_description" msgid="5689494614359429889">"تم إيقاف الكاميرا"</string>
+    <string name="child_number" msgid="7437330400723805538">"عبر <xliff:g id="CHILD_NUMBER">%s</xliff:g>"</string>
+    <string name="note_sent" msgid="3548700178238244595">"تم إرسال الملاحظة"</string>
+    <string name="person_contact_context_title" msgid="723266617256740572">"الرسائل الأخيرة"</string>
+    <string name="business_contact_context_title" msgid="5334864183374669765">"معلومات النشاط التجاري"</string>
+    <string name="distance_imperial_away" msgid="437508440176409037">"على بُعد <xliff:g id="DISTANCE">%.1f</xliff:g> ميل"</string>
+    <string name="distance_metric_away" msgid="166931929505893599">"على بُعد <xliff:g id="DISTANCE">%.1f</xliff:g> كم"</string>
+    <string name="display_address" msgid="7307400970699471708">"<xliff:g id="STREET_ADDRESS">%1$s</xliff:g>، <xliff:g id="LOCALITY">%2$s</xliff:g>"</string>
+    <string name="open_time_span" msgid="6709726401179550381">"<xliff:g id="OPEN_TIME">%1$s</xliff:g> - <xliff:g id="CLOSE_TIME">%2$s</xliff:g>"</string>
+    <string name="opening_hours" msgid="8524931350345922176">"<xliff:g id="EARLIER_TIMES">%1$s</xliff:g>، <xliff:g id="LATER_TIME">%2$s</xliff:g>"</string>
+    <string name="opens_tomorrow_at" msgid="9168271983241323946">"مفتوح غدًا في <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="opens_today_at" msgid="9011139983701379907">"مفتوح اليوم في <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="closes_today_at" msgid="2623384032475495193">"مغلق في <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="closed_today_at" msgid="324294933330883529">"مغلق اليوم في <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="open_now" msgid="6439301193613349163">"مفتوح الآن"</string>
+    <string name="closed_now" msgid="9175774453982778909">"مغلق الآن"</string>
 </resources>
diff --git a/InCallUI/res/values-az-rAZ/strings.xml b/InCallUI/res/values-az-rAZ/strings.xml
index 1690af8..96c5c93 100644
--- a/InCallUI/res/values-az-rAZ/strings.xml
+++ b/InCallUI/res/values-az-rAZ/strings.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!--
+<!-- 
   ~ Copyright (C) 2013 The Android Open Source Project
   ~
   ~ Licensed under the Apache License, Version 2.0 (the "License");
@@ -21,29 +21,9 @@
     <string name="onHold" msgid="9035493194749959955">"Gözləmə mövqeyində"</string>
     <string name="unknown" msgid="6878797917991465859">"Naməlum"</string>
     <string name="private_num" msgid="6713286113000232309">"Şəxsi nömrə"</string>
-    <string name="payphone" msgid="1931775086311769314">"Telefon ödənişi"</string>
-    <string name="callFailed_userBusy" msgid="8851106999809294904">"Xətt məşğuldur"</string>
-    <string name="callFailed_congestion" msgid="8737761615702718375">"Şəbəkə məşğuldur"</string>
-    <string name="callFailed_timedOut" msgid="7590961703135543346">"Cavab yoxdur, vaxt keçdi"</string>
-    <string name="callFailed_server_unreachable" msgid="2133506577423869729">"Server əlçatmazdır"</string>
-    <string name="callFailed_number_unreachable" msgid="7632566442515734778">"Nömrə əlçatmazdır"</string>
-    <string name="callFailed_invalid_credentials" msgid="8226835346196775378">"Yanlış istifadəçi adı və ya parol"</string>
-    <string name="callFailed_out_of_network" msgid="8740943329772180507">"Şəbəkədən kənar zəng edilib"</string>
-    <string name="callFailed_server_error" msgid="5717915213586193217">"Server xətası. Yenidən cəhd edin."</string>
-    <string name="callFailed_noSignal" msgid="1889803273616031933">"Siqnal yoxdur"</string>
-    <string name="callFailed_limitExceeded" msgid="4958065157970101491">"ACM limiti keçilib"</string>
-    <string name="callFailed_powerOff" msgid="2766035859391549713">"Radio deaktivdir"</string>
-    <string name="callFailed_simError" msgid="4476360200030635828">"SIM və ya SIM xətası yoxdur"</string>
-    <string name="callFailed_outOfService" msgid="4825791466557236225">"Xidmət zonasından kənarda"</string>
-    <string name="callFailed_fdn_only" msgid="2850204579765430641">"Gedən zənglər FDN tərəfindən məhdudlaşdırılıb."</string>
-    <string name="callFailed_cb_enabled" msgid="3686963693629739680">"Zənglər qadağan olduğu halda zəng edə bilməzsiniz."</string>
-    <string name="callFailed_dsac_restricted" msgid="2180223622768522345">"Bütün zənglər giriş kontrolu ilə məhdudlaşdırılıb."</string>
-    <string name="callFailed_dsac_restricted_emergency" msgid="4353654268813314466">"Təcili zənglər giriş kontrolu ilə məhdudlaşdırılıb."</string>
-    <string name="callFailed_dsac_restricted_normal" msgid="2680774510252408620">"Normal zənglər giriş kontrolu ilə məhdudlaşdırılıb."</string>
-    <string name="callFailed_unobtainable_number" msgid="4736290912891155067">"Yanlış nömrə"</string>
+    <string name="payphone" msgid="4793877574636445118">"Taksofon"</string>
     <string name="confCall" msgid="1904840547188336828">"Konfrans zəngi"</string>
-    <string name="call_lost" msgid="317670617901479594">"Zəng itdi."</string>
-    <string name="ok" msgid="3811371167865772377">"OK"</string>
+    <string name="call_lost" msgid="6183862117003999578">"Zəng bitdi"</string>
     <string name="audio_mode_speaker" msgid="27649582100085266">"Dinamik"</string>
     <string name="audio_mode_earpiece" msgid="4156527186373869107">"Dəstək qulaqlığı"</string>
     <string name="audio_mode_wired_headset" msgid="1465350758489175975">"Simli qulaqlıq"</string>
@@ -57,7 +37,7 @@
     <string name="caller_manage_header" msgid="3231519674734638786">"Konfrans zəngi <xliff:g id="CONF_CALL_TIME">%s</xliff:g>"</string>
     <string name="voicemail_settings_number_label" msgid="8524164258691887790">"Səsli poçt nömrəsi"</string>
     <string name="card_title_dialing" msgid="5769417478498348054">"Nömrə yığılır"</string>
-    <string name="card_title_redialing" msgid="4831412164303596395">"Yenidən sınanılır"</string>
+    <string name="card_title_redialing" msgid="8253487008234167266">"Yenidən yığır"</string>
     <string name="card_title_conf_call" msgid="1162980346189744501">"Konfrans zəngi"</string>
     <string name="card_title_incoming_call" msgid="7364539451234646909">"Gələn zəng"</string>
     <string name="card_title_call_ended" msgid="5544730338889702298">"Zəng sona çatdı"</string>
@@ -65,77 +45,143 @@
     <string name="card_title_hanging_up" msgid="3999101620995182450">"Dəstək asılır"</string>
     <string name="card_title_in_call" msgid="6346543933068225205">"zəngdadır"</string>
     <string name="card_title_my_phone_number" msgid="112428362494434191">"Mənim nömrəm <xliff:g id="MY_PHONE_NUMBER">%s</xliff:g>"</string>
+    <string name="card_title_video_call_connecting" msgid="297586766381973954">"Video qoşulur"</string>
+    <string name="card_title_video_call" msgid="5898636679563320218">"Video zəng"</string>
+    <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Video sorğusu göndərilir"</string>
+    <string name="card_title_video_call_error" msgid="9000555878389539225">"Video zəngə qoşulmaq mümkün deyil"</string>
+    <string name="card_title_video_call_rejected" msgid="462358296694719787">"Video sorğusu rədd edildi"</string>
+    <string name="card_title_callback_number" msgid="7307938207564217293">"Cavab zəngi üçün nömrə\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
+    <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Təcili cavab zəngi nömrəniz\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="notification_dialing" msgid="2107666444937350731">"Nömrə yığılır"</string>
     <string name="notification_missedCallTitle" msgid="7554385905572364535">"Buraxılmış zəng"</string>
     <string name="notification_missedCallsTitle" msgid="1361677948941502522">"Buraxılmış zənglər"</string>
     <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> buraxılmış zənglər"</string>
     <string name="notification_missedCallTicker" msgid="504686252427747209">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g> tərəfindən zəng buraxılıb"</string>
     <string name="notification_ongoing_call" msgid="7068688957273482989">"Davam edən zəng"</string>
+    <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"Davam edən Wi-Fi zəngi"</string>
     <string name="notification_on_hold" msgid="3480694969511790465">"Gözləmə mövqeyində"</string>
     <string name="notification_incoming_call" msgid="2820429205043529642">"Zəng gəlir"</string>
+    <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"Gələn Wi-Fi zəngi"</string>
+    <string name="notification_incoming_video_call" msgid="7356836933934464805">"Gələn video zəng"</string>
+    <string name="notification_requesting_video_call" msgid="1405576812892369451">"Gələn video çağrı"</string>
     <string name="notification_voicemail_title" msgid="8933468752045550523">"Yeni səsli poçt"</string>
     <string name="notification_voicemail_title_count" msgid="4366360747660929916">"Yeni səsli poçt (<xliff:g id="COUNT">%d</xliff:g>)"</string>
     <string name="notification_voicemail_text_format" msgid="4447323569453981685">"Yığın <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"Səsli poçt nömrəsi naməlumdur"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"Xidmət yoxdur"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"Seçilmiş (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) şəbəkə əlçatmazdır"</string>
+    <string name="notification_action_answer" msgid="6700362365135365143">"Cavab"</string>
     <string name="notification_action_end_call" msgid="6069460915123531620">"Dəstəyi qoyun"</string>
+    <string name="notification_action_answer_video" msgid="7809271910870211729">"Videolar"</string>
+    <string name="notification_action_answer_voice" msgid="1770796916369437773">"Səs"</string>
+    <string name="notification_action_accept" msgid="2898609801209468429">"Qəbul edin"</string>
+    <string name="notification_action_dismiss" msgid="2679969397930852858">"Kənarlaşdırın"</string>
     <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Geriyə zəng"</string>
     <string name="notification_missedCall_message" msgid="3049928912736917988">"Mesaj"</string>
     <string name="incall_error_power_off" msgid="6550191216405193368">"Zəng etmək üçün ilk olaraq Uçuş Rejimini söndürün."</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"Şəbəkədə qeydə alınmayıb."</string>
-    <string name="incall_error_out_of_service" msgid="8587993036435080418">"Mobil şəbəkə əlçatımlı deyil."</string>
-    <string name="incall_error_no_phone_number_supplied" msgid="4197432103471807739">"Zəng göndərilmədi, etibarlı nömrə daxil edilməyib."</string>
-    <string name="incall_error_call_failed" msgid="4313552620858880999">"Zəng göndərilmədi."</string>
+    <string name="incall_error_out_of_service" msgid="4100065333878929223">"Mobil şəbəkə əlçatan deyil"</string>
+    <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Zəngi yerləşdirmək üçün düzgün nömrə daxil edin."</string>
+    <string name="incall_error_call_failed" msgid="6302746943230078197">"Zəng etmək mümkün deyil."</string>
     <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"MMI başlanma ardıcıllığı…"</string>
-    <string name="incall_error_supp_service_unknown" msgid="2991054870745666038">"Dəstəklənməyən xidmət."</string>
-    <string name="incall_error_supp_service_switch" msgid="3503552565745872241">"Zəngləri keçirmək mümkün deyil."</string>
-    <string name="incall_error_supp_service_separate" msgid="914362338192301746">"Zəngi ayırmaq mümkün deyil."</string>
-    <string name="incall_error_supp_service_transfer" msgid="2509871374644921632">"Zəng transfer oluna bilmir."</string>
-    <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Zənglərin konfransı mümkün deyil."</string>
-    <string name="incall_error_supp_service_reject" msgid="7055164130563826216">"Zəngi rədd etmək mümkün deyil."</string>
-    <string name="incall_error_supp_service_hangup" msgid="7417583238334762737">"Zəng(ləri) buraxmaq mümkün deyil."</string>
-    <string name="incall_call_type_label_sip" msgid="2310958283037924371">"İnternet zəng"</string>
+    <string name="incall_error_supp_service_unknown" msgid="323435289607131929">"Xidmət dəstəklənmir."</string>
+    <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"Zəngləri keçirmək mümkün deyil."</string>
+    <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"Zəngi ayırmaq mümkün deyil."</string>
+    <string name="incall_error_supp_service_transfer" msgid="7235952238189391438">"Ötürmək mümkün deyil."</string>
+    <string name="incall_error_supp_service_conference" msgid="7010354362202271726">"Konfrans keçirmək mümkün deyil."</string>
+    <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Zəngi rədd etmək mümkün deyil."</string>
+    <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Zəngləri buraxmaq mümkün deyil."</string>
+    <string name="incall_call_type_label_sip" msgid="4931428719494190371">"SIP çağrısı"</string>
     <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Təcili zəng"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Radio yandırılır ..."</string>
-    <string name="emergency_enable_radio_dialog_retry" msgid="3724423402363063736">"Xidmət sahəsindən kənardadır, yenidən sınanılır…"</string>
-    <string name="dial_emergency_error" msgid="7969515493359619960">"Zəng göndərilmədi. <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> təcili nömrə deyil!"</string>
-    <string name="dial_emergency_empty_error" msgid="5556166819619323893">"Zəng göndərilmədi. Təcili nömrəyə zəng vurun!"</string>
+    <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Xidmət yoxdur. Yenidən cəhd edilir…"</string>
+    <string name="dial_emergency_error" msgid="1509085166367420355">"Zəng etmək mümkün deyil. <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> fövqəladə nömrə deyil."</string>
+    <string name="dial_emergency_empty_error" msgid="9130194953830414638">"Zəng etmək mümkün deyil. Fövqəladə nömrəni yığ."</string>
     <string name="dialerKeyboardHintText" msgid="9192914825413747792">"Yığmaq üçün klaviatura istifadə edin"</string>
-    <string name="onscreenHoldText" msgid="2285258239691145872">"Saxlayın"</string>
-    <string name="onscreenEndCallText" msgid="4403855834875398585">"Son"</string>
+    <string name="onscreenHoldText_unselected" msgid="7092499303393171276">"Zəngi gözlədin"</string>
+    <string name="onscreenHoldText_selected" msgid="7127901498507384249">"Zəngə davam edin"</string>
+    <string name="onscreenEndCallText" msgid="9039601192595655846">"Zəngi bitirin"</string>
     <string name="onscreenShowDialpadText" msgid="8561805492659639893">"Yığım paneli"</string>
     <string name="onscreenMuteText" msgid="5011369181754261374">"Susdurun"</string>
     <string name="onscreenAddCallText" msgid="5140385634712287403">"Zəng əlavə edin"</string>
     <string name="onscreenMergeCallsText" msgid="6640195098064538950">"Zəngləri birləşdirin"</string>
     <string name="onscreenSwapCallsText" msgid="1602990689244030047">"Dəyişdirin"</string>
     <string name="onscreenManageCallsText" msgid="5473231160123254154">"Zəngləri idarə edin"</string>
-    <string name="onscreenManageConferenceText" msgid="6485935856534311346">"Konfransı idarə edin"</string>
+    <string name="onscreenManageConferenceText" msgid="6801708317570467407">"Konfrans çağrısını idarə edin"</string>
     <string name="onscreenAudioText" msgid="1710087112800041743">"Audio"</string>
     <string name="onscreenVideoCallText" msgid="4800924186056115442">"Video zəng"</string>
+    <string name="onscreenChangeToVoiceText" msgid="5311407863653867937">"Səsli çağrıya dəyişin"</string>
+    <string name="onscreenSwitchCameraText" msgid="5324543493442787798">"Kameraya keçin"</string>
+    <string name="onscreenPauseVideoText" msgid="5663965924921429203">"Videonu durdurun"</string>
+    <string name="onscreenOverflowText" msgid="2702376562345723132">"Daha çox seçim"</string>
+    <string name="player_started" msgid="6046262510243983589">"Pleyer Başladıldı"</string>
+    <string name="player_stopped" msgid="8856926759436364963">"Pleyer Dayandırıldı"</string>
+    <string name="camera_not_ready" msgid="4955261496193316240">"Kamera hazır deyil"</string>
+    <string name="camera_ready" msgid="1903335385405807324">"Kamera hazırdır"</string>
+    <string name="unknown_call_session_event" msgid="2431061946920253582">"Naməlum zəng sessiyası"</string>
     <string name="voicemail_provider" msgid="5135942703327136909">"Xidmət"</string>
     <string name="voicemail_settings" msgid="72448049107749316">"Quraşdırma"</string>
     <string name="voicemail_number_not_set" msgid="6724904736891087856">"&lt;Ayarlanmayıb&gt;"</string>
     <string name="other_settings" msgid="3672912580359716394">"Digər zəng parametrləri"</string>
-    <string name="calling_via_template" msgid="4839419581866928142">"<xliff:g id="PROVIDER_NAME">%s</xliff:g> vasitəsi ilə zəng edilir"</string>
+    <string name="calling_via_template" msgid="4839419581866928142">"<xliff:g id="PROVIDER_NAME">%s</xliff:g> üzərindən"</string>
+    <string name="incoming_via_template" msgid="1696993226115570960">"<xliff:g id="PROVIDER_NAME">%s</xliff:g> vasitəsilə gələn"</string>
     <string name="contactPhoto" msgid="4713193418046639466">"kontakt fotosu"</string>
     <string name="goPrivate" msgid="865837794424530980">"şəxsi rejimə keçin"</string>
     <string name="selectContact" msgid="781975788478987237">"kontakt seçin"</string>
     <string name="respond_via_sms_custom_message" msgid="6158880869935281078">"Özünüzünkünü yazın"</string>
-    <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Tez cavablar"</string>
-    <string name="description_dial_button" msgid="7459705245418435351">"Yığ"</string>
-    <string name="description_delete_button" msgid="4015842181592283903">"geri düyməsi"</string>
+    <string name="custom_message_cancel" msgid="7516406059429609296">"Ləğv et"</string>
+    <string name="custom_message_send" msgid="5795754217085747742">"Göndər"</string>
     <string name="description_target_answer" msgid="7205604197797472471">"Cavab"</string>
     <string name="description_target_send_sms" msgid="2098326025587950144">"SMS göndər"</string>
     <string name="description_target_decline" msgid="4789834364389731957">"Rədd et"</string>
+    <string name="description_target_answer_video_call" msgid="3495965588512395026">"Video çağrı olaraq cavab verin"</string>
+    <string name="description_target_answer_audio_call" msgid="8396296303320994450">"Audio çağrı olaraq cavab verin"</string>
+    <string name="description_target_accept_upgrade_to_video_request" msgid="2894072808324604062">"Accept video request"</string>
+    <string name="description_target_decline_upgrade_to_video_request" msgid="4093888612888538776">"Decline video request"</string>
+    <string name="description_target_accept_upgrade_to_video_transmit_request" msgid="5311037889642077468">"Video ötürmə sorğusunu qəbul edin"</string>
+    <string name="description_target_decline_upgrade_to_video_transmit_request" msgid="3636108065510415975">"Video ötürmə sorğusunu ləğv edin"</string>
+    <string name="description_target_accept_upgrade_to_video_receive_request" msgid="8668058323593087912">"Video qəbuletmə sorğusunu qəbul edin"</string>
+    <string name="description_target_decline_upgrade_to_video_receive_request" msgid="2355776509656298367">"Video qəbuletmə sorğusunu ləğv edin"</string>
+    <string name="description_direction_up" msgid="4441409581444516690">"<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> üçün yuxarı sürüşdürün."</string>
+    <string name="description_direction_left" msgid="7129873384376533287">"<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> üçün sola sürüşdürün."</string>
+    <string name="description_direction_right" msgid="2122584234531957308">"<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> üçün sağa sürüşdürün."</string>
+    <string name="description_direction_down" msgid="4317245625565166742">"<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> üçün aşağı sürüşdürün."</string>
     <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Vibrasiya"</string>
     <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Vibrasiya"</string>
     <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Səs"</string>
     <string name="default_notification_description" msgid="78174796906240970">"Defolt səs (<xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g>)"</string>
     <string name="ringtone_title" msgid="6374978286202084684">"Telefon zəng səsi"</string>
     <string name="vibrate_on_ring_title" msgid="9197564612065258960">"Zəng çalanda vibrasiya olsun"</string>
-    <string name="dtmf_tone_enable_title" msgid="827601042915852989">"Yığım düymələrinin toxunuş tonları"</string>
-    <string name="dial_pad_autocomplete" msgid="494525952035761075">"Nömrə yığımı klaviaturası tamamlanması"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Zəng səsi &amp; Vibrasiya"</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"Konfrans zəngini idarə edin"</string>
+    <string name="emergency_call_dialog_number_for_display" msgid="8373041754188879871">"Təcili nömrə"</string>
+    <plurals name="duration_seconds" formatted="false" msgid="59971978269163609">
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> saniyə</item>
+      <item quantity="one">1 saniyə</item>
+    </plurals>
+    <plurals name="duration_minutes" formatted="false" msgid="1103289948818175408">
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> dəqiqə</item>
+      <item quantity="one">1 dəqiqə</item>
+    </plurals>
+    <plurals name="duration_hours" formatted="false" msgid="7560637459014865969">
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> saat</item>
+      <item quantity="one">1 saat</item>
+    </plurals>
+    <string name="profile_photo_description" msgid="5609894336203315400">"Profil fotosu"</string>
+    <string name="camera_off_description" msgid="5689494614359429889">"Kamera deaktivdir"</string>
+    <string name="child_number" msgid="7437330400723805538">"<xliff:g id="CHILD_NUMBER">%s</xliff:g> vasitəsilə"</string>
+    <string name="note_sent" msgid="3548700178238244595">"Qeyd göndərildi"</string>
+    <string name="person_contact_context_title" msgid="723266617256740572">"Son mesajlar"</string>
+    <string name="business_contact_context_title" msgid="5334864183374669765">"Biznes məlumatı"</string>
+    <string name="distance_imperial_away" msgid="437508440176409037">"<xliff:g id="DISTANCE">%.1f</xliff:g> mil uzaqlıqda"</string>
+    <string name="distance_metric_away" msgid="166931929505893599">"<xliff:g id="DISTANCE">%.1f</xliff:g> km uzaqlıqda"</string>
+    <string name="display_address" msgid="7307400970699471708">"<xliff:g id="STREET_ADDRESS">%1$s</xliff:g>, <xliff:g id="LOCALITY">%2$s</xliff:g>"</string>
+    <string name="open_time_span" msgid="6709726401179550381">"<xliff:g id="OPEN_TIME">%1$s</xliff:g> - <xliff:g id="CLOSE_TIME">%2$s</xliff:g>"</string>
+    <string name="opening_hours" msgid="8524931350345922176">"<xliff:g id="EARLIER_TIMES">%1$s</xliff:g>, <xliff:g id="LATER_TIME">%2$s</xliff:g>"</string>
+    <string name="opens_tomorrow_at" msgid="9168271983241323946">"Sabah saat <xliff:g id="OPEN_TIME">%s</xliff:g> açılır"</string>
+    <string name="opens_today_at" msgid="9011139983701379907">"Bu gün saat <xliff:g id="OPEN_TIME">%s</xliff:g> açılır"</string>
+    <string name="closes_today_at" msgid="2623384032475495193">"Saat <xliff:g id="CLOSE_TIME">%s</xliff:g> bağlanır"</string>
+    <string name="closed_today_at" msgid="324294933330883529">"Bu gün saat <xliff:g id="CLOSE_TIME">%s</xliff:g> bağlanıb"</string>
+    <string name="open_now" msgid="6439301193613349163">"İndi açın"</string>
+    <string name="closed_now" msgid="9175774453982778909">"İndi bağlandı"</string>
 </resources>
diff --git a/InCallUI/res/values-b+sr+Latn/strings.xml b/InCallUI/res/values-b+sr+Latn/strings.xml
new file mode 100644
index 0000000..49d8999
--- /dev/null
+++ b/InCallUI/res/values-b+sr+Latn/strings.xml
@@ -0,0 +1,190 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2013 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="phoneAppLabel" product="default" msgid="906161039445636857">"Telefon"</string>
+    <string name="onHold" msgid="9035493194749959955">"Na čekanju"</string>
+    <string name="unknown" msgid="6878797917991465859">"Nepoznato"</string>
+    <string name="private_num" msgid="6713286113000232309">"Privatan broj"</string>
+    <string name="payphone" msgid="4793877574636445118">"Telefonska govornica"</string>
+    <string name="confCall" msgid="1904840547188336828">"Konferencijski poziv"</string>
+    <string name="call_lost" msgid="6183862117003999578">"Poziv je prekinut"</string>
+    <string name="audio_mode_speaker" msgid="27649582100085266">"Zvučnik"</string>
+    <string name="audio_mode_earpiece" msgid="4156527186373869107">"Slušalica telefona"</string>
+    <string name="audio_mode_wired_headset" msgid="1465350758489175975">"Žičane slušalice"</string>
+    <string name="audio_mode_bluetooth" msgid="3047641300848211128">"Bluetooth"</string>
+    <string name="wait_prompt_str" msgid="7601815427707856238">"Želite li da pošaljete sledeće tonove?\n"</string>
+    <string name="pause_prompt_str" msgid="1789964702154314806">"Tonovi slanja\n"</string>
+    <string name="send_button" msgid="4106860097497818751">"Pošalji"</string>
+    <string name="pause_prompt_yes" msgid="3564467212025151797">"Da"</string>
+    <string name="pause_prompt_no" msgid="6686238803236884877">"Ne"</string>
+    <string name="wild_prompt_str" msgid="5543521676355533577">"Zamenite džoker znak sa"</string>
+    <string name="caller_manage_header" msgid="3231519674734638786">"Konferencijski poziv <xliff:g id="CONF_CALL_TIME">%s</xliff:g>"</string>
+    <string name="voicemail_settings_number_label" msgid="8524164258691887790">"Broj govorne pošte"</string>
+    <string name="card_title_dialing" msgid="5769417478498348054">"Poziva se"</string>
+    <string name="card_title_redialing" msgid="8253487008234167266">"Ponovno biranje"</string>
+    <string name="card_title_conf_call" msgid="1162980346189744501">"Konferencijski poziv"</string>
+    <string name="card_title_incoming_call" msgid="7364539451234646909">"Dolazni poziv"</string>
+    <string name="card_title_call_ended" msgid="5544730338889702298">"Poziv je završen"</string>
+    <string name="card_title_on_hold" msgid="821463117892339942">"Na čekanju"</string>
+    <string name="card_title_hanging_up" msgid="3999101620995182450">"Prekid veze"</string>
+    <string name="card_title_in_call" msgid="6346543933068225205">"U pozivu"</string>
+    <string name="card_title_my_phone_number" msgid="112428362494434191">"Moj broj je <xliff:g id="MY_PHONE_NUMBER">%s</xliff:g>"</string>
+    <string name="card_title_video_call_connecting" msgid="297586766381973954">"Povezivanje sa video pozivom"</string>
+    <string name="card_title_video_call" msgid="5898636679563320218">"Video poziv"</string>
+    <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Zahtevanje video poziva"</string>
+    <string name="card_title_video_call_error" msgid="9000555878389539225">"Povezivanje video poziva nije uspelo"</string>
+    <string name="card_title_video_call_rejected" msgid="462358296694719787">"Zahtev za video poziv je odbijen"</string>
+    <string name="card_title_callback_number" msgid="7307938207564217293">"Broj za povratni poziv\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
+    <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Broj za hitan povratni poziv\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
+    <string name="notification_dialing" msgid="2107666444937350731">"Biranje"</string>
+    <string name="notification_missedCallTitle" msgid="7554385905572364535">"Propušten poziv"</string>
+    <string name="notification_missedCallsTitle" msgid="1361677948941502522">"Propušteni pozivi"</string>
+    <string name="notification_missedCallsMsg" msgid="4575787816055205600">"Broj propuštenih poziva: <xliff:g id="NUM_MISSED_CALLS">%s</xliff:g>"</string>
+    <string name="notification_missedCallTicker" msgid="504686252427747209">"Propušten poziv od: <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
+    <string name="notification_ongoing_call" msgid="7068688957273482989">"Aktuelni poziv"</string>
+    <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"Tekući Wi-Fi poziv"</string>
+    <string name="notification_on_hold" msgid="3480694969511790465">"Na čekanju"</string>
+    <string name="notification_incoming_call" msgid="2820429205043529642">"Dolazni poziv"</string>
+    <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"Dolazni Wi-Fi poziv"</string>
+    <string name="notification_incoming_video_call" msgid="7356836933934464805">"Dolazni video poziv"</string>
+    <string name="notification_requesting_video_call" msgid="1405576812892369451">"Zahtev za dolazni video poziv"</string>
+    <string name="notification_voicemail_title" msgid="8933468752045550523">"Nova govorna pošta"</string>
+    <string name="notification_voicemail_title_count" msgid="4366360747660929916">"Nova govorna pošta (<xliff:g id="COUNT">%d</xliff:g>)"</string>
+    <string name="notification_voicemail_text_format" msgid="4447323569453981685">"Pozovi <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
+    <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"Nepoznat broj govorne pošte"</string>
+    <string name="notification_network_selection_title" msgid="4224455487793492772">"Nema usluge"</string>
+    <string name="notification_network_selection_text" msgid="2607085729661923269">"Izabrana mreža (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) nije dostupna"</string>
+    <string name="notification_action_answer" msgid="6700362365135365143">"Odgovori"</string>
+    <string name="notification_action_end_call" msgid="6069460915123531620">"Prekini vezu"</string>
+    <string name="notification_action_answer_video" msgid="7809271910870211729">"Video"</string>
+    <string name="notification_action_answer_voice" msgid="1770796916369437773">"Glasovni"</string>
+    <string name="notification_action_accept" msgid="2898609801209468429">"Prihvati"</string>
+    <string name="notification_action_dismiss" msgid="2679969397930852858">"Odbij"</string>
+    <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Uzvrati poziv"</string>
+    <string name="notification_missedCall_message" msgid="3049928912736917988">"Poruka"</string>
+    <string name="incall_error_power_off" msgid="6550191216405193368">"Da biste uputili poziv, prvo isključite režim rada u avionu."</string>
+    <string name="incall_error_emergency_only" msgid="4678640422710818317">"Nije registrovano na mreži."</string>
+    <string name="incall_error_out_of_service" msgid="4100065333878929223">"Mobilna mreža nije dostupna."</string>
+    <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Da biste uputili poziv, unesite važeći broj."</string>
+    <string name="incall_error_call_failed" msgid="6302746943230078197">"Poziv nije uspeo."</string>
+    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"Pokretanje MMI sekvence"</string>
+    <string name="incall_error_supp_service_unknown" msgid="323435289607131929">"Usluga nije podržana."</string>
+    <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"Zamena poziva nije uspela."</string>
+    <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"Razdvajanje poziva nije uspelo."</string>
+    <string name="incall_error_supp_service_transfer" msgid="7235952238189391438">"Prebacivanje nije uspelo."</string>
+    <string name="incall_error_supp_service_conference" msgid="7010354362202271726">"Konferencijski poziv nije uspeo."</string>
+    <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Odbijanje poziva nije uspelo."</string>
+    <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Uspostavljanje poziva nije uspelo."</string>
+    <string name="incall_call_type_label_sip" msgid="4931428719494190371">"SIP poziv"</string>
+    <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Hitan poziv"</string>
+    <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Uključivanje radija…"</string>
+    <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Nema mreže. Ponovni pokušaj…"</string>
+    <string name="dial_emergency_error" msgid="1509085166367420355">"Poziv nije uspeo. <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> nije broj za hitne slučajeve."</string>
+    <string name="dial_emergency_empty_error" msgid="9130194953830414638">"Poziv nije uspeo. Pozovite broj za hitne slučajeve."</string>
+    <string name="dialerKeyboardHintText" msgid="9192914825413747792">"Koristite tastaturu za pozivanje"</string>
+    <string name="onscreenHoldText_unselected" msgid="7092499303393171276">"Stavi poziv na čekanje"</string>
+    <string name="onscreenHoldText_selected" msgid="7127901498507384249">"Nastavi poziv"</string>
+    <string name="onscreenEndCallText" msgid="9039601192595655846">"Završi poziv"</string>
+    <string name="onscreenShowDialpadText" msgid="8561805492659639893">"Numerička tastatura"</string>
+    <string name="onscreenMuteText" msgid="5011369181754261374">"Isključi zvuk"</string>
+    <string name="onscreenAddCallText" msgid="5140385634712287403">"Dodaj poziv"</string>
+    <string name="onscreenMergeCallsText" msgid="6640195098064538950">"Objedini pozive"</string>
+    <string name="onscreenSwapCallsText" msgid="1602990689244030047">"Zameni"</string>
+    <string name="onscreenManageCallsText" msgid="5473231160123254154">"Upravljajte pozivima"</string>
+    <string name="onscreenManageConferenceText" msgid="6801708317570467407">"Upravljaj konf. pozivom"</string>
+    <string name="onscreenAudioText" msgid="1710087112800041743">"Audio"</string>
+    <string name="onscreenVideoCallText" msgid="4800924186056115442">"Video poz."</string>
+    <string name="onscreenChangeToVoiceText" msgid="5311407863653867937">"Promeni u glasovni poziv"</string>
+    <string name="onscreenSwitchCameraText" msgid="5324543493442787798">"Promeni kameru"</string>
+    <string name="onscreenPauseVideoText" msgid="5663965924921429203">"Pauziraj video"</string>
+    <string name="onscreenOverflowText" msgid="2702376562345723132">"Još opcija"</string>
+    <string name="player_started" msgid="6046262510243983589">"Plejer je pokrenut"</string>
+    <string name="player_stopped" msgid="8856926759436364963">"Plejer je zaustavljen"</string>
+    <string name="camera_not_ready" msgid="4955261496193316240">"Kamera nije spremna"</string>
+    <string name="camera_ready" msgid="1903335385405807324">"Kamera je spremna"</string>
+    <string name="unknown_call_session_event" msgid="2431061946920253582">"Nepoznat događaj sesije poziva"</string>
+    <string name="voicemail_provider" msgid="5135942703327136909">"Usluga"</string>
+    <string name="voicemail_settings" msgid="72448049107749316">"Podešavanje"</string>
+    <string name="voicemail_number_not_set" msgid="6724904736891087856">"&lt;Nije podešeno&gt;"</string>
+    <string name="other_settings" msgid="3672912580359716394">"Druga podešavanja poziva"</string>
+    <string name="calling_via_template" msgid="4839419581866928142">"Pozivanje preko <xliff:g id="PROVIDER_NAME">%s</xliff:g>"</string>
+    <string name="incoming_via_template" msgid="1696993226115570960">"Dolazna preko <xliff:g id="PROVIDER_NAME">%s</xliff:g>"</string>
+    <string name="contactPhoto" msgid="4713193418046639466">"fotografija kontakta"</string>
+    <string name="goPrivate" msgid="865837794424530980">"idi na privatno"</string>
+    <string name="selectContact" msgid="781975788478987237">"izaberite kontakt"</string>
+    <string name="respond_via_sms_custom_message" msgid="6158880869935281078">"Napišite sami…"</string>
+    <string name="custom_message_cancel" msgid="7516406059429609296">"Otkaži"</string>
+    <string name="custom_message_send" msgid="5795754217085747742">"Pošalji"</string>
+    <string name="description_target_answer" msgid="7205604197797472471">"Odgovori"</string>
+    <string name="description_target_send_sms" msgid="2098326025587950144">"Pošalji SMS"</string>
+    <string name="description_target_decline" msgid="4789834364389731957">"Odbij"</string>
+    <string name="description_target_answer_video_call" msgid="3495965588512395026">"Odgovorite video pozivom"</string>
+    <string name="description_target_answer_audio_call" msgid="8396296303320994450">"Odgovorite audio-pozivom"</string>
+    <string name="description_target_accept_upgrade_to_video_request" msgid="2894072808324604062">"Prihvati zahtev za video"</string>
+    <string name="description_target_decline_upgrade_to_video_request" msgid="4093888612888538776">"Odbij zahtev za video"</string>
+    <string name="description_target_accept_upgrade_to_video_transmit_request" msgid="5311037889642077468">"Prihvati zahtev za odlazni video poziv"</string>
+    <string name="description_target_decline_upgrade_to_video_transmit_request" msgid="3636108065510415975">"Odbij zahtev za odlazni video poziv"</string>
+    <string name="description_target_accept_upgrade_to_video_receive_request" msgid="8668058323593087912">"Prihvati zahtev za dolazni video poziv"</string>
+    <string name="description_target_decline_upgrade_to_video_receive_request" msgid="2355776509656298367">"Odbij zahtev za dolazni video poziv"</string>
+    <string name="description_direction_up" msgid="4441409581444516690">"Prevucite nagore za <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+    <string name="description_direction_left" msgid="7129873384376533287">"Prevucite ulevo za <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+    <string name="description_direction_right" msgid="2122584234531957308">"Prevucite udesno za <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+    <string name="description_direction_down" msgid="4317245625565166742">"Prevucite nadole za <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Vibracija"</string>
+    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Vibracija"</string>
+    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Zvuk"</string>
+    <string name="default_notification_description" msgid="78174796906240970">"Podrazumevani zvuk (<xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g>)"</string>
+    <string name="ringtone_title" msgid="6374978286202084684">"Melodija zvona telefona"</string>
+    <string name="vibrate_on_ring_title" msgid="9197564612065258960">"Vibriraj kada zvoni"</string>
+    <string name="preference_category_ringtone" msgid="5197960752529332721">"Melodija zvona i vibracija"</string>
+    <string name="manageConferenceLabel" msgid="4691922394301969053">"Upravljanje konferencijskim pozivom"</string>
+    <string name="emergency_call_dialog_number_for_display" msgid="8373041754188879871">"Broj za hitne slučajeve"</string>
+    <plurals name="duration_seconds" formatted="false" msgid="59971978269163609">
+      <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> sekunda</item>
+      <item quantity="few"><xliff:g id="COUNT">%d</xliff:g> sekunde</item>
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> sekundi</item>
+    </plurals>
+    <plurals name="duration_minutes" formatted="false" msgid="1103289948818175408">
+      <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> minut</item>
+      <item quantity="few"><xliff:g id="COUNT">%d</xliff:g> minuta</item>
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> minuta</item>
+    </plurals>
+    <plurals name="duration_hours" formatted="false" msgid="7560637459014865969">
+      <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> sat</item>
+      <item quantity="few"><xliff:g id="COUNT">%d</xliff:g> sata</item>
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> sati</item>
+    </plurals>
+    <string name="profile_photo_description" msgid="5609894336203315400">"Slika profila"</string>
+    <string name="camera_off_description" msgid="5689494614359429889">"Kamera je isključena"</string>
+    <string name="child_number" msgid="7437330400723805538">"na <xliff:g id="CHILD_NUMBER">%s</xliff:g>"</string>
+    <string name="note_sent" msgid="3548700178238244595">"Beleška je poslata"</string>
+    <string name="person_contact_context_title" msgid="723266617256740572">"Nedavne poruke"</string>
+    <string name="business_contact_context_title" msgid="5334864183374669765">"Informacije o preduzeću"</string>
+    <string name="distance_imperial_away" msgid="437508440176409037">"Udaljenost je <xliff:g id="DISTANCE">%.1f</xliff:g> mi"</string>
+    <string name="distance_metric_away" msgid="166931929505893599">"Udaljenost je <xliff:g id="DISTANCE">%.1f</xliff:g> km"</string>
+    <string name="display_address" msgid="7307400970699471708">"<xliff:g id="STREET_ADDRESS">%1$s</xliff:g>, <xliff:g id="LOCALITY">%2$s</xliff:g>"</string>
+    <string name="open_time_span" msgid="6709726401179550381">"<xliff:g id="OPEN_TIME">%1$s</xliff:g>–<xliff:g id="CLOSE_TIME">%2$s</xliff:g>"</string>
+    <string name="opening_hours" msgid="8524931350345922176">"<xliff:g id="EARLIER_TIMES">%1$s</xliff:g>, <xliff:g id="LATER_TIME">%2$s</xliff:g>"</string>
+    <string name="opens_tomorrow_at" msgid="9168271983241323946">"Otvara se sutra u <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="opens_today_at" msgid="9011139983701379907">"Otvara se danas u <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="closes_today_at" msgid="2623384032475495193">"Zatvara se u <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="closed_today_at" msgid="324294933330883529">"Zatvorilo se danas u <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="open_now" msgid="6439301193613349163">"Trenutno otvoreno"</string>
+    <string name="closed_now" msgid="9175774453982778909">"Trenutno zatvoreno"</string>
+</resources>
diff --git a/InCallUI/res/values-bg/strings.xml b/InCallUI/res/values-bg/strings.xml
index e7e3942..4971d8e 100644
--- a/InCallUI/res/values-bg/strings.xml
+++ b/InCallUI/res/values-bg/strings.xml
@@ -49,7 +49,7 @@
     <string name="card_title_video_call" msgid="5898636679563320218">"Видеообаждане"</string>
     <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Заявява се видеовръзка"</string>
     <string name="card_title_video_call_error" msgid="9000555878389539225">"Видеообаждането не може да се осъществи"</string>
-    <string name="card_title_video_call_paused" msgid="3753261320787432731">"Видеообаждане (на пауза)"</string>
+    <string name="card_title_video_call_rejected" msgid="462358296694719787">"Заявката за видео е отхвърлена"</string>
     <string name="card_title_callback_number" msgid="7307938207564217293">"Номер за обратно обаждане\n– <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Номер за спешно обратно обаждане\n– <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="notification_dialing" msgid="2107666444937350731">"Набира се"</string>
@@ -152,7 +152,6 @@
     <string name="default_notification_description" msgid="78174796906240970">"Стандартен звук (<xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g>)"</string>
     <string name="ringtone_title" msgid="6374978286202084684">"Мелодия на телефона"</string>
     <string name="vibrate_on_ring_title" msgid="9197564612065258960">"Вибриране при звънене"</string>
-    <string name="dial_pad_autocomplete" msgid="7683489952557536398">"Набиране: Авт. довършване"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Мелодия и вибриране"</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"Управление на конферентно обаждане"</string>
     <string name="emergency_call_dialog_number_for_display" msgid="8373041754188879871">"Спешен номер"</string>
@@ -168,4 +167,21 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> часа</item>
       <item quantity="one">1 час</item>
     </plurals>
+    <string name="profile_photo_description" msgid="5609894336203315400">"Снимка на потребителския профил"</string>
+    <string name="camera_off_description" msgid="5689494614359429889">"Камерата е изключена"</string>
+    <string name="child_number" msgid="7437330400723805538">"чрез <xliff:g id="CHILD_NUMBER">%s</xliff:g>"</string>
+    <string name="note_sent" msgid="3548700178238244595">"Бележката е изпратена"</string>
+    <string name="person_contact_context_title" msgid="723266617256740572">"Скорошни съобщения"</string>
+    <string name="business_contact_context_title" msgid="5334864183374669765">"Бизнес информация"</string>
+    <string name="distance_imperial_away" msgid="437508440176409037">"На <xliff:g id="DISTANCE">%.1f</xliff:g> мили"</string>
+    <string name="distance_metric_away" msgid="166931929505893599">"На <xliff:g id="DISTANCE">%.1f</xliff:g> км"</string>
+    <string name="display_address" msgid="7307400970699471708">"<xliff:g id="STREET_ADDRESS">%1$s</xliff:g>, <xliff:g id="LOCALITY">%2$s</xliff:g>"</string>
+    <string name="open_time_span" msgid="6709726401179550381">"<xliff:g id="OPEN_TIME">%1$s</xliff:g> – <xliff:g id="CLOSE_TIME">%2$s</xliff:g>"</string>
+    <string name="opening_hours" msgid="8524931350345922176">"<xliff:g id="EARLIER_TIMES">%1$s</xliff:g>; <xliff:g id="LATER_TIME">%2$s</xliff:g>"</string>
+    <string name="opens_tomorrow_at" msgid="9168271983241323946">"Отваря утре в <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="opens_today_at" msgid="9011139983701379907">"Отваря днес в <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="closes_today_at" msgid="2623384032475495193">"Затваря в <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="closed_today_at" msgid="324294933330883529">"Затворено днес в <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="open_now" msgid="6439301193613349163">"В момента работи"</string>
+    <string name="closed_now" msgid="9175774453982778909">"В момента не работи"</string>
 </resources>
diff --git a/InCallUI/res/values-bn-rBD/strings.xml b/InCallUI/res/values-bn-rBD/strings.xml
index 9274995..7e6c678 100644
--- a/InCallUI/res/values-bn-rBD/strings.xml
+++ b/InCallUI/res/values-bn-rBD/strings.xml
@@ -49,7 +49,7 @@
     <string name="card_title_video_call" msgid="5898636679563320218">"ভিডিও কল"</string>
     <string name="card_title_video_call_requesting" msgid="4587504939739340937">"ভিডিওর অনুরোধ করছে"</string>
     <string name="card_title_video_call_error" msgid="9000555878389539225">"ভিডিও কলে সংযোগ করা যাচ্ছে না"</string>
-    <string name="card_title_video_call_paused" msgid="3753261320787432731">"ভিডিও কল (বিরাম দেওয়া হয়েছে)"</string>
+    <string name="card_title_video_call_rejected" msgid="462358296694719787">"ভিডিওর অনুরোধ প্রত্যাখ্যান করা হয়েছে"</string>
     <string name="card_title_callback_number" msgid="7307938207564217293">"আপনার কলব্যাক নম্বর\n<xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"আপনার জরুরী কলব্যাক নম্বর\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="notification_dialing" msgid="2107666444937350731">"ডায়াল করা হচ্ছে"</string>
@@ -123,7 +123,7 @@
     <string name="voicemail_settings" msgid="72448049107749316">"সেটআপ"</string>
     <string name="voicemail_number_not_set" msgid="6724904736891087856">"&lt;সেট করা নেই&gt;"</string>
     <string name="other_settings" msgid="3672912580359716394">"অন্যান্য কল সেটিংস"</string>
-    <string name="calling_via_template" msgid="4839419581866928142">"<xliff:g id="PROVIDER_NAME">%s</xliff:g> এর মাধ্যমে কল করা হচ্ছে"</string>
+    <string name="calling_via_template" msgid="4839419581866928142">"<xliff:g id="PROVIDER_NAME">%s</xliff:g> এর দ্বারা কল হচ্ছে"</string>
     <string name="incoming_via_template" msgid="1696993226115570960">"<xliff:g id="PROVIDER_NAME">%s</xliff:g> এর মাধ্যমে ইনকামিং কল"</string>
     <string name="contactPhoto" msgid="4713193418046639466">"পরিচিতির ফটো"</string>
     <string name="goPrivate" msgid="865837794424530980">"ব্যক্তিগতভাবে কাজ করুন"</string>
@@ -152,7 +152,6 @@
     <string name="default_notification_description" msgid="78174796906240970">"ডিফল্ট শব্দ (<xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g>)"</string>
     <string name="ringtone_title" msgid="6374978286202084684">"ফোন রিংটোন"</string>
     <string name="vibrate_on_ring_title" msgid="9197564612065258960">"রিং হওয়ার সময় কম্পন হবে"</string>
-    <string name="dial_pad_autocomplete" msgid="7683489952557536398">"ডায়ালপ্যাড স্বয়ংপূর্ণ করা"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"রিংটোন ও কম্পন"</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"কনফারেন্স কল পরিচালনা করুন"</string>
     <string name="emergency_call_dialog_number_for_display" msgid="8373041754188879871">"জরুরি নম্বর"</string>
@@ -168,4 +167,21 @@
       <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> ঘন্টা</item>
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> ঘন্টা</item>
     </plurals>
+    <string name="profile_photo_description" msgid="5609894336203315400">"প্রোফাইল ফটো"</string>
+    <string name="camera_off_description" msgid="5689494614359429889">"ক্যামেরা বন্ধ"</string>
+    <string name="child_number" msgid="7437330400723805538">"<xliff:g id="CHILD_NUMBER">%s</xliff:g> এর মাধ্যমে"</string>
+    <string name="note_sent" msgid="3548700178238244595">"নোট পাঠানো হয়েছে"</string>
+    <string name="person_contact_context_title" msgid="723266617256740572">"সাম্প্রতিক বার্তাগুলি"</string>
+    <string name="business_contact_context_title" msgid="5334864183374669765">"ব্যবসার তথ্য"</string>
+    <string name="distance_imperial_away" msgid="437508440176409037">"<xliff:g id="DISTANCE">%.1f</xliff:g> মাইল দূরে"</string>
+    <string name="distance_metric_away" msgid="166931929505893599">"<xliff:g id="DISTANCE">%.1f</xliff:g> কিলোমিটার দূরে"</string>
+    <string name="display_address" msgid="7307400970699471708">"<xliff:g id="STREET_ADDRESS">%1$s</xliff:g>, <xliff:g id="LOCALITY">%2$s</xliff:g>"</string>
+    <string name="open_time_span" msgid="6709726401179550381">"<xliff:g id="OPEN_TIME">%1$s</xliff:g> - <xliff:g id="CLOSE_TIME">%2$s</xliff:g>"</string>
+    <string name="opening_hours" msgid="8524931350345922176">"<xliff:g id="EARLIER_TIMES">%1$s</xliff:g>, <xliff:g id="LATER_TIME">%2$s</xliff:g>"</string>
+    <string name="opens_tomorrow_at" msgid="9168271983241323946">"আগামীকাল <xliff:g id="OPEN_TIME">%s</xliff:g>\'টায় খুলবে"</string>
+    <string name="opens_today_at" msgid="9011139983701379907">"আজ <xliff:g id="OPEN_TIME">%s</xliff:g>\'টায় খুলবে"</string>
+    <string name="closes_today_at" msgid="2623384032475495193">"<xliff:g id="CLOSE_TIME">%s</xliff:g>\'টায় বন্ধ হয়"</string>
+    <string name="closed_today_at" msgid="324294933330883529">"আজ <xliff:g id="CLOSE_TIME">%s</xliff:g>\'টায় বন্ধ হয়েছে"</string>
+    <string name="open_now" msgid="6439301193613349163">"এখন খোলা রয়েছে"</string>
+    <string name="closed_now" msgid="9175774453982778909">"এখন বন্ধ রয়েছে"</string>
 </resources>
diff --git a/InCallUI/res/values-ca/strings.xml b/InCallUI/res/values-ca/strings.xml
index db638d5..1561616 100644
--- a/InCallUI/res/values-ca/strings.xml
+++ b/InCallUI/res/values-ca/strings.xml
@@ -35,7 +35,7 @@
     <string name="pause_prompt_no" msgid="6686238803236884877">"No"</string>
     <string name="wild_prompt_str" msgid="5543521676355533577">"Substitueix el caràcter comodí per"</string>
     <string name="caller_manage_header" msgid="3231519674734638786">"Trucada de conferència <xliff:g id="CONF_CALL_TIME">%s</xliff:g>"</string>
-    <string name="voicemail_settings_number_label" msgid="8524164258691887790">"Número del correu de veu"</string>
+    <string name="voicemail_settings_number_label" msgid="8524164258691887790">"Número de la bústia de veu"</string>
     <string name="card_title_dialing" msgid="5769417478498348054">"S\'està marcant"</string>
     <string name="card_title_redialing" msgid="8253487008234167266">"S\'està tornant a marcar"</string>
     <string name="card_title_conf_call" msgid="1162980346189744501">"Trucada de conferència"</string>
@@ -49,7 +49,7 @@
     <string name="card_title_video_call" msgid="5898636679563320218">"Videotrucada"</string>
     <string name="card_title_video_call_requesting" msgid="4587504939739340937">"S\'està sol·licitant el vídeo"</string>
     <string name="card_title_video_call_error" msgid="9000555878389539225">"No es pot connectar la videotrucada"</string>
-    <string name="card_title_video_call_paused" msgid="3753261320787432731">"Videotrucada (en pausa)"</string>
+    <string name="card_title_video_call_rejected" msgid="462358296694719787">"S\'ha rebutjat la sol·licitud de vídeo"</string>
     <string name="card_title_callback_number" msgid="7307938207564217293">"Número de devolució de trucada\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Número de devolució de trucada d\'emergència\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="notification_dialing" msgid="2107666444937350731">"Marcatge"</string>
@@ -64,10 +64,10 @@
     <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"Trucada Wi-Fi entrant"</string>
     <string name="notification_incoming_video_call" msgid="7356836933934464805">"Videotrucada entrant"</string>
     <string name="notification_requesting_video_call" msgid="1405576812892369451">"Sol·licitud de vídeo entrant"</string>
-    <string name="notification_voicemail_title" msgid="8933468752045550523">"Correu de veu nou"</string>
-    <string name="notification_voicemail_title_count" msgid="4366360747660929916">"Correu de veu nou (<xliff:g id="COUNT">%d</xliff:g>)"</string>
+    <string name="notification_voicemail_title" msgid="8933468752045550523">"Missatge de veu nou"</string>
+    <string name="notification_voicemail_title_count" msgid="4366360747660929916">"Bústia de veu nou (<xliff:g id="COUNT">%d</xliff:g>)"</string>
     <string name="notification_voicemail_text_format" msgid="4447323569453981685">"Marca <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"Número del correu de veu desconegut"</string>
+    <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"Número de la bústia de veu desconegut"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"Sense servei"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"La xarxa seleccionada (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) no està disponible"</string>
     <string name="notification_action_answer" msgid="6700362365135365143">"Respon"</string>
@@ -75,7 +75,7 @@
     <string name="notification_action_answer_video" msgid="7809271910870211729">"Vídeo"</string>
     <string name="notification_action_answer_voice" msgid="1770796916369437773">"Veu"</string>
     <string name="notification_action_accept" msgid="2898609801209468429">"Accepta"</string>
-    <string name="notification_action_dismiss" msgid="2679969397930852858">"Omet"</string>
+    <string name="notification_action_dismiss" msgid="2679969397930852858">"Ignora"</string>
     <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Torna la trucada"</string>
     <string name="notification_missedCall_message" msgid="3049928912736917988">"Missatge"</string>
     <string name="incall_error_power_off" msgid="6550191216405193368">"Per fer una trucada, primer apagueu el mode d\'avió."</string>
@@ -123,7 +123,7 @@
     <string name="voicemail_settings" msgid="72448049107749316">"Configuració"</string>
     <string name="voicemail_number_not_set" msgid="6724904736891087856">"&lt;No definit&gt;"</string>
     <string name="other_settings" msgid="3672912580359716394">"Altres opcions de trucades"</string>
-    <string name="calling_via_template" msgid="4839419581866928142">"Trucada mitjançant <xliff:g id="PROVIDER_NAME">%s</xliff:g>"</string>
+    <string name="calling_via_template" msgid="4839419581866928142">"Trucada amb <xliff:g id="PROVIDER_NAME">%s</xliff:g>"</string>
     <string name="incoming_via_template" msgid="1696993226115570960">"Entrant mitjançant <xliff:g id="PROVIDER_NAME">%s</xliff:g>"</string>
     <string name="contactPhoto" msgid="4713193418046639466">"foto de contacte"</string>
     <string name="goPrivate" msgid="865837794424530980">"passa a privat"</string>
@@ -142,17 +142,16 @@
     <string name="description_target_decline_upgrade_to_video_transmit_request" msgid="3636108065510415975">"Rebutja la sol·licitud per transmetre vídeo"</string>
     <string name="description_target_accept_upgrade_to_video_receive_request" msgid="8668058323593087912">"Accepta la sol·licitud per rebre vídeo"</string>
     <string name="description_target_decline_upgrade_to_video_receive_request" msgid="2355776509656298367">"Rebutja la sol·licitud per rebre vídeo"</string>
-    <string name="description_direction_up" msgid="4441409581444516690">"Fes lliscar el dit cap amunt per <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
-    <string name="description_direction_left" msgid="7129873384376533287">"Fes lliscar el dit cap a l\'esquerra per <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
-    <string name="description_direction_right" msgid="2122584234531957308">"Fes lliscar el dit cap a la dreta per <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
-    <string name="description_direction_down" msgid="4317245625565166742">"Fes lliscar el dit cap avall per <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+    <string name="description_direction_up" msgid="4441409581444516690">"Llisca cap amunt per <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+    <string name="description_direction_left" msgid="7129873384376533287">"Llisca cap a l\'esquerra per <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+    <string name="description_direction_right" msgid="2122584234531957308">"Llisca cap a la dreta per <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+    <string name="description_direction_down" msgid="4317245625565166742">"Llisca cap avall per <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
     <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Vibra"</string>
     <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Vibra"</string>
     <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"So"</string>
     <string name="default_notification_description" msgid="78174796906240970">"So predeterminat (<xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g>)"</string>
     <string name="ringtone_title" msgid="6374978286202084684">"So de trucada"</string>
     <string name="vibrate_on_ring_title" msgid="9197564612065258960">"Vibrar en sonar"</string>
-    <string name="dial_pad_autocomplete" msgid="7683489952557536398">"Compleció automàtica de teclat"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"So i vibració"</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"Gestiona la trucada de conferència"</string>
     <string name="emergency_call_dialog_number_for_display" msgid="8373041754188879871">"Número d\'emergència"</string>
@@ -168,4 +167,21 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> hores</item>
       <item quantity="one">1 hora</item>
     </plurals>
+    <string name="profile_photo_description" msgid="5609894336203315400">"Foto de perfil"</string>
+    <string name="camera_off_description" msgid="5689494614359429889">"Càmera desactivada"</string>
+    <string name="child_number" msgid="7437330400723805538">"mitjançant <xliff:g id="CHILD_NUMBER">%s</xliff:g>"</string>
+    <string name="note_sent" msgid="3548700178238244595">"S\'ha enviat la nota"</string>
+    <string name="person_contact_context_title" msgid="723266617256740572">"Missatges recents"</string>
+    <string name="business_contact_context_title" msgid="5334864183374669765">"Informació de l\'empresa"</string>
+    <string name="distance_imperial_away" msgid="437508440176409037">"A <xliff:g id="DISTANCE">%.1f</xliff:g> mi de distància"</string>
+    <string name="distance_metric_away" msgid="166931929505893599">"A <xliff:g id="DISTANCE">%.1f</xliff:g> km de distància"</string>
+    <string name="display_address" msgid="7307400970699471708">"<xliff:g id="STREET_ADDRESS">%1$s</xliff:g>, <xliff:g id="LOCALITY">%2$s</xliff:g>"</string>
+    <string name="open_time_span" msgid="6709726401179550381">"<xliff:g id="OPEN_TIME">%1$s</xliff:g> - <xliff:g id="CLOSE_TIME">%2$s</xliff:g>"</string>
+    <string name="opening_hours" msgid="8524931350345922176">"<xliff:g id="EARLIER_TIMES">%1$s</xliff:g>, <xliff:g id="LATER_TIME">%2$s</xliff:g>"</string>
+    <string name="opens_tomorrow_at" msgid="9168271983241323946">"Obre demà a les <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="opens_today_at" msgid="9011139983701379907">"Obre avui a les <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="closes_today_at" msgid="2623384032475495193">"Tanca a les <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="closed_today_at" msgid="324294933330883529">"Avui ha tancat a les <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="open_now" msgid="6439301193613349163">"Ara és obert"</string>
+    <string name="closed_now" msgid="9175774453982778909">"Ara és tancat"</string>
 </resources>
diff --git a/InCallUI/res/values-cs/strings.xml b/InCallUI/res/values-cs/strings.xml
index f83b390..5d4ddad 100644
--- a/InCallUI/res/values-cs/strings.xml
+++ b/InCallUI/res/values-cs/strings.xml
@@ -49,7 +49,7 @@
     <string name="card_title_video_call" msgid="5898636679563320218">"Videohovor"</string>
     <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Požadování videa"</string>
     <string name="card_title_video_call_error" msgid="9000555878389539225">"Videohovor nelze zahájit"</string>
-    <string name="card_title_video_call_paused" msgid="3753261320787432731">"Videohovor (pozastaveno)"</string>
+    <string name="card_title_video_call_rejected" msgid="462358296694719787">"Žádost o video byla zamítnuta"</string>
     <string name="card_title_callback_number" msgid="7307938207564217293">"Vaše číslo pro zpětné volání\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Vaše číslo pro tísňové zpětné volání\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="notification_dialing" msgid="2107666444937350731">"Vytáčení"</string>
@@ -123,7 +123,7 @@
     <string name="voicemail_settings" msgid="72448049107749316">"Konfigurace"</string>
     <string name="voicemail_number_not_set" msgid="6724904736891087856">"&lt;Nenastaveno&gt;"</string>
     <string name="other_settings" msgid="3672912580359716394">"Další nastavení hovorů"</string>
-    <string name="calling_via_template" msgid="4839419581866928142">"Volání prostřednictvím poskytovatele <xliff:g id="PROVIDER_NAME">%s</xliff:g>"</string>
+    <string name="calling_via_template" msgid="4839419581866928142">"Volání přes <xliff:g id="PROVIDER_NAME">%s</xliff:g>"</string>
     <string name="incoming_via_template" msgid="1696993226115570960">"Příchozí hovor přes poskytovatele <xliff:g id="PROVIDER_NAME">%s</xliff:g>"</string>
     <string name="contactPhoto" msgid="4713193418046639466">"fotografie kontaktu"</string>
     <string name="goPrivate" msgid="865837794424530980">"přepnout na soukromé"</string>
@@ -152,7 +152,6 @@
     <string name="default_notification_description" msgid="78174796906240970">"Výchozí zvuk (<xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g>)"</string>
     <string name="ringtone_title" msgid="6374978286202084684">"Vyzváněcí tón telefonu"</string>
     <string name="vibrate_on_ring_title" msgid="9197564612065258960">"Vibrace při vyzvánění"</string>
-    <string name="dial_pad_autocomplete" msgid="7683489952557536398">"Aut. doplňování číselníku"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Vyzvánění a vibrace"</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"Spravovat konferenční hovor"</string>
     <string name="emergency_call_dialog_number_for_display" msgid="8373041754188879871">"Číslo tísňové linky"</string>
@@ -174,4 +173,21 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> hodin</item>
       <item quantity="one">1 hodina</item>
     </plurals>
+    <string name="profile_photo_description" msgid="5609894336203315400">"Profilová fotka"</string>
+    <string name="camera_off_description" msgid="5689494614359429889">"Fotoaparát je vypnutý"</string>
+    <string name="child_number" msgid="7437330400723805538">"pomocí čísla <xliff:g id="CHILD_NUMBER">%s</xliff:g>"</string>
+    <string name="note_sent" msgid="3548700178238244595">"Poznámka odeslána"</string>
+    <string name="person_contact_context_title" msgid="723266617256740572">"Nejnovější zprávy"</string>
+    <string name="business_contact_context_title" msgid="5334864183374669765">"Informace o firmě"</string>
+    <string name="distance_imperial_away" msgid="437508440176409037">"Vzdálenost: <xliff:g id="DISTANCE">%.1f</xliff:g> mi"</string>
+    <string name="distance_metric_away" msgid="166931929505893599">"Vzdálenost: <xliff:g id="DISTANCE">%.1f</xliff:g> km"</string>
+    <string name="display_address" msgid="7307400970699471708">"<xliff:g id="STREET_ADDRESS">%1$s</xliff:g>, <xliff:g id="LOCALITY">%2$s</xliff:g>"</string>
+    <string name="open_time_span" msgid="6709726401179550381">"<xliff:g id="OPEN_TIME">%1$s</xliff:g>–<xliff:g id="CLOSE_TIME">%2$s</xliff:g>"</string>
+    <string name="opening_hours" msgid="8524931350345922176">"<xliff:g id="EARLIER_TIMES">%1$s</xliff:g>, <xliff:g id="LATER_TIME">%2$s</xliff:g>"</string>
+    <string name="opens_tomorrow_at" msgid="9168271983241323946">"Zítra otevírá v <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="opens_today_at" msgid="9011139983701379907">"Dnes otevírá v <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="closes_today_at" msgid="2623384032475495193">"Zavírá v <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="closed_today_at" msgid="324294933330883529">"Dnes zavřeno od <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="open_now" msgid="6439301193613349163">"Nyní otevřeno"</string>
+    <string name="closed_now" msgid="9175774453982778909">"Nyní zavřeno"</string>
 </resources>
diff --git a/InCallUI/res/values-da/strings.xml b/InCallUI/res/values-da/strings.xml
index 76778fa..81569e6 100644
--- a/InCallUI/res/values-da/strings.xml
+++ b/InCallUI/res/values-da/strings.xml
@@ -17,7 +17,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="phoneAppLabel" product="default" msgid="906161039445636857">"Telefon"</string>
+    <string name="phoneAppLabel" product="default" msgid="906161039445636857">"Opkald"</string>
     <string name="onHold" msgid="9035493194749959955">"Ventende"</string>
     <string name="unknown" msgid="6878797917991465859">"Ukendt"</string>
     <string name="private_num" msgid="6713286113000232309">"Privat nummer"</string>
@@ -49,7 +49,7 @@
     <string name="card_title_video_call" msgid="5898636679563320218">"Videoopkald"</string>
     <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Anmoder om video"</string>
     <string name="card_title_video_call_error" msgid="9000555878389539225">"Kan ikke forbinde videoopkald"</string>
-    <string name="card_title_video_call_paused" msgid="3753261320787432731">"Videoopkald (på pause)"</string>
+    <string name="card_title_video_call_rejected" msgid="462358296694719787">"Videoanmodningen blev afvist"</string>
     <string name="card_title_callback_number" msgid="7307938207564217293">"Dit tilbagekaldsnummer\n<xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Dit tilbagekaldsnummer til nødopkald\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="notification_dialing" msgid="2107666444937350731">"Ringer op"</string>
@@ -152,7 +152,6 @@
     <string name="default_notification_description" msgid="78174796906240970">"Standardlyd (<xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g>)"</string>
     <string name="ringtone_title" msgid="6374978286202084684">"Ringetone for opkald"</string>
     <string name="vibrate_on_ring_title" msgid="9197564612065258960">"Vibrer ved opringning"</string>
-    <string name="dial_pad_autocomplete" msgid="7683489952557536398">"Autofuldfør numerisk tastatur"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Ringetone og vibration"</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"Administrer telefonmøde"</string>
     <string name="emergency_call_dialog_number_for_display" msgid="8373041754188879871">"Nødnummer"</string>
@@ -168,4 +167,21 @@
       <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> timer</item>
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> timer</item>
     </plurals>
+    <string name="profile_photo_description" msgid="5609894336203315400">"Profilfoto"</string>
+    <string name="camera_off_description" msgid="5689494614359429889">"Sluk kamera"</string>
+    <string name="child_number" msgid="7437330400723805538">"via <xliff:g id="CHILD_NUMBER">%s</xliff:g>"</string>
+    <string name="note_sent" msgid="3548700178238244595">"Noten er sendt"</string>
+    <string name="person_contact_context_title" msgid="723266617256740572">"Seneste beskeder"</string>
+    <string name="business_contact_context_title" msgid="5334864183374669765">"Virksomhedsoplysninger"</string>
+    <string name="distance_imperial_away" msgid="437508440176409037">"<xliff:g id="DISTANCE">%.1f</xliff:g> mil væk"</string>
+    <string name="distance_metric_away" msgid="166931929505893599">"<xliff:g id="DISTANCE">%.1f</xliff:g> km væk"</string>
+    <string name="display_address" msgid="7307400970699471708">"<xliff:g id="STREET_ADDRESS">%1$s</xliff:g>, <xliff:g id="LOCALITY">%2$s</xliff:g>"</string>
+    <string name="open_time_span" msgid="6709726401179550381">"<xliff:g id="OPEN_TIME">%1$s</xliff:g>-<xliff:g id="CLOSE_TIME">%2$s</xliff:g>"</string>
+    <string name="opening_hours" msgid="8524931350345922176">"<xliff:g id="EARLIER_TIMES">%1$s</xliff:g>, <xliff:g id="LATER_TIME">%2$s</xliff:g>"</string>
+    <string name="opens_tomorrow_at" msgid="9168271983241323946">"Åbner i morgen kl. <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="opens_today_at" msgid="9011139983701379907">"Åbner i dag kl. <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="closes_today_at" msgid="2623384032475495193">"Lukker kl. <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="closed_today_at" msgid="324294933330883529">"Lukkede i dag kl. <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="open_now" msgid="6439301193613349163">"Åbent nu"</string>
+    <string name="closed_now" msgid="9175774453982778909">"Lukket for i dag"</string>
 </resources>
diff --git a/InCallUI/res/values-de/strings.xml b/InCallUI/res/values-de/strings.xml
index c0a04ef..312e206 100644
--- a/InCallUI/res/values-de/strings.xml
+++ b/InCallUI/res/values-de/strings.xml
@@ -23,7 +23,7 @@
     <string name="private_num" msgid="6713286113000232309">"Private Nummer"</string>
     <string name="payphone" msgid="4793877574636445118">"Münztelefon"</string>
     <string name="confCall" msgid="1904840547188336828">"Telefonkonferenz"</string>
-    <string name="call_lost" msgid="6183862117003999578">"Anruf abgebrochen"</string>
+    <string name="call_lost" msgid="6183862117003999578">"Verbindung unterbrochen"</string>
     <string name="audio_mode_speaker" msgid="27649582100085266">"Lautsprecher"</string>
     <string name="audio_mode_earpiece" msgid="4156527186373869107">"Handy-Kopfhörer"</string>
     <string name="audio_mode_wired_headset" msgid="1465350758489175975">"Kabelgebundenes Headset"</string>
@@ -49,7 +49,7 @@
     <string name="card_title_video_call" msgid="5898636679563320218">"Videoanruf"</string>
     <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Videoanfrage wird gesendet."</string>
     <string name="card_title_video_call_error" msgid="9000555878389539225">"Videoanruf kann nicht verbunden werden."</string>
-    <string name="card_title_video_call_paused" msgid="3753261320787432731">"Videoanruf (pausiert)"</string>
+    <string name="card_title_video_call_rejected" msgid="462358296694719787">"Videoanfrage abgelehnt"</string>
     <string name="card_title_callback_number" msgid="7307938207564217293">"Ihre Rückrufnummer:\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Ihre Notrufnummer:\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="notification_dialing" msgid="2107666444937350731">"Verbindung wird aufgebaut..."</string>
@@ -78,10 +78,10 @@
     <string name="notification_action_dismiss" msgid="2679969397930852858">"Ablehnen"</string>
     <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Zurückrufen"</string>
     <string name="notification_missedCall_message" msgid="3049928912736917988">"Nachricht"</string>
-    <string name="incall_error_power_off" msgid="6550191216405193368">"Deaktivieren Sie zunächst den Flugmodus, um einen Anruf zu tätigen."</string>
+    <string name="incall_error_power_off" msgid="6550191216405193368">"Deaktiviere zunächst den Flugmodus, um einen Anruf zu tätigen."</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"Nicht in Netzwerk registriert."</string>
     <string name="incall_error_out_of_service" msgid="4100065333878929223">"Mobilfunknetz nicht verfügbar"</string>
-    <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Geben Sie eine gültige Nummer ein."</string>
+    <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Gib eine gültige Nummer ein."</string>
     <string name="incall_error_call_failed" msgid="6302746943230078197">"Anruf nicht möglich."</string>
     <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"MMI-Sequenz wird gestartet..."</string>
     <string name="incall_error_supp_service_unknown" msgid="323435289607131929">"Dienst wird nicht unterstützt."</string>
@@ -96,7 +96,7 @@
     <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Mobilfunkverbindung wird aktiviert..."</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Kein Service. Erneuter Versuch..."</string>
     <string name="dial_emergency_error" msgid="1509085166367420355">"Anruf nicht möglich. <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> ist keine Notrufnummer."</string>
-    <string name="dial_emergency_empty_error" msgid="9130194953830414638">"Anruf nicht möglich. Wählen Sie eine Notrufnummer."</string>
+    <string name="dial_emergency_empty_error" msgid="9130194953830414638">"Anruf nicht möglich. Wähle eine Notrufnummer."</string>
     <string name="dialerKeyboardHintText" msgid="9192914825413747792">"Zum Wählen Tastatur verwenden"</string>
     <string name="onscreenHoldText_unselected" msgid="7092499303393171276">"Anruf halten"</string>
     <string name="onscreenHoldText_selected" msgid="7127901498507384249">"Anruf fortsetzen"</string>
@@ -131,11 +131,11 @@
     <string name="respond_via_sms_custom_message" msgid="6158880869935281078">"Eigene Antwort schreiben..."</string>
     <string name="custom_message_cancel" msgid="7516406059429609296">"Abbrechen"</string>
     <string name="custom_message_send" msgid="5795754217085747742">"Senden"</string>
-    <string name="description_target_answer" msgid="7205604197797472471">"Antworten"</string>
+    <string name="description_target_answer" msgid="7205604197797472471">"Annehmen"</string>
     <string name="description_target_send_sms" msgid="2098326025587950144">"SMS senden"</string>
     <string name="description_target_decline" msgid="4789834364389731957">"Ablehnen"</string>
-    <string name="description_target_answer_video_call" msgid="3495965588512395026">"Antworten mit Videoanruf"</string>
-    <string name="description_target_answer_audio_call" msgid="8396296303320994450">"Antworten mit Audioanruf"</string>
+    <string name="description_target_answer_video_call" msgid="3495965588512395026">"Als Videoanruf annehmen"</string>
+    <string name="description_target_answer_audio_call" msgid="8396296303320994450">"Als normalen Anruf annehmen"</string>
     <string name="description_target_accept_upgrade_to_video_request" msgid="2894072808324604062">"Videoanfrage akzeptieren"</string>
     <string name="description_target_decline_upgrade_to_video_request" msgid="4093888612888538776">"Videoanfrage ablehnen"</string>
     <string name="description_target_accept_upgrade_to_video_transmit_request" msgid="5311037889642077468">"Anfrage für ausgehenden Videoanruf akzeptieren"</string>
@@ -152,7 +152,6 @@
     <string name="default_notification_description" msgid="78174796906240970">"Standardklingelton (<xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g>)"</string>
     <string name="ringtone_title" msgid="6374978286202084684">"Klingelton"</string>
     <string name="vibrate_on_ring_title" msgid="9197564612065258960">"Beim Klingeln vibrieren"</string>
-    <string name="dial_pad_autocomplete" msgid="7683489952557536398">"Wähltasten-Autovervollständigung"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Klingelton &amp; Vibration"</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"Telefonkonferenz verwalten"</string>
     <string name="emergency_call_dialog_number_for_display" msgid="8373041754188879871">"Notrufnummer"</string>
@@ -168,4 +167,21 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> Stunden</item>
       <item quantity="one">1 Stunde</item>
     </plurals>
+    <string name="profile_photo_description" msgid="5609894336203315400">"Profilfoto"</string>
+    <string name="camera_off_description" msgid="5689494614359429889">"Kamera aus"</string>
+    <string name="child_number" msgid="7437330400723805538">"über <xliff:g id="CHILD_NUMBER">%s</xliff:g>"</string>
+    <string name="note_sent" msgid="3548700178238244595">"Notiz gesendet"</string>
+    <string name="person_contact_context_title" msgid="723266617256740572">"Zuletzt eingegangene Nachrichten"</string>
+    <string name="business_contact_context_title" msgid="5334864183374669765">"Geschäftsinformationen"</string>
+    <string name="distance_imperial_away" msgid="437508440176409037">"<xliff:g id="DISTANCE">%.1f</xliff:g> Meilen entfernt"</string>
+    <string name="distance_metric_away" msgid="166931929505893599">"<xliff:g id="DISTANCE">%.1f</xliff:g> Kilometer entfernt"</string>
+    <string name="display_address" msgid="7307400970699471708">"<xliff:g id="STREET_ADDRESS">%1$s</xliff:g>, <xliff:g id="LOCALITY">%2$s</xliff:g>"</string>
+    <string name="open_time_span" msgid="6709726401179550381">"<xliff:g id="OPEN_TIME">%1$s</xliff:g> bis <xliff:g id="CLOSE_TIME">%2$s</xliff:g>"</string>
+    <string name="opening_hours" msgid="8524931350345922176">"<xliff:g id="EARLIER_TIMES">%1$s</xliff:g>, <xliff:g id="LATER_TIME">%2$s</xliff:g>"</string>
+    <string name="opens_tomorrow_at" msgid="9168271983241323946">"Öffnet morgen um <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="opens_today_at" msgid="9011139983701379907">"Öffnet heute um <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="closes_today_at" msgid="2623384032475495193">"Schließt um <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="closed_today_at" msgid="324294933330883529">"Hat heute um <xliff:g id="CLOSE_TIME">%s</xliff:g> geschlossen"</string>
+    <string name="open_now" msgid="6439301193613349163">"Jetzt geöffnet"</string>
+    <string name="closed_now" msgid="9175774453982778909">"Jetzt geschlossen"</string>
 </resources>
diff --git a/InCallUI/res/values-el/strings.xml b/InCallUI/res/values-el/strings.xml
index d737d7f..68b3257 100644
--- a/InCallUI/res/values-el/strings.xml
+++ b/InCallUI/res/values-el/strings.xml
@@ -49,7 +49,7 @@
     <string name="card_title_video_call" msgid="5898636679563320218">"Βιντεοκλήση"</string>
     <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Αίτημα βίντεο"</string>
     <string name="card_title_video_call_error" msgid="9000555878389539225">"Δεν είναι δυνατή η σύνδεση βιντεοκλησης"</string>
-    <string name="card_title_video_call_paused" msgid="3753261320787432731">"Βιντεοκλήση (Παύση)"</string>
+    <string name="card_title_video_call_rejected" msgid="462358296694719787">"Το αίτημα βίντεο απορρίφθηκε"</string>
     <string name="card_title_callback_number" msgid="7307938207564217293">"Αριθμός επανάκλησης\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Αριθμός επανάκλησης έκτακτης ανάγκης\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="notification_dialing" msgid="2107666444937350731">"Κλήση"</string>
@@ -152,7 +152,6 @@
     <string name="default_notification_description" msgid="78174796906240970">"Προεπιλεγμένος ήχος (<xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g>)"</string>
     <string name="ringtone_title" msgid="6374978286202084684">"Ήχος κλήσης τηλεφώνου"</string>
     <string name="vibrate_on_ring_title" msgid="9197564612065258960">"Δόνηση κατά το κουδούνισμα"</string>
-    <string name="dial_pad_autocomplete" msgid="7683489952557536398">"Αυτόμ. συμπλ. πληκτρολ. κλήσης"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Ήχος κλήσης &amp; δόνηση"</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"Διαχείριση κλήσης συνδιάσκεψης"</string>
     <string name="emergency_call_dialog_number_for_display" msgid="8373041754188879871">"Αριθμός έκτακτης ανάγκης"</string>
@@ -168,4 +167,21 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> ώρες</item>
       <item quantity="one">1 ώρα</item>
     </plurals>
+    <string name="profile_photo_description" msgid="5609894336203315400">"Φωτογραφία προφίλ"</string>
+    <string name="camera_off_description" msgid="5689494614359429889">"Απενεργοποίηση κάμερας"</string>
+    <string name="child_number" msgid="7437330400723805538">"μέσω <xliff:g id="CHILD_NUMBER">%s</xliff:g>"</string>
+    <string name="note_sent" msgid="3548700178238244595">"Η σημείωση εστάλη"</string>
+    <string name="person_contact_context_title" msgid="723266617256740572">"Πρόσφατα μηνύματα"</string>
+    <string name="business_contact_context_title" msgid="5334864183374669765">"Πληροφορίες επιχείρησης"</string>
+    <string name="distance_imperial_away" msgid="437508440176409037">"<xliff:g id="DISTANCE">%.1f</xliff:g> μίλια μακριά"</string>
+    <string name="distance_metric_away" msgid="166931929505893599">"<xliff:g id="DISTANCE">%.1f</xliff:g> χιλιόμετρα μακριά"</string>
+    <string name="display_address" msgid="7307400970699471708">"<xliff:g id="STREET_ADDRESS">%1$s</xliff:g>, <xliff:g id="LOCALITY">%2$s</xliff:g>"</string>
+    <string name="open_time_span" msgid="6709726401179550381">"<xliff:g id="OPEN_TIME">%1$s</xliff:g> - <xliff:g id="CLOSE_TIME">%2$s</xliff:g>"</string>
+    <string name="opening_hours" msgid="8524931350345922176">"<xliff:g id="EARLIER_TIMES">%1$s</xliff:g>, <xliff:g id="LATER_TIME">%2$s</xliff:g>"</string>
+    <string name="opens_tomorrow_at" msgid="9168271983241323946">"Ανοίγει αύριο στις <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="opens_today_at" msgid="9011139983701379907">"Ανοίγει σήμερα στις <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="closes_today_at" msgid="2623384032475495193">"Κλείνει στις <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="closed_today_at" msgid="324294933330883529">"Έκλεισε σήμερα στις <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="open_now" msgid="6439301193613349163">"Ανοιχτό τώρα"</string>
+    <string name="closed_now" msgid="9175774453982778909">"Κλειστό τώρα"</string>
 </resources>
diff --git a/InCallUI/res/values-en-rAU/strings.xml b/InCallUI/res/values-en-rAU/strings.xml
index fed826e..15409ad 100644
--- a/InCallUI/res/values-en-rAU/strings.xml
+++ b/InCallUI/res/values-en-rAU/strings.xml
@@ -49,7 +49,7 @@
     <string name="card_title_video_call" msgid="5898636679563320218">"Video call"</string>
     <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Requesting video"</string>
     <string name="card_title_video_call_error" msgid="9000555878389539225">"Can\'t connect video call"</string>
-    <string name="card_title_video_call_paused" msgid="3753261320787432731">"Video call (Paused)"</string>
+    <string name="card_title_video_call_rejected" msgid="462358296694719787">"Video request rejected"</string>
     <string name="card_title_callback_number" msgid="7307938207564217293">"Your callback number\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Your emergency callback number\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="notification_dialing" msgid="2107666444937350731">"Dialling"</string>
@@ -152,7 +152,6 @@
     <string name="default_notification_description" msgid="78174796906240970">"Default sound (<xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g>)"</string>
     <string name="ringtone_title" msgid="6374978286202084684">"Phone ringtone"</string>
     <string name="vibrate_on_ring_title" msgid="9197564612065258960">"Vibrate when ringing"</string>
-    <string name="dial_pad_autocomplete" msgid="7683489952557536398">"Dialpad auto-complete"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Ringtone &amp; Vibrate"</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"Manage conference call"</string>
     <string name="emergency_call_dialog_number_for_display" msgid="8373041754188879871">"Emergency number"</string>
@@ -168,4 +167,21 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> hours</item>
       <item quantity="one">1 hour</item>
     </plurals>
+    <string name="profile_photo_description" msgid="5609894336203315400">"Profile photo"</string>
+    <string name="camera_off_description" msgid="5689494614359429889">"Camera off"</string>
+    <string name="child_number" msgid="7437330400723805538">"via <xliff:g id="CHILD_NUMBER">%s</xliff:g>"</string>
+    <string name="note_sent" msgid="3548700178238244595">"Note sent"</string>
+    <string name="person_contact_context_title" msgid="723266617256740572">"Recent messages"</string>
+    <string name="business_contact_context_title" msgid="5334864183374669765">"Business info"</string>
+    <string name="distance_imperial_away" msgid="437508440176409037">"<xliff:g id="DISTANCE">%.1f</xliff:g> mi away"</string>
+    <string name="distance_metric_away" msgid="166931929505893599">"<xliff:g id="DISTANCE">%.1f</xliff:g> km away"</string>
+    <string name="display_address" msgid="7307400970699471708">"<xliff:g id="STREET_ADDRESS">%1$s</xliff:g>, <xliff:g id="LOCALITY">%2$s</xliff:g>"</string>
+    <string name="open_time_span" msgid="6709726401179550381">"<xliff:g id="OPEN_TIME">%1$s</xliff:g> – <xliff:g id="CLOSE_TIME">%2$s</xliff:g>"</string>
+    <string name="opening_hours" msgid="8524931350345922176">"<xliff:g id="EARLIER_TIMES">%1$s</xliff:g>, <xliff:g id="LATER_TIME">%2$s</xliff:g>"</string>
+    <string name="opens_tomorrow_at" msgid="9168271983241323946">"Opens tomorrow at <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="opens_today_at" msgid="9011139983701379907">"Opens today at <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="closes_today_at" msgid="2623384032475495193">"Closes at <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="closed_today_at" msgid="324294933330883529">"Closed today at <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="open_now" msgid="6439301193613349163">"Open now"</string>
+    <string name="closed_now" msgid="9175774453982778909">"Closed now"</string>
 </resources>
diff --git a/InCallUI/res/values-en-rGB/strings.xml b/InCallUI/res/values-en-rGB/strings.xml
index fed826e..15409ad 100644
--- a/InCallUI/res/values-en-rGB/strings.xml
+++ b/InCallUI/res/values-en-rGB/strings.xml
@@ -49,7 +49,7 @@
     <string name="card_title_video_call" msgid="5898636679563320218">"Video call"</string>
     <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Requesting video"</string>
     <string name="card_title_video_call_error" msgid="9000555878389539225">"Can\'t connect video call"</string>
-    <string name="card_title_video_call_paused" msgid="3753261320787432731">"Video call (Paused)"</string>
+    <string name="card_title_video_call_rejected" msgid="462358296694719787">"Video request rejected"</string>
     <string name="card_title_callback_number" msgid="7307938207564217293">"Your callback number\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Your emergency callback number\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="notification_dialing" msgid="2107666444937350731">"Dialling"</string>
@@ -152,7 +152,6 @@
     <string name="default_notification_description" msgid="78174796906240970">"Default sound (<xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g>)"</string>
     <string name="ringtone_title" msgid="6374978286202084684">"Phone ringtone"</string>
     <string name="vibrate_on_ring_title" msgid="9197564612065258960">"Vibrate when ringing"</string>
-    <string name="dial_pad_autocomplete" msgid="7683489952557536398">"Dialpad auto-complete"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Ringtone &amp; Vibrate"</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"Manage conference call"</string>
     <string name="emergency_call_dialog_number_for_display" msgid="8373041754188879871">"Emergency number"</string>
@@ -168,4 +167,21 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> hours</item>
       <item quantity="one">1 hour</item>
     </plurals>
+    <string name="profile_photo_description" msgid="5609894336203315400">"Profile photo"</string>
+    <string name="camera_off_description" msgid="5689494614359429889">"Camera off"</string>
+    <string name="child_number" msgid="7437330400723805538">"via <xliff:g id="CHILD_NUMBER">%s</xliff:g>"</string>
+    <string name="note_sent" msgid="3548700178238244595">"Note sent"</string>
+    <string name="person_contact_context_title" msgid="723266617256740572">"Recent messages"</string>
+    <string name="business_contact_context_title" msgid="5334864183374669765">"Business info"</string>
+    <string name="distance_imperial_away" msgid="437508440176409037">"<xliff:g id="DISTANCE">%.1f</xliff:g> mi away"</string>
+    <string name="distance_metric_away" msgid="166931929505893599">"<xliff:g id="DISTANCE">%.1f</xliff:g> km away"</string>
+    <string name="display_address" msgid="7307400970699471708">"<xliff:g id="STREET_ADDRESS">%1$s</xliff:g>, <xliff:g id="LOCALITY">%2$s</xliff:g>"</string>
+    <string name="open_time_span" msgid="6709726401179550381">"<xliff:g id="OPEN_TIME">%1$s</xliff:g> – <xliff:g id="CLOSE_TIME">%2$s</xliff:g>"</string>
+    <string name="opening_hours" msgid="8524931350345922176">"<xliff:g id="EARLIER_TIMES">%1$s</xliff:g>, <xliff:g id="LATER_TIME">%2$s</xliff:g>"</string>
+    <string name="opens_tomorrow_at" msgid="9168271983241323946">"Opens tomorrow at <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="opens_today_at" msgid="9011139983701379907">"Opens today at <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="closes_today_at" msgid="2623384032475495193">"Closes at <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="closed_today_at" msgid="324294933330883529">"Closed today at <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="open_now" msgid="6439301193613349163">"Open now"</string>
+    <string name="closed_now" msgid="9175774453982778909">"Closed now"</string>
 </resources>
diff --git a/InCallUI/res/values-en-rIN/strings.xml b/InCallUI/res/values-en-rIN/strings.xml
index fed826e..15409ad 100644
--- a/InCallUI/res/values-en-rIN/strings.xml
+++ b/InCallUI/res/values-en-rIN/strings.xml
@@ -49,7 +49,7 @@
     <string name="card_title_video_call" msgid="5898636679563320218">"Video call"</string>
     <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Requesting video"</string>
     <string name="card_title_video_call_error" msgid="9000555878389539225">"Can\'t connect video call"</string>
-    <string name="card_title_video_call_paused" msgid="3753261320787432731">"Video call (Paused)"</string>
+    <string name="card_title_video_call_rejected" msgid="462358296694719787">"Video request rejected"</string>
     <string name="card_title_callback_number" msgid="7307938207564217293">"Your callback number\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Your emergency callback number\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="notification_dialing" msgid="2107666444937350731">"Dialling"</string>
@@ -152,7 +152,6 @@
     <string name="default_notification_description" msgid="78174796906240970">"Default sound (<xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g>)"</string>
     <string name="ringtone_title" msgid="6374978286202084684">"Phone ringtone"</string>
     <string name="vibrate_on_ring_title" msgid="9197564612065258960">"Vibrate when ringing"</string>
-    <string name="dial_pad_autocomplete" msgid="7683489952557536398">"Dialpad auto-complete"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Ringtone &amp; Vibrate"</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"Manage conference call"</string>
     <string name="emergency_call_dialog_number_for_display" msgid="8373041754188879871">"Emergency number"</string>
@@ -168,4 +167,21 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> hours</item>
       <item quantity="one">1 hour</item>
     </plurals>
+    <string name="profile_photo_description" msgid="5609894336203315400">"Profile photo"</string>
+    <string name="camera_off_description" msgid="5689494614359429889">"Camera off"</string>
+    <string name="child_number" msgid="7437330400723805538">"via <xliff:g id="CHILD_NUMBER">%s</xliff:g>"</string>
+    <string name="note_sent" msgid="3548700178238244595">"Note sent"</string>
+    <string name="person_contact_context_title" msgid="723266617256740572">"Recent messages"</string>
+    <string name="business_contact_context_title" msgid="5334864183374669765">"Business info"</string>
+    <string name="distance_imperial_away" msgid="437508440176409037">"<xliff:g id="DISTANCE">%.1f</xliff:g> mi away"</string>
+    <string name="distance_metric_away" msgid="166931929505893599">"<xliff:g id="DISTANCE">%.1f</xliff:g> km away"</string>
+    <string name="display_address" msgid="7307400970699471708">"<xliff:g id="STREET_ADDRESS">%1$s</xliff:g>, <xliff:g id="LOCALITY">%2$s</xliff:g>"</string>
+    <string name="open_time_span" msgid="6709726401179550381">"<xliff:g id="OPEN_TIME">%1$s</xliff:g> – <xliff:g id="CLOSE_TIME">%2$s</xliff:g>"</string>
+    <string name="opening_hours" msgid="8524931350345922176">"<xliff:g id="EARLIER_TIMES">%1$s</xliff:g>, <xliff:g id="LATER_TIME">%2$s</xliff:g>"</string>
+    <string name="opens_tomorrow_at" msgid="9168271983241323946">"Opens tomorrow at <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="opens_today_at" msgid="9011139983701379907">"Opens today at <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="closes_today_at" msgid="2623384032475495193">"Closes at <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="closed_today_at" msgid="324294933330883529">"Closed today at <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="open_now" msgid="6439301193613349163">"Open now"</string>
+    <string name="closed_now" msgid="9175774453982778909">"Closed now"</string>
 </resources>
diff --git a/InCallUI/res/values-es-rUS/strings.xml b/InCallUI/res/values-es-rUS/strings.xml
index fed658c..0e88906 100644
--- a/InCallUI/res/values-es-rUS/strings.xml
+++ b/InCallUI/res/values-es-rUS/strings.xml
@@ -35,7 +35,7 @@
     <string name="pause_prompt_no" msgid="6686238803236884877">"No"</string>
     <string name="wild_prompt_str" msgid="5543521676355533577">"Reemplazar el carácter comodín con"</string>
     <string name="caller_manage_header" msgid="3231519674734638786">"Llamada en conferencia <xliff:g id="CONF_CALL_TIME">%s</xliff:g>"</string>
-    <string name="voicemail_settings_number_label" msgid="8524164258691887790">"Núm. de correo de voz"</string>
+    <string name="voicemail_settings_number_label" msgid="8524164258691887790">"Correo de voz"</string>
     <string name="card_title_dialing" msgid="5769417478498348054">"Marcando"</string>
     <string name="card_title_redialing" msgid="8253487008234167266">"Volviendo a marcar"</string>
     <string name="card_title_conf_call" msgid="1162980346189744501">"Llamada en conferencia"</string>
@@ -49,7 +49,7 @@
     <string name="card_title_video_call" msgid="5898636679563320218">"Videollamada"</string>
     <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Solicitando video"</string>
     <string name="card_title_video_call_error" msgid="9000555878389539225">"No se puede conectar la videollamada."</string>
-    <string name="card_title_video_call_paused" msgid="3753261320787432731">"Videollamada (pausada)"</string>
+    <string name="card_title_video_call_rejected" msgid="462358296694719787">"Se rechazó la solicitud de videollamada."</string>
     <string name="card_title_callback_number" msgid="7307938207564217293">"Número de devolución de llamada\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Número de devolución de llamada de emergencia\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="notification_dialing" msgid="2107666444937350731">"Marcando"</string>
@@ -76,7 +76,7 @@
     <string name="notification_action_answer_voice" msgid="1770796916369437773">"Voz"</string>
     <string name="notification_action_accept" msgid="2898609801209468429">"Aceptar"</string>
     <string name="notification_action_dismiss" msgid="2679969397930852858">"Descartar"</string>
-    <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Devolver llamada"</string>
+    <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Llamar"</string>
     <string name="notification_missedCall_message" msgid="3049928912736917988">"Mensaje"</string>
     <string name="incall_error_power_off" msgid="6550191216405193368">"Para realizar una llamada, primero debes desactivar el modo avión."</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"No registrado en la red."</string>
@@ -123,7 +123,7 @@
     <string name="voicemail_settings" msgid="72448049107749316">"Configuración"</string>
     <string name="voicemail_number_not_set" msgid="6724904736891087856">"&lt;Sin configurar&gt;"</string>
     <string name="other_settings" msgid="3672912580359716394">"Otras configuraciones de llamada"</string>
-    <string name="calling_via_template" msgid="4839419581866928142">"Llamada a través de <xliff:g id="PROVIDER_NAME">%s</xliff:g>"</string>
+    <string name="calling_via_template" msgid="4839419581866928142">"Llamada vía <xliff:g id="PROVIDER_NAME">%s</xliff:g>"</string>
     <string name="incoming_via_template" msgid="1696993226115570960">"Recibidas a través de <xliff:g id="PROVIDER_NAME">%s</xliff:g>"</string>
     <string name="contactPhoto" msgid="4713193418046639466">"foto de contacto"</string>
     <string name="goPrivate" msgid="865837794424530980">"pasar a modo privado"</string>
@@ -152,7 +152,6 @@
     <string name="default_notification_description" msgid="78174796906240970">"Sonido predeterminado (<xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g>)"</string>
     <string name="ringtone_title" msgid="6374978286202084684">"Tono del dispositivo"</string>
     <string name="vibrate_on_ring_title" msgid="9197564612065258960">"Vibrar al sonar"</string>
-    <string name="dial_pad_autocomplete" msgid="7683489952557536398">"Autocompletar con teclado"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Tono y vibración"</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"Administrar conferencia telefónica"</string>
     <string name="emergency_call_dialog_number_for_display" msgid="8373041754188879871">"Número de emergencia"</string>
@@ -168,4 +167,21 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> horas</item>
       <item quantity="one">1 hora</item>
     </plurals>
+    <string name="profile_photo_description" msgid="5609894336203315400">"Foto de perfil"</string>
+    <string name="camera_off_description" msgid="5689494614359429889">"Cámara desactivada"</string>
+    <string name="child_number" msgid="7437330400723805538">"a través del <xliff:g id="CHILD_NUMBER">%s</xliff:g>"</string>
+    <string name="note_sent" msgid="3548700178238244595">"Se envió la nota"</string>
+    <string name="person_contact_context_title" msgid="723266617256740572">"Mensajes recientes"</string>
+    <string name="business_contact_context_title" msgid="5334864183374669765">"Información de la empresa"</string>
+    <string name="distance_imperial_away" msgid="437508440176409037">"A <xliff:g id="DISTANCE">%.1f</xliff:g> millas"</string>
+    <string name="distance_metric_away" msgid="166931929505893599">"A <xliff:g id="DISTANCE">%.1f</xliff:g> km"</string>
+    <string name="display_address" msgid="7307400970699471708">"<xliff:g id="STREET_ADDRESS">%1$s</xliff:g>, <xliff:g id="LOCALITY">%2$s</xliff:g>"</string>
+    <string name="open_time_span" msgid="6709726401179550381">"<xliff:g id="OPEN_TIME">%1$s</xliff:g> - <xliff:g id="CLOSE_TIME">%2$s</xliff:g>"</string>
+    <string name="opening_hours" msgid="8524931350345922176">"<xliff:g id="EARLIER_TIMES">%1$s</xliff:g> y <xliff:g id="LATER_TIME">%2$s</xliff:g>"</string>
+    <string name="opens_tomorrow_at" msgid="9168271983241323946">"Abre mañana a la hora <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="opens_today_at" msgid="9011139983701379907">"Abre hoy a la hora <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="closes_today_at" msgid="2623384032475495193">"Cierra a la hora <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="closed_today_at" msgid="324294933330883529">"Cerró hoy a la hora <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="open_now" msgid="6439301193613349163">"Abierto ahora"</string>
+    <string name="closed_now" msgid="9175774453982778909">"Cerrado ahora"</string>
 </resources>
diff --git a/InCallUI/res/values-es/strings.xml b/InCallUI/res/values-es/strings.xml
index a52d6b7..966544f 100644
--- a/InCallUI/res/values-es/strings.xml
+++ b/InCallUI/res/values-es/strings.xml
@@ -49,7 +49,7 @@
     <string name="card_title_video_call" msgid="5898636679563320218">"Videollamada"</string>
     <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Solicitando videollamada"</string>
     <string name="card_title_video_call_error" msgid="9000555878389539225">"No se puede establecer la videollamada"</string>
-    <string name="card_title_video_call_paused" msgid="3753261320787432731">"Videollamada (en pausa)"</string>
+    <string name="card_title_video_call_rejected" msgid="462358296694719787">"Solicitud de vídeo rechazada"</string>
     <string name="card_title_callback_number" msgid="7307938207564217293">"Tu número de devolución de llamada\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Tu número de devolución de llamada de emergencia\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="notification_dialing" msgid="2107666444937350731">"Llamando..."</string>
@@ -123,7 +123,7 @@
     <string name="voicemail_settings" msgid="72448049107749316">"Configuración"</string>
     <string name="voicemail_number_not_set" msgid="6724904736891087856">"&lt;No definido&gt;"</string>
     <string name="other_settings" msgid="3672912580359716394">"Otras opciones de llamada"</string>
-    <string name="calling_via_template" msgid="4839419581866928142">"Llamada a través de <xliff:g id="PROVIDER_NAME">%s</xliff:g>"</string>
+    <string name="calling_via_template" msgid="4839419581866928142">"Llamada vía <xliff:g id="PROVIDER_NAME">%s</xliff:g>"</string>
     <string name="incoming_via_template" msgid="1696993226115570960">"Recibidas a través de <xliff:g id="PROVIDER_NAME">%s</xliff:g>"</string>
     <string name="contactPhoto" msgid="4713193418046639466">"foto de contacto"</string>
     <string name="goPrivate" msgid="865837794424530980">"llamada privada"</string>
@@ -152,7 +152,6 @@
     <string name="default_notification_description" msgid="78174796906240970">"Sonido predeterminado (<xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g>)"</string>
     <string name="ringtone_title" msgid="6374978286202084684">"Tono del teléfono"</string>
     <string name="vibrate_on_ring_title" msgid="9197564612065258960">"Vibrar al sonar"</string>
-    <string name="dial_pad_autocomplete" msgid="7683489952557536398">"Autocompletar número"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Tono y vibración"</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"Administrar conferencia telefónica"</string>
     <string name="emergency_call_dialog_number_for_display" msgid="8373041754188879871">"Número de emergencia"</string>
@@ -168,4 +167,21 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> horas</item>
       <item quantity="one">1 hora</item>
     </plurals>
+    <string name="profile_photo_description" msgid="5609894336203315400">"Foto de perfil"</string>
+    <string name="camera_off_description" msgid="5689494614359429889">"Cámara apagada"</string>
+    <string name="child_number" msgid="7437330400723805538">"a través de <xliff:g id="CHILD_NUMBER">%s</xliff:g>"</string>
+    <string name="note_sent" msgid="3548700178238244595">"Nota enviada"</string>
+    <string name="person_contact_context_title" msgid="723266617256740572">"Mensajes recientes"</string>
+    <string name="business_contact_context_title" msgid="5334864183374669765">"Información de la empresa"</string>
+    <string name="distance_imperial_away" msgid="437508440176409037">"A <xliff:g id="DISTANCE">%.1f</xliff:g> mi"</string>
+    <string name="distance_metric_away" msgid="166931929505893599">"A <xliff:g id="DISTANCE">%.1f</xliff:g> km"</string>
+    <string name="display_address" msgid="7307400970699471708">"<xliff:g id="STREET_ADDRESS">%1$s</xliff:g>, <xliff:g id="LOCALITY">%2$s</xliff:g>"</string>
+    <string name="open_time_span" msgid="6709726401179550381">"<xliff:g id="OPEN_TIME">%1$s</xliff:g> - <xliff:g id="CLOSE_TIME">%2$s</xliff:g>"</string>
+    <string name="opening_hours" msgid="8524931350345922176">"<xliff:g id="EARLIER_TIMES">%1$s</xliff:g>, <xliff:g id="LATER_TIME">%2$s</xliff:g>"</string>
+    <string name="opens_tomorrow_at" msgid="9168271983241323946">"Abre mañana a las <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="opens_today_at" msgid="9011139983701379907">"Abre hoy a las <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="closes_today_at" msgid="2623384032475495193">"Cierra hoy a las <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="closed_today_at" msgid="324294933330883529">"Cerrado hoy a las <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="open_now" msgid="6439301193613349163">"Abierto ahora"</string>
+    <string name="closed_now" msgid="9175774453982778909">"Cerrado ahora"</string>
 </resources>
diff --git a/InCallUI/res/values-et-rEE/strings.xml b/InCallUI/res/values-et-rEE/strings.xml
index 6986066..3f1e6ce 100644
--- a/InCallUI/res/values-et-rEE/strings.xml
+++ b/InCallUI/res/values-et-rEE/strings.xml
@@ -49,7 +49,7 @@
     <string name="card_title_video_call" msgid="5898636679563320218">"Videokõne"</string>
     <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Video taotlemine"</string>
     <string name="card_title_video_call_error" msgid="9000555878389539225">"Videokõnet ei õnnestu ühendada"</string>
-    <string name="card_title_video_call_paused" msgid="3753261320787432731">"Videokõne (peatatud)"</string>
+    <string name="card_title_video_call_rejected" msgid="462358296694719787">"Videotaotlus lükati tagasi"</string>
     <string name="card_title_callback_number" msgid="7307938207564217293">"Teie tagasihelistamise number\n<xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Teie hädaabikõne tagasihelistamise number\n<xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="notification_dialing" msgid="2107666444937350731">"Valimine"</string>
@@ -152,7 +152,6 @@
     <string name="default_notification_description" msgid="78174796906240970">"Vaikeheli (<xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g>)"</string>
     <string name="ringtone_title" msgid="6374978286202084684">"Telefonihelin"</string>
     <string name="vibrate_on_ring_title" msgid="9197564612065258960">"Vibreerimine helina ajal"</string>
-    <string name="dial_pad_autocomplete" msgid="7683489952557536398">"Valimisklahv. autom. täitmine"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Helin ja vibratsioon"</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"Konverentskõne haldamine"</string>
     <string name="emergency_call_dialog_number_for_display" msgid="8373041754188879871">"Hädaabinumber"</string>
@@ -168,4 +167,21 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> tundi</item>
       <item quantity="one">1 tund</item>
     </plurals>
+    <string name="profile_photo_description" msgid="5609894336203315400">"Profiilifoto"</string>
+    <string name="camera_off_description" msgid="5689494614359429889">"Kaamera lülitatakse välja"</string>
+    <string name="child_number" msgid="7437330400723805538">"numbri <xliff:g id="CHILD_NUMBER">%s</xliff:g> kaudu"</string>
+    <string name="note_sent" msgid="3548700178238244595">"Märkus on saadetud"</string>
+    <string name="person_contact_context_title" msgid="723266617256740572">"Viimased sõnumid"</string>
+    <string name="business_contact_context_title" msgid="5334864183374669765">"Ettevõtte teave"</string>
+    <string name="distance_imperial_away" msgid="437508440176409037">"<xliff:g id="DISTANCE">%.1f</xliff:g> miili kaugusel"</string>
+    <string name="distance_metric_away" msgid="166931929505893599">"<xliff:g id="DISTANCE">%.1f</xliff:g> km kaugusel"</string>
+    <string name="display_address" msgid="7307400970699471708">"<xliff:g id="STREET_ADDRESS">%1$s</xliff:g>, <xliff:g id="LOCALITY">%2$s</xliff:g>"</string>
+    <string name="open_time_span" msgid="6709726401179550381">"<xliff:g id="OPEN_TIME">%1$s</xliff:g>–<xliff:g id="CLOSE_TIME">%2$s</xliff:g>"</string>
+    <string name="opening_hours" msgid="8524931350345922176">"<xliff:g id="EARLIER_TIMES">%1$s</xliff:g>, <xliff:g id="LATER_TIME">%2$s</xliff:g>"</string>
+    <string name="opens_tomorrow_at" msgid="9168271983241323946">"Avatakse homme kell <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="opens_today_at" msgid="9011139983701379907">"Avatakse täna kell <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="closes_today_at" msgid="2623384032475495193">"Suletakse kell <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="closed_today_at" msgid="324294933330883529">"Suleti täna kell <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="open_now" msgid="6439301193613349163">"Praegu avatud"</string>
+    <string name="closed_now" msgid="9175774453982778909">"Praegu suletud"</string>
 </resources>
diff --git a/InCallUI/res/values-eu-rES/strings.xml b/InCallUI/res/values-eu-rES/strings.xml
index bb4789f..ccc0916 100644
--- a/InCallUI/res/values-eu-rES/strings.xml
+++ b/InCallUI/res/values-eu-rES/strings.xml
@@ -49,7 +49,7 @@
     <string name="card_title_video_call" msgid="5898636679563320218">"Bideo-deia"</string>
     <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Bideoa eskatzen"</string>
     <string name="card_title_video_call_error" msgid="9000555878389539225">"Ezin da konektatu bideo-deia"</string>
-    <string name="card_title_video_call_paused" msgid="3753261320787432731">"Bideo-deia (pausatuta)"</string>
+    <string name="card_title_video_call_rejected" msgid="462358296694719787">"Baztertu egin da bideo-eskaera"</string>
     <string name="card_title_callback_number" msgid="7307938207564217293">"Deiak itzultzeko zenbakia:\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Larrialdi-deiak itzultzeko zenbakia:\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="notification_dialing" msgid="2107666444937350731">"Markatzen"</string>
@@ -152,7 +152,6 @@
     <string name="default_notification_description" msgid="78174796906240970">"Soinu lehenetsia (<xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g>)"</string>
     <string name="ringtone_title" msgid="6374978286202084684">"Telefonoaren tonua"</string>
     <string name="vibrate_on_ring_title" msgid="9197564612065258960">"Egin dar-dar tonua jotzean"</string>
-    <string name="dial_pad_autocomplete" msgid="7683489952557536398">"Markagailua osatzea"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Tonua eta dardara"</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"Kudeatu konferentzia-deia"</string>
     <string name="emergency_call_dialog_number_for_display" msgid="8373041754188879871">"Larrialdietarako zenbakia"</string>
@@ -168,4 +167,21 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> ordu</item>
       <item quantity="one">ordubete</item>
     </plurals>
+    <string name="profile_photo_description" msgid="5609894336203315400">"Profileko argazkia"</string>
+    <string name="camera_off_description" msgid="5689494614359429889">"Kamara desaktibatuta dago"</string>
+    <string name="child_number" msgid="7437330400723805538">"<xliff:g id="CHILD_NUMBER">%s</xliff:g> zenbakitik"</string>
+    <string name="note_sent" msgid="3548700178238244595">"Bidali da oharra"</string>
+    <string name="person_contact_context_title" msgid="723266617256740572">"Azken mezuak"</string>
+    <string name="business_contact_context_title" msgid="5334864183374669765">"Enpresaren informazioa"</string>
+    <string name="distance_imperial_away" msgid="437508440176409037">"Hemendik <xliff:g id="DISTANCE">%.1f</xliff:g> miliara"</string>
+    <string name="distance_metric_away" msgid="166931929505893599">"Hemendik <xliff:g id="DISTANCE">%.1f</xliff:g> km-ra"</string>
+    <string name="display_address" msgid="7307400970699471708">"<xliff:g id="STREET_ADDRESS">%1$s</xliff:g>, <xliff:g id="LOCALITY">%2$s</xliff:g>"</string>
+    <string name="open_time_span" msgid="6709726401179550381">"<xliff:g id="OPEN_TIME">%1$s</xliff:g> – <xliff:g id="CLOSE_TIME">%2$s</xliff:g>"</string>
+    <string name="opening_hours" msgid="8524931350345922176">"<xliff:g id="EARLIER_TIMES">%1$s</xliff:g>, <xliff:g id="LATER_TIME">%2$s</xliff:g>"</string>
+    <string name="opens_tomorrow_at" msgid="9168271983241323946">"<xliff:g id="OPEN_TIME">%s</xliff:g> da biharko irekitze-ordua"</string>
+    <string name="opens_today_at" msgid="9011139983701379907">"<xliff:g id="OPEN_TIME">%s</xliff:g> da gaurko irekitze-ordua"</string>
+    <string name="closes_today_at" msgid="2623384032475495193">"<xliff:g id="CLOSE_TIME">%s</xliff:g> da itxiera-ordua"</string>
+    <string name="closed_today_at" msgid="324294933330883529">"<xliff:g id="CLOSE_TIME">%s</xliff:g> da gaurko itxiera-ordua"</string>
+    <string name="open_now" msgid="6439301193613349163">"Irekita dago"</string>
+    <string name="closed_now" msgid="9175774453982778909">"Itxita dago"</string>
 </resources>
diff --git a/InCallUI/res/values-fa/strings.xml b/InCallUI/res/values-fa/strings.xml
index 16b5609..db8ea84 100644
--- a/InCallUI/res/values-fa/strings.xml
+++ b/InCallUI/res/values-fa/strings.xml
@@ -32,7 +32,7 @@
     <string name="pause_prompt_str" msgid="1789964702154314806">"تون‌های ارسالی\n"</string>
     <string name="send_button" msgid="4106860097497818751">"ارسال"</string>
     <string name="pause_prompt_yes" msgid="3564467212025151797">"بله"</string>
-    <string name="pause_prompt_no" msgid="6686238803236884877">"خیر"</string>
+    <string name="pause_prompt_no" msgid="6686238803236884877">"نه"</string>
     <string name="wild_prompt_str" msgid="5543521676355533577">"جایگزینی نویسه عمومی با"</string>
     <string name="caller_manage_header" msgid="3231519674734638786">"تماس کنفرانسی <xliff:g id="CONF_CALL_TIME">%s</xliff:g>"</string>
     <string name="voicemail_settings_number_label" msgid="8524164258691887790">"شماره پست صوتی"</string>
@@ -49,7 +49,7 @@
     <string name="card_title_video_call" msgid="5898636679563320218">"تماس ویدیویی"</string>
     <string name="card_title_video_call_requesting" msgid="4587504939739340937">"درحال درخواست تماس ویدیویی"</string>
     <string name="card_title_video_call_error" msgid="9000555878389539225">"اتصال تماس ویدیویی ممکن نیست"</string>
-    <string name="card_title_video_call_paused" msgid="3753261320787432731">"تماس ویدیویی (موقتاً متوقف شد)"</string>
+    <string name="card_title_video_call_rejected" msgid="462358296694719787">"درخواست ویدیو رد شد"</string>
     <string name="card_title_callback_number" msgid="7307938207564217293">"شماره پاسخ تماس شما\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"شماره پاسخ تماس اضطراری شما\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="notification_dialing" msgid="2107666444937350731">"شماره‌گیری"</string>
@@ -74,7 +74,7 @@
     <string name="notification_action_end_call" msgid="6069460915123531620">"قطع تماس"</string>
     <string name="notification_action_answer_video" msgid="7809271910870211729">"ویدیو"</string>
     <string name="notification_action_answer_voice" msgid="1770796916369437773">"صدا"</string>
-    <string name="notification_action_accept" msgid="2898609801209468429">"پذیرش"</string>
+    <string name="notification_action_accept" msgid="2898609801209468429">"پذیرفتن"</string>
     <string name="notification_action_dismiss" msgid="2679969397930852858">"ردکردن"</string>
     <string name="notification_missedCall_call_back" msgid="2684890353590890187">"پاسخ تماس"</string>
     <string name="notification_missedCall_message" msgid="3049928912736917988">"پیام"</string>
@@ -96,7 +96,7 @@
     <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"در حال روشن کردن رادیو..."</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"سرویسی در دسترس نیست. دوباره امتحان کنید..."</string>
     <string name="dial_emergency_error" msgid="1509085166367420355">"نمی‌توانید تماس بگیرید. <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> یک شماره اضطراری نیست."</string>
-    <string name="dial_emergency_empty_error" msgid="9130194953830414638">"نمی توانید تماس بگیرید. یک شماره اضطراری را شماره‌گیری کنید."</string>
+    <string name="dial_emergency_empty_error" msgid="9130194953830414638">"نمی‌ توانید تماس بگیرید. یک شماره اضطراری را شماره‌گیری کنید."</string>
     <string name="dialerKeyboardHintText" msgid="9192914825413747792">"استفاده از صفحه‌کلید برای شماره گیری"</string>
     <string name="onscreenHoldText_unselected" msgid="7092499303393171276">"نگه داشتن تماس"</string>
     <string name="onscreenHoldText_selected" msgid="7127901498507384249">"از سرگیری تماس"</string>
@@ -112,7 +112,7 @@
     <string name="onscreenVideoCallText" msgid="4800924186056115442">"تماس ویدیویی"</string>
     <string name="onscreenChangeToVoiceText" msgid="5311407863653867937">"تغییر به تماس صوتی"</string>
     <string name="onscreenSwitchCameraText" msgid="5324543493442787798">"تغییر دوربین"</string>
-    <string name="onscreenPauseVideoText" msgid="5663965924921429203">"توقف موقت ویدیو"</string>
+    <string name="onscreenPauseVideoText" msgid="5663965924921429203">"مکث ویدیو"</string>
     <string name="onscreenOverflowText" msgid="2702376562345723132">"گزینه‌های بیشتر"</string>
     <string name="player_started" msgid="6046262510243983589">"پخش‌کننده راه‌اندازی شد"</string>
     <string name="player_stopped" msgid="8856926759436364963">"پخش‌کننده متوقف شد"</string>
@@ -126,22 +126,22 @@
     <string name="calling_via_template" msgid="4839419581866928142">"تماس از طریق <xliff:g id="PROVIDER_NAME">%s</xliff:g>"</string>
     <string name="incoming_via_template" msgid="1696993226115570960">"تماس‌های ورودی از طریق <xliff:g id="PROVIDER_NAME">%s</xliff:g>"</string>
     <string name="contactPhoto" msgid="4713193418046639466">"عکس مخاطب"</string>
-    <string name="goPrivate" msgid="865837794424530980">"برو به خصوصی"</string>
+    <string name="goPrivate" msgid="865837794424530980">"رفتن به خصوصی"</string>
     <string name="selectContact" msgid="781975788478987237">"انتخاب حساب"</string>
     <string name="respond_via_sms_custom_message" msgid="6158880869935281078">"نوشتن پاسخ خود…"</string>
     <string name="custom_message_cancel" msgid="7516406059429609296">"لغو"</string>
     <string name="custom_message_send" msgid="5795754217085747742">"ارسال"</string>
     <string name="description_target_answer" msgid="7205604197797472471">"پاسخ"</string>
     <string name="description_target_send_sms" msgid="2098326025587950144">"ارسال پیامک"</string>
-    <string name="description_target_decline" msgid="4789834364389731957">"عدم پذیرش"</string>
+    <string name="description_target_decline" msgid="4789834364389731957">"نپذیرفتن"</string>
     <string name="description_target_answer_video_call" msgid="3495965588512395026">"پاسخ به صورت تماس ویدیویی"</string>
     <string name="description_target_answer_audio_call" msgid="8396296303320994450">"پاسخ به صورت تماس صوتی"</string>
-    <string name="description_target_accept_upgrade_to_video_request" msgid="2894072808324604062">"پذیرش درخواست ویدیو"</string>
-    <string name="description_target_decline_upgrade_to_video_request" msgid="4093888612888538776">"رد کردن درخواست ویدیو"</string>
-    <string name="description_target_accept_upgrade_to_video_transmit_request" msgid="5311037889642077468">"پذیرش درخواست ارسال ویدیو"</string>
-    <string name="description_target_decline_upgrade_to_video_transmit_request" msgid="3636108065510415975">"رد کردن درخواست انتقال ویدیو"</string>
-    <string name="description_target_accept_upgrade_to_video_receive_request" msgid="8668058323593087912">"پذیرش درخواست دریافت ویدیو"</string>
-    <string name="description_target_decline_upgrade_to_video_receive_request" msgid="2355776509656298367">"رد کردن درخواست دریافت ویدیو"</string>
+    <string name="description_target_accept_upgrade_to_video_request" msgid="2894072808324604062">"پذیرفتن درخواست ویدیو"</string>
+    <string name="description_target_decline_upgrade_to_video_request" msgid="4093888612888538776">"نپذیرفتن درخواست ویدیو"</string>
+    <string name="description_target_accept_upgrade_to_video_transmit_request" msgid="5311037889642077468">"پذیرفتن درخواست ارسال ویدیو"</string>
+    <string name="description_target_decline_upgrade_to_video_transmit_request" msgid="3636108065510415975">"نپذیرفتن درخواست انتقال ویدیو"</string>
+    <string name="description_target_accept_upgrade_to_video_receive_request" msgid="8668058323593087912">"پذیرفتن درخواست دریافت ویدیو"</string>
+    <string name="description_target_decline_upgrade_to_video_receive_request" msgid="2355776509656298367">"نپذیرفتن درخواست دریافت ویدیو"</string>
     <string name="description_direction_up" msgid="4441409581444516690">"برای <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> به بالا بلغزانید."</string>
     <string name="description_direction_left" msgid="7129873384376533287">"برای <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> به چپ بلغزانید."</string>
     <string name="description_direction_right" msgid="2122584234531957308">"برای <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> به راست بلغزانید."</string>
@@ -152,7 +152,6 @@
     <string name="default_notification_description" msgid="78174796906240970">"صدای پیش‌فرض (<xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g>)"</string>
     <string name="ringtone_title" msgid="6374978286202084684">"آهنگ زنگ تلفن"</string>
     <string name="vibrate_on_ring_title" msgid="9197564612065258960">"ارتعاش هنگام زنگ زدن"</string>
-    <string name="dial_pad_autocomplete" msgid="7683489952557536398">"تکمیل خودکار صفحه شماره‌گیری"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"آهنگ‌ زنگ و لرزش"</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"مدیریت تماس کنفرانس"</string>
     <string name="emergency_call_dialog_number_for_display" msgid="8373041754188879871">"شماره اضطراری"</string>
@@ -168,4 +167,21 @@
       <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> ساعت</item>
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> ساعت</item>
     </plurals>
+    <string name="profile_photo_description" msgid="5609894336203315400">"عکس نمایه"</string>
+    <string name="camera_off_description" msgid="5689494614359429889">"دوربین خاموش"</string>
+    <string name="child_number" msgid="7437330400723805538">"از طریق <xliff:g id="CHILD_NUMBER">%s</xliff:g>"</string>
+    <string name="note_sent" msgid="3548700178238244595">"یادداشت ارسال شد"</string>
+    <string name="person_contact_context_title" msgid="723266617256740572">"پیام‌های جدید"</string>
+    <string name="business_contact_context_title" msgid="5334864183374669765">"اطلاعات کسب و کار"</string>
+    <string name="distance_imperial_away" msgid="437508440176409037">"<xliff:g id="DISTANCE">%.1f</xliff:g> مایل دورتر"</string>
+    <string name="distance_metric_away" msgid="166931929505893599">"<xliff:g id="DISTANCE">%.1f</xliff:g> کیلومتر دورتر"</string>
+    <string name="display_address" msgid="7307400970699471708">"<xliff:g id="STREET_ADDRESS">%1$s</xliff:g>،‫ <xliff:g id="LOCALITY">%2$s</xliff:g>"</string>
+    <string name="open_time_span" msgid="6709726401179550381">"<xliff:g id="OPEN_TIME">%1$s</xliff:g> تا <xliff:g id="CLOSE_TIME">%2$s</xliff:g>"</string>
+    <string name="opening_hours" msgid="8524931350345922176">"<xliff:g id="EARLIER_TIMES">%1$s</xliff:g>، <xliff:g id="LATER_TIME">%2$s</xliff:g>"</string>
+    <string name="opens_tomorrow_at" msgid="9168271983241323946">"فردا ساعت <xliff:g id="OPEN_TIME">%s</xliff:g> باز می‌شود"</string>
+    <string name="opens_today_at" msgid="9011139983701379907">"امروز ساعت <xliff:g id="OPEN_TIME">%s</xliff:g> باز می‌شود"</string>
+    <string name="closes_today_at" msgid="2623384032475495193">"ساعت <xliff:g id="CLOSE_TIME">%s</xliff:g> بسته می‌شود"</string>
+    <string name="closed_today_at" msgid="324294933330883529">"امروز ساعت <xliff:g id="CLOSE_TIME">%s</xliff:g> بسته شد"</string>
+    <string name="open_now" msgid="6439301193613349163">"اکنون باز است"</string>
+    <string name="closed_now" msgid="9175774453982778909">"اکنون بسته است"</string>
 </resources>
diff --git a/InCallUI/res/values-fi/strings.xml b/InCallUI/res/values-fi/strings.xml
index 18737e8..7aebff4 100644
--- a/InCallUI/res/values-fi/strings.xml
+++ b/InCallUI/res/values-fi/strings.xml
@@ -49,7 +49,7 @@
     <string name="card_title_video_call" msgid="5898636679563320218">"Videopuhelu"</string>
     <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Videota pyydetään"</string>
     <string name="card_title_video_call_error" msgid="9000555878389539225">"Videopuhelua ei voi soittaa"</string>
-    <string name="card_title_video_call_paused" msgid="3753261320787432731">"Videopuhelu (keskeytetty)"</string>
+    <string name="card_title_video_call_rejected" msgid="462358296694719787">"Videopyyntö hylättiin."</string>
     <string name="card_title_callback_number" msgid="7307938207564217293">"Takaisinsoittonumerosi\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Hätäpuhelujen takaisinsoittonumero\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="notification_dialing" msgid="2107666444937350731">"Soitetaan"</string>
@@ -76,7 +76,7 @@
     <string name="notification_action_answer_voice" msgid="1770796916369437773">"Äänipuhelu"</string>
     <string name="notification_action_accept" msgid="2898609801209468429">"Hyväksy"</string>
     <string name="notification_action_dismiss" msgid="2679969397930852858">"Hylkää"</string>
-    <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Soita takaisin"</string>
+    <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Soita"</string>
     <string name="notification_missedCall_message" msgid="3049928912736917988">"Viesti"</string>
     <string name="incall_error_power_off" msgid="6550191216405193368">"Poista lentokonetila käytöstä ennen puhelun soittamista."</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"Ei rekisteröity verkkoon."</string>
@@ -123,7 +123,7 @@
     <string name="voicemail_settings" msgid="72448049107749316">"Asetukset"</string>
     <string name="voicemail_number_not_set" msgid="6724904736891087856">"&lt;Ei asetettu&gt;"</string>
     <string name="other_settings" msgid="3672912580359716394">"Muut puheluasetukset"</string>
-    <string name="calling_via_template" msgid="4839419581866928142">"Käytetään operaattoria <xliff:g id="PROVIDER_NAME">%s</xliff:g>"</string>
+    <string name="calling_via_template" msgid="4839419581866928142">"Operaattorilla <xliff:g id="PROVIDER_NAME">%s</xliff:g>"</string>
     <string name="incoming_via_template" msgid="1696993226115570960">"Saapuva puhelu (<xliff:g id="PROVIDER_NAME">%s</xliff:g>)"</string>
     <string name="contactPhoto" msgid="4713193418046639466">"yhteyshenkilön valokuva"</string>
     <string name="goPrivate" msgid="865837794424530980">"muuta yksityiseksi"</string>
@@ -152,7 +152,6 @@
     <string name="default_notification_description" msgid="78174796906240970">"Oletusääni (<xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g>)"</string>
     <string name="ringtone_title" msgid="6374978286202084684">"Puhelimen soittoääni"</string>
     <string name="vibrate_on_ring_title" msgid="9197564612065258960">"Käytä värinää"</string>
-    <string name="dial_pad_autocomplete" msgid="7683489952557536398">"Näppäimistön täydennys"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Soittoääni ja värinä"</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"Hallinnoi puhelinneuvottelua"</string>
     <string name="emergency_call_dialog_number_for_display" msgid="8373041754188879871">"Hätänumero"</string>
@@ -168,4 +167,21 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> tuntia</item>
       <item quantity="one">1 tunti</item>
     </plurals>
+    <string name="profile_photo_description" msgid="5609894336203315400">"Profiilikuva"</string>
+    <string name="camera_off_description" msgid="5689494614359429889">"Kamera on pois käytöstä."</string>
+    <string name="child_number" msgid="7437330400723805538">"nron <xliff:g id="CHILD_NUMBER">%s</xliff:g> kautta"</string>
+    <string name="note_sent" msgid="3548700178238244595">"Muistiinpano lähetettiin."</string>
+    <string name="person_contact_context_title" msgid="723266617256740572">"Viimeisimmät viestit"</string>
+    <string name="business_contact_context_title" msgid="5334864183374669765">"Yrityksen tiedot"</string>
+    <string name="distance_imperial_away" msgid="437508440176409037">"Etäisyys: <xliff:g id="DISTANCE">%.1f</xliff:g> mailia"</string>
+    <string name="distance_metric_away" msgid="166931929505893599">"Etäisyys: <xliff:g id="DISTANCE">%.1f</xliff:g> kilometriä"</string>
+    <string name="display_address" msgid="7307400970699471708">"<xliff:g id="STREET_ADDRESS">%1$s</xliff:g>, <xliff:g id="LOCALITY">%2$s</xliff:g>"</string>
+    <string name="open_time_span" msgid="6709726401179550381">"<xliff:g id="OPEN_TIME">%1$s</xliff:g>–<xliff:g id="CLOSE_TIME">%2$s</xliff:g>"</string>
+    <string name="opening_hours" msgid="8524931350345922176">"<xliff:g id="EARLIER_TIMES">%1$s</xliff:g>, <xliff:g id="LATER_TIME">%2$s</xliff:g>"</string>
+    <string name="opens_tomorrow_at" msgid="9168271983241323946">"Aukeaa huomenna kello <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="opens_today_at" msgid="9011139983701379907">"Aukeaa tänään kello <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="closes_today_at" msgid="2623384032475495193">"Sulkeutuu tänään kello <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="closed_today_at" msgid="324294933330883529">"Sulkeutui tänään kello <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="open_now" msgid="6439301193613349163">"Auki nyt"</string>
+    <string name="closed_now" msgid="9175774453982778909">"Suljettu nyt"</string>
 </resources>
diff --git a/InCallUI/res/values-fr-rCA/strings.xml b/InCallUI/res/values-fr-rCA/strings.xml
index 7451353..1441d3f 100644
--- a/InCallUI/res/values-fr-rCA/strings.xml
+++ b/InCallUI/res/values-fr-rCA/strings.xml
@@ -49,7 +49,7 @@
     <string name="card_title_video_call" msgid="5898636679563320218">"Appel vidéo"</string>
     <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Demande de vidéo en cours"</string>
     <string name="card_title_video_call_error" msgid="9000555878389539225">"Impossible de connecter l\'appel vidéo"</string>
-    <string name="card_title_video_call_paused" msgid="3753261320787432731">"Appel vidéo (en pause)"</string>
+    <string name="card_title_video_call_rejected" msgid="462358296694719787">"Demande vidéo refusée"</string>
     <string name="card_title_callback_number" msgid="7307938207564217293">"Votre numéro de rappel :\n<xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Votre numéro de rappel d\'urgence :\n<xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="notification_dialing" msgid="2107666444937350731">"Numérotation en cours…"</string>
@@ -70,7 +70,7 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"Numéro de messagerie vocale inconnu"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"Aucun service"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"Réseau sélectionné (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) non disponible"</string>
-    <string name="notification_action_answer" msgid="6700362365135365143">"Réponse"</string>
+    <string name="notification_action_answer" msgid="6700362365135365143">"Répondre"</string>
     <string name="notification_action_end_call" msgid="6069460915123531620">"Raccrocher"</string>
     <string name="notification_action_answer_video" msgid="7809271910870211729">"Vidéo"</string>
     <string name="notification_action_answer_voice" msgid="1770796916369437773">"Vocal"</string>
@@ -152,7 +152,6 @@
     <string name="default_notification_description" msgid="78174796906240970">"Sonnerie par défaut (<xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g>)"</string>
     <string name="ringtone_title" msgid="6374978286202084684">"Sonnerie du téléphone"</string>
     <string name="vibrate_on_ring_title" msgid="9197564612065258960">"Mode Vibreur lorsque le tél. sonne"</string>
-    <string name="dial_pad_autocomplete" msgid="7683489952557536398">"Suggestions automatiques pour le pavé numérique"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Sonnerie et vibreur"</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"Gérer la conférence téléphonique"</string>
     <string name="emergency_call_dialog_number_for_display" msgid="8373041754188879871">"Numéro d\'urgence"</string>
@@ -168,4 +167,21 @@
       <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> heure</item>
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> heures</item>
     </plurals>
+    <string name="profile_photo_description" msgid="5609894336203315400">"Photo de profil"</string>
+    <string name="camera_off_description" msgid="5689494614359429889">"Appareil photo désactiver"</string>
+    <string name="child_number" msgid="7437330400723805538">"au moyen du <xliff:g id="CHILD_NUMBER">%s</xliff:g>"</string>
+    <string name="note_sent" msgid="3548700178238244595">"Note envoyée"</string>
+    <string name="person_contact_context_title" msgid="723266617256740572">"Messages récents"</string>
+    <string name="business_contact_context_title" msgid="5334864183374669765">"Renseignements sur l\'entreprise"</string>
+    <string name="distance_imperial_away" msgid="437508440176409037">"À <xliff:g id="DISTANCE">%.1f</xliff:g> mi"</string>
+    <string name="distance_metric_away" msgid="166931929505893599">"À <xliff:g id="DISTANCE">%.1f</xliff:g> km"</string>
+    <string name="display_address" msgid="7307400970699471708">"<xliff:g id="STREET_ADDRESS">%1$s</xliff:g>, <xliff:g id="LOCALITY">%2$s</xliff:g>"</string>
+    <string name="open_time_span" msgid="6709726401179550381">"<xliff:g id="OPEN_TIME">%1$s</xliff:g> à <xliff:g id="CLOSE_TIME">%2$s</xliff:g>"</string>
+    <string name="opening_hours" msgid="8524931350345922176">"<xliff:g id="EARLIER_TIMES">%1$s</xliff:g>, <xliff:g id="LATER_TIME">%2$s</xliff:g>"</string>
+    <string name="opens_tomorrow_at" msgid="9168271983241323946">"Ouvre demain à <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="opens_today_at" msgid="9011139983701379907">"Ouvre aujourd\'hui à <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="closes_today_at" msgid="2623384032475495193">"Ferme à <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="closed_today_at" msgid="324294933330883529">"A fermé aujourd\'hui à <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="open_now" msgid="6439301193613349163">"Ouvert"</string>
+    <string name="closed_now" msgid="9175774453982778909">"Fermé"</string>
 </resources>
diff --git a/InCallUI/res/values-fr/strings.xml b/InCallUI/res/values-fr/strings.xml
index 22c0545..7883bdf 100644
--- a/InCallUI/res/values-fr/strings.xml
+++ b/InCallUI/res/values-fr/strings.xml
@@ -49,7 +49,7 @@
     <string name="card_title_video_call" msgid="5898636679563320218">"Appel vidéo"</string>
     <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Demande de vidéo en cours…"</string>
     <string name="card_title_video_call_error" msgid="9000555878389539225">"Impossible d\'établir la connexion de l\'appel vidéo."</string>
-    <string name="card_title_video_call_paused" msgid="3753261320787432731">"Appel vidéo (interrompu)"</string>
+    <string name="card_title_video_call_rejected" msgid="462358296694719787">"Demande d\'appel vidéo refusée"</string>
     <string name="card_title_callback_number" msgid="7307938207564217293">"Votre numéro de rappel\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Votre numéro de rappel d\'urgence\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="notification_dialing" msgid="2107666444937350731">"Numérotation en cours…"</string>
@@ -152,7 +152,6 @@
     <string name="default_notification_description" msgid="78174796906240970">"Sonnerie par défaut (<xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g>)"</string>
     <string name="ringtone_title" msgid="6374978286202084684">"Sonnerie du téléphone"</string>
     <string name="vibrate_on_ring_title" msgid="9197564612065258960">"Mode Vibreur lorsque le tél. sonne"</string>
-    <string name="dial_pad_autocomplete" msgid="7683489952557536398">"Clavier à saisie semi-automatique"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Sonnerie et vibreur"</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"Gérer la conférence téléphonique"</string>
     <string name="emergency_call_dialog_number_for_display" msgid="8373041754188879871">"Numéro d\'urgence"</string>
@@ -168,4 +167,21 @@
       <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> heure</item>
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> heures</item>
     </plurals>
+    <string name="profile_photo_description" msgid="5609894336203315400">"Photo du profil"</string>
+    <string name="camera_off_description" msgid="5689494614359429889">"Caméra désactivée"</string>
+    <string name="child_number" msgid="7437330400723805538">"via le <xliff:g id="CHILD_NUMBER">%s</xliff:g>"</string>
+    <string name="note_sent" msgid="3548700178238244595">"La note a bien été envoyée."</string>
+    <string name="person_contact_context_title" msgid="723266617256740572">"Messages récents"</string>
+    <string name="business_contact_context_title" msgid="5334864183374669765">"Informations sur l\'établissement"</string>
+    <string name="distance_imperial_away" msgid="437508440176409037">"À <xliff:g id="DISTANCE">%.1f</xliff:g> mi"</string>
+    <string name="distance_metric_away" msgid="166931929505893599">"À <xliff:g id="DISTANCE">%.1f</xliff:g> km"</string>
+    <string name="display_address" msgid="7307400970699471708">"<xliff:g id="STREET_ADDRESS">%1$s</xliff:g>, <xliff:g id="LOCALITY">%2$s</xliff:g>"</string>
+    <string name="open_time_span" msgid="6709726401179550381">"<xliff:g id="OPEN_TIME">%1$s</xliff:g> – <xliff:g id="CLOSE_TIME">%2$s</xliff:g>"</string>
+    <string name="opening_hours" msgid="8524931350345922176">"<xliff:g id="EARLIER_TIMES">%1$s</xliff:g>, <xliff:g id="LATER_TIME">%2$s</xliff:g>"</string>
+    <string name="opens_tomorrow_at" msgid="9168271983241323946">"Ouvre demain à <xliff:g id="OPEN_TIME">%s</xliff:g>."</string>
+    <string name="opens_today_at" msgid="9011139983701379907">"Ouvre aujourd\'hui à <xliff:g id="OPEN_TIME">%s</xliff:g>."</string>
+    <string name="closes_today_at" msgid="2623384032475495193">"Ferme à <xliff:g id="CLOSE_TIME">%s</xliff:g>."</string>
+    <string name="closed_today_at" msgid="324294933330883529">"Fermé aujourd\'hui à <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="open_now" msgid="6439301193613349163">"Ouvert"</string>
+    <string name="closed_now" msgid="9175774453982778909">"Fermé"</string>
 </resources>
diff --git a/InCallUI/res/values-gl-rES/strings.xml b/InCallUI/res/values-gl-rES/strings.xml
index 55e0719..7a17f02 100644
--- a/InCallUI/res/values-gl-rES/strings.xml
+++ b/InCallUI/res/values-gl-rES/strings.xml
@@ -49,7 +49,7 @@
     <string name="card_title_video_call" msgid="5898636679563320218">"Videochamada"</string>
     <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Solicitando vídeo"</string>
     <string name="card_title_video_call_error" msgid="9000555878389539225">"Non se pode conectar a videochamada"</string>
-    <string name="card_title_video_call_paused" msgid="3753261320787432731">"Videochamada (pausada)"</string>
+    <string name="card_title_video_call_rejected" msgid="462358296694719787">"Rexeitouse a solicitude de chamada vídeo"</string>
     <string name="card_title_callback_number" msgid="7307938207564217293">"Número de devolución de chamada\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Número de devolución de chamada de emerxencia\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="notification_dialing" msgid="2107666444937350731">"Marcación"</string>
@@ -123,7 +123,7 @@
     <string name="voicemail_settings" msgid="72448049107749316">"Configuración"</string>
     <string name="voicemail_number_not_set" msgid="6724904736891087856">"&lt;Sen configurar&gt;"</string>
     <string name="other_settings" msgid="3672912580359716394">"Outras configuracións de chamada"</string>
-    <string name="calling_via_template" msgid="4839419581866928142">"Chamando a través de <xliff:g id="PROVIDER_NAME">%s</xliff:g>"</string>
+    <string name="calling_via_template" msgid="4839419581866928142">"Chamada mediante <xliff:g id="PROVIDER_NAME">%s</xliff:g>"</string>
     <string name="incoming_via_template" msgid="1696993226115570960">"Chamadas entrantes a través de <xliff:g id="PROVIDER_NAME">%s</xliff:g>"</string>
     <string name="contactPhoto" msgid="4713193418046639466">"foto do contacto"</string>
     <string name="goPrivate" msgid="865837794424530980">"activar o modo privado"</string>
@@ -152,7 +152,6 @@
     <string name="default_notification_description" msgid="78174796906240970">"Son predeterminado (<xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g>)"</string>
     <string name="ringtone_title" msgid="6374978286202084684">"Ton de chamada do teléfono"</string>
     <string name="vibrate_on_ring_title" msgid="9197564612065258960">"Vibrar ao soar"</string>
-    <string name="dial_pad_autocomplete" msgid="7683489952557536398">"Completar teclado de marcación"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Ton de chamada e vibración"</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"Xestionar conferencia telefónica"</string>
     <string name="emergency_call_dialog_number_for_display" msgid="8373041754188879871">"Número de emerxencia"</string>
@@ -168,4 +167,21 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> horas</item>
       <item quantity="one">Unha hora</item>
     </plurals>
+    <string name="profile_photo_description" msgid="5609894336203315400">"Foto de perfil"</string>
+    <string name="camera_off_description" msgid="5689494614359429889">"Cámara desactivada"</string>
+    <string name="child_number" msgid="7437330400723805538">"a través do <xliff:g id="CHILD_NUMBER">%s</xliff:g>"</string>
+    <string name="note_sent" msgid="3548700178238244595">"Enviouse a nota"</string>
+    <string name="person_contact_context_title" msgid="723266617256740572">"Mensaxes recentes"</string>
+    <string name="business_contact_context_title" msgid="5334864183374669765">"Información da empresa"</string>
+    <string name="distance_imperial_away" msgid="437508440176409037">"A <xliff:g id="DISTANCE">%.1f</xliff:g> mi de distancia"</string>
+    <string name="distance_metric_away" msgid="166931929505893599">"A <xliff:g id="DISTANCE">%.1f</xliff:g> km de distancia"</string>
+    <string name="display_address" msgid="7307400970699471708">"<xliff:g id="STREET_ADDRESS">%1$s</xliff:g>, <xliff:g id="LOCALITY">%2$s</xliff:g>"</string>
+    <string name="open_time_span" msgid="6709726401179550381">"<xliff:g id="OPEN_TIME">%1$s</xliff:g> - <xliff:g id="CLOSE_TIME">%2$s</xliff:g>"</string>
+    <string name="opening_hours" msgid="8524931350345922176">"<xliff:g id="EARLIER_TIMES">%1$s</xliff:g>, <xliff:g id="LATER_TIME">%2$s</xliff:g>"</string>
+    <string name="opens_tomorrow_at" msgid="9168271983241323946">"Abre mañá ás <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="opens_today_at" msgid="9011139983701379907">"Abre hoxe ás <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="closes_today_at" msgid="2623384032475495193">"Pecha ás <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="closed_today_at" msgid="324294933330883529">"Pechou hoxe ás <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="open_now" msgid="6439301193613349163">"Aberto agora"</string>
+    <string name="closed_now" msgid="9175774453982778909">"Pechado agora"</string>
 </resources>
diff --git a/InCallUI/res/values-gu-rIN/strings.xml b/InCallUI/res/values-gu-rIN/strings.xml
index 2901780..77a3e8c 100644
--- a/InCallUI/res/values-gu-rIN/strings.xml
+++ b/InCallUI/res/values-gu-rIN/strings.xml
@@ -49,7 +49,7 @@
     <string name="card_title_video_call" msgid="5898636679563320218">"વિડિઓ કૉલ"</string>
     <string name="card_title_video_call_requesting" msgid="4587504939739340937">"વિડિઓની વિનંતી કરી રહ્યાં છે"</string>
     <string name="card_title_video_call_error" msgid="9000555878389539225">"વિડિઓ કૉલ કનેક્ટ કરી શકાતો નથી"</string>
-    <string name="card_title_video_call_paused" msgid="3753261320787432731">"વિડિઓ કૉલ (થોભાવ્યો)"</string>
+    <string name="card_title_video_call_rejected" msgid="462358296694719787">"વિડિઓ વિનંતી નકારી"</string>
     <string name="card_title_callback_number" msgid="7307938207564217293">"તમારો કૉલબેક નંબર\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"તમારો કટોકટીનો કૉલબેક નંબર\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="notification_dialing" msgid="2107666444937350731">"ડાયલ કરી રહ્યાં છે"</string>
@@ -152,7 +152,6 @@
     <string name="default_notification_description" msgid="78174796906240970">"ડિફોલ્ટ ધ્વનિ (<xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g>)"</string>
     <string name="ringtone_title" msgid="6374978286202084684">"ફોન રિંગટોન"</string>
     <string name="vibrate_on_ring_title" msgid="9197564612065258960">"જ્યારે રિંગ કરે ત્યારે વાઇબ્રેટ કરો"</string>
-    <string name="dial_pad_autocomplete" msgid="7683489952557536398">"ડાયલપેડ સ્વતઃપૂર્ણ"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"રિંગટોન અને વાઇબ્રેટ"</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"કોન્ફરન્સ કૉલ સંચાલિત કરો"</string>
     <string name="emergency_call_dialog_number_for_display" msgid="8373041754188879871">"કટોકટીનો નંબર"</string>
@@ -168,4 +167,21 @@
       <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> કલાક</item>
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> કલાક</item>
     </plurals>
+    <string name="profile_photo_description" msgid="5609894336203315400">"પ્રોફાઇલ ફોટો"</string>
+    <string name="camera_off_description" msgid="5689494614359429889">"કૅમેરો બંધ"</string>
+    <string name="child_number" msgid="7437330400723805538">"<xliff:g id="CHILD_NUMBER">%s</xliff:g> મારફતે"</string>
+    <string name="note_sent" msgid="3548700178238244595">"નોંધ મોકલી"</string>
+    <string name="person_contact_context_title" msgid="723266617256740572">"તાજેતરનાં સંદેશા"</string>
+    <string name="business_contact_context_title" msgid="5334864183374669765">"વ્યવસાયની માહિતી"</string>
+    <string name="distance_imperial_away" msgid="437508440176409037">"<xliff:g id="DISTANCE">%.1f</xliff:g> માઇલ દૂર"</string>
+    <string name="distance_metric_away" msgid="166931929505893599">"<xliff:g id="DISTANCE">%.1f</xliff:g> કિમી દૂર"</string>
+    <string name="display_address" msgid="7307400970699471708">"<xliff:g id="STREET_ADDRESS">%1$s</xliff:g>, <xliff:g id="LOCALITY">%2$s</xliff:g>"</string>
+    <string name="open_time_span" msgid="6709726401179550381">"<xliff:g id="OPEN_TIME">%1$s</xliff:g> - <xliff:g id="CLOSE_TIME">%2$s</xliff:g>"</string>
+    <string name="opening_hours" msgid="8524931350345922176">"<xliff:g id="EARLIER_TIMES">%1$s</xliff:g>, <xliff:g id="LATER_TIME">%2$s</xliff:g>"</string>
+    <string name="opens_tomorrow_at" msgid="9168271983241323946">"આવતીકાલે <xliff:g id="OPEN_TIME">%s</xliff:g> વાગ્યે ખુલશે"</string>
+    <string name="opens_today_at" msgid="9011139983701379907">"આજે <xliff:g id="OPEN_TIME">%s</xliff:g> વાગ્યે ખુલશે"</string>
+    <string name="closes_today_at" msgid="2623384032475495193">"<xliff:g id="CLOSE_TIME">%s</xliff:g> વાગ્યે બંધ થશે"</string>
+    <string name="closed_today_at" msgid="324294933330883529">"આજે <xliff:g id="CLOSE_TIME">%s</xliff:g> વાગ્યે બંધ થયેલું"</string>
+    <string name="open_now" msgid="6439301193613349163">"હમણાં ખોલો"</string>
+    <string name="closed_now" msgid="9175774453982778909">"અત્યારે બંધ કર્યું"</string>
 </resources>
diff --git a/InCallUI/res/values-hi/strings.xml b/InCallUI/res/values-hi/strings.xml
index 1da6f7a..aa9d3de 100644
--- a/InCallUI/res/values-hi/strings.xml
+++ b/InCallUI/res/values-hi/strings.xml
@@ -49,7 +49,7 @@
     <string name="card_title_video_call" msgid="5898636679563320218">"वीडियो कॉल"</string>
     <string name="card_title_video_call_requesting" msgid="4587504939739340937">"वीडियो का अनुरोध किया जा रहा है"</string>
     <string name="card_title_video_call_error" msgid="9000555878389539225">"वीडियो कॉल कनेक्‍ट नहीं किया जा सकता"</string>
-    <string name="card_title_video_call_paused" msgid="3753261320787432731">"वीडियो काॅल (रोका गया)"</string>
+    <string name="card_title_video_call_rejected" msgid="462358296694719787">"वीडियो अनुरोध अस्वीकार किया गया"</string>
     <string name="card_title_callback_number" msgid="7307938207564217293">"आपका कॉलबैक नंबर\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"आपका आपातकालीन कॉलबैक नंबर\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="notification_dialing" msgid="2107666444937350731">"डायल हो रहा है"</string>
@@ -123,7 +123,7 @@
     <string name="voicemail_settings" msgid="72448049107749316">"सेटअप"</string>
     <string name="voicemail_number_not_set" msgid="6724904736891087856">"&lt;सेट नहीं है&gt;"</string>
     <string name="other_settings" msgid="3672912580359716394">"अन्य कॉल सेटिंग"</string>
-    <string name="calling_via_template" msgid="4839419581866928142">"<xliff:g id="PROVIDER_NAME">%s</xliff:g> के माध्यम से कॉल किया जा रहा है"</string>
+    <string name="calling_via_template" msgid="4839419581866928142">"कॉल <xliff:g id="PROVIDER_NAME">%s</xliff:g> से जा रही है"</string>
     <string name="incoming_via_template" msgid="1696993226115570960">"<xliff:g id="PROVIDER_NAME">%s</xliff:g> की ओर से इनकमिंग"</string>
     <string name="contactPhoto" msgid="4713193418046639466">"संपर्क का फ़ोटो"</string>
     <string name="goPrivate" msgid="865837794424530980">"निजी हो जाएं"</string>
@@ -152,7 +152,6 @@
     <string name="default_notification_description" msgid="78174796906240970">"डिफ़ॉल्ट ध्वनि (<xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g>)"</string>
     <string name="ringtone_title" msgid="6374978286202084684">"फ़ोन रिंगटोन"</string>
     <string name="vibrate_on_ring_title" msgid="9197564612065258960">"रिंग आने पर कंपन करें"</string>
-    <string name="dial_pad_autocomplete" msgid="7683489952557536398">"डायलपैड स्‍वत: पूर्ण"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"रिंगटोन और कंपन"</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"कॉन्फ़्रेंस कॉल प्रबंधित करें"</string>
     <string name="emergency_call_dialog_number_for_display" msgid="8373041754188879871">"आपातकालीन नंबर"</string>
@@ -168,4 +167,21 @@
       <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> घंटे</item>
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> घंटे</item>
     </plurals>
+    <string name="profile_photo_description" msgid="5609894336203315400">"प्रोफ़ाइल फ़ोटो"</string>
+    <string name="camera_off_description" msgid="5689494614359429889">"कैमरा बंद है"</string>
+    <string name="child_number" msgid="7437330400723805538">"<xliff:g id="CHILD_NUMBER">%s</xliff:g> के द्वारा"</string>
+    <string name="note_sent" msgid="3548700178238244595">"नोट भेज दिया गया है"</string>
+    <string name="person_contact_context_title" msgid="723266617256740572">"हाल ही के संदेश"</string>
+    <string name="business_contact_context_title" msgid="5334864183374669765">"व्यवसाय जानकारी"</string>
+    <string name="distance_imperial_away" msgid="437508440176409037">"<xliff:g id="DISTANCE">%.1f</xliff:g> मील दूर"</string>
+    <string name="distance_metric_away" msgid="166931929505893599">"<xliff:g id="DISTANCE">%.1f</xliff:g> किमी दूर"</string>
+    <string name="display_address" msgid="7307400970699471708">"<xliff:g id="STREET_ADDRESS">%1$s</xliff:g>, <xliff:g id="LOCALITY">%2$s</xliff:g>"</string>
+    <string name="open_time_span" msgid="6709726401179550381">"<xliff:g id="OPEN_TIME">%1$s</xliff:g> - <xliff:g id="CLOSE_TIME">%2$s</xliff:g>"</string>
+    <string name="opening_hours" msgid="8524931350345922176">"<xliff:g id="EARLIER_TIMES">%1$s</xliff:g>, <xliff:g id="LATER_TIME">%2$s</xliff:g>"</string>
+    <string name="opens_tomorrow_at" msgid="9168271983241323946">"कल <xliff:g id="OPEN_TIME">%s</xliff:g> बजे खुलता है"</string>
+    <string name="opens_today_at" msgid="9011139983701379907">"आज <xliff:g id="OPEN_TIME">%s</xliff:g> बजे खुलता है"</string>
+    <string name="closes_today_at" msgid="2623384032475495193">"<xliff:g id="CLOSE_TIME">%s</xliff:g> बजे बंद होता है"</string>
+    <string name="closed_today_at" msgid="324294933330883529">"आज <xliff:g id="CLOSE_TIME">%s</xliff:g> बजे बंद हो गया"</string>
+    <string name="open_now" msgid="6439301193613349163">"अभी खुला है"</string>
+    <string name="closed_now" msgid="9175774453982778909">"अभी बंद है"</string>
 </resources>
diff --git a/InCallUI/res/values-hr/strings.xml b/InCallUI/res/values-hr/strings.xml
index 8bbb70e..1714e33 100644
--- a/InCallUI/res/values-hr/strings.xml
+++ b/InCallUI/res/values-hr/strings.xml
@@ -49,7 +49,7 @@
     <string name="card_title_video_call" msgid="5898636679563320218">"Videopoziv"</string>
     <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Zahtijevanje videopiziva"</string>
     <string name="card_title_video_call_error" msgid="9000555878389539225">"Videopoziv nije uspostavljen"</string>
-    <string name="card_title_video_call_paused" msgid="3753261320787432731">"Videopoziv (pauziran)"</string>
+    <string name="card_title_video_call_rejected" msgid="462358296694719787">"Zahtjev za videopoziv odbijen"</string>
     <string name="card_title_callback_number" msgid="7307938207564217293">"Vaš broj za povratni poziv\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Vaš broj za povratni poziv za hitne službe\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="notification_dialing" msgid="2107666444937350731">"Biranje broja"</string>
@@ -123,7 +123,7 @@
     <string name="voicemail_settings" msgid="72448049107749316">"Postavljanje"</string>
     <string name="voicemail_number_not_set" msgid="6724904736891087856">"&lt;Nije postavljeno&gt;"</string>
     <string name="other_settings" msgid="3672912580359716394">"Ostale postavke poziva"</string>
-    <string name="calling_via_template" msgid="4839419581866928142">"Pozivanje putem operatera <xliff:g id="PROVIDER_NAME">%s</xliff:g>"</string>
+    <string name="calling_via_template" msgid="4839419581866928142">"Poziv preko <xliff:g id="PROVIDER_NAME">%s</xliff:g>"</string>
     <string name="incoming_via_template" msgid="1696993226115570960">"Dolazni pozivi putem davatelja <xliff:g id="PROVIDER_NAME">%s</xliff:g>"</string>
     <string name="contactPhoto" msgid="4713193418046639466">"kontakt fotografija"</string>
     <string name="goPrivate" msgid="865837794424530980">"na privatno"</string>
@@ -152,7 +152,6 @@
     <string name="default_notification_description" msgid="78174796906240970">"Zadani zvuk (<xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g>)"</string>
     <string name="ringtone_title" msgid="6374978286202084684">"Melodija zvona telefona"</string>
     <string name="vibrate_on_ring_title" msgid="9197564612065258960">"Vibrira dok zvoni"</string>
-    <string name="dial_pad_autocomplete" msgid="7683489952557536398">"Samodovr. povr. za biranje br."</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Melodija zvona i vibracija"</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"Upravljanje konferencijskim pozivom"</string>
     <string name="emergency_call_dialog_number_for_display" msgid="8373041754188879871">"Broj hitne službe"</string>
@@ -171,4 +170,21 @@
       <item quantity="few"><xliff:g id="COUNT">%d</xliff:g> sata</item>
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> sati</item>
     </plurals>
+    <string name="profile_photo_description" msgid="5609894336203315400">"Fotografija na profilu"</string>
+    <string name="camera_off_description" msgid="5689494614359429889">"Fotoaparat je isključen"</string>
+    <string name="child_number" msgid="7437330400723805538">"putem <xliff:g id="CHILD_NUMBER">%s</xliff:g>"</string>
+    <string name="note_sent" msgid="3548700178238244595">"Bilješka je poslana"</string>
+    <string name="person_contact_context_title" msgid="723266617256740572">"Nedavne poruke"</string>
+    <string name="business_contact_context_title" msgid="5334864183374669765">"Informacije o tvrtki"</string>
+    <string name="distance_imperial_away" msgid="437508440176409037">"<xliff:g id="DISTANCE">%.1f</xliff:g> mi udaljenosti"</string>
+    <string name="distance_metric_away" msgid="166931929505893599">"<xliff:g id="DISTANCE">%.1f</xliff:g> km udaljenosti"</string>
+    <string name="display_address" msgid="7307400970699471708">"<xliff:g id="STREET_ADDRESS">%1$s</xliff:g>, <xliff:g id="LOCALITY">%2$s</xliff:g>"</string>
+    <string name="open_time_span" msgid="6709726401179550381">"<xliff:g id="OPEN_TIME">%1$s</xliff:g> – <xliff:g id="CLOSE_TIME">%2$s</xliff:g>"</string>
+    <string name="opening_hours" msgid="8524931350345922176">"<xliff:g id="EARLIER_TIMES">%1$s</xliff:g>, <xliff:g id="LATER_TIME">%2$s</xliff:g>"</string>
+    <string name="opens_tomorrow_at" msgid="9168271983241323946">"Otvara se sutra u <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="opens_today_at" msgid="9011139983701379907">"Otvara se danas u <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="closes_today_at" msgid="2623384032475495193">"Zatvara se u <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="closed_today_at" msgid="324294933330883529">"Zatvoreno danas u <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="open_now" msgid="6439301193613349163">"Trenutačno otvoreno"</string>
+    <string name="closed_now" msgid="9175774453982778909">"Trenutačno zatvoreno"</string>
 </resources>
diff --git a/InCallUI/res/values-hu/strings.xml b/InCallUI/res/values-hu/strings.xml
index 9d7f4c8..d4a2135 100644
--- a/InCallUI/res/values-hu/strings.xml
+++ b/InCallUI/res/values-hu/strings.xml
@@ -49,7 +49,7 @@
     <string name="card_title_video_call" msgid="5898636679563320218">"Videohívás"</string>
     <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Videohívást kér"</string>
     <string name="card_title_video_call_error" msgid="9000555878389539225">"A videohívás létesítése sikertelen"</string>
-    <string name="card_title_video_call_paused" msgid="3753261320787432731">"Videohívás (szüneteltetve)"</string>
+    <string name="card_title_video_call_rejected" msgid="462358296694719787">"Videokérelem elutasítva"</string>
     <string name="card_title_callback_number" msgid="7307938207564217293">"Visszahívható telefonszáma\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Vészhelyzet esetén visszahívható telefonszáma\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="notification_dialing" msgid="2107666444937350731">"Tárcsázás"</string>
@@ -70,7 +70,7 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"A hangposta száma ismeretlen"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"Nincs szolgáltatás"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"A kiválasztott hálózat (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) nem érhető el"</string>
-    <string name="notification_action_answer" msgid="6700362365135365143">"Válasz"</string>
+    <string name="notification_action_answer" msgid="6700362365135365143">"Fogadás"</string>
     <string name="notification_action_end_call" msgid="6069460915123531620">"Hívás befejezése"</string>
     <string name="notification_action_answer_video" msgid="7809271910870211729">"Videó"</string>
     <string name="notification_action_answer_voice" msgid="1770796916369437773">"Hang"</string>
@@ -95,8 +95,8 @@
     <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Segélyhívás"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Rádió bekapcsolása..."</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Nincs szolgáltatás. Újrapróbálkozás folyamatban…"</string>
-    <string name="dial_emergency_error" msgid="1509085166367420355">"A hívás sikertelen. A(z) <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> szám nem vészhívószám."</string>
-    <string name="dial_emergency_empty_error" msgid="9130194953830414638">"A hívás sikertelen. Tárcsázzon vészhívószámot."</string>
+    <string name="dial_emergency_error" msgid="1509085166367420355">"A hívás sikertelen. A(z) <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> szám nem segélyhívószám."</string>
+    <string name="dial_emergency_empty_error" msgid="9130194953830414638">"A hívás sikertelen. Tárcsázzon segélyhívószámot."</string>
     <string name="dialerKeyboardHintText" msgid="9192914825413747792">"A tárcsázáshoz használja a billentyűzetet"</string>
     <string name="onscreenHoldText_unselected" msgid="7092499303393171276">"Hívás tartása"</string>
     <string name="onscreenHoldText_selected" msgid="7127901498507384249">"Hívás folytatása"</string>
@@ -123,7 +123,7 @@
     <string name="voicemail_settings" msgid="72448049107749316">"Beállítás"</string>
     <string name="voicemail_number_not_set" msgid="6724904736891087856">"&lt;Nincs megadva&gt;"</string>
     <string name="other_settings" msgid="3672912580359716394">"Egyéb hívásbeállítások"</string>
-    <string name="calling_via_template" msgid="4839419581866928142">"Hívás a(z) <xliff:g id="PROVIDER_NAME">%s</xliff:g> szolgáltatón keresztül"</string>
+    <string name="calling_via_template" msgid="4839419581866928142">"Hívás (<xliff:g id="PROVIDER_NAME">%s</xliff:g>)"</string>
     <string name="incoming_via_template" msgid="1696993226115570960">"Bejövő hívás a következőn keresztül: <xliff:g id="PROVIDER_NAME">%s</xliff:g>"</string>
     <string name="contactPhoto" msgid="4713193418046639466">"ismerős fotója"</string>
     <string name="goPrivate" msgid="865837794424530980">"magánbeszélgetés"</string>
@@ -152,7 +152,6 @@
     <string name="default_notification_description" msgid="78174796906240970">"Alapértelmezett hang (<xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g>)"</string>
     <string name="ringtone_title" msgid="6374978286202084684">"Telefon csengőhangja"</string>
     <string name="vibrate_on_ring_title" msgid="9197564612065258960">"Csengetéskor rezegjen"</string>
-    <string name="dial_pad_autocomplete" msgid="7683489952557536398">"Tárcsázás kiegészítése"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Csengőhang és rezgés"</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"Konferenciahívás kezelése"</string>
     <string name="emergency_call_dialog_number_for_display" msgid="8373041754188879871">"Segélyhívó szám"</string>
@@ -168,4 +167,21 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> óra</item>
       <item quantity="one">1 óra</item>
     </plurals>
+    <string name="profile_photo_description" msgid="5609894336203315400">"Profilfotó"</string>
+    <string name="camera_off_description" msgid="5689494614359429889">"Kamera ki"</string>
+    <string name="child_number" msgid="7437330400723805538">"a következő számon keresztül: <xliff:g id="CHILD_NUMBER">%s</xliff:g>"</string>
+    <string name="note_sent" msgid="3548700178238244595">"Üzenet elküldve"</string>
+    <string name="person_contact_context_title" msgid="723266617256740572">"Legutóbbi üzenetek"</string>
+    <string name="business_contact_context_title" msgid="5334864183374669765">"Cég adatai"</string>
+    <string name="distance_imperial_away" msgid="437508440176409037">"<xliff:g id="DISTANCE">%.1f</xliff:g> mérföldre"</string>
+    <string name="distance_metric_away" msgid="166931929505893599">"<xliff:g id="DISTANCE">%.1f</xliff:g> kilométerre"</string>
+    <string name="display_address" msgid="7307400970699471708">"<xliff:g id="STREET_ADDRESS">%1$s</xliff:g>, <xliff:g id="LOCALITY">%2$s</xliff:g>"</string>
+    <string name="open_time_span" msgid="6709726401179550381">"<xliff:g id="OPEN_TIME">%1$s</xliff:g>–<xliff:g id="CLOSE_TIME">%2$s</xliff:g>"</string>
+    <string name="opening_hours" msgid="8524931350345922176">"<xliff:g id="EARLIER_TIMES">%1$s</xliff:g>, <xliff:g id="LATER_TIME">%2$s</xliff:g>"</string>
+    <string name="opens_tomorrow_at" msgid="9168271983241323946">"Holnap ekkor nyit: <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="opens_today_at" msgid="9011139983701379907">"Ma ekkor nyit: <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="closes_today_at" msgid="2623384032475495193">"Ekkor zár: <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="closed_today_at" msgid="324294933330883529">"Zárva ma ekkor: <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="open_now" msgid="6439301193613349163">"Jelenleg nyitva van"</string>
+    <string name="closed_now" msgid="9175774453982778909">"Jelenleg zárva van"</string>
 </resources>
diff --git a/InCallUI/res/values-hy-rAM/strings.xml b/InCallUI/res/values-hy-rAM/strings.xml
index a267eb7..47eb09c 100644
--- a/InCallUI/res/values-hy-rAM/strings.xml
+++ b/InCallUI/res/values-hy-rAM/strings.xml
@@ -49,7 +49,7 @@
     <string name="card_title_video_call" msgid="5898636679563320218">"Տեսազանգել"</string>
     <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Տեսակապի հայցում"</string>
     <string name="card_title_video_call_error" msgid="9000555878389539225">"Հնարավոր չէ կապակցել տեսազանգը"</string>
-    <string name="card_title_video_call_paused" msgid="3753261320787432731">"Տեսազանգ (դադարեցված)"</string>
+    <string name="card_title_video_call_rejected" msgid="462358296694719787">"Տեսազանգի հարցումը մերժվել է"</string>
     <string name="card_title_callback_number" msgid="7307938207564217293">"Ձեր հետադարձ զանգի համարը՝\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Արտակարգ իրավիճակների հետադարձ զանգի համարը՝\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="notification_dialing" msgid="2107666444937350731">"Համարարկում է"</string>
@@ -123,7 +123,7 @@
     <string name="voicemail_settings" msgid="72448049107749316">"Կարգավորում"</string>
     <string name="voicemail_number_not_set" msgid="6724904736891087856">"&lt;Նշված չէ&gt;"</string>
     <string name="other_settings" msgid="3672912580359716394">"Այլ զանգերի կարգավորումներ"</string>
-    <string name="calling_via_template" msgid="4839419581866928142">"Զանգում է <xliff:g id="PROVIDER_NAME">%s</xliff:g>-ի միջոցով"</string>
+    <string name="calling_via_template" msgid="4839419581866928142">"Զանգ <xliff:g id="PROVIDER_NAME">%s</xliff:g>-ի միջոցով"</string>
     <string name="incoming_via_template" msgid="1696993226115570960">"Մուտքային զանգ <xliff:g id="PROVIDER_NAME">%s</xliff:g>-ի ցանցից"</string>
     <string name="contactPhoto" msgid="4713193418046639466">"կոնտակտի լուսանկարը"</string>
     <string name="goPrivate" msgid="865837794424530980">"Անցնել անձնականի"</string>
@@ -152,7 +152,6 @@
     <string name="default_notification_description" msgid="78174796906240970">"Լռելյայն ձայներանգը (<xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g>)"</string>
     <string name="ringtone_title" msgid="6374978286202084684">"Հեռախոսի զանգերանգ"</string>
     <string name="vibrate_on_ring_title" msgid="9197564612065258960">"Թրթռալ զանգի ժամանակ"</string>
-    <string name="dial_pad_autocomplete" msgid="7683489952557536398">"Թվատախտակի ինքնալրացում"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Ձայներանգ &amp; Թրթռոց"</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"Կառավարեք կոնֆերանս զանգը"</string>
     <string name="emergency_call_dialog_number_for_display" msgid="8373041754188879871">"Արտակարգ իրավիճակների հեռախոսահամար"</string>
@@ -168,4 +167,21 @@
       <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> ժամ</item>
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> ժամ</item>
     </plurals>
+    <string name="profile_photo_description" msgid="5609894336203315400">"Պրոֆիլի լուսանկար"</string>
+    <string name="camera_off_description" msgid="5689494614359429889">"Խցիկն անջատված է"</string>
+    <string name="child_number" msgid="7437330400723805538">"<xliff:g id="CHILD_NUMBER">%s</xliff:g>-ի միջոցով"</string>
+    <string name="note_sent" msgid="3548700178238244595">"Գրառումը ուղարկված է"</string>
+    <string name="person_contact_context_title" msgid="723266617256740572">"Վերջին հաղորդագրությունները"</string>
+    <string name="business_contact_context_title" msgid="5334864183374669765">"Բիզնես տեղեկատվություն"</string>
+    <string name="distance_imperial_away" msgid="437508440176409037">"<xliff:g id="DISTANCE">%.1f</xliff:g> մղոն հեռու"</string>
+    <string name="distance_metric_away" msgid="166931929505893599">"<xliff:g id="DISTANCE">%.1f</xliff:g> կմ հեռու"</string>
+    <string name="display_address" msgid="7307400970699471708">"<xliff:g id="STREET_ADDRESS">%1$s</xliff:g>, <xliff:g id="LOCALITY">%2$s</xliff:g>"</string>
+    <string name="open_time_span" msgid="6709726401179550381">"<xliff:g id="OPEN_TIME">%1$s</xliff:g> - <xliff:g id="CLOSE_TIME">%2$s</xliff:g>"</string>
+    <string name="opening_hours" msgid="8524931350345922176">"<xliff:g id="EARLIER_TIMES">%1$s</xliff:g>, <xliff:g id="LATER_TIME">%2$s</xliff:g>"</string>
+    <string name="opens_tomorrow_at" msgid="9168271983241323946">"Բացվում է վաղը ժամը <xliff:g id="OPEN_TIME">%s</xliff:g>-ին"</string>
+    <string name="opens_today_at" msgid="9011139983701379907">"Բացվում է այսօր ժամը <xliff:g id="OPEN_TIME">%s</xliff:g>-ին"</string>
+    <string name="closes_today_at" msgid="2623384032475495193">"Փակվում է ժամը <xliff:g id="CLOSE_TIME">%s</xliff:g>-ին"</string>
+    <string name="closed_today_at" msgid="324294933330883529">"Փակվել է այսօր ժամը <xliff:g id="CLOSE_TIME">%s</xliff:g>-ին"</string>
+    <string name="open_now" msgid="6439301193613349163">"Հիմա բաց է"</string>
+    <string name="closed_now" msgid="9175774453982778909">"Հիմա փակ է"</string>
 </resources>
diff --git a/InCallUI/res/values-in/strings.xml b/InCallUI/res/values-in/strings.xml
index 166e797..05d046a 100644
--- a/InCallUI/res/values-in/strings.xml
+++ b/InCallUI/res/values-in/strings.xml
@@ -49,7 +49,7 @@
     <string name="card_title_video_call" msgid="5898636679563320218">"Video call"</string>
     <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Meminta video"</string>
     <string name="card_title_video_call_error" msgid="9000555878389539225">"Tidak dapat menyambungkan video call"</string>
-    <string name="card_title_video_call_paused" msgid="3753261320787432731">"Video call (Dijeda)"</string>
+    <string name="card_title_video_call_rejected" msgid="462358296694719787">"Permintaan video ditolak"</string>
     <string name="card_title_callback_number" msgid="7307938207564217293">"Nomor panggilan balik Anda\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Nomor panggilan balik darurat Anda\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="notification_dialing" msgid="2107666444937350731">"Memanggil"</string>
@@ -76,7 +76,7 @@
     <string name="notification_action_answer_voice" msgid="1770796916369437773">"Suara"</string>
     <string name="notification_action_accept" msgid="2898609801209468429">"Terima"</string>
     <string name="notification_action_dismiss" msgid="2679969397930852858">"Tutup"</string>
-    <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Hubungi kembali"</string>
+    <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Telepon"</string>
     <string name="notification_missedCall_message" msgid="3049928912736917988">"Pesan"</string>
     <string name="incall_error_power_off" msgid="6550191216405193368">"Untuk melakukan panggilan, pertama-tama matikan mode Pesawat."</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"Tidak terdaftar pada jaringan."</string>
@@ -152,7 +152,6 @@
     <string name="default_notification_description" msgid="78174796906240970">"Suara default (<xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g>)"</string>
     <string name="ringtone_title" msgid="6374978286202084684">"Nada dering ponsel"</string>
     <string name="vibrate_on_ring_title" msgid="9197564612065258960">"Bergetar saat berdering"</string>
-    <string name="dial_pad_autocomplete" msgid="7683489952557536398">"Pelengkapan otomatis tombol nomor"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Nada dering &amp; Getar"</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"Kelola penggilan telewicara"</string>
     <string name="emergency_call_dialog_number_for_display" msgid="8373041754188879871">"Nomor darurat"</string>
@@ -168,4 +167,21 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> jam</item>
       <item quantity="one">1 jam</item>
     </plurals>
+    <string name="profile_photo_description" msgid="5609894336203315400">"Foto profil"</string>
+    <string name="camera_off_description" msgid="5689494614359429889">"Kamera tidak aktif"</string>
+    <string name="child_number" msgid="7437330400723805538">"melalui <xliff:g id="CHILD_NUMBER">%s</xliff:g>"</string>
+    <string name="note_sent" msgid="3548700178238244595">"Catatan telah dikirim"</string>
+    <string name="person_contact_context_title" msgid="723266617256740572">"Pesan terbaru"</string>
+    <string name="business_contact_context_title" msgid="5334864183374669765">"Info bisnis"</string>
+    <string name="distance_imperial_away" msgid="437508440176409037">"<xliff:g id="DISTANCE">%.1f</xliff:g> mil"</string>
+    <string name="distance_metric_away" msgid="166931929505893599">"<xliff:g id="DISTANCE">%.1f</xliff:g> km"</string>
+    <string name="display_address" msgid="7307400970699471708">"<xliff:g id="STREET_ADDRESS">%1$s</xliff:g>, <xliff:g id="LOCALITY">%2$s</xliff:g>"</string>
+    <string name="open_time_span" msgid="6709726401179550381">"<xliff:g id="OPEN_TIME">%1$s</xliff:g> - <xliff:g id="CLOSE_TIME">%2$s</xliff:g>"</string>
+    <string name="opening_hours" msgid="8524931350345922176">"<xliff:g id="EARLIER_TIMES">%1$s</xliff:g>, <xliff:g id="LATER_TIME">%2$s</xliff:g>"</string>
+    <string name="opens_tomorrow_at" msgid="9168271983241323946">"Buka pukul <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="opens_today_at" msgid="9011139983701379907">"Hari ini buka pukul <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="closes_today_at" msgid="2623384032475495193">"Tutup pukul <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="closed_today_at" msgid="324294933330883529">"Hari ini tutup pukul <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="open_now" msgid="6439301193613349163">"Buka sekarang"</string>
+    <string name="closed_now" msgid="9175774453982778909">"Sekarang tutup"</string>
 </resources>
diff --git a/InCallUI/res/values-is-rIS/strings.xml b/InCallUI/res/values-is-rIS/strings.xml
index 1603060..974028a 100644
--- a/InCallUI/res/values-is-rIS/strings.xml
+++ b/InCallUI/res/values-is-rIS/strings.xml
@@ -49,7 +49,7 @@
     <string name="card_title_video_call" msgid="5898636679563320218">"Myndsímtal"</string>
     <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Biður um myndskeið"</string>
     <string name="card_title_video_call_error" msgid="9000555878389539225">"Ekki tókst að tengja myndsímtal"</string>
-    <string name="card_title_video_call_paused" msgid="3753261320787432731">"Myndsímtal (í bið)"</string>
+    <string name="card_title_video_call_rejected" msgid="462358296694719787">"Myndsímtalsbeiðni hafnað"</string>
     <string name="card_title_callback_number" msgid="7307938207564217293">"Svarhringinúmerið þitt\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Svarhringinúmerið þitt í neyð\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="notification_dialing" msgid="2107666444937350731">"Hringir"</string>
@@ -152,7 +152,6 @@
     <string name="default_notification_description" msgid="78174796906240970">"Sjálfgefið hljóð (<xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g>)"</string>
     <string name="ringtone_title" msgid="6374978286202084684">"Hringitónn síma"</string>
     <string name="vibrate_on_ring_title" msgid="9197564612065258960">"Titra við hringingu"</string>
-    <string name="dial_pad_autocomplete" msgid="7683489952557536398">"Flýtiritun símatakkaborðs"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Hringitónn og titringur"</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"Stjórna símafundi"</string>
     <string name="emergency_call_dialog_number_for_display" msgid="8373041754188879871">"Neyðarnúmer"</string>
@@ -168,4 +167,21 @@
       <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> klukkustund</item>
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> klukkustundir</item>
     </plurals>
+    <string name="profile_photo_description" msgid="5609894336203315400">"Prófílmynd"</string>
+    <string name="camera_off_description" msgid="5689494614359429889">"Slökkt á myndavél"</string>
+    <string name="child_number" msgid="7437330400723805538">"úr <xliff:g id="CHILD_NUMBER">%s</xliff:g>"</string>
+    <string name="note_sent" msgid="3548700178238244595">"Glósa send"</string>
+    <string name="person_contact_context_title" msgid="723266617256740572">"Nýleg skilaboð"</string>
+    <string name="business_contact_context_title" msgid="5334864183374669765">"Fyrirtækjaupplýsingar"</string>
+    <string name="distance_imperial_away" msgid="437508440176409037">"í <xliff:g id="DISTANCE">%.1f</xliff:g> míl. fjarlægð"</string>
+    <string name="distance_metric_away" msgid="166931929505893599">"í <xliff:g id="DISTANCE">%.1f</xliff:g> km fjarlægð"</string>
+    <string name="display_address" msgid="7307400970699471708">"<xliff:g id="STREET_ADDRESS">%1$s</xliff:g>, <xliff:g id="LOCALITY">%2$s</xliff:g>"</string>
+    <string name="open_time_span" msgid="6709726401179550381">"<xliff:g id="OPEN_TIME">%1$s</xliff:g>–<xliff:g id="CLOSE_TIME">%2$s</xliff:g>"</string>
+    <string name="opening_hours" msgid="8524931350345922176">"<xliff:g id="EARLIER_TIMES">%1$s</xliff:g>, <xliff:g id="LATER_TIME">%2$s</xliff:g>"</string>
+    <string name="opens_tomorrow_at" msgid="9168271983241323946">"Opið á morgun frá kl. <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="opens_today_at" msgid="9011139983701379907">"Opið í dag frá kl. <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="closes_today_at" msgid="2623384032475495193">"Lokunartími kl. <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="closed_today_at" msgid="324294933330883529">"Var lokað í dag kl. <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="open_now" msgid="6439301193613349163">"Opið núna"</string>
+    <string name="closed_now" msgid="9175774453982778909">"Lokað núna"</string>
 </resources>
diff --git a/InCallUI/res/values-it/strings.xml b/InCallUI/res/values-it/strings.xml
index 775a2a5..45ba96f 100644
--- a/InCallUI/res/values-it/strings.xml
+++ b/InCallUI/res/values-it/strings.xml
@@ -49,7 +49,7 @@
     <string name="card_title_video_call" msgid="5898636679563320218">"Videochiamata"</string>
     <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Richiesta video..."</string>
     <string name="card_title_video_call_error" msgid="9000555878389539225">"Impossibile effettuare una videochiamata"</string>
-    <string name="card_title_video_call_paused" msgid="3753261320787432731">"Videochiamata (in pausa)"</string>
+    <string name="card_title_video_call_rejected" msgid="462358296694719787">"Richiesta video rifiutata"</string>
     <string name="card_title_callback_number" msgid="7307938207564217293">"Il numero da richiamare\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Numero da richiamare in caso di emergenza\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="notification_dialing" msgid="2107666444937350731">"Chiamata in corso"</string>
@@ -60,7 +60,7 @@
     <string name="notification_ongoing_call" msgid="7068688957273482989">"Chiamata in corso"</string>
     <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"Chiamata Wi-Fi in corso"</string>
     <string name="notification_on_hold" msgid="3480694969511790465">"In attesa"</string>
-    <string name="notification_incoming_call" msgid="2820429205043529642">"Chiamata ricevuta"</string>
+    <string name="notification_incoming_call" msgid="2820429205043529642">"Chiamata in arrivo"</string>
     <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"Chiamata Wi-Fi in arrivo"</string>
     <string name="notification_incoming_video_call" msgid="7356836933934464805">"Videochiamata in arrivo"</string>
     <string name="notification_requesting_video_call" msgid="1405576812892369451">"Richiesta video in arrivo"</string>
@@ -103,7 +103,7 @@
     <string name="onscreenEndCallText" msgid="9039601192595655846">"Termina chiamata"</string>
     <string name="onscreenShowDialpadText" msgid="8561805492659639893">"Tastierino"</string>
     <string name="onscreenMuteText" msgid="5011369181754261374">"No audio"</string>
-    <string name="onscreenAddCallText" msgid="5140385634712287403">"Aggiungi"</string>
+    <string name="onscreenAddCallText" msgid="5140385634712287403">"Aggiungi chiamata"</string>
     <string name="onscreenMergeCallsText" msgid="6640195098064538950">"Unisci"</string>
     <string name="onscreenSwapCallsText" msgid="1602990689244030047">"Scambia"</string>
     <string name="onscreenManageCallsText" msgid="5473231160123254154">"Gestisci chiamate"</string>
@@ -152,7 +152,6 @@
     <string name="default_notification_description" msgid="78174796906240970">"Suono predefinito (<xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g>)"</string>
     <string name="ringtone_title" msgid="6374978286202084684">"Suoneria telefono"</string>
     <string name="vibrate_on_ring_title" msgid="9197564612065258960">"Vibrazione quando squilla"</string>
-    <string name="dial_pad_autocomplete" msgid="7683489952557536398">"Tastierino con completam. auto"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Suoneria e vibrazione"</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"Gestisci audioconferenza"</string>
     <string name="emergency_call_dialog_number_for_display" msgid="8373041754188879871">"Numero di emergenza"</string>
@@ -168,4 +167,21 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> ore</item>
       <item quantity="one">1 ora</item>
     </plurals>
+    <string name="profile_photo_description" msgid="5609894336203315400">"Foto del profilo"</string>
+    <string name="camera_off_description" msgid="5689494614359429889">"Videocamera disattivata"</string>
+    <string name="child_number" msgid="7437330400723805538">"tramite <xliff:g id="CHILD_NUMBER">%s</xliff:g>"</string>
+    <string name="note_sent" msgid="3548700178238244595">"Nota inviata"</string>
+    <string name="person_contact_context_title" msgid="723266617256740572">"Messaggi recenti"</string>
+    <string name="business_contact_context_title" msgid="5334864183374669765">"Informazioni sull\'attività commerciale"</string>
+    <string name="distance_imperial_away" msgid="437508440176409037">"Distante <xliff:g id="DISTANCE">%.1f</xliff:g> mi"</string>
+    <string name="distance_metric_away" msgid="166931929505893599">"Distante <xliff:g id="DISTANCE">%.1f</xliff:g> km"</string>
+    <string name="display_address" msgid="7307400970699471708">"<xliff:g id="STREET_ADDRESS">%1$s</xliff:g>, <xliff:g id="LOCALITY">%2$s</xliff:g>"</string>
+    <string name="open_time_span" msgid="6709726401179550381">"<xliff:g id="OPEN_TIME">%1$s</xliff:g> - <xliff:g id="CLOSE_TIME">%2$s</xliff:g>"</string>
+    <string name="opening_hours" msgid="8524931350345922176">"<xliff:g id="EARLIER_TIMES">%1$s</xliff:g>, <xliff:g id="LATER_TIME">%2$s</xliff:g>"</string>
+    <string name="opens_tomorrow_at" msgid="9168271983241323946">"Apre domani alle ore <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="opens_today_at" msgid="9011139983701379907">"Apre oggi alle ore <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="closes_today_at" msgid="2623384032475495193">"Chiude alle ore <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="closed_today_at" msgid="324294933330883529">"Ha chiuso oggi alle ore <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="open_now" msgid="6439301193613349163">"Aperto ora"</string>
+    <string name="closed_now" msgid="9175774453982778909">"Ora chiuso"</string>
 </resources>
diff --git a/InCallUI/res/values-iw/strings.xml b/InCallUI/res/values-iw/strings.xml
index 77ea49f..8bb71f2 100644
--- a/InCallUI/res/values-iw/strings.xml
+++ b/InCallUI/res/values-iw/strings.xml
@@ -49,7 +49,7 @@
     <string name="card_title_video_call" msgid="5898636679563320218">"שיחת וידאו"</string>
     <string name="card_title_video_call_requesting" msgid="4587504939739340937">"מבקש וידאו"</string>
     <string name="card_title_video_call_error" msgid="9000555878389539225">"לא ניתן לחבר שיחת וידאו"</string>
-    <string name="card_title_video_call_paused" msgid="3753261320787432731">"שיחת וידאו (מושהית)"</string>
+    <string name="card_title_video_call_rejected" msgid="462358296694719787">"בקשת וידאו נדחתה"</string>
     <string name="card_title_callback_number" msgid="7307938207564217293">"המספר שלך להתקשרות חזרה\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"המספר שלך להתקשרות חזרה במצב חירום\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="notification_dialing" msgid="2107666444937350731">"מחייג"</string>
@@ -152,7 +152,6 @@
     <string name="default_notification_description" msgid="78174796906240970">"צליל ברירת מחדל (<xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g>)"</string>
     <string name="ringtone_title" msgid="6374978286202084684">"רינגטון של טלפון"</string>
     <string name="vibrate_on_ring_title" msgid="9197564612065258960">"רטט בעת צלצול"</string>
-    <string name="dial_pad_autocomplete" msgid="7683489952557536398">"השלמה אוטומטית בלוח חיוג"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"רינגטון ורטט"</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"נהל שיחת ועידה"</string>
     <string name="emergency_call_dialog_number_for_display" msgid="8373041754188879871">"מספר חירום"</string>
@@ -174,4 +173,21 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> שעות</item>
       <item quantity="one">שעה אחת</item>
     </plurals>
+    <string name="profile_photo_description" msgid="5609894336203315400">"תמונת פרופיל"</string>
+    <string name="camera_off_description" msgid="5689494614359429889">"מצלמה כבויה"</string>
+    <string name="child_number" msgid="7437330400723805538">"דרך <xliff:g id="CHILD_NUMBER">%s</xliff:g>"</string>
+    <string name="note_sent" msgid="3548700178238244595">"ההערה נשלחה"</string>
+    <string name="person_contact_context_title" msgid="723266617256740572">"הודעות אחרונות"</string>
+    <string name="business_contact_context_title" msgid="5334864183374669765">"פרטי עסק"</string>
+    <string name="distance_imperial_away" msgid="437508440176409037">"במרחק <xliff:g id="DISTANCE">%.1f</xliff:g> מייל"</string>
+    <string name="distance_metric_away" msgid="166931929505893599">"במרחק <xliff:g id="DISTANCE">%.1f</xliff:g> ק\"מ"</string>
+    <string name="display_address" msgid="7307400970699471708">"<xliff:g id="STREET_ADDRESS">%1$s</xliff:g>, <xliff:g id="LOCALITY">%2$s</xliff:g>"</string>
+    <string name="open_time_span" msgid="6709726401179550381">"<xliff:g id="OPEN_TIME">%1$s</xliff:g> - <xliff:g id="CLOSE_TIME">%2$s</xliff:g>"</string>
+    <string name="opening_hours" msgid="8524931350345922176">"<xliff:g id="EARLIER_TIMES">%1$s</xliff:g>, <xliff:g id="LATER_TIME">%2$s</xliff:g>"</string>
+    <string name="opens_tomorrow_at" msgid="9168271983241323946">"ייפתח מחר ב-<xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="opens_today_at" msgid="9011139983701379907">"נפתח היום ב-<xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="closes_today_at" msgid="2623384032475495193">"נסגר ב-<xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="closed_today_at" msgid="324294933330883529">"נסגר היום ב-<xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="open_now" msgid="6439301193613349163">"פתוח עכשיו"</string>
+    <string name="closed_now" msgid="9175774453982778909">"סגור עכשיו"</string>
 </resources>
diff --git a/InCallUI/res/values-ja/strings.xml b/InCallUI/res/values-ja/strings.xml
index 677969e..dbf584b 100644
--- a/InCallUI/res/values-ja/strings.xml
+++ b/InCallUI/res/values-ja/strings.xml
@@ -20,7 +20,7 @@
     <string name="phoneAppLabel" product="default" msgid="906161039445636857">"電話"</string>
     <string name="onHold" msgid="9035493194749959955">"保留中"</string>
     <string name="unknown" msgid="6878797917991465859">"通知不可能"</string>
-    <string name="private_num" msgid="6713286113000232309">"非通知"</string>
+    <string name="private_num" msgid="6713286113000232309">"非通知設定"</string>
     <string name="payphone" msgid="4793877574636445118">"公衆電話"</string>
     <string name="confCall" msgid="1904840547188336828">"グループ通話"</string>
     <string name="call_lost" msgid="6183862117003999578">"通話が遮断されました"</string>
@@ -49,7 +49,7 @@
     <string name="card_title_video_call" msgid="5898636679563320218">"ビデオハングアウト"</string>
     <string name="card_title_video_call_requesting" msgid="4587504939739340937">"ビデオハングアウトをリクエストしています"</string>
     <string name="card_title_video_call_error" msgid="9000555878389539225">"ビデオハングアウトを接続できません"</string>
-    <string name="card_title_video_call_paused" msgid="3753261320787432731">"ビデオハングアウト(一時停止)"</string>
+    <string name="card_title_video_call_rejected" msgid="462358296694719787">"ビデオハングアウトのリクエスト不承認"</string>
     <string name="card_title_callback_number" msgid="7307938207564217293">"コールバック先\n<xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"緊急通報コールバック先\n<xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="notification_dialing" msgid="2107666444937350731">"発信中"</string>
@@ -152,7 +152,6 @@
     <string name="default_notification_description" msgid="78174796906240970">"デフォルトの通知音(<xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g>)"</string>
     <string name="ringtone_title" msgid="6374978286202084684">"着信音"</string>
     <string name="vibrate_on_ring_title" msgid="9197564612065258960">"着信時のバイブレーション"</string>
-    <string name="dial_pad_autocomplete" msgid="7683489952557536398">"ダイヤルのオートコンプリート"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"着信音とバイブレーション"</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"グループ通話オプション"</string>
     <string name="emergency_call_dialog_number_for_display" msgid="8373041754188879871">"緊急通報番号"</string>
@@ -168,4 +167,21 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g>時間</item>
       <item quantity="one">1時間</item>
     </plurals>
+    <string name="profile_photo_description" msgid="5609894336203315400">"プロフィール写真"</string>
+    <string name="camera_off_description" msgid="5689494614359429889">"カメラをオフ"</string>
+    <string name="child_number" msgid="7437330400723805538">"<xliff:g id="CHILD_NUMBER">%s</xliff:g>に着信"</string>
+    <string name="note_sent" msgid="3548700178238244595">"メモを送信しました"</string>
+    <string name="person_contact_context_title" msgid="723266617256740572">"最近のメッセージ"</string>
+    <string name="business_contact_context_title" msgid="5334864183374669765">"ビジネス情報"</string>
+    <string name="distance_imperial_away" msgid="437508440176409037">"<xliff:g id="DISTANCE">%.1f</xliff:g>マイル圏内"</string>
+    <string name="distance_metric_away" msgid="166931929505893599">"<xliff:g id="DISTANCE">%.1f</xliff:g>km圏内"</string>
+    <string name="display_address" msgid="7307400970699471708">"<xliff:g id="STREET_ADDRESS">%1$s</xliff:g>、<xliff:g id="LOCALITY">%2$s</xliff:g>"</string>
+    <string name="open_time_span" msgid="6709726401179550381">"<xliff:g id="OPEN_TIME">%1$s</xliff:g>~<xliff:g id="CLOSE_TIME">%2$s</xliff:g>"</string>
+    <string name="opening_hours" msgid="8524931350345922176">"<xliff:g id="EARLIER_TIMES">%1$s</xliff:g>、<xliff:g id="LATER_TIME">%2$s</xliff:g>"</string>
+    <string name="opens_tomorrow_at" msgid="9168271983241323946">"明日 <xliff:g id="OPEN_TIME">%s</xliff:g> に営業開始"</string>
+    <string name="opens_today_at" msgid="9011139983701379907">"本日 <xliff:g id="OPEN_TIME">%s</xliff:g> に営業開始"</string>
+    <string name="closes_today_at" msgid="2623384032475495193">"<xliff:g id="CLOSE_TIME">%s</xliff:g> に営業終了"</string>
+    <string name="closed_today_at" msgid="324294933330883529">"本日 <xliff:g id="CLOSE_TIME">%s</xliff:g> に営業終了"</string>
+    <string name="open_now" msgid="6439301193613349163">"現在営業中"</string>
+    <string name="closed_now" msgid="9175774453982778909">"営業終了"</string>
 </resources>
diff --git a/InCallUI/res/values-ka-rGE/strings.xml b/InCallUI/res/values-ka-rGE/strings.xml
index 88c4e34..57e4dae 100644
--- a/InCallUI/res/values-ka-rGE/strings.xml
+++ b/InCallUI/res/values-ka-rGE/strings.xml
@@ -49,7 +49,7 @@
     <string name="card_title_video_call" msgid="5898636679563320218">"ვიდეოზარი"</string>
     <string name="card_title_video_call_requesting" msgid="4587504939739340937">"მიმდინარეობს ვიდეოს მოთხოვნა"</string>
     <string name="card_title_video_call_error" msgid="9000555878389539225">"ვერ ხორციელდება ვიდეო ზარით დაკავშირება"</string>
-    <string name="card_title_video_call_paused" msgid="3753261320787432731">"ვიდეოზარი (დაპაუზებული)"</string>
+    <string name="card_title_video_call_rejected" msgid="462358296694719787">"ვიდეო მოთხოვნა არ დაკმაყოფილდა"</string>
     <string name="card_title_callback_number" msgid="7307938207564217293">"თქვენი გადმორეკვის ნომერი \n<xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"თქვენი საგანგებო გადმორეკვის ნომერი \n<xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="notification_dialing" msgid="2107666444937350731">"აკრეფვა"</string>
@@ -152,7 +152,6 @@
     <string name="default_notification_description" msgid="78174796906240970">"ნაგულისხმები ხმა (<xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g>)"</string>
     <string name="ringtone_title" msgid="6374978286202084684">"ტელეფონის ზარი"</string>
     <string name="vibrate_on_ring_title" msgid="9197564612065258960">"დარეკვის დროს ვიბრაცია"</string>
-    <string name="dial_pad_autocomplete" msgid="7683489952557536398">"აკრეფვის ავტოდასრულება"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"ზარის მელოდია &amp; ვიბრაცია"</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"საკონფერენციო ზარის მართვა"</string>
     <string name="emergency_call_dialog_number_for_display" msgid="8373041754188879871">"გადაუდებელი დახმარების ნომერი"</string>
@@ -168,4 +167,21 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> საათი</item>
       <item quantity="one">1 საათი</item>
     </plurals>
+    <string name="profile_photo_description" msgid="5609894336203315400">"პროფილის ფოტო"</string>
+    <string name="camera_off_description" msgid="5689494614359429889">"კამერა გამორთულია"</string>
+    <string name="child_number" msgid="7437330400723805538">"<xliff:g id="CHILD_NUMBER">%s</xliff:g>-დან"</string>
+    <string name="note_sent" msgid="3548700178238244595">"ჩანიშვნა გაიგზავნა"</string>
+    <string name="person_contact_context_title" msgid="723266617256740572">"ბოლო შეტყობინებები"</string>
+    <string name="business_contact_context_title" msgid="5334864183374669765">"ბიზნეს-ინფორმაცია"</string>
+    <string name="distance_imperial_away" msgid="437508440176409037">"<xliff:g id="DISTANCE">%.1f</xliff:g> მილში"</string>
+    <string name="distance_metric_away" msgid="166931929505893599">"<xliff:g id="DISTANCE">%.1f</xliff:g> კმ-ში"</string>
+    <string name="display_address" msgid="7307400970699471708">"<xliff:g id="STREET_ADDRESS">%1$s</xliff:g>, <xliff:g id="LOCALITY">%2$s</xliff:g>"</string>
+    <string name="open_time_span" msgid="6709726401179550381">"<xliff:g id="OPEN_TIME">%1$s</xliff:g> - <xliff:g id="CLOSE_TIME">%2$s</xliff:g>"</string>
+    <string name="opening_hours" msgid="8524931350345922176">"<xliff:g id="EARLIER_TIMES">%1$s</xliff:g>, <xliff:g id="LATER_TIME">%2$s</xliff:g>"</string>
+    <string name="opens_tomorrow_at" msgid="9168271983241323946">"იხსნება ხვალ <xliff:g id="OPEN_TIME">%s</xliff:g>-ზე"</string>
+    <string name="opens_today_at" msgid="9011139983701379907">"იხსნება დღეს <xliff:g id="OPEN_TIME">%s</xliff:g>-ზე"</string>
+    <string name="closes_today_at" msgid="2623384032475495193">"იკეტება <xliff:g id="CLOSE_TIME">%s</xliff:g>-ზე"</string>
+    <string name="closed_today_at" msgid="324294933330883529">"დაიკეტა დღეს <xliff:g id="CLOSE_TIME">%s</xliff:g>-ზე"</string>
+    <string name="open_now" msgid="6439301193613349163">"ახლა ღიაა"</string>
+    <string name="closed_now" msgid="9175774453982778909">"ახლა დაკეტილია"</string>
 </resources>
diff --git a/InCallUI/res/values-kk-rKZ/strings.xml b/InCallUI/res/values-kk-rKZ/strings.xml
new file mode 100644
index 0000000..c7bbf2d
--- /dev/null
+++ b/InCallUI/res/values-kk-rKZ/strings.xml
@@ -0,0 +1,187 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2013 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="phoneAppLabel" product="default" msgid="906161039445636857">"Телефон"</string>
+    <string name="onHold" msgid="9035493194749959955">"Күтуде"</string>
+    <string name="unknown" msgid="6878797917991465859">"Белгісіз"</string>
+    <string name="private_num" msgid="6713286113000232309">"Жеке нөмір"</string>
+    <string name="payphone" msgid="4793877574636445118">"Автомат-телефон"</string>
+    <string name="confCall" msgid="1904840547188336828">"Мәжіліс қоңырауы"</string>
+    <string name="call_lost" msgid="6183862117003999578">"Қоңырау үзілді"</string>
+    <string name="audio_mode_speaker" msgid="27649582100085266">"Үндеткіш"</string>
+    <string name="audio_mode_earpiece" msgid="4156527186373869107">"Телефон құлағы"</string>
+    <string name="audio_mode_wired_headset" msgid="1465350758489175975">"Сымды телефон"</string>
+    <string name="audio_mode_bluetooth" msgid="3047641300848211128">"Bluetooth"</string>
+    <string name="wait_prompt_str" msgid="7601815427707856238">"Келесі әуендер жіберілсін бе?\n"</string>
+    <string name="pause_prompt_str" msgid="1789964702154314806">"Жіберу әуендері\n"</string>
+    <string name="send_button" msgid="4106860097497818751">"Жіберу"</string>
+    <string name="pause_prompt_yes" msgid="3564467212025151797">"Иә"</string>
+    <string name="pause_prompt_no" msgid="6686238803236884877">"Жоқ"</string>
+    <string name="wild_prompt_str" msgid="5543521676355533577">"Ерекше таңбаны келесі таңбамен алмастыру"</string>
+    <string name="caller_manage_header" msgid="3231519674734638786">"<xliff:g id="CONF_CALL_TIME">%s</xliff:g> мәжіліс қоңырауы"</string>
+    <string name="voicemail_settings_number_label" msgid="8524164258691887790">"Дауыстық пошта нөмірі"</string>
+    <string name="card_title_dialing" msgid="5769417478498348054">"Теруде"</string>
+    <string name="card_title_redialing" msgid="8253487008234167266">"Қайта терілуде"</string>
+    <string name="card_title_conf_call" msgid="1162980346189744501">"Мәжіліс қоңырауы"</string>
+    <string name="card_title_incoming_call" msgid="7364539451234646909">"Келген қоңырау"</string>
+    <string name="card_title_call_ended" msgid="5544730338889702298">"Қоңырау аяқталды"</string>
+    <string name="card_title_on_hold" msgid="821463117892339942">"Күтуде"</string>
+    <string name="card_title_hanging_up" msgid="3999101620995182450">"Телефон құлағын ілуде"</string>
+    <string name="card_title_in_call" msgid="6346543933068225205">"Қоңырау"</string>
+    <string name="card_title_my_phone_number" msgid="112428362494434191">"Mенің нөмірім <xliff:g id="MY_PHONE_NUMBER">%s</xliff:g>"</string>
+    <string name="card_title_video_call_connecting" msgid="297586766381973954">"Бейне қосылуда"</string>
+    <string name="card_title_video_call" msgid="5898636679563320218">"Бейне қоңырау"</string>
+    <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Бейне сұралуда"</string>
+    <string name="card_title_video_call_error" msgid="9000555878389539225">"Бейне қоңырауға қосылу мүмкін емес"</string>
+    <string name="card_title_video_call_rejected" msgid="462358296694719787">"Бейне сұрауы қабылданбады"</string>
+    <string name="card_title_callback_number" msgid="7307938207564217293">"Кері қоңырау шалу нөміріңіз\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
+    <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Жедел кері қоңырау шалу нөміріңіз\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
+    <string name="notification_dialing" msgid="2107666444937350731">"Теру"</string>
+    <string name="notification_missedCallTitle" msgid="7554385905572364535">"Қабылданбаған қоңырау"</string>
+    <string name="notification_missedCallsTitle" msgid="1361677948941502522">"Қабылданбаған қоңыраулар"</string>
+    <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> қабылданбаған қоңыраулар"</string>
+    <string name="notification_missedCallTicker" msgid="504686252427747209">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g> қоңырауы қабылданбаған"</string>
+    <string name="notification_ongoing_call" msgid="7068688957273482989">"Ағымдағы қоңырау"</string>
+    <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"Ағымдық Wi-Fi қоңырауы"</string>
+    <string name="notification_on_hold" msgid="3480694969511790465">"Күтуде"</string>
+    <string name="notification_incoming_call" msgid="2820429205043529642">"Келген қоңырау"</string>
+    <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"Кіріс Wi-Fi қоңырауы"</string>
+    <string name="notification_incoming_video_call" msgid="7356836933934464805">"Кіріс бейне қоңырау"</string>
+    <string name="notification_requesting_video_call" msgid="1405576812892369451">"Кіріс бейне сұрау"</string>
+    <string name="notification_voicemail_title" msgid="8933468752045550523">"Жаңа дауыс хабары"</string>
+    <string name="notification_voicemail_title_count" msgid="4366360747660929916">"(<xliff:g id="COUNT">%d</xliff:g>) дауыс хабары"</string>
+    <string name="notification_voicemail_text_format" msgid="4447323569453981685">"<xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g> нөмірін теру"</string>
+    <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"Дауыс хабарының нөмірі белгісіз"</string>
+    <string name="notification_network_selection_title" msgid="4224455487793492772">"Қызмет көрсетілмейді"</string>
+    <string name="notification_network_selection_text" msgid="2607085729661923269">"Таңдалған (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) желісі қол жетімсіз"</string>
+    <string name="notification_action_answer" msgid="6700362365135365143">"Жауап"</string>
+    <string name="notification_action_end_call" msgid="6069460915123531620">"Қоңырауды аяқтау"</string>
+    <string name="notification_action_answer_video" msgid="7809271910870211729">"Бейне"</string>
+    <string name="notification_action_answer_voice" msgid="1770796916369437773">"Дауыс"</string>
+    <string name="notification_action_accept" msgid="2898609801209468429">"Қабылдау"</string>
+    <string name="notification_action_dismiss" msgid="2679969397930852858">"Бас тарту"</string>
+    <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Қоңырау шалу"</string>
+    <string name="notification_missedCall_message" msgid="3049928912736917988">"Хабар"</string>
+    <string name="incall_error_power_off" msgid="6550191216405193368">"Қоңырау шалу үшін алдымен Ұшақ режимін өшіріңіз."</string>
+    <string name="incall_error_emergency_only" msgid="4678640422710818317">"Желіде тіркелмеген."</string>
+    <string name="incall_error_out_of_service" msgid="4100065333878929223">"Ұялы желі қол жетімді емес."</string>
+    <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Қоңырау шалу үшін жарамды нөмірді енгізіңіз."</string>
+    <string name="incall_error_call_failed" msgid="6302746943230078197">"Қоңырау шалу мүмкін емес."</string>
+    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"MMI қатарын бастау…"</string>
+    <string name="incall_error_supp_service_unknown" msgid="323435289607131929">"Қызметке қолдау көрсетілмейді."</string>
+    <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"Қоңырауларды ауыстыру мүмкін емес."</string>
+    <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"Қоңырауды бөлу мүмкін емес."</string>
+    <string name="incall_error_supp_service_transfer" msgid="7235952238189391438">"Тасымалдау мүмкін емес."</string>
+    <string name="incall_error_supp_service_conference" msgid="7010354362202271726">"Конференция мүмкін емес."</string>
+    <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Қоңырауды қабылдамау мүмкін емес."</string>
+    <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Қоңырау(лар)ды босату мүмкін емес."</string>
+    <string name="incall_call_type_label_sip" msgid="4931428719494190371">"SIP қоңырауы"</string>
+    <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Төтенше қоңырау"</string>
+    <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Радионы қосуда…"</string>
+    <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Қызмет жоқ. Әрекет қайталануда…"</string>
+    <string name="dial_emergency_error" msgid="1509085166367420355">"Қоңырау шалу мүмкін емес. <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> жедел нөмір емес."</string>
+    <string name="dial_emergency_empty_error" msgid="9130194953830414638">"Қоңырау шалу мүмкін емес. Жедел нөмірді теріңіз."</string>
+    <string name="dialerKeyboardHintText" msgid="9192914825413747792">"Теру үшін пернетақтаны қолдану"</string>
+    <string name="onscreenHoldText_unselected" msgid="7092499303393171276">"Қоңырауды ұстап тұру"</string>
+    <string name="onscreenHoldText_selected" msgid="7127901498507384249">"Қоңырауды жалғастыру"</string>
+    <string name="onscreenEndCallText" msgid="9039601192595655846">"Қоңырауды аяқтау"</string>
+    <string name="onscreenShowDialpadText" msgid="8561805492659639893">"Теру тақтасы"</string>
+    <string name="onscreenMuteText" msgid="5011369181754261374">"Үнсіз"</string>
+    <string name="onscreenAddCallText" msgid="5140385634712287403">"Қоңырау қосу"</string>
+    <string name="onscreenMergeCallsText" msgid="6640195098064538950">"Қоңырауларды біріктіру"</string>
+    <string name="onscreenSwapCallsText" msgid="1602990689244030047">"Алмастыру"</string>
+    <string name="onscreenManageCallsText" msgid="5473231160123254154">"Қоңырауларды басқару"</string>
+    <string name="onscreenManageConferenceText" msgid="6801708317570467407">"Конф-қ қоң. басқару"</string>
+    <string name="onscreenAudioText" msgid="1710087112800041743">"Aудио"</string>
+    <string name="onscreenVideoCallText" msgid="4800924186056115442">"Видео қоңырау"</string>
+    <string name="onscreenChangeToVoiceText" msgid="5311407863653867937">"Дауыстық қоңырауға өзгерту"</string>
+    <string name="onscreenSwitchCameraText" msgid="5324543493442787798">"Камераны ауыстыру"</string>
+    <string name="onscreenPauseVideoText" msgid="5663965924921429203">"Бейнені кідірту"</string>
+    <string name="onscreenOverflowText" msgid="2702376562345723132">"Басқа опциялар"</string>
+    <string name="player_started" msgid="6046262510243983589">"Ойнатқыш іске қосылды"</string>
+    <string name="player_stopped" msgid="8856926759436364963">"Ойнатқыш тоқтатылды"</string>
+    <string name="camera_not_ready" msgid="4955261496193316240">"Камера дайын емес"</string>
+    <string name="camera_ready" msgid="1903335385405807324">"Камера дайын"</string>
+    <string name="unknown_call_session_event" msgid="2431061946920253582">"Белгісіз қоңырау сеансы оқиғасы"</string>
+    <string name="voicemail_provider" msgid="5135942703327136909">"Қызмет"</string>
+    <string name="voicemail_settings" msgid="72448049107749316">"Орнату"</string>
+    <string name="voicemail_number_not_set" msgid="6724904736891087856">"&lt;Реттелген жоқt&gt;"</string>
+    <string name="other_settings" msgid="3672912580359716394">"Басқа қоңырау параметрлері"</string>
+    <string name="calling_via_template" msgid="4839419581866928142">"<xliff:g id="PROVIDER_NAME">%s</xliff:g> арқылы шалу"</string>
+    <string name="incoming_via_template" msgid="1696993226115570960">"<xliff:g id="PROVIDER_NAME">%s</xliff:g> арқылы кіріс"</string>
+    <string name="contactPhoto" msgid="4713193418046639466">"контакт фотосуреті"</string>
+    <string name="goPrivate" msgid="865837794424530980">"жеке қоңырауға ауысу"</string>
+    <string name="selectContact" msgid="781975788478987237">"контакт таңдау"</string>
+    <string name="respond_via_sms_custom_message" msgid="6158880869935281078">"Өзіңіздікін жазыңыз..."</string>
+    <string name="custom_message_cancel" msgid="7516406059429609296">"Тоқтату"</string>
+    <string name="custom_message_send" msgid="5795754217085747742">"Жіберу"</string>
+    <string name="description_target_answer" msgid="7205604197797472471">"Жауап"</string>
+    <string name="description_target_send_sms" msgid="2098326025587950144">"SMS жіберу"</string>
+    <string name="description_target_decline" msgid="4789834364389731957">"Қабылдамау"</string>
+    <string name="description_target_answer_video_call" msgid="3495965588512395026">"Бейне қоңырауға жауап беру"</string>
+    <string name="description_target_answer_audio_call" msgid="8396296303320994450">"Аудио қоңырауға жауап беру"</string>
+    <string name="description_target_accept_upgrade_to_video_request" msgid="2894072808324604062">"Бейне сұрауды қабылдау"</string>
+    <string name="description_target_decline_upgrade_to_video_request" msgid="4093888612888538776">"Бейне сұрауды қабылдамау"</string>
+    <string name="description_target_accept_upgrade_to_video_transmit_request" msgid="5311037889642077468">"Бейне тасымалдау сұрауын қабылдау"</string>
+    <string name="description_target_decline_upgrade_to_video_transmit_request" msgid="3636108065510415975">"Бейне тасымалдау сұрауын қабылдамау"</string>
+    <string name="description_target_accept_upgrade_to_video_receive_request" msgid="8668058323593087912">"Бейне алу сұрауын қабылдау"</string>
+    <string name="description_target_decline_upgrade_to_video_receive_request" msgid="2355776509656298367">"Бейне алу сұрауын қабылдамау"</string>
+    <string name="description_direction_up" msgid="4441409581444516690">"<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> үшін жоғары сырғыту."</string>
+    <string name="description_direction_left" msgid="7129873384376533287">"<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> үшін сол жаққа сырғыту."</string>
+    <string name="description_direction_right" msgid="2122584234531957308">"<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> үшін оң жаққа сырғыту."</string>
+    <string name="description_direction_down" msgid="4317245625565166742">"<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> үшін төмен сырғыту."</string>
+    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Діріл"</string>
+    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Діріл"</string>
+    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Дыбыс"</string>
+    <string name="default_notification_description" msgid="78174796906240970">"Бастапқы бойынша дыбыс (<xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g>)"</string>
+    <string name="ringtone_title" msgid="6374978286202084684">"Телефон рингтоны"</string>
+    <string name="vibrate_on_ring_title" msgid="9197564612065258960">"Шырылдағанда тербеу"</string>
+    <string name="preference_category_ringtone" msgid="5197960752529332721">"Рингтон&amp; Діріл"</string>
+    <string name="manageConferenceLabel" msgid="4691922394301969053">"Мәжіліс қоңырауын басқару"</string>
+    <string name="emergency_call_dialog_number_for_display" msgid="8373041754188879871">"Төтенше жағдай нөмірі"</string>
+    <plurals name="duration_seconds" formatted="false" msgid="59971978269163609">
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> секунд</item>
+      <item quantity="one">1 секунд</item>
+    </plurals>
+    <plurals name="duration_minutes" formatted="false" msgid="1103289948818175408">
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> минут</item>
+      <item quantity="one">1 минут</item>
+    </plurals>
+    <plurals name="duration_hours" formatted="false" msgid="7560637459014865969">
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> сағат</item>
+      <item quantity="one">1 сағат</item>
+    </plurals>
+    <string name="profile_photo_description" msgid="5609894336203315400">"Профиль фотосуреті"</string>
+    <string name="camera_off_description" msgid="5689494614359429889">"Камераны өшіру"</string>
+    <string name="child_number" msgid="7437330400723805538">"<xliff:g id="CHILD_NUMBER">%s</xliff:g> арқылы"</string>
+    <string name="note_sent" msgid="3548700178238244595">"Ескертпе жіберілді"</string>
+    <string name="person_contact_context_title" msgid="723266617256740572">"Жақындағы хабарлар"</string>
+    <string name="business_contact_context_title" msgid="5334864183374669765">"Іскери ақпарат"</string>
+    <string name="distance_imperial_away" msgid="437508440176409037">"<xliff:g id="DISTANCE">%.1f</xliff:g> миля қашықтықта"</string>
+    <string name="distance_metric_away" msgid="166931929505893599">"<xliff:g id="DISTANCE">%.1f</xliff:g> км қашықтықта"</string>
+    <string name="display_address" msgid="7307400970699471708">"<xliff:g id="STREET_ADDRESS">%1$s</xliff:g>, <xliff:g id="LOCALITY">%2$s</xliff:g>"</string>
+    <string name="open_time_span" msgid="6709726401179550381">"<xliff:g id="OPEN_TIME">%1$s</xliff:g> - <xliff:g id="CLOSE_TIME">%2$s</xliff:g>"</string>
+    <string name="opening_hours" msgid="8524931350345922176">"<xliff:g id="EARLIER_TIMES">%1$s</xliff:g>, <xliff:g id="LATER_TIME">%2$s</xliff:g>"</string>
+    <string name="opens_tomorrow_at" msgid="9168271983241323946">"Ертең <xliff:g id="OPEN_TIME">%s</xliff:g> уақытында ашылады"</string>
+    <string name="opens_today_at" msgid="9011139983701379907">"Бүгін <xliff:g id="OPEN_TIME">%s</xliff:g> уақытында ашылады"</string>
+    <string name="closes_today_at" msgid="2623384032475495193">"<xliff:g id="CLOSE_TIME">%s</xliff:g> уақытында жабылады"</string>
+    <string name="closed_today_at" msgid="324294933330883529">"Бүгін <xliff:g id="CLOSE_TIME">%s</xliff:g> уақытында жабық"</string>
+    <string name="open_now" msgid="6439301193613349163">"Қазір ашық"</string>
+    <string name="closed_now" msgid="9175774453982778909">"Қазір жабық"</string>
+</resources>
diff --git a/InCallUI/res/values-km-rKH/strings.xml b/InCallUI/res/values-km-rKH/strings.xml
index f8b16ef..7a31cbc 100644
--- a/InCallUI/res/values-km-rKH/strings.xml
+++ b/InCallUI/res/values-km-rKH/strings.xml
@@ -49,7 +49,7 @@
     <string name="card_title_video_call" msgid="5898636679563320218">"ហៅ​ជា​វីដេអូ"</string>
     <string name="card_title_video_call_requesting" msgid="4587504939739340937">"ស្នើ​វីដេអូ"</string>
     <string name="card_title_video_call_error" msgid="9000555878389539225">"មិនអាចភ្ជាប់ការហៅជាវីដេអូបានទេ"</string>
-    <string name="card_title_video_call_paused" msgid="3753261320787432731">"ការហៅជាវីដេអូ (បានផ្អាក)"</string>
+    <string name="card_title_video_call_rejected" msgid="462358296694719787">"បានបដិសេធសំណើហៅជាវីដេអូ"</string>
     <string name="card_title_callback_number" msgid="7307938207564217293">"លេខទូរស័ព្ទអាសន្នហៅទៅវិញរបស់អ្នក\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"លេខទូរស័ព្ទអាសន្នហៅទៅវិញរបស់អ្នក\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="notification_dialing" msgid="2107666444937350731">"ហៅ"</string>
@@ -152,7 +152,6 @@
     <string name="default_notification_description" msgid="78174796906240970">"សំឡេង​លំនាំដើម (<xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g>)"</string>
     <string name="ringtone_title" msgid="6374978286202084684">"សំឡេង​ទូរស័ព្ទ​រោទ៍"</string>
     <string name="vibrate_on_ring_title" msgid="9197564612065258960">"ញ័រ​នៅ​ពេល​រោទ៍"</string>
-    <string name="dial_pad_autocomplete" msgid="7683489952557536398">"ផ្ទាំងចុចលេខបំពេញដោយស្វ័យប្រវត្តិ"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"សំឡេង​រោទ៍ &amp; ញ័រ"</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"គ្រប់គ្រង​ការ​ហៅ​​ជា​សន្និសីទ"</string>
     <string name="emergency_call_dialog_number_for_display" msgid="8373041754188879871">"លេខ​ពេល​អាសន្ន"</string>
@@ -168,4 +167,21 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> ម៉ោង</item>
       <item quantity="one">1 ម៉ោង</item>
     </plurals>
+    <string name="profile_photo_description" msgid="5609894336203315400">"រូបថត​ប្រវត្តិរូប"</string>
+    <string name="camera_off_description" msgid="5689494614359429889">"បិទកាមេរ៉ា"</string>
+    <string name="child_number" msgid="7437330400723805538">"តាមរយៈ <xliff:g id="CHILD_NUMBER">%s</xliff:g>"</string>
+    <string name="note_sent" msgid="3548700178238244595">"បានផ្ញើចំណាំ"</string>
+    <string name="person_contact_context_title" msgid="723266617256740572">"សារថ្មីៗ"</string>
+    <string name="business_contact_context_title" msgid="5334864183374669765">"ព័ត៌មានធុរកិច្ច"</string>
+    <string name="distance_imperial_away" msgid="437508440176409037">"ចម្ងាយ <xliff:g id="DISTANCE">%.1f</xliff:g> ម៉ាយល៍"</string>
+    <string name="distance_metric_away" msgid="166931929505893599">"ចម្ងាយ <xliff:g id="DISTANCE">%.1f</xliff:g> គម"</string>
+    <string name="display_address" msgid="7307400970699471708">"<xliff:g id="STREET_ADDRESS">%1$s</xliff:g>, <xliff:g id="LOCALITY">%2$s</xliff:g>"</string>
+    <string name="open_time_span" msgid="6709726401179550381">"<xliff:g id="OPEN_TIME">%1$s</xliff:g> - <xliff:g id="CLOSE_TIME">%2$s</xliff:g>"</string>
+    <string name="opening_hours" msgid="8524931350345922176">"<xliff:g id="EARLIER_TIMES">%1$s</xliff:g>, <xliff:g id="LATER_TIME">%2$s</xliff:g>"</string>
+    <string name="opens_tomorrow_at" msgid="9168271983241323946">"បើកថ្ងៃស្អែកនៅម៉ោង <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="opens_today_at" msgid="9011139983701379907">"បើកថ្ងៃនេះនៅម៉ោង <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="closes_today_at" msgid="2623384032475495193">"បិទនៅម៉ោង <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="closed_today_at" msgid="324294933330883529">"បានបិទថ្ងៃនេះនៅម៉ោង <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="open_now" msgid="6439301193613349163">"បើកឥឡូវនេះ"</string>
+    <string name="closed_now" msgid="9175774453982778909">"បិទឥឡូវនេះ"</string>
 </resources>
diff --git a/InCallUI/res/values-kn-rIN/strings.xml b/InCallUI/res/values-kn-rIN/strings.xml
index 4d6c3fe..296d43d 100644
--- a/InCallUI/res/values-kn-rIN/strings.xml
+++ b/InCallUI/res/values-kn-rIN/strings.xml
@@ -49,7 +49,7 @@
     <string name="card_title_video_call" msgid="5898636679563320218">"ವೀಡಿಯೊ ಕರೆ"</string>
     <string name="card_title_video_call_requesting" msgid="4587504939739340937">"ವೀಡಿಯೊ ವಿನಂತಿಸಲಾಗುತ್ತಿದೆ"</string>
     <string name="card_title_video_call_error" msgid="9000555878389539225">"ವೀಡಿಯೊ ಕರೆಯನ್ನು ಸಂಪರ್ಕಪಡಿಸಲಾಗುವುದಿಲ್ಲ"</string>
-    <string name="card_title_video_call_paused" msgid="3753261320787432731">"ವೀಡಿಯೊ ಕರೆ (ವಿರಾಮಗೊಳಿಸಲಾಗಿದೆ)"</string>
+    <string name="card_title_video_call_rejected" msgid="462358296694719787">"ವೀಡಿಯೊ ವಿನಂತಿಯನ್ನು ತಿರಸ್ಕರಿಸಲಾಗಿದೆ"</string>
     <string name="card_title_callback_number" msgid="7307938207564217293">"ನಿಮ್ಮ ಕರೆಯ ಸಂಖ್ಯೆ\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"ನಿಮ್ಮ ತುರ್ತು ಕರೆಯ ಸಂಖ್ಯೆ\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="notification_dialing" msgid="2107666444937350731">"ಡಯಲ್‌ ಮಾಡಲಾಗುತ್ತಿದೆ"</string>
@@ -58,10 +58,10 @@
     <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> ತಪ್ಪಿದ ಕರೆಗಳು"</string>
     <string name="notification_missedCallTicker" msgid="504686252427747209">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g> ಅವರಿಂದ ಮಿಸ್ಡ್‌ ಕಾಲ್‌"</string>
     <string name="notification_ongoing_call" msgid="7068688957273482989">"ಚಾಲ್ತಿಯಲ್ಲಿರುವ ಕರೆ"</string>
-    <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"ಚಾಲ್ತಿಯಲ್ಲಿರುವ ವೈ-ಫೈ ಕರೆ"</string>
+    <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"ಚಾಲ್ತಿಯಲ್ಲಿರುವ Wi-Fi ಕರೆ"</string>
     <string name="notification_on_hold" msgid="3480694969511790465">"ತಡೆಹಿಡಿಯಲಾಗಿದೆ"</string>
     <string name="notification_incoming_call" msgid="2820429205043529642">"ಒಳಬರುವ ಕರೆ"</string>
-    <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"ಒಳಬರುವ ವೈ-ಫೈ ಕರೆ"</string>
+    <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"ಒಳಬರುವ Wi-Fi ಕರೆ"</string>
     <string name="notification_incoming_video_call" msgid="7356836933934464805">"ಒಳಬರುವ ವೀಡಿಯೊ ಕರೆ"</string>
     <string name="notification_requesting_video_call" msgid="1405576812892369451">"ಒಳಬರುವ ವೀಡಿಯೊ ವಿನಂತಿ"</string>
     <string name="notification_voicemail_title" msgid="8933468752045550523">"ಹೊಸ ಧ್ವನಿಮೇಲ್‌"</string>
@@ -123,7 +123,7 @@
     <string name="voicemail_settings" msgid="72448049107749316">"ಸೆಟಪ್"</string>
     <string name="voicemail_number_not_set" msgid="6724904736891087856">"&lt;ಹೊಂದಿಸಿಲ್ಲ&gt;"</string>
     <string name="other_settings" msgid="3672912580359716394">"ಇತರ ಕರೆ ಸೆಟ್ಟಿಂಗ್‌ಗಳು"</string>
-    <string name="calling_via_template" msgid="4839419581866928142">"<xliff:g id="PROVIDER_NAME">%s</xliff:g> ಮೂಲಕ ಕರೆ ಮಾಡಲಾಗುತ್ತಿದೆ"</string>
+    <string name="calling_via_template" msgid="4839419581866928142">"<xliff:g id="PROVIDER_NAME">%s</xliff:g>ನಿಂದ ಕರೆ ಆಗುತ್ತಿದೆ"</string>
     <string name="incoming_via_template" msgid="1696993226115570960">"<xliff:g id="PROVIDER_NAME">%s</xliff:g> ಅವರ ಒಳಬರುತ್ತಿರುವ ಕರೆ"</string>
     <string name="contactPhoto" msgid="4713193418046639466">"ಸಂಪರ್ಕ ಫೋಟೋ"</string>
     <string name="goPrivate" msgid="865837794424530980">"ಖಾಸಗಿಯಾಗಿ ಹೋಗಿ"</string>
@@ -132,7 +132,7 @@
     <string name="custom_message_cancel" msgid="7516406059429609296">"ರದ್ದುಮಾಡು"</string>
     <string name="custom_message_send" msgid="5795754217085747742">"ಕಳುಹಿಸು"</string>
     <string name="description_target_answer" msgid="7205604197797472471">"ಉತ್ತರ"</string>
-    <string name="description_target_send_sms" msgid="2098326025587950144">"SMS ಕಳುಹಿಸು"</string>
+    <string name="description_target_send_sms" msgid="2098326025587950144">"SMS ಕಳುಹಿಸಿ"</string>
     <string name="description_target_decline" msgid="4789834364389731957">"ನಿರಾಕರಿಸು"</string>
     <string name="description_target_answer_video_call" msgid="3495965588512395026">"ವೀಡಿಯೊ ಕರೆ ರೂಪದಲ್ಲಿ ಉತ್ತರಿಸಿ"</string>
     <string name="description_target_answer_audio_call" msgid="8396296303320994450">"ಆಡಿಯೊ ಕರೆಯಂತೆ ಉತ್ತರಿಸಿ"</string>
@@ -152,7 +152,6 @@
     <string name="default_notification_description" msgid="78174796906240970">"ಡೀಫಾಲ್ಟ್‌ ಧ್ವನಿ (<xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g>)"</string>
     <string name="ringtone_title" msgid="6374978286202084684">"ಫೋನ್ ರಿಂಗ್‌ಟೋನ್"</string>
     <string name="vibrate_on_ring_title" msgid="9197564612065258960">"ರಿಂಗ್ ಆಗುವಾಗ ಕಂಪಿಸು"</string>
-    <string name="dial_pad_autocomplete" msgid="7683489952557536398">"ಸ್ವಯಂಪರಿಪೂರ್ಣತೆ ಡಯಲ್ ಪ್ಯಾಡ್"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"ರಿಂಗ್‌ಟೋನ್‌‌ &amp; ವೈಬ್ರೇಟ್‌"</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"ಕಾನ್ಫರೆನ್ಸ್ ಕರೆಯನ್ನು ನಿರ್ವಹಿಸಿ"</string>
     <string name="emergency_call_dialog_number_for_display" msgid="8373041754188879871">"ತುರ್ತು ಸಂಖ್ಯೆ"</string>
@@ -168,4 +167,21 @@
       <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> ಗಂಟೆಗಳು</item>
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> ಗಂಟೆಗಳು</item>
     </plurals>
+    <string name="profile_photo_description" msgid="5609894336203315400">"ಪ್ರೊಫೈಲ್ ಫೋಟೋ‌"</string>
+    <string name="camera_off_description" msgid="5689494614359429889">"ಕ್ಯಾಮರಾ ಆಫ್‌"</string>
+    <string name="child_number" msgid="7437330400723805538">"<xliff:g id="CHILD_NUMBER">%s</xliff:g> ಮೂಲಕ"</string>
+    <string name="note_sent" msgid="3548700178238244595">"ಟಿಪ್ಪಣಿ ಕಳುಹಿಸಲಾಗಿದೆ"</string>
+    <string name="person_contact_context_title" msgid="723266617256740572">"ಇತ್ತೀಚಿನ ಸಂದೇಶಗಳು"</string>
+    <string name="business_contact_context_title" msgid="5334864183374669765">"ವ್ಯಾಪಾರ ಮಾಹಿತಿ"</string>
+    <string name="distance_imperial_away" msgid="437508440176409037">"<xliff:g id="DISTANCE">%.1f</xliff:g> ಮೈಲು ದೂರ"</string>
+    <string name="distance_metric_away" msgid="166931929505893599">"<xliff:g id="DISTANCE">%.1f</xliff:g> ಕಿಮೀ ದೂರ"</string>
+    <string name="display_address" msgid="7307400970699471708">"<xliff:g id="STREET_ADDRESS">%1$s</xliff:g>, <xliff:g id="LOCALITY">%2$s</xliff:g>"</string>
+    <string name="open_time_span" msgid="6709726401179550381">"<xliff:g id="OPEN_TIME">%1$s</xliff:g> - <xliff:g id="CLOSE_TIME">%2$s</xliff:g>"</string>
+    <string name="opening_hours" msgid="8524931350345922176">"<xliff:g id="EARLIER_TIMES">%1$s</xliff:g>, <xliff:g id="LATER_TIME">%2$s</xliff:g>"</string>
+    <string name="opens_tomorrow_at" msgid="9168271983241323946">"ನಾಳೆ <xliff:g id="OPEN_TIME">%s</xliff:g> ಗಂಟೆಗೆ ತೆರೆಯುತ್ತದೆ"</string>
+    <string name="opens_today_at" msgid="9011139983701379907">"ಇಂದು <xliff:g id="OPEN_TIME">%s</xliff:g> ಗಂಟೆಗೆ ತೆರೆಯುತ್ತದೆ"</string>
+    <string name="closes_today_at" msgid="2623384032475495193">"<xliff:g id="CLOSE_TIME">%s</xliff:g> ಗಂಟೆಗೆ ಮುಚ್ಚಲಾಗಿದೆ"</string>
+    <string name="closed_today_at" msgid="324294933330883529">"ಇಂದು <xliff:g id="CLOSE_TIME">%s</xliff:g> ಗಂಟೆಗೆ ಮುಚ್ಚಲಾಗಿದೆ"</string>
+    <string name="open_now" msgid="6439301193613349163">"ಇದೀಗ ತೆರೆಯಲಾಗಿದೆ"</string>
+    <string name="closed_now" msgid="9175774453982778909">"ಇದೀಗ ಮುಚ್ಚಲಾಗಿದೆ"</string>
 </resources>
diff --git a/InCallUI/res/values-ko/strings.xml b/InCallUI/res/values-ko/strings.xml
index a689099..2797f84 100644
--- a/InCallUI/res/values-ko/strings.xml
+++ b/InCallUI/res/values-ko/strings.xml
@@ -49,7 +49,7 @@
     <string name="card_title_video_call" msgid="5898636679563320218">"화상 통화"</string>
     <string name="card_title_video_call_requesting" msgid="4587504939739340937">"동영상 요청 중"</string>
     <string name="card_title_video_call_error" msgid="9000555878389539225">"화상 통화를 연결할 수 없습니다."</string>
-    <string name="card_title_video_call_paused" msgid="3753261320787432731">"화상 통화(일시중지됨)"</string>
+    <string name="card_title_video_call_rejected" msgid="462358296694719787">"동영상 요청 거부됨"</string>
     <string name="card_title_callback_number" msgid="7307938207564217293">"콜백 번호\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"긴급 콜백 번호\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="notification_dialing" msgid="2107666444937350731">"전화 거는 중"</string>
@@ -152,7 +152,6 @@
     <string name="default_notification_description" msgid="78174796906240970">"기본 알림음(<xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g>)"</string>
     <string name="ringtone_title" msgid="6374978286202084684">"전화 벨소리"</string>
     <string name="vibrate_on_ring_title" msgid="9197564612065258960">"전화 수신 시 진동"</string>
-    <string name="dial_pad_autocomplete" msgid="7683489952557536398">"다이얼패드 자동완성"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"벨소리 및 진동"</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"다자간 통화 관리"</string>
     <string name="emergency_call_dialog_number_for_display" msgid="8373041754188879871">"비상 전화번호"</string>
@@ -168,4 +167,21 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g>시간</item>
       <item quantity="one">1시간</item>
     </plurals>
+    <string name="profile_photo_description" msgid="5609894336203315400">"프로필 사진"</string>
+    <string name="camera_off_description" msgid="5689494614359429889">"카메라 꺼짐"</string>
+    <string name="child_number" msgid="7437330400723805538">"수신 번호: <xliff:g id="CHILD_NUMBER">%s</xliff:g>"</string>
+    <string name="note_sent" msgid="3548700178238244595">"메모가 전송되었습니다."</string>
+    <string name="person_contact_context_title" msgid="723266617256740572">"최근 메시지"</string>
+    <string name="business_contact_context_title" msgid="5334864183374669765">"비즈니스 정보"</string>
+    <string name="distance_imperial_away" msgid="437508440176409037">"<xliff:g id="DISTANCE">%.1f</xliff:g>mi 거리"</string>
+    <string name="distance_metric_away" msgid="166931929505893599">"<xliff:g id="DISTANCE">%.1f</xliff:g>km 거리"</string>
+    <string name="display_address" msgid="7307400970699471708">"<xliff:g id="STREET_ADDRESS">%1$s</xliff:g>, <xliff:g id="LOCALITY">%2$s</xliff:g>"</string>
+    <string name="open_time_span" msgid="6709726401179550381">"<xliff:g id="OPEN_TIME">%1$s</xliff:g>~<xliff:g id="CLOSE_TIME">%2$s</xliff:g>"</string>
+    <string name="opening_hours" msgid="8524931350345922176">"<xliff:g id="EARLIER_TIMES">%1$s</xliff:g>, <xliff:g id="LATER_TIME">%2$s</xliff:g>"</string>
+    <string name="opens_tomorrow_at" msgid="9168271983241323946">"내일 <xliff:g id="OPEN_TIME">%s</xliff:g>에 영업 시작"</string>
+    <string name="opens_today_at" msgid="9011139983701379907">"오늘 <xliff:g id="OPEN_TIME">%s</xliff:g>에 영업 시작"</string>
+    <string name="closes_today_at" msgid="2623384032475495193">"<xliff:g id="CLOSE_TIME">%s</xliff:g>에 영업 종료"</string>
+    <string name="closed_today_at" msgid="324294933330883529">"오늘 <xliff:g id="CLOSE_TIME">%s</xliff:g>에 영업 종료됨"</string>
+    <string name="open_now" msgid="6439301193613349163">"영업 중"</string>
+    <string name="closed_now" msgid="9175774453982778909">"영업 종료"</string>
 </resources>
diff --git a/InCallUI/res/values-ky-rKG/strings.xml b/InCallUI/res/values-ky-rKG/strings.xml
new file mode 100644
index 0000000..446d2d9
--- /dev/null
+++ b/InCallUI/res/values-ky-rKG/strings.xml
@@ -0,0 +1,187 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2013 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="phoneAppLabel" product="default" msgid="906161039445636857">"Телефон"</string>
+    <string name="onHold" msgid="9035493194749959955">"Күтүлүүдө"</string>
+    <string name="unknown" msgid="6878797917991465859">"Белгисиз"</string>
+    <string name="private_num" msgid="6713286113000232309">"Купуя номер"</string>
+    <string name="payphone" msgid="4793877574636445118">"Таксофон"</string>
+    <string name="confCall" msgid="1904840547188336828">"Конференц-чалуу"</string>
+    <string name="call_lost" msgid="6183862117003999578">"Чалуу үзүлдү"</string>
+    <string name="audio_mode_speaker" msgid="27649582100085266">"Катуу сүйлөткүч"</string>
+    <string name="audio_mode_earpiece" msgid="4156527186373869107">"Гарнитура"</string>
+    <string name="audio_mode_wired_headset" msgid="1465350758489175975">"Зымдуу кулакчын"</string>
+    <string name="audio_mode_bluetooth" msgid="3047641300848211128">"Bluetooth"</string>
+    <string name="wait_prompt_str" msgid="7601815427707856238">"Төмөнкү номер жөнөтүлсүнбү?\n"</string>
+    <string name="pause_prompt_str" msgid="1789964702154314806">"Тоналдык жөнөтүү болууда \n"</string>
+    <string name="send_button" msgid="4106860097497818751">"Жөнөтүү"</string>
+    <string name="pause_prompt_yes" msgid="3564467212025151797">"Ооба"</string>
+    <string name="pause_prompt_no" msgid="6686238803236884877">"Жок"</string>
+    <string name="wild_prompt_str" msgid="5543521676355533577">"Атайын белгини муну менен алмаштыр"</string>
+    <string name="caller_manage_header" msgid="3231519674734638786">"Конференц-чалуу <xliff:g id="CONF_CALL_TIME">%s</xliff:g>"</string>
+    <string name="voicemail_settings_number_label" msgid="8524164258691887790">"Үн почтасынын номери"</string>
+    <string name="card_title_dialing" msgid="5769417478498348054">"Терилүүдө"</string>
+    <string name="card_title_redialing" msgid="8253487008234167266">"Кайра терүү"</string>
+    <string name="card_title_conf_call" msgid="1162980346189744501">"Конференц-чалуу"</string>
+    <string name="card_title_incoming_call" msgid="7364539451234646909">"Кирүүчү чалуу"</string>
+    <string name="card_title_call_ended" msgid="5544730338889702298">"Чалуу аяктады"</string>
+    <string name="card_title_on_hold" msgid="821463117892339942">"Күтүлүүдө"</string>
+    <string name="card_title_hanging_up" msgid="3999101620995182450">"Телефон коюлууда"</string>
+    <string name="card_title_in_call" msgid="6346543933068225205">"Чалууда"</string>
+    <string name="card_title_my_phone_number" msgid="112428362494434191">"Менин номерим <xliff:g id="MY_PHONE_NUMBER">%s</xliff:g>"</string>
+    <string name="card_title_video_call_connecting" msgid="297586766381973954">"Видео туташтырылууда"</string>
+    <string name="card_title_video_call" msgid="5898636679563320218">"Видео чалуу"</string>
+    <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Видео"</string>
+    <string name="card_title_video_call_error" msgid="9000555878389539225">"Видео чалууга туташуу мүмкүн болбой жатат"</string>
+    <string name="card_title_video_call_rejected" msgid="462358296694719787">"Видео сурам четке кагылды"</string>
+    <string name="card_title_callback_number" msgid="7307938207564217293">"Төмөнкү номерге кайра чалуу\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
+    <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Төмөнкү номерге шашылыш кайра чалуу\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
+    <string name="notification_dialing" msgid="2107666444937350731">"Терилүүдө"</string>
+    <string name="notification_missedCallTitle" msgid="7554385905572364535">"Кабыл алынбаган чалуу"</string>
+    <string name="notification_missedCallsTitle" msgid="1361677948941502522">"Кабыл алынбаган чалуулар"</string>
+    <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> кабыл алынбаган чалуу"</string>
+    <string name="notification_missedCallTicker" msgid="504686252427747209">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g> дегенден кабыл алынбаган чалуу"</string>
+    <string name="notification_ongoing_call" msgid="7068688957273482989">"Учурдагы чалуу"</string>
+    <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"Аткаруудагы Wi-Fi чалуу"</string>
+    <string name="notification_on_hold" msgid="3480694969511790465">"Күтүлүүдө"</string>
+    <string name="notification_incoming_call" msgid="2820429205043529642">"Кирүүчү чалуу"</string>
+    <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"Кирүүчү Wi-Fi чалуу"</string>
+    <string name="notification_incoming_video_call" msgid="7356836933934464805">"Келип жаткан видео чалуу"</string>
+    <string name="notification_requesting_video_call" msgid="1405576812892369451">"Келип жаткан видео сурамы"</string>
+    <string name="notification_voicemail_title" msgid="8933468752045550523">"Жаңы үн почтасы"</string>
+    <string name="notification_voicemail_title_count" msgid="4366360747660929916">"Жаңы үн почтасы (<xliff:g id="COUNT">%d</xliff:g>)"</string>
+    <string name="notification_voicemail_text_format" msgid="4447323569453981685">"<xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g> номерин терүү"</string>
+    <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"Үн почтасынын номери белгисиз"</string>
+    <string name="notification_network_selection_title" msgid="4224455487793492772">"Байланыш жок"</string>
+    <string name="notification_network_selection_text" msgid="2607085729661923269">"Тандалган тармак (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) жеткиликсиз"</string>
+    <string name="notification_action_answer" msgid="6700362365135365143">"Жооп берүү"</string>
+    <string name="notification_action_end_call" msgid="6069460915123531620">"Телефонду коюу"</string>
+    <string name="notification_action_answer_video" msgid="7809271910870211729">"Видео"</string>
+    <string name="notification_action_answer_voice" msgid="1770796916369437773">"Үн"</string>
+    <string name="notification_action_accept" msgid="2898609801209468429">"Кабыл алуу"</string>
+    <string name="notification_action_dismiss" msgid="2679969397930852858">"Этибарга албоо"</string>
+    <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Кайра чалуу"</string>
+    <string name="notification_missedCall_message" msgid="3049928912736917988">"Билдирүү"</string>
+    <string name="incall_error_power_off" msgid="6550191216405193368">"Чалуу үчүн, адегенде учак режимин өчүрүңүз."</string>
+    <string name="incall_error_emergency_only" msgid="4678640422710818317">"Тармакта катталган эмес."</string>
+    <string name="incall_error_out_of_service" msgid="4100065333878929223">"Уюктук тармак жеткиликтүү эмес."</string>
+    <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Чалуу үчүн, жарактуу номер киргизиңиз."</string>
+    <string name="incall_error_call_failed" msgid="6302746943230078197">"Чалынбай жатат."</string>
+    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"MMI кезеги башталууда…"</string>
+    <string name="incall_error_supp_service_unknown" msgid="323435289607131929">"Кызмат колдоого алынбайт."</string>
+    <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"Чалуулар которуштурулбай жатат."</string>
+    <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"Чалуу бөлүнбөй жатат."</string>
+    <string name="incall_error_supp_service_transfer" msgid="7235952238189391438">"Өткөрүлбөй жатат."</string>
+    <string name="incall_error_supp_service_conference" msgid="7010354362202271726">"Конференц-байланышы түзүлбөй жатат."</string>
+    <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Чалуу четке кагылбай жатат."</string>
+    <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Чалуу(лар) бошотулбай жатат."</string>
+    <string name="incall_call_type_label_sip" msgid="4931428719494190371">"SIP чалуу"</string>
+    <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Шашылыш чалуу"</string>
+    <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Радио күйгүзүлүүдө…"</string>
+    <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Кызмат жок. Кайра аракет кылууда…"</string>
+    <string name="dial_emergency_error" msgid="1509085166367420355">"Чалынбай жатат. <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> өзгөчө кырдаал номери эмес."</string>
+    <string name="dial_emergency_empty_error" msgid="9130194953830414638">"Чалынбай жатат. Өзгөчө кырдаал номерин териңиз."</string>
+    <string name="dialerKeyboardHintText" msgid="9192914825413747792">"Баскычтоп менен териңиз"</string>
+    <string name="onscreenHoldText_unselected" msgid="7092499303393171276">"Чалууну Кармоо"</string>
+    <string name="onscreenHoldText_selected" msgid="7127901498507384249">"Чалууну Улантуу"</string>
+    <string name="onscreenEndCallText" msgid="9039601192595655846">"Чалууну бүтүрүү"</string>
+    <string name="onscreenShowDialpadText" msgid="8561805492659639893">"Тергич"</string>
+    <string name="onscreenMuteText" msgid="5011369181754261374">"Үнсүз"</string>
+    <string name="onscreenAddCallText" msgid="5140385634712287403">"Чалуу кошуу"</string>
+    <string name="onscreenMergeCallsText" msgid="6640195098064538950">"Чалууларды бириктирүү"</string>
+    <string name="onscreenSwapCallsText" msgid="1602990689244030047">"Алмаштыруу"</string>
+    <string name="onscreenManageCallsText" msgid="5473231160123254154">"Чалууларды башкаруу"</string>
+    <string name="onscreenManageConferenceText" msgid="6801708317570467407">"Конференц-чалууну башкаруу"</string>
+    <string name="onscreenAudioText" msgid="1710087112800041743">"Аудио"</string>
+    <string name="onscreenVideoCallText" msgid="4800924186056115442">"Видео чалуу"</string>
+    <string name="onscreenChangeToVoiceText" msgid="5311407863653867937">"Үн чалууга өзгөртүү"</string>
+    <string name="onscreenSwitchCameraText" msgid="5324543493442787798">"Камерага которулуу"</string>
+    <string name="onscreenPauseVideoText" msgid="5663965924921429203">"Видеону бир азга токтото туруу"</string>
+    <string name="onscreenOverflowText" msgid="2702376562345723132">"Көбүрөөк параметрлер"</string>
+    <string name="player_started" msgid="6046262510243983589">"Ойноткуч башталды"</string>
+    <string name="player_stopped" msgid="8856926759436364963">"Ойноткуч токтотулду"</string>
+    <string name="camera_not_ready" msgid="4955261496193316240">"Камера даяр эмес"</string>
+    <string name="camera_ready" msgid="1903335385405807324">"Камера даяр"</string>
+    <string name="unknown_call_session_event" msgid="2431061946920253582">"Чалуу сеансынын окуясы белгисиз"</string>
+    <string name="voicemail_provider" msgid="5135942703327136909">"Кызмат"</string>
+    <string name="voicemail_settings" msgid="72448049107749316">"Орнотуу"</string>
+    <string name="voicemail_number_not_set" msgid="6724904736891087856">"&lt;Орнотулган эмес&gt;"</string>
+    <string name="other_settings" msgid="3672912580359716394">"Башка чалуу жөндөөлөрү"</string>
+    <string name="calling_via_template" msgid="4839419581866928142">"<xliff:g id="PROVIDER_NAME">%s</xliff:g> аркылуу чалуу"</string>
+    <string name="incoming_via_template" msgid="1696993226115570960">"<xliff:g id="PROVIDER_NAME">%s</xliff:g> аркылуу келүүдө"</string>
+    <string name="contactPhoto" msgid="4713193418046639466">"байланыштын сүрөтү"</string>
+    <string name="goPrivate" msgid="865837794424530980">"купуя режимине өтүү"</string>
+    <string name="selectContact" msgid="781975788478987237">"байланыш тандоо"</string>
+    <string name="respond_via_sms_custom_message" msgid="6158880869935281078">"Каалганыңызды жазыңыз..."</string>
+    <string name="custom_message_cancel" msgid="7516406059429609296">"Жокко чыгаруу"</string>
+    <string name="custom_message_send" msgid="5795754217085747742">"Жөнөтүү"</string>
+    <string name="description_target_answer" msgid="7205604197797472471">"Жооп берүү"</string>
+    <string name="description_target_send_sms" msgid="2098326025587950144">"SMS жөнөтүү"</string>
+    <string name="description_target_decline" msgid="4789834364389731957">"Четке кагуу"</string>
+    <string name="description_target_answer_video_call" msgid="3495965588512395026">"Видео чалуу түрүндө жооп берүү"</string>
+    <string name="description_target_answer_audio_call" msgid="8396296303320994450">"Аудио чалуу жооп берүү"</string>
+    <string name="description_target_accept_upgrade_to_video_request" msgid="2894072808324604062">"Видео сурамын кабыл алуу"</string>
+    <string name="description_target_decline_upgrade_to_video_request" msgid="4093888612888538776">"Видео сурамын четке кагуу"</string>
+    <string name="description_target_accept_upgrade_to_video_transmit_request" msgid="5311037889642077468">"Видео өткөрүү өтүнүчүн кабыл алуу"</string>
+    <string name="description_target_decline_upgrade_to_video_transmit_request" msgid="3636108065510415975">"Видео өткөрүү өтүнүчүн четке кагуу"</string>
+    <string name="description_target_accept_upgrade_to_video_receive_request" msgid="8668058323593087912">"Видео алуу өтүнүчүн кабыл алуу"</string>
+    <string name="description_target_decline_upgrade_to_video_receive_request" msgid="2355776509656298367">"Видео алуу өтүнүчүн четке кагуу"</string>
+    <string name="description_direction_up" msgid="4441409581444516690">"<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> үчүн жогору жылмыштырыңыз."</string>
+    <string name="description_direction_left" msgid="7129873384376533287">"<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> үчүн солго жылмыштырыңыз."</string>
+    <string name="description_direction_right" msgid="2122584234531957308">"<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> үчүн оңго жылмыштырыңыз."</string>
+    <string name="description_direction_down" msgid="4317245625565166742">"<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> үчүн төмөн сылап коюңуз."</string>
+    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Титиретүү"</string>
+    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Титиретүү"</string>
+    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Үнү"</string>
+    <string name="default_notification_description" msgid="78174796906240970">"Абалкы үнү (<xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g>)"</string>
+    <string name="ringtone_title" msgid="6374978286202084684">"Телефондун рингтону"</string>
+    <string name="vibrate_on_ring_title" msgid="9197564612065258960">"Шыңгырап жатканда титиретүү"</string>
+    <string name="preference_category_ringtone" msgid="5197960752529332721">"Рингтон жана Титирөө"</string>
+    <string name="manageConferenceLabel" msgid="4691922394301969053">"Конференц-чалууну башкаруу"</string>
+    <string name="emergency_call_dialog_number_for_display" msgid="8373041754188879871">"Куткаруучулардын номуру"</string>
+    <plurals name="duration_seconds" formatted="false" msgid="59971978269163609">
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> секунд</item>
+      <item quantity="one">1 секунд</item>
+    </plurals>
+    <plurals name="duration_minutes" formatted="false" msgid="1103289948818175408">
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> мүнөт</item>
+      <item quantity="one">1 мүнөт</item>
+    </plurals>
+    <plurals name="duration_hours" formatted="false" msgid="7560637459014865969">
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> саат</item>
+      <item quantity="one">1 саат</item>
+    </plurals>
+    <string name="profile_photo_description" msgid="5609894336203315400">"Профиль сүрөтү"</string>
+    <string name="camera_off_description" msgid="5689494614359429889">"Камера өчүк"</string>
+    <string name="child_number" msgid="7437330400723805538">"<xliff:g id="CHILD_NUMBER">%s</xliff:g> аркылуу"</string>
+    <string name="note_sent" msgid="3548700178238244595">"Билдирүү жөнөтүлдү"</string>
+    <string name="person_contact_context_title" msgid="723266617256740572">"Акыркы билдирүүлөр"</string>
+    <string name="business_contact_context_title" msgid="5334864183374669765">"Ишкердик маалыматы"</string>
+    <string name="distance_imperial_away" msgid="437508440176409037">"<xliff:g id="DISTANCE">%.1f</xliff:g> миля алыста"</string>
+    <string name="distance_metric_away" msgid="166931929505893599">"<xliff:g id="DISTANCE">%.1f</xliff:g> км алыста"</string>
+    <string name="display_address" msgid="7307400970699471708">"<xliff:g id="STREET_ADDRESS">%1$s</xliff:g>, <xliff:g id="LOCALITY">%2$s</xliff:g>"</string>
+    <string name="open_time_span" msgid="6709726401179550381">"<xliff:g id="OPEN_TIME">%1$s</xliff:g> - <xliff:g id="CLOSE_TIME">%2$s</xliff:g>"</string>
+    <string name="opening_hours" msgid="8524931350345922176">"<xliff:g id="EARLIER_TIMES">%1$s</xliff:g>, <xliff:g id="LATER_TIME">%2$s</xliff:g>"</string>
+    <string name="opens_tomorrow_at" msgid="9168271983241323946">"Эртең саат <xliff:g id="OPEN_TIME">%s</xliff:g> ачылат"</string>
+    <string name="opens_today_at" msgid="9011139983701379907">"Бүгүн саат <xliff:g id="OPEN_TIME">%s</xliff:g> ачылат"</string>
+    <string name="closes_today_at" msgid="2623384032475495193">"Саат <xliff:g id="CLOSE_TIME">%s</xliff:g> жабылат"</string>
+    <string name="closed_today_at" msgid="324294933330883529">"Бүгүн саат <xliff:g id="CLOSE_TIME">%s</xliff:g> жабылды"</string>
+    <string name="open_now" msgid="6439301193613349163">"Эми ачылды"</string>
+    <string name="closed_now" msgid="9175774453982778909">"Эми жабылды"</string>
+</resources>
diff --git a/InCallUI/res/values-lo-rLA/strings.xml b/InCallUI/res/values-lo-rLA/strings.xml
index 3986994..9bbbca3 100644
--- a/InCallUI/res/values-lo-rLA/strings.xml
+++ b/InCallUI/res/values-lo-rLA/strings.xml
@@ -49,7 +49,7 @@
     <string name="card_title_video_call" msgid="5898636679563320218">"ໂທ​ແບບ​ເຫັນ​ໜ້າ"</string>
     <string name="card_title_video_call_requesting" msgid="4587504939739340937">"​ກຳ​ລັງ​ຮ້ອງ​ຂໍ​ວິ​ດີ​ໂອ"</string>
     <string name="card_title_video_call_error" msgid="9000555878389539225">"ບໍ່​ສາ​ມາດ​ເຊື່ອມ​ຕໍ່​ການ​ໂທເຫັນພາບ​ໄດ້"</string>
-    <string name="card_title_video_call_paused" msgid="3753261320787432731">"ໂທເຫັນພາບ (ຢຸດ​ແລ້ວ)"</string>
+    <string name="card_title_video_call_rejected" msgid="462358296694719787">"ປະ​ຕິ​ເສດ​ການ​ຂໍ​ວິ​ດີ​ໂອ​ແລ້ວ"</string>
     <string name="card_title_callback_number" msgid="7307938207564217293">"ເບີ​ໂທ​ກັບ​ຂອງ​ທ່ານ\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"ເບີ​ໂທ​ກັບ​ສຸກ​ເສີນ​ຂອງ​ທ່ານ\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="notification_dialing" msgid="2107666444937350731">"ກຳລັງໂທ"</string>
@@ -152,7 +152,6 @@
     <string name="default_notification_description" msgid="78174796906240970">"ສຽງເລີ່ມຕົ້ນ (<xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g>)"</string>
     <string name="ringtone_title" msgid="6374978286202084684">"ຣິງໂທນໂທລະສັບ"</string>
     <string name="vibrate_on_ring_title" msgid="9197564612065258960">"ສັ່ນເຕືອນເມື່ອມີສາຍໂທເຂົ້າ"</string>
-    <string name="dial_pad_autocomplete" msgid="7683489952557536398">"ຕື່ມ​ໃສ່​ແປ້ນ​ກົດ​ໂທ​ອັດ​ຕະ​ໂນ​ມັດ"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"ຣິງໂທນ &amp; ການສັ່ນເຕືອນ"</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"ຈັດການການປະຊຸມສາຍ"</string>
     <string name="emergency_call_dialog_number_for_display" msgid="8373041754188879871">"ເບີໂທສຸກເສີນ"</string>
@@ -168,4 +167,21 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> ຊົ່ວ​ໂມງ</item>
       <item quantity="one">1 ຊົ່ວໂມງ</item>
     </plurals>
+    <string name="profile_photo_description" msgid="5609894336203315400">"ຮູບໂປຣໄຟລ໌"</string>
+    <string name="camera_off_description" msgid="5689494614359429889">"ກ້ອງ​ຖ່າຍ​ຮູບ​ປິດ"</string>
+    <string name="child_number" msgid="7437330400723805538">"ຜ່ານ <xliff:g id="CHILD_NUMBER">%s</xliff:g>"</string>
+    <string name="note_sent" msgid="3548700178238244595">"ສົ່ງ​ບັນ​ທຶກ​ແລ້ວ"</string>
+    <string name="person_contact_context_title" msgid="723266617256740572">"ຂໍ້​ຄວາມ​ບໍ່​ດົນ​ມາ​ນີ້"</string>
+    <string name="business_contact_context_title" msgid="5334864183374669765">"ຂໍ້​ມູນ​ທຸ​ລະ​ກິດ"</string>
+    <string name="distance_imperial_away" msgid="437508440176409037">"<xliff:g id="DISTANCE">%.1f</xliff:g> ໄມ​ລ໌​ ຫ່າງ​ອອກ​ໄປ"</string>
+    <string name="distance_metric_away" msgid="166931929505893599">"<xliff:g id="DISTANCE">%.1f</xliff:g> ກມ ຫ່າງ​ອອກ​ໄປ"</string>
+    <string name="display_address" msgid="7307400970699471708">"<xliff:g id="STREET_ADDRESS">%1$s</xliff:g>, <xliff:g id="LOCALITY">%2$s</xliff:g>"</string>
+    <string name="open_time_span" msgid="6709726401179550381">"<xliff:g id="OPEN_TIME">%1$s</xliff:g> - <xliff:g id="CLOSE_TIME">%2$s</xliff:g>"</string>
+    <string name="opening_hours" msgid="8524931350345922176">"<xliff:g id="EARLIER_TIMES">%1$s</xliff:g>, <xliff:g id="LATER_TIME">%2$s</xliff:g>"</string>
+    <string name="opens_tomorrow_at" msgid="9168271983241323946">"ເປີດມື້ອື່ນເວລາ <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="opens_today_at" msgid="9011139983701379907">"ເປີດມື້ນີ້ເວລາ <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="closes_today_at" msgid="2623384032475495193">"ປິດເວລາ <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="closed_today_at" msgid="324294933330883529">"ປິດແລ້ວມື້ນີ້ເວລາ <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="open_now" msgid="6439301193613349163">"ດຽວ​ນີ້​ເປີດ"</string>
+    <string name="closed_now" msgid="9175774453982778909">"ດຽວ​ນີ້​ປິດ​ແລ້ວ"</string>
 </resources>
diff --git a/InCallUI/res/values-lt/strings.xml b/InCallUI/res/values-lt/strings.xml
index e18916a..e00ae85 100644
--- a/InCallUI/res/values-lt/strings.xml
+++ b/InCallUI/res/values-lt/strings.xml
@@ -49,7 +49,7 @@
     <string name="card_title_video_call" msgid="5898636679563320218">"Vaizdo skambutis"</string>
     <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Pateikiama vaizdo skambučio užklausa"</string>
     <string name="card_title_video_call_error" msgid="9000555878389539225">"Nepavyko prijungti vaizdo įrašo skambučio"</string>
-    <string name="card_title_video_call_paused" msgid="3753261320787432731">"Vaizdo skambutis (pristabdytas)"</string>
+    <string name="card_title_video_call_rejected" msgid="462358296694719787">"Vaizdo įrašo užklausa atmesta"</string>
     <string name="card_title_callback_number" msgid="7307938207564217293">"Atskambinimo numeris\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Atskambinimo numeris, kuriuos skambina pagalbos tarnyba\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="notification_dialing" msgid="2107666444937350731">"Renkamas numeris"</string>
@@ -123,7 +123,7 @@
     <string name="voicemail_settings" msgid="72448049107749316">"Sąranka"</string>
     <string name="voicemail_number_not_set" msgid="6724904736891087856">"&lt;Nenustatyta&gt;"</string>
     <string name="other_settings" msgid="3672912580359716394">"Kiti skambučio nustatymai"</string>
-    <string name="calling_via_template" msgid="4839419581866928142">"Skambinama naudojantis „<xliff:g id="PROVIDER_NAME">%s</xliff:g>“ paslaugomis"</string>
+    <string name="calling_via_template" msgid="4839419581866928142">"Skam. naudojant „<xliff:g id="PROVIDER_NAME">%s</xliff:g>“"</string>
     <string name="incoming_via_template" msgid="1696993226115570960">"Gaunama per „<xliff:g id="PROVIDER_NAME">%s</xliff:g>“"</string>
     <string name="contactPhoto" msgid="4713193418046639466">"kontakto nuotrauka"</string>
     <string name="goPrivate" msgid="865837794424530980">"naudoti privatų režimą"</string>
@@ -152,7 +152,6 @@
     <string name="default_notification_description" msgid="78174796906240970">"Numatytasis garsas (<xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g>)"</string>
     <string name="ringtone_title" msgid="6374978286202084684">"Telefono skambėjimo tonas"</string>
     <string name="vibrate_on_ring_title" msgid="9197564612065258960">"Vibruoti, kai skambina"</string>
-    <string name="dial_pad_autocomplete" msgid="7683489952557536398">"Autom. skamb. skyd. užbaig."</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Skambėjimo tonas ir vibracija"</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"Valdyti konferencinį skambutį"</string>
     <string name="emergency_call_dialog_number_for_display" msgid="8373041754188879871">"Pagalbos numeris"</string>
@@ -174,4 +173,21 @@
       <item quantity="many"><xliff:g id="COUNT">%d</xliff:g> valandos</item>
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> valandų</item>
     </plurals>
+    <string name="profile_photo_description" msgid="5609894336203315400">"Profilio nuotrauka"</string>
+    <string name="camera_off_description" msgid="5689494614359429889">"Fotoaparatas išjungtas"</string>
+    <string name="child_number" msgid="7437330400723805538">"naudojant <xliff:g id="CHILD_NUMBER">%s</xliff:g>"</string>
+    <string name="note_sent" msgid="3548700178238244595">"Užrašas išsiųstas"</string>
+    <string name="person_contact_context_title" msgid="723266617256740572">"Naujausi pranešimai"</string>
+    <string name="business_contact_context_title" msgid="5334864183374669765">"Verslo informacija"</string>
+    <string name="distance_imperial_away" msgid="437508440176409037">"Už <xliff:g id="DISTANCE">%.1f</xliff:g> myl."</string>
+    <string name="distance_metric_away" msgid="166931929505893599">"Už <xliff:g id="DISTANCE">%.1f</xliff:g> km"</string>
+    <string name="display_address" msgid="7307400970699471708">"<xliff:g id="STREET_ADDRESS">%1$s</xliff:g>, <xliff:g id="LOCALITY">%2$s</xliff:g>"</string>
+    <string name="open_time_span" msgid="6709726401179550381">"<xliff:g id="OPEN_TIME">%1$s</xliff:g>–<xliff:g id="CLOSE_TIME">%2$s</xliff:g>"</string>
+    <string name="opening_hours" msgid="8524931350345922176">"<xliff:g id="EARLIER_TIMES">%1$s</xliff:g>, <xliff:g id="LATER_TIME">%2$s</xliff:g>"</string>
+    <string name="opens_tomorrow_at" msgid="9168271983241323946">"Rytoj atidaroma <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="opens_today_at" msgid="9011139983701379907">"Šiandien atidaroma <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="closes_today_at" msgid="2623384032475495193">"Uždaroma <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="closed_today_at" msgid="324294933330883529">"Šiandien uždaryta <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="open_now" msgid="6439301193613349163">"Dabar atidaryta"</string>
+    <string name="closed_now" msgid="9175774453982778909">"Dabar uždaryta"</string>
 </resources>
diff --git a/InCallUI/res/values-lv/strings.xml b/InCallUI/res/values-lv/strings.xml
index 02fc4ae..752d8cf 100644
--- a/InCallUI/res/values-lv/strings.xml
+++ b/InCallUI/res/values-lv/strings.xml
@@ -49,7 +49,7 @@
     <string name="card_title_video_call" msgid="5898636679563320218">"Videozvans"</string>
     <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Notiek video pieprasīšana"</string>
     <string name="card_title_video_call_error" msgid="9000555878389539225">"Nevar veikt videozvanu"</string>
-    <string name="card_title_video_call_paused" msgid="3753261320787432731">"Videozvans (pārtraukts)"</string>
+    <string name="card_title_video_call_rejected" msgid="462358296694719787">"Video pieprasījums noraidīts"</string>
     <string name="card_title_callback_number" msgid="7307938207564217293">"Jūsu atzvana numurs\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Jūsu ārkārtas atzvana numurs\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="notification_dialing" msgid="2107666444937350731">"Notiek numura sastādīšana"</string>
@@ -123,7 +123,7 @@
     <string name="voicemail_settings" msgid="72448049107749316">"Iestatīšana"</string>
     <string name="voicemail_number_not_set" msgid="6724904736891087856">"&lt;Nav iestatīts&gt;"</string>
     <string name="other_settings" msgid="3672912580359716394">"Citi zvanu iestatījumi"</string>
-    <string name="calling_via_template" msgid="4839419581866928142">"Zvans, ko nodrošina <xliff:g id="PROVIDER_NAME">%s</xliff:g>"</string>
+    <string name="calling_via_template" msgid="4839419581866928142">"Zvanu nodrošina <xliff:g id="PROVIDER_NAME">%s</xliff:g>"</string>
     <string name="incoming_via_template" msgid="1696993226115570960">"Ienākošie zvani, ko nodrošina <xliff:g id="PROVIDER_NAME">%s</xliff:g>"</string>
     <string name="contactPhoto" msgid="4713193418046639466">"kontaktpersonas fotoattēls"</string>
     <string name="goPrivate" msgid="865837794424530980">"pārslēgt uz privāto režīmu"</string>
@@ -152,7 +152,6 @@
     <string name="default_notification_description" msgid="78174796906240970">"Noklusējuma signāls (<xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g>)"</string>
     <string name="ringtone_title" msgid="6374978286202084684">"Tālruņa zvana signāls"</string>
     <string name="vibrate_on_ring_title" msgid="9197564612065258960">"Vibrēt zvanot"</string>
-    <string name="dial_pad_autocomplete" msgid="7683489952557536398">"Numura automātiska pabeigšana"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Zvana signāls un vibrācija"</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"Pārvaldīt konferences zvanu"</string>
     <string name="emergency_call_dialog_number_for_display" msgid="8373041754188879871">"Ārkārtas numurs"</string>
@@ -171,4 +170,21 @@
       <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> stunda</item>
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> stundas</item>
     </plurals>
+    <string name="profile_photo_description" msgid="5609894336203315400">"Profila fotoattēls"</string>
+    <string name="camera_off_description" msgid="5689494614359429889">"Izslēgt kameru"</string>
+    <string name="child_number" msgid="7437330400723805538">"no numura <xliff:g id="CHILD_NUMBER">%s</xliff:g>"</string>
+    <string name="note_sent" msgid="3548700178238244595">"Piezīme nosūtīta"</string>
+    <string name="person_contact_context_title" msgid="723266617256740572">"Pēdējie ziņojumi"</string>
+    <string name="business_contact_context_title" msgid="5334864183374669765">"Informācija par uzņēmumu"</string>
+    <string name="distance_imperial_away" msgid="437508440176409037">"<xliff:g id="DISTANCE">%.1f</xliff:g> jūdzes(-džu) attālumā"</string>
+    <string name="distance_metric_away" msgid="166931929505893599">"<xliff:g id="DISTANCE">%.1f</xliff:g> km attālumā"</string>
+    <string name="display_address" msgid="7307400970699471708">"<xliff:g id="STREET_ADDRESS">%1$s</xliff:g>, <xliff:g id="LOCALITY">%2$s</xliff:g>"</string>
+    <string name="open_time_span" msgid="6709726401179550381">"<xliff:g id="OPEN_TIME">%1$s</xliff:g>–<xliff:g id="CLOSE_TIME">%2$s</xliff:g>"</string>
+    <string name="opening_hours" msgid="8524931350345922176">"<xliff:g id="EARLIER_TIMES">%1$s</xliff:g>, <xliff:g id="LATER_TIME">%2$s</xliff:g>"</string>
+    <string name="opens_tomorrow_at" msgid="9168271983241323946">"Tiks atvērts rīt plkst. <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="opens_today_at" msgid="9011139983701379907">"Tiks atvērts šodien plkst. <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="closes_today_at" msgid="2623384032475495193">"Tiks slēgts plkst. <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="closed_today_at" msgid="324294933330883529">"Tika slēgts šodien plkst. <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="open_now" msgid="6439301193613349163">"Atvērts"</string>
+    <string name="closed_now" msgid="9175774453982778909">"Slēgts"</string>
 </resources>
diff --git a/InCallUI/res/values-mk-rMK/strings.xml b/InCallUI/res/values-mk-rMK/strings.xml
new file mode 100644
index 0000000..6699bb5
--- /dev/null
+++ b/InCallUI/res/values-mk-rMK/strings.xml
@@ -0,0 +1,187 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2013 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="phoneAppLabel" product="default" msgid="906161039445636857">"Телефон"</string>
+    <string name="onHold" msgid="9035493194749959955">"На чекање"</string>
+    <string name="unknown" msgid="6878797917991465859">"Непознато"</string>
+    <string name="private_num" msgid="6713286113000232309">"Приватен број"</string>
+    <string name="payphone" msgid="4793877574636445118">"Говорница"</string>
+    <string name="confCall" msgid="1904840547188336828">"Конференциски повик"</string>
+    <string name="call_lost" msgid="6183862117003999578">"Повикот е испуштен"</string>
+    <string name="audio_mode_speaker" msgid="27649582100085266">"Звучник"</string>
+    <string name="audio_mode_earpiece" msgid="4156527186373869107">"Слушалка"</string>
+    <string name="audio_mode_wired_headset" msgid="1465350758489175975">"Жични слушалки"</string>
+    <string name="audio_mode_bluetooth" msgid="3047641300848211128">"Bluetooth"</string>
+    <string name="wait_prompt_str" msgid="7601815427707856238">"Испрати ги следниве тонови?\n"</string>
+    <string name="pause_prompt_str" msgid="1789964702154314806">"Испраќање тонови\n"</string>
+    <string name="send_button" msgid="4106860097497818751">"Испрати"</string>
+    <string name="pause_prompt_yes" msgid="3564467212025151797">"Да"</string>
+    <string name="pause_prompt_no" msgid="6686238803236884877">"Не"</string>
+    <string name="wild_prompt_str" msgid="5543521676355533577">"Замени резервен знак со"</string>
+    <string name="caller_manage_header" msgid="3231519674734638786">"Конференциски повик <xliff:g id="CONF_CALL_TIME">%s</xliff:g>"</string>
+    <string name="voicemail_settings_number_label" msgid="8524164258691887790">"Број на говорна пошта"</string>
+    <string name="card_title_dialing" msgid="5769417478498348054">"Бирање"</string>
+    <string name="card_title_redialing" msgid="8253487008234167266">"Повторно бирање"</string>
+    <string name="card_title_conf_call" msgid="1162980346189744501">"Конференциски повик"</string>
+    <string name="card_title_incoming_call" msgid="7364539451234646909">"Дојдовен повик"</string>
+    <string name="card_title_call_ended" msgid="5544730338889702298">"Повикот заврши"</string>
+    <string name="card_title_on_hold" msgid="821463117892339942">"На чекање"</string>
+    <string name="card_title_hanging_up" msgid="3999101620995182450">"Прекинување повик"</string>
+    <string name="card_title_in_call" msgid="6346543933068225205">"Повик во тек"</string>
+    <string name="card_title_my_phone_number" msgid="112428362494434191">"Мојот број е <xliff:g id="MY_PHONE_NUMBER">%s</xliff:g>"</string>
+    <string name="card_title_video_call_connecting" msgid="297586766381973954">"Се поврзува видео"</string>
+    <string name="card_title_video_call" msgid="5898636679563320218">"Видеоповик"</string>
+    <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Се побарува видео"</string>
+    <string name="card_title_video_call_error" msgid="9000555878389539225">"Не може да поврзе видеоповик"</string>
+    <string name="card_title_video_call_rejected" msgid="462358296694719787">"Барањето за видео е одбиено"</string>
+    <string name="card_title_callback_number" msgid="7307938207564217293">"Вашиот број за повратен повик\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
+    <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Вашиот број за итен повик\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
+    <string name="notification_dialing" msgid="2107666444937350731">"Бирање"</string>
+    <string name="notification_missedCallTitle" msgid="7554385905572364535">"Пропуштен повик"</string>
+    <string name="notification_missedCallsTitle" msgid="1361677948941502522">"Пропуштени повици"</string>
+    <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> пропуштени повици"</string>
+    <string name="notification_missedCallTicker" msgid="504686252427747209">"Пропуштен повик од <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
+    <string name="notification_ongoing_call" msgid="7068688957273482989">"Тековен повик"</string>
+    <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"Појдовен повик преку Wi-Fi"</string>
+    <string name="notification_on_hold" msgid="3480694969511790465">"На чекање"</string>
+    <string name="notification_incoming_call" msgid="2820429205043529642">"Дојдовен повик"</string>
+    <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"Дојдовен повик преку Wi-Fi"</string>
+    <string name="notification_incoming_video_call" msgid="7356836933934464805">"Дојдовен видеоповик"</string>
+    <string name="notification_requesting_video_call" msgid="1405576812892369451">"Дојдовно побарување за видео"</string>
+    <string name="notification_voicemail_title" msgid="8933468752045550523">"Нова говорна пошта"</string>
+    <string name="notification_voicemail_title_count" msgid="4366360747660929916">"Нова говорна пошта (<xliff:g id="COUNT">%d</xliff:g>)"</string>
+    <string name="notification_voicemail_text_format" msgid="4447323569453981685">"Бирај <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
+    <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"Бројот на говорна пошта е непознат"</string>
+    <string name="notification_network_selection_title" msgid="4224455487793492772">"Нема услуга"</string>
+    <string name="notification_network_selection_text" msgid="2607085729661923269">"Одбраната мрежа (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) е недостапна"</string>
+    <string name="notification_action_answer" msgid="6700362365135365143">"Одговори"</string>
+    <string name="notification_action_end_call" msgid="6069460915123531620">"Спушти"</string>
+    <string name="notification_action_answer_video" msgid="7809271910870211729">"Видео"</string>
+    <string name="notification_action_answer_voice" msgid="1770796916369437773">"Гласовен"</string>
+    <string name="notification_action_accept" msgid="2898609801209468429">"Прифати"</string>
+    <string name="notification_action_dismiss" msgid="2679969397930852858">"Отфрли"</string>
+    <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Повикува назад"</string>
+    <string name="notification_missedCall_message" msgid="3049928912736917988">"Порака"</string>
+    <string name="incall_error_power_off" msgid="6550191216405193368">"За да воспоставите повик, прво исклучете режим на работа во авион."</string>
+    <string name="incall_error_emergency_only" msgid="4678640422710818317">"Не е регистриран на мрежа."</string>
+    <string name="incall_error_out_of_service" msgid="4100065333878929223">"Не е достапна мобилна мрежа."</string>
+    <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"За да повикате, внесете важечки број."</string>
+    <string name="incall_error_call_failed" msgid="6302746943230078197">"Не може да повика."</string>
+    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"Започнува MMI низа..."</string>
+    <string name="incall_error_supp_service_unknown" msgid="323435289607131929">"Услугата не е поддржана."</string>
+    <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"Не може да префрли повици."</string>
+    <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"Не може да оддели повик."</string>
+    <string name="incall_error_supp_service_transfer" msgid="7235952238189391438">"Не може да пренесе."</string>
+    <string name="incall_error_supp_service_conference" msgid="7010354362202271726">"Не може да влезе во конференција."</string>
+    <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Не може да отфрли повик."</string>
+    <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Не може да реализира повик(ци)."</string>
+    <string name="incall_call_type_label_sip" msgid="4931428719494190371">"Повик преку СИП"</string>
+    <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Повик за итни случаи"</string>
+    <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Вклучување радио..."</string>
+    <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Нема услуга. Се обидува повторно…"</string>
+    <string name="dial_emergency_error" msgid="1509085166367420355">"Не може да повика. <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> не е број за итни повици."</string>
+    <string name="dial_emergency_empty_error" msgid="9130194953830414638">"Не може да повика. Бирајте го бројот за итни повици."</string>
+    <string name="dialerKeyboardHintText" msgid="9192914825413747792">"Користи тастатурата за бирање"</string>
+    <string name="onscreenHoldText_unselected" msgid="7092499303393171276">"Ставете повик на чекање"</string>
+    <string name="onscreenHoldText_selected" msgid="7127901498507384249">"Продолжете повик"</string>
+    <string name="onscreenEndCallText" msgid="9039601192595655846">"Завршете повик"</string>
+    <string name="onscreenShowDialpadText" msgid="8561805492659639893">"Тастатура за бирање"</string>
+    <string name="onscreenMuteText" msgid="5011369181754261374">"Исклучи звук"</string>
+    <string name="onscreenAddCallText" msgid="5140385634712287403">"Додај повик"</string>
+    <string name="onscreenMergeCallsText" msgid="6640195098064538950">"Спој повици"</string>
+    <string name="onscreenSwapCallsText" msgid="1602990689244030047">"Замени"</string>
+    <string name="onscreenManageCallsText" msgid="5473231160123254154">"Управувај со повици"</string>
+    <string name="onscreenManageConferenceText" msgid="6801708317570467407">"Управувај со повикот"</string>
+    <string name="onscreenAudioText" msgid="1710087112800041743">"Аудио"</string>
+    <string name="onscreenVideoCallText" msgid="4800924186056115442">"Видео повик"</string>
+    <string name="onscreenChangeToVoiceText" msgid="5311407863653867937">"Промени во гласовен повик"</string>
+    <string name="onscreenSwitchCameraText" msgid="5324543493442787798">"Префрли фотоапарат"</string>
+    <string name="onscreenPauseVideoText" msgid="5663965924921429203">"Паузирај видео"</string>
+    <string name="onscreenOverflowText" msgid="2702376562345723132">"Повеќе опции"</string>
+    <string name="player_started" msgid="6046262510243983589">"Плеерот започна"</string>
+    <string name="player_stopped" msgid="8856926759436364963">"Плеерот запре"</string>
+    <string name="camera_not_ready" msgid="4955261496193316240">"Камерата не е подготвена"</string>
+    <string name="camera_ready" msgid="1903335385405807324">"Камерата е подготвена"</string>
+    <string name="unknown_call_session_event" msgid="2431061946920253582">"Непознат настан на сесија на повик"</string>
+    <string name="voicemail_provider" msgid="5135942703327136909">"Услуга"</string>
+    <string name="voicemail_settings" msgid="72448049107749316">"Подесување"</string>
+    <string name="voicemail_number_not_set" msgid="6724904736891087856">"&lt;Не е подесен&gt;"</string>
+    <string name="other_settings" msgid="3672912580359716394">"Други подесувања на повик"</string>
+    <string name="calling_via_template" msgid="4839419581866928142">"Повикување преку <xliff:g id="PROVIDER_NAME">%s</xliff:g>"</string>
+    <string name="incoming_via_template" msgid="1696993226115570960">"Дојдовни повици преку <xliff:g id="PROVIDER_NAME">%s</xliff:g>"</string>
+    <string name="contactPhoto" msgid="4713193418046639466">"фотографија за контакт"</string>
+    <string name="goPrivate" msgid="865837794424530980">"префли на приватно"</string>
+    <string name="selectContact" msgid="781975788478987237">"избери контакт"</string>
+    <string name="respond_via_sms_custom_message" msgid="6158880869935281078">"Напиши сопствена..."</string>
+    <string name="custom_message_cancel" msgid="7516406059429609296">"Откажи"</string>
+    <string name="custom_message_send" msgid="5795754217085747742">"Испрати"</string>
+    <string name="description_target_answer" msgid="7205604197797472471">"Одговори"</string>
+    <string name="description_target_send_sms" msgid="2098326025587950144">"Испрати СМС"</string>
+    <string name="description_target_decline" msgid="4789834364389731957">"Одбиј"</string>
+    <string name="description_target_answer_video_call" msgid="3495965588512395026">"Одговори со видеоповик"</string>
+    <string name="description_target_answer_audio_call" msgid="8396296303320994450">"Одговори со аудиоповик"</string>
+    <string name="description_target_accept_upgrade_to_video_request" msgid="2894072808324604062">"Прифати барање за видео"</string>
+    <string name="description_target_decline_upgrade_to_video_request" msgid="4093888612888538776">"Одбиј барање за видео"</string>
+    <string name="description_target_accept_upgrade_to_video_transmit_request" msgid="5311037889642077468">"Прифати барање за пренос на видео"</string>
+    <string name="description_target_decline_upgrade_to_video_transmit_request" msgid="3636108065510415975">"Одбиј барање за пренос на видео"</string>
+    <string name="description_target_accept_upgrade_to_video_receive_request" msgid="8668058323593087912">"Прифати барање за прием на видео"</string>
+    <string name="description_target_decline_upgrade_to_video_receive_request" msgid="2355776509656298367">"Одбиј барање за прием на видео"</string>
+    <string name="description_direction_up" msgid="4441409581444516690">"Лизгај нагоре за <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+    <string name="description_direction_left" msgid="7129873384376533287">"Лизгај налево за <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+    <string name="description_direction_right" msgid="2122584234531957308">"Лизгај надесно за <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+    <string name="description_direction_down" msgid="4317245625565166742">"Лизгај надолу за <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Вибрирање"</string>
+    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Вибрирање"</string>
+    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Звук"</string>
+    <string name="default_notification_description" msgid="78174796906240970">"Стандарден звук (<xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g>)"</string>
+    <string name="ringtone_title" msgid="6374978286202084684">"Мелодија на телефон"</string>
+    <string name="vibrate_on_ring_title" msgid="9197564612065258960">"Вибрирај кога ѕвони"</string>
+    <string name="preference_category_ringtone" msgid="5197960752529332721">"Мелодија и вибрации"</string>
+    <string name="manageConferenceLabel" msgid="4691922394301969053">"Управувај со конференциски повик"</string>
+    <string name="emergency_call_dialog_number_for_display" msgid="8373041754188879871">"Број за итни случаи"</string>
+    <plurals name="duration_seconds" formatted="false" msgid="59971978269163609">
+      <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> секунда</item>
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> секунди</item>
+    </plurals>
+    <plurals name="duration_minutes" formatted="false" msgid="1103289948818175408">
+      <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> минута</item>
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> минути</item>
+    </plurals>
+    <plurals name="duration_hours" formatted="false" msgid="7560637459014865969">
+      <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> час</item>
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> часа</item>
+    </plurals>
+    <string name="profile_photo_description" msgid="5609894336203315400">"Фотографија на профил"</string>
+    <string name="camera_off_description" msgid="5689494614359429889">"Камерата е исклучена"</string>
+    <string name="child_number" msgid="7437330400723805538">"преку <xliff:g id="CHILD_NUMBER">%s</xliff:g>"</string>
+    <string name="note_sent" msgid="3548700178238244595">"Испратена е белешка"</string>
+    <string name="person_contact_context_title" msgid="723266617256740572">"Скорешни пораки"</string>
+    <string name="business_contact_context_title" msgid="5334864183374669765">"Бизнис информации"</string>
+    <string name="distance_imperial_away" msgid="437508440176409037">"Оддалечено <xliff:g id="DISTANCE">%.1f</xliff:g> ми"</string>
+    <string name="distance_metric_away" msgid="166931929505893599">"Оддалчено <xliff:g id="DISTANCE">%.1f</xliff:g> км"</string>
+    <string name="display_address" msgid="7307400970699471708">"<xliff:g id="STREET_ADDRESS">%1$s</xliff:g>, <xliff:g id="LOCALITY">%2$s</xliff:g>"</string>
+    <string name="open_time_span" msgid="6709726401179550381">"<xliff:g id="OPEN_TIME">%1$s</xliff:g> - <xliff:g id="CLOSE_TIME">%2$s</xliff:g>"</string>
+    <string name="opening_hours" msgid="8524931350345922176">"<xliff:g id="EARLIER_TIMES">%1$s</xliff:g>, <xliff:g id="LATER_TIME">%2$s</xliff:g>"</string>
+    <string name="opens_tomorrow_at" msgid="9168271983241323946">"Отвора утре во <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="opens_today_at" msgid="9011139983701379907">"Отвора денес во <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="closes_today_at" msgid="2623384032475495193">"Затвора во <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="closed_today_at" msgid="324294933330883529">"Затвори денес во <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="open_now" msgid="6439301193613349163">"Сега е отворено"</string>
+    <string name="closed_now" msgid="9175774453982778909">"Сега е затворено"</string>
+</resources>
diff --git a/InCallUI/res/values-ml-rIN/strings.xml b/InCallUI/res/values-ml-rIN/strings.xml
index bda73ac..58bec29 100644
--- a/InCallUI/res/values-ml-rIN/strings.xml
+++ b/InCallUI/res/values-ml-rIN/strings.xml
@@ -49,7 +49,7 @@
     <string name="card_title_video_call" msgid="5898636679563320218">"വീഡിയോ കോള്‍"</string>
     <string name="card_title_video_call_requesting" msgid="4587504939739340937">"വീഡിയോ അഭ്യർത്ഥിക്കുന്നു"</string>
     <string name="card_title_video_call_error" msgid="9000555878389539225">"വീഡിയോ കോളുമായി കണക്‌റ്റുചെയ്യാനാവില്ല"</string>
-    <string name="card_title_video_call_paused" msgid="3753261320787432731">"വീഡിയോ കോൾ (താൽക്കാലികമായി നിർത്തി)"</string>
+    <string name="card_title_video_call_rejected" msgid="462358296694719787">"വീഡിയോ അഭ്യർത്ഥന നിരസിച്ചു"</string>
     <string name="card_title_callback_number" msgid="7307938207564217293">"നിങ്ങൾ തിരിച്ചുവിളിക്കേണ്ട നമ്പർ\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"അടിയന്തിരമായി നിങ്ങൾ തിരിച്ചുവിളിക്കേണ്ട നമ്പർ\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="notification_dialing" msgid="2107666444937350731">"ഡയൽ ചെയ്യുന്നു"</string>
@@ -58,10 +58,10 @@
     <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> മിസ്‌ഡ് കോളുകൾ"</string>
     <string name="notification_missedCallTicker" msgid="504686252427747209">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g> എന്നതിൽ നിന്നുള്ള മിസ്‌ഡ് കോൾ"</string>
     <string name="notification_ongoing_call" msgid="7068688957273482989">"കോൾ സജീവമാണ്"</string>
-    <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"ഓൺഗോയിംഗ് Wi-Fi കോൾ"</string>
+    <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"ഓൺഗോയിംഗ് വൈഫൈ കോൾ"</string>
     <string name="notification_on_hold" msgid="3480694969511790465">"ഹോള്‍ഡിലാണ്"</string>
     <string name="notification_incoming_call" msgid="2820429205043529642">"ഇന്‍കമിംഗ് കോള്‍"</string>
-    <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"ഇൻകമിംഗ് Wi-Fi കോൾ"</string>
+    <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"ഇൻകമിംഗ് വൈഫൈ കോൾ"</string>
     <string name="notification_incoming_video_call" msgid="7356836933934464805">"ഇൻകമിംഗ് വീഡിയോ കോൾ"</string>
     <string name="notification_requesting_video_call" msgid="1405576812892369451">"ഇൻകമിംഗ് വീഡിയോ അഭ്യർത്ഥന"</string>
     <string name="notification_voicemail_title" msgid="8933468752045550523">"പുതിയ വോയ്‌സ്‌മെയിൽ"</string>
@@ -70,7 +70,7 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"വോയ്‌സ്‌മെയിൽ നമ്പർ അജ്ഞാതമാണ്"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"സേവനമില്ല"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"തിരഞ്ഞെടുത്ത നെറ്റ്‌വർക്ക് (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) ലഭ്യമല്ല"</string>
-    <string name="notification_action_answer" msgid="6700362365135365143">"മറുപടി നൽകുക"</string>
+    <string name="notification_action_answer" msgid="6700362365135365143">"മറുപടി"</string>
     <string name="notification_action_end_call" msgid="6069460915123531620">"ഹാംഗ് അപ്പ് ചെയ്യുക"</string>
     <string name="notification_action_answer_video" msgid="7809271910870211729">"വീഡിയോ"</string>
     <string name="notification_action_answer_voice" msgid="1770796916369437773">"വോയ്‌സ്"</string>
@@ -123,7 +123,7 @@
     <string name="voicemail_settings" msgid="72448049107749316">"സജ്ജമാക്കുക"</string>
     <string name="voicemail_number_not_set" msgid="6724904736891087856">"&lt;സജ്ജീകരിച്ചിട്ടില്ല&gt;"</string>
     <string name="other_settings" msgid="3672912580359716394">"മറ്റ് കോൾ ക്രമീകരണങ്ങൾ"</string>
-    <string name="calling_via_template" msgid="4839419581866928142">"<xliff:g id="PROVIDER_NAME">%s</xliff:g> മുഖേന വിളിക്കുന്നു"</string>
+    <string name="calling_via_template" msgid="4839419581866928142">"<xliff:g id="PROVIDER_NAME">%s</xliff:g> വഴി വിളിക്കുന്നു"</string>
     <string name="incoming_via_template" msgid="1696993226115570960">"<xliff:g id="PROVIDER_NAME">%s</xliff:g> മുഖേനയുള്ള ഇൻകമിംഗ്"</string>
     <string name="contactPhoto" msgid="4713193418046639466">"കോൺടാക്റ്റ് ഫോട്ടോ"</string>
     <string name="goPrivate" msgid="865837794424530980">"സ്വകാര്യം എന്നതിലേക്ക് പോകുക"</string>
@@ -131,7 +131,7 @@
     <string name="respond_via_sms_custom_message" msgid="6158880869935281078">"നിങ്ങളുടെ സ്വന്തം സന്ദേശമെഴുതുക..."</string>
     <string name="custom_message_cancel" msgid="7516406059429609296">"റദ്ദാക്കുക"</string>
     <string name="custom_message_send" msgid="5795754217085747742">"അയയ്‌ക്കുക"</string>
-    <string name="description_target_answer" msgid="7205604197797472471">"മറുപടി നൽകുക"</string>
+    <string name="description_target_answer" msgid="7205604197797472471">"മറുപടി"</string>
     <string name="description_target_send_sms" msgid="2098326025587950144">"SMS അയയ്ക്കുക"</string>
     <string name="description_target_decline" msgid="4789834364389731957">"നിരസിക്കുക"</string>
     <string name="description_target_answer_video_call" msgid="3495965588512395026">"വീഡിയോ കോളായി മറുപടി നൽകുക"</string>
@@ -152,7 +152,6 @@
     <string name="default_notification_description" msgid="78174796906240970">"സ്ഥിര ശബ്‌ദം (<xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g>)"</string>
     <string name="ringtone_title" msgid="6374978286202084684">"ഫോൺ റിംഗ്ടോൺ"</string>
     <string name="vibrate_on_ring_title" msgid="9197564612065258960">"റിംഗുചെയ്യുമ്പോൾ വൈബ്രേറ്റുചെയ്യുക"</string>
-    <string name="dial_pad_autocomplete" msgid="7683489952557536398">"ഡയൽപാഡ് സ്വയംപൂർത്തിയാക്കൽ"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"റിംഗ്ടോണും വൈബ്രേറ്റുചെയ്യലും"</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"കോൺഫറൻസ് കോൾ നിയന്ത്രിക്കുക"</string>
     <string name="emergency_call_dialog_number_for_display" msgid="8373041754188879871">"അടിയന്തര നമ്പർ"</string>
@@ -168,4 +167,21 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> മണിക്കൂർ</item>
       <item quantity="one">1 മണിക്കൂർ</item>
     </plurals>
+    <string name="profile_photo_description" msgid="5609894336203315400">"പ്രൊഫൈല്‍ ഫോട്ടോ"</string>
+    <string name="camera_off_description" msgid="5689494614359429889">"ക്യാമറ ഓഫാക്കുക"</string>
+    <string name="child_number" msgid="7437330400723805538">"<xliff:g id="CHILD_NUMBER">%s</xliff:g> വഴി"</string>
+    <string name="note_sent" msgid="3548700178238244595">"കുറിപ്പ് അയച്ചു"</string>
+    <string name="person_contact_context_title" msgid="723266617256740572">"ഏറ്റവും പുതിയ സന്ദേശങ്ങൾ"</string>
+    <string name="business_contact_context_title" msgid="5334864183374669765">"ബിസിനസ്സ് വിവരം"</string>
+    <string name="distance_imperial_away" msgid="437508440176409037">"<xliff:g id="DISTANCE">%.1f</xliff:g> മൈൽ അകലെ"</string>
+    <string name="distance_metric_away" msgid="166931929505893599">"<xliff:g id="DISTANCE">%.1f</xliff:g> കിലോമീറ്റർ അകലെ"</string>
+    <string name="display_address" msgid="7307400970699471708">"<xliff:g id="STREET_ADDRESS">%1$s</xliff:g>, <xliff:g id="LOCALITY">%2$s</xliff:g>"</string>
+    <string name="open_time_span" msgid="6709726401179550381">"<xliff:g id="OPEN_TIME">%1$s</xliff:g> - <xliff:g id="CLOSE_TIME">%2$s</xliff:g>"</string>
+    <string name="opening_hours" msgid="8524931350345922176">"<xliff:g id="EARLIER_TIMES">%1$s</xliff:g>, <xliff:g id="LATER_TIME">%2$s</xliff:g>"</string>
+    <string name="opens_tomorrow_at" msgid="9168271983241323946">"നാളെ <xliff:g id="OPEN_TIME">%s</xliff:g>-ന് തുറക്കുന്നു"</string>
+    <string name="opens_today_at" msgid="9011139983701379907">"ഇന്ന് <xliff:g id="OPEN_TIME">%s</xliff:g>-ന് തുറക്കുന്നു"</string>
+    <string name="closes_today_at" msgid="2623384032475495193">"<xliff:g id="CLOSE_TIME">%s</xliff:g>-ന് അടയ്ക്കുന്നു"</string>
+    <string name="closed_today_at" msgid="324294933330883529">"ഇന്ന് <xliff:g id="CLOSE_TIME">%s</xliff:g>-ന് അടച്ചു"</string>
+    <string name="open_now" msgid="6439301193613349163">"ഇപ്പോൾ തുറന്നിരിക്കുന്നു"</string>
+    <string name="closed_now" msgid="9175774453982778909">"ഇപ്പോൾ അടച്ചിരിക്കുന്നു"</string>
 </resources>
diff --git a/InCallUI/res/values-mn-rMN/strings.xml b/InCallUI/res/values-mn-rMN/strings.xml
index 335935d..13d4411 100644
--- a/InCallUI/res/values-mn-rMN/strings.xml
+++ b/InCallUI/res/values-mn-rMN/strings.xml
@@ -49,7 +49,7 @@
     <string name="card_title_video_call" msgid="5898636679563320218">"Видео хурал"</string>
     <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Видео хүсэлт гаргасан"</string>
     <string name="card_title_video_call_error" msgid="9000555878389539225">"Видео дуудлага амжилтгүй боллоо"</string>
-    <string name="card_title_video_call_paused" msgid="3753261320787432731">"Видео дуудлага (түр зогсоосон)"</string>
+    <string name="card_title_video_call_rejected" msgid="462358296694719787">"Бичлэг хийх хүсэлтийг татгалзсан"</string>
     <string name="card_title_callback_number" msgid="7307938207564217293">"Таны залгасан дугаар\n<xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Таны залгасан түргэн тусламжийн дугаар \n<xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="notification_dialing" msgid="2107666444937350731">"Залгаж байна"</string>
@@ -152,7 +152,6 @@
     <string name="default_notification_description" msgid="78174796906240970">"Үндсэн дуу (<xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g>)"</string>
     <string name="ringtone_title" msgid="6374978286202084684">"Утасны хонхны ая"</string>
     <string name="vibrate_on_ring_title" msgid="9197564612065258960">"Хонх дуугарах үед чичрэх"</string>
-    <string name="dial_pad_autocomplete" msgid="7683489952557536398">"Дугаарыг автоматиар гүйцээх"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Хонхны ая &amp; Чичиргээ"</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"Утсан хурлыг удирдах"</string>
     <string name="emergency_call_dialog_number_for_display" msgid="8373041754188879871">"Яаралтай дугаар"</string>
@@ -168,4 +167,21 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> цаг</item>
       <item quantity="one">1 цаг</item>
     </plurals>
+    <string name="profile_photo_description" msgid="5609894336203315400">"Профайл зураг"</string>
+    <string name="camera_off_description" msgid="5689494614359429889">"Камер унтраалттай байна"</string>
+    <string name="child_number" msgid="7437330400723805538">"<xliff:g id="CHILD_NUMBER">%s</xliff:g>-аар"</string>
+    <string name="note_sent" msgid="3548700178238244595">"Тэмдэглэлийг илгээсэн"</string>
+    <string name="person_contact_context_title" msgid="723266617256740572">"Саяхны зурвас"</string>
+    <string name="business_contact_context_title" msgid="5334864183374669765">"Бизнес мэдээлэл"</string>
+    <string name="distance_imperial_away" msgid="437508440176409037">"<xliff:g id="DISTANCE">%.1f</xliff:g> милийн зайтай"</string>
+    <string name="distance_metric_away" msgid="166931929505893599">"<xliff:g id="DISTANCE">%.1f</xliff:g> км-н зайтай"</string>
+    <string name="display_address" msgid="7307400970699471708">"<xliff:g id="STREET_ADDRESS">%1$s</xliff:g>, <xliff:g id="LOCALITY">%2$s</xliff:g>"</string>
+    <string name="open_time_span" msgid="6709726401179550381">"<xliff:g id="OPEN_TIME">%1$s</xliff:g> - <xliff:g id="CLOSE_TIME">%2$s</xliff:g>"</string>
+    <string name="opening_hours" msgid="8524931350345922176">"<xliff:g id="EARLIER_TIMES">%1$s</xliff:g>, <xliff:g id="LATER_TIME">%2$s</xliff:g>"</string>
+    <string name="opens_tomorrow_at" msgid="9168271983241323946">"Маргааш <xliff:g id="OPEN_TIME">%s</xliff:g>-с нээнэ"</string>
+    <string name="opens_today_at" msgid="9011139983701379907">"Өнөөдөр <xliff:g id="OPEN_TIME">%s</xliff:g>-с нээнэ"</string>
+    <string name="closes_today_at" msgid="2623384032475495193">"<xliff:g id="CLOSE_TIME">%s</xliff:g>-с хаадаг"</string>
+    <string name="closed_today_at" msgid="324294933330883529">"Өнөөдөр <xliff:g id="CLOSE_TIME">%s</xliff:g>-с хаасан"</string>
+    <string name="open_now" msgid="6439301193613349163">"Одоо нээлттэй"</string>
+    <string name="closed_now" msgid="9175774453982778909">"Одоо хаалттай"</string>
 </resources>
diff --git a/InCallUI/res/values-mr-rIN/strings.xml b/InCallUI/res/values-mr-rIN/strings.xml
index ea39725..c364bb5 100644
--- a/InCallUI/res/values-mr-rIN/strings.xml
+++ b/InCallUI/res/values-mr-rIN/strings.xml
@@ -27,7 +27,7 @@
     <string name="audio_mode_speaker" msgid="27649582100085266">"स्पीकर"</string>
     <string name="audio_mode_earpiece" msgid="4156527186373869107">"हँडसेट इअरपीस"</string>
     <string name="audio_mode_wired_headset" msgid="1465350758489175975">"वायर्ड हेडसेट"</string>
-    <string name="audio_mode_bluetooth" msgid="3047641300848211128">"ब"</string>
+    <string name="audio_mode_bluetooth" msgid="3047641300848211128">"ब्लूटुथ"</string>
     <string name="wait_prompt_str" msgid="7601815427707856238">"खालील टोन पाठवायचे?\n"</string>
     <string name="pause_prompt_str" msgid="1789964702154314806">"टोन पाठवित आहे\n"</string>
     <string name="send_button" msgid="4106860097497818751">"पाठवा"</string>
@@ -49,7 +49,7 @@
     <string name="card_title_video_call" msgid="5898636679563320218">"व्हिडिओ कॉल"</string>
     <string name="card_title_video_call_requesting" msgid="4587504939739340937">"व्हिडिओ विनंती करत आहे"</string>
     <string name="card_title_video_call_error" msgid="9000555878389539225">"व्हिडिओ कॉल कनेक्ट करू शकत नाही"</string>
-    <string name="card_title_video_call_paused" msgid="3753261320787432731">"व्हिडिओ कॉल (विराम दिला)"</string>
+    <string name="card_title_video_call_rejected" msgid="462358296694719787">"व्हिडिओ विनंती नाकारली"</string>
     <string name="card_title_callback_number" msgid="7307938207564217293">"आपला कॉलबॅक नंबर\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"आपला आणीबाणी कॉलबॅक नंबर\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="notification_dialing" msgid="2107666444937350731">"डायल करीत आहे"</string>
@@ -123,7 +123,7 @@
     <string name="voicemail_settings" msgid="72448049107749316">"सेटअप"</string>
     <string name="voicemail_number_not_set" msgid="6724904736891087856">"&lt;सेट नाही&gt;"</string>
     <string name="other_settings" msgid="3672912580359716394">"इतर कॉल सेटिंग्ज"</string>
-    <string name="calling_via_template" msgid="4839419581866928142">"<xliff:g id="PROVIDER_NAME">%s</xliff:g> द्वारे कॉल करीत आहे"</string>
+    <string name="calling_via_template" msgid="4839419581866928142">"<xliff:g id="PROVIDER_NAME">%s</xliff:g> द्वारे कॉल करत आहे"</string>
     <string name="incoming_via_template" msgid="1696993226115570960">"<xliff:g id="PROVIDER_NAME">%s</xliff:g> द्वारे येणारे"</string>
     <string name="contactPhoto" msgid="4713193418046639466">"संपर्क फोटो"</string>
     <string name="goPrivate" msgid="865837794424530980">"खाजगी जा"</string>
@@ -152,7 +152,6 @@
     <string name="default_notification_description" msgid="78174796906240970">"डीफॉल्ट आवाज (<xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g>)"</string>
     <string name="ringtone_title" msgid="6374978286202084684">"फोन रिंगटोन"</string>
     <string name="vibrate_on_ring_title" msgid="9197564612065258960">"रिंग करताना कंपन करा"</string>
-    <string name="dial_pad_autocomplete" msgid="7683489952557536398">"डायलपॅड स्वयंपूर्ण"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"रिंगटोन आणि कंपन"</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"परिषद कॉल व्यवस्थापित करा"</string>
     <string name="emergency_call_dialog_number_for_display" msgid="8373041754188879871">"आणीबाणीचा नंबर"</string>
@@ -168,4 +167,21 @@
       <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> तास</item>
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> तास</item>
     </plurals>
+    <string name="profile_photo_description" msgid="5609894336203315400">"प्रोफाईल फोटो"</string>
+    <string name="camera_off_description" msgid="5689494614359429889">"कॅमेरा बंद"</string>
+    <string name="child_number" msgid="7437330400723805538">"<xliff:g id="CHILD_NUMBER">%s</xliff:g> द्वारा"</string>
+    <string name="note_sent" msgid="3548700178238244595">"टीप पाठविली"</string>
+    <string name="person_contact_context_title" msgid="723266617256740572">"अलीकडील संदेश"</string>
+    <string name="business_contact_context_title" msgid="5334864183374669765">"व्‍यवसाय माहिती"</string>
+    <string name="distance_imperial_away" msgid="437508440176409037">"<xliff:g id="DISTANCE">%.1f</xliff:g> मैल दूर"</string>
+    <string name="distance_metric_away" msgid="166931929505893599">"<xliff:g id="DISTANCE">%.1f</xliff:g> किमी दूर"</string>
+    <string name="display_address" msgid="7307400970699471708">"<xliff:g id="STREET_ADDRESS">%1$s</xliff:g>, <xliff:g id="LOCALITY">%2$s</xliff:g>"</string>
+    <string name="open_time_span" msgid="6709726401179550381">"<xliff:g id="OPEN_TIME">%1$s</xliff:g> - <xliff:g id="CLOSE_TIME">%2$s</xliff:g>"</string>
+    <string name="opening_hours" msgid="8524931350345922176">"<xliff:g id="EARLIER_TIMES">%1$s</xliff:g>, <xliff:g id="LATER_TIME">%2$s</xliff:g>"</string>
+    <string name="opens_tomorrow_at" msgid="9168271983241323946">"उद्या <xliff:g id="OPEN_TIME">%s</xliff:g> वाजता उघडेल"</string>
+    <string name="opens_today_at" msgid="9011139983701379907">"आज <xliff:g id="OPEN_TIME">%s</xliff:g> उघडेल"</string>
+    <string name="closes_today_at" msgid="2623384032475495193">"आज <xliff:g id="CLOSE_TIME">%s</xliff:g> वाजता बंद होईल"</string>
+    <string name="closed_today_at" msgid="324294933330883529">"आज <xliff:g id="CLOSE_TIME">%s</xliff:g> वाजता बंद केले"</string>
+    <string name="open_now" msgid="6439301193613349163">"आता उघडा"</string>
+    <string name="closed_now" msgid="9175774453982778909">"आता बंद केले आहे"</string>
 </resources>
diff --git a/InCallUI/res/values-ms-rMY/strings.xml b/InCallUI/res/values-ms-rMY/strings.xml
index c87dec6..27e97f0 100644
--- a/InCallUI/res/values-ms-rMY/strings.xml
+++ b/InCallUI/res/values-ms-rMY/strings.xml
@@ -49,7 +49,7 @@
     <string name="card_title_video_call" msgid="5898636679563320218">"Pgln video"</string>
     <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Meminta video"</string>
     <string name="card_title_video_call_error" msgid="9000555878389539225">"Tidak dapat menyambungkan panggilan video"</string>
-    <string name="card_title_video_call_paused" msgid="3753261320787432731">"Panggilan video (Dijeda)"</string>
+    <string name="card_title_video_call_rejected" msgid="462358296694719787">"Permintaan video ditolak"</string>
     <string name="card_title_callback_number" msgid="7307938207564217293">"Nombor panggil balik anda\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Nombor panggil balik kecemasan anda\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="notification_dialing" msgid="2107666444937350731">"Mendail"</string>
@@ -64,8 +64,8 @@
     <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"Panggilan Wi-Fi masuk"</string>
     <string name="notification_incoming_video_call" msgid="7356836933934464805">"Panggilan video masuk"</string>
     <string name="notification_requesting_video_call" msgid="1405576812892369451">"Permintaan video masuk"</string>
-    <string name="notification_voicemail_title" msgid="8933468752045550523">"Mel suara baru"</string>
-    <string name="notification_voicemail_title_count" msgid="4366360747660929916">"Mel suara baru (<xliff:g id="COUNT">%d</xliff:g>)"</string>
+    <string name="notification_voicemail_title" msgid="8933468752045550523">"Mel suara baharu"</string>
+    <string name="notification_voicemail_title_count" msgid="4366360747660929916">"Mel suara baharu (<xliff:g id="COUNT">%d</xliff:g>)"</string>
     <string name="notification_voicemail_text_format" msgid="4447323569453981685">"Dail <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"Nombor mel suara tidak dikenali"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"Tiada perkhidmatan"</string>
@@ -152,7 +152,6 @@
     <string name="default_notification_description" msgid="78174796906240970">"Bunyi lalai (<xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g>)"</string>
     <string name="ringtone_title" msgid="6374978286202084684">"Nada dering telefon"</string>
     <string name="vibrate_on_ring_title" msgid="9197564612065258960">"Bergetar apabila berdering"</string>
-    <string name="dial_pad_autocomplete" msgid="7683489952557536398">"Autolengkap pad dail"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Nada dering &amp; Bergetar"</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"Urus panggilan sidang"</string>
     <string name="emergency_call_dialog_number_for_display" msgid="8373041754188879871">"Nombor kecemasan"</string>
@@ -168,4 +167,21 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> jam</item>
       <item quantity="one">1 jam</item>
     </plurals>
+    <string name="profile_photo_description" msgid="5609894336203315400">"Foto profil"</string>
+    <string name="camera_off_description" msgid="5689494614359429889">"Kamera dimatikan"</string>
+    <string name="child_number" msgid="7437330400723805538">"melalui <xliff:g id="CHILD_NUMBER">%s</xliff:g>"</string>
+    <string name="note_sent" msgid="3548700178238244595">"Nota dihantar"</string>
+    <string name="person_contact_context_title" msgid="723266617256740572">"Mesej terbaru"</string>
+    <string name="business_contact_context_title" msgid="5334864183374669765">"Maklumat perniagaan"</string>
+    <string name="distance_imperial_away" msgid="437508440176409037">"<xliff:g id="DISTANCE">%.1f</xliff:g> batu dari sini"</string>
+    <string name="distance_metric_away" msgid="166931929505893599">"<xliff:g id="DISTANCE">%.1f</xliff:g> km dari sini"</string>
+    <string name="display_address" msgid="7307400970699471708">"<xliff:g id="STREET_ADDRESS">%1$s</xliff:g>, <xliff:g id="LOCALITY">%2$s</xliff:g>"</string>
+    <string name="open_time_span" msgid="6709726401179550381">"<xliff:g id="OPEN_TIME">%1$s</xliff:g> - <xliff:g id="CLOSE_TIME">%2$s</xliff:g>"</string>
+    <string name="opening_hours" msgid="8524931350345922176">"<xliff:g id="EARLIER_TIMES">%1$s</xliff:g>, <xliff:g id="LATER_TIME">%2$s</xliff:g>"</string>
+    <string name="opens_tomorrow_at" msgid="9168271983241323946">"Dibuka esok pada pukul <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="opens_today_at" msgid="9011139983701379907">"Dibuka hari ini pada pukul <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="closes_today_at" msgid="2623384032475495193">"Tutup pada pukul <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="closed_today_at" msgid="324294933330883529">"Ditutup hari ini pada pukul <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="open_now" msgid="6439301193613349163">"Dibuka sekarang"</string>
+    <string name="closed_now" msgid="9175774453982778909">"Ditutup sekarang"</string>
 </resources>
diff --git a/InCallUI/res/values-my-rMM/strings.xml b/InCallUI/res/values-my-rMM/strings.xml
index db186ac..5feb756 100644
--- a/InCallUI/res/values-my-rMM/strings.xml
+++ b/InCallUI/res/values-my-rMM/strings.xml
@@ -49,7 +49,7 @@
     <string name="card_title_video_call" msgid="5898636679563320218">"ဗီဒီယို ခေါ်ဆိုမှု"</string>
     <string name="card_title_video_call_requesting" msgid="4587504939739340937">"ဗွီဒီယိုကို တောင်းဆိုနေ"</string>
     <string name="card_title_video_call_error" msgid="9000555878389539225">"ဗွီဒီယို ခေါ်ဆိုမှု မပြုနိုင်။"</string>
-    <string name="card_title_video_call_paused" msgid="3753261320787432731">"ဗီဒီယိုခေါ်ဆိုမှု (ရပ်ထားသည်)"</string>
+    <string name="card_title_video_call_rejected" msgid="462358296694719787">"ဗီဒီယို တောင်းဆိုချက် ပယ်ချ၏"</string>
     <string name="card_title_callback_number" msgid="7307938207564217293">"သင့်အား ပြန်ခေါ်ရန် နံပါတ်\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"သင့် အရေးပေါ် ပြန်ခေါ်ရန် နံပါတ်\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="notification_dialing" msgid="2107666444937350731">"ဖုန်းခေါ်နေစဉ်"</string>
@@ -152,7 +152,6 @@
     <string name="default_notification_description" msgid="78174796906240970">"ပုံသေ အသံ (<xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g>)"</string>
     <string name="ringtone_title" msgid="6374978286202084684">"ဖုန်းမြည်သံ"</string>
     <string name="vibrate_on_ring_title" msgid="9197564612065258960">"ဖုန်းမြည်စဉ်တုန်ခါရန်"</string>
-    <string name="dial_pad_autocomplete" msgid="7683489952557536398">"နံပါတ်ကွက် အလိုအလျောက်ဖြည့်ရန်"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"ဖုန်းမြည်သံ &amp; တုန်ခါသံ"</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"ကွန်းဖရင့် ခေါ်ဆိုမှုကို ထိန်းချုပ်သည်"</string>
     <string name="emergency_call_dialog_number_for_display" msgid="8373041754188879871">"အရေးပေါ်နံပါတ်"</string>
@@ -168,4 +167,21 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> နာရီများ</item>
       <item quantity="one">၁ နာရီ</item>
     </plurals>
+    <string name="profile_photo_description" msgid="5609894336203315400">"ပရိုဖိုင် ဓာတ်ပုံ"</string>
+    <string name="camera_off_description" msgid="5689494614359429889">"ကင်မရာ ပိတ်ရန်"</string>
+    <string name="child_number" msgid="7437330400723805538">"<xliff:g id="CHILD_NUMBER">%s</xliff:g>မှတစ်ဆင့်"</string>
+    <string name="note_sent" msgid="3548700178238244595">"မပို့ခဲ့"</string>
+    <string name="person_contact_context_title" msgid="723266617256740572">"မကြာမီက စာတိုများ"</string>
+    <string name="business_contact_context_title" msgid="5334864183374669765">"စီးပွားရေး အချက်အလက်"</string>
+    <string name="distance_imperial_away" msgid="437508440176409037">"<xliff:g id="DISTANCE">%.1f</xliff:g> mi အကွာ"</string>
+    <string name="distance_metric_away" msgid="166931929505893599">"<xliff:g id="DISTANCE">%.1f</xliff:g> km အကွာ"</string>
+    <string name="display_address" msgid="7307400970699471708">"<xliff:g id="STREET_ADDRESS">%1$s</xliff:g>၊ <xliff:g id="LOCALITY">%2$s</xliff:g>"</string>
+    <string name="open_time_span" msgid="6709726401179550381">"<xliff:g id="OPEN_TIME">%1$s</xliff:g> - <xliff:g id="CLOSE_TIME">%2$s</xliff:g>"</string>
+    <string name="opening_hours" msgid="8524931350345922176">"<xliff:g id="EARLIER_TIMES">%1$s</xliff:g>၊ <xliff:g id="LATER_TIME">%2$s</xliff:g>"</string>
+    <string name="opens_tomorrow_at" msgid="9168271983241323946">"မနက်ဖြန် <xliff:g id="OPEN_TIME">%s</xliff:g> ၌ဖွင့်မည်"</string>
+    <string name="opens_today_at" msgid="9011139983701379907">"ယနေ့ <xliff:g id="OPEN_TIME">%s</xliff:g> ၌ဖွင့်မည်"</string>
+    <string name="closes_today_at" msgid="2623384032475495193">"<xliff:g id="CLOSE_TIME">%s</xliff:g> ၌ပိတ်မည်"</string>
+    <string name="closed_today_at" msgid="324294933330883529">"ယနေ့ <xliff:g id="CLOSE_TIME">%s</xliff:g> ၌ပိတ်ခဲ့သည်"</string>
+    <string name="open_now" msgid="6439301193613349163">"ယခုဖွင့်ရန်"</string>
+    <string name="closed_now" msgid="9175774453982778909">"ယခုပိတ်ရန်"</string>
 </resources>
diff --git a/InCallUI/res/values-nb/strings.xml b/InCallUI/res/values-nb/strings.xml
index af4dcef..e036a03 100644
--- a/InCallUI/res/values-nb/strings.xml
+++ b/InCallUI/res/values-nb/strings.xml
@@ -35,7 +35,7 @@
     <string name="pause_prompt_no" msgid="6686238803236884877">"Nei"</string>
     <string name="wild_prompt_str" msgid="5543521676355533577">"Erstatt jokertegn med"</string>
     <string name="caller_manage_header" msgid="3231519674734638786">"Telefonmøte <xliff:g id="CONF_CALL_TIME">%s</xliff:g>"</string>
-    <string name="voicemail_settings_number_label" msgid="8524164258691887790">"Nummer til telefonsvarer"</string>
+    <string name="voicemail_settings_number_label" msgid="8524164258691887790">"Nummer til talepostkasse"</string>
     <string name="card_title_dialing" msgid="5769417478498348054">"Ringer"</string>
     <string name="card_title_redialing" msgid="8253487008234167266">"Slår nummer på nytt"</string>
     <string name="card_title_conf_call" msgid="1162980346189744501">"Telefonmøte"</string>
@@ -49,7 +49,7 @@
     <string name="card_title_video_call" msgid="5898636679563320218">"Videoanrop"</string>
     <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Ber om video"</string>
     <string name="card_title_video_call_error" msgid="9000555878389539225">"Kan ikke koble til videosamtale"</string>
-    <string name="card_title_video_call_paused" msgid="3753261320787432731">"Videosamtale (satt på pause)"</string>
+    <string name="card_title_video_call_rejected" msgid="462358296694719787">"Videoforespørselen er avvist"</string>
     <string name="card_title_callback_number" msgid="7307938207564217293">"Ditt tilbakeringingsnummer\n<xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Ditt tilbakeringingsnummer for nødsamtaler\n<xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="notification_dialing" msgid="2107666444937350731">"Slår nummeret"</string>
@@ -64,10 +64,10 @@
     <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"Innkommende anrop via Wi-Fi"</string>
     <string name="notification_incoming_video_call" msgid="7356836933934464805">"Innkommende videoanrop"</string>
     <string name="notification_requesting_video_call" msgid="1405576812892369451">"Innkommende videoforespørsel"</string>
-    <string name="notification_voicemail_title" msgid="8933468752045550523">"Nye beskjeder på telefonsvarer"</string>
-    <string name="notification_voicemail_title_count" msgid="4366360747660929916">"Nye beskjeder på telefonsvarer (<xliff:g id="COUNT">%d</xliff:g>)"</string>
+    <string name="notification_voicemail_title" msgid="8933468752045550523">"Ny talemelding"</string>
+    <string name="notification_voicemail_title_count" msgid="4366360747660929916">"Nye talemeldinger (<xliff:g id="COUNT">%d</xliff:g>)"</string>
     <string name="notification_voicemail_text_format" msgid="4447323569453981685">"Ring <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"Mangler nummer til telefonsvarer"</string>
+    <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"Mangler nummer til talepostkasse"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"Ingen tjeneste"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"Valgt nettverk (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) er ikke tilgjengelig"</string>
     <string name="notification_action_answer" msgid="6700362365135365143">"Svar"</string>
@@ -150,9 +150,8 @@
     <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Vibrering"</string>
     <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Lyd"</string>
     <string name="default_notification_description" msgid="78174796906240970">"Standardlyd (<xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g>)"</string>
-    <string name="ringtone_title" msgid="6374978286202084684">"Telefonringetone"</string>
+    <string name="ringtone_title" msgid="6374978286202084684">"Telefonringelyd"</string>
     <string name="vibrate_on_ring_title" msgid="9197564612065258960">"Vibrering når det ringer"</string>
-    <string name="dial_pad_autocomplete" msgid="7683489952557536398">"Tastaturets autofullføring"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Ringetone og vibrering"</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"Administrer konferansesamtale"</string>
     <string name="emergency_call_dialog_number_for_display" msgid="8373041754188879871">"Nødnummer"</string>
@@ -168,4 +167,21 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> timer</item>
       <item quantity="one">1 time</item>
     </plurals>
+    <string name="profile_photo_description" msgid="5609894336203315400">"Profilbilde"</string>
+    <string name="camera_off_description" msgid="5689494614359429889">"Kameraet er slått av"</string>
+    <string name="child_number" msgid="7437330400723805538">"via <xliff:g id="CHILD_NUMBER">%s</xliff:g>"</string>
+    <string name="note_sent" msgid="3548700178238244595">"Notatet er sendt"</string>
+    <string name="person_contact_context_title" msgid="723266617256740572">"Nylige meldinger"</string>
+    <string name="business_contact_context_title" msgid="5334864183374669765">"Informasjon om bedriften"</string>
+    <string name="distance_imperial_away" msgid="437508440176409037">"<xliff:g id="DISTANCE">%.1f</xliff:g> engelske mil unna"</string>
+    <string name="distance_metric_away" msgid="166931929505893599">"<xliff:g id="DISTANCE">%.1f</xliff:g> km unna"</string>
+    <string name="display_address" msgid="7307400970699471708">"<xliff:g id="STREET_ADDRESS">%1$s</xliff:g>, <xliff:g id="LOCALITY">%2$s</xliff:g>"</string>
+    <string name="open_time_span" msgid="6709726401179550381">"<xliff:g id="OPEN_TIME">%1$s</xliff:g>–<xliff:g id="CLOSE_TIME">%2$s</xliff:g>"</string>
+    <string name="opening_hours" msgid="8524931350345922176">"<xliff:g id="EARLIER_TIMES">%1$s</xliff:g>, <xliff:g id="LATER_TIME">%2$s</xliff:g>"</string>
+    <string name="opens_tomorrow_at" msgid="9168271983241323946">"Åpner i morgen kl. <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="opens_today_at" msgid="9011139983701379907">"Åpner i dag kl. <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="closes_today_at" msgid="2623384032475495193">"Stenger kl. <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="closed_today_at" msgid="324294933330883529">"Stengte i dag kl. <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="open_now" msgid="6439301193613349163">"Åpent nå"</string>
+    <string name="closed_now" msgid="9175774453982778909">"Stengt nå"</string>
 </resources>
diff --git a/InCallUI/res/values-ne-rNP/strings.xml b/InCallUI/res/values-ne-rNP/strings.xml
index ebed718..89c6f59 100644
--- a/InCallUI/res/values-ne-rNP/strings.xml
+++ b/InCallUI/res/values-ne-rNP/strings.xml
@@ -49,7 +49,7 @@
     <string name="card_title_video_call" msgid="5898636679563320218">"भिडियो कल"</string>
     <string name="card_title_video_call_requesting" msgid="4587504939739340937">"भिडियो अनुरोध"</string>
     <string name="card_title_video_call_error" msgid="9000555878389539225">"भिडियो कल जडान गर्न सक्दैन"</string>
-    <string name="card_title_video_call_paused" msgid="3753261320787432731">"भिडियो कल (पज गरिएको)"</string>
+    <string name="card_title_video_call_rejected" msgid="462358296694719787">"भिडियो अनुरोध अस्वीकार गरियो"</string>
     <string name="card_title_callback_number" msgid="7307938207564217293">"तपाईंको कलब्याक नम्बर \n<xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"तपाईंको आपतकालिन कलब्याक नम्बर \n<xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="notification_dialing" msgid="2107666444937350731">"डायल गर्ने"</string>
@@ -152,7 +152,6 @@
     <string name="default_notification_description" msgid="78174796906240970">"पूर्वनिर्धारित ध्वनि ( <xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g> )"</string>
     <string name="ringtone_title" msgid="6374978286202084684">"फोन रिङटोन"</string>
     <string name="vibrate_on_ring_title" msgid="9197564612065258960">"घन्टी बज्दा भाइब्रेट"</string>
-    <string name="dial_pad_autocomplete" msgid="7683489952557536398">"डायलप्याड स्वतःपूर्णता"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"रिङ्गटोन र भाइब्रेट"</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"सम्मेलन कल प्रबन्ध गर्नुहोस्"</string>
     <string name="emergency_call_dialog_number_for_display" msgid="8373041754188879871">"आपतकालीन नम्बर"</string>
@@ -168,4 +167,21 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> घन्टा</item>
       <item quantity="one">१ घन्टा</item>
     </plurals>
+    <string name="profile_photo_description" msgid="5609894336203315400">"प्रोफाइल तस्बिर"</string>
+    <string name="camera_off_description" msgid="5689494614359429889">"क्यामेरा बन्द"</string>
+    <string name="child_number" msgid="7437330400723805538">"<xliff:g id="CHILD_NUMBER">%s</xliff:g> बाट"</string>
+    <string name="note_sent" msgid="3548700178238244595">"नोट पठाइयो"</string>
+    <string name="person_contact_context_title" msgid="723266617256740572">"भर्खरैका सन्देशहरू"</string>
+    <string name="business_contact_context_title" msgid="5334864183374669765">"व्यवसाय जानकारी"</string>
+    <string name="distance_imperial_away" msgid="437508440176409037">"<xliff:g id="DISTANCE">%.1f</xliff:g> माइल टाढा"</string>
+    <string name="distance_metric_away" msgid="166931929505893599">"<xliff:g id="DISTANCE">%.1f</xliff:g> किलोमिटर टाढा"</string>
+    <string name="display_address" msgid="7307400970699471708">"<xliff:g id="STREET_ADDRESS">%1$s</xliff:g>, <xliff:g id="LOCALITY">%2$s</xliff:g>"</string>
+    <string name="open_time_span" msgid="6709726401179550381">"<xliff:g id="OPEN_TIME">%1$s</xliff:g> - <xliff:g id="CLOSE_TIME">%2$s</xliff:g>"</string>
+    <string name="opening_hours" msgid="8524931350345922176">"<xliff:g id="EARLIER_TIMES">%1$s</xliff:g>, <xliff:g id="LATER_TIME">%2$s</xliff:g>"</string>
+    <string name="opens_tomorrow_at" msgid="9168271983241323946">"भोलि <xliff:g id="OPEN_TIME">%s</xliff:g> खुल्छ"</string>
+    <string name="opens_today_at" msgid="9011139983701379907">"आज <xliff:g id="OPEN_TIME">%s</xliff:g> खुल्छ"</string>
+    <string name="closes_today_at" msgid="2623384032475495193">"आज <xliff:g id="CLOSE_TIME">%s</xliff:g> बन्द हुन्छ"</string>
+    <string name="closed_today_at" msgid="324294933330883529">"आज <xliff:g id="CLOSE_TIME">%s</xliff:g> बन्द भयो"</string>
+    <string name="open_now" msgid="6439301193613349163">"अहिले खुला छ"</string>
+    <string name="closed_now" msgid="9175774453982778909">"अब बन्द भयो"</string>
 </resources>
diff --git a/InCallUI/res/values-nl/strings.xml b/InCallUI/res/values-nl/strings.xml
index db92006..f195431 100644
--- a/InCallUI/res/values-nl/strings.xml
+++ b/InCallUI/res/values-nl/strings.xml
@@ -49,9 +49,9 @@
     <string name="card_title_video_call" msgid="5898636679563320218">"Videogesprek"</string>
     <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Video aanvragen"</string>
     <string name="card_title_video_call_error" msgid="9000555878389539225">"Kan geen videogesprek starten"</string>
-    <string name="card_title_video_call_paused" msgid="3753261320787432731">"Videogesprek (onderbreken)"</string>
-    <string name="card_title_callback_number" msgid="7307938207564217293">"Uw terugbelnummer\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
-    <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Uw terugbelnummer bij alarm\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
+    <string name="card_title_video_call_rejected" msgid="462358296694719787">"Videoverzoek geweigerd"</string>
+    <string name="card_title_callback_number" msgid="7307938207564217293">"Je terugbelnummer\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
+    <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Je terugbelnummer bij alarm\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="notification_dialing" msgid="2107666444937350731">"Kiezen"</string>
     <string name="notification_missedCallTitle" msgid="7554385905572364535">"Gemiste oproep"</string>
     <string name="notification_missedCallsTitle" msgid="1361677948941502522">"Gemiste oproepen"</string>
@@ -78,10 +78,10 @@
     <string name="notification_action_dismiss" msgid="2679969397930852858">"Sluiten"</string>
     <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Terugbellen"</string>
     <string name="notification_missedCall_message" msgid="3049928912736917988">"Bericht"</string>
-    <string name="incall_error_power_off" msgid="6550191216405193368">"Als u wilt bellen, moet u eerst de Vliegtuigmodus uitschakelen."</string>
+    <string name="incall_error_power_off" msgid="6550191216405193368">"Als je wilt bellen, moet je eerst de Vliegtuigmodus uitschakelen."</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"Niet geregistreerd op netwerk."</string>
     <string name="incall_error_out_of_service" msgid="4100065333878929223">"Mobiel netwerk niet beschikbaar."</string>
-    <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Als u wilt bellen, moet u een geldig nummer invoeren."</string>
+    <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Als je wilt bellen, moet je een geldig nummer invoeren."</string>
     <string name="incall_error_call_failed" msgid="6302746943230078197">"Kan niet bellen."</string>
     <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"MMI-reeks starten..."</string>
     <string name="incall_error_supp_service_unknown" msgid="323435289607131929">"Service wordt niet ondersteund."</string>
@@ -152,7 +152,6 @@
     <string name="default_notification_description" msgid="78174796906240970">"Standaardgeluid (<xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g>)"</string>
     <string name="ringtone_title" msgid="6374978286202084684">"Beltoon telefoon"</string>
     <string name="vibrate_on_ring_title" msgid="9197564612065258960">"Trillen bij bellen"</string>
-    <string name="dial_pad_autocomplete" msgid="7683489952557536398">"Toetsenblok automatisch aanvullen"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Beltoon en trillen"</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"Telefonische vergadering beheren"</string>
     <string name="emergency_call_dialog_number_for_display" msgid="8373041754188879871">"Alarmnummer"</string>
@@ -168,4 +167,21 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> uur</item>
       <item quantity="one">1 uur</item>
     </plurals>
+    <string name="profile_photo_description" msgid="5609894336203315400">"Profielfoto"</string>
+    <string name="camera_off_description" msgid="5689494614359429889">"Camera uit"</string>
+    <string name="child_number" msgid="7437330400723805538">"via <xliff:g id="CHILD_NUMBER">%s</xliff:g>"</string>
+    <string name="note_sent" msgid="3548700178238244595">"Notitie verzonden"</string>
+    <string name="person_contact_context_title" msgid="723266617256740572">"Recente berichten"</string>
+    <string name="business_contact_context_title" msgid="5334864183374669765">"Bedrijfsinformatie"</string>
+    <string name="distance_imperial_away" msgid="437508440176409037">"<xliff:g id="DISTANCE">%.1f</xliff:g> mijl hiervandaan"</string>
+    <string name="distance_metric_away" msgid="166931929505893599">"<xliff:g id="DISTANCE">%.1f</xliff:g> km hiervandaan"</string>
+    <string name="display_address" msgid="7307400970699471708">"<xliff:g id="STREET_ADDRESS">%1$s</xliff:g>, <xliff:g id="LOCALITY">%2$s</xliff:g>"</string>
+    <string name="open_time_span" msgid="6709726401179550381">"<xliff:g id="OPEN_TIME">%1$s</xliff:g> - <xliff:g id="CLOSE_TIME">%2$s</xliff:g>"</string>
+    <string name="opening_hours" msgid="8524931350345922176">"<xliff:g id="EARLIER_TIMES">%1$s</xliff:g>, <xliff:g id="LATER_TIME">%2$s</xliff:g>"</string>
+    <string name="opens_tomorrow_at" msgid="9168271983241323946">"Gaat morgen open om <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="opens_today_at" msgid="9011139983701379907">"Gaat vandaag open om <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="closes_today_at" msgid="2623384032475495193">"Sluit om <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="closed_today_at" msgid="324294933330883529">"Vandaag gesloten vanaf <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="open_now" msgid="6439301193613349163">"Nu geopend"</string>
+    <string name="closed_now" msgid="9175774453982778909">"Nu gesloten"</string>
 </resources>
diff --git a/InCallUI/res/values-pa-rIN/strings.xml b/InCallUI/res/values-pa-rIN/strings.xml
new file mode 100644
index 0000000..6a2026a
--- /dev/null
+++ b/InCallUI/res/values-pa-rIN/strings.xml
@@ -0,0 +1,187 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2013 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="phoneAppLabel" product="default" msgid="906161039445636857">"ਫੋਨ"</string>
+    <string name="onHold" msgid="9035493194749959955">"ਹੋਲਡ ਤੇ"</string>
+    <string name="unknown" msgid="6878797917991465859">"ਅਗਿਆਤ"</string>
+    <string name="private_num" msgid="6713286113000232309">"ਨਿੱਜੀ ਨੰਬਰ"</string>
+    <string name="payphone" msgid="4793877574636445118">"ਪੇਫੋਨ"</string>
+    <string name="confCall" msgid="1904840547188336828">"ਕਾਨਫਰੰਸ ਕਾਲ"</string>
+    <string name="call_lost" msgid="6183862117003999578">"ਕਾਲ ਡ੍ਰੌਪ ਕੀਤੀ"</string>
+    <string name="audio_mode_speaker" msgid="27649582100085266">"ਸਪੀਕਰ"</string>
+    <string name="audio_mode_earpiece" msgid="4156527186373869107">"ਹੈਂਡਸੈਟ ਈਅਰਪੀਸ"</string>
+    <string name="audio_mode_wired_headset" msgid="1465350758489175975">"ਵਾਇਰ ਵਾਲਾ ਹੈਡਸੈਟ"</string>
+    <string name="audio_mode_bluetooth" msgid="3047641300848211128">"Bluetooth"</string>
+    <string name="wait_prompt_str" msgid="7601815427707856238">"ਕੀ ਇਹ ਟੋਨਾਂ ਭੇਜਣੀਆਂ ਹਨ?\n"</string>
+    <string name="pause_prompt_str" msgid="1789964702154314806">"ਟੋਨਾਂ\n ਭੇਜ ਰਿਹਾ ਹੈ"</string>
+    <string name="send_button" msgid="4106860097497818751">"ਭੇਜੋ"</string>
+    <string name="pause_prompt_yes" msgid="3564467212025151797">"ਹਾਂ"</string>
+    <string name="pause_prompt_no" msgid="6686238803236884877">"ਨਹੀਂ"</string>
+    <string name="wild_prompt_str" msgid="5543521676355533577">"ਇਸ ਨਾਲ ਵਾਈਲਡ ਅੱਖਰ ਬਦਲੋ"</string>
+    <string name="caller_manage_header" msgid="3231519674734638786">"ਕਾਨਫਰੰਸ ਕਾਲ <xliff:g id="CONF_CALL_TIME">%s</xliff:g>"</string>
+    <string name="voicemail_settings_number_label" msgid="8524164258691887790">"ਵੌਇਸਮੇਲ ਨੰਬਰ"</string>
+    <string name="card_title_dialing" msgid="5769417478498348054">"ਡਾਇਲ ਕਰ ਰਿਹਾ ਹੈ"</string>
+    <string name="card_title_redialing" msgid="8253487008234167266">"ਮੁੜ ਡਾਇਲ ਕਰ ਰਿਹਾ ਹੈ"</string>
+    <string name="card_title_conf_call" msgid="1162980346189744501">"ਕਾਨਫਰੰਸ ਕਾਲ"</string>
+    <string name="card_title_incoming_call" msgid="7364539451234646909">"ਇਨਕਮਿੰਗ ਕਾਲ"</string>
+    <string name="card_title_call_ended" msgid="5544730338889702298">"ਕਾਲ ਖ਼ਤਮ ਹੋਈ"</string>
+    <string name="card_title_on_hold" msgid="821463117892339942">"ਹੋਲਡ ਤੇ"</string>
+    <string name="card_title_hanging_up" msgid="3999101620995182450">"ਹੈਂਗ ਅਪ ਕਰ ਰਿਹਾ ਹੈ"</string>
+    <string name="card_title_in_call" msgid="6346543933068225205">"ਇਨ ਕਾਲ"</string>
+    <string name="card_title_my_phone_number" msgid="112428362494434191">"ਮੇਰਾ ਨੰਬਰ ਹੈ <xliff:g id="MY_PHONE_NUMBER">%s</xliff:g>"</string>
+    <string name="card_title_video_call_connecting" msgid="297586766381973954">"ਵੀਡੀਓ ਕਨੈਕਟ ਕਰ ਰਿਹਾ ਹੈ"</string>
+    <string name="card_title_video_call" msgid="5898636679563320218">"ਵੀਡੀਓ ਕਾਲ"</string>
+    <string name="card_title_video_call_requesting" msgid="4587504939739340937">"ਵੀਡੀਓ ਦੀ ਬੇਨਤੀ ਕਰ ਰਿਹਾ ਹੈ"</string>
+    <string name="card_title_video_call_error" msgid="9000555878389539225">"ਵੀਡੀਓ ਕਾਲ ਕਨੈਕਟ ਨਹੀਂ ਕਰ ਸਕਦਾ"</string>
+    <string name="card_title_video_call_rejected" msgid="462358296694719787">"ਵੀਡੀਓ ਬੇਨਤੀ ਅਸਵੀਕਾਰ ਕੀਤੀ ਗਈ"</string>
+    <string name="card_title_callback_number" msgid="7307938207564217293">"ਤੁਹਾਡਾ ਕਾਲਬੈਕ ਨੰਬਰ\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
+    <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"ਤੁਹਾਡਾ ਐਮਰਜੈਂਸੀ ਕਾਲਬੈਕ ਨੰਬਰ\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
+    <string name="notification_dialing" msgid="2107666444937350731">"ਡਾਇਲ ਕਰ ਰਿਹਾ ਹੈ"</string>
+    <string name="notification_missedCallTitle" msgid="7554385905572364535">"ਮਿਸਡ ਕਾਲ"</string>
+    <string name="notification_missedCallsTitle" msgid="1361677948941502522">"ਮਿਸਡ ਕਾਲਾਂ"</string>
+    <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> ਮਿਸਡ ਕਾਲਾਂ"</string>
+    <string name="notification_missedCallTicker" msgid="504686252427747209">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g> ਵੱਲੋਂ ਮਿਸਡ ਕਾਲ"</string>
+    <string name="notification_ongoing_call" msgid="7068688957273482989">"ਜਾਰੀ ਕਾਲ"</string>
+    <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"ਜਾਰੀ Wi-Fi ਕਾਲ"</string>
+    <string name="notification_on_hold" msgid="3480694969511790465">"ਹੋਲਡ ਤੇ"</string>
+    <string name="notification_incoming_call" msgid="2820429205043529642">"ਇਨਕਮਿੰਗ ਕਾਲ"</string>
+    <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"ਇਨਕਮਿੰਗ Wi-Fi ਕਾਲ"</string>
+    <string name="notification_incoming_video_call" msgid="7356836933934464805">"ਇਨਕਮਿੰਗ ਵੀਡੀਓ ਕਾਲ"</string>
+    <string name="notification_requesting_video_call" msgid="1405576812892369451">"ਇਨਕਮਿੰਗ ਵੀਡੀਓ ਬੇਨਤੀ"</string>
+    <string name="notification_voicemail_title" msgid="8933468752045550523">"ਨਵੀਂ ਵੌਇਸਮੇਲ"</string>
+    <string name="notification_voicemail_title_count" msgid="4366360747660929916">"ਨਵੀਂ ਵੌਇਸਮੇਲ (<xliff:g id="COUNT">%d</xliff:g>)"</string>
+    <string name="notification_voicemail_text_format" msgid="4447323569453981685">"<xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g> ਡਾਇਲ ਕਰੋ"</string>
+    <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"ਵੌਇਸਮੇਲ ਨੰਬਰ ਅਗਿਆਤ"</string>
+    <string name="notification_network_selection_title" msgid="4224455487793492772">"ਕੋਈ ਸੇਵਾ ਨਹੀਂ"</string>
+    <string name="notification_network_selection_text" msgid="2607085729661923269">"ਚੁਣੇ ਗਏ ਨੈਟਵਰਕ (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) ਅਣਉਪਲਬਧ"</string>
+    <string name="notification_action_answer" msgid="6700362365135365143">"ਜਵਾਬ ਦਿਓ"</string>
+    <string name="notification_action_end_call" msgid="6069460915123531620">"ਹੈਂਗ ਅਪ ਕਰੋ"</string>
+    <string name="notification_action_answer_video" msgid="7809271910870211729">"ਵੀਡੀਓ"</string>
+    <string name="notification_action_answer_voice" msgid="1770796916369437773">"ਵੌਇਸ"</string>
+    <string name="notification_action_accept" msgid="2898609801209468429">"ਸਵੀਕਾਰ ਕਰੋ"</string>
+    <string name="notification_action_dismiss" msgid="2679969397930852858">"ਬਰਖਾਸਤ ਕਰੋ"</string>
+    <string name="notification_missedCall_call_back" msgid="2684890353590890187">"ਕਾਲ ਬੈਕ ਕਰੋ"</string>
+    <string name="notification_missedCall_message" msgid="3049928912736917988">"ਸੁਨੇਹਾ"</string>
+    <string name="incall_error_power_off" msgid="6550191216405193368">"ਇੱਕ ਕਾਲ ਕਰਨ ਲਈ, ਪਹਿਲਾਂ ਏਅਰਪਲੇਨ ਮੋਡ ਬੰਦ ਕਰੋ।"</string>
+    <string name="incall_error_emergency_only" msgid="4678640422710818317">"ਨੈਟਵਰਕ ਤੇ ਰਜਿਸਟਰ ਨਹੀਂ ਕੀਤਾ।"</string>
+    <string name="incall_error_out_of_service" msgid="4100065333878929223">"ਸੈਲਿਊਲਰ ਨੈਟਵਰਕ ਉਪਲਬਧ ਨਹੀਂ"</string>
+    <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"ਇੱਕ ਕਾਲ ਕਰਨ ਲਈ, ਇੱਕ ਪ੍ਰਮਾਣਿਕ ਨੰਬਰ ਦਰਜ ਕਰੋ।"</string>
+    <string name="incall_error_call_failed" msgid="6302746943230078197">"ਕਾਲ ਨਹੀਂ ਕਰ ਸਕਦਾ।"</string>
+    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"MMI ਕੜੀ ਚਾਲੂ ਕਰ ਰਿਹਾ ਹੈ…"</string>
+    <string name="incall_error_supp_service_unknown" msgid="323435289607131929">"ਸੇਵਾ ਸਮਰਥਿਤ ਨਹੀਂ।"</string>
+    <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"ਕਾਲਾਂ ਸਵਿਚ ਨਹੀਂ ਕਰ ਸਕਦਾ।"</string>
+    <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"ਕਾਲ ਵੱਖ ਨਹੀਂ ਕਰ ਸਕਦਾ।"</string>
+    <string name="incall_error_supp_service_transfer" msgid="7235952238189391438">"ਟ੍ਰਾਂਸਫਰ ਨਹੀਂ ਕਰ ਸਕਦਾ।"</string>
+    <string name="incall_error_supp_service_conference" msgid="7010354362202271726">"ਕਾਨਫਰੰਸ ਨਹੀਂ ਕਰ ਸਕਦਾ।"</string>
+    <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"ਕਾਲ ਅਸਵੀਕਾਰ ਨਹੀਂ ਕਰ ਸਕਦਾ।"</string>
+    <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"ਕਾਲ(ਕਾਲਾਂ) ਰਿਲੀਜ ਨਹੀਂ ਕਰ ਸਕਦਾ।"</string>
+    <string name="incall_call_type_label_sip" msgid="4931428719494190371">"SIP ਕਾਲ"</string>
+    <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"ਐਮਰਜੈਂਸੀ ਕਾਲ"</string>
+    <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"ਰੇਡੀਓ ਚਾਲੂ ਕਰ ਰਿਹਾ ਹੈ…"</string>
+    <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"ਕੋਈ ਸੇਵਾ ਨਹੀਂ। ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰ ਰਿਹਾ ਹੈ…"</string>
+    <string name="dial_emergency_error" msgid="1509085166367420355">"ਕਾਲ ਨਹੀਂ ਕਰ ਸਕਦਾ। <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> ਇੱਕ ਐਮਰਜੈਂਸੀ ਨੰਬਰ ਨਹੀਂ ਹੈ।"</string>
+    <string name="dial_emergency_empty_error" msgid="9130194953830414638">"ਕਾਲ ਨਹੀਂ ਕਰ ਸਕਦਾ। ਇੱਕ ਐਮਰਜੈਂਸੀ ਨੰਬਰ ਡਾਇਲ ਕਰੋ।"</string>
+    <string name="dialerKeyboardHintText" msgid="9192914825413747792">"ਡਾਇਲ ਕਰਨ ਲਈ ਕੀਬੋਰਡ ਵਰਤੋ"</string>
+    <string name="onscreenHoldText_unselected" msgid="7092499303393171276">"ਕਾਲ ਹੋਲਡ ਕਰੋ"</string>
+    <string name="onscreenHoldText_selected" msgid="7127901498507384249">"ਕਾਲ ਦੁਬਾਰਾ ਸ਼ੁਰੂ ਕਰੋ"</string>
+    <string name="onscreenEndCallText" msgid="9039601192595655846">"ਕਾਲ ਸਮਾਪਤ ਕਰੋ"</string>
+    <string name="onscreenShowDialpadText" msgid="8561805492659639893">"ਡਾਇਲਪੈਡ"</string>
+    <string name="onscreenMuteText" msgid="5011369181754261374">"ਮਿਊਟ ਕਰੋ"</string>
+    <string name="onscreenAddCallText" msgid="5140385634712287403">"ਕਾਲ ਜੋੜੋ"</string>
+    <string name="onscreenMergeCallsText" msgid="6640195098064538950">"ਕਾਲਾਂ ਸ਼ਾਮਲ ਕਰੋ"</string>
+    <string name="onscreenSwapCallsText" msgid="1602990689244030047">"ਸਵੈਪ ਕਰੋ"</string>
+    <string name="onscreenManageCallsText" msgid="5473231160123254154">"ਕਾਲਾਂ ਵਿਵਸਥਿਤ ਕਰੋ"</string>
+    <string name="onscreenManageConferenceText" msgid="6801708317570467407">"ਕਾਨਫਰੰਸ ਕਾਲ ਵਿਵਸਥਿਤ ਕਰੋ"</string>
+    <string name="onscreenAudioText" msgid="1710087112800041743">"ਔਡੀਓ"</string>
+    <string name="onscreenVideoCallText" msgid="4800924186056115442">"ਵੀਡੀਓ ਕਾਲ"</string>
+    <string name="onscreenChangeToVoiceText" msgid="5311407863653867937">"ਵੌਇਸ ਕਾਲ ਵਿੱਚ ਬਦਲੋ"</string>
+    <string name="onscreenSwitchCameraText" msgid="5324543493442787798">"ਕੈਮਰਾ ਸਵਿਚ ਕਰੋ"</string>
+    <string name="onscreenPauseVideoText" msgid="5663965924921429203">"ਵੀਡੀਓ ਰੋਕੋ"</string>
+    <string name="onscreenOverflowText" msgid="2702376562345723132">"ਹੋਰ ਚੋਣਾਂ"</string>
+    <string name="player_started" msgid="6046262510243983589">"ਪਲੇਅਰ ਅਰੰਭ ਹੋ ਗਿਆ"</string>
+    <string name="player_stopped" msgid="8856926759436364963">"ਪਲੇਅਰ ਰੁੱਕ ਗਿਆ"</string>
+    <string name="camera_not_ready" msgid="4955261496193316240">"ਕੈਮਰਾ ਤਿਆਰ ਨਹੀਂ ਹੈ"</string>
+    <string name="camera_ready" msgid="1903335385405807324">"ਕੈਮਰਾ ਤਿਆਰ ਹੈ"</string>
+    <string name="unknown_call_session_event" msgid="2431061946920253582">"ਅਗਿਆਤ ਕਾਲ ਸੈਸ਼ਨ ਇਵੈਂਟ"</string>
+    <string name="voicemail_provider" msgid="5135942703327136909">"ਸੇਵਾ"</string>
+    <string name="voicemail_settings" msgid="72448049107749316">"ਸੈਟਅਪ"</string>
+    <string name="voicemail_number_not_set" msgid="6724904736891087856">"&lt;ਸੈਟ ਨਹੀਂ ਕੀਤਾ&gt;"</string>
+    <string name="other_settings" msgid="3672912580359716394">"ਹੋਰ ਕਾਲ ਸੈਟਿੰਗਾਂ"</string>
+    <string name="calling_via_template" msgid="4839419581866928142">"<xliff:g id="PROVIDER_NAME">%s</xliff:g> ਰਾਹੀਂ ਕਾਲ ਕਰ ਰਿਹਾ ਹੈ"</string>
+    <string name="incoming_via_template" msgid="1696993226115570960">"<xliff:g id="PROVIDER_NAME">%s</xliff:g> ਰਾਹੀਂ ਇਨਕਮਿੰਗ"</string>
+    <string name="contactPhoto" msgid="4713193418046639466">"ਸੰਪਰਕ ਫੋਟੋ"</string>
+    <string name="goPrivate" msgid="865837794424530980">"ਨਿੱਜੀ ਜਾਓ"</string>
+    <string name="selectContact" msgid="781975788478987237">"ਸੰਪਰਕ ਚੁਣੋ"</string>
+    <string name="respond_via_sms_custom_message" msgid="6158880869935281078">"ਆਪਣਾ ਖੁਦ ਦਾ ਲਿਖੋ..."</string>
+    <string name="custom_message_cancel" msgid="7516406059429609296">"ਰੱਦ ਕਰੋ"</string>
+    <string name="custom_message_send" msgid="5795754217085747742">"ਭੇਜੋ"</string>
+    <string name="description_target_answer" msgid="7205604197797472471">"ਜਵਾਬ ਦਿਓ"</string>
+    <string name="description_target_send_sms" msgid="2098326025587950144">"SMS ਭੇਜੋ"</string>
+    <string name="description_target_decline" msgid="4789834364389731957">"ਅਸਵੀਕਾਰ ਕਰੋ"</string>
+    <string name="description_target_answer_video_call" msgid="3495965588512395026">"ਵੀਡੀਓ ਕਾਲ ਦੇ ਤੌਰ ਤੇ ਜਵਾਬ ਦਿਓ"</string>
+    <string name="description_target_answer_audio_call" msgid="8396296303320994450">"ਔਡੀਓ ਕਾਲ ਦੇ ਤੌਰ ਤੇ ਜਵਾਬ ਦਿਓ"</string>
+    <string name="description_target_accept_upgrade_to_video_request" msgid="2894072808324604062">"ਵੀਡੀਓ ਬੇਨਤੀ ਸਵੀਕਾਰ ਕਰੋ"</string>
+    <string name="description_target_decline_upgrade_to_video_request" msgid="4093888612888538776">"ਵੀਡੀਓ ਬੇਨਤੀ ਅਸਵੀਕਾਰ ਕਰੋ"</string>
+    <string name="description_target_accept_upgrade_to_video_transmit_request" msgid="5311037889642077468">"ਵੀਡੀਓ ਪ੍ਰਸਾਰਣ ਬੇਨਤੀ ਸਵੀਕਾਰ ਕਰੋ"</string>
+    <string name="description_target_decline_upgrade_to_video_transmit_request" msgid="3636108065510415975">"ਵੀਡੀਓ ਪ੍ਰਸਾਰਣ ਬੇਨਤੀ ਅਸਵੀਕਾਰ ਕਰੋ"</string>
+    <string name="description_target_accept_upgrade_to_video_receive_request" msgid="8668058323593087912">"ਵੀਡੀਓ ਪ੍ਰਾਪਤ ਕਰਨ ਦੀ ਬੇਨਤੀ ਸਵੀਕਾਰ ਕਰੋ"</string>
+    <string name="description_target_decline_upgrade_to_video_receive_request" msgid="2355776509656298367">"ਵੀਡੀਓ ਪ੍ਰਾਪਤ ਕਰਨ ਦੀ ਬੇਨਤੀ ਅਸਵੀਕਾਰ ਕਰੋ"</string>
+    <string name="description_direction_up" msgid="4441409581444516690">"<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> ਤੱਕ ਉੱਪਰ ਸਲਾਈਡ ਕਰੋ।"</string>
+    <string name="description_direction_left" msgid="7129873384376533287">"<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> ਤੱਕ ਖੱਬੇ ਪਾਸੇ ਸਲਾਈਡ ਕਰੋ।"</string>
+    <string name="description_direction_right" msgid="2122584234531957308">"<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> ਤੱਕ ਸੱਜੇ ਪਾਸੇ ਸਲਾਈਡ ਕਰੋ।"</string>
+    <string name="description_direction_down" msgid="4317245625565166742">"<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> ਤੱਕ ਹੇਠਾਂ ਸਲਾਈਡ ਕਰੋ।"</string>
+    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"ਵਾਈਬ੍ਰੇਟ"</string>
+    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"ਵਾਈਬ੍ਰੇਟ"</string>
+    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"ਅਵਾਜ਼"</string>
+    <string name="default_notification_description" msgid="78174796906240970">"ਡਿਫੌਲਟ ਅਵਾਜ਼ (<xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g>)"</string>
+    <string name="ringtone_title" msgid="6374978286202084684">"ਫੋਨ ਰਿੰਗਟੋਨ"</string>
+    <string name="vibrate_on_ring_title" msgid="9197564612065258960">"ਰਿੰਗ ਕਰਨ ਵੇਲੇ ਵਾਈਬ੍ਰੇਟ"</string>
+    <string name="preference_category_ringtone" msgid="5197960752529332721">"ਰਿੰਗਟੋਨ &amp; ਵਾਈਬ੍ਰੇਟ"</string>
+    <string name="manageConferenceLabel" msgid="4691922394301969053">"ਕਾਨਫਰੰਸ ਕਾਲ ਵਿਵਸਥਿਤ ਕਰੋ"</string>
+    <string name="emergency_call_dialog_number_for_display" msgid="8373041754188879871">"ਐਮਰਜੈਂਸੀ ਨੰਬਰ"</string>
+    <plurals name="duration_seconds" formatted="false" msgid="59971978269163609">
+      <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> ਸਕਿੰਟ</item>
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> ਸਕਿੰਟ</item>
+    </plurals>
+    <plurals name="duration_minutes" formatted="false" msgid="1103289948818175408">
+      <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> ਮਿੰਟ</item>
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> ਮਿੰਟ</item>
+    </plurals>
+    <plurals name="duration_hours" formatted="false" msgid="7560637459014865969">
+      <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> ਘੰਟੇ</item>
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> ਘੰਟੇ</item>
+    </plurals>
+    <string name="profile_photo_description" msgid="5609894336203315400">"ਪ੍ਰੋਫ਼ਾਈਲ ਫੋਟੋ"</string>
+    <string name="camera_off_description" msgid="5689494614359429889">"ਕੈਮਰਾ ਬੰਦ"</string>
+    <string name="child_number" msgid="7437330400723805538">"<xliff:g id="CHILD_NUMBER">%s</xliff:g> ਰਾਹੀਂ"</string>
+    <string name="note_sent" msgid="3548700178238244595">"ਸੂਚਨਾ ਭੇਜੀ ਗਈ"</string>
+    <string name="person_contact_context_title" msgid="723266617256740572">"ਹਾਲੀਆ ਸੁਨੇਹੇ"</string>
+    <string name="business_contact_context_title" msgid="5334864183374669765">"ਵਪਾਰ ਜਾਣਕਾਰੀ"</string>
+    <string name="distance_imperial_away" msgid="437508440176409037">"<xliff:g id="DISTANCE">%.1f</xliff:g> ਮੀਲ ਦੂਰ"</string>
+    <string name="distance_metric_away" msgid="166931929505893599">"<xliff:g id="DISTANCE">%.1f</xliff:g> ਕਿ.ਮੀ. ਦੂਰ"</string>
+    <string name="display_address" msgid="7307400970699471708">"<xliff:g id="STREET_ADDRESS">%1$s</xliff:g>, <xliff:g id="LOCALITY">%2$s</xliff:g>"</string>
+    <string name="open_time_span" msgid="6709726401179550381">"<xliff:g id="OPEN_TIME">%1$s</xliff:g> - <xliff:g id="CLOSE_TIME">%2$s</xliff:g>"</string>
+    <string name="opening_hours" msgid="8524931350345922176">"<xliff:g id="EARLIER_TIMES">%1$s</xliff:g>, <xliff:g id="LATER_TIME">%2$s</xliff:g>"</string>
+    <string name="opens_tomorrow_at" msgid="9168271983241323946">"ਕੱਲ੍ਹ <xliff:g id="OPEN_TIME">%s</xliff:g> ਵਜੇ ਖੁੱਲ੍ਹੇਗਾ"</string>
+    <string name="opens_today_at" msgid="9011139983701379907">"ਅੱਜ <xliff:g id="OPEN_TIME">%s</xliff:g> ਵਜੇ ਖੁੱਲ੍ਹੇਗਾ"</string>
+    <string name="closes_today_at" msgid="2623384032475495193">"<xliff:g id="CLOSE_TIME">%s</xliff:g> ਵਜੇ ਬੰਦ ਹੋਵੇਗਾ"</string>
+    <string name="closed_today_at" msgid="324294933330883529">"ਅੱਜ <xliff:g id="CLOSE_TIME">%s</xliff:g> ਵਜੇ ਬੰਦ ਹੋਇਆ"</string>
+    <string name="open_now" msgid="6439301193613349163">"ਹੁਣ ਖੁੱਲ੍ਹਾ ਹੈ"</string>
+    <string name="closed_now" msgid="9175774453982778909">"ਹੁਣ ਬੰਦ ਹੈ"</string>
+</resources>
diff --git a/InCallUI/res/values-pl/strings.xml b/InCallUI/res/values-pl/strings.xml
index 918f8b0..836ec6b 100644
--- a/InCallUI/res/values-pl/strings.xml
+++ b/InCallUI/res/values-pl/strings.xml
@@ -49,7 +49,7 @@
     <string name="card_title_video_call" msgid="5898636679563320218">"Rozmowa wideo"</string>
     <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Wysyłanie żądania wideo"</string>
     <string name="card_title_video_call_error" msgid="9000555878389539225">"Nie można nawiązać połączenia wideo"</string>
-    <string name="card_title_video_call_paused" msgid="3753261320787432731">"Rozmowa wideo (wstrzymana)"</string>
+    <string name="card_title_video_call_rejected" msgid="462358296694719787">"Prośba o film została odrzucona"</string>
     <string name="card_title_callback_number" msgid="7307938207564217293">"Twój numer oddzwaniania\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Twój numer oddzwaniania dla połączeń alarmowych\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="notification_dialing" msgid="2107666444937350731">"Trwa wybieranie numeru"</string>
@@ -123,7 +123,7 @@
     <string name="voicemail_settings" msgid="72448049107749316">"Konfiguracja"</string>
     <string name="voicemail_number_not_set" msgid="6724904736891087856">"&lt;Nie ustawiono&gt;"</string>
     <string name="other_settings" msgid="3672912580359716394">"Inne ustawienia połączeń"</string>
-    <string name="calling_via_template" msgid="4839419581866928142">"Nawiązywanie połączenia przez <xliff:g id="PROVIDER_NAME">%s</xliff:g>"</string>
+    <string name="calling_via_template" msgid="4839419581866928142">"Połączenie przez <xliff:g id="PROVIDER_NAME">%s</xliff:g>"</string>
     <string name="incoming_via_template" msgid="1696993226115570960">"Przychodzące przez <xliff:g id="PROVIDER_NAME">%s</xliff:g>"</string>
     <string name="contactPhoto" msgid="4713193418046639466">"zdjęcie kontaktu"</string>
     <string name="goPrivate" msgid="865837794424530980">"przejdź do rozmowy prywatnej"</string>
@@ -152,7 +152,6 @@
     <string name="default_notification_description" msgid="78174796906240970">"Domyślny dźwięk (<xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g>)"</string>
     <string name="ringtone_title" msgid="6374978286202084684">"Dzwonek telefonu"</string>
     <string name="vibrate_on_ring_title" msgid="9197564612065258960">"Wibracje i dzwonek"</string>
-    <string name="dial_pad_autocomplete" msgid="7683489952557536398">"Autouzupełnianie na klawiaturze"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Dzwonek i wibracje"</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"Zarządzaj połączeniem konferencyjnym"</string>
     <string name="emergency_call_dialog_number_for_display" msgid="8373041754188879871">"Numer alarmowy"</string>
@@ -174,4 +173,21 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> godziny</item>
       <item quantity="one">1 godzina</item>
     </plurals>
+    <string name="profile_photo_description" msgid="5609894336203315400">"Zdjęcie profilowe"</string>
+    <string name="camera_off_description" msgid="5689494614359429889">"Kamera wyłączona"</string>
+    <string name="child_number" msgid="7437330400723805538">"z <xliff:g id="CHILD_NUMBER">%s</xliff:g>"</string>
+    <string name="note_sent" msgid="3548700178238244595">"Notatka wysłana"</string>
+    <string name="person_contact_context_title" msgid="723266617256740572">"Ostatnie wiadomości"</string>
+    <string name="business_contact_context_title" msgid="5334864183374669765">"Informacje o firmie"</string>
+    <string name="distance_imperial_away" msgid="437508440176409037">"<xliff:g id="DISTANCE">%.1f</xliff:g> mil(e) stąd"</string>
+    <string name="distance_metric_away" msgid="166931929505893599">"<xliff:g id="DISTANCE">%.1f</xliff:g> km stąd"</string>
+    <string name="display_address" msgid="7307400970699471708">"<xliff:g id="STREET_ADDRESS">%1$s</xliff:g>, <xliff:g id="LOCALITY">%2$s</xliff:g>"</string>
+    <string name="open_time_span" msgid="6709726401179550381">"<xliff:g id="OPEN_TIME">%1$s</xliff:g> – <xliff:g id="CLOSE_TIME">%2$s</xliff:g>"</string>
+    <string name="opening_hours" msgid="8524931350345922176">"<xliff:g id="EARLIER_TIMES">%1$s</xliff:g>, <xliff:g id="LATER_TIME">%2$s</xliff:g>"</string>
+    <string name="opens_tomorrow_at" msgid="9168271983241323946">"Otwarte jutro od <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="opens_today_at" msgid="9011139983701379907">"Otwarte dzisiaj od <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="closes_today_at" msgid="2623384032475495193">"Zamknięte od <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="closed_today_at" msgid="324294933330883529">"Zamknięte dzisiaj od <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="open_now" msgid="6439301193613349163">"Teraz otwarte"</string>
+    <string name="closed_now" msgid="9175774453982778909">"Teraz zamknięte"</string>
 </resources>
diff --git a/InCallUI/res/values-pt-rPT/strings.xml b/InCallUI/res/values-pt-rPT/strings.xml
index 6025659..8908c37 100644
--- a/InCallUI/res/values-pt-rPT/strings.xml
+++ b/InCallUI/res/values-pt-rPT/strings.xml
@@ -49,7 +49,7 @@
     <string name="card_title_video_call" msgid="5898636679563320218">"Videochamada"</string>
     <string name="card_title_video_call_requesting" msgid="4587504939739340937">"A solicitar vídeo"</string>
     <string name="card_title_video_call_error" msgid="9000555878389539225">"Não é possível ligar a videochamada"</string>
-    <string name="card_title_video_call_paused" msgid="3753261320787432731">"Videochamada (em pausa)"</string>
+    <string name="card_title_video_call_rejected" msgid="462358296694719787">"Pedido de vídeo rejeitado"</string>
     <string name="card_title_callback_number" msgid="7307938207564217293">"O seu número de retorno de chamada\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"O seu número de retorno de chamadas de emergência\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="notification_dialing" msgid="2107666444937350731">"A marcar"</string>
@@ -123,7 +123,7 @@
     <string name="voicemail_settings" msgid="72448049107749316">"Configuração"</string>
     <string name="voicemail_number_not_set" msgid="6724904736891087856">"&lt;Não definido&gt;"</string>
     <string name="other_settings" msgid="3672912580359716394">"Outras definições de chamada"</string>
-    <string name="calling_via_template" msgid="4839419581866928142">"A chamar através de <xliff:g id="PROVIDER_NAME">%s</xliff:g>"</string>
+    <string name="calling_via_template" msgid="4839419581866928142">"A chamar via <xliff:g id="PROVIDER_NAME">%s</xliff:g>"</string>
     <string name="incoming_via_template" msgid="1696993226115570960">"Recebida através de <xliff:g id="PROVIDER_NAME">%s</xliff:g>"</string>
     <string name="contactPhoto" msgid="4713193418046639466">"fotografia do contacto"</string>
     <string name="goPrivate" msgid="865837794424530980">"tornar privado"</string>
@@ -152,7 +152,6 @@
     <string name="default_notification_description" msgid="78174796906240970">"Som predefinido (<xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g>)"</string>
     <string name="ringtone_title" msgid="6374978286202084684">"Toque do telemóvel"</string>
     <string name="vibrate_on_ring_title" msgid="9197564612065258960">"Vibrar ao tocar"</string>
-    <string name="dial_pad_autocomplete" msgid="7683489952557536398">"Preenchimento aut. do teclado"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Tocar e Vibrar"</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"Gerir chamada de conferência"</string>
     <string name="emergency_call_dialog_number_for_display" msgid="8373041754188879871">"Número de emergência"</string>
@@ -168,4 +167,21 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> horas</item>
       <item quantity="one">1 hora</item>
     </plurals>
+    <string name="profile_photo_description" msgid="5609894336203315400">"Foto do perfil"</string>
+    <string name="camera_off_description" msgid="5689494614359429889">"Câmara desligada"</string>
+    <string name="child_number" msgid="7437330400723805538">"através de <xliff:g id="CHILD_NUMBER">%s</xliff:g>"</string>
+    <string name="note_sent" msgid="3548700178238244595">"Nota enviada"</string>
+    <string name="person_contact_context_title" msgid="723266617256740572">"Mensagens recentes"</string>
+    <string name="business_contact_context_title" msgid="5334864183374669765">"Informações da empresa"</string>
+    <string name="distance_imperial_away" msgid="437508440176409037">"A <xliff:g id="DISTANCE">%.1f</xliff:g> milhas de distância"</string>
+    <string name="distance_metric_away" msgid="166931929505893599">"A <xliff:g id="DISTANCE">%.1f</xliff:g> km de distância"</string>
+    <string name="display_address" msgid="7307400970699471708">"<xliff:g id="STREET_ADDRESS">%1$s</xliff:g>, <xliff:g id="LOCALITY">%2$s</xliff:g>"</string>
+    <string name="open_time_span" msgid="6709726401179550381">"<xliff:g id="OPEN_TIME">%1$s</xliff:g> – <xliff:g id="CLOSE_TIME">%2$s</xliff:g>"</string>
+    <string name="opening_hours" msgid="8524931350345922176">"<xliff:g id="EARLIER_TIMES">%1$s</xliff:g>, <xliff:g id="LATER_TIME">%2$s</xliff:g>"</string>
+    <string name="opens_tomorrow_at" msgid="9168271983241323946">"Abre amanhã às <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="opens_today_at" msgid="9011139983701379907">"Abre hoje às <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="closes_today_at" msgid="2623384032475495193">"Fecha às <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="closed_today_at" msgid="324294933330883529">"Fechou hoje às <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="open_now" msgid="6439301193613349163">"Aberto agora"</string>
+    <string name="closed_now" msgid="9175774453982778909">"Fechado agora"</string>
 </resources>
diff --git a/InCallUI/res/values-pt/strings.xml b/InCallUI/res/values-pt/strings.xml
index e061557..4d1c3dc 100644
--- a/InCallUI/res/values-pt/strings.xml
+++ b/InCallUI/res/values-pt/strings.xml
@@ -46,10 +46,10 @@
     <string name="card_title_in_call" msgid="6346543933068225205">"Em chamada"</string>
     <string name="card_title_my_phone_number" msgid="112428362494434191">"Meu número é <xliff:g id="MY_PHONE_NUMBER">%s</xliff:g>"</string>
     <string name="card_title_video_call_connecting" msgid="297586766381973954">"Conectando vídeo"</string>
-    <string name="card_title_video_call" msgid="5898636679563320218">"Vídeo chamada"</string>
+    <string name="card_title_video_call" msgid="5898636679563320218">"Videochamada"</string>
     <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Solicitando vídeo"</string>
-    <string name="card_title_video_call_error" msgid="9000555878389539225">"Não é possível conectar a vídeo chamada"</string>
-    <string name="card_title_video_call_paused" msgid="3753261320787432731">"Vídeo chamada (pausada)"</string>
+    <string name="card_title_video_call_error" msgid="9000555878389539225">"Não é possível conectar a videochamada"</string>
+    <string name="card_title_video_call_rejected" msgid="462358296694719787">"Solicitação de vídeo rejeitada"</string>
     <string name="card_title_callback_number" msgid="7307938207564217293">"Seu número de retorno de chamada\n<xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Seu número de retorno de chamada de emergência\n<xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="notification_dialing" msgid="2107666444937350731">"Discando"</string>
@@ -62,7 +62,7 @@
     <string name="notification_on_hold" msgid="3480694969511790465">"Em espera"</string>
     <string name="notification_incoming_call" msgid="2820429205043529642">"Recebendo chamada"</string>
     <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"Chamada Wi-Fi recebida"</string>
-    <string name="notification_incoming_video_call" msgid="7356836933934464805">"Recebendo vídeo chamada"</string>
+    <string name="notification_incoming_video_call" msgid="7356836933934464805">"Recebendo videochamada"</string>
     <string name="notification_requesting_video_call" msgid="1405576812892369451">"Recebendo solicitação de vídeo"</string>
     <string name="notification_voicemail_title" msgid="8933468752045550523">"Novo correio de voz"</string>
     <string name="notification_voicemail_title_count" msgid="4366360747660929916">"Novo correio de voz (<xliff:g id="COUNT">%d</xliff:g>)"</string>
@@ -109,7 +109,7 @@
     <string name="onscreenManageCallsText" msgid="5473231160123254154">"Gerenciar chamadas"</string>
     <string name="onscreenManageConferenceText" msgid="6801708317570467407">"Gerenciar teleconferência"</string>
     <string name="onscreenAudioText" msgid="1710087112800041743">"Áudio"</string>
-    <string name="onscreenVideoCallText" msgid="4800924186056115442">"Vídeo ch."</string>
+    <string name="onscreenVideoCallText" msgid="4800924186056115442">"Videocham."</string>
     <string name="onscreenChangeToVoiceText" msgid="5311407863653867937">"Alterar para chamada de voz"</string>
     <string name="onscreenSwitchCameraText" msgid="5324543493442787798">"Alternar câmera"</string>
     <string name="onscreenPauseVideoText" msgid="5663965924921429203">"Pausar vídeo"</string>
@@ -134,7 +134,7 @@
     <string name="description_target_answer" msgid="7205604197797472471">"Responder"</string>
     <string name="description_target_send_sms" msgid="2098326025587950144">"Enviar SMS"</string>
     <string name="description_target_decline" msgid="4789834364389731957">"Recusar"</string>
-    <string name="description_target_answer_video_call" msgid="3495965588512395026">"Atender como vídeo chamada"</string>
+    <string name="description_target_answer_video_call" msgid="3495965588512395026">"Atender como videochamada"</string>
     <string name="description_target_answer_audio_call" msgid="8396296303320994450">"Atender como chamada de áudio"</string>
     <string name="description_target_accept_upgrade_to_video_request" msgid="2894072808324604062">"Aceitar solicitação de vídeo"</string>
     <string name="description_target_decline_upgrade_to_video_request" msgid="4093888612888538776">"Recusar solicitação de vídeo"</string>
@@ -152,7 +152,6 @@
     <string name="default_notification_description" msgid="78174796906240970">"Som padrão (<xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g>)"</string>
     <string name="ringtone_title" msgid="6374978286202084684">"Toque do telefone"</string>
     <string name="vibrate_on_ring_title" msgid="9197564612065258960">"Vibrar quando estiver tocando"</string>
-    <string name="dial_pad_autocomplete" msgid="7683489952557536398">"Preench. automático do teclado"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Toque e vibração"</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"Gerenciar conferência telefônica"</string>
     <string name="emergency_call_dialog_number_for_display" msgid="8373041754188879871">"Número de emergência"</string>
@@ -168,4 +167,21 @@
       <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> horas</item>
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> horas</item>
     </plurals>
+    <string name="profile_photo_description" msgid="5609894336203315400">"Foto do perfil"</string>
+    <string name="camera_off_description" msgid="5689494614359429889">"Câmera desligada"</string>
+    <string name="child_number" msgid="7437330400723805538">"via <xliff:g id="CHILD_NUMBER">%s</xliff:g>"</string>
+    <string name="note_sent" msgid="3548700178238244595">"Nota enviada"</string>
+    <string name="person_contact_context_title" msgid="723266617256740572">"Mensagens recentes"</string>
+    <string name="business_contact_context_title" msgid="5334864183374669765">"Informações sobre a empresa"</string>
+    <string name="distance_imperial_away" msgid="437508440176409037">"<xliff:g id="DISTANCE">%.1f</xliff:g> milhas de distância"</string>
+    <string name="distance_metric_away" msgid="166931929505893599">"<xliff:g id="DISTANCE">%.1f</xliff:g> km de distância"</string>
+    <string name="display_address" msgid="7307400970699471708">"<xliff:g id="STREET_ADDRESS">%1$s</xliff:g>, <xliff:g id="LOCALITY">%2$s</xliff:g>"</string>
+    <string name="open_time_span" msgid="6709726401179550381">"<xliff:g id="OPEN_TIME">%1$s</xliff:g> - <xliff:g id="CLOSE_TIME">%2$s</xliff:g>"</string>
+    <string name="opening_hours" msgid="8524931350345922176">"<xliff:g id="EARLIER_TIMES">%1$s</xliff:g>, <xliff:g id="LATER_TIME">%2$s</xliff:g>"</string>
+    <string name="opens_tomorrow_at" msgid="9168271983241323946">"Abre amanhã às <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="opens_today_at" msgid="9011139983701379907">"Abre hoje às <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="closes_today_at" msgid="2623384032475495193">"Fecha às <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="closed_today_at" msgid="324294933330883529">"Fechou hoje às <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="open_now" msgid="6439301193613349163">"Aberto agora"</string>
+    <string name="closed_now" msgid="9175774453982778909">"Fechado agora"</string>
 </resources>
diff --git a/InCallUI/res/values-ro/strings.xml b/InCallUI/res/values-ro/strings.xml
index 00d365e..3be764d 100644
--- a/InCallUI/res/values-ro/strings.xml
+++ b/InCallUI/res/values-ro/strings.xml
@@ -18,7 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="phoneAppLabel" product="default" msgid="906161039445636857">"Telefon"</string>
-    <string name="onHold" msgid="9035493194749959955">"În aşteptare"</string>
+    <string name="onHold" msgid="9035493194749959955">"În așteptare"</string>
     <string name="unknown" msgid="6878797917991465859">"Necunoscut"</string>
     <string name="private_num" msgid="6713286113000232309">"Număr privat"</string>
     <string name="payphone" msgid="4793877574636445118">"Telefon public"</string>
@@ -28,9 +28,9 @@
     <string name="audio_mode_earpiece" msgid="4156527186373869107">"Casca dispozitivului"</string>
     <string name="audio_mode_wired_headset" msgid="1465350758489175975">"Cască cu fir"</string>
     <string name="audio_mode_bluetooth" msgid="3047641300848211128">"Bluetooth"</string>
-    <string name="wait_prompt_str" msgid="7601815427707856238">"Trimiteţi următoarele tonuri?\n"</string>
+    <string name="wait_prompt_str" msgid="7601815427707856238">"Trimiteți următoarele tonuri?\n"</string>
     <string name="pause_prompt_str" msgid="1789964702154314806">"Se trimit tonuri\n"</string>
-    <string name="send_button" msgid="4106860097497818751">"Trimiteţi"</string>
+    <string name="send_button" msgid="4106860097497818751">"Trimiteți"</string>
     <string name="pause_prompt_yes" msgid="3564467212025151797">"Da"</string>
     <string name="pause_prompt_no" msgid="6686238803236884877">"Nu"</string>
     <string name="wild_prompt_str" msgid="5543521676355533577">"Înlocuiţi metacaracterul cu"</string>
@@ -39,9 +39,9 @@
     <string name="card_title_dialing" msgid="5769417478498348054">"Apelează"</string>
     <string name="card_title_redialing" msgid="8253487008234167266">"Se reapelează"</string>
     <string name="card_title_conf_call" msgid="1162980346189744501">"Teleconferinţă"</string>
-    <string name="card_title_incoming_call" msgid="7364539451234646909">"Apel de intrare"</string>
+    <string name="card_title_incoming_call" msgid="7364539451234646909">"Apel primit"</string>
     <string name="card_title_call_ended" msgid="5544730338889702298">"Apel încheiat"</string>
-    <string name="card_title_on_hold" msgid="821463117892339942">"În aşteptare"</string>
+    <string name="card_title_on_hold" msgid="821463117892339942">"În așteptare"</string>
     <string name="card_title_hanging_up" msgid="3999101620995182450">"Se închide telefonul"</string>
     <string name="card_title_in_call" msgid="6346543933068225205">"În timpul apelului"</string>
     <string name="card_title_my_phone_number" msgid="112428362494434191">"Numărul meu este <xliff:g id="MY_PHONE_NUMBER">%s</xliff:g>"</string>
@@ -49,7 +49,7 @@
     <string name="card_title_video_call" msgid="5898636679563320218">"Apel video"</string>
     <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Se solicită video"</string>
     <string name="card_title_video_call_error" msgid="9000555878389539225">"Nu se poate conecta apelul video"</string>
-    <string name="card_title_video_call_paused" msgid="3753261320787432731">"Apel video (întrerupt)"</string>
+    <string name="card_title_video_call_rejected" msgid="462358296694719787">"Solicitarea pentru apel video a fost respinsă"</string>
     <string name="card_title_callback_number" msgid="7307938207564217293">"Numărul de apelare inversă\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Numărul de apelare inversă de urgență\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="notification_dialing" msgid="2107666444937350731">"Apelează"</string>
@@ -59,7 +59,7 @@
     <string name="notification_missedCallTicker" msgid="504686252427747209">"Apel nepreluat de la <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
     <string name="notification_ongoing_call" msgid="7068688957273482989">"Apel în desfăşurare"</string>
     <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"Apel Wi-Fi în desfășurare"</string>
-    <string name="notification_on_hold" msgid="3480694969511790465">"În aşteptare"</string>
+    <string name="notification_on_hold" msgid="3480694969511790465">"În așteptare"</string>
     <string name="notification_incoming_call" msgid="2820429205043529642">"Apel de intrare"</string>
     <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"Apel prin Wi-Fi primit"</string>
     <string name="notification_incoming_video_call" msgid="7356836933934464805">"Apel video primit"</string>
@@ -69,17 +69,17 @@
     <string name="notification_voicemail_text_format" msgid="4447323569453981685">"Apelați <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"Număr mesagerie vocală necunoscut"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"Fără serviciu"</string>
-    <string name="notification_network_selection_text" msgid="2607085729661923269">"Reţeaua selectată (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) nu este disponibilă"</string>
+    <string name="notification_network_selection_text" msgid="2607085729661923269">"Rețeaua selectată (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) nu este disponibilă"</string>
     <string name="notification_action_answer" msgid="6700362365135365143">"Răspundeți"</string>
     <string name="notification_action_end_call" msgid="6069460915123531620">"Încheiaţi apelul"</string>
     <string name="notification_action_answer_video" msgid="7809271910870211729">"Videoclip"</string>
     <string name="notification_action_answer_voice" msgid="1770796916369437773">"Voce"</string>
     <string name="notification_action_accept" msgid="2898609801209468429">"Acceptați"</string>
-    <string name="notification_action_dismiss" msgid="2679969397930852858">"Renunțați"</string>
-    <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Sunaţi înapoi"</string>
+    <string name="notification_action_dismiss" msgid="2679969397930852858">"Refuzați"</string>
+    <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Sunați"</string>
     <string name="notification_missedCall_message" msgid="3049928912736917988">"Mesaj"</string>
-    <string name="incall_error_power_off" msgid="6550191216405193368">"Pentru a efectua un apel, mai întâi dezactivaţi modul Avion."</string>
-    <string name="incall_error_emergency_only" msgid="4678640422710818317">"Neînregistrat în reţea."</string>
+    <string name="incall_error_power_off" msgid="6550191216405193368">"Pentru a efectua un apel, mai întâi dezactivați modul Avion."</string>
+    <string name="incall_error_emergency_only" msgid="4678640422710818317">"Neînregistrat în rețea."</string>
     <string name="incall_error_out_of_service" msgid="4100065333878929223">"Rețeaua mobilă nu este disponibilă"</string>
     <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Pentru a apela, introduceți un număr valid."</string>
     <string name="incall_error_call_failed" msgid="6302746943230078197">"Nu se poate apela."</string>
@@ -102,11 +102,11 @@
     <string name="onscreenHoldText_selected" msgid="7127901498507384249">"Reluați apelul"</string>
     <string name="onscreenEndCallText" msgid="9039601192595655846">"Încheiați apelul"</string>
     <string name="onscreenShowDialpadText" msgid="8561805492659639893">"Tastatură numerică"</string>
-    <string name="onscreenMuteText" msgid="5011369181754261374">"Dezactivaţi sunetul"</string>
-    <string name="onscreenAddCallText" msgid="5140385634712287403">"Adăugaţi un apel"</string>
+    <string name="onscreenMuteText" msgid="5011369181754261374">"Dezactivați sunetul"</string>
+    <string name="onscreenAddCallText" msgid="5140385634712287403">"Adăugați un apel"</string>
     <string name="onscreenMergeCallsText" msgid="6640195098064538950">"Îmbinaţi apelurile"</string>
     <string name="onscreenSwapCallsText" msgid="1602990689244030047">"Schimbaţi"</string>
-    <string name="onscreenManageCallsText" msgid="5473231160123254154">"Gestionaţi apelurile"</string>
+    <string name="onscreenManageCallsText" msgid="5473231160123254154">"Gestionați apelurile"</string>
     <string name="onscreenManageConferenceText" msgid="6801708317570467407">"Gestionați teleconferința"</string>
     <string name="onscreenAudioText" msgid="1710087112800041743">"Audio"</string>
     <string name="onscreenVideoCallText" msgid="4800924186056115442">"Apel video"</string>
@@ -131,8 +131,8 @@
     <string name="respond_via_sms_custom_message" msgid="6158880869935281078">"Scrieți propriul răspuns…"</string>
     <string name="custom_message_cancel" msgid="7516406059429609296">"Anulați"</string>
     <string name="custom_message_send" msgid="5795754217085747742">"Trimiteți"</string>
-    <string name="description_target_answer" msgid="7205604197797472471">"Răspundeţi"</string>
-    <string name="description_target_send_sms" msgid="2098326025587950144">"Trimiteţi SMS"</string>
+    <string name="description_target_answer" msgid="7205604197797472471">"Răspundeți"</string>
+    <string name="description_target_send_sms" msgid="2098326025587950144">"Trimiteți SMS"</string>
     <string name="description_target_decline" msgid="4789834364389731957">"Refuzaţi"</string>
     <string name="description_target_answer_video_call" msgid="3495965588512395026">"Răspundeți ca apel video"</string>
     <string name="description_target_answer_audio_call" msgid="8396296303320994450">"Răspundeți ca apel audio"</string>
@@ -146,15 +146,14 @@
     <string name="description_direction_left" msgid="7129873384376533287">"Glisați spre stânga pentru <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
     <string name="description_direction_right" msgid="2122584234531957308">"Glisați spre dreapta pentru <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
     <string name="description_direction_down" msgid="4317245625565166742">"Glisați în jos pentru <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
-    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Vibraţii"</string>
-    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Vibraţii"</string>
+    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Vibrații"</string>
+    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Vibrații"</string>
     <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Sunet"</string>
     <string name="default_notification_description" msgid="78174796906240970">"Sunet prestabilit (<xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g>)"</string>
-    <string name="ringtone_title" msgid="6374978286202084684">"Ton de sonerie telefon"</string>
+    <string name="ringtone_title" msgid="6374978286202084684">"Ton de apel telefon"</string>
     <string name="vibrate_on_ring_title" msgid="9197564612065258960">"Vibrează când sună"</string>
-    <string name="dial_pad_autocomplete" msgid="7683489952557536398">"Complet. autom. tastatură num."</string>
-    <string name="preference_category_ringtone" msgid="5197960752529332721">"Ton de sonerie și vibrare"</string>
-    <string name="manageConferenceLabel" msgid="4691922394301969053">"Gestionaţi teleconferinţa"</string>
+    <string name="preference_category_ringtone" msgid="5197960752529332721">"Ton de apel și vibrare"</string>
+    <string name="manageConferenceLabel" msgid="4691922394301969053">"Gestionați teleconferinţa"</string>
     <string name="emergency_call_dialog_number_for_display" msgid="8373041754188879871">"Număr de urgență"</string>
     <plurals name="duration_seconds" formatted="false" msgid="59971978269163609">
       <item quantity="few"><xliff:g id="COUNT">%d</xliff:g> secunde</item>
@@ -171,4 +170,21 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> de ore</item>
       <item quantity="one">O oră</item>
     </plurals>
+    <string name="profile_photo_description" msgid="5609894336203315400">"Fotografie de profil"</string>
+    <string name="camera_off_description" msgid="5689494614359429889">"Camera este oprită"</string>
+    <string name="child_number" msgid="7437330400723805538">"pe <xliff:g id="CHILD_NUMBER">%s</xliff:g>"</string>
+    <string name="note_sent" msgid="3548700178238244595">"Nota a fost trimisă"</string>
+    <string name="person_contact_context_title" msgid="723266617256740572">"Mesaje recente"</string>
+    <string name="business_contact_context_title" msgid="5334864183374669765">"Informații despre companie"</string>
+    <string name="distance_imperial_away" msgid="437508440176409037">"<xliff:g id="DISTANCE">%.1f</xliff:g> mi distanță"</string>
+    <string name="distance_metric_away" msgid="166931929505893599">"<xliff:g id="DISTANCE">%.1f</xliff:g> km distanță"</string>
+    <string name="display_address" msgid="7307400970699471708">"<xliff:g id="STREET_ADDRESS">%1$s</xliff:g>, <xliff:g id="LOCALITY">%2$s</xliff:g>"</string>
+    <string name="open_time_span" msgid="6709726401179550381">"<xliff:g id="OPEN_TIME">%1$s</xliff:g> – <xliff:g id="CLOSE_TIME">%2$s</xliff:g>"</string>
+    <string name="opening_hours" msgid="8524931350345922176">"<xliff:g id="EARLIER_TIMES">%1$s</xliff:g>, <xliff:g id="LATER_TIME">%2$s</xliff:g>"</string>
+    <string name="opens_tomorrow_at" msgid="9168271983241323946">"Deschide mâine la <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="opens_today_at" msgid="9011139983701379907">"Deschide astăzi la <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="closes_today_at" msgid="2623384032475495193">"Închide la <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="closed_today_at" msgid="324294933330883529">"A închis astăzi la <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="open_now" msgid="6439301193613349163">"Acum este deschis"</string>
+    <string name="closed_now" msgid="9175774453982778909">"Acum este închis"</string>
 </resources>
diff --git a/InCallUI/res/values-ru/strings.xml b/InCallUI/res/values-ru/strings.xml
index c0736c8..876ad50 100644
--- a/InCallUI/res/values-ru/strings.xml
+++ b/InCallUI/res/values-ru/strings.xml
@@ -49,7 +49,7 @@
     <string name="card_title_video_call" msgid="5898636679563320218">"Видеовстреча"</string>
     <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Запрос видео"</string>
     <string name="card_title_video_call_error" msgid="9000555878389539225">"Не удалось совершить видеовызов"</string>
-    <string name="card_title_video_call_paused" msgid="3753261320787432731">"Видеозвонок (на паузе)"</string>
+    <string name="card_title_video_call_rejected" msgid="462358296694719787">"Видеовызов отклонен"</string>
     <string name="card_title_callback_number" msgid="7307938207564217293">"Номер обратного вызова:\n<xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Номер обратного вызова для экстренных служб:\n<xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="notification_dialing" msgid="2107666444937350731">"Набор номера"</string>
@@ -75,7 +75,7 @@
     <string name="notification_action_answer_video" msgid="7809271910870211729">"Видео"</string>
     <string name="notification_action_answer_voice" msgid="1770796916369437773">"Голосовой вызов"</string>
     <string name="notification_action_accept" msgid="2898609801209468429">"Принять"</string>
-    <string name="notification_action_dismiss" msgid="2679969397930852858">"Закрыть"</string>
+    <string name="notification_action_dismiss" msgid="2679969397930852858">"Отклонить"</string>
     <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Позвонить"</string>
     <string name="notification_missedCall_message" msgid="3049928912736917988">"Написать"</string>
     <string name="incall_error_power_off" msgid="6550191216405193368">"Перед тем как звонить, отключите режим полета."</string>
@@ -103,7 +103,7 @@
     <string name="onscreenEndCallText" msgid="9039601192595655846">"Завершить вызов"</string>
     <string name="onscreenShowDialpadText" msgid="8561805492659639893">"Кнопки"</string>
     <string name="onscreenMuteText" msgid="5011369181754261374">"Откл. звук"</string>
-    <string name="onscreenAddCallText" msgid="5140385634712287403">"+ вызов"</string>
+    <string name="onscreenAddCallText" msgid="5140385634712287403">"Добавить вызов"</string>
     <string name="onscreenMergeCallsText" msgid="6640195098064538950">"Соединить"</string>
     <string name="onscreenSwapCallsText" msgid="1602990689244030047">"Перевод звонка"</string>
     <string name="onscreenManageCallsText" msgid="5473231160123254154">"Управление вызовами"</string>
@@ -152,7 +152,6 @@
     <string name="default_notification_description" msgid="78174796906240970">"По умолчанию (<xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g>)"</string>
     <string name="ringtone_title" msgid="6374978286202084684">"Рингтон"</string>
     <string name="vibrate_on_ring_title" msgid="9197564612065258960">"Вибросигнал и рингтон"</string>
-    <string name="dial_pad_autocomplete" msgid="7683489952557536398">"Автозаполнение номера"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Рингтон и вибросигнал"</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"Управление конференц-связью"</string>
     <string name="emergency_call_dialog_number_for_display" msgid="8373041754188879871">"Экстренная служба"</string>
@@ -174,4 +173,21 @@
       <item quantity="many"><xliff:g id="COUNT">%d</xliff:g> часов</item>
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> часа</item>
     </plurals>
+    <string name="profile_photo_description" msgid="5609894336203315400">"Фото профиля"</string>
+    <string name="camera_off_description" msgid="5689494614359429889">"Камера отключена"</string>
+    <string name="child_number" msgid="7437330400723805538">"через <xliff:g id="CHILD_NUMBER">%s</xliff:g>"</string>
+    <string name="note_sent" msgid="3548700178238244595">"Сообщение отправлено"</string>
+    <string name="person_contact_context_title" msgid="723266617256740572">"Недавние сообщения"</string>
+    <string name="business_contact_context_title" msgid="5334864183374669765">"Информация о компании"</string>
+    <string name="distance_imperial_away" msgid="437508440176409037">"<xliff:g id="DISTANCE">%.1f</xliff:g> мил."</string>
+    <string name="distance_metric_away" msgid="166931929505893599">"<xliff:g id="DISTANCE">%.1f</xliff:g> км"</string>
+    <string name="display_address" msgid="7307400970699471708">"<xliff:g id="STREET_ADDRESS">%1$s</xliff:g>, <xliff:g id="LOCALITY">%2$s</xliff:g>"</string>
+    <string name="open_time_span" msgid="6709726401179550381">"<xliff:g id="OPEN_TIME">%1$s</xliff:g>–<xliff:g id="CLOSE_TIME">%2$s</xliff:g>"</string>
+    <string name="opening_hours" msgid="8524931350345922176">"<xliff:g id="EARLIER_TIMES">%1$s</xliff:g>, <xliff:g id="LATER_TIME">%2$s</xliff:g>"</string>
+    <string name="opens_tomorrow_at" msgid="9168271983241323946">"Откроется завтра в <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="opens_today_at" msgid="9011139983701379907">"Откроется сегодня в <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="closes_today_at" msgid="2623384032475495193">"Работает до <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="closed_today_at" msgid="324294933330883529">"Сегодня не работает с <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="open_now" msgid="6439301193613349163">"Сейчас открыто"</string>
+    <string name="closed_now" msgid="9175774453982778909">"Сейчас закрыто"</string>
 </resources>
diff --git a/InCallUI/res/values-si-rLK/strings.xml b/InCallUI/res/values-si-rLK/strings.xml
index 1d0786b..fe92a63 100644
--- a/InCallUI/res/values-si-rLK/strings.xml
+++ b/InCallUI/res/values-si-rLK/strings.xml
@@ -49,7 +49,7 @@
     <string name="card_title_video_call" msgid="5898636679563320218">"වීඩියෝ ඇමතුම"</string>
     <string name="card_title_video_call_requesting" msgid="4587504939739340937">"වීඩියෝවක් ඉල්ලමින්"</string>
     <string name="card_title_video_call_error" msgid="9000555878389539225">"වීඩියෝ ඇමතුම සම්බන්ධ කළ නොහැක"</string>
-    <string name="card_title_video_call_paused" msgid="3753261320787432731">"වීඩියෝ ඇමතුම (විරාමය)"</string>
+    <string name="card_title_video_call_rejected" msgid="462358296694719787">"වීඩියෝ ඉල්ලීම ප්‍රතික්ෂේප කරන ලදී"</string>
     <string name="card_title_callback_number" msgid="7307938207564217293">"ඔබට ආපසු කථා කිරීමේ අංකය\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"ඔබගේ හදිසි ඇමතුම් අංකය\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="notification_dialing" msgid="2107666444937350731">"අමතමින්"</string>
@@ -152,7 +152,6 @@
     <string name="default_notification_description" msgid="78174796906240970">"සුපුරුදු ශබ්දය (<xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g>)"</string>
     <string name="ringtone_title" msgid="6374978286202084684">"දුරකථන රිංටෝනය"</string>
     <string name="vibrate_on_ring_title" msgid="9197564612065258960">"රිංග් වන විට කම්පනයවේ"</string>
-    <string name="dial_pad_autocomplete" msgid="7683489952557536398">"ඩයල් පැඩය ස්වයං සම්පුර්ණ කරන්න"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"රිගින් ටෝන් සහ කම්පනය කරන්න"</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"සම්මන්ත්‍රණ ඇමතුම කළමනාකරණය කරන්න"</string>
     <string name="emergency_call_dialog_number_for_display" msgid="8373041754188879871">"හදිසි ඇමතුම් අංකය"</string>
@@ -168,4 +167,21 @@
       <item quantity="one">පැය <xliff:g id="COUNT">%d</xliff:g></item>
       <item quantity="other">පැය <xliff:g id="COUNT">%d</xliff:g></item>
     </plurals>
+    <string name="profile_photo_description" msgid="5609894336203315400">"පැතිකඩ ඡායාරූපය"</string>
+    <string name="camera_off_description" msgid="5689494614359429889">"කැමරාව ක්‍රියාවිරහිතයි"</string>
+    <string name="child_number" msgid="7437330400723805538">"<xliff:g id="CHILD_NUMBER">%s</xliff:g> හරහා"</string>
+    <string name="note_sent" msgid="3548700178238244595">"සටහන යවන ලදී"</string>
+    <string name="person_contact_context_title" msgid="723266617256740572">"මෑත පණිවිඩ"</string>
+    <string name="business_contact_context_title" msgid="5334864183374669765">"ව්‍යාපාර තොරතුරු"</string>
+    <string name="distance_imperial_away" msgid="437508440176409037">"සැතපුම් <xliff:g id="DISTANCE">%.1f</xliff:g>ක් ඈතින්"</string>
+    <string name="distance_metric_away" msgid="166931929505893599">"කි.මි. <xliff:g id="DISTANCE">%.1f</xliff:g>ක් ඈතින්"</string>
+    <string name="display_address" msgid="7307400970699471708">"<xliff:g id="STREET_ADDRESS">%1$s</xliff:g>, <xliff:g id="LOCALITY">%2$s</xliff:g>"</string>
+    <string name="open_time_span" msgid="6709726401179550381">"<xliff:g id="OPEN_TIME">%1$s</xliff:g> - <xliff:g id="CLOSE_TIME">%2$s</xliff:g>"</string>
+    <string name="opening_hours" msgid="8524931350345922176">"<xliff:g id="EARLIER_TIMES">%1$s</xliff:g>, <xliff:g id="LATER_TIME">%2$s</xliff:g>"</string>
+    <string name="opens_tomorrow_at" msgid="9168271983241323946">"හෙට <xliff:g id="OPEN_TIME">%s</xliff:g>ට විවෘත කෙරේ"</string>
+    <string name="opens_today_at" msgid="9011139983701379907">"අද <xliff:g id="OPEN_TIME">%s</xliff:g>ට විවෘත කෙරේ"</string>
+    <string name="closes_today_at" msgid="2623384032475495193">"<xliff:g id="CLOSE_TIME">%s</xliff:g>ට වසයි"</string>
+    <string name="closed_today_at" msgid="324294933330883529">"අද <xliff:g id="CLOSE_TIME">%s</xliff:g>ට වසනු ලැබේ"</string>
+    <string name="open_now" msgid="6439301193613349163">"දැන් විවෘතයි"</string>
+    <string name="closed_now" msgid="9175774453982778909">"දැන් වසා ඇත"</string>
 </resources>
diff --git a/InCallUI/res/values-sk/strings.xml b/InCallUI/res/values-sk/strings.xml
index b272be4..78fe6e6 100644
--- a/InCallUI/res/values-sk/strings.xml
+++ b/InCallUI/res/values-sk/strings.xml
@@ -36,7 +36,7 @@
     <string name="wild_prompt_str" msgid="5543521676355533577">"Nahradiť zástupný znak znakom"</string>
     <string name="caller_manage_header" msgid="3231519674734638786">"Konferenčný hovor <xliff:g id="CONF_CALL_TIME">%s</xliff:g>"</string>
     <string name="voicemail_settings_number_label" msgid="8524164258691887790">"Číslo hlasovej schránky"</string>
-    <string name="card_title_dialing" msgid="5769417478498348054">"Vytáčanie"</string>
+    <string name="card_title_dialing" msgid="5769417478498348054">"Vytáča sa"</string>
     <string name="card_title_redialing" msgid="8253487008234167266">"Znova sa vytáča"</string>
     <string name="card_title_conf_call" msgid="1162980346189744501">"Konferenčný hovor"</string>
     <string name="card_title_incoming_call" msgid="7364539451234646909">"Prichádzajúci hovor"</string>
@@ -49,10 +49,10 @@
     <string name="card_title_video_call" msgid="5898636679563320218">"Videohovor"</string>
     <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Žiada sa video"</string>
     <string name="card_title_video_call_error" msgid="9000555878389539225">"Videohovor nie je možné pripojiť"</string>
-    <string name="card_title_video_call_paused" msgid="3753261320787432731">"Videohovor (pozastavený)"</string>
+    <string name="card_title_video_call_rejected" msgid="462358296694719787">"Žiadosť o video bola odmietnutá"</string>
     <string name="card_title_callback_number" msgid="7307938207564217293">"Vaše číslo na spätné volanie\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Vaše číslo na spätné tiesňové volanie\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
-    <string name="notification_dialing" msgid="2107666444937350731">"Vytáčanie"</string>
+    <string name="notification_dialing" msgid="2107666444937350731">"Vytáča sa"</string>
     <string name="notification_missedCallTitle" msgid="7554385905572364535">"Zmeškaný hovor"</string>
     <string name="notification_missedCallsTitle" msgid="1361677948941502522">"Zmeškané hovory"</string>
     <string name="notification_missedCallsMsg" msgid="4575787816055205600">"Zmeškané hovory: <xliff:g id="NUM_MISSED_CALLS">%s</xliff:g>."</string>
@@ -70,14 +70,14 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"Číslo hlasovej schránky je neznáme"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"Žiadny signál"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"Vybratá sieť (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) nie je k dispozícii"</string>
-    <string name="notification_action_answer" msgid="6700362365135365143">"Odpoveď"</string>
+    <string name="notification_action_answer" msgid="6700362365135365143">"Prijať"</string>
     <string name="notification_action_end_call" msgid="6069460915123531620">"Položiť"</string>
     <string name="notification_action_answer_video" msgid="7809271910870211729">"Video"</string>
     <string name="notification_action_answer_voice" msgid="1770796916369437773">"Hlas"</string>
     <string name="notification_action_accept" msgid="2898609801209468429">"Prijať"</string>
     <string name="notification_action_dismiss" msgid="2679969397930852858">"Zatvoriť"</string>
-    <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Zavolať späť"</string>
-    <string name="notification_missedCall_message" msgid="3049928912736917988">"Správa"</string>
+    <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Zavolať"</string>
+    <string name="notification_missedCall_message" msgid="3049928912736917988">"Napísať"</string>
     <string name="incall_error_power_off" msgid="6550191216405193368">"Ak chcete telefonovať, vypnite najprv režim v lietadle."</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"Prihlásenie do siete nebolo úspešné."</string>
     <string name="incall_error_out_of_service" msgid="4100065333878929223">"Mobilná sieť nie je k dispozícii."</string>
@@ -123,7 +123,7 @@
     <string name="voicemail_settings" msgid="72448049107749316">"Nastavenie"</string>
     <string name="voicemail_number_not_set" msgid="6724904736891087856">"&lt;Nenastavené&gt;"</string>
     <string name="other_settings" msgid="3672912580359716394">"Ďalšie nastavenia hovorov"</string>
-    <string name="calling_via_template" msgid="4839419581866928142">"Voláte prostredníctvom poskytovateľa <xliff:g id="PROVIDER_NAME">%s</xliff:g>"</string>
+    <string name="calling_via_template" msgid="4839419581866928142">"Volanie cez <xliff:g id="PROVIDER_NAME">%s</xliff:g>"</string>
     <string name="incoming_via_template" msgid="1696993226115570960">"Prichádz. hovor prostred. poskytovateľa <xliff:g id="PROVIDER_NAME">%s</xliff:g>"</string>
     <string name="contactPhoto" msgid="4713193418046639466">"fotografia kontaktu"</string>
     <string name="goPrivate" msgid="865837794424530980">"prepnúť na súkromné"</string>
@@ -131,7 +131,7 @@
     <string name="respond_via_sms_custom_message" msgid="6158880869935281078">"Napísať vlastnú..."</string>
     <string name="custom_message_cancel" msgid="7516406059429609296">"Zrušiť"</string>
     <string name="custom_message_send" msgid="5795754217085747742">"Odoslať"</string>
-    <string name="description_target_answer" msgid="7205604197797472471">"Odpovedať"</string>
+    <string name="description_target_answer" msgid="7205604197797472471">"Prijať"</string>
     <string name="description_target_send_sms" msgid="2098326025587950144">"Odoslať SMS"</string>
     <string name="description_target_decline" msgid="4789834364389731957">"Odmietnuť"</string>
     <string name="description_target_answer_video_call" msgid="3495965588512395026">"Prijať ako videohovor"</string>
@@ -152,7 +152,6 @@
     <string name="default_notification_description" msgid="78174796906240970">"Predvolený zvuk (<xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g>)"</string>
     <string name="ringtone_title" msgid="6374978286202084684">"Tón zvonenia telefónu"</string>
     <string name="vibrate_on_ring_title" msgid="9197564612065258960">"Vibrovať pri zvonení"</string>
-    <string name="dial_pad_autocomplete" msgid="7683489952557536398">"Čís. klávesnica – aut. dopĺň."</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Tón zvonenia a vibrovanie"</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"Spravovať konferenčný hovor"</string>
     <string name="emergency_call_dialog_number_for_display" msgid="8373041754188879871">"Číslo tiesňového volania"</string>
@@ -174,4 +173,21 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> hodín</item>
       <item quantity="one">1 hodina</item>
     </plurals>
+    <string name="profile_photo_description" msgid="5609894336203315400">"Profilová fotka"</string>
+    <string name="camera_off_description" msgid="5689494614359429889">"Kamera je vypnutá"</string>
+    <string name="child_number" msgid="7437330400723805538">"na čísle <xliff:g id="CHILD_NUMBER">%s</xliff:g>"</string>
+    <string name="note_sent" msgid="3548700178238244595">"Poznámka bola odoslaná"</string>
+    <string name="person_contact_context_title" msgid="723266617256740572">"Nedávne správy"</string>
+    <string name="business_contact_context_title" msgid="5334864183374669765">"Informácie o firme"</string>
+    <string name="distance_imperial_away" msgid="437508440176409037">"Vzdialené <xliff:g id="DISTANCE">%.1f</xliff:g> mi"</string>
+    <string name="distance_metric_away" msgid="166931929505893599">"Vzdialené <xliff:g id="DISTANCE">%.1f</xliff:g> km"</string>
+    <string name="display_address" msgid="7307400970699471708">"<xliff:g id="STREET_ADDRESS">%1$s</xliff:g>, <xliff:g id="LOCALITY">%2$s</xliff:g>"</string>
+    <string name="open_time_span" msgid="6709726401179550381">"<xliff:g id="OPEN_TIME">%1$s</xliff:g> – <xliff:g id="CLOSE_TIME">%2$s</xliff:g>"</string>
+    <string name="opening_hours" msgid="8524931350345922176">"<xliff:g id="EARLIER_TIMES">%1$s</xliff:g>, <xliff:g id="LATER_TIME">%2$s</xliff:g>"</string>
+    <string name="opens_tomorrow_at" msgid="9168271983241323946">"Otvára sa zajtra o <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="opens_today_at" msgid="9011139983701379907">"Dnes sa otvára o <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="closes_today_at" msgid="2623384032475495193">"Zatvára sa o <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="closed_today_at" msgid="324294933330883529">"Dnes bolo zatvorené o <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="open_now" msgid="6439301193613349163">"Otvorené"</string>
+    <string name="closed_now" msgid="9175774453982778909">"Zatvorené"</string>
 </resources>
diff --git a/InCallUI/res/values-sl/strings.xml b/InCallUI/res/values-sl/strings.xml
index f418648..cb94456 100644
--- a/InCallUI/res/values-sl/strings.xml
+++ b/InCallUI/res/values-sl/strings.xml
@@ -49,7 +49,7 @@
     <string name="card_title_video_call" msgid="5898636679563320218">"Videoklic"</string>
     <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Zahtevanje videa"</string>
     <string name="card_title_video_call_error" msgid="9000555878389539225">"Videoklica ni mogoče vzpostaviti"</string>
-    <string name="card_title_video_call_paused" msgid="3753261320787432731">"Videoklic (zaustavljen)"</string>
+    <string name="card_title_video_call_rejected" msgid="462358296694719787">"Zavrnjena zahteva za videoklic"</string>
     <string name="card_title_callback_number" msgid="7307938207564217293">"Vaša številka za povratni klic:\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Vaša številka za povratni klic v sili:\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="notification_dialing" msgid="2107666444937350731">"Klicanje"</string>
@@ -123,7 +123,7 @@
     <string name="voicemail_settings" msgid="72448049107749316">"Nastavitev"</string>
     <string name="voicemail_number_not_set" msgid="6724904736891087856">"&lt;Ni nastavljeno&gt;"</string>
     <string name="other_settings" msgid="3672912580359716394">"Druge nastavitve klicev"</string>
-    <string name="calling_via_template" msgid="4839419581866928142">"Klicanje prek ponudnika <xliff:g id="PROVIDER_NAME">%s</xliff:g>"</string>
+    <string name="calling_via_template" msgid="4839419581866928142">"Klicanje prek <xliff:g id="PROVIDER_NAME">%s</xliff:g>"</string>
     <string name="incoming_via_template" msgid="1696993226115570960">"Dohodni prek <xliff:g id="PROVIDER_NAME">%s</xliff:g>"</string>
     <string name="contactPhoto" msgid="4713193418046639466">"fotografija stika"</string>
     <string name="goPrivate" msgid="865837794424530980">"zasebno"</string>
@@ -152,7 +152,6 @@
     <string name="default_notification_description" msgid="78174796906240970">"Privzeti zvok (<xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g>)"</string>
     <string name="ringtone_title" msgid="6374978286202084684">"Ton zvonjenja telefona"</string>
     <string name="vibrate_on_ring_title" msgid="9197564612065258960">"Vibriranje ob zvonjenju"</string>
-    <string name="dial_pad_autocomplete" msgid="7683489952557536398">"Samodokončanje tipkovnice"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Zvonjenje in vibriranje"</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"Upravljanje konferenčnih klicev"</string>
     <string name="emergency_call_dialog_number_for_display" msgid="8373041754188879871">"Številka za klic v sili"</string>
@@ -174,4 +173,21 @@
       <item quantity="few"><xliff:g id="COUNT">%d</xliff:g> ure</item>
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> ur</item>
     </plurals>
+    <string name="profile_photo_description" msgid="5609894336203315400">"Slika profila"</string>
+    <string name="camera_off_description" msgid="5689494614359429889">"Kamera je izklopljena"</string>
+    <string name="child_number" msgid="7437330400723805538">"prek <xliff:g id="CHILD_NUMBER">%s</xliff:g>"</string>
+    <string name="note_sent" msgid="3548700178238244595">"Opomba poslana"</string>
+    <string name="person_contact_context_title" msgid="723266617256740572">"Nedavna sporočila"</string>
+    <string name="business_contact_context_title" msgid="5334864183374669765">"Podatki o podjetju"</string>
+    <string name="distance_imperial_away" msgid="437508440176409037">"<xliff:g id="DISTANCE">%.1f</xliff:g> mi stran"</string>
+    <string name="distance_metric_away" msgid="166931929505893599">"<xliff:g id="DISTANCE">%.1f</xliff:g> km stran"</string>
+    <string name="display_address" msgid="7307400970699471708">"<xliff:g id="STREET_ADDRESS">%1$s</xliff:g>, <xliff:g id="LOCALITY">%2$s</xliff:g>"</string>
+    <string name="open_time_span" msgid="6709726401179550381">"<xliff:g id="OPEN_TIME">%1$s</xliff:g>–<xliff:g id="CLOSE_TIME">%2$s</xliff:g>"</string>
+    <string name="opening_hours" msgid="8524931350345922176">"<xliff:g id="EARLIER_TIMES">%1$s</xliff:g>, <xliff:g id="LATER_TIME">%2$s</xliff:g>"</string>
+    <string name="opens_tomorrow_at" msgid="9168271983241323946">"Odpre se jutri ob <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="opens_today_at" msgid="9011139983701379907">"Odpre se danes ob <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="closes_today_at" msgid="2623384032475495193">"Zapre se ob <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="closed_today_at" msgid="324294933330883529">"Zaprto danes ob <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="open_now" msgid="6439301193613349163">"Trenutno odprto"</string>
+    <string name="closed_now" msgid="9175774453982778909">"Trenutno zaprto"</string>
 </resources>
diff --git a/InCallUI/res/values-sq-rAL/strings.xml b/InCallUI/res/values-sq-rAL/strings.xml
new file mode 100644
index 0000000..b56e2b1
--- /dev/null
+++ b/InCallUI/res/values-sq-rAL/strings.xml
@@ -0,0 +1,187 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2013 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="phoneAppLabel" product="default" msgid="906161039445636857">"Telefoni"</string>
+    <string name="onHold" msgid="9035493194749959955">"Në pritje"</string>
+    <string name="unknown" msgid="6878797917991465859">"I panjohur"</string>
+    <string name="private_num" msgid="6713286113000232309">"Numër privat"</string>
+    <string name="payphone" msgid="4793877574636445118">"Telefon me pagesë"</string>
+    <string name="confCall" msgid="1904840547188336828">"Telefonatë konference"</string>
+    <string name="call_lost" msgid="6183862117003999578">"Telefonata ra"</string>
+    <string name="audio_mode_speaker" msgid="27649582100085266">"Altoparlant"</string>
+    <string name="audio_mode_earpiece" msgid="4156527186373869107">"Kufje për vesh"</string>
+    <string name="audio_mode_wired_headset" msgid="1465350758489175975">"Kufje me tel"</string>
+    <string name="audio_mode_bluetooth" msgid="3047641300848211128">"Bluetooth"</string>
+    <string name="wait_prompt_str" msgid="7601815427707856238">"Dëshiron t\'i dërgosh tonet e mëposhtme?\n"</string>
+    <string name="pause_prompt_str" msgid="1789964702154314806">"Po dërgon tone\n"</string>
+    <string name="send_button" msgid="4106860097497818751">"Dërgo"</string>
+    <string name="pause_prompt_yes" msgid="3564467212025151797">"Po"</string>
+    <string name="pause_prompt_no" msgid="6686238803236884877">"Jo"</string>
+    <string name="wild_prompt_str" msgid="5543521676355533577">"Zëvendëso karakterin variabël me"</string>
+    <string name="caller_manage_header" msgid="3231519674734638786">"Telefonatë konference <xliff:g id="CONF_CALL_TIME">%s</xliff:g>"</string>
+    <string name="voicemail_settings_number_label" msgid="8524164258691887790">"Numri i postës zanore"</string>
+    <string name="card_title_dialing" msgid="5769417478498348054">"Po telefonon"</string>
+    <string name="card_title_redialing" msgid="8253487008234167266">"Po riformon numrin"</string>
+    <string name="card_title_conf_call" msgid="1162980346189744501">"Telefonatë konference"</string>
+    <string name="card_title_incoming_call" msgid="7364539451234646909">"Telefonatë hyrëse"</string>
+    <string name="card_title_call_ended" msgid="5544730338889702298">"Telefonata përfundoi"</string>
+    <string name="card_title_on_hold" msgid="821463117892339942">"Në pritje"</string>
+    <string name="card_title_hanging_up" msgid="3999101620995182450">"Mbyllja"</string>
+    <string name="card_title_in_call" msgid="6346543933068225205">"Në telefonatë"</string>
+    <string name="card_title_my_phone_number" msgid="112428362494434191">"Numri është <xliff:g id="MY_PHONE_NUMBER">%s</xliff:g>"</string>
+    <string name="card_title_video_call_connecting" msgid="297586766381973954">"Po rilidh videon"</string>
+    <string name="card_title_video_call" msgid="5898636679563320218">"Telefonatë me video"</string>
+    <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Po kërkon video"</string>
+    <string name="card_title_video_call_error" msgid="9000555878389539225">"Nuk mund të lidhë telefonatën me video"</string>
+    <string name="card_title_video_call_rejected" msgid="462358296694719787">"Kërkesa me video u refuzua"</string>
+    <string name="card_title_callback_number" msgid="7307938207564217293">"Numri i kthimit të telefonatës\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
+    <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Numri i kthimit të telefonatës së urgjencës\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
+    <string name="notification_dialing" msgid="2107666444937350731">"Po telefonon"</string>
+    <string name="notification_missedCallTitle" msgid="7554385905572364535">"Telefonatë e humbur"</string>
+    <string name="notification_missedCallsTitle" msgid="1361677948941502522">"Telefonata të humbura"</string>
+    <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> telefonata të humbura"</string>
+    <string name="notification_missedCallTicker" msgid="504686252427747209">"Telefonatë e humbur nga <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
+    <string name="notification_ongoing_call" msgid="7068688957273482989">"Telefonatë në vazhdim"</string>
+    <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"Telefonatë në vazhdim me Wi-Fi"</string>
+    <string name="notification_on_hold" msgid="3480694969511790465">"Në pritje"</string>
+    <string name="notification_incoming_call" msgid="2820429205043529642">"Telefonatë hyrëse"</string>
+    <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"Telefonatë hyrëse Wi-Fi"</string>
+    <string name="notification_incoming_video_call" msgid="7356836933934464805">"Telefonatë me video hyrëse"</string>
+    <string name="notification_requesting_video_call" msgid="1405576812892369451">"Kërkesë për video hyrëse"</string>
+    <string name="notification_voicemail_title" msgid="8933468752045550523">"Postë e re zanore"</string>
+    <string name="notification_voicemail_title_count" msgid="4366360747660929916">"Postë e re zanore (<xliff:g id="COUNT">%d</xliff:g>)"</string>
+    <string name="notification_voicemail_text_format" msgid="4447323569453981685">"Formo numrin <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
+    <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"Numri i postës zanore është i panjohur"</string>
+    <string name="notification_network_selection_title" msgid="4224455487793492772">"Nuk ka shërbim"</string>
+    <string name="notification_network_selection_text" msgid="2607085729661923269">"Rrjeti i përzgjedhur (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) nuk mundësohet"</string>
+    <string name="notification_action_answer" msgid="6700362365135365143">"Përgjigju"</string>
+    <string name="notification_action_end_call" msgid="6069460915123531620">"Mbyll"</string>
+    <string name="notification_action_answer_video" msgid="7809271910870211729">"Video"</string>
+    <string name="notification_action_answer_voice" msgid="1770796916369437773">"Zanore"</string>
+    <string name="notification_action_accept" msgid="2898609801209468429">"Prano"</string>
+    <string name="notification_action_dismiss" msgid="2679969397930852858">"Injoro"</string>
+    <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Telefono"</string>
+    <string name="notification_missedCall_message" msgid="3049928912736917988">"Mesazh"</string>
+    <string name="incall_error_power_off" msgid="6550191216405193368">"Për të kryer telefonatë, së pari çaktivizo modalitetin e aeroplanit."</string>
+    <string name="incall_error_emergency_only" msgid="4678640422710818317">"I paregjistruar në rrjet."</string>
+    <string name="incall_error_out_of_service" msgid="4100065333878929223">"Rrjeti celular nuk mundësohet."</string>
+    <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Për të kryer një telefonatë, fut një numër të vlefshëm."</string>
+    <string name="incall_error_call_failed" msgid="6302746943230078197">"Nuk mund të telefonojë."</string>
+    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"Po fillon sekuencën MMI…"</string>
+    <string name="incall_error_supp_service_unknown" msgid="323435289607131929">"Shërbimi nuk mbështetet."</string>
+    <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"Nuk mund të ndryshojë telefonatat."</string>
+    <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"Nuk mund të ndajë telefonatën."</string>
+    <string name="incall_error_supp_service_transfer" msgid="7235952238189391438">"Nuk mund të transferojë."</string>
+    <string name="incall_error_supp_service_conference" msgid="7010354362202271726">"Nuk mund të kryejë telefonatë konference."</string>
+    <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Nuk mund të refuzojë telefonatën."</string>
+    <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Nuk mund të lëshojë telefonatën(at)."</string>
+    <string name="incall_call_type_label_sip" msgid="4931428719494190371">"Telefonatë SAP"</string>
+    <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Telefonata e urgjencës"</string>
+    <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Po aktivizon radion…"</string>
+    <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Nuk ka shërbim. Po provon sërish…"</string>
+    <string name="dial_emergency_error" msgid="1509085166367420355">"Nuk mund të telefonohet. <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> nuk është numër urgjence."</string>
+    <string name="dial_emergency_empty_error" msgid="9130194953830414638">"Nuk mund të telefonohet. Formo një numër urgjence."</string>
+    <string name="dialerKeyboardHintText" msgid="9192914825413747792">"Përdor tastierën për të formuar numrin"</string>
+    <string name="onscreenHoldText_unselected" msgid="7092499303393171276">"Vendose në pritje telefonatën"</string>
+    <string name="onscreenHoldText_selected" msgid="7127901498507384249">"Rifillo telefonatën"</string>
+    <string name="onscreenEndCallText" msgid="9039601192595655846">"Mbylle telefonatën"</string>
+    <string name="onscreenShowDialpadText" msgid="8561805492659639893">"Blloku i formimit të numrit"</string>
+    <string name="onscreenMuteText" msgid="5011369181754261374">"Kalo në heshtje"</string>
+    <string name="onscreenAddCallText" msgid="5140385634712287403">"Shto telefonatë"</string>
+    <string name="onscreenMergeCallsText" msgid="6640195098064538950">"Shkri telefonatat"</string>
+    <string name="onscreenSwapCallsText" msgid="1602990689244030047">"Shkëmbe"</string>
+    <string name="onscreenManageCallsText" msgid="5473231160123254154">"Menaxho telefonatat"</string>
+    <string name="onscreenManageConferenceText" msgid="6801708317570467407">"Menaxho telefonatën-konferencë"</string>
+    <string name="onscreenAudioText" msgid="1710087112800041743">"Audio"</string>
+    <string name="onscreenVideoCallText" msgid="4800924186056115442">"Telefonatë me video"</string>
+    <string name="onscreenChangeToVoiceText" msgid="5311407863653867937">"Ndërro në telefonatë me video"</string>
+    <string name="onscreenSwitchCameraText" msgid="5324543493442787798">"Ndërro kamerën"</string>
+    <string name="onscreenPauseVideoText" msgid="5663965924921429203">"Vendose në pauzë videon"</string>
+    <string name="onscreenOverflowText" msgid="2702376562345723132">"Më shumë opsione"</string>
+    <string name="player_started" msgid="6046262510243983589">"Luajtësi filloi"</string>
+    <string name="player_stopped" msgid="8856926759436364963">"Luajtësi ndaloi"</string>
+    <string name="camera_not_ready" msgid="4955261496193316240">"Kamera nuk është gati"</string>
+    <string name="camera_ready" msgid="1903335385405807324">"Kamera është gati"</string>
+    <string name="unknown_call_session_event" msgid="2431061946920253582">"Ngjarje e panjohur në sesionin e telefonatës"</string>
+    <string name="voicemail_provider" msgid="5135942703327136909">"Shërbimi"</string>
+    <string name="voicemail_settings" msgid="72448049107749316">"Konfigurimi"</string>
+    <string name="voicemail_number_not_set" msgid="6724904736891087856">"&lt;I pavendosur&gt;"</string>
+    <string name="other_settings" msgid="3672912580359716394">"Cilësime të tjera të telefonatës"</string>
+    <string name="calling_via_template" msgid="4839419581866928142">"Telefonatë përmes <xliff:g id="PROVIDER_NAME">%s</xliff:g>"</string>
+    <string name="incoming_via_template" msgid="1696993226115570960">"Hyrëse nga <xliff:g id="PROVIDER_NAME">%s</xliff:g>"</string>
+    <string name="contactPhoto" msgid="4713193418046639466">"fotografia e kontaktit"</string>
+    <string name="goPrivate" msgid="865837794424530980">"bëje private"</string>
+    <string name="selectContact" msgid="781975788478987237">"përzgjidh kontaktin"</string>
+    <string name="respond_via_sms_custom_message" msgid="6158880869935281078">"Shkruaj përgjigjen tënde..."</string>
+    <string name="custom_message_cancel" msgid="7516406059429609296">"Anulo"</string>
+    <string name="custom_message_send" msgid="5795754217085747742">"Dërgo"</string>
+    <string name="description_target_answer" msgid="7205604197797472471">"Përgjigju"</string>
+    <string name="description_target_send_sms" msgid="2098326025587950144">"Dërgo SMS"</string>
+    <string name="description_target_decline" msgid="4789834364389731957">"Refuzo"</string>
+    <string name="description_target_answer_video_call" msgid="3495965588512395026">"Përgjigju si telefonatë me video"</string>
+    <string name="description_target_answer_audio_call" msgid="8396296303320994450">"Përgjigju si telefonatë me video"</string>
+    <string name="description_target_accept_upgrade_to_video_request" msgid="2894072808324604062">"Prano kërkesën për video"</string>
+    <string name="description_target_decline_upgrade_to_video_request" msgid="4093888612888538776">"Refuzo kërkesën për video"</string>
+    <string name="description_target_accept_upgrade_to_video_transmit_request" msgid="5311037889642077468">"Prano kërkesën për transmetimin e videos"</string>
+    <string name="description_target_decline_upgrade_to_video_transmit_request" msgid="3636108065510415975">"Refuzo kërkesën për transmetimin e videos"</string>
+    <string name="description_target_accept_upgrade_to_video_receive_request" msgid="8668058323593087912">"Prano kërkesën për marrjen e videos"</string>
+    <string name="description_target_decline_upgrade_to_video_receive_request" msgid="2355776509656298367">"Refuzo kërkesën për marrjen e videos"</string>
+    <string name="description_direction_up" msgid="4441409581444516690">"Rrëshqit lart për <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+    <string name="description_direction_left" msgid="7129873384376533287">"Rrëshqit majtas për <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+    <string name="description_direction_right" msgid="2122584234531957308">"Rrëshqit djathtas për <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+    <string name="description_direction_down" msgid="4317245625565166742">"Rrëshqit poshtë për <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Dridhja"</string>
+    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Dridhja"</string>
+    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Tingulli"</string>
+    <string name="default_notification_description" msgid="78174796906240970">"Tingulli me parazgjedhje (<xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g>)"</string>
+    <string name="ringtone_title" msgid="6374978286202084684">"Zilja e telefonit"</string>
+    <string name="vibrate_on_ring_title" msgid="9197564612065258960">"Lësho edhe dridhje kur bie zilja"</string>
+    <string name="preference_category_ringtone" msgid="5197960752529332721">"Me zile dhe me dridhje"</string>
+    <string name="manageConferenceLabel" msgid="4691922394301969053">"Menaxho telefonatën-konferencë"</string>
+    <string name="emergency_call_dialog_number_for_display" msgid="8373041754188879871">"Numri i urgjencës"</string>
+    <plurals name="duration_seconds" formatted="false" msgid="59971978269163609">
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> sekonda</item>
+      <item quantity="one">1 sekondë</item>
+    </plurals>
+    <plurals name="duration_minutes" formatted="false" msgid="1103289948818175408">
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> minuta</item>
+      <item quantity="one">1 minutë</item>
+    </plurals>
+    <plurals name="duration_hours" formatted="false" msgid="7560637459014865969">
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> orë</item>
+      <item quantity="one">1 orë</item>
+    </plurals>
+    <string name="profile_photo_description" msgid="5609894336203315400">"Fotografia e profilit"</string>
+    <string name="camera_off_description" msgid="5689494614359429889">"Kamera joaktive"</string>
+    <string name="child_number" msgid="7437330400723805538">"përmes <xliff:g id="CHILD_NUMBER">%s</xliff:g>"</string>
+    <string name="note_sent" msgid="3548700178238244595">"Shënimi u dërgua"</string>
+    <string name="person_contact_context_title" msgid="723266617256740572">"Mesazhet e fundit"</string>
+    <string name="business_contact_context_title" msgid="5334864183374669765">"Informacioni i biznesit"</string>
+    <string name="distance_imperial_away" msgid="437508440176409037">"<xliff:g id="DISTANCE">%.1f</xliff:g> milje larg"</string>
+    <string name="distance_metric_away" msgid="166931929505893599">"<xliff:g id="DISTANCE">%.1f</xliff:g> km larg"</string>
+    <string name="display_address" msgid="7307400970699471708">"<xliff:g id="STREET_ADDRESS">%1$s</xliff:g>, <xliff:g id="LOCALITY">%2$s</xliff:g>"</string>
+    <string name="open_time_span" msgid="6709726401179550381">"<xliff:g id="OPEN_TIME">%1$s</xliff:g> - <xliff:g id="CLOSE_TIME">%2$s</xliff:g>"</string>
+    <string name="opening_hours" msgid="8524931350345922176">"<xliff:g id="EARLIER_TIMES">%1$s</xliff:g>, <xliff:g id="LATER_TIME">%2$s</xliff:g>"</string>
+    <string name="opens_tomorrow_at" msgid="9168271983241323946">"Hapet nesër në <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="opens_today_at" msgid="9011139983701379907">"Hapet sot në <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="closes_today_at" msgid="2623384032475495193">"Mbyllet në <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="closed_today_at" msgid="324294933330883529">"Mbyllur sot në <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="open_now" msgid="6439301193613349163">"Tani është hapur"</string>
+    <string name="closed_now" msgid="9175774453982778909">"Tani është mbyllur"</string>
+</resources>
diff --git a/InCallUI/res/values-sr/strings.xml b/InCallUI/res/values-sr/strings.xml
index 1c3bcc9..f83800d 100644
--- a/InCallUI/res/values-sr/strings.xml
+++ b/InCallUI/res/values-sr/strings.xml
@@ -36,7 +36,7 @@
     <string name="wild_prompt_str" msgid="5543521676355533577">"Замените џокер знак са"</string>
     <string name="caller_manage_header" msgid="3231519674734638786">"Конференцијски позив <xliff:g id="CONF_CALL_TIME">%s</xliff:g>"</string>
     <string name="voicemail_settings_number_label" msgid="8524164258691887790">"Број говорне поште"</string>
-    <string name="card_title_dialing" msgid="5769417478498348054">"Позивање"</string>
+    <string name="card_title_dialing" msgid="5769417478498348054">"Позива се"</string>
     <string name="card_title_redialing" msgid="8253487008234167266">"Поновно бирање"</string>
     <string name="card_title_conf_call" msgid="1162980346189744501">"Конференцијски позив"</string>
     <string name="card_title_incoming_call" msgid="7364539451234646909">"Долазни позив"</string>
@@ -49,7 +49,7 @@
     <string name="card_title_video_call" msgid="5898636679563320218">"Видео позив"</string>
     <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Захтевање видео позива"</string>
     <string name="card_title_video_call_error" msgid="9000555878389539225">"Повезивање видео позива није успело"</string>
-    <string name="card_title_video_call_paused" msgid="3753261320787432731">"Видео позив (паузиран)"</string>
+    <string name="card_title_video_call_rejected" msgid="462358296694719787">"Захтев за видео позив је одбијен"</string>
     <string name="card_title_callback_number" msgid="7307938207564217293">"Број за повратни позив\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Број за хитан повратни позив\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="notification_dialing" msgid="2107666444937350731">"Бирање"</string>
@@ -123,7 +123,7 @@
     <string name="voicemail_settings" msgid="72448049107749316">"Подешавање"</string>
     <string name="voicemail_number_not_set" msgid="6724904736891087856">"&lt;Није подешено&gt;"</string>
     <string name="other_settings" msgid="3672912580359716394">"Друга подешавања позива"</string>
-    <string name="calling_via_template" msgid="4839419581866928142">"Позивање преко добављача <xliff:g id="PROVIDER_NAME">%s</xliff:g>"</string>
+    <string name="calling_via_template" msgid="4839419581866928142">"Позивање преко <xliff:g id="PROVIDER_NAME">%s</xliff:g>"</string>
     <string name="incoming_via_template" msgid="1696993226115570960">"Долазна преко <xliff:g id="PROVIDER_NAME">%s</xliff:g>"</string>
     <string name="contactPhoto" msgid="4713193418046639466">"фотографија контакта"</string>
     <string name="goPrivate" msgid="865837794424530980">"иди на приватно"</string>
@@ -152,7 +152,6 @@
     <string name="default_notification_description" msgid="78174796906240970">"Подразумевани звук (<xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g>)"</string>
     <string name="ringtone_title" msgid="6374978286202084684">"Мелодија звона телефона"</string>
     <string name="vibrate_on_ring_title" msgid="9197564612065258960">"Вибрирај када звони"</string>
-    <string name="dial_pad_autocomplete" msgid="7683489952557536398">"Аутоматско довршавање"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Мелодија звона и вибрација"</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"Управљање конференцијским позивом"</string>
     <string name="emergency_call_dialog_number_for_display" msgid="8373041754188879871">"Број за хитне случајеве"</string>
@@ -171,4 +170,21 @@
       <item quantity="few"><xliff:g id="COUNT">%d</xliff:g> сата</item>
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> сати</item>
     </plurals>
+    <string name="profile_photo_description" msgid="5609894336203315400">"Слика профила"</string>
+    <string name="camera_off_description" msgid="5689494614359429889">"Камера је искључена"</string>
+    <string name="child_number" msgid="7437330400723805538">"на <xliff:g id="CHILD_NUMBER">%s</xliff:g>"</string>
+    <string name="note_sent" msgid="3548700178238244595">"Белешка је послата"</string>
+    <string name="person_contact_context_title" msgid="723266617256740572">"Недавне поруке"</string>
+    <string name="business_contact_context_title" msgid="5334864183374669765">"Информације о предузећу"</string>
+    <string name="distance_imperial_away" msgid="437508440176409037">"Удаљеност је <xliff:g id="DISTANCE">%.1f</xliff:g> mi"</string>
+    <string name="distance_metric_away" msgid="166931929505893599">"Удаљеност је <xliff:g id="DISTANCE">%.1f</xliff:g> km"</string>
+    <string name="display_address" msgid="7307400970699471708">"<xliff:g id="STREET_ADDRESS">%1$s</xliff:g>, <xliff:g id="LOCALITY">%2$s</xliff:g>"</string>
+    <string name="open_time_span" msgid="6709726401179550381">"<xliff:g id="OPEN_TIME">%1$s</xliff:g>–<xliff:g id="CLOSE_TIME">%2$s</xliff:g>"</string>
+    <string name="opening_hours" msgid="8524931350345922176">"<xliff:g id="EARLIER_TIMES">%1$s</xliff:g>, <xliff:g id="LATER_TIME">%2$s</xliff:g>"</string>
+    <string name="opens_tomorrow_at" msgid="9168271983241323946">"Отвара се сутра у <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="opens_today_at" msgid="9011139983701379907">"Отвара се данас у <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="closes_today_at" msgid="2623384032475495193">"Затвара се у <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="closed_today_at" msgid="324294933330883529">"Затворило се данас у <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="open_now" msgid="6439301193613349163">"Тренутно отворено"</string>
+    <string name="closed_now" msgid="9175774453982778909">"Тренутно затворено"</string>
 </resources>
diff --git a/InCallUI/res/values-sv/strings.xml b/InCallUI/res/values-sv/strings.xml
index 3bdcb8d..fe6c742 100644
--- a/InCallUI/res/values-sv/strings.xml
+++ b/InCallUI/res/values-sv/strings.xml
@@ -49,7 +49,7 @@
     <string name="card_title_video_call" msgid="5898636679563320218">"Videosamtal"</string>
     <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Begär video"</string>
     <string name="card_title_video_call_error" msgid="9000555878389539225">"Det gick inte att ansluta till videosamtalet"</string>
-    <string name="card_title_video_call_paused" msgid="3753261320787432731">"Videosamtal (pausat)"</string>
+    <string name="card_title_video_call_rejected" msgid="462358296694719787">"Videobegäran avslogs"</string>
     <string name="card_title_callback_number" msgid="7307938207564217293">"Ditt nummer för återuppringning\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Ditt nödnummer för återuppringning\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="notification_dialing" msgid="2107666444937350731">"Ringer"</string>
@@ -77,7 +77,7 @@
     <string name="notification_action_accept" msgid="2898609801209468429">"Godkänn"</string>
     <string name="notification_action_dismiss" msgid="2679969397930852858">"Avvisa"</string>
     <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Ring upp"</string>
-    <string name="notification_missedCall_message" msgid="3049928912736917988">"Meddelande"</string>
+    <string name="notification_missedCall_message" msgid="3049928912736917988">"Sms:a"</string>
     <string name="incall_error_power_off" msgid="6550191216405193368">"Om du vill ringa ett samtal måste du först inaktivera flygplansläge."</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"Inte registrerat på nätverk."</string>
     <string name="incall_error_out_of_service" msgid="4100065333878929223">"Det finns inget mobilnät tillgängligt."</string>
@@ -152,7 +152,6 @@
     <string name="default_notification_description" msgid="78174796906240970">"Standardsignal (<xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g>)"</string>
     <string name="ringtone_title" msgid="6374978286202084684">"Ringsignal"</string>
     <string name="vibrate_on_ring_title" msgid="9197564612065258960">"Mobilen vibrerar när det ringer"</string>
-    <string name="dial_pad_autocomplete" msgid="7683489952557536398">"Autoslutförande för knappsats"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Ringsignal och vibrera"</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"Hantera konferenssamtal"</string>
     <string name="emergency_call_dialog_number_for_display" msgid="8373041754188879871">"Nödsamtalsnummer"</string>
@@ -168,4 +167,21 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> timmar</item>
       <item quantity="one">1 timme</item>
     </plurals>
+    <string name="profile_photo_description" msgid="5609894336203315400">"Profilfoto"</string>
+    <string name="camera_off_description" msgid="5689494614359429889">"Kamera av"</string>
+    <string name="child_number" msgid="7437330400723805538">"via <xliff:g id="CHILD_NUMBER">%s</xliff:g>"</string>
+    <string name="note_sent" msgid="3548700178238244595">"Anteckningen har skickats"</string>
+    <string name="person_contact_context_title" msgid="723266617256740572">"Senaste meddelandena"</string>
+    <string name="business_contact_context_title" msgid="5334864183374669765">"Företagsuppgifter"</string>
+    <string name="distance_imperial_away" msgid="437508440176409037">"<xliff:g id="DISTANCE">%.1f</xliff:g> miles bort"</string>
+    <string name="distance_metric_away" msgid="166931929505893599">"<xliff:g id="DISTANCE">%.1f</xliff:g> km bort"</string>
+    <string name="display_address" msgid="7307400970699471708">"<xliff:g id="STREET_ADDRESS">%1$s</xliff:g>, <xliff:g id="LOCALITY">%2$s</xliff:g>"</string>
+    <string name="open_time_span" msgid="6709726401179550381">"<xliff:g id="OPEN_TIME">%1$s</xliff:g>–<xliff:g id="CLOSE_TIME">%2$s</xliff:g>"</string>
+    <string name="opening_hours" msgid="8524931350345922176">"<xliff:g id="EARLIER_TIMES">%1$s</xliff:g>, <xliff:g id="LATER_TIME">%2$s</xliff:g>"</string>
+    <string name="opens_tomorrow_at" msgid="9168271983241323946">"Öppnar i morgon kl. <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="opens_today_at" msgid="9011139983701379907">"Öppnar i dag kl. <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="closes_today_at" msgid="2623384032475495193">"Stänger kl. <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="closed_today_at" msgid="324294933330883529">"Stängde i dag kl. <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="open_now" msgid="6439301193613349163">"Öppet"</string>
+    <string name="closed_now" msgid="9175774453982778909">"Stängt"</string>
 </resources>
diff --git a/InCallUI/res/values-sw/strings.xml b/InCallUI/res/values-sw/strings.xml
index b3d287e..4c417c5 100644
--- a/InCallUI/res/values-sw/strings.xml
+++ b/InCallUI/res/values-sw/strings.xml
@@ -49,7 +49,7 @@
     <string name="card_title_video_call" msgid="5898636679563320218">"Hangout ya Video"</string>
     <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Inaomba video"</string>
     <string name="card_title_video_call_error" msgid="9000555878389539225">"Haiwezi kuunganisha Hangout ya video"</string>
-    <string name="card_title_video_call_paused" msgid="3753261320787432731">"Hangout ya video (Imesitishwa)"</string>
+    <string name="card_title_video_call_rejected" msgid="462358296694719787">"Ombi la video limekataliwa"</string>
     <string name="card_title_callback_number" msgid="7307938207564217293">"Nambari yako ya kupigiwa simu\n<xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Nambari yako ya dharura ya kupigiwa simu\n<xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="notification_dialing" msgid="2107666444937350731">"Inapiga"</string>
@@ -123,7 +123,7 @@
     <string name="voicemail_settings" msgid="72448049107749316">"Sanidi"</string>
     <string name="voicemail_number_not_set" msgid="6724904736891087856">"&lt;Haijawekwa&gt;"</string>
     <string name="other_settings" msgid="3672912580359716394">"Mipangilio mingine ya simu"</string>
-    <string name="calling_via_template" msgid="4839419581866928142">"Kupiga simu kupitia <xliff:g id="PROVIDER_NAME">%s</xliff:g>"</string>
+    <string name="calling_via_template" msgid="4839419581866928142">"Inapiga kupitia <xliff:g id="PROVIDER_NAME">%s</xliff:g>"</string>
     <string name="incoming_via_template" msgid="1696993226115570960">"Simu zinazoingia kupitia <xliff:g id="PROVIDER_NAME">%s</xliff:g>"</string>
     <string name="contactPhoto" msgid="4713193418046639466">"picha ya anwani"</string>
     <string name="goPrivate" msgid="865837794424530980">"nenda kwa faragha"</string>
@@ -152,7 +152,6 @@
     <string name="default_notification_description" msgid="78174796906240970">"Sauti chaguo-msingi (<xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g>)"</string>
     <string name="ringtone_title" msgid="6374978286202084684">"Mlio wa simu"</string>
     <string name="vibrate_on_ring_title" msgid="9197564612065258960">"Tetema wakati wa kulia"</string>
-    <string name="dial_pad_autocomplete" msgid="7683489952557536398">"Ukamilishaji otomatiki wa vitufe vya kupiga simu"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Mlio wa simu na Mtetemo"</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"Dhibiti simu ya kongamano"</string>
     <string name="emergency_call_dialog_number_for_display" msgid="8373041754188879871">"Nambari ya dharura"</string>
@@ -168,4 +167,21 @@
       <item quantity="other">Saa <xliff:g id="COUNT">%d</xliff:g></item>
       <item quantity="one">Saa 1</item>
     </plurals>
+    <string name="profile_photo_description" msgid="5609894336203315400">"Picha kwenye wasifu"</string>
+    <string name="camera_off_description" msgid="5689494614359429889">"Kamera imezimwa"</string>
+    <string name="child_number" msgid="7437330400723805538">"kupitia <xliff:g id="CHILD_NUMBER">%s</xliff:g>"</string>
+    <string name="note_sent" msgid="3548700178238244595">"Dokezo limetumwa"</string>
+    <string name="person_contact_context_title" msgid="723266617256740572">"Ujumbe wa hivi majuzi"</string>
+    <string name="business_contact_context_title" msgid="5334864183374669765">"Maelezo ya biashara"</string>
+    <string name="distance_imperial_away" msgid="437508440176409037">"Umbali wa maili <xliff:g id="DISTANCE">%.1f</xliff:g>"</string>
+    <string name="distance_metric_away" msgid="166931929505893599">"Umbali wa kilomita <xliff:g id="DISTANCE">%.1f</xliff:g>"</string>
+    <string name="display_address" msgid="7307400970699471708">"<xliff:g id="STREET_ADDRESS">%1$s</xliff:g>, <xliff:g id="LOCALITY">%2$s</xliff:g>"</string>
+    <string name="open_time_span" msgid="6709726401179550381">"<xliff:g id="OPEN_TIME">%1$s</xliff:g> - <xliff:g id="CLOSE_TIME">%2$s</xliff:g>"</string>
+    <string name="opening_hours" msgid="8524931350345922176">"<xliff:g id="EARLIER_TIMES">%1$s</xliff:g>, <xliff:g id="LATER_TIME">%2$s</xliff:g>"</string>
+    <string name="opens_tomorrow_at" msgid="9168271983241323946">"Itafunguliwa kesho saa <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="opens_today_at" msgid="9011139983701379907">"Itafunguliwa leo saa <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="closes_today_at" msgid="2623384032475495193">"Hufungwa saa <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="closed_today_at" msgid="324294933330883529">"Imefungwa leo saa <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="open_now" msgid="6439301193613349163">"Sasa imefunguliwa"</string>
+    <string name="closed_now" msgid="9175774453982778909">"Sasa imefungwa"</string>
 </resources>
diff --git a/InCallUI/res/values-sw360dp/dimens.xml b/InCallUI/res/values-sw360dp/dimens.xml
index d6ee5b4..9fbcd60 100644
--- a/InCallUI/res/values-sw360dp/dimens.xml
+++ b/InCallUI/res/values-sw360dp/dimens.xml
@@ -18,9 +18,6 @@
 <resources>
     <!-- Dimensions for CallCard elements (the normal in-call UI) -->
 
-    <!-- Height of the "call banner" overlay on top of the upper part of
-         the call info area. -->
-    <dimen name="call_banner_height">122dp</dimen>
     <!-- Text size for the name in the call info. -->
     <dimen name="call_status_text_size">22sp</dimen>
     <dimen name="call_status_text_min_size">18sp</dimen>
diff --git a/InCallUI/res/values-ta-rIN/strings.xml b/InCallUI/res/values-ta-rIN/strings.xml
index a4f1feb..638b6ff 100644
--- a/InCallUI/res/values-ta-rIN/strings.xml
+++ b/InCallUI/res/values-ta-rIN/strings.xml
@@ -49,7 +49,7 @@
     <string name="card_title_video_call" msgid="5898636679563320218">"வீடியோ அழைப்பு"</string>
     <string name="card_title_video_call_requesting" msgid="4587504939739340937">"வீடியோவைக் கோருகிறது"</string>
     <string name="card_title_video_call_error" msgid="9000555878389539225">"வீடியோ அழைப்பை இணைக்க முடியாது"</string>
-    <string name="card_title_video_call_paused" msgid="3753261320787432731">"வீடியோ அழைப்பு (இடைநிறுத்தப்பட்டது)"</string>
+    <string name="card_title_video_call_rejected" msgid="462358296694719787">"வீடியோ கோரிக்கை புறக்கணிக்கப்பட்டது"</string>
     <string name="card_title_callback_number" msgid="7307938207564217293">"உங்களைத் திரும்ப அழைப்பதற்கான எண்\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"அவசர அழைப்பு எண்\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="notification_dialing" msgid="2107666444937350731">"அழைக்கிறது"</string>
@@ -70,13 +70,13 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"குரலஞ்சல் எண் அறியப்படவில்லை"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"சேவை இல்லை"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"தேர்ந்தெடுத்த நெட்வொர்க் (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) கிடைக்கவில்லை"</string>
-    <string name="notification_action_answer" msgid="6700362365135365143">"பதில்"</string>
+    <string name="notification_action_answer" msgid="6700362365135365143">"எடு"</string>
     <string name="notification_action_end_call" msgid="6069460915123531620">"துண்டி"</string>
     <string name="notification_action_answer_video" msgid="7809271910870211729">"வீடியோ"</string>
     <string name="notification_action_answer_voice" msgid="1770796916369437773">"குரல்"</string>
     <string name="notification_action_accept" msgid="2898609801209468429">"ஏற்கிறேன்"</string>
     <string name="notification_action_dismiss" msgid="2679969397930852858">"நிராகரி"</string>
-    <string name="notification_missedCall_call_back" msgid="2684890353590890187">"திருப்பி அழை"</string>
+    <string name="notification_missedCall_call_back" msgid="2684890353590890187">"அழை"</string>
     <string name="notification_missedCall_message" msgid="3049928912736917988">"செய்தி"</string>
     <string name="incall_error_power_off" msgid="6550191216405193368">"அழைப்பதற்கு, முதலில் விமானப் பயன்முறையை முடக்கவும்."</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"நெட்வொர்க்கில் பதிவுசெய்யப்படவில்லை."</string>
@@ -152,7 +152,6 @@
     <string name="default_notification_description" msgid="78174796906240970">"இயல்பு ஒலி (<xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g>)"</string>
     <string name="ringtone_title" msgid="6374978286202084684">"தொலைபேசி ரிங்டோன்"</string>
     <string name="vibrate_on_ring_title" msgid="9197564612065258960">"ரிங் ஆகும்போது அதிர்வை ஏற்படுத்து"</string>
-    <string name="dial_pad_autocomplete" msgid="7683489952557536398">"டயல்பேட் தன்னிரப்பி"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"ரிங்டோன் &amp; அதிர்வு"</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"குழு அழைப்பை நிர்வகிக்கவும்"</string>
     <string name="emergency_call_dialog_number_for_display" msgid="8373041754188879871">"அவசரகால எண்"</string>
@@ -168,4 +167,21 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> மணிநேரம்</item>
       <item quantity="one">1 மணிநேரம்</item>
     </plurals>
+    <string name="profile_photo_description" msgid="5609894336203315400">"சுயவிவரப் படம்"</string>
+    <string name="camera_off_description" msgid="5689494614359429889">"கேமராவை முடக்கும்"</string>
+    <string name="child_number" msgid="7437330400723805538">"<xliff:g id="CHILD_NUMBER">%s</xliff:g> வழியாக"</string>
+    <string name="note_sent" msgid="3548700178238244595">"குறிப்பு அனுப்பப்பட்டது"</string>
+    <string name="person_contact_context_title" msgid="723266617256740572">"சமீபத்திய செய்திகள்"</string>
+    <string name="business_contact_context_title" msgid="5334864183374669765">"வணிகத் தகவல்"</string>
+    <string name="distance_imperial_away" msgid="437508440176409037">"<xliff:g id="DISTANCE">%.1f</xliff:g> மைல் தொலைவில்"</string>
+    <string name="distance_metric_away" msgid="166931929505893599">"<xliff:g id="DISTANCE">%.1f</xliff:g> கிமீ தொலைவில்"</string>
+    <string name="display_address" msgid="7307400970699471708">"<xliff:g id="STREET_ADDRESS">%1$s</xliff:g>, <xliff:g id="LOCALITY">%2$s</xliff:g>"</string>
+    <string name="open_time_span" msgid="6709726401179550381">"<xliff:g id="OPEN_TIME">%1$s</xliff:g> - <xliff:g id="CLOSE_TIME">%2$s</xliff:g>"</string>
+    <string name="opening_hours" msgid="8524931350345922176">"<xliff:g id="EARLIER_TIMES">%1$s</xliff:g>, <xliff:g id="LATER_TIME">%2$s</xliff:g>"</string>
+    <string name="opens_tomorrow_at" msgid="9168271983241323946">"நாளை <xliff:g id="OPEN_TIME">%s</xliff:g> மணிக்குத் திறக்கப்படும்"</string>
+    <string name="opens_today_at" msgid="9011139983701379907">"இன்று <xliff:g id="OPEN_TIME">%s</xliff:g> மணிக்குத் திறக்கப்படும்"</string>
+    <string name="closes_today_at" msgid="2623384032475495193">"<xliff:g id="CLOSE_TIME">%s</xliff:g> மணிக்கு மூடப்படும்"</string>
+    <string name="closed_today_at" msgid="324294933330883529">"இன்று <xliff:g id="CLOSE_TIME">%s</xliff:g> மணிக்கு மூடப்பட்டது"</string>
+    <string name="open_now" msgid="6439301193613349163">"இப்போது திறக்கப்பட்டுள்ளது"</string>
+    <string name="closed_now" msgid="9175774453982778909">"இப்போது மூடப்பட்டுள்ளது"</string>
 </resources>
diff --git a/InCallUI/res/values-te-rIN/strings.xml b/InCallUI/res/values-te-rIN/strings.xml
index 479b4c2..94ef5df 100644
--- a/InCallUI/res/values-te-rIN/strings.xml
+++ b/InCallUI/res/values-te-rIN/strings.xml
@@ -49,7 +49,7 @@
     <string name="card_title_video_call" msgid="5898636679563320218">"వీడియో కాల్"</string>
     <string name="card_title_video_call_requesting" msgid="4587504939739340937">"వీడియో కోసం అభ్యర్థిస్తోంది"</string>
     <string name="card_title_video_call_error" msgid="9000555878389539225">"వీడియో కాల్‌ను కనెక్ట్ చేయలేరు"</string>
-    <string name="card_title_video_call_paused" msgid="3753261320787432731">"వీడియో కాల్ (పాజ్ చేయబడింది)"</string>
+    <string name="card_title_video_call_rejected" msgid="462358296694719787">"వీడియో అభ్యర్థన నిరాకరించబడింది"</string>
     <string name="card_title_callback_number" msgid="7307938207564217293">"మీ కాల్‌బ్యాక్ నంబర్\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"మీ అత్యవసర కాల్‌బ్యాక్ నంబర్\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="notification_dialing" msgid="2107666444937350731">"డయల్ చేస్తోంది"</string>
@@ -76,7 +76,7 @@
     <string name="notification_action_answer_voice" msgid="1770796916369437773">"వాయిస్"</string>
     <string name="notification_action_accept" msgid="2898609801209468429">"ఆమోదిస్తున్నాను"</string>
     <string name="notification_action_dismiss" msgid="2679969397930852858">"తీసివేయి"</string>
-    <string name="notification_missedCall_call_back" msgid="2684890353590890187">"తిరిగి కాల్ చేయి"</string>
+    <string name="notification_missedCall_call_back" msgid="2684890353590890187">"కాల్ చేయి"</string>
     <string name="notification_missedCall_message" msgid="3049928912736917988">"సందేశం"</string>
     <string name="incall_error_power_off" msgid="6550191216405193368">"కాల్ చేయడానికి, మొదట ఎయిర్‌ప్లైన్ మోడ్‌ను ఆపివేయండి."</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"నెట్‌వర్క్‌లో నమోదు కాలేదు."</string>
@@ -123,7 +123,7 @@
     <string name="voicemail_settings" msgid="72448049107749316">"సెటప్"</string>
     <string name="voicemail_number_not_set" msgid="6724904736891087856">"&lt;సెట్ చేయలేదు&gt;"</string>
     <string name="other_settings" msgid="3672912580359716394">"ఇతర కాల్ సెట్టింగ్‌లు"</string>
-    <string name="calling_via_template" msgid="4839419581866928142">"<xliff:g id="PROVIDER_NAME">%s</xliff:g> ద్వారా కాల్ చేయబడుతోంది"</string>
+    <string name="calling_via_template" msgid="4839419581866928142">"<xliff:g id="PROVIDER_NAME">%s</xliff:g>తో కాల్ వెళుతోంది"</string>
     <string name="incoming_via_template" msgid="1696993226115570960">"<xliff:g id="PROVIDER_NAME">%s</xliff:g> ద్వారా ఇన్‌కమింగ్"</string>
     <string name="contactPhoto" msgid="4713193418046639466">"పరిచయ ఫోటో"</string>
     <string name="goPrivate" msgid="865837794424530980">"ప్రైవేట్‌గా వెళ్లు"</string>
@@ -152,7 +152,6 @@
     <string name="default_notification_description" msgid="78174796906240970">"డిఫాల్ట్ ధ్వని (<xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g>)"</string>
     <string name="ringtone_title" msgid="6374978286202084684">"ఫోన్ రింగ్‌టోన్"</string>
     <string name="vibrate_on_ring_title" msgid="9197564612065258960">"రింగ్ అవుతున్నప్పుడు వైబ్రేట్ చేయి"</string>
-    <string name="dial_pad_autocomplete" msgid="7683489952557536398">"డయల్‌ప్యాడ్ స్వీయపూర్తి"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"రింగ్‌టోన్ &amp; వైబ్రేట్"</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"కాన్ఫరెన్స్ కాల్‌ను నిర్వహించండి"</string>
     <string name="emergency_call_dialog_number_for_display" msgid="8373041754188879871">"అత్యవసర నంబర్"</string>
@@ -168,4 +167,21 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> గంటలు</item>
       <item quantity="one">1 గంట</item>
     </plurals>
+    <string name="profile_photo_description" msgid="5609894336203315400">"ప్రొఫైల్ ఫోటో"</string>
+    <string name="camera_off_description" msgid="5689494614359429889">"కెమెరా ఆఫ్‌లో ఉంది"</string>
+    <string name="child_number" msgid="7437330400723805538">"<xliff:g id="CHILD_NUMBER">%s</xliff:g> ద్వారా"</string>
+    <string name="note_sent" msgid="3548700178238244595">"గమనిక పంపబడింది"</string>
+    <string name="person_contact_context_title" msgid="723266617256740572">"ఇటీవలి సందేశాలు"</string>
+    <string name="business_contact_context_title" msgid="5334864183374669765">"వ్యాపార సంస్థ సమాచారం"</string>
+    <string name="distance_imperial_away" msgid="437508440176409037">"<xliff:g id="DISTANCE">%.1f</xliff:g> మై. దూరంలో ఉంది"</string>
+    <string name="distance_metric_away" msgid="166931929505893599">"<xliff:g id="DISTANCE">%.1f</xliff:g> కి.మీ దూరంలో ఉంది"</string>
+    <string name="display_address" msgid="7307400970699471708">"<xliff:g id="STREET_ADDRESS">%1$s</xliff:g>, <xliff:g id="LOCALITY">%2$s</xliff:g>"</string>
+    <string name="open_time_span" msgid="6709726401179550381">"<xliff:g id="OPEN_TIME">%1$s</xliff:g> - <xliff:g id="CLOSE_TIME">%2$s</xliff:g>"</string>
+    <string name="opening_hours" msgid="8524931350345922176">"<xliff:g id="EARLIER_TIMES">%1$s</xliff:g>, <xliff:g id="LATER_TIME">%2$s</xliff:g>"</string>
+    <string name="opens_tomorrow_at" msgid="9168271983241323946">"రేపు <xliff:g id="OPEN_TIME">%s</xliff:g>కి తెరవబడుతుంది"</string>
+    <string name="opens_today_at" msgid="9011139983701379907">"ఈరోజు <xliff:g id="OPEN_TIME">%s</xliff:g>కి తెరవబడుతుంది"</string>
+    <string name="closes_today_at" msgid="2623384032475495193">"<xliff:g id="CLOSE_TIME">%s</xliff:g>కి మూసివేయబడుతుంది"</string>
+    <string name="closed_today_at" msgid="324294933330883529">"ఈరోజు <xliff:g id="CLOSE_TIME">%s</xliff:g>కి మూసివేయబడింది"</string>
+    <string name="open_now" msgid="6439301193613349163">"ఇప్పుడు తెరిచి ఉంది"</string>
+    <string name="closed_now" msgid="9175774453982778909">"ఇప్పుడు మూసివేయబడింది"</string>
 </resources>
diff --git a/InCallUI/res/values-th/strings.xml b/InCallUI/res/values-th/strings.xml
index 0cd0a55..540a15f 100644
--- a/InCallUI/res/values-th/strings.xml
+++ b/InCallUI/res/values-th/strings.xml
@@ -49,7 +49,7 @@
     <string name="card_title_video_call" msgid="5898636679563320218">"แฮงเอาท์วิดีโอ"</string>
     <string name="card_title_video_call_requesting" msgid="4587504939739340937">"กำลังขอวิดีโอ"</string>
     <string name="card_title_video_call_error" msgid="9000555878389539225">"ไม่สามารถเชื่อมต่อแฮงเอาท์วิดีโอได้"</string>
-    <string name="card_title_video_call_paused" msgid="3753261320787432731">"แฮงเอาท์วิดีโอ (หยุดชั่วคราว)"</string>
+    <string name="card_title_video_call_rejected" msgid="462358296694719787">"คำขอวิดีโอถูกปฏิเสธ"</string>
     <string name="card_title_callback_number" msgid="7307938207564217293">"หมายเลขโทรกลับของคุณ\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"หมายเลขโทรกลับฉุกเฉินของคุณ\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="notification_dialing" msgid="2107666444937350731">"กำลังโทรออก"</string>
@@ -70,12 +70,12 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"ไม่ทราบหมายเลขข้อความเสียง"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"ไม่มีบริการ"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"เครือข่ายที่เลือกไว้ (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) ไม่พร้อมใช้งาน"</string>
-    <string name="notification_action_answer" msgid="6700362365135365143">"ตอบ"</string>
+    <string name="notification_action_answer" msgid="6700362365135365143">"รับสาย"</string>
     <string name="notification_action_end_call" msgid="6069460915123531620">"วางสาย"</string>
     <string name="notification_action_answer_video" msgid="7809271910870211729">"วิดีโอ"</string>
     <string name="notification_action_answer_voice" msgid="1770796916369437773">"เสียง"</string>
     <string name="notification_action_accept" msgid="2898609801209468429">"ยอมรับ"</string>
-    <string name="notification_action_dismiss" msgid="2679969397930852858">"ปิด"</string>
+    <string name="notification_action_dismiss" msgid="2679969397930852858">"ไม่รับ"</string>
     <string name="notification_missedCall_call_back" msgid="2684890353590890187">"โทรกลับ"</string>
     <string name="notification_missedCall_message" msgid="3049928912736917988">"ข้อความ"</string>
     <string name="incall_error_power_off" msgid="6550191216405193368">"หากต้องการโทรออก ให้ปิดโหมดใช้งานบนเครื่องบินก่อน"</string>
@@ -152,7 +152,6 @@
     <string name="default_notification_description" msgid="78174796906240970">"เสียงเริ่มต้น (<xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g>)"</string>
     <string name="ringtone_title" msgid="6374978286202084684">"เสียงเรียกเข้าโทรศัพท์"</string>
     <string name="vibrate_on_ring_title" msgid="9197564612065258960">"สั่นเมื่อมีสายเข้า"</string>
-    <string name="dial_pad_autocomplete" msgid="7683489952557536398">"เติมหมายเลขอัตโนมัติบนแป้น"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"เสียงเรียกเข้าและสั่น"</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"จัดการการประชุมสาย"</string>
     <string name="emergency_call_dialog_number_for_display" msgid="8373041754188879871">"หมายเลขฉุกเฉิน"</string>
@@ -168,4 +167,21 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> ชั่วโมง</item>
       <item quantity="one">1 ชั่วโมง</item>
     </plurals>
+    <string name="profile_photo_description" msgid="5609894336203315400">"รูปโปรไฟล์"</string>
+    <string name="camera_off_description" msgid="5689494614359429889">"ปิดกล้อง"</string>
+    <string name="child_number" msgid="7437330400723805538">"ผ่านหมายเลข <xliff:g id="CHILD_NUMBER">%s</xliff:g>"</string>
+    <string name="note_sent" msgid="3548700178238244595">"ส่งโน้ตแล้ว"</string>
+    <string name="person_contact_context_title" msgid="723266617256740572">"ข้อความล่าสุด"</string>
+    <string name="business_contact_context_title" msgid="5334864183374669765">"ข้อมูลธุรกิจ"</string>
+    <string name="distance_imperial_away" msgid="437508440176409037">"อยู่ห่างออกไป <xliff:g id="DISTANCE">%.1f</xliff:g> ไมล์"</string>
+    <string name="distance_metric_away" msgid="166931929505893599">"อยู่ห่างออกไป <xliff:g id="DISTANCE">%.1f</xliff:g> กม."</string>
+    <string name="display_address" msgid="7307400970699471708">"<xliff:g id="STREET_ADDRESS">%1$s</xliff:g>, <xliff:g id="LOCALITY">%2$s</xliff:g>"</string>
+    <string name="open_time_span" msgid="6709726401179550381">"<xliff:g id="OPEN_TIME">%1$s</xliff:g> - <xliff:g id="CLOSE_TIME">%2$s</xliff:g>"</string>
+    <string name="opening_hours" msgid="8524931350345922176">"<xliff:g id="EARLIER_TIMES">%1$s</xliff:g>, <xliff:g id="LATER_TIME">%2$s</xliff:g>"</string>
+    <string name="opens_tomorrow_at" msgid="9168271983241323946">"เปิดให้บริการพรุ่งนี้เวลา <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="opens_today_at" msgid="9011139983701379907">"เปิดให้บริการวันนี้เวลา <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="closes_today_at" msgid="2623384032475495193">"ปิดให้บริการเวลา <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="closed_today_at" msgid="324294933330883529">"ปิดให้บริการแล้ววันนี้เวลา <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="open_now" msgid="6439301193613349163">"ขณะนี้เปิดทำการ"</string>
+    <string name="closed_now" msgid="9175774453982778909">"ขณะนี้ปิดทำการ"</string>
 </resources>
diff --git a/InCallUI/res/values-tl/strings.xml b/InCallUI/res/values-tl/strings.xml
index 8a88f9b..0468b55 100644
--- a/InCallUI/res/values-tl/strings.xml
+++ b/InCallUI/res/values-tl/strings.xml
@@ -49,7 +49,7 @@
     <string name="card_title_video_call" msgid="5898636679563320218">"Video call"</string>
     <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Humihiling ng video"</string>
     <string name="card_title_video_call_error" msgid="9000555878389539225">"Hindi makakonekta sa video call"</string>
-    <string name="card_title_video_call_paused" msgid="3753261320787432731">"Video call (Naka-pause)"</string>
+    <string name="card_title_video_call_rejected" msgid="462358296694719787">"Tinanggihan ang kahilingan sa video"</string>
     <string name="card_title_callback_number" msgid="7307938207564217293">"Ang iyong numero ng callback\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Ang iyong emergency na numero ng callback\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="notification_dialing" msgid="2107666444937350731">"Dina-dial"</string>
@@ -123,7 +123,7 @@
     <string name="voicemail_settings" msgid="72448049107749316">"Setup"</string>
     <string name="voicemail_number_not_set" msgid="6724904736891087856">"&lt;Hindi nakatakda&gt;"</string>
     <string name="other_settings" msgid="3672912580359716394">"Iba pang mga setting ng tawag"</string>
-    <string name="calling_via_template" msgid="4839419581866928142">"Tumatawag sa pamamagitan ng <xliff:g id="PROVIDER_NAME">%s</xliff:g>"</string>
+    <string name="calling_via_template" msgid="4839419581866928142">"Tumatawag via <xliff:g id="PROVIDER_NAME">%s</xliff:g>"</string>
     <string name="incoming_via_template" msgid="1696993226115570960">"Papasok sa pamamagitan ng <xliff:g id="PROVIDER_NAME">%s</xliff:g>"</string>
     <string name="contactPhoto" msgid="4713193418046639466">"larawan ng contact"</string>
     <string name="goPrivate" msgid="865837794424530980">"maging pribado"</string>
@@ -152,7 +152,6 @@
     <string name="default_notification_description" msgid="78174796906240970">"Default na tunog (<xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g>)"</string>
     <string name="ringtone_title" msgid="6374978286202084684">"Ringtone ng telepono"</string>
     <string name="vibrate_on_ring_title" msgid="9197564612065258960">"I-vibrate kapag nagri-ring"</string>
-    <string name="dial_pad_autocomplete" msgid="7683489952557536398">"I-autocomplete ang dialpad"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Ringtone at Pag-vibrate"</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"Pamahalaan ang conference call"</string>
     <string name="emergency_call_dialog_number_for_display" msgid="8373041754188879871">"Pang-emergency na numero"</string>
@@ -168,4 +167,21 @@
       <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> oras</item>
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> na oras</item>
     </plurals>
+    <string name="profile_photo_description" msgid="5609894336203315400">"Larawan sa profile"</string>
+    <string name="camera_off_description" msgid="5689494614359429889">"Naka-off ang camera"</string>
+    <string name="child_number" msgid="7437330400723805538">"sa pamamagitan ng <xliff:g id="CHILD_NUMBER">%s</xliff:g>"</string>
+    <string name="note_sent" msgid="3548700178238244595">"Naipadala ang tala"</string>
+    <string name="person_contact_context_title" msgid="723266617256740572">"Mga kamakailang mensahe"</string>
+    <string name="business_contact_context_title" msgid="5334864183374669765">"Impormasyon ng negosyo"</string>
+    <string name="distance_imperial_away" msgid="437508440176409037">"<xliff:g id="DISTANCE">%.1f</xliff:g> (na) milya ang layo"</string>
+    <string name="distance_metric_away" msgid="166931929505893599">"<xliff:g id="DISTANCE">%.1f</xliff:g> (na) kilometro ang layo"</string>
+    <string name="display_address" msgid="7307400970699471708">"<xliff:g id="STREET_ADDRESS">%1$s</xliff:g>, <xliff:g id="LOCALITY">%2$s</xliff:g>"</string>
+    <string name="open_time_span" msgid="6709726401179550381">"<xliff:g id="OPEN_TIME">%1$s</xliff:g> - <xliff:g id="CLOSE_TIME">%2$s</xliff:g>"</string>
+    <string name="opening_hours" msgid="8524931350345922176">"<xliff:g id="EARLIER_TIMES">%1$s</xliff:g>, <xliff:g id="LATER_TIME">%2$s</xliff:g>"</string>
+    <string name="opens_tomorrow_at" msgid="9168271983241323946">"Magbubukas bukas nang <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="opens_today_at" msgid="9011139983701379907">"Magbubukas ngayon nang <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="closes_today_at" msgid="2623384032475495193">"Magsasara nang <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="closed_today_at" msgid="324294933330883529">"Sarado ngayon nang <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="open_now" msgid="6439301193613349163">"Bukas ngayon"</string>
+    <string name="closed_now" msgid="9175774453982778909">"Sarado ngayon"</string>
 </resources>
diff --git a/InCallUI/res/values-tr/strings.xml b/InCallUI/res/values-tr/strings.xml
index f0cd34f..8e5e28b 100644
--- a/InCallUI/res/values-tr/strings.xml
+++ b/InCallUI/res/values-tr/strings.xml
@@ -49,7 +49,7 @@
     <string name="card_title_video_call" msgid="5898636679563320218">"Video görüşmesi"</string>
     <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Video isteniyor"</string>
     <string name="card_title_video_call_error" msgid="9000555878389539225">"Video görüşmesi bağlantısı yapılamıyor"</string>
-    <string name="card_title_video_call_paused" msgid="3753261320787432731">"Video görüşmesi (Duraklatıldı)"</string>
+    <string name="card_title_video_call_rejected" msgid="462358296694719787">"Video isteği reddedildi"</string>
     <string name="card_title_callback_number" msgid="7307938207564217293">"Geri arama numaranız\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Acil durum geri arama numaranız\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="notification_dialing" msgid="2107666444937350731">"Çevriliyor"</string>
@@ -123,7 +123,7 @@
     <string name="voicemail_settings" msgid="72448049107749316">"Kurulum"</string>
     <string name="voicemail_number_not_set" msgid="6724904736891087856">"&lt;Ayarlanmadı&gt;"</string>
     <string name="other_settings" msgid="3672912580359716394">"Diğer çağrı ayarları"</string>
-    <string name="calling_via_template" msgid="4839419581866928142">"<xliff:g id="PROVIDER_NAME">%s</xliff:g> üzerinden çağrı yapılıyor"</string>
+    <string name="calling_via_template" msgid="4839419581866928142">"<xliff:g id="PROVIDER_NAME">%s</xliff:g> üzerinden"</string>
     <string name="incoming_via_template" msgid="1696993226115570960">"<xliff:g id="PROVIDER_NAME">%s</xliff:g> adlı sağlayıcı üzerinden gelen çağrı"</string>
     <string name="contactPhoto" msgid="4713193418046639466">"kişi fotoğrafı"</string>
     <string name="goPrivate" msgid="865837794424530980">"özele git"</string>
@@ -152,7 +152,6 @@
     <string name="default_notification_description" msgid="78174796906240970">"Varsayılan ses (<xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g>)"</string>
     <string name="ringtone_title" msgid="6374978286202084684">"Telefon zil sesi"</string>
     <string name="vibrate_on_ring_title" msgid="9197564612065258960">"Çalarken titret"</string>
-    <string name="dial_pad_autocomplete" msgid="7683489952557536398">"Tuş takımı otomatik tamamlama"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Zil Sesi ve Titreşim"</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"Konferans görüşmesini yönet"</string>
     <string name="emergency_call_dialog_number_for_display" msgid="8373041754188879871">"Acil durum numarası"</string>
@@ -168,4 +167,21 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> saat</item>
       <item quantity="one">1 saat</item>
     </plurals>
+    <string name="profile_photo_description" msgid="5609894336203315400">"Profil fotoğrafı"</string>
+    <string name="camera_off_description" msgid="5689494614359429889">"Kamera kapalı"</string>
+    <string name="child_number" msgid="7437330400723805538">"<xliff:g id="CHILD_NUMBER">%s</xliff:g> ile"</string>
+    <string name="note_sent" msgid="3548700178238244595">"Not gönderildi"</string>
+    <string name="person_contact_context_title" msgid="723266617256740572">"Son iletiler"</string>
+    <string name="business_contact_context_title" msgid="5334864183374669765">"İş bilgileri"</string>
+    <string name="distance_imperial_away" msgid="437508440176409037">"<xliff:g id="DISTANCE">%.1f</xliff:g> mil uzakta"</string>
+    <string name="distance_metric_away" msgid="166931929505893599">"<xliff:g id="DISTANCE">%.1f</xliff:g> km uzakta"</string>
+    <string name="display_address" msgid="7307400970699471708">"<xliff:g id="STREET_ADDRESS">%1$s</xliff:g>, <xliff:g id="LOCALITY">%2$s</xliff:g>"</string>
+    <string name="open_time_span" msgid="6709726401179550381">"<xliff:g id="OPEN_TIME">%1$s</xliff:g> - <xliff:g id="CLOSE_TIME">%2$s</xliff:g>"</string>
+    <string name="opening_hours" msgid="8524931350345922176">"<xliff:g id="EARLIER_TIMES">%1$s</xliff:g>, <xliff:g id="LATER_TIME">%2$s</xliff:g>"</string>
+    <string name="opens_tomorrow_at" msgid="9168271983241323946">"Yarın açılış saati: <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="opens_today_at" msgid="9011139983701379907">"Bugün açılış saati: <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="closes_today_at" msgid="2623384032475495193">"Kapanış saati: <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="closed_today_at" msgid="324294933330883529">"Bugün kapanış saati: <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="open_now" msgid="6439301193613349163">"Şu an açık"</string>
+    <string name="closed_now" msgid="9175774453982778909">"Şu an kapalı"</string>
 </resources>
diff --git a/InCallUI/res/values-uk/strings.xml b/InCallUI/res/values-uk/strings.xml
index 5671b73..749d9c4 100644
--- a/InCallUI/res/values-uk/strings.xml
+++ b/InCallUI/res/values-uk/strings.xml
@@ -35,8 +35,8 @@
     <string name="pause_prompt_no" msgid="6686238803236884877">"Ні"</string>
     <string name="wild_prompt_str" msgid="5543521676355533577">"Замінити довільний символ на"</string>
     <string name="caller_manage_header" msgid="3231519674734638786">"Конференц-виклик <xliff:g id="CONF_CALL_TIME">%s</xliff:g>"</string>
-    <string name="voicemail_settings_number_label" msgid="8524164258691887790">"Номер голос. пошти"</string>
-    <string name="card_title_dialing" msgid="5769417478498348054">"Набір"</string>
+    <string name="voicemail_settings_number_label" msgid="8524164258691887790">"Номер голосової пошти"</string>
+    <string name="card_title_dialing" msgid="5769417478498348054">"Набір номера"</string>
     <string name="card_title_redialing" msgid="8253487008234167266">"Повторний набір"</string>
     <string name="card_title_conf_call" msgid="1162980346189744501">"Конференц-виклик"</string>
     <string name="card_title_incoming_call" msgid="7364539451234646909">"Вхідний дзвінок"</string>
@@ -49,11 +49,11 @@
     <string name="card_title_video_call" msgid="5898636679563320218">"Відеодзвінок"</string>
     <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Надсилання запиту на відеодзвінок"</string>
     <string name="card_title_video_call_error" msgid="9000555878389539225">"Неможливо здійснити відеодзвінок"</string>
-    <string name="card_title_video_call_paused" msgid="3753261320787432731">"Відеодзвінок (призупинено)"</string>
+    <string name="card_title_video_call_rejected" msgid="462358296694719787">"Запрошення на відеодзвінок відхилено"</string>
     <string name="card_title_callback_number" msgid="7307938207564217293">"Номер для зв’язку:\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Екстрений номер:\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
-    <string name="notification_dialing" msgid="2107666444937350731">"Набір"</string>
-    <string name="notification_missedCallTitle" msgid="7554385905572364535">"Пропущ. виклик"</string>
+    <string name="notification_dialing" msgid="2107666444937350731">"Набір номера"</string>
+    <string name="notification_missedCallTitle" msgid="7554385905572364535">"Пропущений виклик"</string>
     <string name="notification_missedCallsTitle" msgid="1361677948941502522">"Пропущ. дзвінки"</string>
     <string name="notification_missedCallsMsg" msgid="4575787816055205600">"Пропущ. дзвінк: <xliff:g id="NUM_MISSED_CALLS">%s</xliff:g>"</string>
     <string name="notification_missedCallTicker" msgid="504686252427747209">"Пропущ. виклик від <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
@@ -64,10 +64,10 @@
     <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"Вхідний дзвінок через Wi-Fi"</string>
     <string name="notification_incoming_video_call" msgid="7356836933934464805">"Вхідний відеодзвінок"</string>
     <string name="notification_requesting_video_call" msgid="1405576812892369451">"Запит на вхідний відеодзвінок"</string>
-    <string name="notification_voicemail_title" msgid="8933468752045550523">"Нова голос. пошта"</string>
-    <string name="notification_voicemail_title_count" msgid="4366360747660929916">"Нова голос. пошта (<xliff:g id="COUNT">%d</xliff:g>)"</string>
+    <string name="notification_voicemail_title" msgid="8933468752045550523">"Нове голосове повідомлення"</string>
+    <string name="notification_voicemail_title_count" msgid="4366360747660929916">"Нове голосове повідомлення (<xliff:g id="COUNT">%d</xliff:g>)"</string>
     <string name="notification_voicemail_text_format" msgid="4447323569453981685">"Набрати <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"Невідомий номер голос. пошти"</string>
+    <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"Невідомий номер голосової пошти"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"Нема служби"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"Вибрана мережа (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) недоступна"</string>
     <string name="notification_action_answer" msgid="6700362365135365143">"Відповісти"</string>
@@ -103,7 +103,7 @@
     <string name="onscreenEndCallText" msgid="9039601192595655846">"Завершити виклик"</string>
     <string name="onscreenShowDialpadText" msgid="8561805492659639893">"Цифр. клав."</string>
     <string name="onscreenMuteText" msgid="5011369181754261374">"Вимк. зв."</string>
-    <string name="onscreenAddCallText" msgid="5140385634712287403">"Дод. виклик"</string>
+    <string name="onscreenAddCallText" msgid="5140385634712287403">"Додати виклик"</string>
     <string name="onscreenMergeCallsText" msgid="6640195098064538950">"Об’єдн. дзвінки"</string>
     <string name="onscreenSwapCallsText" msgid="1602990689244030047">"Поміняти"</string>
     <string name="onscreenManageCallsText" msgid="5473231160123254154">"Керув. викликами"</string>
@@ -123,7 +123,7 @@
     <string name="voicemail_settings" msgid="72448049107749316">"Налаштування"</string>
     <string name="voicemail_number_not_set" msgid="6724904736891087856">"&lt;Не встановлено&gt;"</string>
     <string name="other_settings" msgid="3672912580359716394">"Інші налаштування виклику"</string>
-    <string name="calling_via_template" msgid="4839419581866928142">"Виклик здійснюється за допомогою <xliff:g id="PROVIDER_NAME">%s</xliff:g>"</string>
+    <string name="calling_via_template" msgid="4839419581866928142">"Виклик через <xliff:g id="PROVIDER_NAME">%s</xliff:g>"</string>
     <string name="incoming_via_template" msgid="1696993226115570960">"Вхідні дзвінки через оператора <xliff:g id="PROVIDER_NAME">%s</xliff:g>"</string>
     <string name="contactPhoto" msgid="4713193418046639466">"фото контакта"</string>
     <string name="goPrivate" msgid="865837794424530980">"конфіденц."</string>
@@ -152,7 +152,6 @@
     <string name="default_notification_description" msgid="78174796906240970">"Звук за умовчанням (<xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g>)"</string>
     <string name="ringtone_title" msgid="6374978286202084684">"Сигнал дзвінка телефону"</string>
     <string name="vibrate_on_ring_title" msgid="9197564612065258960">"Вібрувати під час дзвінка"</string>
-    <string name="dial_pad_autocomplete" msgid="7683489952557536398">"Автозаповн. цифрової клавіат."</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Сигнал дзвінка та вібросигнал"</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"Керувати конференц-викликом"</string>
     <string name="emergency_call_dialog_number_for_display" msgid="8373041754188879871">"Екстрений номер"</string>
@@ -174,4 +173,21 @@
       <item quantity="many"><xliff:g id="COUNT">%d</xliff:g> годин</item>
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> години</item>
     </plurals>
+    <string name="profile_photo_description" msgid="5609894336203315400">"Фотографія профілю"</string>
+    <string name="camera_off_description" msgid="5689494614359429889">"Камеру вимкнено"</string>
+    <string name="child_number" msgid="7437330400723805538">"на номер <xliff:g id="CHILD_NUMBER">%s</xliff:g>"</string>
+    <string name="note_sent" msgid="3548700178238244595">"Нотатку надіслано"</string>
+    <string name="person_contact_context_title" msgid="723266617256740572">"Останні повідомлення"</string>
+    <string name="business_contact_context_title" msgid="5334864183374669765">"Інформація про компанію"</string>
+    <string name="distance_imperial_away" msgid="437508440176409037">"За <xliff:g id="DISTANCE">%.1f</xliff:g> мил."</string>
+    <string name="distance_metric_away" msgid="166931929505893599">"За <xliff:g id="DISTANCE">%.1f</xliff:g> км"</string>
+    <string name="display_address" msgid="7307400970699471708">"<xliff:g id="STREET_ADDRESS">%1$s</xliff:g>, <xliff:g id="LOCALITY">%2$s</xliff:g>"</string>
+    <string name="open_time_span" msgid="6709726401179550381">"<xliff:g id="OPEN_TIME">%1$s</xliff:g>–<xliff:g id="CLOSE_TIME">%2$s</xliff:g>"</string>
+    <string name="opening_hours" msgid="8524931350345922176">"<xliff:g id="EARLIER_TIMES">%1$s</xliff:g>, <xliff:g id="LATER_TIME">%2$s</xliff:g>"</string>
+    <string name="opens_tomorrow_at" msgid="9168271983241323946">"Відчиняється завтра о <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="opens_today_at" msgid="9011139983701379907">"Відчиняється сьогодні о <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="closes_today_at" msgid="2623384032475495193">"Зачиняється о <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="closed_today_at" msgid="324294933330883529">"Зачинено сьогодні о <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="open_now" msgid="6439301193613349163">"Відчинено"</string>
+    <string name="closed_now" msgid="9175774453982778909">"Зачинено"</string>
 </resources>
diff --git a/InCallUI/res/values-ur-rPK/strings.xml b/InCallUI/res/values-ur-rPK/strings.xml
index 8a3b11d..a07c0f5 100644
--- a/InCallUI/res/values-ur-rPK/strings.xml
+++ b/InCallUI/res/values-ur-rPK/strings.xml
@@ -49,7 +49,7 @@
     <string name="card_title_video_call" msgid="5898636679563320218">"ویڈیو کال"</string>
     <string name="card_title_video_call_requesting" msgid="4587504939739340937">"ویڈیو کی درخواست کی جا رہی ہے"</string>
     <string name="card_title_video_call_error" msgid="9000555878389539225">"ویڈیو کال منسلک نہیں کر سکتا"</string>
-    <string name="card_title_video_call_paused" msgid="3753261320787432731">"ویڈیو کال (موقوف)"</string>
+    <string name="card_title_video_call_rejected" msgid="462358296694719787">"ویڈیو کی درخواست مسترد کر دی گئی"</string>
     <string name="card_title_callback_number" msgid="7307938207564217293">"‏آپ کا کال بیک نمبر‎\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>‎"</string>
     <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"‏آپ کا ہنگامی کال بیک نمبر‎\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>‎"</string>
     <string name="notification_dialing" msgid="2107666444937350731">"ڈائل ہو رہا ہے"</string>
@@ -121,9 +121,9 @@
     <string name="unknown_call_session_event" msgid="2431061946920253582">"نامعلوم کال سیشن ایونٹ"</string>
     <string name="voicemail_provider" msgid="5135942703327136909">"سروس"</string>
     <string name="voicemail_settings" msgid="72448049107749316">"سیٹ اپ"</string>
-    <string name="voicemail_number_not_set" msgid="6724904736891087856">"‏&lt;متعین نہیں ہے&gt;"</string>
+    <string name="voicemail_number_not_set" msgid="6724904736891087856">"‏&lt;سیٹ نہیں ہے&gt;"</string>
     <string name="other_settings" msgid="3672912580359716394">"دیگر کال کی ترتیبات"</string>
-    <string name="calling_via_template" msgid="4839419581866928142">"<xliff:g id="PROVIDER_NAME">%s</xliff:g> کی معرفت کال ہو رہی ہے"</string>
+    <string name="calling_via_template" msgid="4839419581866928142">"کالنگ بذریعہ <xliff:g id="PROVIDER_NAME">%s</xliff:g>"</string>
     <string name="incoming_via_template" msgid="1696993226115570960">"<xliff:g id="PROVIDER_NAME">%s</xliff:g> کے ذریعے موصول ہونے والی"</string>
     <string name="contactPhoto" msgid="4713193418046639466">"رابطہ کی تصویر"</string>
     <string name="goPrivate" msgid="865837794424530980">"نجی ہوجائیں"</string>
@@ -152,7 +152,6 @@
     <string name="default_notification_description" msgid="78174796906240970">"ڈیفالٹ آواز (<xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g>)"</string>
     <string name="ringtone_title" msgid="6374978286202084684">"فون رنگ ٹون"</string>
     <string name="vibrate_on_ring_title" msgid="9197564612065258960">"بجنے کے وقت مرتعش کریں"</string>
-    <string name="dial_pad_autocomplete" msgid="7683489952557536398">"ڈائل پیڈ کی خودکار تکمیل"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"رنگ ٹون اور وائبریٹ"</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"کانفرنس کال کا نظم کریں"</string>
     <string name="emergency_call_dialog_number_for_display" msgid="8373041754188879871">"ہنگامی نمبر"</string>
@@ -168,4 +167,21 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> گھنٹے</item>
       <item quantity="one">1 گھنٹہ</item>
     </plurals>
+    <string name="profile_photo_description" msgid="5609894336203315400">"پروفائل کی تصویر"</string>
+    <string name="camera_off_description" msgid="5689494614359429889">"کیمرہ آف ہے"</string>
+    <string name="child_number" msgid="7437330400723805538">"بذریعہ <xliff:g id="CHILD_NUMBER">%s</xliff:g>"</string>
+    <string name="note_sent" msgid="3548700178238244595">"نوٹ بھیج دیا گیا"</string>
+    <string name="person_contact_context_title" msgid="723266617256740572">"حالیہ پیغامات"</string>
+    <string name="business_contact_context_title" msgid="5334864183374669765">"کاروباری معلومات"</string>
+    <string name="distance_imperial_away" msgid="437508440176409037">"<xliff:g id="DISTANCE">%.1f</xliff:g> میل دور"</string>
+    <string name="distance_metric_away" msgid="166931929505893599">"<xliff:g id="DISTANCE">%.1f</xliff:g> کلومیٹر دور"</string>
+    <string name="display_address" msgid="7307400970699471708">"<xliff:g id="STREET_ADDRESS">%1$s</xliff:g>، <xliff:g id="LOCALITY">%2$s</xliff:g>"</string>
+    <string name="open_time_span" msgid="6709726401179550381">"<xliff:g id="OPEN_TIME">%1$s</xliff:g> - <xliff:g id="CLOSE_TIME">%2$s</xliff:g>"</string>
+    <string name="opening_hours" msgid="8524931350345922176">"<xliff:g id="EARLIER_TIMES">%1$s</xliff:g>، <xliff:g id="LATER_TIME">%2$s</xliff:g>"</string>
+    <string name="opens_tomorrow_at" msgid="9168271983241323946">"کل <xliff:g id="OPEN_TIME">%s</xliff:g> بجے کھلے گا"</string>
+    <string name="opens_today_at" msgid="9011139983701379907">"آج <xliff:g id="OPEN_TIME">%s</xliff:g> بجے کھلے گا"</string>
+    <string name="closes_today_at" msgid="2623384032475495193">"<xliff:g id="CLOSE_TIME">%s</xliff:g> بجے بند ہوگا"</string>
+    <string name="closed_today_at" msgid="324294933330883529">"آج <xliff:g id="CLOSE_TIME">%s</xliff:g> بجے بند ہوا"</string>
+    <string name="open_now" msgid="6439301193613349163">"ابھی کھلا ہے"</string>
+    <string name="closed_now" msgid="9175774453982778909">"اب بند ہے"</string>
 </resources>
diff --git a/InCallUI/res/values-uz-rUZ/strings.xml b/InCallUI/res/values-uz-rUZ/strings.xml
new file mode 100644
index 0000000..53aa5f4
--- /dev/null
+++ b/InCallUI/res/values-uz-rUZ/strings.xml
@@ -0,0 +1,187 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2013 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="phoneAppLabel" product="default" msgid="906161039445636857">"Telefon"</string>
+    <string name="onHold" msgid="9035493194749959955">"Kutmoqda"</string>
+    <string name="unknown" msgid="6878797917991465859">"Noma’lum"</string>
+    <string name="private_num" msgid="6713286113000232309">"Shaxsiy raqam"</string>
+    <string name="payphone" msgid="4793877574636445118">"Taksofon"</string>
+    <string name="confCall" msgid="1904840547188336828">"Konferensiya qo‘ng‘irog‘i"</string>
+    <string name="call_lost" msgid="6183862117003999578">"Qo‘ng‘iroq tugatildi"</string>
+    <string name="audio_mode_speaker" msgid="27649582100085266">"Karnay"</string>
+    <string name="audio_mode_earpiece" msgid="4156527186373869107">"Telefon quloq eshitgichlari"</string>
+    <string name="audio_mode_wired_headset" msgid="1465350758489175975">"Simli garnitura"</string>
+    <string name="audio_mode_bluetooth" msgid="3047641300848211128">"Bluetooth"</string>
+    <string name="wait_prompt_str" msgid="7601815427707856238">"Ushbu tovushlar jo‘natilsinmi?\n"</string>
+    <string name="pause_prompt_str" msgid="1789964702154314806">"Tovushlar jo‘natilmoqda\n"</string>
+    <string name="send_button" msgid="4106860097497818751">"Jo‘natish"</string>
+    <string name="pause_prompt_yes" msgid="3564467212025151797">"Ha"</string>
+    <string name="pause_prompt_no" msgid="6686238803236884877">"Yo‘q"</string>
+    <string name="wild_prompt_str" msgid="5543521676355533577">"Belgilarni quyidagilar bilan almashtiring:"</string>
+    <string name="caller_manage_header" msgid="3231519674734638786">"Konferensiya qo‘ng‘irog‘i <xliff:g id="CONF_CALL_TIME">%s</xliff:g>"</string>
+    <string name="voicemail_settings_number_label" msgid="8524164258691887790">"Ovozli pochta raqami"</string>
+    <string name="card_title_dialing" msgid="5769417478498348054">"Raqam terilmoqda"</string>
+    <string name="card_title_redialing" msgid="8253487008234167266">"Qayta terilmoqda"</string>
+    <string name="card_title_conf_call" msgid="1162980346189744501">"Konferensiya qo‘ng‘irog‘i"</string>
+    <string name="card_title_incoming_call" msgid="7364539451234646909">"Kiruvchi qo‘ng‘iroq"</string>
+    <string name="card_title_call_ended" msgid="5544730338889702298">"Qo‘ng‘iroq tugadi"</string>
+    <string name="card_title_on_hold" msgid="821463117892339942">"Kutish holatida"</string>
+    <string name="card_title_hanging_up" msgid="3999101620995182450">"Go‘shak qo‘yilmoqda"</string>
+    <string name="card_title_in_call" msgid="6346543933068225205">"Qo‘ng‘iroqda"</string>
+    <string name="card_title_my_phone_number" msgid="112428362494434191">"Mening raqamim - <xliff:g id="MY_PHONE_NUMBER">%s</xliff:g>"</string>
+    <string name="card_title_video_call_connecting" msgid="297586766381973954">"Videoga ulanmoqda"</string>
+    <string name="card_title_video_call" msgid="5898636679563320218">"Video qo‘ng‘iroq"</string>
+    <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Video so\'ralmoqda"</string>
+    <string name="card_title_video_call_error" msgid="9000555878389539225">"Video qo‘ng‘iroqqa ulanib bo‘lmadi"</string>
+    <string name="card_title_video_call_rejected" msgid="462358296694719787">"Video qo‘ng‘iroq so‘rovi rad etildi"</string>
+    <string name="card_title_callback_number" msgid="7307938207564217293">"Teskari qo‘ng‘iroq raqamingiz\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
+    <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Favqulodda holatlar uchun teskari qo‘ng‘iroq raqamingiz\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
+    <string name="notification_dialing" msgid="2107666444937350731">"Raqam terilmoqda"</string>
+    <string name="notification_missedCallTitle" msgid="7554385905572364535">"Javobsiz qo‘ng‘iroq"</string>
+    <string name="notification_missedCallsTitle" msgid="1361677948941502522">"Javobsiz qo‘ng‘iroqlar"</string>
+    <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> ta javobsiz qo‘ng‘iroq"</string>
+    <string name="notification_missedCallTicker" msgid="504686252427747209">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g> qo‘ng‘irog‘i javobsiz qoldirildi"</string>
+    <string name="notification_ongoing_call" msgid="7068688957273482989">"Joriy qo‘ng‘iroq"</string>
+    <string name="notification_ongoing_call_wifi" msgid="8521553590606569379">"Chiquvchi Wi-Fi qo‘ng‘irog‘i"</string>
+    <string name="notification_on_hold" msgid="3480694969511790465">"Kutmoqda"</string>
+    <string name="notification_incoming_call" msgid="2820429205043529642">"Kiruvchi qo‘ng‘iroq"</string>
+    <string name="notification_incoming_call_wifi" msgid="9210706506594546627">"Kiruvchi Wi-Fi qo‘ng‘irog‘i"</string>
+    <string name="notification_incoming_video_call" msgid="7356836933934464805">"Kiruvchi videoqo‘ng‘iroq"</string>
+    <string name="notification_requesting_video_call" msgid="1405576812892369451">"Kiruvchi video so\'rovi"</string>
+    <string name="notification_voicemail_title" msgid="8933468752045550523">"Yangi ovozli xabar"</string>
+    <string name="notification_voicemail_title_count" msgid="4366360747660929916">"Yangi ovozli xabar (<xliff:g id="COUNT">%d</xliff:g>)"</string>
+    <string name="notification_voicemail_text_format" msgid="4447323569453981685">"<xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>ni terish"</string>
+    <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"Ovozli pochta raqami noma’lum"</string>
+    <string name="notification_network_selection_title" msgid="4224455487793492772">"Xizmat mavjud emas"</string>
+    <string name="notification_network_selection_text" msgid="2607085729661923269">"Tanlangan tarmoq (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) mavjud emas"</string>
+    <string name="notification_action_answer" msgid="6700362365135365143">"Javob"</string>
+    <string name="notification_action_end_call" msgid="6069460915123531620">"Go‘shakni qo‘yish"</string>
+    <string name="notification_action_answer_video" msgid="7809271910870211729">"Video"</string>
+    <string name="notification_action_answer_voice" msgid="1770796916369437773">"Ovoz"</string>
+    <string name="notification_action_accept" msgid="2898609801209468429">"Roziman"</string>
+    <string name="notification_action_dismiss" msgid="2679969397930852858">"Yopish"</string>
+    <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Telefon"</string>
+    <string name="notification_missedCall_message" msgid="3049928912736917988">"SMS"</string>
+    <string name="incall_error_power_off" msgid="6550191216405193368">"Qo‘ng‘iroq qilish uchun, avval \"Parvoz rejimi\" o‘chirilishi kerak."</string>
+    <string name="incall_error_emergency_only" msgid="4678640422710818317">"Tarmoqda ro‘yxatdan o‘tmagan."</string>
+    <string name="incall_error_out_of_service" msgid="4100065333878929223">"Mobil tarmoq mavjud emas."</string>
+    <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Qo‘ng‘iroq qilish uchun raqamni to‘g‘ri kiriting."</string>
+    <string name="incall_error_call_failed" msgid="6302746943230078197">"Qo‘ng‘iroq qilib bo‘lmadi."</string>
+    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"MMI tartibi ishga tushmoqda..."</string>
+    <string name="incall_error_supp_service_unknown" msgid="323435289607131929">"Xizmat qo‘llab-quvvatlanmaydi."</string>
+    <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"Qo‘ng‘iroqlarni almashtirib bo‘lmadi."</string>
+    <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"Qo‘ng‘iroqni ajratib bo‘lmadi."</string>
+    <string name="incall_error_supp_service_transfer" msgid="7235952238189391438">"O‘tkazib bo‘lmadi."</string>
+    <string name="incall_error_supp_service_conference" msgid="7010354362202271726">"Konferens-aloqa o‘rnatib bo‘lmadi."</string>
+    <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Qo‘ng‘iroqni rad qilib bo‘lmadi."</string>
+    <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Qo‘ng‘iroq(lar)ni chiqarib bo‘lmadi."</string>
+    <string name="incall_call_type_label_sip" msgid="4931428719494190371">"SIP qo‘ng‘iroq"</string>
+    <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Favqulodda qo‘ng‘iroq"</string>
+    <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Radio yoqilmoqda…"</string>
+    <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Aloqa yo‘q. Qayta urinilmoqda…"</string>
+    <string name="dial_emergency_error" msgid="1509085166367420355">"Qo‘ng‘iroq qilib bo‘lmadi. <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> favqulodda raqam emas."</string>
+    <string name="dial_emergency_empty_error" msgid="9130194953830414638">"Qo‘ng‘iroq qilib bo‘lmadi. Favqulodda raqamga tering."</string>
+    <string name="dialerKeyboardHintText" msgid="9192914825413747792">"Terish uchun tugmatagdan foydalaning"</string>
+    <string name="onscreenHoldText_unselected" msgid="7092499303393171276">"Qo‘ng‘iroqni ushlab turish"</string>
+    <string name="onscreenHoldText_selected" msgid="7127901498507384249">"Qo‘ng‘iroqni davom ettirish"</string>
+    <string name="onscreenEndCallText" msgid="9039601192595655846">"Qo‘ng‘iroqni tugatish"</string>
+    <string name="onscreenShowDialpadText" msgid="8561805492659639893">"Terish paneli"</string>
+    <string name="onscreenMuteText" msgid="5011369181754261374">"Ovozni o‘chirish"</string>
+    <string name="onscreenAddCallText" msgid="5140385634712287403">"Qo‘ng‘iroq qo‘shish"</string>
+    <string name="onscreenMergeCallsText" msgid="6640195098064538950">"Qo‘ng‘iroqlarni birlashtirish"</string>
+    <string name="onscreenSwapCallsText" msgid="1602990689244030047">"Almashish"</string>
+    <string name="onscreenManageCallsText" msgid="5473231160123254154">"Qo‘ng‘iroqlarni boshqarish"</string>
+    <string name="onscreenManageConferenceText" msgid="6801708317570467407">"Konf. aloqani boshqarish"</string>
+    <string name="onscreenAudioText" msgid="1710087112800041743">"Audio"</string>
+    <string name="onscreenVideoCallText" msgid="4800924186056115442">"Video qo‘ng‘iroq"</string>
+    <string name="onscreenChangeToVoiceText" msgid="5311407863653867937">"Ovozli qo‘ng‘iroqqa o‘zgartirish"</string>
+    <string name="onscreenSwitchCameraText" msgid="5324543493442787798">"Kamerani almashtirish"</string>
+    <string name="onscreenPauseVideoText" msgid="5663965924921429203">"Videoni vaqtincha to‘xtatish"</string>
+    <string name="onscreenOverflowText" msgid="2702376562345723132">"Ko‘proq"</string>
+    <string name="player_started" msgid="6046262510243983589">"Pleyer ishga tushirildi"</string>
+    <string name="player_stopped" msgid="8856926759436364963">"Pleyer to‘xtatildi"</string>
+    <string name="camera_not_ready" msgid="4955261496193316240">"Kamera tayyor emas"</string>
+    <string name="camera_ready" msgid="1903335385405807324">"Kamera tayyor"</string>
+    <string name="unknown_call_session_event" msgid="2431061946920253582">"Noma’lum qo‘ng‘iroq sessiyasi hodisasi"</string>
+    <string name="voicemail_provider" msgid="5135942703327136909">"Xizmat"</string>
+    <string name="voicemail_settings" msgid="72448049107749316">"Sozlash"</string>
+    <string name="voicemail_number_not_set" msgid="6724904736891087856">"&lt;Ko‘rsatilmagan&gt;"</string>
+    <string name="other_settings" msgid="3672912580359716394">"Boshqa qo‘ng‘iroq sozlamalari"</string>
+    <string name="calling_via_template" msgid="4839419581866928142">"<xliff:g id="PROVIDER_NAME">%s</xliff:g> orqali qo‘ng‘iroq"</string>
+    <string name="incoming_via_template" msgid="1696993226115570960">"Kiruvchi qo‘ng‘iroqlar <xliff:g id="PROVIDER_NAME">%s</xliff:g> orqali"</string>
+    <string name="contactPhoto" msgid="4713193418046639466">"kontakt surati"</string>
+    <string name="goPrivate" msgid="865837794424530980">"alohidaga o‘tish"</string>
+    <string name="selectContact" msgid="781975788478987237">"kontaktni tanlash"</string>
+    <string name="respond_via_sms_custom_message" msgid="6158880869935281078">"O‘z javobingizni yozing..."</string>
+    <string name="custom_message_cancel" msgid="7516406059429609296">"Bekor qilish"</string>
+    <string name="custom_message_send" msgid="5795754217085747742">"Jo‘natish"</string>
+    <string name="description_target_answer" msgid="7205604197797472471">"Javob"</string>
+    <string name="description_target_send_sms" msgid="2098326025587950144">"SMS yuborish"</string>
+    <string name="description_target_decline" msgid="4789834364389731957">"Rad qilish"</string>
+    <string name="description_target_answer_video_call" msgid="3495965588512395026">"Video qo\'ng\'iroq sifatida javob berish"</string>
+    <string name="description_target_answer_audio_call" msgid="8396296303320994450">"Audio qo\'ng\'iroq sifatida javob berish"</string>
+    <string name="description_target_accept_upgrade_to_video_request" msgid="2894072808324604062">"Video qo‘ng‘iroq so‘rovini qabul qilish"</string>
+    <string name="description_target_decline_upgrade_to_video_request" msgid="4093888612888538776">"Video qo‘ng‘iroq so‘rovini rad qilish"</string>
+    <string name="description_target_accept_upgrade_to_video_transmit_request" msgid="5311037889642077468">"Video jo‘natmani qabul qilish"</string>
+    <string name="description_target_decline_upgrade_to_video_transmit_request" msgid="3636108065510415975">"Video jo‘natmani rad qilish"</string>
+    <string name="description_target_accept_upgrade_to_video_receive_request" msgid="8668058323593087912">"Kiruvchi video qo‘ng‘iroqni qabul qilish"</string>
+    <string name="description_target_decline_upgrade_to_video_receive_request" msgid="2355776509656298367">"Kiruvchi video qo‘ng‘iroqni rad etish"</string>
+    <string name="description_direction_up" msgid="4441409581444516690">"<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> uchun tepaga suring."</string>
+    <string name="description_direction_left" msgid="7129873384376533287">"<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> uchun chapga suring."</string>
+    <string name="description_direction_right" msgid="2122584234531957308">"<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> uchun o‘ngga suring."</string>
+    <string name="description_direction_down" msgid="4317245625565166742">"<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> uchun pastga suring."</string>
+    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Tebranish"</string>
+    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Tebratish"</string>
+    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Ovoz"</string>
+    <string name="default_notification_description" msgid="78174796906240970">"Standart ovoz (<xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g>)"</string>
+    <string name="ringtone_title" msgid="6374978286202084684">"Telefon ringtoni"</string>
+    <string name="vibrate_on_ring_title" msgid="9197564612065258960">"Jiringlash vaqtida tebranish"</string>
+    <string name="preference_category_ringtone" msgid="5197960752529332721">"Qo‘ng‘iroq ohangi &amp; tebranish"</string>
+    <string name="manageConferenceLabel" msgid="4691922394301969053">"Konferensiya qo‘ng‘irog‘ini boshqarish"</string>
+    <string name="emergency_call_dialog_number_for_display" msgid="8373041754188879871">"Favqulodda qo‘ng‘iroq raqamlari"</string>
+    <plurals name="duration_seconds" formatted="false" msgid="59971978269163609">
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> soniya</item>
+      <item quantity="one">1 soniya</item>
+    </plurals>
+    <plurals name="duration_minutes" formatted="false" msgid="1103289948818175408">
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> daqiqa</item>
+      <item quantity="one">1 daqiqa</item>
+    </plurals>
+    <plurals name="duration_hours" formatted="false" msgid="7560637459014865969">
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> soat</item>
+      <item quantity="one">1 soat</item>
+    </plurals>
+    <string name="profile_photo_description" msgid="5609894336203315400">"Profil rasmi"</string>
+    <string name="camera_off_description" msgid="5689494614359429889">"Kamera o‘chiq"</string>
+    <string name="child_number" msgid="7437330400723805538">"<xliff:g id="CHILD_NUMBER">%s</xliff:g> orqali"</string>
+    <string name="note_sent" msgid="3548700178238244595">"Qayd yuborildi"</string>
+    <string name="person_contact_context_title" msgid="723266617256740572">"So‘nggi xabarlar"</string>
+    <string name="business_contact_context_title" msgid="5334864183374669765">"Korporativ ma’lumotlar"</string>
+    <string name="distance_imperial_away" msgid="437508440176409037">"<xliff:g id="DISTANCE">%.1f</xliff:g> mil uzoqda"</string>
+    <string name="distance_metric_away" msgid="166931929505893599">"<xliff:g id="DISTANCE">%.1f</xliff:g> km uzoqda"</string>
+    <string name="display_address" msgid="7307400970699471708">"<xliff:g id="STREET_ADDRESS">%1$s</xliff:g>, <xliff:g id="LOCALITY">%2$s</xliff:g>"</string>
+    <string name="open_time_span" msgid="6709726401179550381">"<xliff:g id="OPEN_TIME">%1$s</xliff:g> – <xliff:g id="CLOSE_TIME">%2$s</xliff:g>"</string>
+    <string name="opening_hours" msgid="8524931350345922176">"<xliff:g id="EARLIER_TIMES">%1$s</xliff:g>, <xliff:g id="LATER_TIME">%2$s</xliff:g>"</string>
+    <string name="opens_tomorrow_at" msgid="9168271983241323946">"Ertaga <xliff:g id="OPEN_TIME">%s</xliff:g> da ochiladi"</string>
+    <string name="opens_today_at" msgid="9011139983701379907">"Bugun <xliff:g id="OPEN_TIME">%s</xliff:g> da ochiladi"</string>
+    <string name="closes_today_at" msgid="2623384032475495193">"<xliff:g id="CLOSE_TIME">%s</xliff:g> da yopiladi"</string>
+    <string name="closed_today_at" msgid="324294933330883529">"Bugun <xliff:g id="CLOSE_TIME">%s</xliff:g> da yopiladi"</string>
+    <string name="open_now" msgid="6439301193613349163">"Ochiq"</string>
+    <string name="closed_now" msgid="9175774453982778909">"Yopiq"</string>
+</resources>
diff --git a/InCallUI/res/values-vi/strings.xml b/InCallUI/res/values-vi/strings.xml
index c962381..34a4fc8 100644
--- a/InCallUI/res/values-vi/strings.xml
+++ b/InCallUI/res/values-vi/strings.xml
@@ -36,7 +36,7 @@
     <string name="wild_prompt_str" msgid="5543521676355533577">"Thay thế ký tự tự do bằng"</string>
     <string name="caller_manage_header" msgid="3231519674734638786">"Cuộc gọi hội nghị <xliff:g id="CONF_CALL_TIME">%s</xliff:g>"</string>
     <string name="voicemail_settings_number_label" msgid="8524164258691887790">"Số thư thoại"</string>
-    <string name="card_title_dialing" msgid="5769417478498348054">"Đang quay số"</string>
+    <string name="card_title_dialing" msgid="5769417478498348054">"Đang gọi"</string>
     <string name="card_title_redialing" msgid="8253487008234167266">"Đang quay số lại"</string>
     <string name="card_title_conf_call" msgid="1162980346189744501">"Cuộc gọi hội nghị"</string>
     <string name="card_title_incoming_call" msgid="7364539451234646909">"Cuộc gọi đến"</string>
@@ -49,7 +49,7 @@
     <string name="card_title_video_call" msgid="5898636679563320218">"Cuộc gọi điện video"</string>
     <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Đang yêu cầu video"</string>
     <string name="card_title_video_call_error" msgid="9000555878389539225">"Không kết nối được cuộc gọi điện video"</string>
-    <string name="card_title_video_call_paused" msgid="3753261320787432731">"Cuộc gọi điện video (tạm dừng)"</string>
+    <string name="card_title_video_call_rejected" msgid="462358296694719787">"Đã từ chối yêu cầu video"</string>
     <string name="card_title_callback_number" msgid="7307938207564217293">"Số gọi lại của bạn\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Số gọi lại khẩn cấp của bạn\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="notification_dialing" msgid="2107666444937350731">"Đang gọi"</string>
@@ -121,7 +121,7 @@
     <string name="unknown_call_session_event" msgid="2431061946920253582">"Sự kiện phiên cuộc gọi không xác định"</string>
     <string name="voicemail_provider" msgid="5135942703327136909">"Dịch vụ"</string>
     <string name="voicemail_settings" msgid="72448049107749316">"Thiết lập"</string>
-    <string name="voicemail_number_not_set" msgid="6724904736891087856">"&lt;Chưa được đặt&gt;"</string>
+    <string name="voicemail_number_not_set" msgid="6724904736891087856">"&lt;Chưa đặt&gt;"</string>
     <string name="other_settings" msgid="3672912580359716394">"Cài đặt cuộc gọi khác"</string>
     <string name="calling_via_template" msgid="4839419581866928142">"Gọi điện qua <xliff:g id="PROVIDER_NAME">%s</xliff:g>"</string>
     <string name="incoming_via_template" msgid="1696993226115570960">"Cuộc gọi đến qua <xliff:g id="PROVIDER_NAME">%s</xliff:g>"</string>
@@ -152,7 +152,6 @@
     <string name="default_notification_description" msgid="78174796906240970">"Âm thanh mặc định (<xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g>)"</string>
     <string name="ringtone_title" msgid="6374978286202084684">"Nhạc chuông điện thoại"</string>
     <string name="vibrate_on_ring_title" msgid="9197564612065258960">"Rung khi đổ chuông"</string>
-    <string name="dial_pad_autocomplete" msgid="7683489952557536398">"Bàn phím số tự động điền"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Nhạc chuông và rung"</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"Quản lý cuộc gọi hội nghị"</string>
     <string name="emergency_call_dialog_number_for_display" msgid="8373041754188879871">"Số khẩn cấp"</string>
@@ -168,4 +167,21 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> giờ</item>
       <item quantity="one">1 giờ</item>
     </plurals>
+    <string name="profile_photo_description" msgid="5609894336203315400">"Ảnh hồ sơ"</string>
+    <string name="camera_off_description" msgid="5689494614359429889">"Tắt máy ảnh"</string>
+    <string name="child_number" msgid="7437330400723805538">"qua <xliff:g id="CHILD_NUMBER">%s</xliff:g>"</string>
+    <string name="note_sent" msgid="3548700178238244595">"Đã gửi ghi chú"</string>
+    <string name="person_contact_context_title" msgid="723266617256740572">"Tin nhắn gần đây"</string>
+    <string name="business_contact_context_title" msgid="5334864183374669765">"Thông tin doanh nghiệp"</string>
+    <string name="distance_imperial_away" msgid="437508440176409037">"Cách <xliff:g id="DISTANCE">%.1f</xliff:g> dặm"</string>
+    <string name="distance_metric_away" msgid="166931929505893599">"Cách <xliff:g id="DISTANCE">%.1f</xliff:g> km"</string>
+    <string name="display_address" msgid="7307400970699471708">"<xliff:g id="STREET_ADDRESS">%1$s</xliff:g>, <xliff:g id="LOCALITY">%2$s</xliff:g>"</string>
+    <string name="open_time_span" msgid="6709726401179550381">"<xliff:g id="OPEN_TIME">%1$s</xliff:g> - <xliff:g id="CLOSE_TIME">%2$s</xliff:g>"</string>
+    <string name="opening_hours" msgid="8524931350345922176">"<xliff:g id="EARLIER_TIMES">%1$s</xliff:g>, <xliff:g id="LATER_TIME">%2$s</xliff:g>"</string>
+    <string name="opens_tomorrow_at" msgid="9168271983241323946">"Mở cửa lúc <xliff:g id="OPEN_TIME">%s</xliff:g> ngày mai"</string>
+    <string name="opens_today_at" msgid="9011139983701379907">"Mở cửa lúc <xliff:g id="OPEN_TIME">%s</xliff:g> hôm nay"</string>
+    <string name="closes_today_at" msgid="2623384032475495193">"Đóng cửa lúc <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="closed_today_at" msgid="324294933330883529">"Đã đóng cửa lúc <xliff:g id="CLOSE_TIME">%s</xliff:g> hôm nay"</string>
+    <string name="open_now" msgid="6439301193613349163">"Mở ngay bây giờ"</string>
+    <string name="closed_now" msgid="9175774453982778909">"Hiện đã đóng cửa"</string>
 </resources>
diff --git a/InCallUI/res/values-zh-rCN/strings.xml b/InCallUI/res/values-zh-rCN/strings.xml
index 9f0b5d9..f23f502 100644
--- a/InCallUI/res/values-zh-rCN/strings.xml
+++ b/InCallUI/res/values-zh-rCN/strings.xml
@@ -49,7 +49,7 @@
     <string name="card_title_video_call" msgid="5898636679563320218">"视频通话"</string>
     <string name="card_title_video_call_requesting" msgid="4587504939739340937">"正在发出视频请求"</string>
     <string name="card_title_video_call_error" msgid="9000555878389539225">"无法连接视频通话"</string>
-    <string name="card_title_video_call_paused" msgid="3753261320787432731">"视频通话(已暂停)"</string>
+    <string name="card_title_video_call_rejected" msgid="462358296694719787">"视频请求被拒绝"</string>
     <string name="card_title_callback_number" msgid="7307938207564217293">"您的回拨号码\n<xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"您的紧急回拨号码\n<xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="notification_dialing" msgid="2107666444937350731">"正在拨号"</string>
@@ -152,7 +152,6 @@
     <string name="default_notification_description" msgid="78174796906240970">"默认提示音 (<xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g>)"</string>
     <string name="ringtone_title" msgid="6374978286202084684">"手机铃声"</string>
     <string name="vibrate_on_ring_title" msgid="9197564612065258960">"响铃时振动"</string>
-    <string name="dial_pad_autocomplete" msgid="7683489952557536398">"拨号键盘自动填充"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"铃声和振动"</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"管理电话会议"</string>
     <string name="emergency_call_dialog_number_for_display" msgid="8373041754188879871">"紧急电话号码"</string>
@@ -168,4 +167,21 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> 小时</item>
       <item quantity="one">1 小时</item>
     </plurals>
+    <string name="profile_photo_description" msgid="5609894336203315400">"个人资料照片"</string>
+    <string name="camera_off_description" msgid="5689494614359429889">"关闭摄像头"</string>
+    <string name="child_number" msgid="7437330400723805538">"通过 <xliff:g id="CHILD_NUMBER">%s</xliff:g>"</string>
+    <string name="note_sent" msgid="3548700178238244595">"已发送记事"</string>
+    <string name="person_contact_context_title" msgid="723266617256740572">"最近的信息"</string>
+    <string name="business_contact_context_title" msgid="5334864183374669765">"商家信息"</string>
+    <string name="distance_imperial_away" msgid="437508440176409037">"<xliff:g id="DISTANCE">%.1f</xliff:g> 英里远"</string>
+    <string name="distance_metric_away" msgid="166931929505893599">"<xliff:g id="DISTANCE">%.1f</xliff:g> 公里远"</string>
+    <string name="display_address" msgid="7307400970699471708">"<xliff:g id="LOCALITY">%2$s</xliff:g><xliff:g id="STREET_ADDRESS">%1$s</xliff:g>"</string>
+    <string name="open_time_span" msgid="6709726401179550381">"<xliff:g id="OPEN_TIME">%1$s</xliff:g> - <xliff:g id="CLOSE_TIME">%2$s</xliff:g>"</string>
+    <string name="opening_hours" msgid="8524931350345922176">"<xliff:g id="EARLIER_TIMES">%1$s</xliff:g>,<xliff:g id="LATER_TIME">%2$s</xliff:g>"</string>
+    <string name="opens_tomorrow_at" msgid="9168271983241323946">"将于明天<xliff:g id="OPEN_TIME">%s</xliff:g>开始营业"</string>
+    <string name="opens_today_at" msgid="9011139983701379907">"将于今天<xliff:g id="OPEN_TIME">%s</xliff:g>开始营业"</string>
+    <string name="closes_today_at" msgid="2623384032475495193">"将于<xliff:g id="CLOSE_TIME">%s</xliff:g>结束营业"</string>
+    <string name="closed_today_at" msgid="324294933330883529">"已于今天<xliff:g id="CLOSE_TIME">%s</xliff:g>结束营业"</string>
+    <string name="open_now" msgid="6439301193613349163">"营业中"</string>
+    <string name="closed_now" msgid="9175774453982778909">"现已打烊"</string>
 </resources>
diff --git a/InCallUI/res/values-zh-rHK/strings.xml b/InCallUI/res/values-zh-rHK/strings.xml
index 90adbe2..8107a16 100644
--- a/InCallUI/res/values-zh-rHK/strings.xml
+++ b/InCallUI/res/values-zh-rHK/strings.xml
@@ -49,7 +49,7 @@
     <string name="card_title_video_call" msgid="5898636679563320218">"視像通話"</string>
     <string name="card_title_video_call_requesting" msgid="4587504939739340937">"提出視像要求"</string>
     <string name="card_title_video_call_error" msgid="9000555878389539225">"無法連接視像通話"</string>
-    <string name="card_title_video_call_paused" msgid="3753261320787432731">"視像通話 (已暫停)"</string>
+    <string name="card_title_video_call_rejected" msgid="462358296694719787">"視像通話要求被拒"</string>
     <string name="card_title_callback_number" msgid="7307938207564217293">"您的回撥號碼:\n<xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"您的緊急回撥號碼:\n<xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="notification_dialing" msgid="2107666444937350731">"撥號中"</string>
@@ -152,7 +152,6 @@
     <string name="default_notification_description" msgid="78174796906240970">"預設音效 (<xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g>)"</string>
     <string name="ringtone_title" msgid="6374978286202084684">"手機鈴聲"</string>
     <string name="vibrate_on_ring_title" msgid="9197564612065258960">"鈴響時震動"</string>
-    <string name="dial_pad_autocomplete" msgid="7683489952557536398">"撥號盤自動完成功能"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"鈴聲與震動"</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"管理會議通話"</string>
     <string name="emergency_call_dialog_number_for_display" msgid="8373041754188879871">"緊急電話號碼"</string>
@@ -168,4 +167,21 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> 小時</item>
       <item quantity="one">1 小時</item>
     </plurals>
+    <string name="profile_photo_description" msgid="5609894336203315400">"個人檔案相片"</string>
+    <string name="camera_off_description" msgid="5689494614359429889">"攝影機已關閉"</string>
+    <string name="child_number" msgid="7437330400723805538">"透過 <xliff:g id="CHILD_NUMBER">%s</xliff:g>"</string>
+    <string name="note_sent" msgid="3548700178238244595">"已傳送筆記"</string>
+    <string name="person_contact_context_title" msgid="723266617256740572">"最新訊息"</string>
+    <string name="business_contact_context_title" msgid="5334864183374669765">"公司資料"</string>
+    <string name="distance_imperial_away" msgid="437508440176409037">"<xliff:g id="DISTANCE">%.1f</xliff:g> 英里外"</string>
+    <string name="distance_metric_away" msgid="166931929505893599">"<xliff:g id="DISTANCE">%.1f</xliff:g> 公里外"</string>
+    <string name="display_address" msgid="7307400970699471708">"<xliff:g id="STREET_ADDRESS">%1$s</xliff:g>, <xliff:g id="LOCALITY">%2$s</xliff:g>"</string>
+    <string name="open_time_span" msgid="6709726401179550381">"<xliff:g id="OPEN_TIME">%1$s</xliff:g> - <xliff:g id="CLOSE_TIME">%2$s</xliff:g>"</string>
+    <string name="opening_hours" msgid="8524931350345922176">"<xliff:g id="EARLIER_TIMES">%1$s</xliff:g> (<xliff:g id="LATER_TIME">%2$s</xliff:g>)"</string>
+    <string name="opens_tomorrow_at" msgid="9168271983241323946">"將於明天<xliff:g id="OPEN_TIME">%s</xliff:g> 開放"</string>
+    <string name="opens_today_at" msgid="9011139983701379907">"將於今天<xliff:g id="OPEN_TIME">%s</xliff:g> 開放"</string>
+    <string name="closes_today_at" msgid="2623384032475495193">"將於<xliff:g id="CLOSE_TIME">%s</xliff:g> 關門"</string>
+    <string name="closed_today_at" msgid="324294933330883529">"已於今天<xliff:g id="CLOSE_TIME">%s</xliff:g> 關門"</string>
+    <string name="open_now" msgid="6439301193613349163">"營業中"</string>
+    <string name="closed_now" msgid="9175774453982778909">"休息"</string>
 </resources>
diff --git a/InCallUI/res/values-zh-rTW/strings.xml b/InCallUI/res/values-zh-rTW/strings.xml
index 0a8ab31..020dd10 100644
--- a/InCallUI/res/values-zh-rTW/strings.xml
+++ b/InCallUI/res/values-zh-rTW/strings.xml
@@ -49,7 +49,7 @@
     <string name="card_title_video_call" msgid="5898636679563320218">"視訊通話"</string>
     <string name="card_title_video_call_requesting" msgid="4587504939739340937">"提出視訊要求"</string>
     <string name="card_title_video_call_error" msgid="9000555878389539225">"無法建立視訊通話連線"</string>
-    <string name="card_title_video_call_paused" msgid="3753261320787432731">"視訊通話 (已暫停)"</string>
+    <string name="card_title_video_call_rejected" msgid="462358296694719787">"視訊通話請求遭拒"</string>
     <string name="card_title_callback_number" msgid="7307938207564217293">"您的回撥號碼如下\n<xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"您的緊急回撥號碼如下\n<xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="notification_dialing" msgid="2107666444937350731">"撥號中"</string>
@@ -152,7 +152,6 @@
     <string name="default_notification_description" msgid="78174796906240970">"預設音效 (<xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g>)"</string>
     <string name="ringtone_title" msgid="6374978286202084684">"手機鈴聲"</string>
     <string name="vibrate_on_ring_title" msgid="9197564612065258960">"鈴響時震動"</string>
-    <string name="dial_pad_autocomplete" msgid="7683489952557536398">"撥號鍵盤自動完成"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"鈴聲與震動"</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"管理會議通話"</string>
     <string name="emergency_call_dialog_number_for_display" msgid="8373041754188879871">"緊急電話號碼"</string>
@@ -168,4 +167,21 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> 小時</item>
       <item quantity="one">1 小時</item>
     </plurals>
+    <string name="profile_photo_description" msgid="5609894336203315400">"個人資料相片"</string>
+    <string name="camera_off_description" msgid="5689494614359429889">"關閉相機"</string>
+    <string name="child_number" msgid="7437330400723805538">"透過 <xliff:g id="CHILD_NUMBER">%s</xliff:g>"</string>
+    <string name="note_sent" msgid="3548700178238244595">"備註已送出"</string>
+    <string name="person_contact_context_title" msgid="723266617256740572">"最近的訊息"</string>
+    <string name="business_contact_context_title" msgid="5334864183374669765">"商家資訊"</string>
+    <string name="distance_imperial_away" msgid="437508440176409037">"<xliff:g id="DISTANCE">%.1f</xliff:g> 英里遠"</string>
+    <string name="distance_metric_away" msgid="166931929505893599">"<xliff:g id="DISTANCE">%.1f</xliff:g> 公里遠"</string>
+    <string name="display_address" msgid="7307400970699471708">"<xliff:g id="STREET_ADDRESS">%1$s</xliff:g>,<xliff:g id="LOCALITY">%2$s</xliff:g>"</string>
+    <string name="open_time_span" msgid="6709726401179550381">"<xliff:g id="OPEN_TIME">%1$s</xliff:g> - <xliff:g id="CLOSE_TIME">%2$s</xliff:g>"</string>
+    <string name="opening_hours" msgid="8524931350345922176">"<xliff:g id="EARLIER_TIMES">%1$s</xliff:g>,<xliff:g id="LATER_TIME">%2$s</xliff:g>"</string>
+    <string name="opens_tomorrow_at" msgid="9168271983241323946">"將於明日<xliff:g id="OPEN_TIME">%s</xliff:g>開始營業"</string>
+    <string name="opens_today_at" msgid="9011139983701379907">"將於本日<xliff:g id="OPEN_TIME">%s</xliff:g>開始營業"</string>
+    <string name="closes_today_at" msgid="2623384032475495193">"將於<xliff:g id="CLOSE_TIME">%s</xliff:g>結束營業"</string>
+    <string name="closed_today_at" msgid="324294933330883529">"已於本日<xliff:g id="CLOSE_TIME">%s</xliff:g>結束營業"</string>
+    <string name="open_now" msgid="6439301193613349163">"營業中"</string>
+    <string name="closed_now" msgid="9175774453982778909">"今日已結束營業"</string>
 </resources>
diff --git a/InCallUI/res/values-zu/strings.xml b/InCallUI/res/values-zu/strings.xml
index fe25ff5..6a7b0a3 100644
--- a/InCallUI/res/values-zu/strings.xml
+++ b/InCallUI/res/values-zu/strings.xml
@@ -49,7 +49,7 @@
     <string name="card_title_video_call" msgid="5898636679563320218">"Ikholi yevidiyo"</string>
     <string name="card_title_video_call_requesting" msgid="4587504939739340937">"Icela ividiyo"</string>
     <string name="card_title_video_call_error" msgid="9000555878389539225">"Ayikwazi ukuxhuma ikholi yevidiyo"</string>
-    <string name="card_title_video_call_paused" msgid="3753261320787432731">"Ikholi yevidiyo (Imiswe isikhashana)"</string>
+    <string name="card_title_video_call_rejected" msgid="462358296694719787">"Isicelo sevidiyo sinqatshelwe"</string>
     <string name="card_title_callback_number" msgid="7307938207564217293">"Inombolo yakho okumele ishayelwe futhi ngu-\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="card_title_callback_number_emergency" msgid="8634765419223426754">"Inombolo yakho yesimo esiphuthumayo okumele iphinde ishayelwe ngu-\n <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
     <string name="notification_dialing" msgid="2107666444937350731">"Iyadayela"</string>
@@ -152,7 +152,6 @@
     <string name="default_notification_description" msgid="78174796906240970">"Umsindo ozenzakalelayo (<xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g>)"</string>
     <string name="ringtone_title" msgid="6374978286202084684">"Ithoni yokukhala kocingo"</string>
     <string name="vibrate_on_ring_title" msgid="9197564612065258960">"Dlidlizisa uma ikhala"</string>
-    <string name="dial_pad_autocomplete" msgid="7683489952557536398">"Ukuqedelwa ngokuzenzakalela kwephedi yokudayela"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Ithoni yokukhala nokudlidliza"</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"Phatha ucingo lwengqungquthela"</string>
     <string name="emergency_call_dialog_number_for_display" msgid="8373041754188879871">"Inombolo yesimo esiphuthumayo"</string>
@@ -168,4 +167,21 @@
       <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> amahora</item>
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> amahora</item>
     </plurals>
+    <string name="profile_photo_description" msgid="5609894336203315400">"Isithombe sephrofayela"</string>
+    <string name="camera_off_description" msgid="5689494614359429889">"Ikhamela ivaliwe"</string>
+    <string name="child_number" msgid="7437330400723805538">"nge-<xliff:g id="CHILD_NUMBER">%s</xliff:g>"</string>
+    <string name="note_sent" msgid="3548700178238244595">"Inothi lithunyelwe"</string>
+    <string name="person_contact_context_title" msgid="723266617256740572">"Imilayezo yakamuva"</string>
+    <string name="business_contact_context_title" msgid="5334864183374669765">"Ulwazi lwebhizinisi"</string>
+    <string name="distance_imperial_away" msgid="437508440176409037">"<xliff:g id="DISTANCE">%.1f</xliff:g> mi kude"</string>
+    <string name="distance_metric_away" msgid="166931929505893599">"<xliff:g id="DISTANCE">%.1f</xliff:g> km kude"</string>
+    <string name="display_address" msgid="7307400970699471708">"<xliff:g id="STREET_ADDRESS">%1$s</xliff:g>, <xliff:g id="LOCALITY">%2$s</xliff:g>"</string>
+    <string name="open_time_span" msgid="6709726401179550381">"<xliff:g id="OPEN_TIME">%1$s</xliff:g> - <xliff:g id="CLOSE_TIME">%2$s</xliff:g>"</string>
+    <string name="opening_hours" msgid="8524931350345922176">"<xliff:g id="EARLIER_TIMES">%1$s</xliff:g>, <xliff:g id="LATER_TIME">%2$s</xliff:g>"</string>
+    <string name="opens_tomorrow_at" msgid="9168271983241323946">"Kuvulwa kusasa ngo-<xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="opens_today_at" msgid="9011139983701379907">"Kuvulwa namuhla ngo-<xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="closes_today_at" msgid="2623384032475495193">"Kuvalwa ngo-<xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="closed_today_at" msgid="324294933330883529">"Kuvalwe namuhla ngo-<xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="open_now" msgid="6439301193613349163">"Kuvuliwe manje"</string>
+    <string name="closed_now" msgid="9175774453982778909">"Kuvaliwe manje"</string>
 </resources>
diff --git a/InCallUI/res/values/array.xml b/InCallUI/res/values/array.xml
index 7877ec8..8744d3e 100644
--- a/InCallUI/res/values/array.xml
+++ b/InCallUI/res/values/array.xml
@@ -76,10 +76,10 @@
         <item>@drawable/ic_lockscreen_answer_video</item>
     </array>
     <array name="incoming_call_widget_video_without_sms_target_descriptions">
-        <item>@string/description_target_answer_video_call</item>
+        <item>@string/description_target_answer_audio_call</item>
         <item>@null</item>
         <item>@string/description_target_decline</item>
-        <item>@string/description_target_answer_audio_call</item>
+        <item>@string/description_target_answer_video_call</item>
     </array>
     <array name="incoming_call_widget_video_without_sms_direction_descriptions">
         <item>@string/description_direction_right</item>
@@ -89,21 +89,21 @@
     </array>
 
     <!-- For video calls, if respond via SMS is enabled:
-         - Answer as video call (drag right)
+         - Answer as audio call (drag right)
          - Respond via SMS (drag up)
          - Decline (drag left)
-         - Answer as audio call (drag down) -->
+         - Answer as video call (drag down) -->
     <array name="incoming_call_widget_video_with_sms_targets">
-        <item>@drawable/ic_lockscreen_answer_video</item>
+        <item>@drawable/ic_lockscreen_answer</item>
         <item>@drawable/ic_lockscreen_text</item>
         <item>@drawable/ic_lockscreen_decline</item>
-        <item>@drawable/ic_lockscreen_answer</item>
+        <item>@drawable/ic_lockscreen_answer_video</item>
     </array>
     <array name="incoming_call_widget_video_with_sms_target_descriptions">
-        <item>@string/description_target_answer_video_call</item>
+        <item>@string/description_target_answer_audio_call</item>
         <item>@string/description_target_send_sms</item>
         <item>@string/description_target_decline</item>
-        <item>@string/description_target_answer_audio_call</item>
+        <item>@string/description_target_answer_video_call</item>
     </array>
     <array name="incoming_call_widget_video_with_sms_direction_descriptions">
         <item>@string/description_direction_right</item>
diff --git a/InCallUI/res/values/colors.xml b/InCallUI/res/values/colors.xml
index cac382d..60a017c 100644
--- a/InCallUI/res/values/colors.xml
+++ b/InCallUI/res/values/colors.xml
@@ -32,6 +32,8 @@
     <color name="incall_action_bar_background_color">@color/incall_background_color</color>
     <color name="incall_action_bar_text_color">@color/incall_call_banner_text_color</color>
 
+    <color name="incall_photo_background_color">#545454</color>
+
     <!-- Put on top of each photo, implying 80% darker than usual. -->
     <color name="on_hold_dim_effect">#cc000000</color>
 
@@ -71,11 +73,14 @@
     <color name="glowpad_text_widget_ring_color">#ffffff</color>
     <color name="glowpad_widget_active_color">#ffffff</color>
     <color name="glowpad_text_widget_normal_tint">#cccccc</color>
-    <color name="glowpad_call_widget_normal_tint">@color/dialtacts_theme_color</color>
+    <color name="glowpad_call_widget_normal_tint">#00c853</color>
     <color name="glowpad_end_call_widget_normal_tint">#ff1744</color>
     <color name="glowpad_incoming_widget_tint">#a3a3a3</color>
     <color name="glowpad_incoming_widget_background_tint">#ffffff</color>
 
+    <!-- 70% opacity, white. -->
+    <color name="accessible_answer_hint_text_color">#B2FFFFFF</color>
+
     <!-- 20% opacity, theme color. -->
     <color name="incall_dialpad_touch_tint">#330288d1</color>
 
@@ -108,4 +113,10 @@
 
     <!-- Ripple color used over light backgrounds. -->
     <color name="ripple_light">#40000000</color>
+
+    <color name="contact_context_title_text_color">@color/incall_call_banner_subtext_color</color>
+    <color name="person_contact_context_message_text_color">@color/dialer_theme_color</color>
+    <color name="person_contact_context_message_background_color">@color/incall_call_banner_subtext_color</color>
+    <color name="person_contact_context_detail_text_color">@color/incall_call_banner_subtext_color</color>
+    <color name="business_contact_context_text_color">@color/incall_call_banner_subtext_color</color>
 </resources>
diff --git a/InCallUI/res/values/dimens.xml b/InCallUI/res/values/dimens.xml
index 6485377..439bb41 100644
--- a/InCallUI/res/values/dimens.xml
+++ b/InCallUI/res/values/dimens.xml
@@ -21,9 +21,6 @@
 
     <!-- Dimensions for CallCard elements (the normal in-call UI) -->
 
-    <!-- Height of the "call banner" overlay on top of the upper part of the call info area.
-         Note: This is the default size for small (<600dp height) devices: larger screen sizes apply
-         the values in values-h600dp/dimens.xml. -->
     <dimen name="call_banner_height">90dp</dimen>
     <dimen name="incall_action_bar_elevation">3dp</dimen>
 
@@ -122,4 +119,27 @@
 
     <dimen name="conference_call_manager_padding_top">64dp</dimen>
     <dimen name="conference_call_manager_button_dimension">46dp</dimen>
+
+    <dimen name="contact_context_title_text_size">14sp</dimen>
+    <dimen name="contact_context_title_image_size">19dp</dimen>
+    <dimen name="contact_context_title_image_side_padding">23dp</dimen>
+    <dimen name="contact_context_title_margin_bottom">13dp</dimen>
+    <dimen name="contact_context_list_item_padding">13dp</dimen>
+
+    <dimen name="person_contact_context_horizontal_padding">30dp</dimen>
+    <dimen name="person_contact_context_message_text_size">16sp</dimen>
+    <dimen name="person_contact_context_message_vertical_padding">7dp</dimen>
+    <dimen name="person_contact_context_message_horizontal_padding">12dp</dimen>
+    <dimen name="person_contact_context_message_background_main_radius">15dp</dimen>
+    <dimen name="person_contact_context_message_background_accent_radius">2dp</dimen>
+    <dimen name="person_contact_context_detail_padding_top">7dp</dimen>
+    <dimen name="person_contact_context_detail_text_size">14sp</dimen>
+
+    <dimen name="business_contact_context_end_padding">10dp</dimen>
+    <dimen name="business_contact_context_image_size">25dp</dimen>
+    <dimen name="business_contact_context_image_padding">20dp</dimen>
+    <dimen name="business_contact_context_heading_font_size">16sp</dimen>
+    <dimen name="business_contact_context_detail_font_size">12sp</dimen>
+
+    <dimen name="contact_context_small_photo_size">40dp</dimen>
 </resources>
diff --git a/InCallUI/res/values/strings.xml b/InCallUI/res/values/strings.xml
index e59867c..b30ca65 100644
--- a/InCallUI/res/values/strings.xml
+++ b/InCallUI/res/values/strings.xml
@@ -464,4 +464,39 @@
     <!-- Used to inform the user that the note associated with an outgoing call has been sent.
          [CHAR LIMIT=32] -->
     <string name="note_sent">Note sent</string>
+
+    <!-- Title for the call context with a person-type contact. [CHAR LIMIT=40] -->
+    <string name="person_contact_context_title">Recent messages</string>
+
+    <!-- Title for the call context with a business-type contact. [CHAR LIMIT=40] -->
+    <string name="business_contact_context_title">Business info</string>
+
+    <!-- Distance strings for business caller ID context. -->
+
+    <!-- Used to inform the user how far away a location is in miles. [CHAR LIMIT=NONE] -->
+    <string name="distance_imperial_away"><xliff:g id="distance">%.1f</xliff:g> mi away</string>
+    <!-- Used to inform the user how far away a location is in kilometers. [CHAR LIMIT=NONE] -->
+    <string name="distance_metric_away"><xliff:g id="distance">%.1f</xliff:g> km away</string>
+    <!-- A shortened way to display a business address. Formatted [street address], [city/locality]. -->
+    <string name="display_address"><xliff:g id="street_address">%1$s</xliff:g>, <xliff:g id="locality">%2$s</xliff:g></string>
+    <!-- Used to indicate hours of operation for a location as a time span. e.g. "11 am - 9 pm" [CHAR LIMIT=NONE] -->
+    <string name="open_time_span"><xliff:g id="open_time">%1$s</xliff:g> - <xliff:g id="close_time">%2$s</xliff:g></string>
+    <!-- Used to indicate a series of opening hours for a location.
+         This first argument may be one or more time spans. e.g. "11 am - 9 pm, 9 pm - 11 pm"
+         The second argument is an additional time span. e.g. "11 pm - 1 am"
+         The string is used to build a list of opening hours.
+         [CHAR LIMIT=NONE] -->
+    <string name="opening_hours"><xliff:g id="earlier_times">%1$s</xliff:g>, <xliff:g id="later_time">%2$s</xliff:g></string>
+    <!-- Used to express when a location will open the next day. [CHAR LIMIT=NONE] -->
+    <string name="opens_tomorrow_at">Opens tomorrow at <xliff:g id="open_time">%s</xliff:g></string>
+    <!-- Used to express the next time at which a location will be open today. [CHAR LIMIT=NONE] -->
+    <string name="opens_today_at">Opens today at <xliff:g id="open_time">%s</xliff:g></string>
+    <!-- Used to express the next time at which a location will close today. [CHAR LIMIT=NONE] -->
+    <string name="closes_today_at">Closes at <xliff:g id="close_time">%s</xliff:g></string>
+    <!-- Used to express the next time at which a location closed today if it is already closed. [CHAR LIMIT=NONE] -->
+    <string name="closed_today_at">Closed today at <xliff:g id="close_time">%s</xliff:g></string>
+    <!-- Displayed when a place is open. -->
+    <string name="open_now">Open now</string>
+    <!-- Displayed when a place is closed. -->
+    <string name="closed_now">Closed now</string>
 </resources>
diff --git a/InCallUI/src/com/android/incallui/AccessibleAnswerFragment.java b/InCallUI/src/com/android/incallui/AccessibleAnswerFragment.java
new file mode 100644
index 0000000..89c78ec
--- /dev/null
+++ b/InCallUI/src/com/android/incallui/AccessibleAnswerFragment.java
@@ -0,0 +1,157 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.incallui;
+
+import android.os.Bundle;
+import android.telecom.VideoProfile;
+import android.view.GestureDetector;
+import android.view.GestureDetector.SimpleOnGestureListener;
+import android.view.LayoutInflater;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.ViewGroup;
+
+import com.android.dialer.R;
+
+/**
+ * AnswerFragment to use when touch exploration is enabled in accessibility.
+ */
+public class AccessibleAnswerFragment extends AnswerFragment {
+
+    private static final String TAG = AccessibleAnswerFragment.class.getSimpleName();
+    private static final int SWIPE_THRESHOLD = 100;
+
+    private View mAnswer;
+    private View mDecline;
+    private View mText;
+
+    private TouchListener mTouchListener;
+    private GestureDetector mGestureDetector;
+
+    @Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container,
+            Bundle savedInstanceState) {
+        ViewGroup group = (ViewGroup) inflater.inflate(R.layout.accessible_answer_fragment,
+                container, false);
+
+        mTouchListener = new TouchListener();
+        mGestureDetector = new GestureDetector(getContext(), new SimpleOnGestureListener() {
+            @Override
+            public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
+                    float velocityY) {
+                return AccessibleAnswerFragment.this.onFling(e1, e2, velocityX, velocityX);
+            }
+        });
+
+        mAnswer = group.findViewById(R.id.accessible_answer_fragment_answer);
+        mAnswer.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                Log.d(TAG, "Answer Button Clicked");
+                onAnswer(VideoProfile.STATE_AUDIO_ONLY, getContext());
+            }
+        });
+        mDecline = group.findViewById(R.id.accessible_answer_fragment_decline);
+        mDecline.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                Log.d(TAG, "Decline Button Clicked");
+                onDecline(getContext());
+            }
+        });
+
+        mText = group.findViewById(R.id.accessible_answer_fragment_text);
+        mText.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                Log.d(TAG, "Text Button Clicked");
+                onText();
+            }
+        });
+        return group;
+    }
+
+    @Override
+    public void onResume() {
+        super.onResume();
+        // Intercept all touch events for full screen swiping gesture.
+        InCallActivity activity = (InCallActivity) getActivity();
+        activity.setDispatchTouchEventListener(mTouchListener);
+    }
+
+    @Override
+    public void onPause() {
+        super.onPause();
+        InCallActivity activity = (InCallActivity) getActivity();
+        activity.setDispatchTouchEventListener(null);
+    }
+
+    private class TouchListener implements View.OnTouchListener {
+        @Override
+        public boolean onTouch(View v, MotionEvent event) {
+            return mGestureDetector.onTouchEvent(event);
+        }
+    }
+
+    private boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
+            float velocityY) {
+        if (hasPendingDialogs()) {
+            return false;
+        }
+
+        float diffY = e2.getY() - e1.getY();
+        float diffX = e2.getX() - e1.getX();
+        if (Math.abs(diffX) > Math.abs(diffY)) {
+            if (Math.abs(diffX) > SWIPE_THRESHOLD) {
+                if (diffX > 0) {
+                    onSwipeRight();
+                } else {
+                    onSwipeLeft();
+                }
+            }
+            return true;
+        } else if (Math.abs(diffY) > SWIPE_THRESHOLD) {
+            if (diffY > 0) {
+                onSwipeDown();
+            } else {
+                onSwipeUp();
+            }
+            return true;
+        }
+
+        return false;
+    }
+
+    private void onSwipeUp() {
+        Log.d(TAG, "onSwipeUp");
+        onText();
+    }
+
+    private void onSwipeDown() {
+        Log.d(TAG, "onSwipeDown");
+    }
+
+    private void onSwipeLeft() {
+        Log.d(TAG, "onSwipeLeft");
+        onDecline(getContext());
+    }
+
+    private void onSwipeRight() {
+        Log.d(TAG, "onSwipeRight");
+        onAnswer(VideoProfile.STATE_AUDIO_ONLY, getContext());
+    }
+}
diff --git a/InCallUI/src/com/android/incallui/AnswerFragment.java b/InCallUI/src/com/android/incallui/AnswerFragment.java
index 7c67719..44ddfcd 100644
--- a/InCallUI/src/com/android/incallui/AnswerFragment.java
+++ b/InCallUI/src/com/android/incallui/AnswerFragment.java
@@ -21,7 +21,6 @@
 import android.content.Context;
 import android.content.DialogInterface;
 import android.os.Bundle;
-import android.telecom.VideoProfile;
 import android.text.Editable;
 import android.text.TextWatcher;
 import android.view.LayoutInflater;
@@ -34,17 +33,17 @@
 import android.widget.EditText;
 import android.widget.ListView;
 
-import com.google.common.base.Preconditions;
-import com.google.common.collect.Lists;
+import com.android.dialer.R;
 
 import java.util.ArrayList;
 import java.util.List;
 
+
 /**
- *
+ * Provides only common interface and functions. Should be derived to implement the actual UI.
  */
-public class AnswerFragment extends BaseFragment<AnswerPresenter, AnswerPresenter.AnswerUi>
-        implements GlowPadWrapper.AnswerListener, AnswerPresenter.AnswerUi {
+public abstract class AnswerFragment extends BaseFragment<AnswerPresenter, AnswerPresenter.AnswerUi>
+        implements AnswerPresenter.AnswerUi {
 
     public static final int TARGET_SET_FOR_AUDIO_WITHOUT_SMS = 0;
     public static final int TARGET_SET_FOR_AUDIO_WITH_SMS = 1;
@@ -53,6 +52,13 @@
     public static final int TARGET_SET_FOR_VIDEO_ACCEPT_REJECT_REQUEST = 4;
 
     /**
+     * This fragment implement no UI at all. Derived class should do it.
+     */
+    @Override
+    public abstract View onCreateView(LayoutInflater inflater, ViewGroup container,
+            Bundle savedInstanceState);
+
+    /**
      * The popup showing the list of canned responses.
      *
      * This is an AlertDialog containing a ListView showing the possible choices.  This may be null
@@ -70,11 +76,6 @@
 
     private final List<String> mSmsResponses = new ArrayList<>();
 
-    private GlowPadWrapper mGlowpad;
-
-    public AnswerFragment() {
-    }
-
     @Override
     public AnswerPresenter createPresenter() {
         return InCallPresenter.getInstance().getAnswerPresenter();
@@ -86,113 +87,6 @@
     }
 
     @Override
-    public View onCreateView(LayoutInflater inflater, ViewGroup container,
-            Bundle savedInstanceState) {
-        mGlowpad = (GlowPadWrapper) inflater.inflate(R.layout.answer_fragment,
-                container, false);
-
-        Log.d(this, "Creating view for answer fragment ", this);
-        Log.d(this, "Created from activity", getActivity());
-        mGlowpad.setAnswerListener(this);
-
-        return mGlowpad;
-    }
-
-    @Override
-    public void onDestroyView() {
-        Log.d(this, "onDestroyView");
-        if (mGlowpad != null) {
-            mGlowpad.stopPing();
-            mGlowpad = null;
-        }
-        super.onDestroyView();
-    }
-
-    @Override
-    public void onShowAnswerUi(boolean shown) {
-        Log.d(this, "Show answer UI: " + shown);
-        if (shown) {
-            mGlowpad.startPing();
-        } else {
-            mGlowpad.stopPing();
-        }
-    }
-
-    /**
-     * Sets targets on the glowpad according to target set identified by the parameter.
-     * @param targetSet Integer identifying the set of targets to use.
-     */
-    public void showTargets(int targetSet) {
-        showTargets(targetSet, VideoProfile.STATE_BIDIRECTIONAL);
-    }
-
-    /**
-     * Sets targets on the glowpad according to target set identified by the parameter.
-     * @param targetSet Integer identifying the set of targets to use.
-     */
-    @Override
-    public void showTargets(int targetSet, int videoState) {
-        final int targetResourceId;
-        final int targetDescriptionsResourceId;
-        final int directionDescriptionsResourceId;
-        final int handleDrawableResourceId;
-        mGlowpad.setVideoState(videoState);
-
-        switch (targetSet) {
-            case TARGET_SET_FOR_AUDIO_WITH_SMS:
-                targetResourceId = R.array.incoming_call_widget_audio_with_sms_targets;
-                targetDescriptionsResourceId =
-                        R.array.incoming_call_widget_audio_with_sms_target_descriptions;
-                directionDescriptionsResourceId =
-                        R.array.incoming_call_widget_audio_with_sms_direction_descriptions;
-                handleDrawableResourceId = R.drawable.ic_incall_audio_handle;
-                break;
-            case TARGET_SET_FOR_VIDEO_WITHOUT_SMS:
-                targetResourceId = R.array.incoming_call_widget_video_without_sms_targets;
-                targetDescriptionsResourceId =
-                        R.array.incoming_call_widget_video_without_sms_target_descriptions;
-                directionDescriptionsResourceId =
-                        R.array.incoming_call_widget_video_without_sms_direction_descriptions;
-                handleDrawableResourceId = R.drawable.ic_incall_video_handle;
-                break;
-            case TARGET_SET_FOR_VIDEO_WITH_SMS:
-                targetResourceId = R.array.incoming_call_widget_video_with_sms_targets;
-                targetDescriptionsResourceId =
-                        R.array.incoming_call_widget_video_with_sms_target_descriptions;
-                directionDescriptionsResourceId =
-                        R.array.incoming_call_widget_video_with_sms_direction_descriptions;
-                handleDrawableResourceId = R.drawable.ic_incall_video_handle;
-                break;
-            case TARGET_SET_FOR_VIDEO_ACCEPT_REJECT_REQUEST:
-                targetResourceId =
-                    R.array.incoming_call_widget_video_request_targets;
-                targetDescriptionsResourceId =
-                        R.array.incoming_call_widget_video_request_target_descriptions;
-                directionDescriptionsResourceId = R.array
-                        .incoming_call_widget_video_request_target_direction_descriptions;
-                handleDrawableResourceId = R.drawable.ic_incall_video_handle;
-                break;
-            case TARGET_SET_FOR_AUDIO_WITHOUT_SMS:
-            default:
-                targetResourceId = R.array.incoming_call_widget_audio_without_sms_targets;
-                targetDescriptionsResourceId =
-                        R.array.incoming_call_widget_audio_without_sms_target_descriptions;
-                directionDescriptionsResourceId =
-                        R.array.incoming_call_widget_audio_without_sms_direction_descriptions;
-                handleDrawableResourceId = R.drawable.ic_incall_audio_handle;
-                break;
-        }
-
-        if (targetResourceId != mGlowpad.getTargetResourceId()) {
-            mGlowpad.setTargetResources(targetResourceId);
-            mGlowpad.setTargetDescriptionsResourceId(targetDescriptionsResourceId);
-            mGlowpad.setDirectionDescriptionsResourceId(directionDescriptionsResourceId);
-            mGlowpad.setHandleDrawable(handleDrawableResourceId);
-            mGlowpad.reset(false);
-        }
-    }
-
-    @Override
     public void showMessageDialog() {
         final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
 
@@ -207,9 +101,7 @@
                 new DialogInterface.OnCancelListener() {
                     @Override
                     public void onCancel(DialogInterface dialogInterface) {
-                        if (mGlowpad != null) {
-                            mGlowpad.startPing();
-                        }
+                        onMessageDialogCancel();
                         dismissCannedResponsePopup();
                         getPresenter().onDismissDialog();
                     }
@@ -239,7 +131,7 @@
      * This is safe to call even if the popup is already dismissed, and even if you never called
      * showRespondViaSmsPopup() in the first place.
      */
-    private void dismissCannedResponsePopup() {
+    protected void dismissCannedResponsePopup() {
         if (mCannedResponsePopup != null) {
             mCannedResponsePopup.dismiss();  // safe even if already dismissed
             mCannedResponsePopup = null;
@@ -250,10 +142,10 @@
      * Dismiss the custom compose message popup.
      */
     private void dismissCustomMessagePopup() {
-       if (mCustomMessagePopup != null) {
-           mCustomMessagePopup.dismiss();
-           mCustomMessagePopup = null;
-       }
+        if (mCustomMessagePopup != null) {
+            mCustomMessagePopup.dismiss();
+            mCustomMessagePopup = null;
+        }
     }
 
     public void dismissPendingDialogs() {
@@ -280,23 +172,23 @@
         builder.setCancelable(true).setView(et)
                 .setPositiveButton(R.string.custom_message_send,
                         new DialogInterface.OnClickListener() {
-                    @Override
-                    public void onClick(DialogInterface dialog, int which) {
-                        // The order is arranged in a way that the popup will be destroyed when the
-                        // InCallActivity is about to finish.
-                        final String textMessage = et.getText().toString().trim();
-                        dismissCustomMessagePopup();
-                        getPresenter().rejectCallWithMessage(textMessage);
-                    }
-                })
+                            @Override
+                            public void onClick(DialogInterface dialog, int which) {
+                                // The order is arranged in a way that the popup will be destroyed
+                                // when the InCallActivity is about to finish.
+                                final String textMessage = et.getText().toString().trim();
+                                dismissCustomMessagePopup();
+                                getPresenter().rejectCallWithMessage(textMessage);
+                            }
+                        })
                 .setNegativeButton(R.string.custom_message_cancel,
                         new DialogInterface.OnClickListener() {
-                    @Override
-                    public void onClick(DialogInterface dialog, int which) {
-                        dismissCustomMessagePopup();
-                        getPresenter().onDismissDialog();
-                    }
-                })
+                            @Override
+                            public void onClick(DialogInterface dialog, int which) {
+                                dismissCustomMessagePopup();
+                                getPresenter().onDismissDialog();
+                            }
+                        })
                 .setOnCancelListener(new DialogInterface.OnCancelListener() {
                     @Override
                     public void onCancel(DialogInterface dialogInterface) {
@@ -352,23 +244,19 @@
         return getActivity();
     }
 
-    @Override
     public void onAnswer(int videoState, Context context) {
         Log.d(this, "onAnswer videoState=" + videoState + " context=" + context);
         getPresenter().onAnswer(videoState, context);
     }
 
-    @Override
     public void onDecline(Context context) {
         getPresenter().onDecline(context);
     }
 
-    @Override
     public void onDeclineUpgradeRequest(Context context) {
         InCallPresenter.getInstance().declineUpgradeRequest(context);
     }
 
-    @Override
     public void onText() {
         getPresenter().onText();
     }
@@ -400,4 +288,20 @@
             }
         }
     }
+
+    public void onShowAnswerUi(boolean shown) {
+        // Do Nothing
+    }
+
+    public void showTargets(int targetSet) {
+        // Do Nothing
+    }
+
+    public void showTargets(int targetSet, int videoState) {
+        // Do Nothing
+    }
+
+    protected void onMessageDialogCancel() {
+        // Do nothing.
+    }
 }
diff --git a/InCallUI/src/com/android/incallui/AnswerPresenter.java b/InCallUI/src/com/android/incallui/AnswerPresenter.java
index 97f60c0..1307a3e 100644
--- a/InCallUI/src/com/android/incallui/AnswerPresenter.java
+++ b/InCallUI/src/com/android/incallui/AnswerPresenter.java
@@ -48,6 +48,7 @@
     @Override
     public void onUiShowing(boolean showing) {
         if (showing) {
+            CallList.getInstance().addListener(this);
             final CallList calls = CallList.getInstance();
             Call call;
             call = calls.getIncomingCall();
@@ -60,6 +61,7 @@
                 processVideoUpgradeRequestCall(call);
             }
         } else {
+            CallList.getInstance().removeListener(this);
             // This is necessary because the activity can be destroyed while an incoming call exists.
             // This happens when back button is pressed while incoming call is still being shown.
             if (mCallId != null) {
@@ -179,7 +181,7 @@
         CallList.getInstance().addCallUpdateListener(mCallId, this);
 
         final int currentVideoState = call.getVideoState();
-        final int modifyToVideoState = call.getModifyToVideoState();
+        final int modifyToVideoState = call.getRequestedVideoState();
 
         if (currentVideoState == modifyToVideoState) {
             Log.w(this, "processVideoUpgradeRequestCall: Video states are same. Return.");
@@ -285,7 +287,7 @@
 
         // Only present the user with the option to answer as a video call if the incoming call is
         // a bi-directional video call.
-        if (VideoProfile.isBidirectional((call.getVideoState()))) {
+        if (VideoUtils.isBidirectionalVideoCall(call)) {
             if (withSms) {
                 getUi().showTargets(AnswerFragment.TARGET_SET_FOR_VIDEO_WITH_SMS);
                 getUi().configureMessageDialog(textMsgs);
diff --git a/InCallUI/src/com/android/incallui/AudioModeProvider.java b/InCallUI/src/com/android/incallui/AudioModeProvider.java
index e7ffecc..961fb11 100644
--- a/InCallUI/src/com/android/incallui/AudioModeProvider.java
+++ b/InCallUI/src/com/android/incallui/AudioModeProvider.java
@@ -16,10 +16,10 @@
 
 package com.android.incallui;
 
-import android.telecom.CallAudioState;
-
 import com.google.common.collect.Lists;
 
+import com.android.dialer.compat.CallAudioStateCompat;
+
 import java.util.List;
 
 /**
@@ -30,19 +30,20 @@
     static final int AUDIO_MODE_INVALID = 0;
 
     private static AudioModeProvider sAudioModeProvider = new AudioModeProvider();
-    private int mAudioMode = CallAudioState.ROUTE_EARPIECE;
+    private int mAudioMode = CallAudioStateCompat.ROUTE_EARPIECE;
     private boolean mMuted = false;
-    private int mSupportedModes = CallAudioState.ROUTE_EARPIECE | CallAudioState.ROUTE_BLUETOOTH |
-        CallAudioState.ROUTE_WIRED_HEADSET | CallAudioState.ROUTE_SPEAKER;
+    private int mSupportedModes = CallAudioStateCompat.ROUTE_EARPIECE
+            | CallAudioStateCompat.ROUTE_BLUETOOTH | CallAudioStateCompat.ROUTE_WIRED_HEADSET
+            | CallAudioStateCompat.ROUTE_SPEAKER;
     private final List<AudioModeListener> mListeners = Lists.newArrayList();
 
     public static AudioModeProvider getInstance() {
         return sAudioModeProvider;
     }
 
-    public void onAudioStateChanged(CallAudioState audioState) {
-        onAudioModeChange(audioState.getRoute(), audioState.isMuted());
-        onSupportedAudioModeChange(audioState.getSupportedRouteMask());
+    public void onAudioStateChanged(boolean isMuted, int route, int supportedRouteMask) {
+        onAudioModeChange(route, isMuted);
+        onSupportedAudioModeChange(supportedRouteMask);
     }
 
     public void onAudioModeChange(int newMode, boolean muted) {
diff --git a/InCallUI/src/com/android/incallui/Call.java b/InCallUI/src/com/android/incallui/Call.java
index b768cdd..aec806f 100644
--- a/InCallUI/src/com/android/incallui/Call.java
+++ b/InCallUI/src/com/android/incallui/Call.java
@@ -16,12 +16,10 @@
 
 package com.android.incallui;
 
-import com.android.contacts.common.CallUtil;
-import com.android.contacts.common.testing.NeededForTesting;
-
 import android.content.Context;
 import android.hardware.camera2.CameraCharacteristics;
 import android.net.Uri;
+import android.os.Build;
 import android.os.Bundle;
 import android.os.Trace;
 import android.telecom.Connection;
@@ -32,9 +30,17 @@
 import android.telecom.PhoneAccountHandle;
 import android.telecom.TelecomManager;
 import android.telecom.VideoProfile;
-import android.telephony.PhoneNumberUtils;
 import android.text.TextUtils;
 
+import com.android.contacts.common.CallUtil;
+import com.android.contacts.common.compat.SdkVersionOverride;
+import com.android.contacts.common.compat.telecom.TelecomManagerCompat;
+import com.android.contacts.common.testing.NeededForTesting;
+import com.android.dialer.util.IntentUtil;
+import com.android.incallui.compat.telecom.DetailsCompat;
+import com.android.incallui.compat.telecom.VideoProfileCompat;
+import com.android.incallui.util.TelecomCallUtil;
+
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Locale;
@@ -60,7 +66,8 @@
         public static final int DISCONNECTED = 10;  /* State after a call disconnects */
         public static final int CONFERENCED = 11;   /* Call part of a conference call */
         public static final int SELECT_PHONE_ACCOUNT = 12; /* Waiting for account selection */
-        public static final int CONNECTING = 13;    /* Waiting for Telecomm broadcast to finish */
+        public static final int CONNECTING = 13;    /* Waiting for Telecom broadcast to finish */
+        public static final int BLOCKED = 14;       /* The number was found on the block list */
 
 
         public static boolean isConnectingOrConnected(int state) {
@@ -113,6 +120,8 @@
                     return "SELECT_PHONE_ACCOUNT";
                 case CONNECTING:
                     return "CONNECTING";
+                case BLOCKED:
+                    return "BLOCKED";
                 default:
                     return "UNKNOWN";
             }
@@ -168,84 +177,273 @@
             return mCameraDirection;
         }
 
+        @Override
         public String toString() {
             return "(CameraDir:" + getCameraDir() + ")";
         }
     }
 
+    /**
+     * Tracks any state variables that is useful for logging. There is some amount of overlap with
+     * existing call member variables, but this duplication helps to ensure that none of these
+     * logging variables will interface with/and affect call logic.
+     */
+    public static class LogState {
+
+        // Contact lookup type constants
+        // Unknown lookup result (lookup not completed yet?)
+        public static final int LOOKUP_UNKNOWN = 0;
+        public static final int LOOKUP_NOT_FOUND = 1;
+        public static final int LOOKUP_LOCAL_CONTACT = 2;
+        public static final int LOOKUP_LOCAL_CACHE = 3;
+        public static final int LOOKUP_REMOTE_CONTACT = 4;
+        public static final int LOOKUP_EMERGENCY = 5;
+        public static final int LOOKUP_VOICEMAIL = 6;
+
+        // Call initiation type constants
+        public static final int INITIATION_UNKNOWN = 0;
+        public static final int INITIATION_INCOMING = 1;
+        public static final int INITIATION_DIALPAD = 2;
+        public static final int INITIATION_SPEED_DIAL = 3;
+        public static final int INITIATION_REMOTE_DIRECTORY = 4;
+        public static final int INITIATION_SMART_DIAL = 5;
+        public static final int INITIATION_REGULAR_SEARCH = 6;
+        public static final int INITIATION_CALL_LOG = 7;
+        public static final int INITIATION_CALL_LOG_FILTER = 8;
+        public static final int INITIATION_VOICEMAIL_LOG = 9;
+        public static final int INITIATION_CALL_DETAILS = 10;
+        public static final int INITIATION_QUICK_CONTACTS = 11;
+        public static final int INITIATION_EXTERNAL = 12;
+
+        public DisconnectCause disconnectCause;
+        public boolean isIncoming = false;
+        public int contactLookupResult = LOOKUP_UNKNOWN;
+        public int callInitiationMethod = INITIATION_EXTERNAL;
+        // If this was a conference call, the total number of calls involved in the conference.
+        public int conferencedCalls = 0;
+        public long duration = 0;
+        public boolean isLogged = false;
+
+        @Override
+        public String toString() {
+            return String.format(Locale.US, "["
+                        + "%s, " // DisconnectCause toString already describes the object type
+                        + "isIncoming: %s, "
+                        + "contactLookup: %s, "
+                        + "callInitiation: %s, "
+                        + "duration: %s"
+                        + "]",
+                    disconnectCause,
+                    isIncoming,
+                    lookupToString(contactLookupResult),
+                    initiationToString(callInitiationMethod),
+                    duration);
+        }
+
+        private static String lookupToString(int lookupType) {
+            switch (lookupType) {
+                case LOOKUP_LOCAL_CONTACT:
+                    return "Local";
+                case LOOKUP_LOCAL_CACHE:
+                    return "Cache";
+                case LOOKUP_REMOTE_CONTACT:
+                    return "Remote";
+                case LOOKUP_EMERGENCY:
+                    return "Emergency";
+                case LOOKUP_VOICEMAIL:
+                    return "Voicemail";
+                default:
+                    return "Not found";
+            }
+        }
+
+        private static String initiationToString(int initiationType) {
+            switch (initiationType) {
+                case INITIATION_INCOMING:
+                    return "Incoming";
+                case INITIATION_DIALPAD:
+                    return "Dialpad";
+                case INITIATION_SPEED_DIAL:
+                    return "Speed Dial";
+                case INITIATION_REMOTE_DIRECTORY:
+                    return "Remote Directory";
+                case INITIATION_SMART_DIAL:
+                    return "Smart Dial";
+                case INITIATION_REGULAR_SEARCH:
+                    return "Regular Search";
+                case INITIATION_CALL_LOG:
+                    return "Call Log";
+                case INITIATION_CALL_LOG_FILTER:
+                    return "Call Log Filter";
+                case INITIATION_VOICEMAIL_LOG:
+                    return "Voicemail Log";
+                case INITIATION_CALL_DETAILS:
+                    return "Call Details";
+                case INITIATION_QUICK_CONTACTS:
+                    return "Quick Contacts";
+                default:
+                    return "Unknown";
+            }
+        }
+    }
+
 
     private static final String ID_PREFIX = Call.class.getSimpleName() + "_";
     private static int sIdCounter = 0;
 
-    private android.telecom.Call.Callback mTelecomCallCallback =
-            new android.telecom.Call.Callback() {
-                @Override
-                public void onStateChanged(android.telecom.Call call, int newState) {
-                    Log.d(this, "TelecommCallCallback onStateChanged call=" + call + " newState="
-                            + newState);
-                    update();
-                }
+    private Object mTelecomCallCallback = newTelecomCallCallback();
 
-                @Override
-                public void onParentChanged(android.telecom.Call call,
-                        android.telecom.Call newParent) {
-                    Log.d(this, "TelecommCallCallback onParentChanged call=" + call + " newParent="
-                            + newParent);
-                    update();
-                }
+    private Object newTelecomCallCallback() {
+        if (SdkVersionOverride.getSdkVersion(Build.VERSION_CODES.M) >= Build.VERSION_CODES.M) {
+            return newMarshmallowTelecomCallCallback();
+        }
+        return newLollipopTelecomCallCallback();
+    }
 
-                @Override
-                public void onChildrenChanged(android.telecom.Call call,
-                        List<android.telecom.Call> children) {
-                    update();
-                }
+    private Object newMarshmallowTelecomCallCallback() {
+        Log.i(this, "Using an android.telecom.Call$Callback");
+        return new android.telecom.Call.Callback() {
+            @Override
+            public void onStateChanged(android.telecom.Call call, int newState) {
+                Log.d(this, "TelecomCallCallback onStateChanged call=" + call + " newState="
+                        + newState);
+                update();
+            }
 
-                @Override
-                public void onDetailsChanged(android.telecom.Call call,
-                        android.telecom.Call.Details details) {
-                    Log.d(this, "TelecommCallCallback onStateChanged call=" + call + " details="
-                            + details);
-                    update();
-                }
+            @Override
+            public void onParentChanged(android.telecom.Call call,
+                    android.telecom.Call newParent) {
+                Log.d(this, "TelecomCallCallback onParentChanged call=" + call + " newParent="
+                        + newParent);
+                update();
+            }
 
-                @Override
-                public void onCannedTextResponsesLoaded(android.telecom.Call call,
-                        List<String> cannedTextResponses) {
-                    Log.d(this, "TelecommCallCallback onStateChanged call=" + call
-                            + " cannedTextResponses=" + cannedTextResponses);
-                    update();
-                }
+            @Override
+            public void onChildrenChanged(android.telecom.Call call,
+                    List<android.telecom.Call> children) {
+                update();
+            }
 
-                @Override
-                public void onPostDialWait(android.telecom.Call call,
-                        String remainingPostDialSequence) {
-                    Log.d(this, "TelecommCallCallback onStateChanged call=" + call
-                            + " remainingPostDialSequence=" + remainingPostDialSequence);
-                    update();
-                }
+            @Override
+            public void onDetailsChanged(android.telecom.Call call,
+                    android.telecom.Call.Details details) {
+                Log.d(this, "TelecomCallCallback onStateChanged call=" + call + " details="
+                        + details);
+                update();
+            }
 
-                @Override
-                public void onVideoCallChanged(android.telecom.Call call,
-                        VideoCall videoCall) {
-                    Log.d(this, "TelecommCallCallback onStateChanged call=" + call + " videoCall="
-                            + videoCall);
-                    update();
-                }
+            @Override
+            public void onCannedTextResponsesLoaded(android.telecom.Call call,
+                    List<String> cannedTextResponses) {
+                Log.d(this, "TelecomCallCallback onStateChanged call=" + call
+                        + " cannedTextResponses=" + cannedTextResponses);
+                update();
+            }
 
-                @Override
-                public void onCallDestroyed(android.telecom.Call call) {
-                    Log.d(this, "TelecommCallCallback onStateChanged call=" + call);
-                    call.unregisterCallback(mTelecomCallCallback);
-                }
+            @Override
+            public void onPostDialWait(android.telecom.Call call,
+                    String remainingPostDialSequence) {
+                Log.d(this, "TelecomCallCallback onStateChanged call=" + call
+                        + " remainingPostDialSequence=" + remainingPostDialSequence);
+                update();
+            }
 
-                @Override
-                public void onConferenceableCallsChanged(android.telecom.Call call,
-                        List<android.telecom.Call> conferenceableCalls) {
-                    update();
-                }
-            };
+            @Override
+            public void onVideoCallChanged(android.telecom.Call call,
+                    VideoCall videoCall) {
+                Log.d(this, "TelecomCallCallback onStateChanged call=" + call + " videoCall="
+                        + videoCall);
+                update();
+            }
 
-    private android.telecom.Call mTelecommCall;
+            @Override
+            public void onCallDestroyed(android.telecom.Call call) {
+                Log.d(this, "TelecomCallCallback onStateChanged call=" + call);
+                call.unregisterCallback(this);
+            }
+
+            @Override
+            public void onConferenceableCallsChanged(android.telecom.Call call,
+                    List<android.telecom.Call> conferenceableCalls) {
+                update();
+            }
+        };
+    }
+
+    private Object newLollipopTelecomCallCallback() {
+        // This code only runs for Google Experience phones on the pre-M sdk since only the system
+        // dialer can invoke the InCallUI code. This allows us to safely use the
+        // android.telecom.Call.Listener interface
+        Log.i(this, "Using an android.telecom.Call$Listener");
+        return new android.telecom.Call.Listener() {
+            @Override
+            public void onStateChanged(android.telecom.Call call, int newState) {
+                Log.d(this, "TelecomCallCallback onStateChanged call=" + call + " newState="
+                        + newState);
+                update();
+            }
+
+            @Override
+            public void onParentChanged(android.telecom.Call call,
+                    android.telecom.Call newParent) {
+                Log.d(this, "TelecomCallCallback onParentChanged call=" + call + " newParent="
+                        + newParent);
+                update();
+            }
+
+            @Override
+            public void onChildrenChanged(android.telecom.Call call,
+                    List<android.telecom.Call> children) {
+                update();
+            }
+
+            @Override
+            public void onDetailsChanged(android.telecom.Call call,
+                    android.telecom.Call.Details details) {
+                Log.d(this, "TelecomCallCallback onStateChanged call=" + call + " details="
+                        + details);
+                update();
+            }
+
+            @Override
+            public void onCannedTextResponsesLoaded(android.telecom.Call call,
+                    List<String> cannedTextResponses) {
+                Log.d(this, "TelecomCallCallback onStateChanged call=" + call
+                        + " cannedTextResponses=" + cannedTextResponses);
+                update();
+            }
+
+            @Override
+            public void onPostDialWait(android.telecom.Call call,
+                    String remainingPostDialSequence) {
+                Log.d(this, "TelecomCallCallback onStateChanged call=" + call
+                        + " remainingPostDialSequence=" + remainingPostDialSequence);
+                update();
+            }
+
+            @Override
+            public void onVideoCallChanged(android.telecom.Call call,
+                    VideoCall videoCall) {
+                Log.d(this, "TelecomCallCallback onStateChanged call=" + call + " videoCall="
+                        + videoCall);
+                update();
+            }
+
+            @Override
+            public void onCallDestroyed(android.telecom.Call call) {
+                Log.d(this, "TelecomCallCallback onStateChanged call=" + call);
+                call.removeListener(this);
+            }
+
+            @Override
+            public void onConferenceableCallsChanged(android.telecom.Call call,
+                    List<android.telecom.Call> conferenceableCalls) {
+                update();
+            }
+        };
+    }
+
+    private android.telecom.Call mTelecomCall;
     private boolean mIsEmergencyCall;
     private Uri mHandle;
     private final String mId;
@@ -254,10 +452,12 @@
     private int mSessionModificationState;
     private final List<String> mChildCallIds = new ArrayList<>();
     private final VideoSettings mVideoSettings = new VideoSettings();
+    private int mVideoState;
+
     /**
-     * mModifyToVideoState is used to store requested upgrade / downgrade video state
+     * mRequestedVideoState is used to store requested upgrade / downgrade video state
      */
-    private int mModifyToVideoState = VideoProfile.STATE_AUDIO_ONLY;
+    private int mRequestedVideoState = VideoProfile.STATE_AUDIO_ONLY;
 
     private InCallVideoCallCallback mVideoCallCallback;
     private String mChildNumber;
@@ -271,26 +471,37 @@
      */
     private boolean mIsCallSubjectSupported;
 
+    private long mTimeAddedMs;
+
+    private LogState mLogState = new LogState();
+
     /**
      * Used only to create mock calls for testing
      */
     @NeededForTesting
     Call(int state) {
-        mTelecommCall = null;
+        mTelecomCall = null;
         mId = ID_PREFIX + Integer.toString(sIdCounter++);
         setState(state);
     }
 
-    public Call(android.telecom.Call telecommCall) {
-        mTelecommCall = telecommCall;
+    public Call(android.telecom.Call telecomCall) {
+        mTelecomCall = telecomCall;
         mId = ID_PREFIX + Integer.toString(sIdCounter++);
 
-        updateFromTelecommCall();
-        mTelecommCall.registerCallback(mTelecomCallCallback);
+        updateFromTelecomCall();
+
+        if (SdkVersionOverride.getSdkVersion(Build.VERSION_CODES.M) >= Build.VERSION_CODES.M) {
+            mTelecomCall.registerCallback((android.telecom.Call.Callback) mTelecomCallCallback);
+        } else {
+            mTelecomCall.addListener((android.telecom.Call.Listener) mTelecomCallCallback);
+        }
+
+        mTimeAddedMs = System.currentTimeMillis();
     }
 
-    public android.telecom.Call getTelecommCall() {
-        return mTelecommCall;
+    public android.telecom.Call getTelecomCall() {
+        return mTelecomCall;
     }
 
     /**
@@ -304,7 +515,7 @@
     private void update() {
         Trace.beginSection("Update");
         int oldState = getState();
-        updateFromTelecommCall();
+        updateFromTelecomCall();
         if (oldState != getState() && getState() == Call.State.DISCONNECTED) {
             CallList.getInstance().onDisconnect(this);
         } else {
@@ -313,30 +524,39 @@
         Trace.endSection();
     }
 
-    private void updateFromTelecommCall() {
-        Log.d(this, "updateFromTelecommCall: " + mTelecommCall.toString());
-        setState(translateState(mTelecommCall.getState()));
-        setDisconnectCause(mTelecommCall.getDetails().getDisconnectCause());
+    private void updateFromTelecomCall() {
+        Log.d(this, "updateFromTelecomCall: " + mTelecomCall.toString());
+        final int translatedState = translateState(mTelecomCall.getState());
+        if (mState != State.BLOCKED) {
+            setState(translatedState);
+            setDisconnectCause(mTelecomCall.getDetails().getDisconnectCause());
+            maybeCancelVideoUpgrade(mTelecomCall.getDetails().getVideoState());
+        }
 
-        if (mTelecommCall.getVideoCall() != null) {
+        if (mTelecomCall.getVideoCall() != null) {
             if (mVideoCallCallback == null) {
                 mVideoCallCallback = new InCallVideoCallCallback(this);
             }
-            mTelecommCall.getVideoCall().registerCallback(mVideoCallCallback);
+            mTelecomCall.getVideoCall().registerCallback(mVideoCallCallback);
         }
 
         mChildCallIds.clear();
-        for (int i = 0; i < mTelecommCall.getChildren().size(); i++) {
+        final int numChildCalls = mTelecomCall.getChildren().size();
+        for (int i = 0; i < numChildCalls; i++) {
             mChildCallIds.add(
-                    CallList.getInstance().getCallByTelecommCall(
-                            mTelecommCall.getChildren().get(i)).getId());
+                    CallList.getInstance().getCallByTelecomCall(
+                            mTelecomCall.getChildren().get(i)).getId());
         }
 
-        updateFromCallExtras(mTelecommCall.getDetails().getExtras());
+        // The number of conferenced calls can change over the course of the call, so use the
+        // maximum number of conferenced child calls as the metric for conference call usage.
+        mLogState.conferencedCalls = Math.max(numChildCalls, mLogState.conferencedCalls);
+
+        updateFromCallExtras(mTelecomCall.getDetails().getExtras());
 
         // If the handle of the call has changed, update state for the call determining if it is an
         // emergency call.
-        Uri newHandle = mTelecommCall.getDetails().getHandle();
+        Uri newHandle = mTelecomCall.getDetails().getHandle();
         if (!Objects.equals(mHandle, newHandle)) {
             mHandle = newHandle;
             updateEmergencyCallState();
@@ -344,13 +564,14 @@
 
         // If the phone account handle of the call is set, cache capability bit indicating whether
         // the phone account supports call subjects.
-        PhoneAccountHandle newPhoneAccountHandle = mTelecommCall.getDetails().getAccountHandle();
+        PhoneAccountHandle newPhoneAccountHandle = mTelecomCall.getDetails().getAccountHandle();
         if (!Objects.equals(mPhoneAccountHandle, newPhoneAccountHandle)) {
             mPhoneAccountHandle = newPhoneAccountHandle;
 
             if (mPhoneAccountHandle != null) {
                 TelecomManager mgr = InCallPresenter.getInstance().getTelecomManager();
-                PhoneAccount phoneAccount = mgr.getPhoneAccount(mPhoneAccountHandle);
+                PhoneAccount phoneAccount =
+                        TelecomManagerCompat.getPhoneAccount(mgr, mPhoneAccountHandle);
                 if (phoneAccount != null) {
                     mIsCallSubjectSupported = phoneAccount.hasCapabilities(
                             PhoneAccount.CAPABILITY_CALL_SUBJECT);
@@ -430,6 +651,23 @@
         }
     }
 
+    /**
+     * Determines if a received upgrade to video request should be cancelled.  This can happen if
+     * another InCall UI responds to the upgrade to video request.
+     *
+     * @param newVideoState The new video state.
+     */
+    private void maybeCancelVideoUpgrade(int newVideoState) {
+        boolean isVideoStateChanged = mVideoState != newVideoState;
+
+        if (mSessionModificationState == SessionModificationState.RECEIVED_UPGRADE_TO_VIDEO_REQUEST
+                && isVideoStateChanged) {
+
+            Log.v(this, "maybeCancelVideoUpgrade : cancelling upgrade notification");
+            setSessionModificationState(SessionModificationState.NO_REQUEST);
+        }
+        mVideoState = newVideoState;
+    }
     private static int translateState(int state) {
         switch (state) {
             case android.telecom.Call.STATE_NEW:
@@ -458,19 +696,21 @@
         return mId;
     }
 
+    public long getTimeAddedMs() {
+        return mTimeAddedMs;
+    }
+
     public String getNumber() {
-        if (mTelecommCall == null) {
-            return null;
-        }
-        if (mTelecommCall.getDetails().getGatewayInfo() != null) {
-            return mTelecommCall.getDetails().getGatewayInfo()
-                    .getOriginalAddress().getSchemeSpecificPart();
-        }
-        return getHandle() == null ? null : getHandle().getSchemeSpecificPart();
+        return TelecomCallUtil.getNumber(mTelecomCall);
+    }
+
+    public void blockCall() {
+        mTelecomCall.reject(false, null);
+        setState(State.BLOCKED);
     }
 
     public Uri getHandle() {
-        return mTelecommCall == null ? null : mTelecommCall.getDetails().getHandle();
+        return mTelecomCall == null ? null : mTelecomCall.getDetails().getHandle();
     }
 
     public boolean isEmergencyCall() {
@@ -478,7 +718,7 @@
     }
 
     public int getState() {
-        if (mTelecommCall != null && mTelecommCall.getParent() != null) {
+        if (mTelecomCall != null && mTelecomCall.getParent() != null) {
             return State.CONFERENCED;
         } else {
             return mState;
@@ -487,28 +727,34 @@
 
     public void setState(int state) {
         mState = state;
+        if (mState == State.INCOMING) {
+            mLogState.isIncoming = true;
+        } else if (mState == State.DISCONNECTED) {
+            mLogState.duration = getConnectTimeMillis() == 0 ?
+                    0: System.currentTimeMillis() - getConnectTimeMillis();
+        }
     }
 
     public int getNumberPresentation() {
-        return mTelecommCall == null ? null : mTelecommCall.getDetails().getHandlePresentation();
+        return mTelecomCall == null ? null : mTelecomCall.getDetails().getHandlePresentation();
     }
 
     public int getCnapNamePresentation() {
-        return mTelecommCall == null ? null
-                : mTelecommCall.getDetails().getCallerDisplayNamePresentation();
+        return mTelecomCall == null ? null
+                : mTelecomCall.getDetails().getCallerDisplayNamePresentation();
     }
 
     public String getCnapName() {
-        return mTelecommCall == null ? null
-                : getTelecommCall().getDetails().getCallerDisplayName();
+        return mTelecomCall == null ? null
+                : getTelecomCall().getDetails().getCallerDisplayName();
     }
 
     public Bundle getIntentExtras() {
-        return mTelecommCall == null ? null : mTelecommCall.getDetails().getIntentExtras();
+        return DetailsCompat.getIntentExtras(mTelecomCall.getDetails());
     }
 
     public Bundle getExtras() {
-        return mTelecommCall == null ? null : mTelecommCall.getDetails().getExtras();
+        return mTelecomCall == null ? null : mTelecomCall.getDetails().getExtras();
     }
 
     /**
@@ -551,21 +797,22 @@
 
     public void setDisconnectCause(DisconnectCause disconnectCause) {
         mDisconnectCause = disconnectCause;
+        mLogState.disconnectCause = mDisconnectCause;
     }
 
     /** Returns the possible text message responses. */
     public List<String> getCannedSmsResponses() {
-        return mTelecommCall.getCannedTextResponses();
+        return mTelecomCall.getCannedTextResponses();
     }
 
     /** Checks if the call supports the given set of capabilities supplied as a bit mask. */
     public boolean can(int capabilities) {
-        int supportedCapabilities = mTelecommCall.getDetails().getCallCapabilities();
+        int supportedCapabilities = mTelecomCall.getDetails().getCallCapabilities();
 
         if ((capabilities & android.telecom.Call.Details.CAPABILITY_MERGE_CONFERENCE) != 0) {
             // We allow you to merge if the capabilities allow it or if it is a call with
             // conferenceable calls.
-            if (mTelecommCall.getConferenceableCalls().isEmpty() &&
+            if (mTelecomCall.getConferenceableCalls().isEmpty() &&
                 ((android.telecom.Call.Details.CAPABILITY_MERGE_CONFERENCE
                         & supportedCapabilities) == 0)) {
                 // Cannot merge calls if there are no calls to merge with.
@@ -573,33 +820,32 @@
             }
             capabilities &= ~android.telecom.Call.Details.CAPABILITY_MERGE_CONFERENCE;
         }
-        return (capabilities == (capabilities & mTelecommCall.getDetails().getCallCapabilities()));
+        return (capabilities == (capabilities & mTelecomCall.getDetails().getCallCapabilities()));
     }
 
     public boolean hasProperty(int property) {
-        return mTelecommCall.getDetails().hasProperty(property);
+        return DetailsCompat.hasProperty(mTelecomCall.getDetails(), property);
     }
 
     /** Gets the time when the call first became active. */
     public long getConnectTimeMillis() {
-        return mTelecommCall.getDetails().getConnectTimeMillis();
+        return mTelecomCall.getDetails().getConnectTimeMillis();
     }
 
     public boolean isConferenceCall() {
-        return mTelecommCall.getDetails().hasProperty(
-                android.telecom.Call.Details.PROPERTY_CONFERENCE);
+        return hasProperty(android.telecom.Call.Details.PROPERTY_CONFERENCE);
     }
 
     public GatewayInfo getGatewayInfo() {
-        return mTelecommCall == null ? null : mTelecommCall.getDetails().getGatewayInfo();
+        return mTelecomCall == null ? null : mTelecomCall.getDetails().getGatewayInfo();
     }
 
     public PhoneAccountHandle getAccountHandle() {
-        return mTelecommCall == null ? null : mTelecommCall.getDetails().getAccountHandle();
+        return mTelecomCall == null ? null : mTelecomCall.getDetails().getAccountHandle();
     }
 
     public VideoCall getVideoCall() {
-        return mTelecommCall == null ? null : mTelecommCall.getVideoCall();
+        return mTelecomCall == null ? null : mTelecomCall.getVideoCall();
     }
 
     public List<String> getChildCallIds() {
@@ -607,56 +853,56 @@
     }
 
     public String getParentId() {
-        android.telecom.Call parentCall = mTelecommCall.getParent();
+        android.telecom.Call parentCall = mTelecomCall.getParent();
         if (parentCall != null) {
-            return CallList.getInstance().getCallByTelecommCall(parentCall).getId();
+            return CallList.getInstance().getCallByTelecomCall(parentCall).getId();
         }
         return null;
     }
 
     public int getVideoState() {
-        return mTelecommCall.getDetails().getVideoState();
+        return mTelecomCall.getDetails().getVideoState();
     }
 
     public boolean isVideoCall(Context context) {
         return CallUtil.isVideoEnabled(context) &&
-                CallUtils.isVideoCall(getVideoState());
+                VideoUtils.isVideoCall(getVideoState());
     }
 
     /**
-     * This method is called when we request for a video upgrade or downgrade. This handles the
-     * session modification state RECEIVED_UPGRADE_TO_VIDEO_REQUEST and sets the video state we
-     * want to upgrade/downgrade to.
+     * Handles incoming session modification requests.  Stores the pending video request and sets
+     * the session modification state to
+     * {@link SessionModificationState#RECEIVED_UPGRADE_TO_VIDEO_REQUEST} so that we can keep track
+     * of the fact the request was received.  Only upgrade requests require user confirmation and
+     * will be handled by this method.  The remote user can turn off their own camera without
+     * confirmation.
+     *
+     * @param videoState The requested video state.
      */
-    public void setSessionModificationTo(int videoState) {
-        Log.d(this, "setSessionModificationTo - video state= " + videoState);
+    public void setRequestedVideoState(int videoState) {
+        Log.d(this, "setRequestedVideoState - video state= " + videoState);
         if (videoState == getVideoState()) {
             mSessionModificationState = Call.SessionModificationState.NO_REQUEST;
-            Log.w(this,"setSessionModificationTo - Clearing session modification state");
-        } else {
-            mSessionModificationState =
-                Call.SessionModificationState.RECEIVED_UPGRADE_TO_VIDEO_REQUEST;
-            setModifyToVideoState(videoState);
-            CallList.getInstance().onUpgradeToVideo(this);
+            Log.w(this,"setRequestedVideoState - Clearing session modification state");
+            return;
         }
 
-        Log.d(this, "setSessionModificationTo - mSessionModificationState="
+        mSessionModificationState = Call.SessionModificationState.RECEIVED_UPGRADE_TO_VIDEO_REQUEST;
+        mRequestedVideoState = videoState;
+        CallList.getInstance().onUpgradeToVideo(this);
+
+        Log.d(this, "setRequestedVideoState - mSessionModificationState="
             + mSessionModificationState + " video state= " + videoState);
         update();
     }
 
     /**
-     * This method is called to handle any other session modification states other than
-     * RECEIVED_UPGRADE_TO_VIDEO_REQUEST. We set the modification state and reset the video state
-     * when an upgrade request has been completed or failed.
+     * Set the session modification state.  Used to keep track of pending video session modification
+     * operations and to inform listeners of these changes.
+     *
+     * @param state the new session modification state.
      */
     public void setSessionModificationState(int state) {
-        if (state == Call.SessionModificationState.RECEIVED_UPGRADE_TO_VIDEO_REQUEST) {
-            Log.e(this,
-                    "setSessionModificationState not valid for RECEIVED_UPGRADE_TO_VIDEO_REQUEST");
-            return;
-        }
-
         boolean hasChanged = mSessionModificationState != state;
         mSessionModificationState = state;
         Log.d(this, "setSessionModificationState " + state + " mSessionModificationState="
@@ -671,17 +917,16 @@
      * repeated calls to isEmergencyNumber.
      */
     private void updateEmergencyCallState() {
-        Uri handle = mTelecommCall.getDetails().getHandle();
-        mIsEmergencyCall = PhoneNumberUtils.isEmergencyNumber(
-                handle == null ? "" : handle.getSchemeSpecificPart());
+        mIsEmergencyCall = TelecomCallUtil.isEmergencyCall(mTelecomCall);
     }
 
-    private void setModifyToVideoState(int newVideoState) {
-        mModifyToVideoState = newVideoState;
-    }
-
-    public int getModifyToVideoState() {
-        return mModifyToVideoState;
+    /**
+     * Gets the video state which was requested via a session modification request.
+     *
+     * @return The video state.
+     */
+    public int getRequestedVideoState() {
+        return mRequestedVideoState;
     }
 
     public static boolean areSame(Call call1, Call call2) {
@@ -706,13 +951,35 @@
         return TextUtils.equals(call1.getNumber(), call2.getNumber());
     }
 
+    /**
+     *  Gets the current video session modification state.
+     *
+     * @return The session modification state.
+     */
     public int getSessionModificationState() {
         return mSessionModificationState;
     }
 
+    public LogState getLogState() {
+        return mLogState;
+    }
+
+    /**
+     * Logging utility methods
+     */
+    public void logCallInitiationType() {
+        if (getState() == State.INCOMING) {
+            getLogState().callInitiationMethod = LogState.INITIATION_INCOMING;
+        } else if (getIntentExtras() != null) {
+            getLogState().callInitiationMethod =
+                getIntentExtras().getInt(IntentUtil.EXTRA_CALL_INITIATION_TYPE,
+                        LogState.INITIATION_EXTERNAL);
+        }
+    }
+
     @Override
     public String toString() {
-        if (mTelecommCall == null) {
+        if (mTelecomCall == null) {
             // This should happen only in testing since otherwise we would never have a null
             // Telecom call.
             return String.valueOf(mId);
@@ -722,12 +989,11 @@
                 "videoState:%s, mSessionModificationState:%d, VideoSettings:%s]",
                 mId,
                 State.toString(getState()),
-                android.telecom.Call.Details
-                        .capabilitiesToString(mTelecommCall.getDetails().getCallCapabilities()),
+                DetailsCompat.capabilitiesToString(mTelecomCall.getDetails().getCallCapabilities()),
                 mChildCallIds,
                 getParentId(),
-                this.mTelecommCall.getConferenceableCalls(),
-                VideoProfile.videoStateToString(mTelecommCall.getDetails().getVideoState()),
+                this.mTelecomCall.getConferenceableCalls(),
+                VideoProfileCompat.videoStateToString(mTelecomCall.getDetails().getVideoState()),
                 mSessionModificationState,
                 getVideoSettings());
     }
diff --git a/InCallUI/src/com/android/incallui/CallButtonFragment.java b/InCallUI/src/com/android/incallui/CallButtonFragment.java
index 0987cac..6538474 100644
--- a/InCallUI/src/com/android/incallui/CallButtonFragment.java
+++ b/InCallUI/src/com/android/incallui/CallButtonFragment.java
@@ -16,18 +16,28 @@
 
 package com.android.incallui;
 
-import static com.android.incallui.CallButtonFragment.Buttons.*;
+import static com.android.incallui.CallButtonFragment.Buttons.BUTTON_ADD_CALL;
+import static com.android.incallui.CallButtonFragment.Buttons.BUTTON_AUDIO;
+import static com.android.incallui.CallButtonFragment.Buttons.BUTTON_COUNT;
+import static com.android.incallui.CallButtonFragment.Buttons.BUTTON_DIALPAD;
+import static com.android.incallui.CallButtonFragment.Buttons.BUTTON_HOLD;
+import static com.android.incallui.CallButtonFragment.Buttons.BUTTON_MANAGE_VIDEO_CONFERENCE;
+import static com.android.incallui.CallButtonFragment.Buttons.BUTTON_MERGE;
+import static com.android.incallui.CallButtonFragment.Buttons.BUTTON_MUTE;
+import static com.android.incallui.CallButtonFragment.Buttons.BUTTON_PAUSE_VIDEO;
+import static com.android.incallui.CallButtonFragment.Buttons.BUTTON_SWAP;
+import static com.android.incallui.CallButtonFragment.Buttons.BUTTON_SWITCH_CAMERA;
+import static com.android.incallui.CallButtonFragment.Buttons.BUTTON_UPGRADE_TO_VIDEO;
 
 import android.content.Context;
 import android.content.res.ColorStateList;
 import android.content.res.Resources;
 import android.graphics.drawable.Drawable;
-import android.graphics.drawable.LayerDrawable;
 import android.graphics.drawable.GradientDrawable;
+import android.graphics.drawable.LayerDrawable;
 import android.graphics.drawable.RippleDrawable;
 import android.graphics.drawable.StateListDrawable;
 import android.os.Bundle;
-import android.telecom.CallAudioState;
 import android.util.SparseIntArray;
 import android.view.ContextThemeWrapper;
 import android.view.HapticFeedbackConstants;
@@ -43,6 +53,7 @@
 import android.widget.PopupMenu.OnMenuItemClickListener;
 
 import com.android.contacts.common.util.MaterialColorMapUtils.MaterialPalette;
+import com.android.dialer.compat.CallAudioStateCompat;
 
 /**
  * Fragment for call control buttons
@@ -51,6 +62,7 @@
         extends BaseFragment<CallButtonPresenter, CallButtonPresenter.CallButtonUi>
         implements CallButtonPresenter.CallButtonUi, OnMenuItemClickListener, OnDismissListener,
         View.OnClickListener {
+
     private static final int INVALID_INDEX = -1;
     private int mButtonMaxVisible;
     // The button is currently visible in the UI
@@ -61,6 +73,7 @@
     private static final int BUTTON_MENU = 3;
 
     public interface Buttons {
+
         public static final int BUTTON_AUDIO = 0;
         public static final int BUTTON_MUTE = 1;
         public static final int BUTTON_DIALPAD = 2;
@@ -153,7 +166,7 @@
         mOverflowButton = (ImageButton) parent.findViewById(R.id.overflowButton);
         mOverflowButton.setOnClickListener(this);
         mManageVideoCallConferenceButton = (ImageButton) parent.findViewById(
-            R.id.manageVideoCallConferenceButton);
+                R.id.manageVideoCallConferenceButton);
         mManageVideoCallConferenceButton.setOnClickListener(this);
         return parent;
     }
@@ -181,7 +194,7 @@
         int id = view.getId();
         Log.d(this, "onClick(View " + view + ", id " + id + ")...");
 
-        switch(id) {
+        switch (id) {
             case R.id.audioButton:
                 onAudioButtonClicked();
                 break;
@@ -258,11 +271,11 @@
         }
 
         ImageButton[] normalButtons = {
-            mSwapButton,
-            mChangeToVideoButton,
-            mAddCallButton,
-            mMergeButton,
-            mOverflowButton
+                mSwapButton,
+                mChangeToVideoButton,
+                mAddCallButton,
+                mMergeButton,
+                mOverflowButton
         };
 
         for (ImageButton button : normalButtons) {
@@ -472,7 +485,7 @@
                     }
                     addToOverflowMenu(i, button, menu);
                 }
-            } else if (visibility == BUTTON_HIDDEN){
+            } else if (visibility == BUTTON_HIDDEN) {
                 button.setVisibility(View.GONE);
             }
         }
@@ -514,20 +527,20 @@
         Log.d(this, "  id: " + item.getItemId());
         Log.d(this, "  title: '" + item.getTitle() + "'");
 
-        int mode = CallAudioState.ROUTE_WIRED_OR_EARPIECE;
+        int mode = CallAudioStateCompat.ROUTE_WIRED_OR_EARPIECE;
 
         switch (item.getItemId()) {
             case R.id.audio_mode_speaker:
-                mode = CallAudioState.ROUTE_SPEAKER;
+                mode = CallAudioStateCompat.ROUTE_SPEAKER;
                 break;
             case R.id.audio_mode_earpiece:
             case R.id.audio_mode_wired_headset:
                 // InCallCallAudioState.ROUTE_EARPIECE means either the handset earpiece,
                 // or the wired headset (if connected.)
-                mode = CallAudioState.ROUTE_WIRED_OR_EARPIECE;
+                mode = CallAudioStateCompat.ROUTE_WIRED_OR_EARPIECE;
                 break;
             case R.id.audio_mode_bluetooth:
-                mode = CallAudioState.ROUTE_BLUETOOTH;
+                mode = CallAudioStateCompat.ROUTE_BLUETOOTH;
                 break;
             default:
                 Log.e(this, "onMenuItemClick:  unexpected View ID " + item.getItemId()
@@ -557,9 +570,9 @@
      */
     private void onAudioButtonClicked() {
         Log.d(this, "onAudioButtonClicked: " +
-                CallAudioState.audioRouteToString(getPresenter().getSupportedAudio()));
+                CallAudioStateCompat.audioRouteToString(getPresenter().getSupportedAudio()));
 
-        if (isSupported(CallAudioState.ROUTE_BLUETOOTH)) {
+        if (isSupported(CallAudioStateCompat.ROUTE_BLUETOOTH)) {
             showAudioModePopup();
         } else {
             getPresenter().toggleSpeakerphone();
@@ -594,8 +607,8 @@
      * are visible based on the supported audio formats.
      */
     private void updateAudioButtons(int supportedModes) {
-        final boolean bluetoothSupported = isSupported(CallAudioState.ROUTE_BLUETOOTH);
-        final boolean speakerSupported = isSupported(CallAudioState.ROUTE_SPEAKER);
+        final boolean bluetoothSupported = isSupported(CallAudioStateCompat.ROUTE_BLUETOOTH);
+        final boolean speakerSupported = isSupported(CallAudioStateCompat.ROUTE_SPEAKER);
 
         boolean audioButtonEnabled = false;
         boolean audioButtonChecked = false;
@@ -615,9 +628,9 @@
             showMoreIndicator = true;
 
             // Update desired layers:
-            if (isAudio(CallAudioState.ROUTE_BLUETOOTH)) {
+            if (isAudio(CallAudioStateCompat.ROUTE_BLUETOOTH)) {
                 showBluetoothIcon = true;
-            } else if (isAudio(CallAudioState.ROUTE_SPEAKER)) {
+            } else if (isAudio(CallAudioStateCompat.ROUTE_SPEAKER)) {
                 showSpeakerphoneIcon = true;
             } else {
                 showHandsetIcon = true;
@@ -636,7 +649,7 @@
 
             // The audio button *is* a toggle in this state, and indicated the
             // current state of the speakerphone.
-            audioButtonChecked = isAudio(CallAudioState.ROUTE_SPEAKER);
+            audioButtonChecked = isAudio(CallAudioStateCompat.ROUTE_SPEAKER);
             mAudioButton.setSelected(audioButtonChecked);
 
             // update desired layers:
@@ -697,20 +710,20 @@
 
         // If bluetooth is not supported, the audio buttion will toggle, so use the label "speaker".
         // Otherwise, use the label of the currently selected audio mode.
-        if (!isSupported(CallAudioState.ROUTE_BLUETOOTH)) {
+        if (!isSupported(CallAudioStateCompat.ROUTE_BLUETOOTH)) {
             stringId = R.string.audio_mode_speaker;
         } else {
             switch (mode) {
-                case CallAudioState.ROUTE_EARPIECE:
+                case CallAudioStateCompat.ROUTE_EARPIECE:
                     stringId = R.string.audio_mode_earpiece;
                     break;
-                case CallAudioState.ROUTE_BLUETOOTH:
+                case CallAudioStateCompat.ROUTE_BLUETOOTH:
                     stringId = R.string.audio_mode_bluetooth;
                     break;
-                case CallAudioState.ROUTE_WIRED_HEADSET:
+                case CallAudioStateCompat.ROUTE_WIRED_HEADSET:
                     stringId = R.string.audio_mode_wired_headset;
                     break;
-                case CallAudioState.ROUTE_SPEAKER:
+                case CallAudioStateCompat.ROUTE_SPEAKER:
                     stringId = R.string.audio_mode_speaker;
                     break;
             }
@@ -740,7 +753,7 @@
         // See comments below for the exact logic.
 
         final MenuItem speakerItem = menu.findItem(R.id.audio_mode_speaker);
-        speakerItem.setEnabled(isSupported(CallAudioState.ROUTE_SPEAKER));
+        speakerItem.setEnabled(isSupported(CallAudioStateCompat.ROUTE_SPEAKER));
         // TODO: Show speakerItem as initially "selected" if
         // speaker is on.
 
@@ -749,7 +762,7 @@
         final MenuItem earpieceItem = menu.findItem(R.id.audio_mode_earpiece);
         final MenuItem wiredHeadsetItem = menu.findItem(R.id.audio_mode_wired_headset);
 
-        final boolean usingHeadset = isSupported(CallAudioState.ROUTE_WIRED_HEADSET);
+        final boolean usingHeadset = isSupported(CallAudioStateCompat.ROUTE_WIRED_HEADSET);
         earpieceItem.setVisible(!usingHeadset);
         earpieceItem.setEnabled(!usingHeadset);
         wiredHeadsetItem.setVisible(usingHeadset);
@@ -759,7 +772,7 @@
         // bluetoothIndicatorOn are both false.
 
         final MenuItem bluetoothItem = menu.findItem(R.id.audio_mode_bluetooth);
-        bluetoothItem.setEnabled(isSupported(CallAudioState.ROUTE_BLUETOOTH));
+        bluetoothItem.setEnabled(isSupported(CallAudioStateCompat.ROUTE_BLUETOOTH));
         // TODO: Show bluetoothItem as initially "selected" if
         // bluetoothIndicatorOn is true.
 
@@ -781,9 +794,11 @@
 
     @Override
     public void displayDialpad(boolean value, boolean animate) {
-        mShowDialpadButton.setSelected(value);
         if (getActivity() != null && getActivity() instanceof InCallActivity) {
-            ((InCallActivity) getActivity()).showDialpadFragment(value, animate);
+            boolean changed = ((InCallActivity) getActivity()).showDialpadFragment(value, animate);
+            if (changed) {
+                mShowDialpadButton.setSelected(value);
+            }
         }
     }
 
diff --git a/InCallUI/src/com/android/incallui/CallButtonPresenter.java b/InCallUI/src/com/android/incallui/CallButtonPresenter.java
index 29cdd4d..7e5f7c6 100644
--- a/InCallUI/src/com/android/incallui/CallButtonPresenter.java
+++ b/InCallUI/src/com/android/incallui/CallButtonPresenter.java
@@ -16,23 +16,32 @@
 
 package com.android.incallui;
 
-import static com.android.incallui.CallButtonFragment.Buttons.*;
+import static com.android.incallui.CallButtonFragment.Buttons.BUTTON_ADD_CALL;
+import static com.android.incallui.CallButtonFragment.Buttons.BUTTON_AUDIO;
+import static com.android.incallui.CallButtonFragment.Buttons.BUTTON_DIALPAD;
+import static com.android.incallui.CallButtonFragment.Buttons.BUTTON_HOLD;
+import static com.android.incallui.CallButtonFragment.Buttons.BUTTON_MERGE;
+import static com.android.incallui.CallButtonFragment.Buttons.BUTTON_MUTE;
+import static com.android.incallui.CallButtonFragment.Buttons.BUTTON_PAUSE_VIDEO;
+import static com.android.incallui.CallButtonFragment.Buttons.BUTTON_SWAP;
+import static com.android.incallui.CallButtonFragment.Buttons.BUTTON_SWITCH_CAMERA;
+import static com.android.incallui.CallButtonFragment.Buttons.BUTTON_UPGRADE_TO_VIDEO;
 
 import android.content.Context;
+import android.os.Build;
 import android.os.Bundle;
-import android.telecom.CallAudioState;
 import android.telecom.InCallService.VideoCall;
 import android.telecom.VideoProfile;
 
+import com.android.contacts.common.compat.SdkVersionOverride;
+import com.android.dialer.compat.CallAudioStateCompat;
 import com.android.incallui.AudioModeProvider.AudioModeListener;
 import com.android.incallui.InCallCameraManager.Listener;
 import com.android.incallui.InCallPresenter.CanAddCallListener;
+import com.android.incallui.InCallPresenter.InCallDetailsListener;
 import com.android.incallui.InCallPresenter.InCallState;
 import com.android.incallui.InCallPresenter.InCallStateListener;
 import com.android.incallui.InCallPresenter.IncomingCallListener;
-import com.android.incallui.InCallPresenter.InCallDetailsListener;
-
-import java.util.Objects;
 
 /**
  * Logic for call buttons.
@@ -177,7 +186,7 @@
         // an update for onAudioMode().  This will make UI response immediate
         // if it turns out to be slow
 
-        Log.d(this, "Sending new Audio Mode: " + CallAudioState.audioRouteToString(mode));
+        Log.d(this, "Sending new Audio Mode: " + CallAudioStateCompat.audioRouteToString(mode));
         TelecomAdapter.getInstance().setAudioRoute(mode);
     }
 
@@ -186,7 +195,7 @@
      */
     public void toggleSpeakerphone() {
         // this function should not be called if bluetooth is available
-        if (0 != (CallAudioState.ROUTE_BLUETOOTH & getSupportedAudio())) {
+        if (0 != (CallAudioStateCompat.ROUTE_BLUETOOTH & getSupportedAudio())) {
 
             // It's clear the UI is wrong, so update the supported mode once again.
             Log.e(this, "toggling speakerphone not allowed when bluetooth supported.");
@@ -194,11 +203,11 @@
             return;
         }
 
-        int newMode = CallAudioState.ROUTE_SPEAKER;
+        int newMode = CallAudioStateCompat.ROUTE_SPEAKER;
 
         // if speakerphone is already on, change to wired/earpiece
-        if (getAudioMode() == CallAudioState.ROUTE_SPEAKER) {
-            newMode = CallAudioState.ROUTE_WIRED_OR_EARPIECE;
+        if (getAudioMode() == CallAudioStateCompat.ROUTE_SPEAKER) {
+            newMode = CallAudioStateCompat.ROUTE_WIRED_OR_EARPIECE;
         }
 
         setAudioMode(newMode);
@@ -266,7 +275,7 @@
             return;
         }
         int currVideoState = mCall.getVideoState();
-        int currUnpausedVideoState = CallUtils.getUnPausedVideoState(currVideoState);
+        int currUnpausedVideoState = VideoUtils.getUnPausedVideoState(currVideoState);
         currUnpausedVideoState |= VideoProfile.STATE_BIDIRECTIONAL;
 
         VideoProfile videoProfile = new VideoProfile(currUnpausedVideoState);
@@ -356,7 +365,7 @@
         Log.v(this, "updateButtonsState");
         final CallButtonUi ui = getUi();
 
-        final boolean isVideo = CallUtils.isVideoCall(call);
+        final boolean isVideo = VideoUtils.isVideoCall(call);
 
         // Common functionality (audio, hold, etc).
         // Show either HOLD or SWAP, but not both. If neither HOLD or SWAP is available:
@@ -369,12 +378,10 @@
                 && call.can(android.telecom.Call.Details.CAPABILITY_HOLD);
         final boolean isCallOnHold = call.getState() == Call.State.ONHOLD;
 
-        final boolean showAddCall = TelecomAdapter.getInstance().canAddCall();
+        final boolean showAddCall = TelecomAdapter.getInstance().canAddCall(call);
         final boolean showMerge = call.can(
                 android.telecom.Call.Details.CAPABILITY_MERGE_CONFERENCE);
-        final boolean showUpgradeToVideo = !isVideo &&
-                (call.can(android.telecom.Call.Details.CAPABILITY_SUPPORTS_VT_LOCAL_TX)
-                && call.can(android.telecom.Call.Details.CAPABILITY_SUPPORTS_VT_REMOTE_RX));
+        final boolean showUpgradeToVideo = !isVideo && hasVideoCallCapabilities(call);
 
         final boolean showMute = call.can(android.telecom.Call.Details.CAPABILITY_MUTE);
 
@@ -387,12 +394,21 @@
         ui.showButton(BUTTON_UPGRADE_TO_VIDEO, showUpgradeToVideo);
         ui.showButton(BUTTON_SWITCH_CAMERA, isVideo);
         ui.showButton(BUTTON_PAUSE_VIDEO, isVideo);
-        ui.showButton(BUTTON_DIALPAD, !isVideo);
+        ui.showButton(BUTTON_DIALPAD, true);
         ui.showButton(BUTTON_MERGE, showMerge);
 
         ui.updateButtonStates();
     }
 
+    private boolean hasVideoCallCapabilities(Call call) {
+        if (SdkVersionOverride.getSdkVersion(Build.VERSION_CODES.M) >= Build.VERSION_CODES.M) {
+            return call.can(android.telecom.Call.Details.CAPABILITY_SUPPORTS_VT_LOCAL_TX)
+                    && call.can(android.telecom.Call.Details.CAPABILITY_SUPPORTS_VT_REMOTE_RX);
+        }
+        // In L, this single flag represents both video transmitting and receiving capabilities
+        return call.can(android.telecom.Call.Details.CAPABILITY_SUPPORTS_VT_LOCAL_TX);
+    }
+
     public void refreshMuteState() {
         // Restore the previous mute state
         if (mAutomaticallyMuted &&
diff --git a/InCallUI/src/com/android/incallui/CallCardFragment.java b/InCallUI/src/com/android/incallui/CallCardFragment.java
index fb0ef75..dbb2c9d 100644
--- a/InCallUI/src/com/android/incallui/CallCardFragment.java
+++ b/InCallUI/src/com/android/incallui/CallCardFragment.java
@@ -21,15 +21,19 @@
 import android.animation.AnimatorSet;
 import android.animation.ObjectAnimator;
 import android.content.Context;
+import android.graphics.Bitmap;
+import android.graphics.Canvas;
 import android.graphics.drawable.AnimationDrawable;
+import android.graphics.drawable.BitmapDrawable;
 import android.graphics.drawable.Drawable;
 import android.graphics.drawable.GradientDrawable;
 import android.os.Bundle;
-import android.os.Trace;
 import android.os.Handler;
 import android.os.Looper;
+import android.os.Trace;
+import android.support.v4.graphics.drawable.RoundedBitmapDrawable;
+import android.support.v4.graphics.drawable.RoundedBitmapDrawableFactory;
 import android.telecom.DisconnectCause;
-import android.telecom.VideoProfile;
 import android.telephony.PhoneNumberUtils;
 import android.text.TextUtils;
 import android.text.format.DateUtils;
@@ -41,14 +45,17 @@
 import android.view.ViewTreeObserver;
 import android.view.ViewTreeObserver.OnGlobalLayoutListener;
 import android.view.accessibility.AccessibilityEvent;
-import android.view.accessibility.AccessibilityManager;
 import android.view.animation.Animation;
 import android.view.animation.AnimationUtils;
 import android.widget.ImageButton;
 import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.ListAdapter;
+import android.widget.ListView;
 import android.widget.TextView;
 import android.widget.Toast;
 
+import com.android.contacts.common.compat.PhoneNumberUtilsCompat;
 import com.android.contacts.common.util.MaterialColorMapUtils.MaterialPalette;
 import com.android.contacts.common.widget.FloatingActionButtonController;
 import com.android.phone.common.animation.AnimUtils;
@@ -88,6 +95,8 @@
         }
     };
 
+    private static final String IS_DIALPAD_SHOWING_KEY = "is_dialpad_showing";
+
     /**
      * The duration of time (in milliseconds) a call state label should remain visible before
      * resetting to its previous value.
@@ -120,7 +129,6 @@
     private ImageView mHdAudioIcon;
     private ImageView mForwardIcon;
     private View mCallNumberAndLabel;
-    private ImageView mPhoto;
     private TextView mElapsedTime;
     private Drawable mPrimaryPhotoDrawable;
     private TextView mCallSubject;
@@ -130,6 +138,7 @@
     // Container view that houses the primary call information
     private ViewGroup mPrimaryCallInfo;
     private View mCallButtonsContainer;
+    private ImageView mPhotoSmall;
 
     // Secondary caller info
     private View mSecondaryCallInfo;
@@ -140,6 +149,14 @@
     private View mSecondaryCallVideoCallIcon;
     private View mProgressSpinner;
 
+    // Call card content
+    private View mCallCardContent;
+    private ImageView mPhotoLarge;
+    private View mContactContext;
+    private TextView mContactContextTitle;
+    private ListView mContactContextListView;
+    private LinearLayout mContactContextListHeaders;
+
     private View mManageConferenceCallButton;
 
     // Dark number info bar
@@ -166,6 +183,11 @@
     private boolean mCallStateLabelResetPending = false;
     private Handler mHandler;
 
+    /**
+     * Determines if secondary call info is populated in the secondary call info UI.
+     */
+    private boolean mHasSecondaryCallInfo = false;
+
     @Override
     public CallCardPresenter.CallCardUi getUi() {
         return this;
@@ -189,6 +211,10 @@
                 R.dimen.end_call_floating_action_button_diameter);
         mFabSmallDiameter = getResources().getDimensionPixelOffset(
                 R.dimen.end_call_floating_action_button_small_diameter);
+
+        if (savedInstanceState != null) {
+            mIsDialpadShowing = savedInstanceState.getBoolean(IS_DIALPAD_SHOWING_KEY, false);
+        }
     }
 
     @Override
@@ -201,6 +227,12 @@
     }
 
     @Override
+    public void onSaveInstanceState(Bundle outState) {
+        outState.putBoolean(IS_DIALPAD_SHOWING_KEY, mIsDialpadShowing);
+        super.onSaveInstanceState(outState);
+    }
+
+    @Override
     public View onCreateView(LayoutInflater inflater, ViewGroup container,
             Bundle savedInstanceState) {
         Trace.beginSection(TAG + " onCreate");
@@ -223,13 +255,22 @@
         mNumberLabel = (TextView) view.findViewById(R.id.label);
         mSecondaryCallInfo = view.findViewById(R.id.secondary_call_info);
         mSecondaryCallProviderInfo = view.findViewById(R.id.secondary_call_provider_info);
-        mPhoto = (ImageView) view.findViewById(R.id.photo);
-        mPhoto.setOnClickListener(new View.OnClickListener() {
+        mCallCardContent = view.findViewById(R.id.call_card_content);
+        mPhotoLarge = (ImageView) view.findViewById(R.id.photoLarge);
+        mPhotoLarge.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
                 getPresenter().onContactPhotoClick();
             }
         });
+
+        mContactContext = view.findViewById(R.id.contact_context);
+        mContactContextTitle = (TextView) view.findViewById(R.id.contactContextTitle);
+        mContactContextListView = (ListView) view.findViewById(R.id.contactContextInfo);
+        // This layout stores all the list header layouts so they can be easily removed.
+        mContactContextListHeaders = new LinearLayout(getView().getContext());
+        mContactContextListView.addHeaderView(mContactContextListHeaders);
+
         mCallStateIcon = (ImageView) view.findViewById(R.id.callStateIcon);
         mCallStateVideoCallIcon = (ImageView) view.findViewById(R.id.videoCallIcon);
         mCallStateLabel = (TextView) view.findViewById(R.id.callStateLabel);
@@ -241,6 +282,8 @@
         mPrimaryCallCardContainer = view.findViewById(R.id.primary_call_info_container);
         mPrimaryCallInfo = (ViewGroup) view.findViewById(R.id.primary_call_banner);
         mCallButtonsContainer = view.findViewById(R.id.callButtonFragment);
+        mPhotoSmall = (ImageView) view.findViewById(R.id.photoSmall);
+        mPhotoSmall.setVisibility(View.GONE);
         mInCallMessageLabel = (TextView) view.findViewById(R.id.connectionServiceMessage);
         mProgressSpinner = view.findViewById(R.id.progressSpinner);
 
@@ -307,6 +350,26 @@
         mProgressSpinner.setVisibility(visible ? View.VISIBLE : View.GONE);
     }
 
+    @Override
+    public void setContactContextTitle(View headerView) {
+        mContactContextListHeaders.removeAllViews();
+        mContactContextListHeaders.addView(headerView);
+    }
+
+    @Override
+    public void setContactContextContent(ListAdapter listAdapter) {
+        mContactContextListView.setAdapter(listAdapter);
+    }
+
+    @Override
+    public void showContactContext(boolean show) {
+        showImageView(mPhotoLarge, !show);
+        showImageView(mPhotoSmall, show);
+        mPrimaryCallCardContainer.setElevation(
+                show ? 0 : getResources().getDimension(R.dimen.primary_call_elevation));
+        mContactContext.setVisibility(show ? View.VISIBLE : View.GONE);
+    }
+
     /**
      * Sets the visibility of the primary call card.
      * Ensures that when the primary call card is hidden, the video surface slides over to fill the
@@ -316,6 +379,7 @@
      */
     @Override
     public void setCallCardVisible(final boolean visible) {
+        Log.v(this, "setCallCardVisible : isVisible = " + visible);
         // When animating the hide/show of the views in a landscape layout, we need to take into
         // account whether we are in a left-to-right locale or a right-to-left locale and adjust
         // the animations accordingly.
@@ -337,9 +401,7 @@
             @Override
             public boolean onPreDraw() {
                 // We don't want to continue getting called.
-                if (observer.isAlive()) {
-                    observer.removeOnPreDrawListener(this);
-                }
+                getView().getViewTreeObserver().removeOnPreDrawListener(this);
 
                 float videoViewTranslation = 0f;
 
@@ -348,9 +410,8 @@
                     mPrimaryCallCardContainer.setTranslationY(visible ?
                             -mPrimaryCallCardContainer.getHeight() : 0);
 
-                    if (visible) {
-                        videoViewTranslation = videoView.getHeight() / 2 - spaceBesideCallCard / 2;
-                    }
+                    ViewGroup.LayoutParams p = videoView.getLayoutParams();
+                    videoViewTranslation = p.height / 2 - spaceBesideCallCard / 2;
                 }
 
                 // Perform animation of video view.
@@ -359,12 +420,10 @@
                         .setDuration(mVideoAnimationDuration);
                 if (mIsLandscape) {
                     videoViewAnimator
-                            .translationX(videoViewTranslation)
-                            .start();
+                            .translationX(visible ? videoViewTranslation : 0);
                 } else {
                     videoViewAnimator
-                            .translationY(videoViewTranslation)
-                            .start();
+                            .translationY(visible ? videoViewTranslation : 0);
                 }
                 videoViewAnimator.start();
 
@@ -437,7 +496,7 @@
             mPrimaryName.setText(null);
         } else {
             mPrimaryName.setText(nameIsNumber
-                    ? PhoneNumberUtils.createTtsSpannable(name)
+                    ? PhoneNumberUtilsCompat.createTtsSpannable(name)
                     : name);
 
             // Set direction of the name field
@@ -449,10 +508,17 @@
         }
     }
 
+    /**
+     * Sets the primary image for the contact photo.
+     *
+     * @param image The drawable to set.
+     * @param isVisible Whether the contact photo should be visible after being set.
+     */
     @Override
-    public void setPrimaryImage(Drawable image) {
+    public void setPrimaryImage(Drawable image, boolean isVisible) {
         if (image != null) {
-            setDrawableToImageView(mPhoto, image);
+            setDrawableToImageViews(image);
+            showImageView(mPhotoLarge, isVisible);
         }
     }
 
@@ -463,7 +529,7 @@
             mPhoneNumber.setText(null);
             mPhoneNumber.setVisibility(View.GONE);
         } else {
-            mPhoneNumber.setText(PhoneNumberUtils.createTtsSpannable(number));
+            mPhoneNumber.setText(PhoneNumberUtilsCompat.createTtsSpannable(number));
             mPhoneNumber.setVisibility(View.VISIBLE);
             mPhoneNumber.setTextDirection(View.TEXT_DIRECTION_LTR);
         }
@@ -480,9 +546,21 @@
 
     }
 
+    /**
+     * Sets the primary caller information.
+     *
+     * @param number The caller phone number.
+     * @param name The caller name.
+     * @param nameIsNumber {@code true} if the name should be shown in place of the phone number.
+     * @param label The label.
+     * @param photo The contact photo drawable.
+     * @param isSipCall {@code true} if this is a SIP call.
+     * @param isContactPhotoShown {@code true} if the contact photo should be shown (it will be
+     *      updated even if it is not shown).
+     */
     @Override
     public void setPrimary(String number, String name, boolean nameIsNumber, String label,
-            Drawable photo, boolean isSipCall) {
+            Drawable photo, boolean isSipCall, boolean isContactPhotoShown) {
         Log.d(this, "Setting primary call");
         // set the name field.
         setPrimaryName(name, nameIsNumber);
@@ -502,26 +580,28 @@
 
         showInternetCallLabel(isSipCall);
 
-        setDrawableToImageView(mPhoto, photo);
+        setDrawableToImageViews(photo);
+        showImageView(mPhotoLarge, isContactPhotoShown);
     }
 
     @Override
     public void setSecondary(boolean show, String name, boolean nameIsNumber, String label,
-            String providerLabel, boolean isConference, boolean isVideoCall) {
-
-        if (show != mSecondaryCallInfo.isShown()) {
-            updateFabPositionForSecondaryCallInfo();
-        }
+            String providerLabel, boolean isConference, boolean isVideoCall, boolean isFullscreen) {
 
         if (show) {
+            mHasSecondaryCallInfo = true;
             boolean hasProvider = !TextUtils.isEmpty(providerLabel);
-            showAndInitializeSecondaryCallInfo(hasProvider);
+            initializeSecondaryCallInfo(hasProvider);
+
+            // Do not show the secondary caller info in fullscreen mode, but ensure it is populated
+            // in case fullscreen mode is exited in the future.
+            setSecondaryInfoVisible(!isFullscreen);
 
             mSecondaryCallConferenceCallIcon.setVisibility(isConference ? View.VISIBLE : View.GONE);
             mSecondaryCallVideoCallIcon.setVisibility(isVideoCall ? View.VISIBLE : View.GONE);
 
             mSecondaryCallName.setText(nameIsNumber
-                    ? PhoneNumberUtils.createTtsSpannable(name)
+                    ? PhoneNumberUtilsCompat.createTtsSpannable(name)
                     : name);
             if (hasProvider) {
                 mSecondaryCallProviderLabel.setText(providerLabel);
@@ -533,10 +613,92 @@
             }
             mSecondaryCallName.setTextDirection(nameDirection);
         } else {
-            mSecondaryCallInfo.setVisibility(View.GONE);
+            mHasSecondaryCallInfo = false;
+            setSecondaryInfoVisible(false);
         }
     }
 
+    /**
+     * Sets the visibility of the secondary caller info box.  Note, if the {@code visible} parameter
+     * is passed in {@code true}, and there is no secondary caller info populated (as determined by
+     * {@code mHasSecondaryCallInfo}, the secondary caller info box will not be shown.
+     *
+     * @param visible {@code true} if the secondary caller info should be shown, {@code false}
+     *      otherwise.
+     */
+    @Override
+    public void setSecondaryInfoVisible(final boolean visible) {
+        boolean wasVisible = mSecondaryCallInfo.isShown();
+        final boolean isVisible = visible && mHasSecondaryCallInfo;
+        Log.v(this, "setSecondaryInfoVisible: wasVisible = " + wasVisible + " isVisible = "
+                + isVisible);
+
+        // If visibility didn't change, nothing to do.
+        if (wasVisible == isVisible) {
+            return;
+        }
+
+        // If we are showing the secondary info, we need to show it before animating so that its
+        // height will be determined on layout.
+        if (isVisible) {
+            mSecondaryCallInfo.setVisibility(View.VISIBLE);
+        }
+
+        updateFabPositionForSecondaryCallInfo();
+        // We need to translate the secondary caller info, but we need to know its position after
+        // the layout has occurred so use a {@code ViewTreeObserver}.
+        final ViewTreeObserver observer = getView().getViewTreeObserver();
+
+        observer.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
+            @Override
+            public boolean onPreDraw() {
+                // We don't want to continue getting called.
+                getView().getViewTreeObserver().removeOnPreDrawListener(this);
+
+                // Get the height of the secondary call info now, and then re-hide the view prior
+                // to doing the actual animation.
+                int secondaryHeight = mSecondaryCallInfo.getHeight();
+                if (isVisible) {
+                    mSecondaryCallInfo.setVisibility(View.GONE);
+                }
+                Log.v(this, "setSecondaryInfoVisible: secondaryHeight = " + secondaryHeight);
+
+                // Set the position of the secondary call info card to its starting location.
+                mSecondaryCallInfo.setTranslationY(visible ? secondaryHeight : 0);
+
+                // Animate the secondary card info slide up/down as it appears and disappears.
+                ViewPropertyAnimator secondaryInfoAnimator = mSecondaryCallInfo.animate()
+                        .setInterpolator(AnimUtils.EASE_OUT_EASE_IN)
+                        .setDuration(mVideoAnimationDuration)
+                        .translationY(isVisible ? 0 : secondaryHeight)
+                        .setListener(new AnimatorListenerAdapter() {
+                            @Override
+                            public void onAnimationEnd(Animator animation) {
+                                if (!isVisible) {
+                                    mSecondaryCallInfo.setVisibility(View.GONE);
+                                }
+                            }
+
+                            @Override
+                            public void onAnimationStart(Animator animation) {
+                                if (isVisible) {
+                                    mSecondaryCallInfo.setVisibility(View.VISIBLE);
+                                }
+                            }
+                        });
+                secondaryInfoAnimator.start();
+
+                // Notify listeners of a change in the visibility of the secondary info. This is
+                // important when in a video call so that the video call presenter can shift the
+                // video preview up or down to accommodate the secondary caller info.
+                InCallPresenter.getInstance().notifySecondaryCallerInfoVisibilityChanged(visible,
+                        secondaryHeight);
+
+                return true;
+            }
+        });
+    }
+
     @Override
     public void setCallState(
             int state,
@@ -558,6 +720,12 @@
         Log.v(this, "DisconnectCause " + disconnectCause.toString());
         Log.v(this, "gateway " + connectionLabel + gatewayNumber);
 
+        // Check for video state change and update the visibility of the contact photo.  The contact
+        // photo is hidden when the incoming video surface is shown.
+        // The contact photo visibility can also change in setPrimary().
+        boolean showContactPhoto = !VideoCallPresenter.showIncomingVideo(videoState, state);
+        mPhotoLarge.setVisibility(showContactPhoto ? View.VISIBLE : View.GONE);
+
         // Check if the call subject is showing -- if it is, we want to bypass showing the call
         // state.
         boolean isSubjectShowing = mCallSubject.getVisibility() == View.VISIBLE;
@@ -616,7 +784,7 @@
             mCallStateIcon.setVisibility(View.GONE);
         }
 
-        if (CallUtils.isVideoCall(videoState)
+        if (VideoUtils.isVideoCall(videoState)
                 || (state == Call.State.ACTIVE && sessionModificationState
                         == Call.SessionModificationState.WAITING_FOR_RESPONSE)) {
             mCallStateVideoCallIcon.setVisibility(View.VISIBLE);
@@ -743,28 +911,84 @@
         }
     }
 
-    private void setDrawableToImageView(ImageView view, Drawable photo) {
+    /**
+     * Set all the ImageViews to the same photo. Currently there are 2 photo views: the large one
+     * (which fills about the bottom half of the screen) and the small one, which displays as a
+     * circle next to the primary contact info. This method does not handle whether the ImageView
+     * is shown or not.
+     *
+     * @param photo The photo to set for the image views.
+     */
+    private void setDrawableToImageViews(Drawable photo) {
         if (photo == null) {
-            photo = ContactInfoCache.getInstance(
-                    view.getContext()).getDefaultContactPhotoDrawable();
+            photo = ContactInfoCache.getInstance(getView().getContext())
+                            .getDefaultContactPhotoDrawable();
         }
 
-        if (mPrimaryPhotoDrawable == photo) {
+        if (mPrimaryPhotoDrawable == photo){
             return;
         }
         mPrimaryPhotoDrawable = photo;
 
-        final Drawable current = view.getDrawable();
-        if (current == null) {
-            view.setImageDrawable(photo);
-            AnimUtils.fadeIn(mElapsedTime, AnimUtils.DEFAULT_DURATION);
-        } else {
-            // Cross fading is buggy and not noticable due to the multiple calls to this method
-            // that switch drawables in the middle of the cross-fade animations. Just set the
-            // photo directly instead.
-            view.setImageDrawable(photo);
-            view.setVisibility(View.VISIBLE);
+        mPhotoLarge.setImageDrawable(photo);
+
+        // Modify the drawable to be round for the smaller ImageView.
+        Bitmap bitmap = drawableToBitmap(photo);
+        if (bitmap != null) {
+            final RoundedBitmapDrawable drawable =
+                    RoundedBitmapDrawableFactory.create(getResources(), bitmap);
+            drawable.setAntiAlias(true);
+            drawable.setCornerRadius(bitmap.getHeight() / 2);
+            photo = drawable;
         }
+        mPhotoSmall.setImageDrawable(photo);
+    }
+
+    /**
+     * Helper method for image view to handle animations.
+     *
+     * @param view The image view to show or hide.
+     * @param isVisible {@code true} if we want to show the image, {@code false} to hide it.
+     */
+    private void showImageView(ImageView view, boolean isVisible) {
+        if (view.getDrawable() == null) {
+            if (isVisible) {
+                AnimUtils.fadeIn(mElapsedTime, AnimUtils.DEFAULT_DURATION);
+            }
+        } else {
+            // Cross fading is buggy and not noticeable due to the multiple calls to this method
+            // that switch drawables in the middle of the cross-fade animations. Just show the
+            // photo directly instead.
+            view.setVisibility(isVisible ? View.VISIBLE : View.GONE);
+        }
+    }
+
+    /**
+     * Converts a drawable into a bitmap.
+     *
+     * @param drawable the drawable to be converted.
+     */
+    public static Bitmap drawableToBitmap(Drawable drawable) {
+        Bitmap bitmap;
+        if (drawable instanceof BitmapDrawable) {
+            bitmap = ((BitmapDrawable) drawable).getBitmap();
+        } else {
+            if (drawable.getIntrinsicWidth() <= 0 || drawable.getIntrinsicHeight() <= 0) {
+                // Needed for drawables that are just a colour.
+                bitmap = Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888);
+            } else {
+                bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(),
+                        drawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);
+            }
+
+            Log.i(TAG, "Created bitmap with width " + bitmap.getWidth() + ", height "
+                    + bitmap.getHeight());
+
+            Canvas canvas = new Canvas(bitmap);
+            drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
+            drawable.draw(canvas);
+        }
+        return bitmap;
     }
 
     /**
@@ -812,7 +1036,7 @@
                 } else if (sessionModificationState
                         == Call.SessionModificationState.RECEIVED_UPGRADE_TO_VIDEO_REQUEST) {
                     callStateLabel = context.getString(R.string.card_title_video_call_requesting);
-                } else if (CallUtils.isVideoCall(videoState)) {
+                } else if (VideoUtils.isVideoCall(videoState)) {
                     callStateLabel = context.getString(R.string.card_title_video_call);
                 }
                 break;
@@ -836,8 +1060,7 @@
                     callStateLabel = label;
                 } else if (isAccount) {
                     callStateLabel = context.getString(R.string.incoming_via_template, label);
-                } else if (VideoProfile.isTransmissionEnabled(videoState) ||
-                        VideoProfile.isReceptionEnabled(videoState)) {
+                } else if (VideoUtils.isVideoCall(videoState)) {
                     callStateLabel = context.getString(R.string.notification_incoming_video_call);
                 } else {
                     callStateLabel = context.getString(R.string.card_title_incoming_call);
@@ -867,9 +1090,7 @@
         return new CallStateLabel(callStateLabel, isAutoDismissing);
     }
 
-    private void showAndInitializeSecondaryCallInfo(boolean hasProvider) {
-        mSecondaryCallInfo.setVisibility(View.VISIBLE);
-
+    private void initializeSecondaryCallInfo(boolean hasProvider) {
         // mSecondaryCallName is initialized here (vs. onViewCreated) because it is inaccessible
         // until mSecondaryCallInfo is inflated in the call above.
         if (mSecondaryCallName == null) {
@@ -1013,6 +1234,8 @@
         }
         mCallButtonsContainer.setBackgroundColor(themeColors.mPrimaryColor);
         mCallSubject.setTextColor(themeColors.mPrimaryColor);
+        mContactContext.setBackgroundColor(themeColors.mPrimaryColor);
+        //TODO: set color of message text in call context "recent messages" to be the theme color.
 
         mCurrentThemeColors = themeColors;
     }
@@ -1108,8 +1331,7 @@
         }
 
         mFloatingActionButtonController.align(
-                mIsLandscape ? FloatingActionButtonController.ALIGN_QUARTER_END
-                        : FloatingActionButtonController.ALIGN_MIDDLE,
+                FloatingActionButtonController.ALIGN_MIDDLE,
                 0 /* offsetX */,
                 offsetY,
                 true);
@@ -1119,6 +1341,11 @@
     }
 
     @Override
+    public Context getContext() {
+        return getActivity();
+    }
+
+    @Override
     public void onResume() {
         super.onResume();
         // If the previous launch animation is still running, cancel it so that we don't get
diff --git a/InCallUI/src/com/android/incallui/CallCardPresenter.java b/InCallUI/src/com/android/incallui/CallCardPresenter.java
index 7833340..0b17e1a 100644
--- a/InCallUI/src/com/android/incallui/CallCardPresenter.java
+++ b/InCallUI/src/com/android/incallui/CallCardPresenter.java
@@ -16,9 +16,9 @@
 
 package com.android.incallui;
 
+import com.google.common.base.Preconditions;
+
 import android.Manifest;
-import android.app.Activity;
-import android.app.FragmentManager;
 import android.content.Context;
 import android.content.Intent;
 import android.content.pm.ApplicationInfo;
@@ -35,8 +35,14 @@
 import android.telecom.VideoProfile;
 import android.telephony.PhoneNumberUtils;
 import android.text.TextUtils;
+import android.view.View;
 import android.view.accessibility.AccessibilityManager;
+import android.widget.ListAdapter;
 
+import com.android.contacts.common.compat.telecom.TelecomManagerCompat;
+import com.android.contacts.common.preference.ContactsPreferences;
+import com.android.contacts.common.util.ContactDisplayUtils;
+import com.android.incallui.Call.State;
 import com.android.incallui.ContactInfoCache.ContactCacheEntry;
 import com.android.incallui.ContactInfoCache.ContactInfoCacheCallback;
 import com.android.incallui.InCallPresenter.InCallDetailsListener;
@@ -44,12 +50,11 @@
 import com.android.incallui.InCallPresenter.InCallState;
 import com.android.incallui.InCallPresenter.InCallStateListener;
 import com.android.incallui.InCallPresenter.IncomingCallListener;
+import com.android.incallui.compat.telecom.DetailsCompat;
 import com.android.incalluibind.ObjectFactory;
 
 import java.lang.ref.WeakReference;
 
-import com.google.common.base.Preconditions;
-
 /**
  * Presenter for the Call Card Fragment.
  * <p>
@@ -57,7 +62,7 @@
  */
 public class CallCardPresenter extends Presenter<CallCardPresenter.CallCardUi>
         implements InCallStateListener, IncomingCallListener, InCallDetailsListener,
-        InCallEventListener, CallList.CallUpdateListener {
+        InCallEventListener, CallList.CallUpdateListener, DistanceHelper.Listener {
 
     public interface EmergencyCallListener {
         public void onCallUpdated(BaseFragment fragment, boolean isEmergency);
@@ -68,6 +73,7 @@
 
     private final EmergencyCallListener mEmergencyCallListener =
             ObjectFactory.newEmergencyCallListener();
+    private DistanceHelper mDistanceHelper;
 
     private Call mPrimary;
     private Call mSecondary;
@@ -75,8 +81,11 @@
     private ContactCacheEntry mSecondaryContactInfo;
     private CallTimer mCallTimer;
     private Context mContext;
+    private ContactsPreferences mContactsPreferences;
     private boolean mSpinnerShowing = false;
     private boolean mHasShownToast = false;
+    private InCallContactInteractions mInCallContactInteractions;
+    private boolean mIsFullscreen = false;
 
     public static class ContactLookupCallback implements ContactInfoCacheCallback {
         private final WeakReference<CallCardPresenter> mCallCardPresenter;
@@ -103,6 +112,13 @@
             }
         }
 
+        @Override
+        public void onContactInteractionsInfoComplete(String callId, ContactCacheEntry entry) {
+            CallCardPresenter presenter = mCallCardPresenter.get();
+            if (presenter != null) {
+                presenter.onContactInteractionsInfoComplete(callId, entry);
+            }
+        }
     }
 
     public CallCardPresenter() {
@@ -117,6 +133,8 @@
 
     public void init(Context context, Call call) {
         mContext = Preconditions.checkNotNull(context);
+        mDistanceHelper = ObjectFactory.newDistanceHelper(mContext, this);
+        mContactsPreferences = new ContactsPreferences(mContext);
 
         // Call may be null if disconnect happened already.
         if (call != null) {
@@ -144,6 +162,10 @@
     public void onUiReady(CallCardUi ui) {
         super.onUiReady(ui);
 
+        if (mContactsPreferences != null) {
+            mContactsPreferences.refreshValue(ContactsPreferences.DISPLAY_ORDER_KEY);
+        }
+
         // Contact search may have completed before ui is ready.
         if (mPrimaryContactInfo != null) {
             updatePrimaryDisplayInfo();
@@ -169,6 +191,10 @@
             CallList.getInstance().removeCallUpdateListener(mPrimary.getId(), this);
         }
 
+        if (mDistanceHelper != null) {
+            mDistanceHelper.cleanUp();
+        }
+
         mPrimary = null;
         mPrimaryContactInfo = null;
         mSecondaryContactInfo = null;
@@ -207,6 +233,11 @@
             secondary = getCallToDisplay(callList, primary, true);
         }
 
+        if (mInCallContactInteractions != null &&
+                (oldState == InCallState.INCOMING || newState == InCallState.INCOMING)) {
+            ui.showContactContext(newState != InCallState.INCOMING);
+        }
+
         Log.d(this, "Primary call: " + primary);
         Log.d(this, "Secondary call: " + secondary);
 
@@ -303,7 +334,7 @@
         updatePrimaryCallState();
 
         if (call.can(Details.CAPABILITY_MANAGE_CONFERENCE) !=
-                Details.can(details.getCallCapabilities(), Details.CAPABILITY_MANAGE_CONFERENCE)) {
+                DetailsCompat.can(details, Details.CAPABILITY_MANAGE_CONFERENCE)) {
             maybeShowManageConferenceCallButton();
         }
     }
@@ -367,7 +398,7 @@
         PhoneAccountHandle accountHandle = mPrimary.getAccountHandle();
         if (accountHandle != null) {
             TelecomManager mgr = InCallPresenter.getInstance().getTelecomManager();
-            PhoneAccount account = mgr.getPhoneAccount(accountHandle);
+            PhoneAccount account = TelecomManagerCompat.getPhoneAccount(mgr, accountHandle);
             if (account != null) {
                 return getNumberFromHandle(account.getSubscriptionAddress());
             }
@@ -455,7 +486,7 @@
         if (mPrimary.isEmergencyCall() || showCallbackNumber) {
             callbackNumber = getSubscriptionNumber();
         } else {
-            StatusHints statusHints = mPrimary.getTelecommCall().getDetails().getStatusHints();
+            StatusHints statusHints = mPrimary.getTelecomCall().getDetails().getStatusHints();
             if (statusHints != null) {
                 Bundle extras = statusHints.getExtras();
                 if (extras != null) {
@@ -464,8 +495,10 @@
             }
         }
 
-        TelecomManager mgr = InCallPresenter.getInstance().getTelecomManager();
-        String simNumber = mgr.getLine1Number(mPrimary.getAccountHandle());
+        final String simNumber = TelecomManagerCompat.getLine1Number(
+                InCallPresenter.getInstance().getTelecomManager(),
+                InCallPresenter.getInstance().getTelephonyManager(),
+                mPrimary.getAccountHandle());
         if (!showCallbackNumber && PhoneNumberUtils.compare(callbackNumber, simNumber)) {
             Log.d(this, "Numbers are the same (and callback number is not being forced to show);" +
                     " not showing the callback number");
@@ -535,8 +568,9 @@
             Log.w(this, "Dropping stale contact lookup info for " + callId);
         }
 
-        if (entry.name != null) {
-            Log.d(TAG, "Contact found: " + entry);
+        final Call call = CallList.getInstance().getCallById(callId);
+        if (call != null) {
+            call.getLogState().contactLookupResult = entry.contactLookupResult;
         }
         if (entry.contactUri != null) {
             CallerInfoUtils.sendViewNotification(mContext, entry.contactUri);
@@ -550,11 +584,72 @@
 
         if (entry.photo != null) {
             if (mPrimary != null && callId.equals(mPrimary.getId())) {
-                getUi().setPrimaryImage(entry.photo);
+                boolean showContactPhoto = !VideoCallPresenter.showIncomingVideo(
+                        mPrimary.getVideoState(), mPrimary.getState());
+                getUi().setPrimaryImage(entry.photo, showContactPhoto);
             }
         }
     }
 
+    private void onContactInteractionsInfoComplete(String callId, ContactCacheEntry entry) {
+        if (getUi() == null) {
+            return;
+        }
+
+        if (mPrimary != null && callId.equals(mPrimary.getId())) {
+            mPrimaryContactInfo.locationAddress = entry.locationAddress;
+            updateContactInteractions();
+        }
+    }
+
+    @Override
+    public void onLocationReady() {
+        // This will only update the contacts interactions data if the location returns after
+        // the contact information is found.
+        updateContactInteractions();
+    }
+
+    private void updateContactInteractions() {
+        if (mPrimary != null && mPrimaryContactInfo != null
+                && (mPrimaryContactInfo.locationAddress != null
+                        || mPrimaryContactInfo.openingHours != null)) {
+            // TODO: This is hardcoded to "isBusiness" because functionality to differentiate
+            // between business and personal has not yet been added.
+            if (setInCallContactInteractionsType(true /* isBusiness */)) {
+                getUi().setContactContextTitle(
+                        mInCallContactInteractions.getBusinessListHeaderView());
+            }
+
+            mInCallContactInteractions.setBusinessInfo(
+                    mPrimaryContactInfo.locationAddress,
+                    mDistanceHelper.calculateDistance(mPrimaryContactInfo.locationAddress),
+                    mPrimaryContactInfo.openingHours);
+            getUi().setContactContextContent(mInCallContactInteractions.getListAdapter());
+            getUi().showContactContext(mPrimary.getState() != State.INCOMING);
+        } else {
+            getUi().showContactContext(false);
+        }
+    }
+
+    /**
+     * Update the contact interactions type so that the correct UI is shown.
+     *
+     * @param isBusiness {@code true} if the interaction is a business interaction, {@code false} if
+     * it is a personal contact.
+     *
+     * @return {@code true} if this is a new type of contact interaction (business or personal).
+     * {@code false} if it hasn't changed.
+     */
+    private boolean setInCallContactInteractionsType(boolean isBusiness) {
+        if (mInCallContactInteractions == null) {
+            mInCallContactInteractions =
+                    new InCallContactInteractions(mContext, isBusiness);
+            return true;
+        }
+
+        return mInCallContactInteractions.switchContactType(isBusiness);
+    }
+
     private void updateContactEntry(ContactCacheEntry entry, boolean isPrimary) {
         if (isPrimary) {
             mPrimaryContactInfo = entry;
@@ -574,7 +669,6 @@
      * @param ignore A call to ignore if found.
      */
     private Call getCallToDisplay(CallList callList, Call ignore, boolean skipDisconnected) {
-
         // Active calls come second.  An active call always gets precedent.
         Call retval = callList.getActiveCall();
         if (retval != null && retval != ignore) {
@@ -618,10 +712,15 @@
 
         if (mPrimary == null) {
             // Clear the primary display info.
-            ui.setPrimary(null, null, false, null, null, false);
+            ui.setPrimary(null, null, false, null, null, false, false);
             return;
         }
 
+        // Hide the contact photo if we are in a video call and the incoming video surface is
+        // showing.
+        boolean showContactPhoto = !VideoCallPresenter
+                .showIncomingVideo(mPrimary.getVideoState(), mPrimary.getState());
+
         if (mPrimary.isConferenceCall()) {
             Log.d(TAG, "Update primary display info for conference call.");
 
@@ -631,7 +730,8 @@
                     false /* nameIsNumber */,
                     null /* label */,
                     getConferencePhoto(mPrimary),
-                    false /* isSipCall */);
+                    false /* isSipCall */,
+                    showContactPhoto);
         } else if (mPrimaryContactInfo != null) {
             Log.d(TAG, "Update primary display info for " + mPrimaryContactInfo);
 
@@ -669,10 +769,13 @@
                     nameIsNumber,
                     isChildNumberShown || isCallSubjectShown ? null : mPrimaryContactInfo.label,
                     mPrimaryContactInfo.photo,
-                    mPrimaryContactInfo.isSipCall);
+                    mPrimaryContactInfo.isSipCall,
+                    showContactPhoto);
+
+            updateContactInteractions();
         } else {
             // Clear the primary display info.
-            ui.setPrimary(null, null, false, null, null, false);
+            ui.setPrimary(null, null, false, null, null, false, false);
         }
 
         if (mEmergencyCallListener != null) {
@@ -690,7 +793,7 @@
         if (mSecondary == null) {
             // Clear the secondary display info.
             ui.setSecondary(false, null, false, null, null, false /* isConference */,
-                    false /* isVideoCall */);
+                    false /* isVideoCall */, mIsFullscreen);
             return;
         }
 
@@ -702,7 +805,8 @@
                     null /* label */,
                     getCallProviderLabel(mSecondary),
                     true /* isConference */,
-                    mSecondary.isVideoCall(mContext));
+                    mSecondary.isVideoCall(mContext),
+                    mIsFullscreen);
         } else if (mSecondaryContactInfo != null) {
             Log.d(TAG, "updateSecondaryDisplayInfo() " + mSecondaryContactInfo);
             String name = getNameForCall(mSecondaryContactInfo);
@@ -714,11 +818,12 @@
                     mSecondaryContactInfo.label,
                     getCallProviderLabel(mSecondary),
                     false /* isConference */,
-                    mSecondary.isVideoCall(mContext));
+                    mSecondary.isVideoCall(mContext),
+                    mIsFullscreen);
         } else {
             // Clear the secondary display info.
             ui.setSecondary(false, null, false, null, null, false /* isConference */,
-                    false /* isVideoCall */);
+                    false /* isVideoCall */, mIsFullscreen);
         }
     }
 
@@ -731,7 +836,9 @@
         if (accountHandle == null) {
             return null;
         }
-        return InCallPresenter.getInstance().getTelecomManager().getPhoneAccount(accountHandle);
+        return TelecomManagerCompat.getPhoneAccount(
+                InCallPresenter.getInstance().getTelecomManager(),
+                accountHandle);
     }
 
     /**
@@ -751,7 +858,7 @@
         PhoneAccount account = getAccountForCall(call);
         TelecomManager mgr = InCallPresenter.getInstance().getTelecomManager();
         if (account != null && !TextUtils.isEmpty(account.getLabel())
-                && mgr.getCallCapablePhoneAccounts().size() > 1) {
+                && TelecomManagerCompat.getCallCapablePhoneAccounts(mgr).size() > 1) {
             return account.getLabel().toString();
         }
         return null;
@@ -762,7 +869,7 @@
      * For example, "calling via [Account/Google Voice]" for outgoing calls.
      */
     private String getConnectionLabel() {
-        StatusHints statusHints = mPrimary.getTelecommCall().getDetails().getStatusHints();
+        StatusHints statusHints = mPrimary.getTelecomCall().getDetails().getStatusHints();
         if (statusHints != null && !TextUtils.isEmpty(statusHints.getLabel())) {
             return statusHints.getLabel().toString();
         }
@@ -784,7 +891,7 @@
 
     private Drawable getCallStateIcon() {
         // Return connection icon if one exists.
-        StatusHints statusHints = mPrimary.getTelecommCall().getDetails().getStatusHints();
+        StatusHints statusHints = mPrimary.getTelecomCall().getDetails().getStatusHints();
         if (statusHints != null && statusHints.getIcon() != null) {
             Drawable icon = statusHints.getIcon().loadDrawable(mContext);
             if (icon != null) {
@@ -811,20 +918,27 @@
     /**
      * Gets the name to display for the call.
      */
-    private static String getNameForCall(ContactCacheEntry contactInfo) {
-        if (TextUtils.isEmpty(contactInfo.name)) {
+    private String getNameForCall(ContactCacheEntry contactInfo) {
+        String preferredName = ContactDisplayUtils.getPreferredDisplayName(
+                contactInfo.namePrimary,
+                contactInfo.nameAlternative,
+                mContactsPreferences.getDisplayOrder());
+        if (TextUtils.isEmpty(preferredName)) {
             return contactInfo.number;
         }
-        return contactInfo.name;
+        return preferredName;
     }
 
     /**
      * Gets the number to display for a call.
      */
-    private static String getNumberForCall(ContactCacheEntry contactInfo) {
+    private String getNumberForCall(ContactCacheEntry contactInfo) {
         // If the name is empty, we use the number for the name...so dont show a second
         // number in the number field
-        if (TextUtils.isEmpty(contactInfo.name)) {
+        if (TextUtils.isEmpty(ContactDisplayUtils.getPreferredDisplayName(
+                contactInfo.namePrimary,
+                contactInfo.nameAlternative,
+                mContactsPreferences.getDisplayOrder()))) {
             return contactInfo.location;
         }
         return contactInfo.number;
@@ -863,11 +977,18 @@
      */
     @Override
     public void onFullscreenModeChanged(boolean isFullscreenMode) {
+        mIsFullscreen = isFullscreenMode;
         final CallCardUi ui = getUi();
         if (ui == null) {
             return;
         }
         ui.setCallCardVisible(!isFullscreenMode);
+        ui.setSecondaryInfoVisible(!isFullscreenMode);
+    }
+
+    @Override
+    public void onSecondaryCallerInfoVisibilityChanged(boolean isVisible, int height) {
+        // No-op - the Call Card is the origin of this event.
     }
 
     private boolean isPrimaryCallActive() {
@@ -954,26 +1075,34 @@
      * @return {@code true} if the toast should be shown, {@code false} otherwise.
      */
     private boolean shouldShowNoteSentToast(Call call) {
-        return call != null && !TextUtils
-                .isEmpty(call.getTelecommCall().getDetails().getIntentExtras().getString(
-                        TelecomManager.EXTRA_CALL_SUBJECT)) &&
-                (call.getState() == Call.State.DIALING || call.getState() == Call.State.CONNECTING);
+        return call != null && hasCallSubject(call) && (call.getState() == Call.State.DIALING
+                || call.getState() == Call.State.CONNECTING);
+    }
+
+    private static boolean hasCallSubject(Call call) {
+        return !TextUtils.isEmpty(DetailsCompat.getIntentExtras(
+                call.getTelecomCall().getDetails()).getString(TelecomManager.EXTRA_CALL_SUBJECT));
     }
 
     public interface CallCardUi extends Ui {
         void setVisible(boolean on);
+        void setContactContextTitle(View listHeaderView);
+        void setContactContextContent(ListAdapter listAdapter);
+        void showContactContext(boolean show);
         void setCallCardVisible(boolean visible);
         void setPrimary(String number, String name, boolean nameIsNumber, String label,
-                Drawable photo, boolean isSipCall);
+                Drawable photo, boolean isSipCall, boolean isContactPhotoShown);
         void setSecondary(boolean show, String name, boolean nameIsNumber, String label,
-                String providerLabel, boolean isConference, boolean isVideoCall);
+                String providerLabel, boolean isConference, boolean isVideoCall,
+                boolean isFullscreen);
+        void setSecondaryInfoVisible(boolean visible);
         void setCallState(int state, int videoState, int sessionModificationState,
                 DisconnectCause disconnectCause, String connectionLabel,
                 Drawable connectionIcon, String gatewayNumber, boolean isWifi,
                 boolean isConference);
         void setPrimaryCallElapsedTime(boolean show, long duration);
         void setPrimaryName(String name, boolean nameIsNumber);
-        void setPrimaryImage(Drawable image);
+        void setPrimaryImage(Drawable image, boolean isVisible);
         void setPrimaryPhoneNumber(String phoneNumber);
         void setPrimaryLabel(String label);
         void setEndCallButtonEnabled(boolean enabled, boolean animate);
diff --git a/InCallUI/src/com/android/incallui/CallList.java b/InCallUI/src/com/android/incallui/CallList.java
index 11b5914..99def36 100644
--- a/InCallUI/src/com/android/incallui/CallList.java
+++ b/InCallUI/src/com/android/incallui/CallList.java
@@ -23,6 +23,10 @@
 import android.telecom.PhoneAccount;
 
 import com.android.contacts.common.testing.NeededForTesting;
+import com.android.dialer.database.FilteredNumberAsyncQueryHandler;
+import com.android.dialer.logging.Logger;
+import com.android.incallui.util.TelecomCallUtil;
+
 import com.google.common.base.Preconditions;
 import com.google.common.collect.Maps;
 
@@ -33,6 +37,7 @@
 import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.concurrent.atomic.AtomicBoolean;
 
 /**
  * Maintains the list of active calls and notifies interested classes of changes to the call list
@@ -46,11 +51,12 @@
     private static final int DISCONNECTED_CALL_LONG_TIMEOUT_MS = 5000;
 
     private static final int EVENT_DISCONNECTED_TIMEOUT = 1;
+    private static final long BLOCK_QUERY_TIMEOUT_MS = 1000;
 
     private static CallList sInstance = new CallList();
 
     private final HashMap<String, Call> mCallById = new HashMap<>();
-    private final HashMap<android.telecom.Call, Call> mCallByTelecommCall = new HashMap<>();
+    private final HashMap<android.telecom.Call, Call> mCallByTelecomCall = new HashMap<>();
     private final HashMap<String, List<String>> mCallTextReponsesMap = Maps.newHashMap();
     /**
      * ConcurrentHashMap constructor params: 8 is initial table size, 0.9f is
@@ -63,6 +69,7 @@
             .newHashMap();
     private final Set<Call> mPendingDisconnectCalls = Collections.newSetFromMap(
             new ConcurrentHashMap<Call, Boolean>(8, 0.9f, 1));
+    private FilteredNumberAsyncQueryHandler mFilteredQueryHandler;
 
     /**
      * Static singleton accessor method.
@@ -79,22 +86,26 @@
     CallList() {
     }
 
-    public void onCallAdded(android.telecom.Call telecommCall) {
+    public void onCallAdded(final android.telecom.Call telecomCall) {
         Trace.beginSection("onCallAdded");
-        Call call = new Call(telecommCall);
+        final Call call = new Call(telecomCall);
         Log.d(this, "onCallAdded: callState=" + call.getState());
+
         if (call.getState() == Call.State.INCOMING ||
                 call.getState() == Call.State.CALL_WAITING) {
             onIncoming(call, call.getCannedSmsResponses());
         } else {
             onUpdate(call);
         }
+
+        call.logCallInitiationType();
         Trace.endSection();
     }
 
-    public void onCallRemoved(android.telecom.Call telecommCall) {
-        if (mCallByTelecommCall.containsKey(telecommCall)) {
-            Call call = mCallByTelecommCall.get(telecommCall);
+    public void onCallRemoved(android.telecom.Call telecomCall) {
+        if (mCallByTelecomCall.containsKey(telecomCall)) {
+            Call call = mCallByTelecomCall.get(telecomCall);
+            Logger.logCall(call);
             if (updateCallInMap(call)) {
                 Log.w(this, "Removing call not previously disconnected " + call.getId());
             }
@@ -367,8 +378,8 @@
         return mCallById.get(callId);
     }
 
-    public Call getCallByTelecommCall(android.telecom.Call telecommCall) {
-        return mCallByTelecommCall.get(telecommCall);
+    public Call getCallByTelecomCall(android.telecom.Call telecomCall) {
+        return mCallByTelecomCall.get(telecomCall);
     }
 
     public List<String> getTextResponses(String callId) {
@@ -488,16 +499,16 @@
                 mPendingDisconnectCalls.add(call);
 
                 mCallById.put(call.getId(), call);
-                mCallByTelecommCall.put(call.getTelecommCall(), call);
+                mCallByTelecomCall.put(call.getTelecomCall(), call);
                 updated = true;
             }
         } else if (!isCallDead(call)) {
             mCallById.put(call.getId(), call);
-            mCallByTelecommCall.put(call.getTelecommCall(), call);
+            mCallByTelecomCall.put(call.getTelecomCall(), call);
             updated = true;
         } else if (mCallById.containsKey(call.getId())) {
             mCallById.remove(call.getId());
-            mCallByTelecommCall.remove(call.getTelecommCall());
+            mCallByTelecomCall.remove(call.getTelecomCall());
             updated = true;
         }
 
@@ -568,12 +579,15 @@
      */
     public void notifyCallsOfDeviceRotation(int rotation) {
         for (Call call : mCallById.values()) {
-            // First, ensure a VideoCall is set on the call so that the change can be sent to the
+            // First, ensure that the call videoState has video enabled (there is no need to set
+            // device orientation on a voice call which has not yet been upgraded to video).
+            // Second, ensure a VideoCall is set on the call so that the change can be sent to the
             // provider (a VideoCall can be present for a call that does not currently have video,
             // but can be upgraded to video).
-            // Second, ensure that the call videoState has video enabled (there is no need to set
-            // device orientation on a voice call which has not yet been upgraded to video).
-            if (call.getVideoCall() != null && CallUtils.isVideoCall(call)) {
+
+            // NOTE: is it necessary to use this order because getVideoCall references the class
+            // VideoProfile which is not available on APIs <23 (M).
+            if (VideoUtils.isVideoCall(call) && call.getVideoCall() != null) {
                 call.getVideoCall().setDeviceOrientation(rotation);
             }
         }
@@ -597,6 +611,10 @@
         }
     };
 
+    public void setFilteredNumberQueryHandler(FilteredNumberAsyncQueryHandler handler) {
+        mFilteredQueryHandler = handler;
+    }
+
     /**
      * Listener interface for any class that wants to be notified of changes
      * to the call list.
diff --git a/InCallUI/src/com/android/incallui/CallUtils.java b/InCallUI/src/com/android/incallui/CallUtils.java
deleted file mode 100644
index c69334c..0000000
--- a/InCallUI/src/com/android/incallui/CallUtils.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/* Copyright (c) 2014, The Linux Foundation. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- *       copyright notice, this list of conditions and the following
- *       disclaimer in the documentation and/or other materials provided
- *       with the distribution.
- *     * Neither the name of The Linux Foundation nor the names of its
- *       contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
- * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
- * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-package com.android.incallui;
-
-import android.telecom.VideoProfile;
-
-import com.google.common.base.Preconditions;
-
-public class CallUtils {
-
-    public static boolean isVideoCall(Call call) {
-        return call != null && isVideoCall(call.getVideoState());
-    }
-
-    public static boolean isVideoCall(int videoState) {
-        return VideoProfile.isTransmissionEnabled(videoState)
-                || VideoProfile.isReceptionEnabled(videoState);
-    }
-
-    public static boolean isIncomingVideoCall(Call call) {
-        if (!CallUtils.isVideoCall(call)) {
-            return false;
-        }
-        final int state = call.getState();
-        return (state == Call.State.INCOMING) || (state == Call.State.CALL_WAITING);
-    }
-
-    public static boolean isActiveVideoCall(Call call) {
-        return CallUtils.isVideoCall(call) && call.getState() == Call.State.ACTIVE;
-    }
-
-    public static boolean isOutgoingVideoCall(Call call) {
-        if (!CallUtils.isVideoCall(call)) {
-            return false;
-        }
-        final int state = call.getState();
-        return Call.State.isDialing(state) || state == Call.State.CONNECTING
-                || state == Call.State.SELECT_PHONE_ACCOUNT;
-    }
-
-    public static boolean isAudioCall(Call call) {
-        return call != null && VideoProfile.isAudioOnly(call.getVideoState());
-    }
-
-    // TODO (ims-vt) Check if special handling is needed for CONF calls.
-    public static boolean canVideoPause(Call call) {
-        return isVideoCall(call) && call.getState() == Call.State.ACTIVE;
-    }
-
-    public static VideoProfile makeVideoPauseProfile(Call call) {
-        Preconditions.checkNotNull(call);
-        Preconditions.checkState(!VideoProfile.isAudioOnly(call.getVideoState()));
-        return new VideoProfile(getPausedVideoState(call.getVideoState()));
-    }
-
-    public static VideoProfile makeVideoUnPauseProfile(Call call) {
-        Preconditions.checkNotNull(call);
-        return new VideoProfile(getUnPausedVideoState(call.getVideoState()));
-    }
-
-    public static int getUnPausedVideoState(int videoState) {
-        return videoState & (~VideoProfile.STATE_PAUSED);
-    }
-
-    public static int getPausedVideoState(int videoState) {
-        return videoState | VideoProfile.STATE_PAUSED;
-    }
-
-}
diff --git a/InCallUI/src/com/android/incallui/CallerInfo.java b/InCallUI/src/com/android/incallui/CallerInfo.java
index 2f0fc83..4ea4970 100644
--- a/InCallUI/src/com/android/incallui/CallerInfo.java
+++ b/InCallUI/src/com/android/incallui/CallerInfo.java
@@ -16,8 +16,6 @@
 
 package com.android.incallui;
 
-import com.android.contacts.common.util.PhoneNumberHelper;
-import com.android.contacts.common.util.TelephonyManagerUtils;
 import android.content.Context;
 import android.database.Cursor;
 import android.graphics.Bitmap;
@@ -31,21 +29,29 @@
 import android.telephony.PhoneNumberUtils;
 import android.text.TextUtils;
 
-import com.google.i18n.phonenumbers.geocoding.PhoneNumberOfflineGeocoder;
-import com.google.i18n.phonenumbers.NumberParseException;
-import com.google.i18n.phonenumbers.PhoneNumberUtil;
-import com.google.i18n.phonenumbers.Phonenumber.PhoneNumber;
-
-import java.util.Locale;
+import com.android.contacts.common.util.PhoneNumberHelper;
+import com.android.contacts.common.util.TelephonyManagerUtils;
+import com.android.dialer.calllog.ContactInfoHelper;
 
 /**
  * Looks up caller information for the given phone number.
- *
- * {@hide}
  */
 public class CallerInfo {
     private static final String TAG = "CallerInfo";
 
+    public static final String[] DEFAULT_PHONELOOKUP_PROJECTION = new String[] {
+            PhoneLookup._ID,
+            PhoneLookup.DISPLAY_NAME,
+            PhoneLookup.LOOKUP_KEY,
+            PhoneLookup.NUMBER,
+            PhoneLookup.NORMALIZED_NUMBER,
+            PhoneLookup.LABEL,
+            PhoneLookup.TYPE,
+            PhoneLookup.PHOTO_URI,
+            PhoneLookup.CUSTOM_RINGTONE,
+            PhoneLookup.SEND_TO_VOICEMAIL
+    };
+
     /**
      * Please note that, any one of these member variables can be null,
      * and any accesses to them should be prepared to handle such a case.
@@ -74,6 +80,7 @@
      * for a connection, but the number should be displayable.
      */
     public String name;
+    public String nameAlternative;
     public String phoneNumber;
     public String normalizedNumber;
     public String forwardingNumber;
@@ -190,6 +197,12 @@
                     info.name = cursor.getString(columnIndex);
                 }
 
+                columnIndex = cursor.getColumnIndex(PhoneLookup.LOOKUP_KEY);
+                if (columnIndex != -1) {
+                    info.nameAlternative = ContactInfoHelper.lookUpDisplayNameAlternative(
+                            context, cursor.getString(columnIndex));
+                }
+
                 // Look for the number
                 columnIndex = cursor.getColumnIndex(PhoneLookup.NUMBER);
                 if (columnIndex != -1) {
@@ -249,7 +262,12 @@
                 // in the database.
                 columnIndex = cursor.getColumnIndex(PhoneLookup.CUSTOM_RINGTONE);
                 if ((columnIndex != -1) && (cursor.getString(columnIndex) != null)) {
-                    info.contactRingtoneUri = Uri.parse(cursor.getString(columnIndex));
+                    if (TextUtils.isEmpty(cursor.getString(columnIndex))) {
+                        // make it consistent with frameworks/base/.../CallerInfo.java
+                        info.contactRingtoneUri = Uri.EMPTY;
+                    } else {
+                        info.contactRingtoneUri = Uri.parse(cursor.getString(columnIndex));
+                    }
                 } else {
                     info.contactRingtoneUri = null;
                 }
@@ -469,43 +487,7 @@
      */
     public void updateGeoDescription(Context context, String fallbackNumber) {
         String number = TextUtils.isEmpty(phoneNumber) ? fallbackNumber : phoneNumber;
-        geoDescription = getGeoDescription(context, number);
-    }
-
-    /**
-     * @return a geographical description string for the specified number.
-     * @see com.android.i18n.phonenumbers.PhoneNumberOfflineGeocoder
-     */
-    private static String getGeoDescription(Context context, String number) {
-        Log.v(TAG, "getGeoDescription('" + number + "')...");
-
-        if (TextUtils.isEmpty(number)) {
-            return null;
-        }
-
-        PhoneNumberUtil util = PhoneNumberUtil.getInstance();
-        PhoneNumberOfflineGeocoder geocoder = PhoneNumberOfflineGeocoder.getInstance();
-
-        Locale locale = context.getResources().getConfiguration().locale;
-        String countryIso = TelephonyManagerUtils.getCurrentCountryIso(context, locale);
-        PhoneNumber pn = null;
-        try {
-            Log.v(TAG, "parsing '" + number
-                    + "' for countryIso '" + countryIso + "'...");
-            pn = util.parse(number, countryIso);
-            Log.v(TAG, "- parsed number: " + pn);
-        } catch (NumberParseException e) {
-            Log.v(TAG, "getGeoDescription: NumberParseException for incoming number '" +
-                    number + "'");
-        }
-
-        if (pn != null) {
-            String description = geocoder.getDescriptionForNumber(pn, locale);
-            Log.v(TAG, "- got description: '" + description + "'");
-            return description;
-        }
-
-        return null;
+        geoDescription = com.android.dialer.util.PhoneNumberUtil.getGeoDescription(context, number);
     }
 
     /**
diff --git a/InCallUI/src/com/android/incallui/CallerInfoAsyncQuery.java b/InCallUI/src/com/android/incallui/CallerInfoAsyncQuery.java
index bd766d6..8d45efb 100644
--- a/InCallUI/src/com/android/incallui/CallerInfoAsyncQuery.java
+++ b/InCallUI/src/com/android/incallui/CallerInfoAsyncQuery.java
@@ -16,22 +16,32 @@
 
 package com.android.incallui;
 
+import com.google.common.primitives.Longs;
+
 import android.content.AsyncQueryHandler;
+import android.content.ContentResolver;
 import android.content.Context;
 import android.database.Cursor;
 import android.database.SQLException;
 import android.net.Uri;
+import android.os.Build;
 import android.os.Handler;
 import android.os.Looper;
 import android.os.Message;
 import android.provider.ContactsContract;
-import android.provider.ContactsContract.PhoneLookup;
+import android.provider.ContactsContract.Directory;
 import android.telephony.PhoneNumberUtils;
 import android.text.TextUtils;
 
-import com.android.contacts.common.util.PhoneNumberHelper;
+import com.android.contacts.common.ContactsUtils;
+import com.android.contacts.common.compat.DirectoryCompat;
 import com.android.contacts.common.util.TelephonyManagerUtils;
+import com.android.dialer.calllog.ContactInfoHelper;
+import com.android.dialer.service.CachedNumberLookupService;
+import com.android.dialer.service.CachedNumberLookupService.CachedContactInfo;
+import com.android.dialerbind.ObjectFactory;
 
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Locale;
 
@@ -80,7 +90,6 @@
         public String number;
     }
 
-
     /**
      * Simple exception used to communicate problems with the query pool.
      */
@@ -157,7 +166,6 @@
 
                     super.handleMessage(msg);
                 } else {
-
                     Log.d(this, "Processing event: " + cw.event + " token (arg1): " + msg.arg1 +
                             " command: " + msg.what + " query URI: " +
                             sanitizeUriToString(args.uri));
@@ -288,7 +296,7 @@
 
                         // Use the number entered by the user for display.
                         if (!TextUtils.isEmpty(cw.number)) {
-                            mCallerInfo.phoneNumber = PhoneNumberHelper.formatNumber(cw.number,
+                            mCallerInfo.phoneNumber = PhoneNumberUtils.formatNumber(cw.number,
                                     mCallerInfo.normalizedNumber,
                                     TelephonyManagerUtils.getCurrentCountryIso(mQueryContext,
                                             Locale.getDefault()));
@@ -324,6 +332,37 @@
     private CallerInfoAsyncQuery() {
     }
 
+    public static void startQuery(final int token, final Context context, final CallerInfo info,
+            final OnQueryCompleteListener listener, final Object cookie) {
+        Log.d(LOG_TAG, "##### CallerInfoAsyncQuery startContactProviderQuery()... #####");
+        Log.d(LOG_TAG, "- number: " + info.phoneNumber);
+        Log.d(LOG_TAG, "- cookie: " + cookie);
+        OnQueryCompleteListener contactsProviderQueryCompleteListener =
+                new OnQueryCompleteListener() {
+                    @Override
+                    public void onQueryComplete(int token, Object cookie, CallerInfo ci) {
+                        Log.d(LOG_TAG, "contactsProviderQueryCompleteListener done");
+                        if (ci != null && ci.contactExists) {
+                            if (listener != null) {
+                                listener.onQueryComplete(token, cookie, ci);
+                            }
+                        } else {
+                            startOtherDirectoriesQuery(token, context, info, listener, cookie);
+                        }
+                    }
+                };
+        startDefaultDirectoryQuery(token, context, info, contactsProviderQueryCompleteListener,
+                cookie);
+    }
+
+    // Private methods
+    private static CallerInfoAsyncQuery startDefaultDirectoryQuery(int token, Context context,
+            CallerInfo info, OnQueryCompleteListener listener, Object cookie) {
+        // Construct the URI object and query params, and start the query.
+        Uri uri = ContactInfoHelper.getContactInfoLookupUri(info.phoneNumber);
+        return startQueryInternal(token, context, info, listener, cookie, uri);
+    }
+
     /**
      * Factory method to start the query based on a CallerInfo object.
      *
@@ -335,20 +374,8 @@
      * PhoneUtils.startGetCallerInfo() decide which one to call based on
      * the phone type of the incoming connection.
      */
-    public static CallerInfoAsyncQuery startQuery(int token, Context context, CallerInfo info,
-            OnQueryCompleteListener listener, Object cookie) {
-        Log.d(LOG_TAG, "##### CallerInfoAsyncQuery startQuery()... #####");
-        Log.d(LOG_TAG, "- number: " + info.phoneNumber);
-        Log.d(LOG_TAG, "- cookie: " + cookie);
-
-        // Construct the URI object and query params, and start the query.
-
-        final Uri contactRef = PhoneLookup.ENTERPRISE_CONTENT_FILTER_URI.buildUpon()
-                .appendPath(info.phoneNumber)
-                .appendQueryParameter(PhoneLookup.QUERY_PARAMETER_SIP_ADDRESS,
-                        String.valueOf(PhoneNumberHelper.isUriNumber(info.phoneNumber)))
-                .build();
-
+    private static CallerInfoAsyncQuery startQueryInternal(int token, Context context,
+            CallerInfo info, OnQueryCompleteListener listener, Object cookie, Uri contactRef) {
         if (DBG) {
             Log.d(LOG_TAG, "==> contactRef: " + sanitizeUriToString(contactRef));
         }
@@ -374,13 +401,131 @@
         c.mHandler.startQuery(token,
                               cw,  // cookie
                               contactRef,  // uri
-                              null,  // projection
+                              CallerInfo.DEFAULT_PHONELOOKUP_PROJECTION,  // projection
                               null,  // selection
                               null,  // selectionArgs
                               null);  // orderBy
         return c;
     }
 
+    private static void startOtherDirectoriesQuery(int token, Context context, CallerInfo info,
+            OnQueryCompleteListener listener, Object cookie) {
+        long[] directoryIds = getDirectoryIds(context);
+        int size = directoryIds.length;
+        if (size == 0) {
+            if (listener != null) {
+                listener.onQueryComplete(token, cookie, info);
+            }
+            return;
+        }
+
+        DirectoryQueryCompleteListenerFactory listenerFactory =
+                new DirectoryQueryCompleteListenerFactory(context, size, listener);
+
+        // The current implementation of multiple async query runs in single handler thread
+        // in AsyncQueryHandler.
+        // intermediateListener.onQueryComplete is also called from the same caller thread.
+        // TODO(b/26019872): use thread pool instead of single thread.
+        for (int i = 0; i < size; i++) {
+            long directoryId = directoryIds[i];
+            Uri uri = ContactInfoHelper.getContactInfoLookupUri(info.phoneNumber, directoryId);
+            if (DBG) {
+                Log.d(LOG_TAG, "directoryId: " + directoryId + " uri: " + uri);
+            }
+            OnQueryCompleteListener intermediateListener =
+                    listenerFactory.newListener(directoryId);
+            startQueryInternal(token, context, info, intermediateListener, cookie, uri);
+        }
+    }
+
+    /* Directory lookup related code - START */
+    private static final String[] DIRECTORY_PROJECTION = new String[] {Directory._ID};
+
+    private static long[] getDirectoryIds(Context context) {
+        ArrayList<Long> results = new ArrayList<>();
+
+        Uri uri = Directory.CONTENT_URI;
+        if (ContactsUtils.FLAG_N_FEATURE) {
+            uri = Uri.withAppendedPath(ContactsContract.AUTHORITY_URI, "directories_enterprise");
+        }
+
+        ContentResolver cr = context.getContentResolver();
+        Cursor cursor = cr.query(uri, DIRECTORY_PROJECTION, null, null, null);
+        addDirectoryIdsFromCursor(cursor, results);
+
+        return Longs.toArray(results);
+    }
+
+    private static void addDirectoryIdsFromCursor(Cursor cursor, ArrayList<Long> results) {
+        if (cursor != null) {
+            int idIndex = cursor.getColumnIndex(Directory._ID);
+            while (cursor.moveToNext()) {
+                long id = cursor.getLong(idIndex);
+                if (DirectoryCompat.isRemoteDirectory(id)) {
+                    results.add(id);
+                }
+            }
+            cursor.close();
+        }
+    }
+
+    private static final class DirectoryQueryCompleteListenerFactory {
+        // Make sure listener to be called once and only once
+        int mCount;
+        boolean mIsListenerCalled;
+        OnQueryCompleteListener mListener;
+        Context mContext;
+        CachedNumberLookupService mCachedNumberLookupService =
+                ObjectFactory.newCachedNumberLookupService();
+
+        private class DirectoryQueryCompleteListener implements OnQueryCompleteListener {
+            long mDirectoryId;
+
+            DirectoryQueryCompleteListener(long directoryId) {
+                mDirectoryId = directoryId;
+            }
+
+            @Override
+            public void onQueryComplete(int token, Object cookie, CallerInfo ci) {
+                if (ci.contactExists && mCachedNumberLookupService != null) {
+                    CachedContactInfo cachedContactInfo =
+                            CallerInfoUtils.buildCachedContactInfo(mCachedNumberLookupService, ci);
+                    String directoryLabel = mContext.getString(R.string.directory_search_label);
+                    cachedContactInfo.setDirectorySource(directoryLabel, mDirectoryId);
+                    mCachedNumberLookupService.addContact(mContext, cachedContactInfo);
+                }
+
+                callListenerIfNecessary(token, cookie, ci);
+            }
+        }
+
+        DirectoryQueryCompleteListenerFactory(Context context, int size, OnQueryCompleteListener listener)  {
+            mCount = size;
+            mListener = listener;
+            mIsListenerCalled = false;
+            mContext = context;
+        }
+
+        private void callListenerIfNecessary(int token, Object cookie, CallerInfo ci) {
+            boolean shouldCallListener = false;
+            synchronized (this) {
+                mCount = mCount - 1;
+                if (!mIsListenerCalled && (ci.contactExists || mCount == 0)) {
+                    mIsListenerCalled = true;
+                    shouldCallListener = true;
+                }
+            }
+            if (shouldCallListener && mListener != null) {
+                mListener.onQueryComplete(token, cookie, ci);
+            }
+        }
+
+        public OnQueryCompleteListener newListener(long directoryId) {
+            return new DirectoryQueryCompleteListener(directoryId);
+        }
+    }
+    /* Directory lookup related code - END */
+
     /**
      * Method to create a new CallerInfoAsyncQueryHandler object, ensuring correct
      * state of context and uri.
diff --git a/InCallUI/src/com/android/incallui/CallerInfoUtils.java b/InCallUI/src/com/android/incallui/CallerInfoUtils.java
index 681f273..31fc9f1 100644
--- a/InCallUI/src/com/android/incallui/CallerInfoUtils.java
+++ b/InCallUI/src/com/android/incallui/CallerInfoUtils.java
@@ -9,8 +9,12 @@
 import android.text.TextUtils;
 import android.util.Log;
 
+import com.android.contacts.common.compat.telecom.TelecomManagerCompat;
 import com.android.contacts.common.model.Contact;
 import com.android.contacts.common.model.ContactLoader;
+import com.android.dialer.calllog.ContactInfo;
+import com.android.dialer.service.CachedNumberLookupService;
+import com.android.dialer.service.CachedNumberLookupService.CachedContactInfo;
 
 import java.util.Arrays;
 
@@ -87,11 +91,35 @@
         return info;
     }
 
+    /**
+     * Creates a new {@link CachedContactInfo} from a {@link CallerInfo}
+     *
+     * @param lookupService the {@link CachedNumberLookupService} used to build a
+     *        new {@link CachedContactInfo}
+     * @param {@link CallerInfo} object
+     * @return a CachedContactInfo object created from this CallerInfo
+     * @throws NullPointerException if lookupService or ci are null
+     */
+    public static CachedContactInfo buildCachedContactInfo(CachedNumberLookupService lookupService,
+            CallerInfo ci) {
+        ContactInfo info = new ContactInfo();
+        info.name = ci.name;
+        info.type = ci.numberType;
+        info.label = ci.phoneLabel;
+        info.number = ci.phoneNumber;
+        info.normalizedNumber = ci.normalizedNumber;
+        info.photoUri = ci.contactDisplayPhotoUri;
+
+        CachedContactInfo cacheInfo = lookupService.buildCachedContactInfo(info);
+        cacheInfo.setLookupKey(ci.lookupKeyOrNull);
+        return cacheInfo;
+    }
+
     public static boolean isVoiceMailNumber(Context context, Call call) {
-         TelecomManager telecomManager =
-                 (TelecomManager) context.getSystemService(Context.TELECOM_SERVICE);
-         return telecomManager.isVoiceMailNumber(
-                 call.getTelecommCall().getDetails().getAccountHandle(), call.getNumber());
+         return TelecomManagerCompat.isVoiceMailNumber(
+                 (TelecomManager) context.getSystemService(Context.TELECOM_SERVICE),
+                 call.getTelecomCall().getDetails().getAccountHandle(),
+                 call.getNumber());
     }
 
     /**
diff --git a/InCallUI/src/com/android/incallui/CircularRevealFragment.java b/InCallUI/src/com/android/incallui/CircularRevealFragment.java
index f8cc424..f4a2e91 100644
--- a/InCallUI/src/com/android/incallui/CircularRevealFragment.java
+++ b/InCallUI/src/com/android/incallui/CircularRevealFragment.java
@@ -127,16 +127,18 @@
                     vto.removeOnPreDrawListener(this);
                 }
                 final Animator animator = getRevealAnimator(mTouchPoint);
-                animator.addListener(new AnimatorListenerAdapter() {
-                    @Override
-                    public void onAnimationEnd(Animator animation) {
-                        view.setClipToOutline(false);
-                        if (mListener != null) {
-                            mListener.onCircularRevealComplete(getFragmentManager());
+                if (animator != null) {
+                    animator.addListener(new AnimatorListenerAdapter() {
+                        @Override
+                        public void onAnimationEnd(Animator animation) {
+                            view.setClipToOutline(false);
+                            if (mListener != null) {
+                                mListener.onCircularRevealComplete(getFragmentManager());
+                            }
                         }
-                    }
-                });
-                animator.start();
+                    });
+                    animator.start();
+                }
                 return false;
             }
         });
@@ -144,6 +146,9 @@
 
     private Animator getRevealAnimator(Point touchPoint) {
         final Activity activity = getActivity();
+        if (activity == null) {
+            return null;
+        }
         final View view  = activity.getWindow().getDecorView();
         final Display display = activity.getWindowManager().getDefaultDisplay();
         final Point size = new Point();
diff --git a/InCallUI/src/com/android/incallui/ConferenceParticipantListAdapter.java b/InCallUI/src/com/android/incallui/ConferenceParticipantListAdapter.java
index 7ddeada..79c5fae 100644
--- a/InCallUI/src/com/android/incallui/ConferenceParticipantListAdapter.java
+++ b/InCallUI/src/com/android/incallui/ConferenceParticipantListAdapter.java
@@ -16,9 +16,10 @@
 
 package com.android.incallui;
 
+import com.google.common.base.MoreObjects;
+
 import android.content.Context;
 import android.net.Uri;
-import android.telephony.PhoneNumberUtils;
 import android.text.BidiFormatter;
 import android.text.TextDirectionHeuristics;
 import android.text.TextUtils;
@@ -32,7 +33,11 @@
 
 import com.android.contacts.common.ContactPhotoManager;
 import com.android.contacts.common.ContactPhotoManager.DefaultImageRequest;
+import com.android.contacts.common.compat.PhoneNumberUtilsCompat;
+import com.android.contacts.common.preference.ContactsPreferences;
+import com.android.contacts.common.util.ContactDisplayUtils;
 import com.android.incallui.ContactInfoCache.ContactCacheEntry;
+import com.android.incallui.compat.telecom.DetailsCompat;
 
 import java.lang.ref.WeakReference;
 import java.util.ArrayList;
@@ -137,6 +142,9 @@
             update(callId, entry);
         }
 
+        @Override
+        public void onContactInteractionsInfoComplete(String callId, ContactCacheEntry entry) {}
+
         /**
          * Updates the contact information for a participant.
          *
@@ -196,6 +204,11 @@
     private final Context mContext;
 
     /**
+     * ContactsPreferences used to lookup displayName preferences
+     */
+    private final ContactsPreferences mContactsPreferences;
+
+    /**
      * The layout inflater used to inflate new views.
      */
     private final LayoutInflater mLayoutInflater;
@@ -223,6 +236,7 @@
 
         mListView = listView;
         mContext = context;
+        mContactsPreferences = new ContactsPreferences(mContext);
         mLayoutInflater = layoutInflater;
         mContactPhotoManager = contactPhotoManager;
     }
@@ -235,6 +249,8 @@
      *                                      conference.
      */
     public void updateParticipants(List<Call> conferenceParticipants, boolean parentCanSeparate) {
+        mContactsPreferences.refreshValue(ContactsPreferences.DISPLAY_ORDER_KEY);
+        mContactsPreferences.refreshValue(ContactsPreferences.SORT_ORDER_KEY);
         mParentCanSeparate = parentCanSeparate;
         updateParticipantInfo(conferenceParticipants);
     }
@@ -337,12 +353,16 @@
                     new ContactLookupCallback(this));
         }
 
-        boolean thisRowCanSeparate = mParentCanSeparate && call.getTelecommCall().getDetails().can(
+        boolean thisRowCanSeparate = mParentCanSeparate && DetailsCompat.can(
+                call.getTelecomCall().getDetails(),
                 android.telecom.Call.Details.CAPABILITY_SEPARATE_FROM_CONFERENCE);
-        boolean thisRowCanDisconnect = call.getTelecommCall().getDetails().can(
+        boolean thisRowCanDisconnect = DetailsCompat.can(call.getTelecomCall().getDetails(),
                 android.telecom.Call.Details.CAPABILITY_DISCONNECT_FROM_CONFERENCE);
 
-        setCallerInfoForRow(result, contactCache.name, contactCache.number, contactCache.label,
+        setCallerInfoForRow(result, contactCache.namePrimary,
+                ContactDisplayUtils.getPreferredDisplayName(contactCache.namePrimary,
+                        contactCache.nameAlternative, mContactsPreferences.getDisplayOrder()),
+                contactCache.number, contactCache.label,
                 contactCache.lookupKey, contactCache.displayPhotoUri, thisRowCanSeparate,
                 thisRowCanDisconnect);
 
@@ -380,9 +400,9 @@
      * @param thisRowCanSeparate {@code True} if this participant can separate from the conference.
      * @param thisRowCanDisconnect {@code True} if this participant can be disconnected.
      */
-    private final void setCallerInfoForRow(View view, String callerName, String callerNumber,
-            String callerNumberType, String lookupKey, Uri photoUri, boolean thisRowCanSeparate,
-            boolean thisRowCanDisconnect) {
+    private final void setCallerInfoForRow(View view, String callerName, String preferredName,
+            String callerNumber, String callerNumberType, String lookupKey, Uri photoUri,
+            boolean thisRowCanSeparate, boolean thisRowCanDisconnect) {
 
         final ImageView photoView = (ImageView) view.findViewById(R.id.callerPhoto);
         final TextView nameTextView = (TextView) view.findViewById(R.id.conferenceCallerName);
@@ -412,7 +432,7 @@
         mContactPhotoManager.loadDirectoryPhoto(photoView, photoUri, false, true, imageRequest);
 
         // set the caller name
-        nameTextView.setText(callerName);
+        nameTextView.setText(preferredName);
 
         // set the caller number in subscript, or make the field disappear.
         if (TextUtils.isEmpty(callerNumber)) {
@@ -420,7 +440,7 @@
             numberTypeTextView.setVisibility(View.GONE);
         } else {
             numberTextView.setVisibility(View.VISIBLE);
-            numberTextView.setText(PhoneNumberUtils.createTtsSpannable(
+            numberTextView.setText(PhoneNumberUtilsCompat.createTtsSpannable(
                     BidiFormatter.getInstance().unicodeWrap(
                             callerNumber, TextDirectionHeuristics.LTR)));
             numberTypeTextView.setVisibility(View.VISIBLE);
@@ -488,15 +508,21 @@
         Collections.sort(mConferenceParticipants, new Comparator<ParticipantInfo>() {
             public int compare(ParticipantInfo p1, ParticipantInfo p2) {
                 // Contact names might be null, so replace with empty string.
-                String p1Name = p1.getContactCacheEntry().name;
-                if (p1Name == null) {
-                    p1Name = "";
-                }
+                ContactCacheEntry c1 = p1.getContactCacheEntry();
+                String p1Name = MoreObjects.firstNonNull(
+                        ContactDisplayUtils.getPreferredSortName(
+                                c1.namePrimary,
+                                c1.nameAlternative,
+                                mContactsPreferences.getSortOrder()),
+                        "");
 
-                String p2Name = p2.getContactCacheEntry().name;
-                if (p2Name == null) {
-                    p2Name = "";
-                }
+                ContactCacheEntry c2 = p2.getContactCacheEntry();
+                String p2Name = MoreObjects.firstNonNull(
+                        ContactDisplayUtils.getPreferredSortName(
+                                c2.namePrimary,
+                                c2.nameAlternative,
+                                mContactsPreferences.getSortOrder()),
+                        "");
 
                 return p1Name.compareToIgnoreCase(p2Name);
             }
diff --git a/InCallUI/src/com/android/incallui/ContactInfoCache.java b/InCallUI/src/com/android/incallui/ContactInfoCache.java
index 0206e0a..9894f55 100644
--- a/InCallUI/src/com/android/incallui/ContactInfoCache.java
+++ b/InCallUI/src/com/android/incallui/ContactInfoCache.java
@@ -16,37 +16,42 @@
 
 package com.android.incallui;
 
+import com.google.common.base.MoreObjects;
+import com.google.common.base.Preconditions;
+import com.google.common.collect.Maps;
+import com.google.common.collect.Sets;
+
 import android.content.Context;
 import android.graphics.Bitmap;
 import android.graphics.drawable.BitmapDrawable;
 import android.graphics.drawable.Drawable;
+import android.location.Address;
 import android.net.Uri;
 import android.os.AsyncTask;
 import android.os.Looper;
 import android.provider.ContactsContract;
+import android.provider.ContactsContract.CommonDataKinds.Phone;
 import android.provider.ContactsContract.Contacts;
 import android.provider.ContactsContract.DisplayNameSources;
-import android.provider.ContactsContract.CommonDataKinds.Phone;
 import android.telecom.TelecomManager;
 import android.text.TextUtils;
+import android.util.Pair;
 
 import com.android.contacts.common.util.PhoneNumberHelper;
 import com.android.dialer.calllog.ContactInfo;
 import com.android.dialer.service.CachedNumberLookupService;
 import com.android.dialer.service.CachedNumberLookupService.CachedContactInfo;
+import com.android.dialer.util.MoreStrings;
+import com.android.incallui.Call.LogState;
 import com.android.incallui.service.PhoneNumberService;
 import com.android.incalluibind.ObjectFactory;
-import com.android.services.telephony.common.MoreStrings;
 
 import org.json.JSONException;
 import org.json.JSONObject;
 
-import com.google.common.collect.Maps;
-import com.google.common.collect.Sets;
-import com.google.common.base.Objects;
-import com.google.common.base.Preconditions;
-
+import java.util.Calendar;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Set;
 
 /**
@@ -70,6 +75,7 @@
 
     private Drawable mDefaultContactPhotoDrawable;
     private Drawable mConferencePhotoDrawable;
+    private ContactUtils mContactUtils;
 
     public static synchronized ContactInfoCache getInstance(Context mContext) {
         if (sCache == null) {
@@ -83,6 +89,8 @@
         mPhoneNumberService = ObjectFactory.newPhoneNumberService(context);
         mCachedNumberLookupService =
                 com.android.dialerbind.ObjectFactory.newCachedNumberLookupService();
+        mContactUtils = ObjectFactory.getContactUtilsInstance(context);
+
     }
 
     public ContactCacheEntry getInfo(String callId) {
@@ -212,7 +220,7 @@
         ContactCacheEntry cacheEntry = mInfoMap.get(callId);
         // Ensure we always have a cacheEntry. Replace the existing entry if
         // it has no name or if we found a local contact.
-        if (cacheEntry == null || TextUtils.isEmpty(cacheEntry.name) ||
+        if (cacheEntry == null || TextUtils.isEmpty(cacheEntry.namePrimary) ||
                 callerInfo.contactExists) {
             cacheEntry = buildEntry(mContext, callId, callerInfo, presentationMode, isIncoming);
             mInfoMap.put(callId, cacheEntry);
@@ -233,6 +241,7 @@
                 Log.d(TAG, "Contact lookup. Local contact found, starting image load");
                 // Load the image with a callback to update the image state.
                 // When the load is finished, onImageLoadComplete() will be called.
+                cacheEntry.isLoadingPhoto = true;
                 ContactsAsyncHelper.startObtainPhotoAsync(TOKEN_UPDATE_PHOTO_FOR_CALL_STATE,
                         mContext, cacheEntry.displayPhotoUri, ContactInfoCache.this, callId);
             } else {
@@ -248,7 +257,7 @@
     }
 
     class PhoneNumberServiceListener implements PhoneNumberService.NumberLookupListener,
-                                     PhoneNumberService.ImageLookupListener {
+                                     PhoneNumberService.ImageLookupListener, ContactUtils.Listener {
         private final String mCallId;
 
         PhoneNumberServiceListener(String callId) {
@@ -267,8 +276,9 @@
             }
 
             ContactCacheEntry entry = new ContactCacheEntry();
-            entry.name = info.getDisplayName();
+            entry.namePrimary = info.getDisplayName();
             entry.number = info.getNumber();
+            entry.contactLookupResult = info.getLookupSource();
             final int type = info.getPhoneType();
             final String label = info.getPhoneLabel();
             if (type == Phone.TYPE_CUSTOM) {
@@ -293,12 +303,21 @@
                 entry.photo = mContext.getResources().getDrawable(R.drawable.img_business);
             }
 
-            // Add the contact info to the cache.
             mInfoMap.put(mCallId, entry);
             sendInfoNotifications(mCallId, entry);
 
-            // If there is no image then we should not expect another callback.
-            if (info.getImageUrl() == null) {
+            if (mContactUtils != null) {
+                // This method will callback "onContactInteractionsFound".
+                entry.isLoadingContactInteractions =
+                        mContactUtils.retrieveContactInteractionsFromLookupKey(
+                                info.getLookupKey(), this);
+            }
+
+            entry.isLoadingPhoto = info.getImageUrl() != null;
+
+            // If there is no image or contact interactions then we should not expect another
+            // callback.
+            if (!entry.isLoadingPhoto && !entry.isLoadingContactInteractions) {
                 // We're done, so clear callbacks
                 clearCallbacks(mCallId);
             }
@@ -308,6 +327,29 @@
         public void onImageFetchComplete(Bitmap bitmap) {
             onImageLoadComplete(TOKEN_UPDATE_PHOTO_FOR_CALL_STATE, null, bitmap, mCallId);
         }
+
+        @Override
+        public void onContactInteractionsFound(Address address,
+                List<Pair<Calendar, Calendar>> openingHours) {
+            final ContactCacheEntry entry = mInfoMap.get(mCallId);
+            if (entry == null) {
+                Log.e(this, "Contact context received for empty search entry.");
+                clearCallbacks(mCallId);
+                return;
+            }
+
+            entry.isLoadingContactInteractions = false;
+
+            Log.v(ContactInfoCache.this, "Setting contact interactions for entry: ", entry);
+
+            entry.locationAddress = address;
+            entry.openingHours = openingHours;
+            sendContactInteractionsNotifications(mCallId, entry);
+
+            if (!entry.isLoadingPhoto) {
+                clearCallbacks(mCallId);
+            }
+        }
     }
 
     /**
@@ -328,6 +370,9 @@
             clearCallbacks(callId);
             return;
         }
+
+        entry.isLoadingPhoto = false;
+
         Log.d(this, "setting photo for entry: ", entry);
 
         // Conference call icons are being handled in CallCardPresenter.
@@ -343,7 +388,10 @@
         }
 
         sendImageNotifications(callId, entry);
-        clearCallbacks(callId);
+
+        if (!entry.isLoadingContactInteractions) {
+            clearCallbacks(callId);
+        }
     }
 
     /**
@@ -489,7 +537,10 @@
                     Log.d(TAG, "  ==> valid name, but presentation not allowed!" +
                             " displayName = " + displayName);
                 } else {
+                    // Causes cce.namePrimary to be set as info.name below. CallCardPresenter will
+                    // later determine whether to use the name or nameAlternative when presenting
                     displayName = info.name;
+                    cce.nameAlternative = info.nameAlternative;
                     displayNumber = number;
                     label = info.phoneLabel;
                     Log.d(TAG, "  ==>  name is present in CallerInfo: displayName '" + displayName
@@ -497,11 +548,15 @@
                 }
             }
 
-        cce.name = displayName;
+        cce.namePrimary = displayName;
         cce.number = displayNumber;
         cce.location = displayLocation;
         cce.label = label;
         cce.isSipCall = isSipCall;
+
+        if (info.contactExists) {
+            cce.contactLookupResult = LogState.LOOKUP_LOCAL_CONTACT;
+        }
     }
 
     /**
@@ -525,6 +580,15 @@
         }
     }
 
+    private void sendContactInteractionsNotifications(String callId, ContactCacheEntry entry) {
+        final Set<ContactInfoCacheCallback> callBacks = mCallBacks.get(callId);
+        if (callBacks != null) {
+            for (ContactInfoCacheCallback callBack : callBacks) {
+                callBack.onContactInteractionsInfoComplete(callId, entry);
+            }
+        }
+    }
+
     private void clearCallbacks(String callId) {
         mCallBacks.remove(callId);
     }
@@ -572,26 +636,36 @@
     public interface ContactInfoCacheCallback {
         public void onContactInfoComplete(String callId, ContactCacheEntry entry);
         public void onImageLoadComplete(String callId, ContactCacheEntry entry);
+        public void onContactInteractionsInfoComplete(String callId, ContactCacheEntry entry);
     }
 
     public static class ContactCacheEntry {
-        public String name;
+        public String namePrimary;
+        public String nameAlternative;
         public String number;
         public String location;
         public String label;
         public Drawable photo;
         public boolean isSipCall;
+        // Note in cache entry whether this is a pending async loading action to know whether to
+        // wait for its callback or not.
+        public boolean isLoadingPhoto;
+        public boolean isLoadingContactInteractions;
         /** This will be used for the "view" notification. */
         public Uri contactUri;
         /** Either a display photo or a thumbnail URI. */
         public Uri displayPhotoUri;
         public Uri lookupUri; // Sent to NotificationMananger
         public String lookupKey;
+        public Address locationAddress;
+        public List<Pair<Calendar, Calendar>> openingHours;
+        public int contactLookupResult = LogState.LOOKUP_NOT_FOUND;
 
         @Override
         public String toString() {
-            return Objects.toStringHelper(this)
-                    .add("name", MoreStrings.toSafeString(name))
+            return MoreObjects.toStringHelper(this)
+                    .add("name", MoreStrings.toSafeString(namePrimary))
+                    .add("nameAlternative", MoreStrings.toSafeString(nameAlternative))
                     .add("number", MoreStrings.toSafeString(number))
                     .add("location", MoreStrings.toSafeString(location))
                     .add("label", label)
@@ -599,6 +673,9 @@
                     .add("isSipCall", isSipCall)
                     .add("contactUri", contactUri)
                     .add("displayPhotoUri", displayPhotoUri)
+                    .add("locationAddress", locationAddress)
+                    .add("openingHours", openingHours)
+                    .add("contactLookupResult", contactLookupResult)
                     .toString();
         }
     }
diff --git a/InCallUI/src/com/android/incallui/ContactUtils.java b/InCallUI/src/com/android/incallui/ContactUtils.java
new file mode 100644
index 0000000..0750af7
--- /dev/null
+++ b/InCallUI/src/com/android/incallui/ContactUtils.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+package com.android.incallui;
+
+import android.content.Context;
+import android.location.Address;
+import android.util.Pair;
+
+import com.android.incalluibind.ObjectFactory;
+
+import java.util.Calendar;
+import java.util.List;
+
+/**
+ * Utility functions to help manipulate contact data.
+ */
+public abstract class ContactUtils {
+    protected Context mContext;
+
+    public static ContactUtils getInstance(Context context) {
+        return ObjectFactory.getContactUtilsInstance(context);
+    }
+
+    protected ContactUtils(Context context) {
+        mContext = context;
+    }
+
+    public interface Listener {
+        public void onContactInteractionsFound(Address address,
+                List<Pair<Calendar, Calendar>> openingHours);
+    }
+
+    public abstract boolean retrieveContactInteractionsFromLookupKey(String lookupKey,
+            Listener listener);
+}
diff --git a/InCallUI/src/com/android/incallui/DialpadFragment.java b/InCallUI/src/com/android/incallui/DialpadFragment.java
index 371f5c5..ab44cf2 100644
--- a/InCallUI/src/com/android/incallui/DialpadFragment.java
+++ b/InCallUI/src/com/android/incallui/DialpadFragment.java
@@ -20,7 +20,6 @@
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Looper;
-import android.telephony.PhoneNumberUtils;
 import android.text.Editable;
 import android.text.method.DialerKeyListener;
 import android.util.AttributeSet;
@@ -34,6 +33,7 @@
 import android.widget.LinearLayout;
 import android.widget.TextView;
 
+import com.android.contacts.common.compat.PhoneNumberUtilsCompat;
 import com.android.phone.common.dialpad.DialpadKeyButton;
 import com.android.phone.common.dialpad.DialpadView;
 
@@ -483,7 +483,7 @@
      * @param text Text to set Dialpad EditText to.
      */
     public void setDtmfText(String text) {
-        mDtmfDialerField.setText(PhoneNumberUtils.createTtsSpannable(text));
+        mDtmfDialerField.setText(PhoneNumberUtilsCompat.createTtsSpannable(text));
     }
 
     @Override
diff --git a/InCallUI/src/com/android/incallui/DialpadPresenter.java b/InCallUI/src/com/android/incallui/DialpadPresenter.java
index c4ee021..5e24bed 100644
--- a/InCallUI/src/com/android/incallui/DialpadPresenter.java
+++ b/InCallUI/src/com/android/incallui/DialpadPresenter.java
@@ -60,7 +60,7 @@
 
             // Append this key to the "digits" widget.
             getUi().appendDigitsToField(c);
-            // Plays the tone through Telecomm.
+            // Plays the tone through Telecom.
             TelecomAdapter.getInstance().playDtmfTone(mCall.getId(), c);
         } else {
             Log.d(this, "ignoring dtmf request for '" + c + "'");
diff --git a/InCallUI/src/com/android/incallui/DistanceHelper.java b/InCallUI/src/com/android/incallui/DistanceHelper.java
new file mode 100644
index 0000000..a4db5fe
--- /dev/null
+++ b/InCallUI/src/com/android/incallui/DistanceHelper.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.incallui;
+
+import android.location.Address;
+
+/**
+ * Superclass for a helper class to get the current location and distance to other locations.
+ */
+public abstract class DistanceHelper {
+    public static final float DISTANCE_NOT_FOUND = -1;
+    public static final float MILES_PER_METER = (float) 0.000621371192;
+    public static final float KILOMETERS_PER_METER = (float) 0.001;
+
+    public interface Listener {
+        public void onLocationReady();
+    }
+
+    public void cleanUp() {}
+
+    public float calculateDistance(Address address) {
+        return DISTANCE_NOT_FOUND;
+    }
+}
diff --git a/InCallUI/src/com/android/incallui/GlowPadAnswerFragment.java b/InCallUI/src/com/android/incallui/GlowPadAnswerFragment.java
new file mode 100644
index 0000000..62a8e78
--- /dev/null
+++ b/InCallUI/src/com/android/incallui/GlowPadAnswerFragment.java
@@ -0,0 +1,155 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.incallui;
+
+import android.os.Bundle;
+import android.telecom.VideoProfile;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import com.android.dialer.R;
+
+public class GlowPadAnswerFragment extends AnswerFragment {
+
+    private GlowPadWrapper mGlowpad;
+
+    public GlowPadAnswerFragment() {
+    }
+
+    @Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container,
+            Bundle savedInstanceState) {
+        mGlowpad = (GlowPadWrapper) inflater.inflate(R.layout.answer_fragment,
+                container, false);
+
+        Log.d(this, "Creating view for answer fragment ", this);
+        Log.d(this, "Created from activity", getActivity());
+        mGlowpad.setAnswerFragment(this);
+
+        return mGlowpad;
+    }
+
+    @Override
+    public void onResume() {
+        super.onResume();
+        mGlowpad.requestFocus();
+    }
+
+    @Override
+    public void onDestroyView() {
+        Log.d(this, "onDestroyView");
+        if (mGlowpad != null) {
+            mGlowpad.stopPing();
+            mGlowpad = null;
+        }
+        super.onDestroyView();
+    }
+
+    @Override
+    public void onShowAnswerUi(boolean shown) {
+        Log.d(this, "Show answer UI: " + shown);
+        if (shown) {
+            mGlowpad.startPing();
+        } else {
+            mGlowpad.stopPing();
+        }
+    }
+
+    /**
+     * Sets targets on the glowpad according to target set identified by the parameter.
+     *
+     * @param targetSet Integer identifying the set of targets to use.
+     */
+    public void showTargets(int targetSet) {
+        showTargets(targetSet, VideoProfile.STATE_BIDIRECTIONAL);
+    }
+
+    /**
+     * Sets targets on the glowpad according to target set identified by the parameter.
+     *
+     * @param targetSet Integer identifying the set of targets to use.
+     */
+    @Override
+    public void showTargets(int targetSet, int videoState) {
+        final int targetResourceId;
+        final int targetDescriptionsResourceId;
+        final int directionDescriptionsResourceId;
+        final int handleDrawableResourceId;
+        mGlowpad.setVideoState(videoState);
+
+        switch (targetSet) {
+            case TARGET_SET_FOR_AUDIO_WITH_SMS:
+                targetResourceId = R.array.incoming_call_widget_audio_with_sms_targets;
+                targetDescriptionsResourceId =
+                        R.array.incoming_call_widget_audio_with_sms_target_descriptions;
+                directionDescriptionsResourceId =
+                        R.array.incoming_call_widget_audio_with_sms_direction_descriptions;
+                handleDrawableResourceId = R.drawable.ic_incall_audio_handle;
+                break;
+            case TARGET_SET_FOR_VIDEO_WITHOUT_SMS:
+                targetResourceId = R.array.incoming_call_widget_video_without_sms_targets;
+                targetDescriptionsResourceId =
+                        R.array.incoming_call_widget_video_without_sms_target_descriptions;
+                directionDescriptionsResourceId =
+                        R.array.incoming_call_widget_video_without_sms_direction_descriptions;
+                handleDrawableResourceId = R.drawable.ic_incall_video_handle;
+                break;
+            case TARGET_SET_FOR_VIDEO_WITH_SMS:
+                targetResourceId = R.array.incoming_call_widget_video_with_sms_targets;
+                targetDescriptionsResourceId =
+                        R.array.incoming_call_widget_video_with_sms_target_descriptions;
+                directionDescriptionsResourceId =
+                        R.array.incoming_call_widget_video_with_sms_direction_descriptions;
+                handleDrawableResourceId = R.drawable.ic_incall_video_handle;
+                break;
+            case TARGET_SET_FOR_VIDEO_ACCEPT_REJECT_REQUEST:
+                targetResourceId =
+                        R.array.incoming_call_widget_video_request_targets;
+                targetDescriptionsResourceId =
+                        R.array.incoming_call_widget_video_request_target_descriptions;
+                directionDescriptionsResourceId = R.array
+                        .incoming_call_widget_video_request_target_direction_descriptions;
+                handleDrawableResourceId = R.drawable.ic_incall_video_handle;
+                break;
+            case TARGET_SET_FOR_AUDIO_WITHOUT_SMS:
+            default:
+                targetResourceId = R.array.incoming_call_widget_audio_without_sms_targets;
+                targetDescriptionsResourceId =
+                        R.array.incoming_call_widget_audio_without_sms_target_descriptions;
+                directionDescriptionsResourceId =
+                        R.array.incoming_call_widget_audio_without_sms_direction_descriptions;
+                handleDrawableResourceId = R.drawable.ic_incall_audio_handle;
+                break;
+        }
+
+        if (targetResourceId != mGlowpad.getTargetResourceId()) {
+            mGlowpad.setTargetResources(targetResourceId);
+            mGlowpad.setTargetDescriptionsResourceId(targetDescriptionsResourceId);
+            mGlowpad.setDirectionDescriptionsResourceId(directionDescriptionsResourceId);
+            mGlowpad.setHandleDrawable(handleDrawableResourceId);
+            mGlowpad.reset(false);
+        }
+    }
+
+    @Override
+    protected void onMessageDialogCancel() {
+        if (mGlowpad != null) {
+            mGlowpad.startPing();
+        }
+    }
+}
diff --git a/InCallUI/src/com/android/incallui/GlowPadWrapper.java b/InCallUI/src/com/android/incallui/GlowPadWrapper.java
index ea5fc92..1bd6d39 100644
--- a/InCallUI/src/com/android/incallui/GlowPadWrapper.java
+++ b/InCallUI/src/com/android/incallui/GlowPadWrapper.java
@@ -46,7 +46,7 @@
         }
     };
 
-    private AnswerListener mAnswerListener;
+    private AnswerFragment mAnswerFragment;
     private boolean mPingEnabled = true;
     private boolean mTargetTriggered = false;
     private int mVideoState = VideoProfile.STATE_BIDIRECTIONAL;
@@ -113,24 +113,24 @@
         final int resId = getResourceIdForTarget(target);
         switch (resId) {
             case R.drawable.ic_lockscreen_answer:
-                mAnswerListener.onAnswer(VideoProfile.STATE_AUDIO_ONLY, getContext());
+                mAnswerFragment.onAnswer(VideoProfile.STATE_AUDIO_ONLY, getContext());
                 mTargetTriggered = true;
                 break;
             case R.drawable.ic_lockscreen_decline:
-                mAnswerListener.onDecline(getContext());
+                mAnswerFragment.onDecline(getContext());
                 mTargetTriggered = true;
                 break;
             case R.drawable.ic_lockscreen_text:
-                mAnswerListener.onText();
+                mAnswerFragment.onText();
                 mTargetTriggered = true;
                 break;
             case R.drawable.ic_videocam:
             case R.drawable.ic_lockscreen_answer_video:
-                mAnswerListener.onAnswer(mVideoState, getContext());
+                mAnswerFragment.onAnswer(mVideoState, getContext());
                 mTargetTriggered = true;
                 break;
             case R.drawable.ic_lockscreen_decline_video:
-                mAnswerListener.onDeclineUpgradeRequest(getContext());
+                mAnswerFragment.onDeclineUpgradeRequest(getContext());
                 mTargetTriggered = true;
                 break;
             default:
@@ -149,8 +149,8 @@
 
     }
 
-    public void setAnswerListener(AnswerListener listener) {
-        mAnswerListener = listener;
+    public void setAnswerFragment(AnswerFragment fragment) {
+        mAnswerFragment = fragment;
     }
 
     /**
@@ -161,11 +161,4 @@
     public void setVideoState(int videoState) {
         mVideoState = videoState;
     }
-
-    public interface AnswerListener {
-        void onAnswer(int videoState, Context context);
-        void onDecline(Context context);
-        void onDeclineUpgradeRequest(Context context);
-        void onText();
-    }
 }
diff --git a/InCallUI/src/com/android/incallui/InCallActivity.java b/InCallUI/src/com/android/incallui/InCallActivity.java
index c6892b2..dff2747 100644
--- a/InCallUI/src/com/android/incallui/InCallActivity.java
+++ b/InCallUI/src/com/android/incallui/InCallActivity.java
@@ -26,8 +26,8 @@
 import android.app.FragmentTransaction;
 import android.content.Context;
 import android.content.DialogInterface;
-import android.content.DialogInterface.OnClickListener;
 import android.content.DialogInterface.OnCancelListener;
+import android.content.DialogInterface.OnClickListener;
 import android.content.Intent;
 import android.content.res.Configuration;
 import android.graphics.Point;
@@ -37,24 +37,31 @@
 import android.telecom.DisconnectCause;
 import android.telecom.PhoneAccountHandle;
 import android.text.TextUtils;
-import android.view.Display;
+import android.view.KeyEvent;
 import android.view.MenuItem;
+import android.view.MotionEvent;
 import android.view.OrientationEventListener;
 import android.view.Surface;
-import android.view.animation.Animation;
-import android.view.animation.AnimationUtils;
-import android.view.KeyEvent;
 import android.view.View;
+import android.view.View.OnTouchListener;
 import android.view.Window;
 import android.view.WindowManager;
 import android.view.accessibility.AccessibilityEvent;
+import android.view.animation.Animation;
+import android.view.animation.AnimationUtils;
 
-import com.android.phone.common.animation.AnimUtils;
-import com.android.phone.common.animation.AnimationListenerAdapter;
+import com.android.contacts.common.activity.TransactionSafeActivity;
+import com.android.contacts.common.compat.CompatUtils;
 import com.android.contacts.common.interactions.TouchPointManager;
 import com.android.contacts.common.widget.SelectPhoneAccountDialogFragment;
 import com.android.contacts.common.widget.SelectPhoneAccountDialogFragment.SelectPhoneAccountListener;
+import com.android.dialer.logging.Logger;
+import com.android.dialer.logging.ScreenEvent;
 import com.android.incallui.Call.State;
+import com.android.incallui.compat.telecom.DetailsCompat;
+import com.android.incallui.util.AccessibilityUtil;
+import com.android.phone.common.animation.AnimUtils;
+import com.android.phone.common.animation.AnimationListenerAdapter;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -63,7 +70,7 @@
 /**
  * Main activity that the user interacts with while in a live call.
  */
-public class InCallActivity extends Activity implements FragmentDisplayManager {
+public class InCallActivity extends TransactionSafeActivity implements FragmentDisplayManager {
 
     public static final String TAG = InCallActivity.class.getSimpleName();
 
@@ -77,6 +84,10 @@
     private static final String TAG_ANSWER_FRAGMENT = "tag_answer_fragment";
     private static final String TAG_SELECT_ACCT_FRAGMENT = "tag_select_acct_fragment";
 
+    private static final int DIALPAD_REQUEST_NONE = 1;
+    private static final int DIALPAD_REQUEST_SHOW = 2;
+    private static final int DIALPAD_REQUEST_HIDE = 3;
+
     private CallButtonFragment mCallButtonFragment;
     private CallCardFragment mCallCardFragment;
     private AnswerFragment mAnswerFragment;
@@ -84,19 +95,30 @@
     private ConferenceManagerFragment mConferenceManagerFragment;
     private FragmentManager mChildFragmentManager;
 
-    private boolean mIsVisible;
     private AlertDialog mDialog;
+    private InCallOrientationEventListener mInCallOrientationEventListener;
 
-    /** Use to pass 'showDialpad' from {@link #onNewIntent} to {@link #onResume} */
-    private boolean mShowDialpadRequested;
+    /**
+     * Used to indicate whether the dialpad should be hidden or shown {@link #onResume}.
+     * {@code #DIALPAD_REQUEST_SHOW} indicates that the dialpad should be shown.
+     * {@code #DIALPAD_REQUEST_HIDE} indicates that the dialpad should be hidden.
+     * {@code #DIALPAD_REQUEST_NONE} indicates no change should be made to dialpad visibility.
+     */
+    private int mShowDialpadRequest = DIALPAD_REQUEST_NONE;
 
-    /** Use to determine if the dialpad should be animated on show. */
+    /**
+     * Use to determine if the dialpad should be animated on show.
+     */
     private boolean mAnimateDialpadOnShow;
 
-    /** Use to determine the DTMF Text which should be pre-populated in the dialpad. */
+    /**
+     * Use to determine the DTMF Text which should be pre-populated in the dialpad.
+     */
     private String mDtmfText;
 
-    /** Use to pass parameters for showing the PostCharDialog to {@link #onResume} */
+    /**
+     * Use to pass parameters for showing the PostCharDialog to {@link #onResume}
+     */
     private boolean mShowPostCharWaitDialogOnResume;
     private String mShowPostCharWaitDialogCallId;
     private String mShowPostCharWaitDialogChars;
@@ -113,6 +135,8 @@
         }
     };
 
+    private OnTouchListener mDispatchTouchEventListener;
+
     private SelectPhoneAccountListener mSelectAcctListener = new SelectPhoneAccountListener() {
         @Override
         public void onPhoneAccountSelected(PhoneAccountHandle selectedAccountHandle,
@@ -120,20 +144,13 @@
             InCallPresenter.getInstance().handleAccountSelection(selectedAccountHandle,
                     setDefault);
         }
+
         @Override
         public void onDialogDismissed() {
             InCallPresenter.getInstance().cancelAccountSelection();
         }
     };
 
-    /** Listener for orientation changes. */
-    private OrientationEventListener mOrientationEventListener;
-
-    /**
-     * Used to determine if a change in rotation has occurred.
-     */
-    private static int sPreviousRotation = -1;
-
     @Override
     protected void onCreate(Bundle icicle) {
         Log.d(this, "onCreate()...  this = " + this);
@@ -185,54 +202,33 @@
 
         mSlideOut.setAnimationListener(mSlideOutListener);
 
+        // If the dialpad fragment already exists, retrieve it.  This is important when rotating as
+        // we will not be able to hide or show the dialpad after the rotation otherwise.
+        Fragment existingFragment =
+                getFragmentManager().findFragmentByTag(DialpadFragment.class.getName());
+        if (existingFragment != null) {
+            mDialpadFragment = (DialpadFragment) existingFragment;
+        }
+
         if (icicle != null) {
             // If the dialpad was shown before, set variables indicating it should be shown and
             // populated with the previous DTMF text.  The dialpad is actually shown and populated
             // in onResume() to ensure the hosting CallCardFragment has been inflated and is ready
             // to receive it.
-            mShowDialpadRequested = icicle.getBoolean(SHOW_DIALPAD_EXTRA);
-            mAnimateDialpadOnShow = false;
+            if (icicle.containsKey(SHOW_DIALPAD_EXTRA)) {
+                boolean showDialpad = icicle.getBoolean(SHOW_DIALPAD_EXTRA);
+                mShowDialpadRequest = showDialpad ? DIALPAD_REQUEST_SHOW : DIALPAD_REQUEST_HIDE;
+                mAnimateDialpadOnShow = false;
+            }
             mDtmfText = icicle.getString(DIALPAD_TEXT_EXTRA);
 
             SelectPhoneAccountDialogFragment dialogFragment = (SelectPhoneAccountDialogFragment)
-                getFragmentManager().findFragmentByTag(TAG_SELECT_ACCT_FRAGMENT);
+                    getFragmentManager().findFragmentByTag(TAG_SELECT_ACCT_FRAGMENT);
             if (dialogFragment != null) {
                 dialogFragment.setListener(mSelectAcctListener);
             }
         }
-
-        mOrientationEventListener = new OrientationEventListener(this,
-                SensorManager.SENSOR_DELAY_NORMAL) {
-            @Override
-            public void onOrientationChanged(int orientation) {
-                // Device is flat, don't change orientation.
-                if (orientation == OrientationEventListener.ORIENTATION_UNKNOWN) {
-                    return;
-                }
-
-                int newRotation = Surface.ROTATION_0;
-                // We only shift if we're within 22.5 (23) degrees of the target
-                // orientation. This avoids flopping back and forth when holding
-                // the device at 45 degrees or so.
-                if (orientation >= 337 || orientation <= 23) {
-                    newRotation = Surface.ROTATION_0;
-                } else if (orientation >= 67 && orientation <= 113) {
-                    // Why not 90? Because screen and sensor orientation are
-                    // reversed.
-                    newRotation = Surface.ROTATION_270;
-                } else if (orientation >= 157 && orientation <= 203) {
-                    newRotation = Surface.ROTATION_180;
-                } else if (orientation >= 247 && orientation <= 293) {
-                    newRotation = Surface.ROTATION_90;
-                }
-
-                // Orientation is the current device orientation in degrees.  Ultimately we want
-                // the rotation (in fixed 90 degree intervals).
-                if (newRotation != sPreviousRotation) {
-                    doOrientationChanged(newRotation);
-                }
-            }
-        };
+        mInCallOrientationEventListener = new InCallOrientationEventListener(this);
 
         Log.d(this, "onCreate(): exit");
     }
@@ -253,18 +249,10 @@
         Log.d(this, "onStart()...");
         super.onStart();
 
-        mIsVisible = true;
-
-        if (mOrientationEventListener.canDetectOrientation()) {
-            Log.v(this, "Orientation detection enabled.");
-            mOrientationEventListener.enable();
-        } else {
-            Log.v(this, "Orientation detection disabled.");
-            mOrientationEventListener.disable();
-        }
-
         // setting activity should be last thing in setup process
         InCallPresenter.getInstance().setActivity(this);
+        enableInCallOrientationEventListener(getRequestedOrientation() ==
+               InCallOrientationEventListener.FULL_SENSOR_SCREEN_ORIENTATION);
 
         InCallPresenter.getInstance().onActivityStarted();
     }
@@ -277,16 +265,31 @@
         InCallPresenter.getInstance().setThemeColors();
         InCallPresenter.getInstance().onUiShowing(true);
 
-        if (mShowDialpadRequested) {
-            mCallButtonFragment.displayDialpad(true /* show */,
-                    mAnimateDialpadOnShow /* animate */);
-            mShowDialpadRequested = false;
-            mAnimateDialpadOnShow = false;
+        // Clear fullscreen state onResume; the stored value may not match reality.
+        InCallPresenter.getInstance().clearFullscreen();
 
-            if (mDialpadFragment != null) {
-                mDialpadFragment.setDtmfText(mDtmfText);
-                mDtmfText = null;
+        // If there is a pending request to show or hide the dialpad, handle that now.
+        if (mShowDialpadRequest != DIALPAD_REQUEST_NONE) {
+            if (mShowDialpadRequest == DIALPAD_REQUEST_SHOW) {
+                // Exit fullscreen so that the user has access to the dialpad hide/show button and
+                // can hide the dialpad.  Important when showing the dialpad from within dialer.
+                InCallPresenter.getInstance().setFullScreen(false, true /* force */);
+
+                mCallButtonFragment.displayDialpad(true /* show */,
+                        mAnimateDialpadOnShow /* animate */);
+                mAnimateDialpadOnShow = false;
+
+                if (mDialpadFragment != null) {
+                    mDialpadFragment.setDtmfText(mDtmfText);
+                    mDtmfText = null;
+                }
+            } else {
+                Log.v(this, "onResume : force hide dialpad");
+                if (mDialpadFragment != null) {
+                    mCallButtonFragment.displayDialpad(false /* show */, false /* animate */);
+                }
             }
+            mShowDialpadRequest = DIALPAD_REQUEST_NONE;
         }
 
         if (mShowPostCharWaitDialogOnResume) {
@@ -299,7 +302,7 @@
     @Override
     protected void onPause() {
         Log.d(this, "onPause()...");
-        if (mDialpadFragment != null ) {
+        if (mDialpadFragment != null) {
             mDialpadFragment.onDialerKeyUp(null);
         }
 
@@ -313,10 +316,9 @@
     @Override
     protected void onStop() {
         Log.d(this, "onStop()...");
-        mIsVisible = false;
+        enableInCallOrientationEventListener(false);
         InCallPresenter.getInstance().updateIsChangingConfigurations();
         InCallPresenter.getInstance().onActivityStopped();
-        mOrientationEventListener.disable();
         super.onStop();
     }
 
@@ -352,10 +354,10 @@
     }
 
     /**
-     * Returns true when the Activity is currently visible (between onStart and onStop).
+     * Returns true when the Activity is currently visible.
      */
     /* package */ boolean isVisible() {
-        return mIsVisible;
+        return isSafeToCommitTransactions();
     }
 
     private boolean hasPendingDialogs() {
@@ -399,6 +401,9 @@
 
         // BACK is also used to exit out of any "special modes" of the
         // in-call UI:
+        if (!isVisible()) {
+            return;
+        }
 
         if ((mConferenceManagerFragment == null || !mConferenceManagerFragment.isVisible())
                 && (mCallCardFragment == null || !mCallCardFragment.isVisible())) {
@@ -438,7 +443,7 @@
     public boolean onKeyUp(int keyCode, KeyEvent event) {
         // push input to the dialer.
         if (mDialpadFragment != null && (mDialpadFragment.isVisible()) &&
-                (mDialpadFragment.onDialerKeyUp(event))){
+                (mDialpadFragment.onDialerKeyUp(event))) {
             return true;
         } else if (keyCode == KeyEvent.KEYCODE_CALL) {
             // Always consume CALL to be sure the PhoneWindow won't do anything with it
@@ -448,6 +453,17 @@
     }
 
     @Override
+    public boolean dispatchTouchEvent(MotionEvent ev) {
+        if (mDispatchTouchEventListener != null) {
+            boolean handled = mDispatchTouchEventListener.onTouch(null, ev);
+            if (handled) {
+                return true;
+            }
+        }
+        return super.dispatchTouchEvent(ev);
+    }
+
+    @Override
     public boolean onKeyDown(int keyCode, KeyEvent event) {
         switch (keyCode) {
             case KeyEvent.KEYCODE_CALL:
@@ -500,7 +516,6 @@
         if (event.getRepeatCount() == 0 && handleDialerKeyDown(keyCode, event)) {
             return true;
         }
-
         return super.onKeyDown(keyCode, event);
     }
 
@@ -517,25 +532,6 @@
         return false;
     }
 
-    /**
-     * Handles changes in device rotation.
-     *
-     * @param rotation The new device rotation (one of: {@link Surface#ROTATION_0},
-     *      {@link Surface#ROTATION_90}, {@link Surface#ROTATION_180},
-     *      {@link Surface#ROTATION_270}).
-     */
-    private void doOrientationChanged(int rotation) {
-        Log.d(this, "doOrientationChanged prevOrientation=" + sPreviousRotation +
-                " newOrientation=" + rotation);
-        // Check to see if the rotation changed to prevent triggering rotation change events
-        // for other configuration changes.
-        if (rotation != sPreviousRotation) {
-            sPreviousRotation = rotation;
-            InCallPresenter.getInstance().onDeviceRotationChange(rotation);
-            InCallPresenter.getInstance().onDeviceOrientationChange(sPreviousRotation);
-        }
-    }
-
     public CallButtonFragment getCallButtonFragment() {
         return mCallButtonFragment;
     }
@@ -577,7 +573,7 @@
 
                 Bundle extras = null;
                 if (call != null) {
-                    extras = call.getTelecommCall().getDetails().getIntentExtras();
+                    extras = DetailsCompat.getIntentExtras(call.getTelecomCall().getDetails());
                 }
                 if (extras == null) {
                     // Initialize the extras bundle to avoid NPE
@@ -600,8 +596,10 @@
                         InCallPresenter.getInstance());
 
                 // InCallActivity is responsible for disconnecting a new outgoing call if there
-                // is no way of making it (i.e. no valid call capable accounts)
-                if (InCallPresenter.isCallWithNoValidAccounts(call)) {
+                // is no way of making it (i.e. no valid call capable accounts).
+                // If the version is not MSIM compatible, then ignore this code.
+                if (CompatUtils.isMSIMCompatible()
+                        && InCallPresenter.isCallWithNoValidAccounts(call)) {
                     TelecomAdapter.getInstance().disconnectCall(call.getId());
                 }
 
@@ -612,8 +610,8 @@
             Call pendingAccountSelectionCall = CallList.getInstance().getWaitingForAccountCall();
             if (pendingAccountSelectionCall != null) {
                 showCallCardFragment(false);
-                Bundle extras = pendingAccountSelectionCall
-                        .getTelecommCall().getDetails().getIntentExtras();
+                Bundle extras = DetailsCompat.getIntentExtras(pendingAccountSelectionCall
+                        .getTelecomCall().getDetails());
 
                 final List<PhoneAccountHandle> phoneAccountHandles;
                 if (extras != null) {
@@ -630,16 +628,23 @@
             } else if (!newOutgoingCall) {
                 showCallCardFragment(true);
             }
-
             return;
         }
     }
 
+    /**
+     * When relaunching from the dialer app, {@code showDialpad} indicates whether the dialpad
+     * should be shown on launch.
+     *
+     * @param showDialpad {@code true} to indicate the dialpad should be shown on launch, and
+     *                                {@code false} to indicate no change should be made to the
+     *                                dialpad visibility.
+     */
     private void relaunchedFromDialer(boolean showDialpad) {
-        mShowDialpadRequested = showDialpad;
+        mShowDialpadRequest = showDialpad ? DIALPAD_REQUEST_SHOW : DIALPAD_REQUEST_NONE;
         mAnimateDialpadOnShow = true;
 
-        if (mShowDialpadRequested) {
+        if (mShowDialpadRequest == DIALPAD_REQUEST_SHOW) {
             // If there's only one line in use, AND it's on hold, then we're sure the user
             // wants to use the dialpad toward the exact line, so un-hold the holding line.
             final Call call = CallList.getInstance().getActiveOrBackgroundCall();
@@ -684,6 +689,7 @@
             } else {
                 transaction.show(fragment);
             }
+            Logger.logScreenView(getScreenTypeForTag(tag), this);
         } else {
             transaction.hide(fragment);
         }
@@ -700,7 +706,11 @@
             mDialpadFragment = new DialpadFragment();
             return mDialpadFragment;
         } else if (TAG_ANSWER_FRAGMENT.equals(tag)) {
-            mAnswerFragment = new AnswerFragment();
+            if (AccessibilityUtil.isTalkBackEnabled(this)) {
+                mAnswerFragment = new AccessibleAnswerFragment();
+            } else {
+                mAnswerFragment = new GlowPadAnswerFragment();
+            }
             return mAnswerFragment;
         } else if (TAG_CONFERENCE_FRAGMENT.equals(tag)) {
             mConferenceManagerFragment = new ConferenceManagerFragment();
@@ -725,6 +735,21 @@
         throw new IllegalStateException("Unexpected fragment: " + tag);
     }
 
+    private int getScreenTypeForTag(String tag) {
+        switch (tag) {
+            case TAG_DIALPAD_FRAGMENT:
+                return ScreenEvent.INCALL_DIALPAD;
+            case TAG_CALLCARD_FRAGMENT:
+                return ScreenEvent.INCALL;
+            case TAG_CONFERENCE_FRAGMENT:
+                return ScreenEvent.CONFERENCE_MANAGEMENT;
+            case TAG_ANSWER_FRAGMENT:
+                return ScreenEvent.INCOMING_CALL;
+            default:
+                return ScreenEvent.UNKNOWN;
+        }
+    }
+
     private int getContainerIdForFragment(String tag) {
         if (TAG_DIALPAD_FRAGMENT.equals(tag)) {
             return R.id.answer_and_dialpad_container;
@@ -738,10 +763,13 @@
         throw new IllegalStateException("Unexpected fragment: " + tag);
     }
 
-    public void showDialpadFragment(boolean show, boolean animate) {
+    /**
+     * @return {@code true} while the visibility of the dialpad has actually changed.
+     */
+    public boolean showDialpadFragment(boolean show, boolean animate) {
         // If the dialpad is already visible, don't animate in. If it's gone, don't animate out.
         if ((show && isDialpadVisible()) || (!show && !isDialpadVisible())) {
-            return;
+            return false;
         }
         // We don't do a FragmentTransaction on the hide case because it will be dealt with when
         // the listener is fired after an animation finishes.
@@ -760,6 +788,7 @@
         if (sensor != null) {
             sensor.onDialpadVisible(show);
         }
+        return true;
     }
 
     public boolean isDialpadVisible() {
@@ -774,7 +803,7 @@
      * Hides or shows the conference manager fragment.
      *
      * @param show {@code true} if the conference manager should be shown, {@code false} if it
-     *                         should be hidden.
+     * should be hidden.
      */
     public void showConferenceFragment(boolean show) {
         showFragment(TAG_CONFERENCE_FRAGMENT, show, true);
@@ -791,7 +820,7 @@
 
     public void showPostCharWaitDialog(String callId, String chars) {
         if (isVisible()) {
-            final PostCharDialogFragment fragment = new PostCharDialogFragment(callId,  chars);
+            final PostCharDialogFragment fragment = new PostCharDialogFragment(callId, chars);
             fragment.show(getFragmentManager(), "postCharWait");
 
             mShowPostCharWaitDialogOnResume = false;
@@ -817,7 +846,7 @@
 
         if (!isFinishing() && !TextUtils.isEmpty(disconnectCause.getDescription())
                 && (disconnectCause.getCode() == DisconnectCause.ERROR ||
-                        disconnectCause.getCode() == DisconnectCause.RESTRICTED)) {
+                disconnectCause.getCode() == DisconnectCause.RESTRICTED)) {
             showErrorDialog(disconnectCause.getDescription());
         }
     }
@@ -846,12 +875,14 @@
                     @Override
                     public void onClick(DialogInterface dialog, int which) {
                         onDialogDismissed();
-                    }})
+                    }
+                })
                 .setOnCancelListener(new OnCancelListener() {
                     @Override
                     public void onCancel(DialogInterface dialog) {
                         onDialogDismissed();
-                    }})
+                    }
+                })
                 .create();
 
         mDialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
@@ -865,10 +896,10 @@
     }
 
     public void setExcludeFromRecents(boolean exclude) {
-        ActivityManager am = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
+        ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
         List<ActivityManager.AppTask> tasks = am.getAppTasks();
         int taskId = getTaskId();
-        for (int i=0; i<tasks.size(); i++) {
+        for (int i = 0; i < tasks.size(); i++) {
             ActivityManager.AppTask task = tasks.get(i);
             if (task.getTaskInfo().id == taskId) {
                 try {
@@ -879,4 +910,26 @@
             }
         }
     }
+
+
+    public OnTouchListener getDispatchTouchEventListener() {
+        return mDispatchTouchEventListener;
+    }
+
+    public void setDispatchTouchEventListener(OnTouchListener mDispatchTouchEventListener) {
+        this.mDispatchTouchEventListener = mDispatchTouchEventListener;
+    }
+
+    /**
+     * Enables the OrientationEventListener if enable flag is true. Disables it if enable is
+     * false
+     * @param enable true or false.
+     */
+    public void enableInCallOrientationEventListener(boolean enable) {
+        if (enable) {
+            mInCallOrientationEventListener.enable(enable);
+        } else {
+            mInCallOrientationEventListener.disable();
+        }
+    }
 }
diff --git a/InCallUI/src/com/android/incallui/InCallContactInteractions.java b/InCallUI/src/com/android/incallui/InCallContactInteractions.java
new file mode 100644
index 0000000..e627668
--- /dev/null
+++ b/InCallUI/src/com/android/incallui/InCallContactInteractions.java
@@ -0,0 +1,397 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.incallui;
+
+import com.google.common.annotations.VisibleForTesting;
+
+import android.content.Context;
+import android.location.Address;
+import android.text.TextUtils;
+import android.text.format.DateFormat;
+import android.util.Pair;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ArrayAdapter;
+import android.widget.ImageView;
+import android.widget.ListAdapter;
+import android.widget.RelativeLayout;
+import android.widget.RelativeLayout.LayoutParams;
+import android.widget.TextView;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+import java.util.Locale;
+
+/**
+ * Wrapper class for objects that are used in generating the context about the contact in the InCall
+ * screen.
+ *
+ * This handles generating the appropriate resource for the ListAdapter based on whether the contact
+ * is a business contact or not and logic for the manipulation of data for the call context.
+ */
+public class InCallContactInteractions {
+    private static final String TAG = InCallContactInteractions.class.getSimpleName();
+
+    private Context mContext;
+    private InCallContactInteractionsListAdapter mListAdapter;
+    private boolean mIsBusiness;
+    private View mBusinessHeaderView;
+    private LayoutInflater mInflater;
+
+    public InCallContactInteractions(Context context, boolean isBusiness) {
+        mContext = context;
+        mInflater = (LayoutInflater)
+                context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+        switchContactType(isBusiness);
+    }
+
+    public InCallContactInteractionsListAdapter getListAdapter() {
+        return mListAdapter;
+    }
+
+    /**
+     * Switches the "isBusiness" value, if applicable. Recreates the list adapter with the resource
+     * corresponding to the new isBusiness value if the "isBusiness" value is switched.
+     *
+     * @param isBusiness Whether or not the contact is a business.
+     *
+     * @return {@code true} if a new list adapter was created, {@code} otherwise.
+     */
+    public boolean switchContactType(boolean isBusiness) {
+        if (mIsBusiness != isBusiness || mListAdapter == null) {
+            mIsBusiness = isBusiness;
+            mListAdapter = new InCallContactInteractionsListAdapter(mContext,
+                    mIsBusiness ? R.layout.business_context_info_list_item
+                            : R.layout.person_context_info_list_item);
+            return true;
+        }
+        return false;
+    }
+
+    public View getBusinessListHeaderView() {
+        if (mBusinessHeaderView == null) {
+            mBusinessHeaderView = mInflater.inflate(
+                    R.layout.business_contact_context_list_header, null);
+        }
+        return mBusinessHeaderView;
+    }
+
+    public void setBusinessInfo(Address address, float distance,
+            List<Pair<Calendar, Calendar>> openingHours) {
+        mListAdapter.clear();
+        List<ContactContextInfo> info = new ArrayList<ContactContextInfo>();
+
+        // Hours of operation
+        if (openingHours != null) {
+            BusinessContextInfo hoursInfo = constructHoursInfo(openingHours);
+            if (hoursInfo != null) {
+                info.add(hoursInfo);
+            }
+        }
+
+        // Location information
+        if (address != null) {
+            BusinessContextInfo locationInfo = constructLocationInfo(address, distance);
+            info.add(locationInfo);
+        }
+
+        mListAdapter.addAll(info);
+    }
+
+    /**
+     * Construct a BusinessContextInfo object containing hours of operation information.
+     * The format is:
+     *      [Open now/Closed now]
+     *      [Hours]
+     *
+     * @param openingHours
+     * @return BusinessContextInfo object with the schedule icon, the heading set to whether the
+     * business is open or not and the details set to the hours of operation.
+     */
+    private BusinessContextInfo constructHoursInfo(List<Pair<Calendar, Calendar>> openingHours) {
+        try {
+            return constructHoursInfo(Calendar.getInstance(), openingHours);
+        } catch (Exception e) {
+            // Catch all exceptions here because we don't want any crashes if something goes wrong.
+            Log.e(TAG, "Error constructing hours info: ", e);
+        }
+        return null;
+    }
+
+    /**
+     * Pass in arbitrary current calendar time.
+     */
+    @VisibleForTesting
+    BusinessContextInfo constructHoursInfo(Calendar currentTime,
+            List<Pair<Calendar, Calendar>> openingHours) {
+        if (currentTime == null || openingHours == null || openingHours.size() == 0) {
+            return null;
+        }
+
+        BusinessContextInfo hoursInfo = new BusinessContextInfo();
+        hoursInfo.iconId = R.drawable.ic_schedule_white_24dp;
+
+        boolean isOpenNow = false;
+        // This variable records which interval the current time is after. 0 denotes none of the
+        // intervals, 1 after the first interval, etc. It is also the index of the interval the
+        // current time is in (if open) or the next interval (if closed).
+        int afterInterval = 0;
+        // This variable counts the number of time intervals in today's opening hours.
+        int todaysIntervalCount = 0;
+
+        for (Pair<Calendar, Calendar> hours : openingHours) {
+            if (hours.first.compareTo(currentTime) <= 0
+                    && currentTime.compareTo(hours.second) < 0) {
+                // If the current time is on or after the opening time and strictly before the
+                // closing time, then this business is open.
+                isOpenNow = true;
+            }
+
+            if (currentTime.get(Calendar.DAY_OF_YEAR) == hours.first.get(Calendar.DAY_OF_YEAR)) {
+                todaysIntervalCount += 1;
+            }
+
+            if (currentTime.compareTo(hours.second) > 0) {
+                // This assumes that the list of intervals is sorted by time.
+                afterInterval += 1;
+            }
+        }
+
+        hoursInfo.heading = isOpenNow ? mContext.getString(R.string.open_now)
+                : mContext.getString(R.string.closed_now);
+
+        /*
+         * The following logic determines what to display in various cases for hours of operation.
+         *
+         * - Display all intervals if open now and number of intervals is <=2.
+         * - Display next closing time if open now and number of intervals is >2.
+         * - Display next opening time if currently closed but opens later today.
+         * - Display last time it closed today if closed now and tomorrow's hours are unknown.
+         * - Display tomorrow's first open time if closed today and tomorrow's hours are known.
+         *
+         * NOTE: The logic below assumes that the intervals are sorted by ascending time. Possible
+         * TODO to modify the logic above and ensure this is true.
+         */
+        if (isOpenNow) {
+            if (todaysIntervalCount == 1) {
+                hoursInfo.detail = getTimeSpanStringForHours(openingHours.get(0));
+            } else if (todaysIntervalCount == 2) {
+                hoursInfo.detail = mContext.getString(
+                        R.string.opening_hours,
+                        getTimeSpanStringForHours(openingHours.get(0)),
+                        getTimeSpanStringForHours(openingHours.get(1)));
+            } else if (afterInterval < openingHours.size()) {
+                // This check should not be necessary since if it is currently open, we should not
+                // be after the last interval, but just in case, we don't want to crash.
+                hoursInfo.detail = mContext.getString(
+                        R.string.closes_today_at,
+                        getFormattedTimeForCalendar(openingHours.get(afterInterval).second));
+            }
+        } else { // Currently closed
+            final int lastIntervalToday = todaysIntervalCount - 1;
+            if (todaysIntervalCount == 0) { // closed today
+                hoursInfo.detail = mContext.getString(
+                        R.string.opens_tomorrow_at,
+                        getFormattedTimeForCalendar(openingHours.get(0).first));
+            } else if (currentTime.after(openingHours.get(lastIntervalToday).second)) {
+                // Passed hours for today
+                if (todaysIntervalCount < openingHours.size()) {
+                    // If all of today's intervals are exhausted, assume the next are tomorrow's.
+                    hoursInfo.detail = mContext.getString(
+                            R.string.opens_tomorrow_at,
+                            getFormattedTimeForCalendar(
+                                    openingHours.get(todaysIntervalCount).first));
+                } else {
+                    // Grab the last time it was open today.
+                    hoursInfo.detail = mContext.getString(
+                            R.string.closed_today_at,
+                            getFormattedTimeForCalendar(
+                                    openingHours.get(lastIntervalToday).second));
+                }
+            } else if (afterInterval < openingHours.size()) {
+                // This check should not be necessary since if it is currently before the last
+                // interval, afterInterval should be less than the count of intervals, but just in
+                // case, we don't want to crash.
+                hoursInfo.detail = mContext.getString(
+                        R.string.opens_today_at,
+                        getFormattedTimeForCalendar(openingHours.get(afterInterval).first));
+            }
+        }
+
+        return hoursInfo;
+    }
+
+    String getFormattedTimeForCalendar(Calendar calendar) {
+        return DateFormat.getTimeFormat(mContext).format(calendar.getTime());
+    }
+
+    String getTimeSpanStringForHours(Pair<Calendar, Calendar> hours) {
+        return mContext.getString(R.string.open_time_span,
+                getFormattedTimeForCalendar(hours.first),
+                getFormattedTimeForCalendar(hours.second));
+    }
+
+    /**
+     * Construct a BusinessContextInfo object with the location information of the business.
+     * The format is:
+     *      [Straight line distance in miles or kilometers]
+     *      [Address without state/country/etc.]
+     *
+     * @param address An Address object containing address details of the business
+     * @param distance The distance to the location in meters
+     * @return A BusinessContextInfo object with the location icon, the heading as the distance to
+     * the business and the details containing the address.
+     */
+    private BusinessContextInfo constructLocationInfo(Address address, float distance) {
+        return constructLocationInfo(Locale.getDefault(), address, distance);
+    }
+
+    @VisibleForTesting
+    BusinessContextInfo constructLocationInfo(Locale locale, Address address,
+            float distance) {
+        if (address == null) {
+            return null;
+        }
+
+        BusinessContextInfo locationInfo = new BusinessContextInfo();
+        locationInfo.iconId = R.drawable.ic_location_on_white_24dp;
+        if (distance != DistanceHelper.DISTANCE_NOT_FOUND) {
+            //TODO: add a setting to allow the user to select "KM" or "MI" as their distance units.
+            if (Locale.US.equals(locale)) {
+                locationInfo.heading = mContext.getString(R.string.distance_imperial_away,
+                        distance * DistanceHelper.MILES_PER_METER);
+            } else {
+                locationInfo.heading = mContext.getString(R.string.distance_metric_away,
+                        distance * DistanceHelper.KILOMETERS_PER_METER);
+            }
+        }
+        if (address.getLocality() != null) {
+            locationInfo.detail = mContext.getString(
+                    R.string.display_address,
+                    address.getAddressLine(0),
+                    address.getLocality());
+        } else {
+            locationInfo.detail = address.getAddressLine(0);
+        }
+        return locationInfo;
+    }
+
+    /**
+     * Get the appropriate title for the context.
+     * @return The "Business info" title for a business contact and the "Recent messages" title for
+     *         personal contacts.
+     */
+    public String getContactContextTitle() {
+        return mIsBusiness
+                ? mContext.getResources().getString(R.string.business_contact_context_title)
+                : mContext.getResources().getString(R.string.person_contact_context_title);
+    }
+
+    public static abstract class ContactContextInfo {
+        public abstract void bindView(View listItem);
+    }
+
+    public static class BusinessContextInfo extends ContactContextInfo {
+        int iconId;
+        String heading;
+        String detail;
+
+        @Override
+        public void bindView(View listItem) {
+            ImageView imageView = (ImageView) listItem.findViewById(R.id.icon);
+            TextView headingTextView = (TextView) listItem.findViewById(R.id.heading);
+            TextView detailTextView = (TextView) listItem.findViewById(R.id.detail);
+
+            if (this.iconId == 0 || (this.heading == null && this.detail == null)) {
+                return;
+            }
+
+            imageView.setImageDrawable(listItem.getContext().getDrawable(this.iconId));
+
+            headingTextView.setText(this.heading);
+            headingTextView.setVisibility(TextUtils.isEmpty(this.heading)
+                    ? View.GONE : View.VISIBLE);
+
+            detailTextView.setText(this.detail);
+            detailTextView.setVisibility(TextUtils.isEmpty(this.detail)
+                    ? View.GONE : View.VISIBLE);
+
+        }
+    }
+
+    public static class PersonContextInfo extends ContactContextInfo {
+        boolean isIncoming;
+        String message;
+        String detail;
+
+        @Override
+        public void bindView(View listItem) {
+            TextView messageTextView = (TextView) listItem.findViewById(R.id.message);
+            TextView detailTextView = (TextView) listItem.findViewById(R.id.detail);
+
+            if (this.message == null || this.detail == null) {
+                return;
+            }
+
+            messageTextView.setBackgroundResource(this.isIncoming ?
+                    R.drawable.incoming_sms_background : R.drawable.outgoing_sms_background);
+            messageTextView.setText(this.message);
+            LayoutParams messageLayoutParams = (LayoutParams) messageTextView.getLayoutParams();
+            messageLayoutParams.addRule(this.isIncoming?
+                    RelativeLayout.ALIGN_PARENT_START : RelativeLayout.ALIGN_PARENT_END);
+            messageTextView.setLayoutParams(messageLayoutParams);
+
+            LayoutParams detailLayoutParams = (LayoutParams) detailTextView.getLayoutParams();
+            detailLayoutParams.addRule(this.isIncoming ?
+                    RelativeLayout.ALIGN_PARENT_START : RelativeLayout.ALIGN_PARENT_END);
+            detailTextView.setLayoutParams(detailLayoutParams);
+            detailTextView.setText(this.detail);
+        }
+    }
+
+    /**
+     * A list adapter for call context information. We use the same adapter for both business and
+     * contact context.
+     */
+    private class InCallContactInteractionsListAdapter extends ArrayAdapter<ContactContextInfo> {
+        // The resource id of the list item layout.
+        int mResId;
+
+        public InCallContactInteractionsListAdapter(Context context, int resource) {
+            super(context, resource);
+            mResId = resource;
+        }
+
+        @Override
+        public View getView(int position, View convertView, ViewGroup parent) {
+            View listItem = mInflater.inflate(mResId, null);
+            ContactContextInfo item = getItem(position);
+
+            if (item == null) {
+                return listItem;
+            }
+
+            item.bindView(listItem);
+            return listItem;
+        }
+    }
+}
\ No newline at end of file
diff --git a/InCallUI/src/com/android/incallui/InCallOrientationEventListener.java b/InCallUI/src/com/android/incallui/InCallOrientationEventListener.java
new file mode 100644
index 0000000..d3334a3
--- /dev/null
+++ b/InCallUI/src/com/android/incallui/InCallOrientationEventListener.java
@@ -0,0 +1,151 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.incallui;
+
+import android.content.Context;
+import android.content.res.Configuration;
+import android.view.OrientationEventListener;
+import android.hardware.SensorManager;
+import android.view.Surface;
+import android.content.pm.ActivityInfo;
+
+/**
+ * This class listens to Orientation events and overrides onOrientationChanged which gets
+ * invoked when an orientation change occurs. When that happens, we notify InCallUI registrants
+ * of the change.
+ */
+public class InCallOrientationEventListener extends OrientationEventListener {
+
+    /**
+     * Screen orientation angles one of 0, 90, 180, 270, 360 in degrees.
+     */
+    public static int SCREEN_ORIENTATION_0 = 0;
+    public static int SCREEN_ORIENTATION_90 = 90;
+    public static int SCREEN_ORIENTATION_180 = 180;
+    public static int SCREEN_ORIENTATION_270 = 270;
+    public static int SCREEN_ORIENTATION_360 = 360;
+
+    public static int FULL_SENSOR_SCREEN_ORIENTATION =
+            ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR;
+
+    public static int NO_SENSOR_SCREEN_ORIENTATION =
+            ActivityInfo.SCREEN_ORIENTATION_NOSENSOR;
+
+    /**
+     * This is to identify dead zones where we won't notify others of orientation changed.
+     * Say for e.g our threshold is x degrees. We will only notify UI when our current rotation is
+     * within x degrees right or left of the screen orientation angles. If it's not within those
+     * ranges, we return SCREEN_ORIENTATION_UNKNOWN and ignore it.
+     */
+    private static int SCREEN_ORIENTATION_UNKNOWN = -1;
+
+    // Rotation threshold is 10 degrees. So if the rotation angle is within 10 degrees of any of
+    // the above angles, we will notify orientation changed.
+    private static int ROTATION_THRESHOLD = 10;
+
+
+    /**
+     * Cache the current rotation of the device.
+     */
+    private static int sCurrentOrientation = SCREEN_ORIENTATION_0;
+
+    public InCallOrientationEventListener(Context context) {
+        super(context);
+    }
+
+    /**
+     * Handles changes in device orientation. Notifies InCallPresenter of orientation changes.
+     *
+     * Note that this API receives sensor rotation in degrees as a param and we convert that to
+     * one of our screen orientation constants - (one of: {@link SCREEN_ORIENTATION_0},
+     * {@link SCREEN_ORIENTATION_90}, {@link SCREEN_ORIENTATION_180},
+     * {@link SCREEN_ORIENTATION_270}).
+     *
+     * @param rotation The new device sensor rotation in degrees
+     */
+    @Override
+    public void onOrientationChanged(int rotation) {
+        if (rotation == OrientationEventListener.ORIENTATION_UNKNOWN) {
+            return;
+        }
+
+        final int orientation = toScreenOrientation(rotation);
+
+        if (orientation != SCREEN_ORIENTATION_UNKNOWN && sCurrentOrientation != orientation) {
+            sCurrentOrientation = orientation;
+            InCallPresenter.getInstance().onDeviceOrientationChange(sCurrentOrientation);
+        }
+    }
+
+    /**
+     * Enables the OrientationEventListener and notifies listeners of current orientation if
+     * notify flag is true
+     * @param notify true or false. Notify device orientation changed if true.
+     */
+    public void enable(boolean notify) {
+        super.enable();
+        if (notify) {
+            InCallPresenter.getInstance().onDeviceOrientationChange(sCurrentOrientation);
+        }
+    }
+
+    /**
+     * Enables the OrientationEventListener with notify flag defaulting to false.
+     */
+    public void enable() {
+        enable(false);
+    }
+
+    /**
+     * Converts sensor rotation in degrees to screen orientation constants.
+     * @param rotation sensor rotation angle in degrees
+     * @return Screen orientation angle in degrees (0, 90, 180, 270). Returns -1 for degrees not
+     * within threshold to identify zones where orientation change should not be trigerred.
+     */
+    private int toScreenOrientation(int rotation) {
+        // Sensor orientation 90 is equivalent to screen orientation 270 and vice versa. This
+        // function returns the screen orientation. So we convert sensor rotation 90 to 270 and
+        // vice versa here.
+        if (isInLeftRange(rotation, SCREEN_ORIENTATION_360, ROTATION_THRESHOLD) ||
+                isInRightRange(rotation, SCREEN_ORIENTATION_0, ROTATION_THRESHOLD)) {
+            return SCREEN_ORIENTATION_0;
+        } else if (isWithinThreshold(rotation, SCREEN_ORIENTATION_90, ROTATION_THRESHOLD)) {
+            return SCREEN_ORIENTATION_270;
+        } else if (isWithinThreshold(rotation, SCREEN_ORIENTATION_180, ROTATION_THRESHOLD)) {
+            return SCREEN_ORIENTATION_180;
+        } else if (isWithinThreshold(rotation, SCREEN_ORIENTATION_270, ROTATION_THRESHOLD)) {
+            return SCREEN_ORIENTATION_90;
+        }
+        return SCREEN_ORIENTATION_UNKNOWN;
+    }
+
+    private static boolean isWithinRange(int value, int begin, int end) {
+        return value >= begin && value < end;
+    }
+
+    private static boolean isWithinThreshold(int value, int center, int threshold) {
+        return isWithinRange(value, center - threshold, center + threshold);
+    }
+
+    private static boolean isInLeftRange(int value, int center, int threshold) {
+        return isWithinRange(value, center - threshold, center);
+    }
+
+    private static boolean isInRightRange(int value, int center, int threshold) {
+        return isWithinRange(value, center, center + threshold);
+    }
+}
diff --git a/InCallUI/src/com/android/incallui/InCallPresenter.java b/InCallUI/src/com/android/incallui/InCallPresenter.java
index 2d7d40a..f50da8d 100644
--- a/InCallUI/src/com/android/incallui/InCallPresenter.java
+++ b/InCallUI/src/com/android/incallui/InCallPresenter.java
@@ -16,32 +16,49 @@
 
 package com.android.incallui;
 
+import com.google.common.base.Preconditions;
+
 import android.app.ActivityManager.TaskDescription;
 import android.app.FragmentManager;
 import android.content.Context;
 import android.content.Intent;
-import android.content.pm.ActivityInfo;
 import android.content.res.Resources;
+import android.database.ContentObserver;
 import android.graphics.Point;
-import android.net.Uri;
+import android.os.Build;
 import android.os.Bundle;
+import android.os.Handler;
+import android.provider.CallLog;
 import android.telecom.DisconnectCause;
 import android.telecom.PhoneAccount;
 import android.telecom.PhoneAccountHandle;
 import android.telecom.TelecomManager;
 import android.telecom.VideoProfile;
-import android.telephony.PhoneNumberUtils;
+import android.telephony.PhoneStateListener;
+import android.telephony.TelephonyManager;
 import android.text.TextUtils;
-import android.view.Surface;
 import android.view.View;
 import android.view.Window;
 import android.view.WindowManager;
 
+import com.android.contacts.common.GeoUtil;
+import com.android.contacts.common.compat.CompatUtils;
+import com.android.contacts.common.compat.SdkVersionOverride;
+import com.android.contacts.common.compat.telecom.TelecomManagerCompat;
 import com.android.contacts.common.interactions.TouchPointManager;
 import com.android.contacts.common.testing.NeededForTesting;
 import com.android.contacts.common.util.MaterialColorMapUtils.MaterialPalette;
+import com.android.dialer.calllog.CallLogAsyncTaskUtil;
+import com.android.dialer.calllog.CallLogAsyncTaskUtil.OnCallLogQueryFinishedListener;
+import com.android.dialer.database.FilteredNumberAsyncQueryHandler;
+import com.android.dialer.database.FilteredNumberAsyncQueryHandler.OnCheckBlockedListener;
+import com.android.dialer.filterednumber.FilteredNumbersUtil;
+import com.android.dialer.logging.InteractionEvent;
+import com.android.dialer.logging.Logger;
+import com.android.dialer.util.TelecomUtil;
+import com.android.incallui.compat.telecom.DetailsCompat;
+import com.android.incallui.util.TelecomCallUtil;
 import com.android.incalluibind.ObjectFactory;
-import com.google.common.base.Preconditions;
 
 import java.util.Collections;
 import java.util.List;
@@ -49,6 +66,7 @@
 import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.concurrent.atomic.AtomicBoolean;
 
 /**
  * Takes updates from the CallList and notifies the InCallActivity (UI)
@@ -65,6 +83,8 @@
     private static final String EXTRA_FIRST_TIME_SHOWN =
             "com.android.incallui.intent.extra.FIRST_TIME_SHOWN";
 
+    private static final long BLOCK_QUERY_TIMEOUT_MS = 1000;
+
     private static final Bundle EMPTY_EXTRAS = new Bundle();
 
     private static InCallPresenter sInCallPresenter;
@@ -100,6 +120,7 @@
     private boolean mAccountSelectionCancelled = false;
     private InCallCameraManager mInCallCameraManager = null;
     private AnswerPresenter mAnswerPresenter = new AnswerPresenter();
+    private FilteredNumberAsyncQueryHandler mFilteredQueryHandler;
 
     /**
      * Whether or not we are currently bound and waiting for Telecom to send us a new call.
@@ -117,37 +138,164 @@
      */
     private boolean mIsFullScreen = false;
 
-    private final android.telecom.Call.Callback mCallCallback =
-            new android.telecom.Call.Callback() {
-        @Override
-        public void onPostDialWait(android.telecom.Call telecomCall,
-                String remainingPostDialSequence) {
-            final Call call = mCallList.getCallByTelecommCall(telecomCall);
-            if (call == null) {
-                Log.w(this, "Call not found in call list: " + telecomCall);
-                return;
+    private final Object mCallCallback = newTelecomCallCallback();
+
+    private Object newTelecomCallCallback() {
+        if (SdkVersionOverride.getSdkVersion(Build.VERSION_CODES.M) >= Build.VERSION_CODES.M) {
+            return newMarshmallowTelecomCallCallback();
+        }
+        return newLollipopTelecomCallCallback();
+    }
+
+    private Object newMarshmallowTelecomCallCallback() {
+        Log.i(this, "Using android.telecom.Call.Callback");
+        return new android.telecom.Call.Callback() {
+            @Override
+            public void onPostDialWait(android.telecom.Call telecomCall,
+                    String remainingPostDialSequence) {
+                final Call call = mCallList.getCallByTelecomCall(telecomCall);
+                if (call == null) {
+                    Log.w(this, "Call not found in call list: " + telecomCall);
+                    return;
+                }
+                onPostDialCharWait(call.getId(), remainingPostDialSequence);
             }
-            onPostDialCharWait(call.getId(), remainingPostDialSequence);
+
+            @Override
+            public void onDetailsChanged(android.telecom.Call telecomCall,
+                    android.telecom.Call.Details details) {
+                final Call call = mCallList.getCallByTelecomCall(telecomCall);
+                if (call == null) {
+                    Log.w(this, "Call not found in call list: " + telecomCall);
+                    return;
+                }
+                for (InCallDetailsListener listener : mDetailsListeners) {
+                    listener.onDetailsChanged(call, details);
+                }
+            }
+
+            @Override
+            public void onConferenceableCallsChanged(android.telecom.Call telecomCall,
+                    List<android.telecom.Call> conferenceableCalls) {
+                Log.i(this, "onConferenceableCallsChanged: " + telecomCall);
+                onDetailsChanged(telecomCall, telecomCall.getDetails());
+            }
+        };
+    }
+
+    private Object newLollipopTelecomCallCallback() {
+        // This code only runs for Google Experience phones on the pre-M sdk since only the system
+        // dialer can invoke the InCallUI code. This allows us to safely use the
+        // android.telecom.Call.Listener interface
+        Log.i(this, "Using android.telecom.Call.Listener");
+        return new android.telecom.Call.Listener() {
+            @Override
+            public void onPostDialWait(android.telecom.Call telecomCall,
+                    String remainingPostDialSequence) {
+                final Call call = mCallList.getCallByTelecomCall(telecomCall);
+                if (call == null) {
+                    Log.w(this, "Call not found in call list: " + telecomCall);
+                    return;
+                }
+                onPostDialCharWait(call.getId(), remainingPostDialSequence);
+            }
+
+            @Override
+            public void onDetailsChanged(android.telecom.Call telecomCall,
+                    android.telecom.Call.Details details) {
+                final Call call = mCallList.getCallByTelecomCall(telecomCall);
+                if (call == null) {
+                    Log.w(this, "Call not found in call list: " + telecomCall);
+                    return;
+                }
+                for (InCallDetailsListener listener : mDetailsListeners) {
+                    listener.onDetailsChanged(call, details);
+                }
+            }
+
+            @Override
+            public void onConferenceableCallsChanged(android.telecom.Call telecomCall,
+                    List<android.telecom.Call> conferenceableCalls) {
+                Log.i(this, "onConferenceableCallsChanged: " + telecomCall);
+                onDetailsChanged(telecomCall, telecomCall.getDetails());
+            }
+        };
+    }
+
+    private PhoneStateListener mPhoneStateListener = new PhoneStateListener() {
+        public void onCallStateChanged(int state, String incomingNumber) {
+            if (state == TelephonyManager.CALL_STATE_RINGING) {
+                // Check if the number is blocked, to silence the ringer.
+                String countryIso = GeoUtil.getCurrentCountryIso(mContext);
+                mFilteredQueryHandler.isBlockedNumber(
+                        mOnCheckBlockedListener, incomingNumber, countryIso);
+            }
+        }
+    };
+
+    private final OnCheckBlockedListener mOnCheckBlockedListener = new OnCheckBlockedListener() {
+        @Override
+        public void onCheckComplete(final Integer id) {
+            if (id != null) {
+                // Silence the ringer now to prevent ringing and vibration before the call is
+                // terminated when Telecom attempts to add it.
+                TelecomUtil.silenceRinger(mContext);
+            }
+        }
+    };
+
+    /**
+     * Observes the CallLog to delete the call log entry for the blocked call after it is added.
+     * Times out if too much time has passed.
+     */
+    private class BlockedNumberContentObserver extends ContentObserver {
+        private static final int TIMEOUT_MS = 5000;
+
+        private Handler mHandler;
+        private String mNumber;
+        private long mTimeAddedMs;
+
+        private Runnable mTimeoutRunnable = new Runnable() {
+            @Override
+            public void run() {
+                unregister();
+            }
+        };
+
+        public BlockedNumberContentObserver(Handler handler, String number, long timeAddedMs) {
+            super(handler);
+
+            mHandler = handler;
+            mNumber = number;
+            mTimeAddedMs = timeAddedMs;
         }
 
         @Override
-        public void onDetailsChanged(android.telecom.Call telecomCall,
-                android.telecom.Call.Details details) {
-            final Call call = mCallList.getCallByTelecommCall(telecomCall);
-            if (call == null) {
-                Log.w(this, "Call not found in call list: " + telecomCall);
-                return;
-            }
-            for (InCallDetailsListener listener : mDetailsListeners) {
-                listener.onDetailsChanged(call, details);
+        public void onChange(boolean selfChange) {
+            CallLogAsyncTaskUtil.deleteBlockedCall(mContext, mNumber, mTimeAddedMs,
+                    new OnCallLogQueryFinishedListener() {
+                        @Override
+                        public void onQueryFinished(boolean hasEntry) {
+                            if (mContext != null && hasEntry) {
+                                unregister();
+                            }
+                        }
+                    });
+        }
+
+        public void register() {
+            if (mContext != null) {
+                mContext.getContentResolver().registerContentObserver(
+                        CallLog.CONTENT_URI, true, this);
+                mHandler.postDelayed(mTimeoutRunnable, TIMEOUT_MS);
             }
         }
 
-        @Override
-        public void onConferenceableCallsChanged(android.telecom.Call telecomCall,
-                List<android.telecom.Call> conferenceableCalls) {
-            Log.i(this, "onConferenceableCallsChanged: " + telecomCall);
-            onDetailsChanged(telecomCall, telecomCall.getDetails());
+        private void unregister() {
+            if (mContext != null) {
+                mHandler.removeCallbacks(mTimeoutRunnable);
+                mContext.getContentResolver().unregisterContentObserver(this);
+            }
         }
     };
 
@@ -176,6 +324,7 @@
     private MaterialPalette mThemeColors;
 
     private TelecomManager mTelecomManager;
+    private TelephonyManager mTelephonyManager;
 
     public static synchronized InCallPresenter getInstance() {
         if (sInCallPresenter == null) {
@@ -239,6 +388,11 @@
 
         VideoPauseController.getInstance().setUp(this);
 
+        mFilteredQueryHandler = new FilteredNumberAsyncQueryHandler(context.getContentResolver());
+        mTelephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
+        mTelephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_CALL_STATE);
+        mCallList.setFilteredNumberQueryHandler(mFilteredQueryHandler);
+
         Log.d(this, "Finished InCallPresenter.setUp");
     }
 
@@ -252,9 +406,12 @@
      */
     public void tearDown() {
         Log.d(this, "tearDown");
+        mCallList.clearOnDisconnect();
+
         mServiceConnected = false;
         attemptCleanup();
 
+        mTelephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_NONE);
         VideoPauseController.getInstance().tearDown();
     }
 
@@ -387,23 +544,96 @@
         bringToForeground(showDialpad);
     }
 
-    /**
-     * TODO: Consider listening to CallList callbacks to do this instead of receiving a direct
-     * method invocation from InCallService.
-     */
-    public void onCallAdded(android.telecom.Call call) {
-        // Since a call has been added we are no longer waiting for Telecom to send us a
-        // call.
+    public void onCallAdded(final android.telecom.Call call) {
+        // Check if call should be blocked.
+        if (!TelecomCallUtil.isEmergencyCall(call)
+                && !FilteredNumbersUtil.hasRecentEmergencyCall(mContext)
+                && call.getState() == android.telecom.Call.STATE_RINGING) {
+            maybeBlockCall(call);
+        } else {
+            mCallList.onCallAdded(call);
+        }
+
+        // Since a call has been added we are no longer waiting for Telecom to send us a call.
         setBoundAndWaitingForOutgoingCall(false, null);
-        call.registerCallback(mCallCallback);
+        if (SdkVersionOverride.getSdkVersion(Build.VERSION_CODES.M) >= Build.VERSION_CODES.M) {
+            call.registerCallback((android.telecom.Call.Callback) mCallCallback);
+        } else {
+            call.addListener((android.telecom.Call.Listener) mCallCallback);
+        }
     }
 
     /**
-     * TODO: Consider listening to CallList callbacks to do this instead of receiving a direct
-     * method invocation from InCallService.
+     * Checks whether a call should be blocked, and blocks it if so. Otherwise, it adds the call
+     * to the CallList so it can proceed as normal. There is a timeout, so if the function for
+     * checking whether a function is blocked does not return in a reasonable time, we proceed
+     * with adding the call anyways.
      */
+    private void maybeBlockCall(final android.telecom.Call call) {
+        final String countryIso = GeoUtil.getCurrentCountryIso(mContext);
+        final String number = TelecomCallUtil.getNumber(call);
+        final long timeAdded = System.currentTimeMillis();
+
+        // Though AtomicBoolean's can be scary, don't fear, as in this case it is only used on the
+        // main UI thread. It is needed so we can change its value within different scopes, since
+        // that cannot be done with a final boolean.
+        final AtomicBoolean hasTimedOut = new AtomicBoolean(false);
+
+        final Handler handler = new Handler();
+
+        // Proceed if the query is slow; the call may still be blocked after the query returns.
+        final Runnable runnable = new Runnable() {
+            public void run() {
+                hasTimedOut.set(true);
+                mCallList.onCallAdded(call);
+            }
+        };
+        handler.postDelayed(runnable, BLOCK_QUERY_TIMEOUT_MS);
+
+        OnCheckBlockedListener onCheckBlockedListener = new OnCheckBlockedListener() {
+            @Override
+            public void onCheckComplete(final Integer id) {
+                if (!hasTimedOut.get()) {
+                    handler.removeCallbacks(runnable);
+                }
+                if (id == null) {
+                    if (!hasTimedOut.get()) {
+                        mCallList.onCallAdded(call);
+                    }
+                } else {
+                    call.reject(false, null);
+                    Log.d(this, "checkForBlockedCall: " + Log.pii(number) + " blocked.");
+                    Logger.logInteraction(InteractionEvent.CALL_BLOCKED);
+
+                    mFilteredQueryHandler.incrementFilteredCount(id);
+
+                    // Register observer to update the call log.
+                    // BlockedNumberContentObserver will unregister after successful log or timeout.
+                    BlockedNumberContentObserver contentObserver =
+                            new BlockedNumberContentObserver(new Handler(), number, timeAdded);
+                    contentObserver.register();
+                }
+            }
+        };
+
+        final boolean success = mFilteredQueryHandler.isBlockedNumber(
+                onCheckBlockedListener, number, countryIso);
+        if (!success) {
+            Log.d(this, "checkForBlockedCall: invalid number, skipping block checking");
+            if (!hasTimedOut.get()) {
+                handler.removeCallbacks(runnable);
+                mCallList.onCallAdded(call);
+            }
+        }
+    }
+
     public void onCallRemoved(android.telecom.Call call) {
-        call.unregisterCallback(mCallCallback);
+        mCallList.onCallRemoved(call);
+        if (SdkVersionOverride.getSdkVersion(Build.VERSION_CODES.M) >= Build.VERSION_CODES.M) {
+            call.unregisterCallback((android.telecom.Call.Callback) mCallCallback);
+        } else {
+            call.removeListener((android.telecom.Call.Listener) mCallCallback);
+        }
     }
 
     public void onCanAddCallChanged(boolean canAddCall) {
@@ -490,6 +720,10 @@
         if (isActivityStarted()) {
             mInCallActivity.dismissKeyguard(false);
         }
+
+        if (call.isEmergencyCall()) {
+            FilteredNumbersUtil.recordLastEmergencyCallTime(mContext);
+        }
     }
 
     /**
@@ -768,17 +1002,26 @@
         return mIsActivityPreviouslyStarted;
     }
 
+    /**
+     * Determines if the In-Call app is currently changing configuration.
+     *
+     * @return {@code true} if the In-Call app is changing configuration.
+     */
     public boolean isChangingConfigurations() {
         return mIsChangingConfigurations;
     }
 
+    /**
+     * Tracks whether the In-Call app is currently in the process of changing configuration (i.e.
+     * screen orientation).
+     */
     /*package*/
     void updateIsChangingConfigurations() {
         mIsChangingConfigurations = false;
         if (mInCallActivity != null) {
             mIsChangingConfigurations = mInCallActivity.isChangingConfigurations();
         }
-        Log.d(this, "IsChangingConfigurations=" + mIsChangingConfigurations);
+        Log.v(this, "updateIsChangingConfigurations = " + mIsChangingConfigurations);
     }
 
 
@@ -961,21 +1204,46 @@
      * @return {@code true} if in-call is now in fullscreen mode.
      */
     public boolean toggleFullscreenMode() {
-        mIsFullScreen = !mIsFullScreen;
-        Log.v(this, "toggleFullscreenMode = " + mIsFullScreen);
-        notifyFullscreenModeChange(mIsFullScreen);
+        boolean isFullScreen = !mIsFullScreen;
+        Log.v(this, "toggleFullscreenMode = " + isFullScreen);
+        setFullScreen(isFullScreen);
         return mIsFullScreen;
     }
 
     /**
+     * Clears the previous fullscreen state.
+     */
+    public void clearFullscreen() {
+        mIsFullScreen = false;
+    }
+
+    /**
      * Changes the fullscreen mode of the in-call UI.
      *
      * @param isFullScreen {@code true} if in-call should be in fullscreen mode, {@code false}
      *                                 otherwise.
      */
     public void setFullScreen(boolean isFullScreen) {
+        setFullScreen(isFullScreen, false /* force */);
+    }
+
+    /**
+     * Changes the fullscreen mode of the in-call UI.
+     *
+     * @param isFullScreen {@code true} if in-call should be in fullscreen mode, {@code false}
+     *                                 otherwise.
+     * @param force {@code true} if fullscreen mode should be set regardless of its current state.
+     */
+    public void setFullScreen(boolean isFullScreen, boolean force) {
         Log.v(this, "setFullScreen = " + isFullScreen);
-        if (mIsFullScreen == isFullScreen) {
+
+        // As a safeguard, ensure we cannot enter fullscreen if the dialpad is shown.
+        if (isDialpadVisible()) {
+            isFullScreen = false;
+            Log.v(this, "setFullScreen overridden as dialpad is shown = " + isFullScreen);
+        }
+
+        if (mIsFullScreen == isFullScreen && !force) {
             Log.v(this, "setFullScreen ignored as already in that state.");
             return;
         }
@@ -1004,6 +1272,21 @@
     }
 
     /**
+     * Called by the {@link CallCardPresenter} to inform of a change in visibility of the secondary
+     * caller info bar.
+     *
+     * @param isVisible {@code true} if the secondary caller info is visible, {@code false}
+     *      otherwise.
+     * @param height the height of the secondary caller info bar.
+     */
+    public void notifySecondaryCallerInfoVisibilityChanged(boolean isVisible, int height) {
+        for (InCallEventListener listener : mInCallEventListeners) {
+            listener.onSecondaryCallerInfoVisibilityChanged(isVisible, height);
+        }
+    }
+
+
+    /**
      * For some disconnected causes, we show a dialog.  This calls into the activity to show
      * the dialog if appropriate for the call.
      */
@@ -1068,7 +1351,7 @@
         // re-initiate the start-up animation, so we do not need to do anything here.
         //
         // It is also possible to go into an intermediate state where the call has been initiated
-        // but Telecomm has not yet returned with the details of the call (handle, gateway, etc.).
+        // but Telecom has not yet returned with the details of the call (handle, gateway, etc.).
         // This pending outgoing state can also launch the call screen.
         //
         // This is different from the incoming call sequence because we do not need to shock the
@@ -1079,7 +1362,7 @@
         // Direct transition from PENDING_OUTGOING -> INCALL means that there was an error in the
         // outgoing call process, so the UI should be brought up to show an error dialog.
         showCallUi |= (InCallState.PENDING_OUTGOING == mInCallState
-                && InCallState.INCALL == newState && !isActivityStarted());
+                && InCallState.INCALL == newState && !isShowingInCallUi());
 
         // Another exception - InCallActivity is in charge of disconnecting a call with no
         // valid accounts set. Bring the UI up if this is true for the current pending outgoing
@@ -1163,9 +1446,9 @@
      * @param call
      */
     private void setDisconnectCauseForMissingAccounts(Call call) {
-        android.telecom.Call telecomCall = call.getTelecommCall();
+        android.telecom.Call telecomCall = call.getTelecomCall();
 
-        Bundle extras = telecomCall.getDetails().getIntentExtras();
+        Bundle extras = DetailsCompat.getIntentExtras(telecomCall.getDetails());
         // Initialize the extras bundle to avoid NPE
         if (extras == null) {
             extras = new Bundle();
@@ -1339,64 +1622,32 @@
     }
 
     /**
-     * Handles changes to the device rotation.
+     * Notifies listeners of changes in orientation and notify calls of rotation angle change.
      *
-     * @param rotation The device rotation (one of: {@link Surface#ROTATION_0},
-     *      {@link Surface#ROTATION_90}, {@link Surface#ROTATION_180},
-     *      {@link Surface#ROTATION_270}).
-     */
-    public void onDeviceRotationChange(int rotation) {
-        Log.d(this, "onDeviceRotationChange: rotation=" + rotation);
-        // First translate to rotation in degrees.
-        if (mCallList != null) {
-            mCallList.notifyCallsOfDeviceRotation(toRotationAngle(rotation));
-        } else {
-            Log.w(this, "onDeviceRotationChange: CallList is null.");
-        }
-    }
-
-    /**
-     * Converts rotation constants to rotation in degrees.
-     * @param rotation Rotation constants (one of: {@link Surface#ROTATION_0},
-     *      {@link Surface#ROTATION_90}, {@link Surface#ROTATION_180},
-     *      {@link Surface#ROTATION_270}).
-     */
-    public static int toRotationAngle(int rotation) {
-        int rotationAngle;
-        switch (rotation) {
-            case Surface.ROTATION_0:
-                rotationAngle = 0;
-                break;
-            case Surface.ROTATION_90:
-                rotationAngle = 90;
-                break;
-            case Surface.ROTATION_180:
-                rotationAngle = 180;
-                break;
-            case Surface.ROTATION_270:
-                rotationAngle = 270;
-                break;
-            default:
-                rotationAngle = 0;
-        }
-        return rotationAngle;
-    }
-
-    /**
-     * Notifies listeners of changes in orientation (e.g. portrait/landscape).
-     *
-     * @param orientation The orientation of the device (one of: {@link Surface#ROTATION_0},
-     *      {@link Surface#ROTATION_90}, {@link Surface#ROTATION_180},
-     *      {@link Surface#ROTATION_270}).
+     * @param orientation The screen orientation of the device (one of:
+     * {@link InCallOrientationEventListener#SCREEN_ORIENTATION_0},
+     * {@link InCallOrientationEventListener#SCREEN_ORIENTATION_90},
+     * {@link InCallOrientationEventListener#SCREEN_ORIENTATION_180},
+     * {@link InCallOrientationEventListener#SCREEN_ORIENTATION_270}).
      */
     public void onDeviceOrientationChange(int orientation) {
+        Log.d(this, "onDeviceOrientationChange: orientation= " + orientation);
+
+        if (mCallList != null) {
+            mCallList.notifyCallsOfDeviceRotation(orientation);
+        } else {
+            Log.w(this, "onDeviceOrientationChange: CallList is null.");
+        }
+
+        // Notify listeners of device orientation changed.
         for (InCallOrientationListener listener : mOrientationListeners) {
             listener.onDeviceOrientationChanged(orientation);
         }
     }
 
     /**
-     * Configures the in-call UI activity so it can change orientations or not.
+     * Configures the in-call UI activity so it can change orientations or not. Enables the
+     * orientation event listener if allowOrientationChange is true, disables it if false.
      *
      * @param allowOrientationChange {@code True} if the in-call UI can change between portrait
      *      and landscape.  {@Code False} if the in-call UI should be locked in portrait.
@@ -1408,10 +1659,15 @@
         }
 
         if (!allowOrientationChange) {
-            mInCallActivity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);
+            mInCallActivity.setRequestedOrientation(
+                    InCallOrientationEventListener.NO_SENSOR_SCREEN_ORIENTATION);
         } else {
-            mInCallActivity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
+            // Using SCREEN_ORIENTATION_FULL_SENSOR allows for reverse-portrait orientation, where
+            // SCREEN_ORIENTATION_SENSOR does not.
+            mInCallActivity.setRequestedOrientation(
+                    InCallOrientationEventListener.FULL_SENSOR_SCREEN_ORIENTATION);
         }
+        mInCallActivity.enableInCallOrientationEventListener(allowOrientationChange);
     }
 
     public void enableScreenTimeout(boolean enable) {
@@ -1468,6 +1724,18 @@
     }
 
     /**
+     * Determines if the dialpad is visible.
+     *
+     * @return {@code true} if the dialpad is visible, {@code false} otherwise.
+     */
+    public boolean isDialpadVisible() {
+        if (mInCallActivity == null) {
+            return false;
+        }
+        return mInCallActivity.isDialpadVisible();
+    }
+
+    /**
      * @return True if the application is currently running in a right-to-left locale.
      */
     public static boolean isRtl() {
@@ -1490,7 +1758,9 @@
         final Resources resources = mInCallActivity.getResources();
         final int color;
         if (resources.getBoolean(R.bool.is_layout_landscape)) {
-            color = resources.getColor(R.color.statusbar_background_color, null);
+            // TODO use ResourcesCompat.getColor(Resources, int, Resources.Theme) when available
+            // {@link Resources#getColor(int)} used for compatibility
+            color = resources.getColor(R.color.statusbar_background_color);
         } else {
             color = mThemeColors.mSecondaryColor;
         }
@@ -1522,10 +1792,11 @@
             final TelecomManager tm = getTelecomManager();
 
             if (tm != null) {
-                final PhoneAccount account = tm.getPhoneAccount(phoneAccountHandle);
+                final PhoneAccount account =
+                        TelecomManagerCompat.getPhoneAccount(tm, phoneAccountHandle);
                 // For single-sim devices, there will be no selected highlight color, so the phone
                 // account will default to NO_HIGHLIGHT_COLOR.
-                if (account != null) {
+                if (account != null && CompatUtils.isLollipopMr1Compatible()) {
                     highlightColor = account.getHighlightColor();
                 }
             }
@@ -1545,6 +1816,13 @@
         return mTelecomManager;
     }
 
+    /**
+     * @return An instance of TelephonyManager
+     */
+    public TelephonyManager getTelephonyManager() {
+        return mTelephonyManager;
+    }
+
     InCallActivity getActivity() {
         return mInCallActivity;
     }
@@ -1576,7 +1854,7 @@
         WAITING_FOR_ACCOUNT,
 
         // UI is starting up but no call has been initiated yet.
-        // The UI is waiting for Telecomm to respond.
+        // The UI is waiting for Telecom to respond.
         PENDING_OUTGOING,
 
         // User is dialing out
@@ -1623,6 +1901,7 @@
      */
     public interface InCallEventListener {
         public void onFullscreenModeChanged(boolean isFullscreenMode);
+        public void onSecondaryCallerInfoVisibilityChanged(boolean isVisible, int height);
     }
 
     public interface InCallUiListener {
diff --git a/InCallUI/src/com/android/incallui/InCallServiceImpl.java b/InCallUI/src/com/android/incallui/InCallServiceImpl.java
index 8e65f1a..31d6efb 100644
--- a/InCallUI/src/com/android/incallui/InCallServiceImpl.java
+++ b/InCallUI/src/com/android/incallui/InCallServiceImpl.java
@@ -18,22 +18,28 @@
 
 import android.content.Context;
 import android.content.Intent;
+import android.os.Build;
 import android.os.IBinder;
+import android.telecom.AudioState;
 import android.telecom.Call;
 import android.telecom.CallAudioState;
 import android.telecom.InCallService;
+import android.telecom.Phone;
+
+import com.android.contacts.common.compat.SdkVersionOverride;
 
 /**
- * Used to receive updates about calls from the Telecomm component.  This service is bound to
- * Telecomm while there exist calls which potentially require UI. This includes ringing (incoming),
- * dialing (outgoing), and active calls. When the last call is disconnected, Telecomm will unbind to
+ * Used to receive updates about calls from the Telecom component.  This service is bound to
+ * Telecom while there exist calls which potentially require UI. This includes ringing (incoming),
+ * dialing (outgoing), and active calls. When the last call is disconnected, Telecom will unbind to
  * the service triggering InCallActivity (via CallList) to finish soon after.
  */
 public class InCallServiceImpl extends InCallService {
 
     @Override
     public void onCallAudioStateChanged(CallAudioState audioState) {
-        AudioModeProvider.getInstance().onAudioStateChanged(audioState);
+        AudioModeProvider.getInstance().onAudioStateChanged(audioState.isMuted(),
+                audioState.getRoute(), audioState.getSupportedRouteMask());
     }
 
     @Override
@@ -43,13 +49,11 @@
 
     @Override
     public void onCallAdded(Call call) {
-        CallList.getInstance().onCallAdded(call);
         InCallPresenter.getInstance().onCallAdded(call);
     }
 
     @Override
     public void onCallRemoved(Call call) {
-        CallList.getInstance().onCallRemoved(call);
         InCallPresenter.getInstance().onCallRemoved(call);
     }
 
@@ -94,8 +98,87 @@
         Log.v(this, "tearDown");
         // Tear down the InCall system
         TelecomAdapter.getInstance().clearInCallService();
-        CallList.getInstance().clearOnDisconnect();
         InCallPresenter.getInstance().tearDown();
     }
 
+    /*
+     * Compatibility code for devices running the L sdk. In that version of the sdk, InCallService
+     * callbacks were registered via a android.telecom.Phone$Listener. These callbacks typically
+     * correspond 1:1 to callbacks now found in android.telecom.InCallService so the compatibility
+     * code forwards to those methods.
+     */
+    private Phone.Listener mPhoneListener = new Phone.Listener() {
+        @Override
+        public void onAudioStateChanged(Phone phone, AudioState audioState) {
+            /*
+             * Need to use reflection here; in M these are private fields retrieved through getters,
+             * but in L they are public fields without getters.
+             */
+            try {
+                boolean isMuted = AudioState.class.getField("isMuted").getBoolean(audioState);
+                int route = AudioState.class.getField("route").getInt(audioState);
+                int supportedRouteMask = AudioState.class.getField("supportedRouteMask")
+                        .getInt(audioState);
+                AudioModeProvider.getInstance()
+                        .onAudioStateChanged(isMuted, route, supportedRouteMask);
+            } catch (ReflectiveOperationException e) {
+                Log.e(this, "Unable to use reflection to retrieve AudioState fields", e);
+            }
+        }
+
+        @Override
+        public void onBringToForeground(Phone phone, boolean showDialpad) {
+            InCallServiceImpl.this.onBringToForeground(showDialpad);
+        }
+
+        @Override
+        public void onCallAdded(Phone phone, Call call) {
+            InCallServiceImpl.this.onCallAdded(call);
+        }
+
+        @Override
+        public void onCallRemoved(Phone phone, Call call) {
+            InCallServiceImpl.this.onCallRemoved(call);
+        }
+    };
+
+    private Phone mPhone;
+
+    @Override
+    public void onPhoneCreated(Phone phone) {
+        if (SdkVersionOverride.getSdkVersion(Build.VERSION_CODES.M) >= Build.VERSION_CODES.M) {
+            return;
+        }
+        mPhone = phone;
+        mPhone.addListener(mPhoneListener);
+    }
+
+    @Override
+    public void onPhoneDestroyed(Phone phone) {
+        if (SdkVersionOverride.getSdkVersion(Build.VERSION_CODES.M) >= Build.VERSION_CODES.M) {
+            return;
+        }
+        mPhone.removeListener(mPhoneListener);
+        mPhone = null;
+    }
+
+    /*
+     * setMuted and setAudioRoute are final in InCallService so compat methods are
+     * used to perform the needed branching logic based on sdk version
+     */
+    public void setMutedCompat(boolean state) {
+        if (SdkVersionOverride.getSdkVersion(Build.VERSION_CODES.M) >= Build.VERSION_CODES.M) {
+            super.setMuted(state);
+            return;
+        }
+        mPhone.setMuted(state);
+    }
+
+    public void setAudioRouteCompat(int route) {
+        if (SdkVersionOverride.getSdkVersion(Build.VERSION_CODES.M) >= Build.VERSION_CODES.M) {
+            super.setAudioRoute(route);
+            return;
+        }
+        mPhone.setAudioRoute(route);
+    }
 }
diff --git a/InCallUI/src/com/android/incallui/InCallServiceListener.java b/InCallUI/src/com/android/incallui/InCallServiceListener.java
index 295385d..11a5b08 100644
--- a/InCallUI/src/com/android/incallui/InCallServiceListener.java
+++ b/InCallUI/src/com/android/incallui/InCallServiceListener.java
@@ -19,7 +19,7 @@
 import android.telecom.InCallService;
 
 /**
- * Interface implemented by In-Call components that maintain a reference to the Telecomm API
+ * Interface implemented by In-Call components that maintain a reference to the Telecom API
  * {@code InCallService} object. Clarifies the expectations associated with the relevant method
  * calls.
  */
diff --git a/InCallUI/src/com/android/incallui/InCallUIMaterialColorMapUtils.java b/InCallUI/src/com/android/incallui/InCallUIMaterialColorMapUtils.java
index d65580e..44b035f 100644
--- a/InCallUI/src/com/android/incallui/InCallUIMaterialColorMapUtils.java
+++ b/InCallUI/src/com/android/incallui/InCallUIMaterialColorMapUtils.java
@@ -44,9 +44,13 @@
         return super.calculatePrimaryAndSecondaryColor(color);
     }
 
+    /**
+     * {@link Resources#getColor(int) used for compatibility
+     */
+    @SuppressWarnings("deprecation")
     public static MaterialPalette getDefaultPrimaryAndSecondaryColors(Resources resources) {
-        final int primaryColor = resources.getColor(R.color.dialer_theme_color, null);
-        final int secondaryColor = resources.getColor(R.color.dialer_theme_color_dark, null);
+        final int primaryColor = resources.getColor(R.color.dialer_theme_color);
+        final int secondaryColor = resources.getColor(R.color.dialer_theme_color_dark);
         return new MaterialPalette(primaryColor, secondaryColor);
     }
 }
\ No newline at end of file
diff --git a/InCallUI/src/com/android/incallui/InCallVideoCallCallback.java b/InCallUI/src/com/android/incallui/InCallVideoCallCallback.java
index 87b886d..76f8c09 100644
--- a/InCallUI/src/com/android/incallui/InCallVideoCallCallback.java
+++ b/InCallUI/src/com/android/incallui/InCallVideoCallCallback.java
@@ -49,11 +49,11 @@
     @Override
     public void onSessionModifyRequestReceived(VideoProfile videoProfile) {
         Log.d(this, " onSessionModifyRequestReceived videoProfile=" + videoProfile);
-        int previousVideoState = CallUtils.getUnPausedVideoState(mCall.getVideoState());
-        int newVideoState = CallUtils.getUnPausedVideoState(videoProfile.getVideoState());
+        int previousVideoState = VideoUtils.getUnPausedVideoState(mCall.getVideoState());
+        int newVideoState = VideoUtils.getUnPausedVideoState(videoProfile.getVideoState());
 
-        boolean wasVideoCall = CallUtils.isVideoCall(previousVideoState);
-        boolean isVideoCall = CallUtils.isVideoCall(newVideoState);
+        boolean wasVideoCall = VideoUtils.isVideoCall(previousVideoState);
+        boolean isVideoCall = VideoUtils.isVideoCall(newVideoState);
 
         // Check for upgrades to video and downgrades to audio.
         if (wasVideoCall && !isVideoCall) {
@@ -97,7 +97,7 @@
         } else if (requestedProfile != null && responseProfile != null) {
             boolean modifySucceeded = requestedProfile.getVideoState() ==
                     responseProfile.getVideoState();
-            boolean isVideoCall = CallUtils.isVideoCall(responseProfile.getVideoState());
+            boolean isVideoCall = VideoUtils.isVideoCall(responseProfile.getVideoState());
             if (modifySucceeded && isVideoCall) {
                 InCallVideoCallCallbackNotifier.getInstance().upgradeToVideoSuccess(mCall);
             } else if (!modifySucceeded && isVideoCall) {
diff --git a/InCallUI/src/com/android/incallui/ProximitySensor.java b/InCallUI/src/com/android/incallui/ProximitySensor.java
index 401ebd1..733a67d 100644
--- a/InCallUI/src/com/android/incallui/ProximitySensor.java
+++ b/InCallUI/src/com/android/incallui/ProximitySensor.java
@@ -16,20 +16,20 @@
 
 package com.android.incallui;
 
+import com.google.common.base.Objects;
+
 import android.content.Context;
 import android.content.res.Configuration;
 import android.hardware.display.DisplayManager;
 import android.hardware.display.DisplayManager.DisplayListener;
 import android.os.PowerManager;
-import android.telecom.CallAudioState;
 import android.view.Display;
 
+import com.android.dialer.compat.CallAudioStateCompat;
 import com.android.incallui.AudioModeProvider.AudioModeListener;
 import com.android.incallui.InCallPresenter.InCallState;
 import com.android.incallui.InCallPresenter.InCallStateListener;
 
-import com.google.common.base.Objects;
-
 /**
  * Class manages the proximity sensor for the in-call UI.
  * We enable the proximity sensor while the user in a phone call. The Proximity sensor turns off
@@ -228,9 +228,9 @@
         // turn proximity sensor off and turn screen on immediately if
         // we are using a headset, the keyboard is open, or the device
         // is being held in a horizontal position.
-            boolean screenOnImmediately = (CallAudioState.ROUTE_WIRED_HEADSET == audioMode
-                    || CallAudioState.ROUTE_SPEAKER == audioMode
-                    || CallAudioState.ROUTE_BLUETOOTH == audioMode
+            boolean screenOnImmediately = (CallAudioStateCompat.ROUTE_WIRED_HEADSET == audioMode
+                    || CallAudioStateCompat.ROUTE_SPEAKER == audioMode
+                    || CallAudioStateCompat.ROUTE_BLUETOOTH == audioMode
                     || mIsHardKeyboardOpen);
 
             // We do not keep the screen off when the user is outside in-call screen and we are
@@ -254,7 +254,7 @@
                     .add("offhook", mIsPhoneOffhook ? 1 : 0)
                     .add("hor", horizontal ? 1 : 0)
                     .add("ui", mUiShowing ? 1 : 0)
-                    .add("aud", CallAudioState.audioRouteToString(audioMode))
+                    .add("aud", CallAudioStateCompat.audioRouteToString(audioMode))
                     .toString());
 
             if (mIsPhoneOffhook && !screenOnImmediately) {
diff --git a/InCallUI/src/com/android/incallui/StatusBarNotifier.java b/InCallUI/src/com/android/incallui/StatusBarNotifier.java
index 89794cd..1f2729e 100644
--- a/InCallUI/src/com/android/incallui/StatusBarNotifier.java
+++ b/InCallUI/src/com/android/incallui/StatusBarNotifier.java
@@ -34,7 +34,9 @@
 import android.text.TextDirectionHeuristics;
 import android.text.TextUtils;
 
+import com.android.contacts.common.preference.ContactsPreferences;
 import com.android.contacts.common.util.BitmapUtil;
+import com.android.contacts.common.util.ContactDisplayUtils;
 import com.android.incallui.ContactInfoCache.ContactCacheEntry;
 import com.android.incallui.ContactInfoCache.ContactInfoCacheCallback;
 import com.android.incallui.InCallPresenter.InCallState;
@@ -58,6 +60,7 @@
     private static final int NOTIFICATION_INCOMING_CALL = 2;
 
     private final Context mContext;
+    private final ContactsPreferences mContactsPreferences;
     private final ContactInfoCache mContactInfoCache;
     private final NotificationManager mNotificationManager;
     private int mCurrentNotification = NOTIFICATION_NONE;
@@ -72,6 +75,7 @@
     public StatusBarNotifier(Context context, ContactInfoCache contactInfoCache) {
         Preconditions.checkNotNull(context);
         mContext = context;
+        mContactsPreferences = new ContactsPreferences(context);
         mContactInfoCache = contactInfoCache;
         mNotificationManager =
                 (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE);
@@ -181,6 +185,7 @@
             public void onContactInfoComplete(String callId, ContactCacheEntry entry) {
                 Call call = CallList.getInstance().getCallById(callId);
                 if (call != null) {
+                    call.getLogState().contactLookupResult = entry.contactLookupResult;
                     buildAndSendNotification(call, entry);
                 }
             }
@@ -192,6 +197,9 @@
                     buildAndSendNotification(call, entry);
                 }
             }
+
+            @Override
+            public void onContactInteractionsInfoComplete(String callId, ContactCacheEntry entry) {}
         });
     }
 
@@ -217,9 +225,7 @@
         final String contentTitle = getContentTitle(contactInfo, call);
 
         final int notificationType;
-        if ((state == Call.State.INCOMING
-                || state == Call.State.CALL_WAITING) &&
-                        !InCallPresenter.getInstance().isShowingInCallUi()) {
+        if (state == Call.State.INCOMING || state == Call.State.CALL_WAITING) {
             notificationType = NOTIFICATION_INCOMING_CALL;
         } else {
             notificationType = NOTIFICATION_IN_CALL;
@@ -244,7 +250,8 @@
         builder.setContentIntent(inCallPendingIntent);
 
         // Set the intent as a full screen intent as well if a call is incoming
-        if (notificationType == NOTIFICATION_INCOMING_CALL) {
+        if (notificationType == NOTIFICATION_INCOMING_CALL
+                && !InCallPresenter.getInstance().isShowingInCallUi()) {
             configureFullScreenIntent(builder, inCallPendingIntent, call);
             // Set the notification category for incoming calls
             builder.setCategory(Notification.CATEGORY_CALL);
@@ -273,7 +280,7 @@
          * Fire off the notification
          */
         Notification notification = builder.build();
-        if (mCurrentNotification != notificationType) {
+        if (mCurrentNotification != notificationType && mCurrentNotification != NOTIFICATION_NONE) {
             Log.i(this, "Previous notification already showing - cancelling "
                     + mCurrentNotification);
             mNotificationManager.cancel(mCurrentNotification);
@@ -357,13 +364,15 @@
         if (call.isConferenceCall() && !call.hasProperty(Details.PROPERTY_GENERIC_CONFERENCE)) {
             return mContext.getResources().getString(R.string.card_title_conf_call);
         }
-        if (TextUtils.isEmpty(contactInfo.name)) {
-            return TextUtils.isEmpty(contactInfo.number) ? null
-                    : BidiFormatter.getInstance().unicodeWrap(
-                            contactInfo.number.toString(), TextDirectionHeuristics.LTR);
+
+        String preferredName = ContactDisplayUtils.getPreferredDisplayName(contactInfo.namePrimary,
+                contactInfo.nameAlternative, mContactsPreferences.getDisplayOrder());
+        if (TextUtils.isEmpty(preferredName)) {
+            return TextUtils.isEmpty(contactInfo.number) ? null : BidiFormatter.getInstance()
+                    .unicodeWrap(contactInfo.number, TextDirectionHeuristics.LTR);
         }
 
-        return contactInfo.name;
+        return preferredName;
     }
 
     private void addPersonReference(Notification.Builder builder, ContactCacheEntry contactInfo,
diff --git a/InCallUI/src/com/android/incallui/TelecomAdapter.java b/InCallUI/src/com/android/incallui/TelecomAdapter.java
index 37efdee..0fc2e28 100644
--- a/InCallUI/src/com/android/incallui/TelecomAdapter.java
+++ b/InCallUI/src/com/android/incallui/TelecomAdapter.java
@@ -16,13 +16,16 @@
 
 package com.android.incallui;
 
+import com.google.common.base.Preconditions;
+
 import android.content.ActivityNotFoundException;
 import android.content.Intent;
 import android.os.Looper;
 import android.telecom.InCallService;
 import android.telecom.PhoneAccountHandle;
 
-import com.google.common.base.Preconditions;
+import com.android.incallui.compat.telecom.DetailsCompat;
+import com.android.incallui.compat.telecom.InCallServiceCompat;
 
 import java.util.List;
 
@@ -53,13 +56,13 @@
         mInCallService = null;
     }
 
-    private android.telecom.Call getTelecommCallById(String callId) {
+    private android.telecom.Call getTelecomCallById(String callId) {
         Call call = CallList.getInstance().getCallById(callId);
-        return call == null ? null : call.getTelecommCall();
+        return call == null ? null : call.getTelecomCall();
     }
 
     void answerCall(String callId, int videoState) {
-        android.telecom.Call call = getTelecommCallById(callId);
+        android.telecom.Call call = getTelecomCallById(callId);
         if (call != null) {
             call.answer(videoState);
         } else {
@@ -68,7 +71,7 @@
     }
 
     void rejectCall(String callId, boolean rejectWithMessage, String message) {
-        android.telecom.Call call = getTelecommCallById(callId);
+        android.telecom.Call call = getTelecomCallById(callId);
         if (call != null) {
             call.reject(rejectWithMessage, message);
         } else {
@@ -77,7 +80,7 @@
     }
 
     void disconnectCall(String callId) {
-        android.telecom.Call call = getTelecommCallById(callId);
+        android.telecom.Call call = getTelecomCallById(callId);
         if (call != null) {
             call.disconnect();
         } else {
@@ -86,7 +89,7 @@
     }
 
     void holdCall(String callId) {
-        android.telecom.Call call = getTelecommCallById(callId);
+        android.telecom.Call call = getTelecomCallById(callId);
         if (call != null) {
             call.hold();
         } else {
@@ -95,7 +98,7 @@
     }
 
     void unholdCall(String callId) {
-        android.telecom.Call call = getTelecommCallById(callId);
+        android.telecom.Call call = getTelecomCallById(callId);
         if (call != null) {
             call.unhold();
         } else {
@@ -105,7 +108,7 @@
 
     void mute(boolean shouldMute) {
         if (mInCallService != null) {
-            mInCallService.setMuted(shouldMute);
+            InCallServiceCompat.setMuted(mInCallService, shouldMute);
         } else {
             Log.e(this, "error mute, mInCallService is null");
         }
@@ -113,14 +116,14 @@
 
     void setAudioRoute(int route) {
         if (mInCallService != null) {
-            mInCallService.setAudioRoute(route);
+            InCallServiceCompat.setAudioRoute(mInCallService, route);
         } else {
             Log.e(this, "error setAudioRoute, mInCallService is null");
         }
     }
 
     void separateCall(String callId) {
-        android.telecom.Call call = getTelecommCallById(callId);
+        android.telecom.Call call = getTelecomCallById(callId);
         if (call != null) {
             call.splitFromConference();
         } else {
@@ -129,13 +132,13 @@
     }
 
     void merge(String callId) {
-        android.telecom.Call call = getTelecommCallById(callId);
+        android.telecom.Call call = getTelecomCallById(callId);
         if (call != null) {
             List<android.telecom.Call> conferenceable = call.getConferenceableCalls();
             if (!conferenceable.isEmpty()) {
                 call.conference(conferenceable.get(0));
             } else {
-                if (call.getDetails().can(
+                if (DetailsCompat.can(call.getDetails(),
                         android.telecom.Call.Details.CAPABILITY_MERGE_CONFERENCE)) {
                     call.mergeConference();
                 }
@@ -146,9 +149,9 @@
     }
 
     void swap(String callId) {
-        android.telecom.Call call = getTelecommCallById(callId);
+        android.telecom.Call call = getTelecomCallById(callId);
         if (call != null) {
-            if (call.getDetails().can(
+            if (DetailsCompat.can(call.getDetails(),
                     android.telecom.Call.Details.CAPABILITY_SWAP_CONFERENCE)) {
                 call.swapConference();
             }
@@ -179,7 +182,7 @@
     }
 
     void playDtmfTone(String callId, char digit) {
-        android.telecom.Call call = getTelecommCallById(callId);
+        android.telecom.Call call = getTelecomCallById(callId);
         if (call != null) {
             call.playDtmfTone(digit);
         } else {
@@ -188,7 +191,7 @@
     }
 
     void stopDtmfTone(String callId) {
-        android.telecom.Call call = getTelecommCallById(callId);
+        android.telecom.Call call = getTelecomCallById(callId);
         if (call != null) {
             call.stopDtmfTone();
         } else {
@@ -197,7 +200,7 @@
     }
 
     void postDialContinue(String callId, boolean proceed) {
-        android.telecom.Call call = getTelecommCallById(callId);
+        android.telecom.Call call = getTelecomCallById(callId);
         if (call != null) {
             call.postDialContinue(proceed);
         } else {
@@ -211,7 +214,7 @@
             // TODO: Do we really want to send null accountHandle?
         }
 
-        android.telecom.Call call = getTelecommCallById(callId);
+        android.telecom.Call call = getTelecomCallById(callId);
         if (call != null) {
             call.phoneAccountSelected(accountHandle, setDefault);
         } else {
@@ -219,8 +222,7 @@
         }
     }
 
-    boolean canAddCall() {
-        // Default to true if we are not connected to telecom.
-        return mInCallService == null ? true : mInCallService.canAddCall();
+    boolean canAddCall(Call call) {
+        return InCallServiceCompat.canAddCall(mInCallService, call);
     }
 }
diff --git a/InCallUI/src/com/android/incallui/VideoCallFragment.java b/InCallUI/src/com/android/incallui/VideoCallFragment.java
index 24e9e8d..2c06303 100644
--- a/InCallUI/src/com/android/incallui/VideoCallFragment.java
+++ b/InCallUI/src/com/android/incallui/VideoCallFragment.java
@@ -31,6 +31,7 @@
 import android.widget.FrameLayout;
 import android.widget.ImageView;
 
+import com.android.phone.common.animation.AnimUtils;
 import com.google.common.base.Objects;
 
 /**
@@ -105,6 +106,8 @@
      */
     private boolean mIsLandscape;
 
+    private int mAnimationDuration;
+
     /**
      * Inner-class representing a {@link TextureView} and its associated {@link SurfaceTexture} and
      * {@link Surface}.  Used to manage the lifecycle of these objects across device orientation
@@ -419,6 +422,8 @@
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
+
+        mAnimationDuration = getResources().getInteger(R.integer.video_animation_duration);
     }
 
     /**
@@ -454,9 +459,16 @@
      */
     private void centerDisplayView(View displayVideo) {
         if (!mIsLandscape) {
+            ViewGroup.LayoutParams p = displayVideo.getLayoutParams();
+            int height = p.height;
+
             float spaceBesideCallCard = InCallPresenter.getInstance().getSpaceBesideCallCard();
-            float videoViewTranslation = displayVideo.getHeight() / 2
-                    - spaceBesideCallCard / 2;
+            // If space beside call card is zeo, layout hasn't happened yet so there is no point
+            // in attempting to center the view.
+            if (Math.abs(spaceBesideCallCard - 0.0f) < 0.0001) {
+                return;
+            }
+            float videoViewTranslation = height / 2  - spaceBesideCallCard / 2;
             displayVideo.setTranslationY(videoViewTranslation);
         }
     }
@@ -473,13 +485,6 @@
         Log.d(this, "onViewCreated: VideoSurfacesInUse=" + sVideoSurfacesInUse);
 
         mVideoViewsStub = (ViewStub) view.findViewById(R.id.videoCallViewsStub);
-
-        // If the surfaces are already in use, we have just changed orientation or otherwise
-        // re-created the fragment.  In this case we need to inflate the video call views and
-        // restore the surfaces.
-        if (sVideoSurfacesInUse) {
-            inflateVideoCallViews();
-        }
     }
 
     @Override
@@ -588,6 +593,30 @@
         return mPreviewPhoto;
     }
 
+    /**
+     * Adjusts the location of the video preview view by the specified offset.
+     *
+     * @param shiftUp {@code true} if the preview should shift up, {@code false} if it should shift
+     *      down.
+     * @param offset The offset.
+     */
+    @Override
+    public void adjustPreviewLocation(boolean shiftUp, int offset) {
+        if (sPreviewSurface == null || mPreviewVideoContainer == null) {
+            return;
+        }
+
+        // Set the position of the secondary call info card to its starting location.
+        mPreviewVideoContainer.setTranslationY(shiftUp ? 0 : -offset);
+
+        // Animate the secondary card info slide up/down as it appears and disappears.
+        mPreviewVideoContainer.animate()
+                .setInterpolator(AnimUtils.EASE_OUT_EASE_IN)
+                .setDuration(mAnimationDuration)
+                .translationY(shiftUp ? -offset : 0)
+                .start();
+    }
+
     private void onPresenterChanged(VideoCallPresenter presenter) {
         Log.d(this, "onPresenterChanged: Presenter=" + presenter);
         if (sDisplaySurface != null) {
@@ -675,6 +704,33 @@
         }
     }
 
+    /**
+     * Sets the rotation of the preview surface.  Called when the dimensions change due to a
+     * device orientation change.
+     *
+     * Please note that the screen orientation passed in is subtracted from 360 to get the actual
+     * preview rotation values.
+     *
+     * @param rotation The screen orientation. One of -
+     * {@link InCallOrientationEventListener#SCREEN_ORIENTATION_0},
+     * {@link InCallOrientationEventListener#SCREEN_ORIENTATION_90},
+     * {@link InCallOrientationEventListener#SCREEN_ORIENTATION_180},
+     * {@link InCallOrientationEventListener#SCREEN_ORIENTATION_270}).
+     */
+    @Override
+    public void setPreviewRotation(int orientation) {
+        Log.d(this, "setPreviewRotation: orientation=" + orientation);
+        if (sPreviewSurface != null) {
+            TextureView preview = sPreviewSurface.getTextureView();
+
+            if (preview == null ) {
+                return;
+            }
+
+            preview.setRotation(orientation);
+        }
+    }
+
     @Override
     public void setPreviewSurfaceSize(int width, int height) {
         final boolean isPreviewSurfaceAvailable = sPreviewSurface != null;
@@ -707,7 +763,7 @@
      */
     @Override
     public void setDisplayVideoSize(int width, int height) {
-        Log.d(this, "setDisplayVideoSize: width=" + width + " height=" + height);
+        Log.v(this, "setDisplayVideoSize: width=" + width + " height=" + height);
         if (sDisplaySurface != null) {
             TextureView displayVideo = sDisplaySurface.getTextureView();
             if (displayVideo == null) {
diff --git a/InCallUI/src/com/android/incallui/VideoCallPresenter.java b/InCallUI/src/com/android/incallui/VideoCallPresenter.java
index f439f6b..ebdf820 100644
--- a/InCallUI/src/com/android/incallui/VideoCallPresenter.java
+++ b/InCallUI/src/com/android/incallui/VideoCallPresenter.java
@@ -24,7 +24,6 @@
 import android.os.Handler;
 import android.os.Looper;
 import android.provider.ContactsContract;
-import android.telecom.CallAudioState;
 import android.telecom.Connection;
 import android.telecom.InCallService.VideoCall;
 import android.telecom.VideoProfile;
@@ -33,12 +32,14 @@
 import android.widget.ImageView;
 
 import com.android.contacts.common.ContactPhotoManager;
+import com.android.contacts.common.compat.CompatUtils;
 import com.android.incallui.InCallPresenter.InCallDetailsListener;
 import com.android.incallui.InCallPresenter.InCallOrientationListener;
 import com.android.incallui.InCallPresenter.InCallStateListener;
 import com.android.incallui.InCallPresenter.IncomingCallListener;
 import com.android.incallui.InCallVideoCallCallbackNotifier.SurfaceChangeListener;
 import com.android.incallui.InCallVideoCallCallbackNotifier.VideoEventListener;
+import com.android.incallui.compat.telecom.VideoProfileCompat;
 
 import java.util.Objects;
 
@@ -74,12 +75,14 @@
     public static final boolean DEBUG = false;
 
     /**
-     * Runnable which is posted to schedule automatically entering fullscreen mode.
+     * Runnable which is posted to schedule automatically entering fullscreen mode.  Will not auto
+     * enter fullscreen mode if the dialpad is visible (doing so would make it impossible to exit
+     * the dialpad).
      */
     private Runnable mAutoFullscreenRunnable =  new Runnable() {
         @Override
         public void run() {
-            if (mAutoFullScreenPending) {
+            if (mAutoFullScreenPending && !InCallPresenter.getInstance().isDialpadVisible()) {
                 Log.v(this, "Automatically entering fullscreen mode.");
                 InCallPresenter.getInstance().setFullScreen(true);
                 mAutoFullScreenPending = false;
@@ -152,18 +155,13 @@
     /**
      * Determines the device orientation (portrait/lanscape).
      */
-    private int mDeviceOrientation;
+    private int mDeviceOrientation = InCallOrientationEventListener.SCREEN_ORIENTATION_0;
 
     /**
      * Tracks the state of the preview surface negotiation with the telephony layer.
      */
     private int mPreviewSurfaceState = PreviewSurfaceState.NONE;
 
-    /**
-     * Saves the audio mode which was selected prior to going into a video call.
-     */
-    private static int sPrevVideoAudioMode = AudioModeProvider.AUDIO_MODE_INVALID;
-
     private static boolean mIsVideoMode = false;
 
     /**
@@ -225,6 +223,12 @@
         super.onUiReady(ui);
         Log.d(this, "onUiReady:");
 
+        // Do not register any listeners if video calling is not compatible to safeguard against
+        // any accidental calls of video calling code.
+        if (!CompatUtils.isVideoCompatible()) {
+            return;
+        }
+
         // Register for call state changes last
         InCallPresenter.getInstance().addListener(this);
         InCallPresenter.getInstance().addDetailsListener(this);
@@ -232,6 +236,7 @@
         InCallPresenter.getInstance().addOrientationListener(this);
         // To get updates of video call details changes
         InCallPresenter.getInstance().addDetailsListener(this);
+        InCallPresenter.getInstance().addInCallEventListener(this);
 
         // Register for surface and video events from {@link InCallVideoCallListener}s.
         InCallVideoCallCallbackNotifier.getInstance().addSurfaceChangeListener(this);
@@ -251,10 +256,15 @@
         super.onUiUnready(ui);
         Log.d(this, "onUiUnready:");
 
+        if (!CompatUtils.isVideoCompatible()) {
+            return;
+        }
+
         InCallPresenter.getInstance().removeListener(this);
         InCallPresenter.getInstance().removeDetailsListener(this);
         InCallPresenter.getInstance().removeIncomingCallListener(this);
         InCallPresenter.getInstance().removeOrientationListener(this);
+        InCallPresenter.getInstance().removeInCallEventListener(this);
 
         InCallVideoCallCallbackNotifier.getInstance().removeSurfaceChangeListener(this);
         InCallVideoCallCallbackNotifier.getInstance().removeVideoEventListener(this);
@@ -393,8 +403,6 @@
                 " isVideoMode=" + isVideoMode());
 
         if (newState == InCallPresenter.InCallState.NO_CALLS) {
-            updateAudioMode(false);
-
             if (isVideoMode()) {
                 exitVideoMode();
             }
@@ -418,7 +426,7 @@
             // change the camera or UI unless the waiting VT call becomes active.
             primary = callList.getActiveCall();
             currentCall = callList.getIncomingCall();
-            if (!CallUtils.isActiveVideoCall(primary)) {
+            if (!VideoUtils.isActiveVideoCall(primary)) {
                 primary = callList.getIncomingCall();
             }
         } else if (newState == InCallPresenter.InCallState.OUTGOING) {
@@ -458,15 +466,30 @@
         cancelAutoFullScreen();
     }
 
+    /**
+     * Handles changes to the visibility of the secondary caller info bar.
+     *
+     * @param isVisible {@code true} if the secondary caller info is showing, {@code false}
+     *      otherwise.
+     * @param height the height of the secondary caller info bar.
+     */
+    @Override
+    public void onSecondaryCallerInfoVisibilityChanged(boolean isVisible, int height) {
+        Log.d(this,
+                "onSecondaryCallerInfoVisibilityChanged : isVisible = " + isVisible + " height = "
+                        + height);
+        getUi().adjustPreviewLocation(isVisible /* shiftUp */, height);
+    }
+
     private void checkForVideoStateChange(Call call) {
-        final boolean isVideoCall = CallUtils.isVideoCall(call);
+        final boolean isVideoCall = VideoUtils.isVideoCall(call);
         final boolean hasVideoStateChanged = mCurrentVideoState != call.getVideoState();
 
         Log.d(this, "checkForVideoStateChange: isVideoCall= " + isVideoCall
                 + " hasVideoStateChanged=" + hasVideoStateChanged + " isVideoMode="
                 + isVideoMode() + " previousVideoState: " +
-                VideoProfile.videoStateToString(mCurrentVideoState) + " newVideoState: "
-                + VideoProfile.videoStateToString(call.getVideoState()));
+                VideoProfileCompat.videoStateToString(mCurrentVideoState) + " newVideoState: "
+                + VideoProfileCompat.videoStateToString(call.getVideoState()));
 
         if (!hasVideoStateChanged) {
             return;
@@ -482,7 +505,7 @@
     }
 
     private void checkForCallStateChange(Call call) {
-        final boolean isVideoCall = CallUtils.isVideoCall(call);
+        final boolean isVideoCall = VideoUtils.isVideoCall(call);
         final boolean hasCallStateChanged = mCurrentCallState != call.getState();
 
         Log.d(this, "checkForCallStateChange: isVideoCall= " + isVideoCall
@@ -501,7 +524,7 @@
             updateCameraSelection(call);
             String newCameraId = cameraManager.getActiveCameraId();
 
-            if (!Objects.equals(prevCameraId, newCameraId) && CallUtils.isActiveVideoCall(call)) {
+            if (!Objects.equals(prevCameraId, newCameraId) && VideoUtils.isActiveVideoCall(call)) {
                 enableCamera(call.getVideoCall(), true);
             }
         }
@@ -520,7 +543,7 @@
     }
 
     private void onPrimaryCallChanged(Call newPrimaryCall) {
-        final boolean isVideoCall = CallUtils.isVideoCall(newPrimaryCall);
+        final boolean isVideoCall = VideoUtils.isVideoCall(newPrimaryCall);
         final boolean isVideoMode = isVideoMode();
 
         Log.d(this, "onPrimaryCallChanged: isVideoCall=" + isVideoCall + " isVideoMode="
@@ -573,7 +596,7 @@
         }
         // If the details change is not for the currently active call no update is required.
         if (!call.equals(mPrimaryCall)) {
-            Log.d(this," onDetailsChanged: Details not for current active call so returning. ");
+            Log.d(this, " onDetailsChanged: Details not for current active call so returning. ");
             return;
         }
 
@@ -590,14 +613,15 @@
     }
 
     private void checkForOrientationAllowedChange(Call call) {
-        InCallPresenter.getInstance().setInCallAllowsOrientationChange(CallUtils.isVideoCall(call));
+        InCallPresenter.getInstance().setInCallAllowsOrientationChange(
+                VideoUtils.isVideoCall(call));
     }
 
     /**
      * Checks for a change to the video call and changes it if required.
      */
     private void checkForVideoCallChange(Call call) {
-        final VideoCall videoCall = call.getTelecommCall().getVideoCall();
+        final VideoCall videoCall = call.getTelecomCall().getVideoCall();
         Log.d(this, "checkForVideoCallChange: videoCall=" + videoCall + " mVideoCall="
                 + mVideoCall);
         if (!Objects.equals(videoCall, mVideoCall)) {
@@ -612,7 +636,7 @@
      * @param videoCall The new video call.
      */
     private void changeVideoCall(Call call) {
-        final VideoCall videoCall = call.getTelecommCall().getVideoCall();
+        final VideoCall videoCall = call.getTelecomCall().getVideoCall();
         Log.d(this, "changeVideoCall to videoCall=" + videoCall + " mVideoCall=" + mVideoCall);
         // Null out the surfaces on the previous video call.
         if (mVideoCall != null) {
@@ -629,18 +653,18 @@
             return;
         }
 
-        if (CallUtils.isVideoCall(call) && hasChanged) {
+        if (VideoUtils.isVideoCall(call) && hasChanged) {
             enterVideoMode(call);
         }
     }
 
     private static boolean isCameraRequired(int videoState) {
-        return VideoProfile.isBidirectional(videoState) ||
-                VideoProfile.isTransmissionEnabled(videoState);
+        return VideoProfileCompat.isBidirectional(videoState) ||
+                VideoProfileCompat.isTransmissionEnabled(videoState);
     }
 
     private boolean isCameraRequired() {
-        return mPrimaryCall != null ? isCameraRequired(mPrimaryCall.getVideoState()) : false;
+        return mPrimaryCall != null && isCameraRequired(mPrimaryCall.getVideoState());
     }
 
     /**
@@ -668,56 +692,16 @@
                 videoCall.setDisplaySurface(ui.getDisplayVideoSurface());
             }
 
-            final int rotation = ui.getCurrentRotation();
-            if (rotation != VideoCallFragment.ORIENTATION_UNKNOWN) {
-                videoCall.setDeviceOrientation(InCallPresenter.toRotationAngle(rotation));
-            }
-
+            videoCall.setDeviceOrientation(mDeviceOrientation);
             enableCamera(videoCall, isCameraRequired(newVideoState));
         }
         mCurrentVideoState = newVideoState;
-        updateAudioMode(true);
 
         mIsVideoMode = true;
 
         maybeAutoEnterFullscreen(call);
     }
 
-    //TODO: Move this into Telecom. InCallUI should not be this close to audio functionality.
-    private void updateAudioMode(boolean enableSpeaker) {
-        if (!isSpeakerEnabledForVideoCalls()) {
-            Log.d(this, "Speaker is disabled. Can't update audio mode");
-            return;
-        }
-
-        final TelecomAdapter telecomAdapter = TelecomAdapter.getInstance();
-        final boolean isPrevAudioModeValid =
-            sPrevVideoAudioMode != AudioModeProvider.AUDIO_MODE_INVALID;
-
-        Log.d(this, "Is previous audio mode valid = " + isPrevAudioModeValid + " enableSpeaker is "
-                + enableSpeaker);
-
-        // Set audio mode to previous mode if enableSpeaker is false.
-        if (isPrevAudioModeValid && !enableSpeaker) {
-            telecomAdapter.setAudioRoute(sPrevVideoAudioMode);
-            sPrevVideoAudioMode = AudioModeProvider.AUDIO_MODE_INVALID;
-            return;
-        }
-
-        int currentAudioMode = AudioModeProvider.getInstance().getAudioMode();
-
-        // Set audio mode to speaker if enableSpeaker is true and bluetooth or headset are not
-        // connected and it's a video call.
-        if (!isAudioRouteEnabled(currentAudioMode,
-            CallAudioState.ROUTE_BLUETOOTH | CallAudioState.ROUTE_WIRED_HEADSET) &&
-            !isPrevAudioModeValid && enableSpeaker && CallUtils.isVideoCall(mPrimaryCall)) {
-            sPrevVideoAudioMode = currentAudioMode;
-
-            Log.d(this, "Routing audio to speaker");
-            telecomAdapter.setAudioRoute(CallAudioState.ROUTE_SPEAKER);
-        }
-    }
-
     private static boolean isSpeakerEnabledForVideoCalls() {
         // TODO: Make this a carrier configurable setting. For now this is always true. b/20090407
         return true;
@@ -770,21 +754,58 @@
             Log.e(this, "showVideoUi, VideoCallUi is null returning");
             return;
         }
-        boolean isPaused = VideoProfile.isPaused(videoState);
-        boolean isCallActive = callState == Call.State.ACTIVE;
-        if (VideoProfile.isBidirectional(videoState)) {
-            ui.showVideoViews(true, !isPaused && isCallActive);
-        } else if (VideoProfile.isTransmissionEnabled(videoState)) {
-            ui.showVideoViews(true, false);
-        } else if (VideoProfile.isReceptionEnabled(videoState)) {
-            ui.showVideoViews(false, !isPaused && isCallActive);
-            loadProfilePhotoAsync();
+        boolean showIncomingVideo = showIncomingVideo(videoState, callState);
+        boolean showOutgoingVideo = showOutgoingVideo(videoState);
+        Log.v(this, "showVideoUi : showIncoming = " + showIncomingVideo + " showOutgoing = "
+                + showOutgoingVideo);
+        if (showIncomingVideo || showOutgoingVideo) {
+            ui.showVideoViews(showOutgoingVideo, showIncomingVideo);
+
+            if (VideoProfileCompat.isReceptionEnabled(videoState)) {
+                loadProfilePhotoAsync();
+            }
         } else {
             ui.hideVideoUi();
         }
 
         InCallPresenter.getInstance().enableScreenTimeout(
-                VideoProfile.isAudioOnly(videoState));
+                VideoProfileCompat.isAudioOnly(videoState));
+    }
+
+    /**
+     * Determines if the incoming video surface should be shown based on the current videoState and
+     * callState.  The video surface is shown when incoming video is not paused, the call is active,
+     * and video reception is enabled.
+     *
+     * @param videoState The current video state.
+     * @param callState The current call state.
+     * @return {@code true} if the incoming video surface should be shown, {@code false} otherwise.
+     */
+    public static boolean showIncomingVideo(int videoState, int callState) {
+        if (!CompatUtils.isVideoCompatible()) {
+            return false;
+        }
+
+        boolean isPaused = VideoProfileCompat.isPaused(videoState);
+        boolean isCallActive = callState == Call.State.ACTIVE;
+
+        return !isPaused && isCallActive && VideoProfileCompat.isReceptionEnabled(videoState);
+    }
+
+    /**
+     * Determines if the outgoing video surface should be shown based on the current videoState.
+     * The video surface is shown if video transmission is enabled.
+     *
+     * @param videoState The current video state.
+     * @return {@code true} if the the outgoing video surface should be shown, {@code false}
+     *      otherwise.
+     */
+    public static boolean showOutgoingVideo(int videoState) {
+        if (!CompatUtils.isVideoCompatible()) {
+            return false;
+        }
+
+        return VideoProfileCompat.isTransmissionEnabled(videoState);
     }
 
     /**
@@ -943,23 +964,39 @@
 
     /**
      * Handles changes to the device orientation.
-     *
-     * @param orientation The device orientation (one of: {@link Surface#ROTATION_0},
-     *      {@link Surface#ROTATION_90}, {@link Surface#ROTATION_180},
-     *      {@link Surface#ROTATION_270}).
+     * @param orientation The screen orientation of the device (one of:
+     * {@link InCallOrientationEventListener#SCREEN_ORIENTATION_0},
+     * {@link InCallOrientationEventListener#SCREEN_ORIENTATION_90},
+     * {@link InCallOrientationEventListener#SCREEN_ORIENTATION_180},
+     * {@link InCallOrientationEventListener#SCREEN_ORIENTATION_270}).
      */
     @Override
     public void onDeviceOrientationChanged(int orientation) {
         mDeviceOrientation = orientation;
-        Point previewDimensions = getUi().getPreviewSize();
+
+        VideoCallUi ui = getUi();
+        if (ui == null) {
+            Log.e(this, "onDeviceOrientationChanged: VideoCallUi is null");
+            return;
+        }
+
+        Point previewDimensions = ui.getPreviewSize();
         if (previewDimensions == null) {
             return;
         }
         Log.d(this, "onDeviceOrientationChanged: orientation=" + orientation + " size: "
                 + previewDimensions);
         changePreviewDimensions(previewDimensions.x, previewDimensions.y);
+
+        ui.setPreviewRotation(mDeviceOrientation);
     }
 
+    /**
+     * Handles an incoming upgrade to video request.
+     *
+     * @param call The call the request was received for.
+     * @param videoState The video state that the request wants to upgrade to.
+     */
     @Override
     public void onUpgradeToVideoRequest(Call call, int videoState) {
         Log.d(this, "onUpgradeToVideoRequest call = " + call + " new video state = " + videoState);
@@ -971,7 +1008,7 @@
             return;
         }
 
-        call.setSessionModificationTo(videoState);
+        call.setRequestedVideoState(videoState);
     }
 
     @Override
@@ -1007,10 +1044,12 @@
 
     /**
      * Sets the preview surface size based on the current device orientation.
+     * See: {@link InCallOrientationEventListener#SCREEN_ORIENTATION_0},
+     * {@link InCallOrientationEventListener#SCREEN_ORIENTATION_90},
+     * {@link InCallOrientationEventListener#SCREEN_ORIENTATION_180},
+     * {@link InCallOrientationEventListener#SCREEN_ORIENTATION_270}).
      *
-     * @param orientation The device orientation (one of: {@link Surface#ROTATION_0},
-     *      {@link Surface#ROTATION_90}, {@link Surface#ROTATION_180},
-     *      {@link Surface#ROTATION_270}).
+     * @param orientation The device orientation
      * @param aspectRatio The aspect ratio of the camera (width / height).
      */
     private void setPreviewSize(int orientation, float aspectRatio) {
@@ -1022,8 +1061,8 @@
         int height;
         int width;
 
-        if (orientation == Surface.ROTATION_90 || orientation == Surface.ROTATION_270) {
-            // Landscape or reverse landscape orientation.
+        if (orientation == InCallOrientationEventListener.SCREEN_ORIENTATION_90 ||
+                orientation == InCallOrientationEventListener.SCREEN_ORIENTATION_270) {
             width = (int) (mMinimumVideoDimension * aspectRatio);
             height = (int) mMinimumVideoDimension;
         } else {
@@ -1041,7 +1080,7 @@
      * @param height peer height
      */
     private void setDisplayVideoSize(int width, int height) {
-        Log.d(this, "setDisplayVideoSize:Received peer width=" + width + " peer height=" + height);
+        Log.v(this, "setDisplayVideoSize: Received peer width=" + width + " height=" + height);
         VideoCallUi ui = getUi();
         if (ui == null) {
             return;
@@ -1049,7 +1088,7 @@
 
         // Get current display size
         Point size = ui.getScreenSize();
-        Log.d("VideoCallPresenter", "setDisplayVideoSize: windowmgr width=" + size.x
+        Log.v(this, "setDisplayVideoSize: windowmgr width=" + size.x
                 + " windowmgr height=" + size.y);
         if (size.y * width > size.x * height) {
             // current display height is too much. Correct it
@@ -1071,7 +1110,7 @@
             return;
         }
 
-        if (!CallUtils.isVideoCall(call) || call.getState() == Call.State.INCOMING) {
+        if (!VideoUtils.isVideoCall(call) || call.getState() == Call.State.INCOMING) {
             InCallPresenter.getInstance().setFullScreen(false);
         }
     }
@@ -1093,7 +1132,7 @@
 
         if (call == null || (
                 call != null && (call.getState() != Call.State.ACTIVE ||
-                        !CallUtils.isVideoCall(call)) ||
+                        !VideoUtils.isVideoCall(call)) ||
                         InCallPresenter.getInstance().isFullscreen())) {
             // Ensure any previously scheduled attempt to enter fullscreen is cancelled.
             cancelAutoFullScreen();
@@ -1141,7 +1180,7 @@
         }
 
         // Clear camera direction if this is not a video call.
-        else if (CallUtils.isAudioCall(call)) {
+        else if (VideoUtils.isAudioCall(call)) {
             cameraDir = Call.VideoSettings.CAMERA_DIRECTION_UNKNOWN;
             call.getVideoSettings().setCameraDir(cameraDir);
         }
@@ -1149,33 +1188,33 @@
         // If this is a waiting video call, default to active call's camera,
         // since we don't want to change the current camera for waiting call
         // without user's permission.
-        else if (CallUtils.isVideoCall(activeCall) && CallUtils.isIncomingVideoCall(call)) {
+        else if (VideoUtils.isVideoCall(activeCall) && VideoUtils.isIncomingVideoCall(call)) {
             cameraDir = activeCall.getVideoSettings().getCameraDir();
         }
 
         // Infer the camera direction from the video state and store it,
         // if this is an outgoing video call.
-        else if (CallUtils.isOutgoingVideoCall(call) && !isCameraDirectionSet(call) ) {
+        else if (VideoUtils.isOutgoingVideoCall(call) && !isCameraDirectionSet(call) ) {
             cameraDir = toCameraDirection(call.getVideoState());
             call.getVideoSettings().setCameraDir(cameraDir);
         }
 
         // Use the stored camera dir if this is an outgoing video call for which camera direction
         // is set.
-        else if (CallUtils.isOutgoingVideoCall(call)) {
+        else if (VideoUtils.isOutgoingVideoCall(call)) {
             cameraDir = call.getVideoSettings().getCameraDir();
         }
 
         // Infer the camera direction from the video state and store it,
         // if this is an active video call and camera direction is not set.
-        else if (CallUtils.isActiveVideoCall(call) && !isCameraDirectionSet(call)) {
+        else if (VideoUtils.isActiveVideoCall(call) && !isCameraDirectionSet(call)) {
             cameraDir = toCameraDirection(call.getVideoState());
             call.getVideoSettings().setCameraDir(cameraDir);
         }
 
         // Use the stored camera dir if this is an active video call for which camera direction
         // is set.
-        else if (CallUtils.isActiveVideoCall(call)) {
+        else if (VideoUtils.isActiveVideoCall(call)) {
             cameraDir = call.getVideoSettings().getCameraDir();
         }
 
@@ -1193,14 +1232,14 @@
     }
 
     private static int toCameraDirection(int videoState) {
-        return VideoProfile.isTransmissionEnabled(videoState) &&
-                !VideoProfile.isBidirectional(videoState)
+        return VideoProfileCompat.isTransmissionEnabled(videoState) &&
+                !VideoProfileCompat.isBidirectional(videoState)
                 ? Call.VideoSettings.CAMERA_DIRECTION_BACK_FACING
                 : Call.VideoSettings.CAMERA_DIRECTION_FRONT_FACING;
     }
 
     private static boolean isCameraDirectionSet(Call call) {
-        return CallUtils.isVideoCall(call) && call.getVideoSettings().getCameraDir()
+        return VideoUtils.isVideoCall(call) && call.getVideoSettings().getCameraDir()
                     != Call.VideoSettings.CAMERA_DIRECTION_UNKNOWN;
     }
 
@@ -1236,6 +1275,7 @@
                                     ContactsContract.CommonDataKinds.Phone.PHOTO_URI,
                                     ContactsContract.CommonDataKinds.Phone.LOOKUP_KEY,
                                     ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,
+                                    ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME_ALTERNATIVE
                             }, null, null, null);
                     if (cursor != null) {
                         try {
@@ -1246,8 +1286,11 @@
                                         ContactsContract.CommonDataKinds.Phone.PHOTO_URI));
                                 mProfileInfo.displayPhotoUri = photoUri == null ? null
                                         : Uri.parse(photoUri);
-                                mProfileInfo.name = cursor.getString(cursor.getColumnIndex(
+                                mProfileInfo.namePrimary = cursor.getString(cursor.getColumnIndex(
                                         ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
+                                mProfileInfo.nameAlternative = cursor.getString(
+                                        cursor.getColumnIndex(ContactsContract.CommonDataKinds
+                                                        .Phone.DISPLAY_NAME_ALTERNATIVE));
                             }
                         } finally {
                             cursor.close();
@@ -1267,7 +1310,7 @@
                     }
                     ContactPhotoManager.DefaultImageRequest imageRequest = (mProfileInfo != null)
                             ? null :
-                            new ContactPhotoManager.DefaultImageRequest(mProfileInfo.name,
+                            new ContactPhotoManager.DefaultImageRequest(mProfileInfo.namePrimary,
                                     mProfileInfo.lookupKey, false /* isCircularPhoto */);
 
                     ImageView photoView = ui.getPreviewPhotoView();
@@ -1302,5 +1345,7 @@
         Point getPreviewSize();
         void cleanupSurfaces();
         ImageView getPreviewPhotoView();
+        void adjustPreviewLocation(boolean shiftUp, int offset);
+        void setPreviewRotation(int orientation);
     }
 }
diff --git a/InCallUI/src/com/android/incallui/VideoPauseController.java b/InCallUI/src/com/android/incallui/VideoPauseController.java
index 54e31f8..070448e 100644
--- a/InCallUI/src/com/android/incallui/VideoPauseController.java
+++ b/InCallUI/src/com/android/incallui/VideoPauseController.java
@@ -1,34 +1,21 @@
-/* Copyright (c) 2014, The Linux Foundation. All rights reserved.
+/*
+ * Copyright (C) 2015 The Android Open Source Project
  *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- *       copyright notice, this list of conditions and the following
- *       disclaimer in the documentation and/or other materials provided
- *       with the distribution.
- *     * Neither the name of The Linux Foundation nor the names of its
- *       contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
+ * 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
  *
- * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
- * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
- * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
  */
 
 package com.android.incallui;
 
-import android.telecom.VideoProfile;
 import com.android.incallui.Call.State;
 import com.android.incallui.InCallPresenter.InCallState;
 import com.android.incallui.InCallPresenter.InCallStateListener;
@@ -42,7 +29,7 @@
  */
 class VideoPauseController implements InCallStateListener, IncomingCallListener,
         SessionModificationListener {
-    private static final String TAG = "VideoPauseController:";
+    private static final String TAG = "VideoPauseController";
 
     /**
      * Keeps track of the current active/foreground call.
@@ -168,7 +155,7 @@
         }
 
         boolean hasPrimaryCallChanged = !areSame(call, mPrimaryCallContext);
-        boolean canVideoPause = CallUtils.canVideoPause(call);
+        boolean canVideoPause = VideoUtils.canVideoPause(call);
         log("onStateChange, hasPrimaryCallChanged=" + hasPrimaryCallChanged);
         log("onStateChange, canVideoPause=" + canVideoPause);
         log("onStateChange, IsInBackground=" + mIsInBackground);
@@ -206,7 +193,7 @@
         log("onPrimaryCallChanged, IsInBackground=" + mIsInBackground);
 
         Preconditions.checkState(!areSame(call, mPrimaryCallContext));
-        final boolean canVideoPause = CallUtils.canVideoPause(call);
+        final boolean canVideoPause = VideoUtils.canVideoPause(call);
 
         if ((isIncomingCall(mPrimaryCallContext) || isDialing(mPrimaryCallContext))
                 && canVideoPause && !mIsInBackground) {
@@ -366,10 +353,10 @@
         if (resume) {
             log("sending resume request, call=" + call);
             call.getVideoCall()
-                    .sendSessionModifyRequest(CallUtils.makeVideoUnPauseProfile(call));
+                    .sendSessionModifyRequest(VideoUtils.makeVideoUnPauseProfile(call));
         } else {
             log("sending pause request, call=" + call);
-            call.getVideoCall().sendSessionModifyRequest(CallUtils.makeVideoPauseProfile(call));
+            call.getVideoCall().sendSessionModifyRequest(VideoUtils.makeVideoPauseProfile(call));
         }
     }
 
@@ -407,7 +394,7 @@
      * @return {@code true} if the call is a video call, {@code false} otherwise.
      */
     private static boolean isVideoCall(CallContext callContext) {
-        return callContext != null && CallUtils.isVideoCall(callContext.getVideoState());
+        return callContext != null && VideoUtils.isVideoCall(callContext.getVideoState());
     }
 
     /**
diff --git a/InCallUI/src/com/android/incallui/VideoUtils.java b/InCallUI/src/com/android/incallui/VideoUtils.java
new file mode 100644
index 0000000..7e0926b
--- /dev/null
+++ b/InCallUI/src/com/android/incallui/VideoUtils.java
@@ -0,0 +1,102 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.incallui;
+
+import android.telecom.VideoProfile;
+
+import com.android.contacts.common.compat.CompatUtils;
+import com.android.incallui.compat.telecom.VideoProfileCompat;
+
+import com.google.common.base.Preconditions;
+
+public class VideoUtils {
+
+    public static boolean isVideoCall(Call call) {
+        return call != null && isVideoCall(call.getVideoState());
+    }
+
+    public static boolean isVideoCall(int videoState) {
+        if (!CompatUtils.isVideoCompatible()) {
+            return false;
+        }
+
+        return VideoProfileCompat.isTransmissionEnabled(videoState)
+                || VideoProfileCompat.isReceptionEnabled(videoState);
+    }
+
+    public static boolean isBidirectionalVideoCall(Call call) {
+        if (!CompatUtils.isVideoCompatible()) {
+            return false;
+        }
+
+        return VideoProfileCompat.isBidirectional(call.getVideoState());
+    }
+
+    public static boolean isIncomingVideoCall(Call call) {
+        if (!VideoUtils.isVideoCall(call)) {
+            return false;
+        }
+        final int state = call.getState();
+        return (state == Call.State.INCOMING) || (state == Call.State.CALL_WAITING);
+    }
+
+    public static boolean isActiveVideoCall(Call call) {
+        return VideoUtils.isVideoCall(call) && call.getState() == Call.State.ACTIVE;
+    }
+
+    public static boolean isOutgoingVideoCall(Call call) {
+        if (!VideoUtils.isVideoCall(call)) {
+            return false;
+        }
+        final int state = call.getState();
+        return Call.State.isDialing(state) || state == Call.State.CONNECTING
+                || state == Call.State.SELECT_PHONE_ACCOUNT;
+    }
+
+    public static boolean isAudioCall(Call call) {
+        if (!CompatUtils.isVideoCompatible()) {
+            return true;
+        }
+
+        return call != null && VideoProfileCompat.isAudioOnly(call.getVideoState());
+    }
+
+    // TODO (ims-vt) Check if special handling is needed for CONF calls.
+    public static boolean canVideoPause(Call call) {
+        return isVideoCall(call) && call.getState() == Call.State.ACTIVE;
+    }
+
+    public static VideoProfile makeVideoPauseProfile(Call call) {
+        Preconditions.checkNotNull(call);
+        Preconditions.checkState(!VideoProfileCompat.isAudioOnly(call.getVideoState()));
+        return new VideoProfile(getPausedVideoState(call.getVideoState()));
+    }
+
+    public static VideoProfile makeVideoUnPauseProfile(Call call) {
+        Preconditions.checkNotNull(call);
+        return new VideoProfile(getUnPausedVideoState(call.getVideoState()));
+    }
+
+    public static int getUnPausedVideoState(int videoState) {
+        return videoState & (~VideoProfile.STATE_PAUSED);
+    }
+
+    public static int getPausedVideoState(int videoState) {
+        return videoState | VideoProfile.STATE_PAUSED;
+    }
+
+}
diff --git a/InCallUI/src/com/android/incallui/compat/telecom/DetailsCompat.java b/InCallUI/src/com/android/incallui/compat/telecom/DetailsCompat.java
new file mode 100644
index 0000000..b9f82a9
--- /dev/null
+++ b/InCallUI/src/com/android/incallui/compat/telecom/DetailsCompat.java
@@ -0,0 +1,108 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.incallui.compat.telecom;
+
+import android.os.Build;
+import android.os.Bundle;
+import android.telecom.Call.Details;
+
+import com.android.contacts.common.compat.CompatUtils;
+import com.android.incallui.Log;
+
+/**
+ * Compatibility class for {@link Details}
+ */
+public class DetailsCompat {
+
+    /**
+     * Constant formerly in L as PhoneCapabilities#ADD_CALL. It was transferred to
+     * {@link Details#CAPABILITY_UNUSED_1} and hidden
+     */
+    public static final int CAPABILITY_UNUSED_1 = 0x00000010;
+
+    /**
+     * Returns the intent extras from the given {@link Details}
+     * For Sdk version L and earlier, this will return {@link Details#getExtras()}
+     *
+     * @param details The details whose intent extras should be returned
+     * @return The given details' intent extras
+     */
+    public static Bundle getIntentExtras(Details details) {
+        if (CompatUtils.isMarshmallowCompatible()) {
+            return details.getIntentExtras();
+        }
+        return details.getExtras();
+    }
+
+    /**
+     * Compatibility method to check whether the supplied properties includes the
+     * specified property.
+     *
+     * @param details The details whose properties should be checked.
+     * @param property The property to check properties for.
+     * @return Whether the specified property is supported.
+     */
+    public static boolean hasProperty(Details details, int property) {
+        if (CompatUtils.isMarshmallowCompatible()) {
+            return details.hasProperty(property);
+        }
+        return (details.getCallProperties() & property) != 0;
+    }
+
+    /**
+     * Compatibility method to check whether the capabilities of the given {@code Details}
+     * supports the specified capability.
+     *
+     * @param details The details whose capabilities should be checked.
+     * @param capability The capability to check capabilities for.
+     * @return Whether the specified capability is supported.
+     */
+    public static boolean can(Details details, int capability) {
+        if (CompatUtils.isLollipopMr1Compatible()) {
+            return details.can(capability);
+        }
+        return (details.getCallCapabilities() & capability) != 0;
+    }
+
+    /**
+     * Render a set of capability bits ({@code CAPABILITY_*}) as a human readable string.
+     *
+     * @param capabilities A capability bit field.
+     * @return A human readable string representation.
+     */
+    public static String capabilitiesToString(int capabilities) {
+        if (CompatUtils.isLollipopMr1Compatible()) {
+            return Details.capabilitiesToString(capabilities);
+        }
+        return capabilitiesToStringLollipop(capabilities);
+    }
+
+    /*
+     * Use reflection to call PhoneCapabilities.toString. InCallUI code is only run on Google
+     * Experience phones, so we will be the system Dialer and the method will exist
+     */
+    private static String capabilitiesToStringLollipop(int capabilities) {
+        try {
+            return (String) Class.forName("android.telecom.PhoneCapabilities")
+                    .getMethod("toString", Integer.TYPE)
+                    .invoke(null, capabilities);
+        } catch (ReflectiveOperationException e) {
+            Log.e(DetailsCompat.class, "Unable to use reflection to call "
+                    + "android.telecom.PhoneCapabilities.toString(int)", e);
+            return String.valueOf(capabilities);
+        }
+    }
+}
diff --git a/InCallUI/src/com/android/incallui/compat/telecom/InCallServiceCompat.java b/InCallUI/src/com/android/incallui/compat/telecom/InCallServiceCompat.java
new file mode 100644
index 0000000..0a3cb26
--- /dev/null
+++ b/InCallUI/src/com/android/incallui/compat/telecom/InCallServiceCompat.java
@@ -0,0 +1,97 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.incallui.compat.telecom;
+
+import android.support.annotation.Nullable;
+import android.telecom.InCallService;
+
+import com.android.contacts.common.compat.CompatUtils;
+import com.android.incallui.Call;
+import com.android.incallui.InCallServiceImpl;
+
+/**
+ * Compatibility class for {@link android.telecom.InCallService}
+ */
+public class InCallServiceCompat {
+
+    /**
+     * Sets the microphone mute state. When this request is honored, there
+     * will be a change to the {@link android.telecom.CallAudioState}.
+     *
+     * Note: Noop for Sdk versions less than M where inCallService is not of type
+     * {@link InCallServiceImpl}
+     *
+     * @param inCallService the {@link InCallService} to act on
+     * @param shouldMute {@code true} if the microphone should be muted; {@code false} otherwise.
+     */
+    public static void setMuted(@Nullable InCallService inCallService, boolean shouldMute) {
+        if (inCallService == null) {
+            return;
+        }
+        if (CompatUtils.isMarshmallowCompatible()) {
+            inCallService.setMuted(shouldMute);
+            return;
+        }
+
+        if (inCallService instanceof InCallServiceImpl) {
+            ((InCallServiceImpl) inCallService).setMutedCompat(shouldMute);
+        }
+    }
+
+    /**
+     * Sets the audio route (speaker, bluetooth, etc...).  When this request is honored, there will
+     * be change to the {@link android.telecom.CallAudioState}.
+     *
+     * Note: Noop for Sdk versions less than M where inCallService is not of type
+     * {@link InCallServiceImpl}
+     *
+     * @param inCallService the {@link InCallService} to act on
+     * @param route The audio route to use.
+     */
+    public static void setAudioRoute(@Nullable InCallService inCallService, int route) {
+        if (inCallService == null) {
+            return;
+        }
+        if (CompatUtils.isMarshmallowCompatible()) {
+            inCallService.setAudioRoute(route);
+            return;
+        }
+
+        if (inCallService instanceof InCallServiceImpl) {
+            ((InCallServiceImpl) inCallService).setAudioRouteCompat(route);
+        }
+    }
+
+    /**
+     * Returns if the device can support additional calls.
+     *
+     * @param inCallService the {@link InCallService} to act on
+     * @param call a {@link Call} to use if needed due to compatibility reasons
+     * @return Whether the phone supports adding more calls, defaulting to true if inCallService
+     *    is null
+     */
+    public static boolean canAddCall(@Nullable InCallService inCallService, Call call) {
+        if (inCallService == null) {
+            return true;
+        }
+
+        if (CompatUtils.isMarshmallowCompatible()) {
+            // Default to true if we are not connected to telecom.
+            return inCallService.canAddCall();
+        }
+        return call.can(DetailsCompat.CAPABILITY_UNUSED_1);
+    }
+}
diff --git a/InCallUI/src/com/android/incallui/compat/telecom/VideoProfileCompat.java b/InCallUI/src/com/android/incallui/compat/telecom/VideoProfileCompat.java
new file mode 100644
index 0000000..6e81bd7
--- /dev/null
+++ b/InCallUI/src/com/android/incallui/compat/telecom/VideoProfileCompat.java
@@ -0,0 +1,140 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.incallui.compat.telecom;
+
+import android.telecom.VideoProfile;
+
+import com.android.contacts.common.compat.CompatUtils;
+
+/**
+ * Compatibility class for {@link android.telecom.VideoProfile}
+ */
+public class VideoProfileCompat {
+
+    /**
+     * Generates a string representation of a video state.
+     *
+     * @param videoState The video state.
+     * @return String representation of the video state.
+     */
+    public static String videoStateToString(int videoState) {
+        if (CompatUtils.isMarshmallowCompatible()) {
+            return VideoProfile.videoStateToString(videoState);
+        }
+        return videoStateToStringLollipop(videoState);
+    }
+
+    /**
+     * Copied from {@link android.telecom.VideoProfile#videoStateToString}
+     */
+    private static String videoStateToStringLollipop(int videoState) {
+        StringBuilder sb = new StringBuilder();
+        sb.append("Audio");
+        if (isAudioOnly(videoState)) {
+            sb.append(" Only");
+        } else {
+            if (isTransmissionEnabled(videoState)) {
+                sb.append(" Tx");
+            }
+            if (isReceptionEnabled(videoState)) {
+                sb.append(" Rx");
+            }
+            if (isPaused(videoState)) {
+                sb.append(" Pause");
+            }
+        }
+        return sb.toString();
+    }
+
+    /**
+     * Indicates whether the video state is audio only.
+     *
+     * @param videoState The video state.
+     * @return {@code true} if the video state is audio only, {@code false} otherwise.
+     */
+    public static boolean isAudioOnly(int videoState) {
+        if (CompatUtils.isMarshmallowCompatible()) {
+            return VideoProfile.isAudioOnly(videoState);
+        }
+        return !hasState(videoState, VideoProfile.STATE_TX_ENABLED)
+                && !hasState(videoState, VideoProfile.STATE_RX_ENABLED);
+    }
+
+    /**
+     * Indicates whether the video state has video transmission enabled.
+     *
+     * @param videoState The video state.
+     * @return {@code true} if video transmission is enabled, {@code false} otherwise.
+     */
+    public static boolean isTransmissionEnabled(int videoState) {
+        if (CompatUtils.isMarshmallowCompatible()) {
+            return VideoProfile.isTransmissionEnabled(videoState);
+        }
+        return hasState(videoState, VideoProfile.STATE_TX_ENABLED);
+    }
+
+    /**
+     * Indicates whether the video state has video reception enabled.
+     *
+     * @param videoState The video state.
+     * @return {@code true} if video reception is enabled, {@code false} otherwise.
+     */
+    public static boolean isReceptionEnabled(int videoState) {
+        if (CompatUtils.isMarshmallowCompatible()) {
+            return VideoProfile.isReceptionEnabled(videoState);
+        }
+        return hasState(videoState, VideoProfile.STATE_RX_ENABLED);
+    }
+
+    /**
+     * Indicates whether the video state is paused.
+     *
+     * @param videoState The video state.
+     * @return {@code true} if the video is paused, {@code false} otherwise.
+     */
+    public static boolean isPaused(int videoState) {
+        if (CompatUtils.isMarshmallowCompatible()) {
+            return VideoProfile.isPaused(videoState);
+        }
+        return hasState(videoState, VideoProfile.STATE_PAUSED);
+    }
+
+    /**
+     * Copied from {@link android.telecom.VideoProfile}
+     *
+     * Determines if a specified state is set in a videoState bit-mask.
+     *
+     * @param videoState The video state bit-mask.
+     * @param state The state to check.
+     * @return {@code true} if the state is set.
+     */
+    private static boolean hasState(int videoState, int state) {
+        return (videoState & state) == state;
+    }
+
+    /**
+     * Indicates whether the video state is bi-directional.
+     *
+     * @param videoState The video state.
+     * @return {@code True} if the video is bi-directional, {@code false} otherwise.
+     */
+    public static boolean isBidirectional(int videoState) {
+        if (CompatUtils.isMarshmallowCompatible()) {
+            return VideoProfile.isBidirectional(videoState);
+        }
+        return hasState(videoState, VideoProfile.STATE_BIDIRECTIONAL);
+    }
+}
diff --git a/InCallUI/src/com/android/incallui/service/PhoneNumberService.java b/InCallUI/src/com/android/incallui/service/PhoneNumberService.java
index 3ce84b9..70da4ef 100644
--- a/InCallUI/src/com/android/incallui/service/PhoneNumberService.java
+++ b/InCallUI/src/com/android/incallui/service/PhoneNumberService.java
@@ -60,6 +60,8 @@
         public String getPhoneLabel();
         public String getNormalizedNumber();
         public String getImageUrl();
+        public String getLookupKey();
         public boolean isBusiness();
+        public int getLookupSource();
     }
 }
diff --git a/InCallUI/src/com/android/incallui/util/AccessibilityUtil.java b/InCallUI/src/com/android/incallui/util/AccessibilityUtil.java
new file mode 100644
index 0000000..1fdd2ba
--- /dev/null
+++ b/InCallUI/src/com/android/incallui/util/AccessibilityUtil.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.incallui.util;
+
+import android.content.Context;
+import android.view.accessibility.AccessibilityManager;
+
+public class AccessibilityUtil {
+    public static boolean isTalkBackEnabled(Context context) {
+        AccessibilityManager accessibilityManager = (AccessibilityManager) context
+                .getSystemService(Context.ACCESSIBILITY_SERVICE);
+        return accessibilityManager != null
+                && accessibilityManager.isEnabled()
+                && accessibilityManager.isTouchExplorationEnabled();
+    }
+}
diff --git a/InCallUI/src/com/android/incallui/util/TelecomCallUtil.java b/InCallUI/src/com/android/incallui/util/TelecomCallUtil.java
new file mode 100644
index 0000000..53ecc29
--- /dev/null
+++ b/InCallUI/src/com/android/incallui/util/TelecomCallUtil.java
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.incallui.util;
+
+import android.net.Uri;
+import android.telecom.Call;
+import android.telephony.PhoneNumberUtils;
+
+/**
+ * Class to provide a standard interface for obtaining information from the underlying
+ * android.telecom.Call. Much of this should be obtained through the incall.Call, but
+ * on occasion we need to interact with the telecom.Call directly (eg. call blocking,
+ * before the incall.Call has been created).
+ */
+public class TelecomCallUtil {
+
+    // Whether the call handle is an emergency number.
+    public static boolean isEmergencyCall(Call call) {
+        Uri handle = call.getDetails().getHandle();
+        return PhoneNumberUtils.isEmergencyNumber(
+                handle == null ? "" : handle.getSchemeSpecificPart());
+    }
+
+    public static String getNumber(Call call) {
+        if (call == null) {
+            return null;
+        }
+        if (call.getDetails().getGatewayInfo() != null) {
+            return call.getDetails().getGatewayInfo()
+                    .getOriginalAddress().getSchemeSpecificPart();
+        }
+        Uri handle = getHandle(call);
+        return handle == null ? null : handle.getSchemeSpecificPart();
+    }
+
+    public static Uri getHandle(Call call) {
+        return call == null ? null : call.getDetails().getHandle();
+    }
+}
diff --git a/InCallUI/src/com/android/incalluibind/ObjectFactory.java b/InCallUI/src/com/android/incalluibind/ObjectFactory.java
index d8a2e29..7e9423a 100644
--- a/InCallUI/src/com/android/incalluibind/ObjectFactory.java
+++ b/InCallUI/src/com/android/incalluibind/ObjectFactory.java
@@ -20,6 +20,8 @@
 import android.content.Intent;
 
 import com.android.incallui.CallCardPresenter.EmergencyCallListener;
+import com.android.incallui.ContactUtils;
+import com.android.incallui.DistanceHelper;
 import com.android.incallui.service.PhoneNumberService;
 
 public class ObjectFactory {
@@ -45,4 +47,13 @@
     public static Intent getCallStateButtonBroadcastIntent(Context context) {
         return null;
     }
+
+    public static DistanceHelper newDistanceHelper(Context context,
+            DistanceHelper.Listener listener) {
+        return null;
+    }
+
+    public static ContactUtils getContactUtilsInstance(Context context) {
+        return null;
+    }
 }
diff --git a/InCallUI/tests/src/com/android/incallui/CallerInfoUtilsTest.java b/InCallUI/tests/src/com/android/incallui/CallerInfoUtilsTest.java
index 5baabce..de5a023 100644
--- a/InCallUI/tests/src/com/android/incallui/CallerInfoUtilsTest.java
+++ b/InCallUI/tests/src/com/android/incallui/CallerInfoUtilsTest.java
@@ -17,7 +17,9 @@
 package com.android.incallui;
 
 import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.SmallTest;
 
+@SmallTest
 public class CallerInfoUtilsTest extends AndroidTestCase {
     public void testToLogSafeNumber_email() {
         assertEquals("xxx@xxx.xxx", CallerInfoUtils.toLogSafePhoneNumber("foo@foo.com"));
diff --git a/InCallUI/tests/src/com/android/incallui/InCallContactInteractionsTest.java b/InCallUI/tests/src/com/android/incallui/InCallContactInteractionsTest.java
new file mode 100644
index 0000000..625cda4
--- /dev/null
+++ b/InCallUI/tests/src/com/android/incallui/InCallContactInteractionsTest.java
@@ -0,0 +1,325 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.incallui;
+
+import android.location.Address;
+import android.test.AndroidTestCase;
+import android.util.Pair;
+
+import com.android.incallui.InCallContactInteractions.BusinessContextInfo;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Calendar;
+import java.util.List;
+import java.util.Locale;
+
+/**
+ * Tests for InCallContactInteractions class methods for formatting info for display.
+ *
+ * NOTE: tests assume system settings are set to 12hr time format and US locale. This means that
+ * the output of InCallContactInteractions methods are compared against strings in 12hr time format
+ * and US locale address formatting unless otherwise specified.
+ */
+public class InCallContactInteractionsTest extends AndroidTestCase {
+    private InCallContactInteractions mInCallContactInteractions;
+    private static final float TEST_DISTANCE = (float) 1234.56;
+
+    @Override
+    protected void setUp() {
+        mInCallContactInteractions = new InCallContactInteractions(mContext, true /* isBusiness */);
+    }
+
+    public void testIsOpenNow_NowMatchesOpenTime() {
+        assertEquals(mContext.getString(R.string.open_now),
+                mInCallContactInteractions.constructHoursInfo(
+                        getTestCalendarWithHour(8),
+                        Arrays.asList(
+                                Pair.create(
+                                        getTestCalendarWithHour(8),
+                                        getTestCalendarWithHour(20))))
+                .heading);
+    }
+
+    public void testIsOpenNow_ClosingAfterMidnight() {
+        assertEquals(mContext.getString(R.string.open_now),
+                mInCallContactInteractions.constructHoursInfo(
+                        getTestCalendarWithHour(10),
+                        Arrays.asList(
+                                Pair.create(
+                                        getTestCalendarWithHour(8),
+                                        getTestCalendarWithHourAndDaysFromToday(1, 1))))
+                .heading);
+    }
+
+    public void testIsOpenNow_Open24Hours() {
+        assertEquals(mContext.getString(R.string.open_now),
+                mInCallContactInteractions.constructHoursInfo(
+                        getTestCalendarWithHour(10),
+                        Arrays.asList(
+                                Pair.create(
+                                        getTestCalendarWithHour(8),
+                                        getTestCalendarWithHourAndDaysFromToday(8, 1))))
+                .heading);
+    }
+
+    public void testIsOpenNow_AfterMiddayBreak() {
+        assertEquals(mContext.getString(R.string.open_now),
+                mInCallContactInteractions.constructHoursInfo(
+                        getTestCalendarWithHour(13),
+                        Arrays.asList(
+                                Pair.create(
+                                        getTestCalendarWithHour(8),
+                                        getTestCalendarWithHour(10)),
+                                Pair.create(
+                                        getTestCalendarWithHour(12),
+                                        getTestCalendarWithHour(15))))
+                .heading);
+    }
+
+    public void testIsClosedNow_DuringMiddayBreak() {
+        assertEquals(mContext.getString(R.string.closed_now),
+                mInCallContactInteractions.constructHoursInfo(
+                        getTestCalendarWithHour(11),
+                        Arrays.asList(
+                                Pair.create(
+                                        getTestCalendarWithHour(8),
+                                        getTestCalendarWithHour(10)),
+                                Pair.create(
+                                        getTestCalendarWithHour(12),
+                                        getTestCalendarWithHour(15))))
+                .heading);
+    }
+
+    public void testIsClosedNow_BeforeOpen() {
+        assertEquals(mContext.getString(R.string.closed_now),
+                mInCallContactInteractions.constructHoursInfo(
+                        getTestCalendarWithHour(6),
+                        Arrays.asList(
+                                Pair.create(
+                                        getTestCalendarWithHour(8),
+                                        getTestCalendarWithHour(20))))
+                .heading);
+    }
+
+    public void testIsClosedNow_NowMatchesClosedTime() {
+        assertEquals(mContext.getString(R.string.closed_now),
+                mInCallContactInteractions.constructHoursInfo(
+                        getTestCalendarWithHour(20),
+                        Arrays.asList(
+                                Pair.create(
+                                        getTestCalendarWithHour(8),
+                                        getTestCalendarWithHour(20))))
+                .heading);
+    }
+
+    public void testIsClosedNow_AfterClosed() {
+        assertEquals(mContext.getString(R.string.closed_now),
+                mInCallContactInteractions.constructHoursInfo(
+                        getTestCalendarWithHour(21),
+                        Arrays.asList(
+                                Pair.create(
+                                        getTestCalendarWithHour(8),
+                                        getTestCalendarWithHour(20))))
+                .heading);
+    }
+
+    public void testOpeningHours_SingleOpenRangeWhileOpen() {
+        assertEquals("8:00 AM - 8:00 PM",
+                mInCallContactInteractions.constructHoursInfo(
+                        getTestCalendarWithHour(12),
+                        Arrays.asList(
+                                Pair.create(
+                                        getTestCalendarWithHour(8),
+                                        getTestCalendarWithHour(20))))
+                .detail);
+    }
+
+    public void testOpeningHours_TwoOpenRangesWhileOpen() {
+        assertEquals("8:00 AM - 10:00 AM, 12:00 PM - 3:00 PM",
+                mInCallContactInteractions.constructHoursInfo(
+                        getTestCalendarWithHour(12),
+                        Arrays.asList(
+                                Pair.create(
+                                    getTestCalendarWithHour(8),
+                                    getTestCalendarWithHour(10)),
+                                Pair.create(
+                                        getTestCalendarWithHour(12),
+                                        getTestCalendarWithHour(15))))
+                .detail);
+    }
+
+    public void testOpeningHours_AfterClosedNoTomorrow() {
+        assertEquals("Closed today at 8:00 PM",
+                mInCallContactInteractions.constructHoursInfo(
+                        getTestCalendarWithHour(21),
+                        Arrays.asList(
+                                Pair.create(
+                                        getTestCalendarWithHour(8),
+                                        getTestCalendarWithHour(20))))
+                .detail);
+    }
+
+    public void testOpeningHours_NotOpenTodayOpenTomorrow() {
+        assertEquals("Opens tomorrow at 8:00 AM",
+                mInCallContactInteractions.constructHoursInfo(
+                        getTestCalendarWithHour(21),
+                        Arrays.asList(
+                                Pair.create(
+                                        getTestCalendarWithHourAndDaysFromToday(8, 1),
+                                        getTestCalendarWithHourAndDaysFromToday(10, 1))))
+                .detail);
+    }
+
+    public void testMultipleOpenRanges_BeforeOpen() {
+        assertEquals("Opens today at 8:00 AM",
+                mInCallContactInteractions.constructHoursInfo(
+                        getTestCalendarWithHour(7),
+                        getMultipleOpeningHours())
+                .detail);
+    }
+
+    public void testMultipleOpenRanges_DuringFirstRange() {
+        assertEquals("Closes at 10:00 AM",
+                mInCallContactInteractions.constructHoursInfo(
+                        getTestCalendarWithHour(9),
+                        getMultipleOpeningHours())
+                .detail);
+    }
+
+    public void testMultipleOpenRanges_BeforeMiddleRange() {
+        assertEquals("Opens today at 12:00 PM",
+                mInCallContactInteractions.constructHoursInfo(
+                        getTestCalendarWithHour(11),
+                        getMultipleOpeningHours())
+                .detail);
+    }
+
+    public void testMultipleOpeningHours_DuringLastRange() {
+        assertEquals("Closes at 9:00 PM",
+                mInCallContactInteractions.constructHoursInfo(
+                        getTestCalendarWithHour(19),
+                        getMultipleOpeningHours())
+                .detail);
+    }
+
+    public void testMultipleOpeningHours_AfterClose() {
+        assertEquals("Opens tomorrow at 8:00 AM",
+                mInCallContactInteractions.constructHoursInfo(
+                        getTestCalendarWithHour(22),
+                        getMultipleOpeningHours())
+                .detail);
+    }
+
+    public void testNotOpenTodayOrTomorrow() {
+        assertEquals(null,
+                mInCallContactInteractions.constructHoursInfo(
+                        getTestCalendarWithHour(21),
+                        new ArrayList<Pair<Calendar, Calendar>>()));
+    }
+
+    public void testLocationInfo_ForUS() {
+        BusinessContextInfo info =
+                mInCallContactInteractions.constructLocationInfo(
+                        Locale.US,
+                        getAddressForTest(),
+                        TEST_DISTANCE);
+        assertEquals("0.8 mi away", info.heading);
+        assertEquals("Test address, Test locality", info.detail);
+    }
+
+    public void testLocationInfo_ForNotUS() {
+        BusinessContextInfo info =
+                mInCallContactInteractions.constructLocationInfo(
+                        Locale.CANADA,
+                        getAddressForTest(),
+                        TEST_DISTANCE);
+        assertEquals("1.2 km away", info.heading);
+        assertEquals("Test address, Test locality", info.detail);
+    }
+
+    public void testLocationInfo_NoLocality() {
+        Address address = getAddressForTest();
+        address.setLocality(null);
+        BusinessContextInfo info =
+                mInCallContactInteractions.constructLocationInfo(
+                        Locale.CANADA,
+                        address,
+                        TEST_DISTANCE);
+        assertEquals("1.2 km away", info.heading);
+        assertEquals("Test address", info.detail);
+    }
+
+    public void testLocationInfo_NoAddress() {
+        BusinessContextInfo info =
+                mInCallContactInteractions.constructLocationInfo(
+                        Locale.CANADA,
+                        null,
+                        TEST_DISTANCE);
+        assertEquals(null, info);
+    }
+
+    public void testLocationInfo_NoDistance() {
+        BusinessContextInfo info =
+                mInCallContactInteractions.constructLocationInfo(
+                        Locale.US,
+                        getAddressForTest(),
+                        DistanceHelper.DISTANCE_NOT_FOUND);
+        assertEquals(null, info.heading);
+    }
+
+    private Address getAddressForTest() {
+        Address address = new Address(Locale.US);
+        address.setAddressLine(0, "Test address");
+        address.setLocality("Test locality");
+        return address;
+    }
+
+    private Calendar getTestCalendarWithHour(int hour) {
+        Calendar calendar = Calendar.getInstance();
+        calendar.set(Calendar.HOUR_OF_DAY, hour);
+        calendar.set(Calendar.MINUTE, 0);
+        calendar.set(Calendar.SECOND, 0);
+        calendar.set(Calendar.MILLISECOND, 0);
+        return calendar;
+    }
+
+    private Calendar getTestCalendarWithHourAndDaysFromToday(int hour, int daysFromToday) {
+        Calendar calendar = getTestCalendarWithHour(hour);
+        calendar.add(Calendar.DATE, daysFromToday);
+        return calendar;
+    }
+
+    private List<Pair<Calendar, Calendar>> getMultipleOpeningHours() {
+        return Arrays.asList(
+                Pair.create(
+                    getTestCalendarWithHour(8),
+                    getTestCalendarWithHour(10)),
+                Pair.create(
+                        getTestCalendarWithHour(12),
+                        getTestCalendarWithHour(15)),
+                Pair.create(
+                        getTestCalendarWithHour(17),
+                        getTestCalendarWithHour(21)),
+                Pair.create(
+                        getTestCalendarWithHourAndDaysFromToday(8, 1),
+                        getTestCalendarWithHourAndDaysFromToday(10, 1)),
+                Pair.create(
+                        getTestCalendarWithHourAndDaysFromToday(12, 1),
+                        getTestCalendarWithHourAndDaysFromToday(8, 1)));
+    }
+}
diff --git a/InCallUI/tests/src/com/android/incallui/InCallPresenterTest.java b/InCallUI/tests/src/com/android/incallui/InCallPresenterTest.java
index f4e06a5..ed8d622 100644
--- a/InCallUI/tests/src/com/android/incallui/InCallPresenterTest.java
+++ b/InCallUI/tests/src/com/android/incallui/InCallPresenterTest.java
@@ -23,7 +23,9 @@
 import android.content.Context;
 import android.content.Intent;
 import android.telecom.PhoneAccountHandle;
+import android.telephony.TelephonyManager;
 import android.test.InstrumentationTestCase;
+import android.test.suitebuilder.annotation.MediumTest;
 
 import com.android.incallui.InCallPresenter.InCallState;
 
@@ -31,6 +33,7 @@
 import org.mockito.Mockito;
 import org.mockito.MockitoAnnotations;
 
+@MediumTest
 public class InCallPresenterTest extends InstrumentationTestCase {
     private MockCallListWrapper mCallList;
     @Mock private InCallActivity mInCallActivity;
@@ -41,6 +44,7 @@
 
     InCallPresenter mInCallPresenter;
     @Mock private Context mContext;
+    @Mock private TelephonyManager mTelephonyManager;
 
     @Override
     protected void setUp() throws Exception {
@@ -50,6 +54,8 @@
         MockitoAnnotations.initMocks(this);
         mCallList = new MockCallListWrapper();
 
+        when(mContext.getSystemService(Context.TELEPHONY_SERVICE)).thenReturn(mTelephonyManager);
+
         mInCallPresenter = InCallPresenter.getInstance();
         mInCallPresenter.setUp(mContext, mCallList.getCallList(), mAudioModeProvider,
                 mStatusBarNotifier, mContactInfoCache, mProximitySensor);
diff --git a/InCallUI/tests/src/com/android/incallui/ProximitySensorTest.java b/InCallUI/tests/src/com/android/incallui/ProximitySensorTest.java
index d7b2f64..1c8f347 100644
--- a/InCallUI/tests/src/com/android/incallui/ProximitySensorTest.java
+++ b/InCallUI/tests/src/com/android/incallui/ProximitySensorTest.java
@@ -22,6 +22,7 @@
 import static org.mockito.Mockito.verify;
 
 import android.test.InstrumentationTestCase;
+import android.test.suitebuilder.annotation.MediumTest;
 
 import com.android.incallui.InCallPresenter.InCallState;
 
@@ -29,6 +30,7 @@
 import org.mockito.Mockito;
 import org.mockito.MockitoAnnotations;
 
+@MediumTest
 public class ProximitySensorTest extends InstrumentationTestCase {
     @Mock private AccelerometerListener mAccelerometerListener;
     private MockCallListWrapper mCallList;